Add an inline spoiler (Telegram/Discord-style hidden text): a TipTap mark `spoiler` rendered as <span data-spoiler="true" class="spoiler">, blurred via CSS and revealed on click (UI-only is-revealed class, never persisted). - packages/editor-ext: the Spoiler mark (inclusive:false, set/toggle/unset commands, ||text|| input rule), exported; a lossless turndown rule emitting raw inline HTML; round-trip test. - apps/client: SpoilerView mark-view (ReactMarkViewRenderer, Link pattern), registration in extensions, bubble-menu toggle button (editable only), CSS (blur + @media print reveal), en/ru i18n. - apps/server: register Spoiler in collaboration.util tiptapExtensions so the mark survives HTML<->JSON export/index/import/Yjs; a test proving the public share keeps the spoiler (it isn't stripped with comments). No keyboard shortcut: the proposed Mod-Shift-s collides with Strike (and Mod-Shift-h with Highlight); the ||text|| input rule + the bubble-menu button cover ergonomics. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
21 lines
509 B
CSS
21 lines
509 B
CSS
@import "./core.css";
|
|
@import "./collaboration.css";
|
|
@import "./task-list.css";
|
|
@import "./placeholder.css";
|
|
@import "./drag-handle.css";
|
|
@import "./details.css";
|
|
@import "./table.css";
|
|
@import "./youtube.css";
|
|
@import "./media.css";
|
|
@import "./code.css";
|
|
@import "./print.css";
|
|
@import "./page-break.css";
|
|
@import "./find.css";
|
|
@import "./mention.css";
|
|
@import "./ordered-list.css";
|
|
@import "./highlight.css";
|
|
@import "./spoiler.css";
|
|
@import "./indent.css";
|
|
@import "./columns.css";
|
|
@import "./status.css";
|