@bayonai/rich-text-editor 0.1.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/BEHAVIOR.md +396 -0
  2. package/CHANGELOG.md +22 -0
  3. package/README.md +25 -6
  4. package/dist/core/blockTree.d.ts +14 -0
  5. package/dist/core/blockTree.js +126 -0
  6. package/dist/core/blockTypes.d.ts +6 -0
  7. package/dist/core/blockTypes.js +5 -0
  8. package/dist/core/exportImport.d.ts +59 -0
  9. package/dist/core/exportImport.js +51 -0
  10. package/dist/core/features.d.ts +59 -0
  11. package/dist/core/features.js +57 -0
  12. package/dist/core/imageBlockDiagnostics.d.ts +4 -0
  13. package/dist/core/imageBlockDiagnostics.js +19 -0
  14. package/dist/core/proFeatures.d.ts +60 -0
  15. package/dist/core/proFeatures.js +64 -0
  16. package/dist/{richText.d.ts → core/richText.d.ts} +2 -0
  17. package/dist/core/richText.js +566 -0
  18. package/dist/core/types.d.ts +78 -0
  19. package/dist/index.d.ts +14 -8
  20. package/dist/index.js +8 -5
  21. package/dist/react/editor/RichTextBody.d.ts +28 -0
  22. package/dist/react/editor/RichTextBody.js +131 -0
  23. package/dist/react/editor/RichTextEditor.d.ts +138 -0
  24. package/dist/react/editor/RichTextEditor.js +2925 -0
  25. package/dist/react/editor/RichTextRenderedBlock.d.ts +20 -0
  26. package/dist/react/editor/RichTextRenderedBlock.js +162 -0
  27. package/dist/react/editor/RichTextRenderer.d.ts +13 -0
  28. package/dist/react/editor/RichTextRenderer.js +16 -0
  29. package/dist/react/{RichTextTitleInput.d.ts → editor/RichTextTitleInput.d.ts} +11 -1
  30. package/dist/react/{RichTextTitleInput.js → editor/RichTextTitleInput.js} +17 -2
  31. package/dist/react/editor/blockActions.d.ts +48 -0
  32. package/dist/react/editor/blockActions.js +495 -0
  33. package/dist/react/editor/editorHistory.d.ts +55 -0
  34. package/dist/react/editor/editorHistory.js +111 -0
  35. package/dist/react/{editorNavigation.d.ts → editor/editorNavigation.d.ts} +2 -0
  36. package/dist/react/{editorNavigation.js → editor/editorNavigation.js} +16 -0
  37. package/dist/react/editor/editorOperations.d.ts +10 -0
  38. package/dist/react/editor/editorOperations.js +3 -0
  39. package/dist/react/editor/editorSelection.d.ts +3 -0
  40. package/dist/react/editor/editorSelection.js +215 -0
  41. package/dist/react/{editorShortcuts.d.ts → editor/editorShortcuts.d.ts} +10 -0
  42. package/dist/react/{editorShortcuts.js → editor/editorShortcuts.js} +17 -1
  43. package/dist/react/{RichTextIcons.d.ts → icons/RichTextIcons.d.ts} +3 -0
  44. package/dist/react/{RichTextIcons.js → icons/RichTextIcons.js} +9 -0
  45. package/dist/react/index.d.ts +12 -9
  46. package/dist/react/index.js +7 -6
  47. package/dist/react/{EditorSessionProvider.d.ts → session/EditorSessionProvider.d.ts} +2 -2
  48. package/dist/react/{EditorSessionProvider.js → session/EditorSessionProvider.js} +3 -3
  49. package/dist/react/{UnsavedChangesDialog.js → session/UnsavedChangesDialog.js} +1 -1
  50. package/dist/react/styles/RichTextStyles.js +1362 -0
  51. package/dist/react/{BlockActionTool.d.ts → tools/BlockActionTool.d.ts} +1 -1
  52. package/dist/react/{BlockActionTool.js → tools/BlockActionTool.js} +6 -2
  53. package/dist/react/tools/LinkCreationInput.d.ts +9 -0
  54. package/dist/react/tools/LinkCreationInput.js +38 -0
  55. package/dist/react/{SelectionFormatToolbar.d.ts → tools/SelectionFormatToolbar.d.ts} +3 -2
  56. package/dist/react/{SelectionFormatToolbar.js → tools/SelectionFormatToolbar.js} +3 -3
  57. package/dist/react/tools/SpecialBlockOption.d.ts +9 -0
  58. package/dist/react/tools/SpecialBlockOption.js +8 -0
  59. package/dist/react/tools/SpecialBlockTool.d.ts +91 -0
  60. package/dist/react/tools/SpecialBlockTool.js +125 -0
  61. package/dist/react/{TranscriptionControl.d.ts → tools/TranscriptionControl.d.ts} +9 -0
  62. package/dist/react/{TranscriptionControl.js → tools/TranscriptionControl.js} +70 -9
  63. package/dist/react/tools/blockActionToolState.d.ts +41 -0
  64. package/dist/react/tools/blockActionToolState.js +177 -0
  65. package/dist/react/tools/imageBlockDiagnostics.d.ts +2 -0
  66. package/dist/react/tools/imageBlockDiagnostics.js +12 -0
  67. package/dist/{session.d.ts → session/session.d.ts} +1 -1
  68. package/dist-cjs/core/blockTree.js +137 -0
  69. package/dist-cjs/core/blockTypes.js +9 -0
  70. package/dist-cjs/core/exportImport.js +56 -0
  71. package/dist-cjs/core/features.js +62 -0
  72. package/dist-cjs/core/proFeatures.js +70 -0
  73. package/dist-cjs/core/richText.js +578 -0
  74. package/dist-cjs/index.js +22 -6
  75. package/dist-cjs/react/editor/RichTextBody.js +134 -0
  76. package/dist-cjs/react/editor/RichTextEditor.js +2956 -0
  77. package/dist-cjs/react/editor/RichTextRenderedBlock.js +166 -0
  78. package/dist-cjs/react/editor/RichTextRenderer.js +20 -0
  79. package/dist-cjs/react/{RichTextTitleInput.js → editor/RichTextTitleInput.js} +18 -2
  80. package/dist-cjs/react/editor/blockActions.js +518 -0
  81. package/dist-cjs/react/editor/editorHistory.js +120 -0
  82. package/dist-cjs/react/{editorNavigation.js → editor/editorNavigation.js} +17 -0
  83. package/dist-cjs/react/editor/editorOperations.js +6 -0
  84. package/dist-cjs/react/editor/editorSelection.js +219 -0
  85. package/dist-cjs/react/{editorShortcuts.js → editor/editorShortcuts.js} +17 -1
  86. package/dist-cjs/react/{RichTextIcons.js → icons/RichTextIcons.js} +12 -0
  87. package/dist-cjs/react/index.js +9 -7
  88. package/dist-cjs/react/{EditorSessionProvider.js → session/EditorSessionProvider.js} +3 -3
  89. package/dist-cjs/react/{UnsavedChangesDialog.js → session/UnsavedChangesDialog.js} +1 -1
  90. package/dist-cjs/react/styles/RichTextStyles.js +1365 -0
  91. package/dist-cjs/react/{BlockActionTool.js → tools/BlockActionTool.js} +6 -2
  92. package/dist-cjs/react/tools/LinkCreationInput.js +41 -0
  93. package/dist-cjs/react/{SelectionFormatToolbar.js → tools/SelectionFormatToolbar.js} +3 -3
  94. package/dist-cjs/react/tools/SpecialBlockOption.js +11 -0
  95. package/dist-cjs/react/tools/SpecialBlockTool.js +129 -0
  96. package/dist-cjs/react/{TranscriptionControl.js → tools/TranscriptionControl.js} +71 -9
  97. package/dist-cjs/react/tools/blockActionToolState.js +186 -0
  98. package/package.json +3 -2
  99. package/dist/react/RichTextBody.d.ts +0 -18
  100. package/dist/react/RichTextBody.js +0 -66
  101. package/dist/react/RichTextEditor.d.ts +0 -45
  102. package/dist/react/RichTextEditor.js +0 -1096
  103. package/dist/react/RichTextRenderedBlock.d.ts +0 -4
  104. package/dist/react/RichTextRenderedBlock.js +0 -36
  105. package/dist/react/RichTextRenderer.d.ts +0 -4
  106. package/dist/react/RichTextRenderer.js +0 -8
  107. package/dist/react/RichTextStyles.js +0 -719
  108. package/dist/react/SpecialBlockOption.d.ts +0 -7
  109. package/dist/react/SpecialBlockOption.js +0 -7
  110. package/dist/react/SpecialBlockTool.d.ts +0 -42
  111. package/dist/react/SpecialBlockTool.js +0 -50
  112. package/dist/react/blockActionToolState.d.ts +0 -18
  113. package/dist/react/blockActionToolState.js +0 -53
  114. package/dist/react/blockActions.d.ts +0 -8
  115. package/dist/react/blockActions.js +0 -111
  116. package/dist/richText.js +0 -297
  117. package/dist/types.d.ts +0 -34
  118. package/dist-cjs/react/RichTextBody.js +0 -69
  119. package/dist-cjs/react/RichTextEditor.js +0 -1108
  120. package/dist-cjs/react/RichTextRenderedBlock.js +0 -39
  121. package/dist-cjs/react/RichTextRenderer.js +0 -11
  122. package/dist-cjs/react/RichTextStyles.js +0 -722
  123. package/dist-cjs/react/SpecialBlockOption.js +0 -10
  124. package/dist-cjs/react/SpecialBlockTool.js +0 -54
  125. package/dist-cjs/react/blockActionToolState.js +0 -58
  126. package/dist-cjs/react/blockActions.js +0 -119
  127. package/dist-cjs/richText.js +0 -307
  128. /package/dist/{types.js → core/types.js} +0 -0
  129. /package/dist/{writingStats.d.ts → core/writingStats.d.ts} +0 -0
  130. /package/dist/{writingStats.js → core/writingStats.js} +0 -0
  131. /package/dist/react/{RichTextDocumentSurface.d.ts → editor/RichTextDocumentSurface.d.ts} +0 -0
  132. /package/dist/react/{RichTextDocumentSurface.js → editor/RichTextDocumentSurface.js} +0 -0
  133. /package/dist/react/{UnsavedChangesDialog.d.ts → session/UnsavedChangesDialog.d.ts} +0 -0
  134. /package/dist/react/{RichTextStyles.d.ts → styles/RichTextStyles.d.ts} +0 -0
  135. /package/dist/react/{richTextBlockStyles.d.ts → styles/richTextBlockStyles.d.ts} +0 -0
  136. /package/dist/react/{richTextBlockStyles.js → styles/richTextBlockStyles.js} +0 -0
  137. /package/dist/react/{specialBlockStyles.d.ts → styles/specialBlockStyles.d.ts} +0 -0
  138. /package/dist/react/{specialBlockStyles.js → styles/specialBlockStyles.js} +0 -0
  139. /package/dist/{saveControl.d.ts → session/saveControl.d.ts} +0 -0
  140. /package/dist/{saveControl.js → session/saveControl.js} +0 -0
  141. /package/dist/{session.js → session/session.js} +0 -0
  142. /package/dist/{sessionRegistry.d.ts → session/sessionRegistry.d.ts} +0 -0
  143. /package/dist/{sessionRegistry.js → session/sessionRegistry.js} +0 -0
  144. /package/dist-cjs/{types.js → core/types.js} +0 -0
  145. /package/dist-cjs/{writingStats.js → core/writingStats.js} +0 -0
  146. /package/dist-cjs/react/{RichTextDocumentSurface.js → editor/RichTextDocumentSurface.js} +0 -0
  147. /package/dist-cjs/react/{richTextBlockStyles.js → styles/richTextBlockStyles.js} +0 -0
  148. /package/dist-cjs/react/{specialBlockStyles.js → styles/specialBlockStyles.js} +0 -0
  149. /package/dist-cjs/{saveControl.js → session/saveControl.js} +0 -0
  150. /package/dist-cjs/{session.js → session/session.js} +0 -0
  151. /package/dist-cjs/{sessionRegistry.js → session/sessionRegistry.js} +0 -0
@@ -1,719 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- const richTextStyles = `
3
- .bayon-rte-stack {
4
- display: flex;
5
- flex-direction: column;
6
- gap: 8px;
7
- }
8
-
9
- .bayon-rte-surface {
10
- background: transparent;
11
- border: 1px solid transparent;
12
- border-radius: 8px;
13
- color: inherit;
14
- min-height: auto;
15
- overflow: hidden;
16
- padding: 6px 0;
17
- }
18
-
19
- .bayon-rte-surface--panel {
20
- background: linear-gradient(180deg, rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.025));
21
- border-color: rgba(223, 194, 255, 0.14);
22
- box-shadow: 0 18px 46px rgba(0, 0, 0, 0.2);
23
- }
24
-
25
- .bayon-rte-surface__inner {
26
- display: flex;
27
- flex-direction: column;
28
- gap: 20px;
29
- margin: 0 auto;
30
- padding: 0 24px 0 18px;
31
- position: relative;
32
- }
33
-
34
- .bayon-rte-title {
35
- background: transparent;
36
- border: 0;
37
- color: inherit;
38
- direction: ltr;
39
- display: block;
40
- font: inherit;
41
- font-size: 1.55rem;
42
- font-weight: 700;
43
- line-height: 1.15;
44
- margin: 0;
45
- outline: 0;
46
- overflow: hidden;
47
- overflow-wrap: anywhere;
48
- padding: 0;
49
- resize: none;
50
- text-align: left;
51
- width: 100%;
52
- }
53
-
54
- .bayon-rte-title-error {
55
- align-self: flex-start;
56
- background: rgba(244, 67, 54, 0.12);
57
- border-left: 3px solid #ff8a80;
58
- border-radius: 6px;
59
- color: #ffcdd2;
60
- font-size: 0.86rem;
61
- line-height: 1.4;
62
- margin-top: 8px;
63
- max-width: 100%;
64
- overflow-wrap: anywhere;
65
- padding: 7px 10px;
66
- text-align: left;
67
- }
68
-
69
- .bayon-rte-title::placeholder,
70
- .bayon-rte-body[contenteditable][data-placeholder]:empty::before {
71
- color: rgba(255, 255, 255, 0.58);
72
- opacity: 1;
73
- }
74
-
75
- .bayon-rte-body-shell {
76
- padding-left: 5px;
77
- position: relative;
78
- }
79
-
80
- .bayon-rte-transcription {
81
- align-items: center;
82
- display: flex;
83
- flex-direction: row-reverse;
84
- gap: 7px;
85
- position: absolute;
86
- right: 0;
87
- top: -24px;
88
- z-index: 7;
89
- }
90
-
91
- .bayon-rte-transcription__button {
92
- background: rgba(41, 41, 41, 0.88);
93
- border: 1px solid rgba(246, 236, 255, 0.2);
94
- border-radius: 999px;
95
- box-shadow: 0 10px 24px rgba(0, 0, 0, 0.22);
96
- color: rgba(246, 236, 255, 0.92);
97
- height: 32px;
98
- transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease;
99
- width: 32px;
100
- }
101
-
102
- .bayon-rte-transcription__button:hover {
103
- background: rgba(52, 37, 66, 0.95);
104
- color: #ffffff;
105
- transform: translateY(-1px);
106
- }
107
-
108
- .bayon-rte-transcription__button:focus-visible {
109
- outline: 2px solid rgba(246, 236, 255, 0.72);
110
- outline-offset: 2px;
111
- }
112
-
113
- .bayon-rte-transcription__button--recording {
114
- background: rgba(198, 40, 40, 0.88);
115
- border-color: rgba(255, 205, 210, 0.56);
116
- color: #ffffff;
117
- }
118
-
119
- .bayon-rte-transcription__status {
120
- align-items: center;
121
- background: rgba(41, 41, 41, 0.92);
122
- border: 1px solid rgba(246, 236, 255, 0.14);
123
- border-radius: 6px;
124
- color: rgba(255, 255, 255, 0.86);
125
- display: inline-flex;
126
- font-size: 0.72rem;
127
- gap: 6px;
128
- line-height: 1.3;
129
- max-width: 180px;
130
- min-height: 24px;
131
- overflow-wrap: anywhere;
132
- padding: 5px 7px;
133
- text-align: right;
134
- }
135
-
136
- .bayon-rte-transcription__dot {
137
- background: rgba(246, 236, 255, 0.72);
138
- border-radius: 999px;
139
- box-shadow: 0 0 0 3px rgba(246, 236, 255, 0.1);
140
- flex: 0 0 auto;
141
- height: 7px;
142
- width: 7px;
143
- }
144
-
145
- .bayon-rte-transcription--ready .bayon-rte-transcription__dot {
146
- background: #8ab4ff;
147
- box-shadow: 0 0 0 3px rgba(138, 180, 255, 0.14);
148
- }
149
-
150
- .bayon-rte-transcription--recording .bayon-rte-transcription__button,
151
- .bayon-rte-transcription--recording .bayon-rte-transcription__dot {
152
- animation: bayon-rte-transcription-pulse 1.35s ease-in-out infinite;
153
- }
154
-
155
- .bayon-rte-transcription--recording .bayon-rte-transcription__dot {
156
- background: #4ea1ff;
157
- box-shadow: 0 0 0 3px rgba(78, 161, 255, 0.18);
158
- }
159
-
160
- .bayon-rte-transcription--success .bayon-rte-transcription__dot {
161
- background: #6ee7a8;
162
- box-shadow: 0 0 0 3px rgba(110, 231, 168, 0.16);
163
- }
164
-
165
- .bayon-rte-transcription--error .bayon-rte-transcription__status {
166
- border-color: rgba(255, 179, 128, 0.34);
167
- color: #ffe0cc;
168
- }
169
-
170
- .bayon-rte-transcription--error .bayon-rte-transcription__dot {
171
- background: #ffb380;
172
- box-shadow: 0 0 0 3px rgba(255, 179, 128, 0.18);
173
- }
174
-
175
- .bayon-rte-transcription--unavailable .bayon-rte-transcription__status {
176
- opacity: 0.72;
177
- }
178
-
179
- .bayon-rte-transcription--unavailable .bayon-rte-transcription__dot {
180
- background: rgba(255, 255, 255, 0.42);
181
- box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.08);
182
- }
183
-
184
- @keyframes bayon-rte-transcription-pulse {
185
- 0%,
186
- 100% {
187
- transform: scale(1);
188
- }
189
-
190
- 50% {
191
- transform: scale(1.08);
192
- }
193
- }
194
-
195
- .bayon-rte-body {
196
- color: inherit;
197
- direction: auto;
198
- font-family: inherit;
199
- font-size: 1rem;
200
- line-height: 1.58;
201
- min-height: 220px;
202
- outline: 0;
203
- text-align: start;
204
- unicode-bidi: plaintext;
205
- white-space: normal;
206
- }
207
-
208
- .bayon-rte-body[contenteditable][data-placeholder]:empty::before {
209
- content: attr(data-placeholder);
210
- pointer-events: none;
211
- }
212
-
213
- .bayon-rte-body blockquote,
214
- .bayon-rte-renderer blockquote {
215
- border-left: 3px solid rgba(246, 236, 255, 0.42);
216
- color: rgba(255, 255, 255, 0.68);
217
- font-size: 1.42rem;
218
- font-style: italic;
219
- margin: 0;
220
- padding: 10px 0 10px 16px;
221
- }
222
-
223
- .bayon-rte-body blockquote[data-placeholder='quote']:empty::before {
224
- color: rgba(255, 255, 255, 0.58);
225
- content: "Quote";
226
- opacity: 1;
227
- pointer-events: none;
228
- }
229
-
230
- .bayon-rte-body figure[data-placeholder='image'] {
231
- border: 1px dashed rgba(246, 236, 255, 0.28);
232
- color: rgba(255, 255, 255, 0.68);
233
- font-family: var(--font-geist-sans), Arial, sans-serif;
234
- font-size: 1rem;
235
- padding: 10px 24px;
236
- text-align: center;
237
- }
238
-
239
- .bayon-rte-body h2,
240
- .bayon-rte-renderer h2 {
241
- font-family: inherit;
242
- font-size: 2.05rem;
243
- font-weight: 700;
244
- line-height: 1.2;
245
- margin: 0;
246
- padding: 10px 0;
247
- }
248
-
249
- .bayon-rte-body p,
250
- .bayon-rte-body div,
251
- .bayon-rte-renderer p {
252
- margin: 0;
253
- padding: 10px 0;
254
- }
255
-
256
- .bayon-rte-body [data-rich-text-checkbox],
257
- .bayon-rte-renderer [data-rich-text-checkbox] {
258
- align-items: flex-start;
259
- display: flex;
260
- gap: 8px;
261
- margin: 0;
262
- padding: 10px 0;
263
- }
264
-
265
- .bayon-rte-body [data-rich-text-checkbox] input,
266
- .bayon-rte-renderer [data-rich-text-checkbox] input {
267
- accent-color: #1a73e8;
268
- block-size: 1.05em;
269
- flex: 0 0 auto;
270
- inline-size: 1.05em;
271
- margin-top: 0.32em;
272
- }
273
-
274
- .bayon-rte-body [data-rich-text-checkbox] span {
275
- min-width: 0;
276
- outline: 0;
277
- }
278
-
279
- .bayon-rte-renderer [data-rich-text-checkbox] span {
280
- min-width: 0;
281
- }
282
-
283
- .bayon-rte-body pre,
284
- .bayon-rte-renderer code {
285
- background-color: rgba(255, 255, 255, 0.06);
286
- border-radius: 8px;
287
- font-family: var(--font-geist-mono), Consolas, monospace;
288
- }
289
-
290
- .bayon-rte-body pre {
291
- font-size: 1rem;
292
- padding: 10px 16px;
293
- white-space: pre-wrap;
294
- }
295
-
296
- .bayon-rte-renderer {
297
- color: inherit;
298
- font-family: inherit;
299
- font-size: 1rem;
300
- line-height: 1.58;
301
- }
302
-
303
- .bayon-rte-renderer code {
304
- padding: 2px 5px;
305
- }
306
-
307
- .bayon-rte-renderer img {
308
- max-width: 100%;
309
- }
310
-
311
- .bayon-rte-renderer li {
312
- margin-bottom: 6px;
313
- }
314
-
315
- .bayon-rte-renderer figure,
316
- .bayon-rte-renderer pre {
317
- margin: 0;
318
- padding: 10px 0;
319
- }
320
-
321
- .bayon-rte-renderer ul,
322
- .bayon-rte-renderer ol {
323
- margin-bottom: 16px;
324
- padding-left: 24px;
325
- }
326
-
327
- .bayon-rte-divider {
328
- border: 0;
329
- border-top: 1px solid currentColor;
330
- height: 0;
331
- margin: 6px 0;
332
- opacity: 0.5;
333
- padding: 0;
334
- }
335
-
336
- .bayon-rte-meta {
337
- color: rgba(255, 255, 255, 0.62);
338
- display: flex;
339
- flex-direction: column;
340
- font-size: 0.75rem;
341
- gap: 8px;
342
- justify-content: space-between;
343
- line-height: 1.66;
344
- }
345
-
346
- .bayon-rte-toolbar {
347
- align-items: center;
348
- background-color: #292929;
349
- border-radius: 8px;
350
- box-shadow: 0 8px 18px rgba(0, 0, 0, 0.24);
351
- display: flex;
352
- left: var(--bayon-rte-toolbar-left);
353
- position: absolute;
354
- top: var(--bayon-rte-toolbar-top);
355
- transform: translateX(-50%);
356
- z-index: 3;
357
- }
358
-
359
- .bayon-rte-toolbar::after {
360
- border-left: 10px solid transparent;
361
- border-right: 10px solid transparent;
362
- border-top: 10px solid #292929;
363
- bottom: -9px;
364
- content: "";
365
- left: 48%;
366
- position: absolute;
367
- }
368
-
369
- .bayon-rte-icon-button {
370
- align-items: center;
371
- background: transparent;
372
- border: 0;
373
- border-radius: 8px;
374
- color: inherit;
375
- cursor: pointer;
376
- display: inline-flex;
377
- justify-content: center;
378
- padding: 0;
379
- }
380
-
381
- .bayon-rte-icon-button:disabled {
382
- cursor: default;
383
- opacity: 0.58;
384
- }
385
-
386
- .bayon-rte-toolbar__button {
387
- border-left: 0;
388
- border-radius: 0;
389
- color: #ffffff;
390
- height: 48px;
391
- width: 44px;
392
- }
393
-
394
- .bayon-rte-toolbar__button--divider {
395
- border-left: 1px solid rgba(255, 255, 255, 0.18);
396
- }
397
-
398
- .bayon-rte-special-tool {
399
- align-items: center;
400
- display: flex;
401
- gap: 16px;
402
- left: 0;
403
- margin-top: 5px;
404
- min-height: 32px;
405
- opacity: 0;
406
- pointer-events: none;
407
- position: absolute;
408
- top: var(--bayon-rte-special-tool-top);
409
- transform: translate(-18px, 8px) scale(0.96);
410
- transition: opacity 720ms ease, transform 860ms cubic-bezier(0.16, 1, 0.3, 1);
411
- z-index: 6;
412
- }
413
-
414
- .bayon-rte-block-tool {
415
- align-items: center;
416
- display: flex;
417
- gap: 6px;
418
- left: 0;
419
- min-height: 34px;
420
- padding: 4px 14px 4px 0;
421
- position: absolute;
422
- top: var(--bayon-rte-block-tool-top);
423
- transform: translate(-28px, 8px);
424
- z-index: 5;
425
- }
426
-
427
- .bayon-rte-block-tool--menu-open {
428
- transform: translate(-28px, 2px);
429
- }
430
-
431
- .bayon-rte-block-hover-zone {
432
- height: var(--bayon-rte-block-hover-zone-height);
433
- left: -54px;
434
- min-height: 34px;
435
- pointer-events: auto;
436
- position: absolute;
437
- top: var(--bayon-rte-block-hover-zone-top);
438
- transform: translateY(8px);
439
- width: 54px;
440
- z-index: 4;
441
- }
442
-
443
- .bayon-rte-block-tool__actions {
444
- background: rgba(41, 41, 41, 0.92);
445
- border-radius: 8px;
446
- display: flex;
447
- gap: 4px;
448
- padding: 4px;
449
- }
450
-
451
- .bayon-rte-block-tool__actions .bayon-rte-special-button {
452
- height: 26px;
453
- width: 26px;
454
- }
455
-
456
- .bayon-rte-block-handle {
457
- background: transparent;
458
- color: rgba(186, 128, 255, 0.86);
459
- cursor: grab;
460
- height: 28px;
461
- touch-action: none;
462
- width: 28px;
463
- }
464
-
465
- .bayon-rte-block-handle:hover {
466
- background: transparent;
467
- color: rgba(246, 236, 255, 0.96);
468
- }
469
-
470
- .bayon-rte-block-handle--dragging {
471
- color: rgba(246, 236, 255, 0.98);
472
- transform: scale(1.08);
473
- }
474
-
475
- .bayon-rte-block-handle--menu-open {
476
- color: rgba(246, 236, 255, 0.98);
477
- cursor: pointer;
478
- }
479
-
480
- .bayon-rte-block-handle:active {
481
- cursor: grabbing;
482
- }
483
-
484
- .bayon-rte-block-handle--menu-open:active {
485
- cursor: pointer;
486
- }
487
-
488
- .bayon-rte-block-drag-indicator {
489
- background: linear-gradient(
490
- 90deg,
491
- rgba(180, 124, 255, 0),
492
- rgba(180, 124, 255, 0.9) 9%,
493
- rgba(180, 124, 255, 0.9) 92%,
494
- rgba(180, 124, 255, 0)
495
- );
496
- border-radius: 999px;
497
- height: 2px;
498
- left: 0;
499
- pointer-events: none;
500
- position: absolute;
501
- right: 0;
502
- top: var(--bayon-rte-block-drag-indicator-top);
503
- transform: translateY(-1px);
504
- z-index: 4;
505
- }
506
-
507
- .bayon-rte-block-drag-indicator::before {
508
- background: rgba(180, 124, 255, 0.95);
509
- border-radius: 999px;
510
- content: "";
511
- height: 8px;
512
- left: -3px;
513
- position: absolute;
514
- top: -3px;
515
- width: 8px;
516
- }
517
-
518
- .bayon-rte-special-tool--visible {
519
- opacity: 1;
520
- pointer-events: auto;
521
- transform: translate(-18px, 2px) scale(1);
522
- }
523
-
524
- .bayon-rte-special-tool__actions {
525
- display: flex;
526
- gap: 6px;
527
- }
528
-
529
- .bayon-rte-special-button {
530
- background-color: #ffffff;
531
- color: #7f38d8;
532
- height: 28px;
533
- width: 28px;
534
- }
535
-
536
- .bayon-rte-special-button:hover {
537
- background-color: #fbf6ff;
538
- }
539
-
540
- .bayon-rte-special-toggle {
541
- border: none;
542
- color: #292929;
543
- height: 22px;
544
- transition: background-color 260ms ease, border-color 260ms ease, color 260ms ease, opacity 720ms ease, transform 860ms cubic-bezier(0.16, 1, 0.3, 1);
545
- width: 22px;
546
- }
547
-
548
- .bayon-rte-special-toggle:hover {
549
- background-color: #ffffff;
550
- color: #7f38d8;
551
- transform: scale(1.05) rotate(0deg);
552
- }
553
-
554
- .bayon-rte-unsaved-backdrop {
555
- align-items: center;
556
- background: rgba(0, 0, 0, 0.42);
557
- display: flex;
558
- inset: 0;
559
- justify-content: center;
560
- padding: 24px;
561
- position: fixed;
562
- z-index: 1300;
563
- }
564
-
565
- .bayon-rte-unsaved-dialog {
566
- background: #ffffff;
567
- border-radius: 8px;
568
- box-shadow: 0 18px 46px rgba(0, 0, 0, 0.24);
569
- color: #1f1f1f;
570
- max-width: 480px;
571
- padding: 24px;
572
- width: min(100%, 480px);
573
- }
574
-
575
- .bayon-rte-unsaved-dialog h2 {
576
- font-size: 1.25rem;
577
- line-height: 1.25;
578
- margin: 0 0 12px;
579
- }
580
-
581
- .bayon-rte-unsaved-dialog p {
582
- color: #555;
583
- margin: 0;
584
- }
585
-
586
- .bayon-rte-unsaved-error {
587
- background: #fdecea;
588
- border-radius: 8px;
589
- color: #611a15;
590
- margin-top: 16px;
591
- padding: 10px 12px;
592
- }
593
-
594
- .bayon-rte-unsaved-actions {
595
- display: flex;
596
- flex-wrap: wrap;
597
- gap: 8px;
598
- justify-content: flex-end;
599
- margin-top: 24px;
600
- }
601
-
602
- .bayon-rte-button {
603
- background: transparent;
604
- border: 1px solid transparent;
605
- border-radius: 6px;
606
- color: #7f38d8;
607
- cursor: pointer;
608
- font: inherit;
609
- padding: 8px 12px;
610
- }
611
-
612
- .bayon-rte-button:hover {
613
- background: rgba(127, 56, 216, 0.08);
614
- }
615
-
616
- .bayon-rte-button:disabled {
617
- cursor: default;
618
- opacity: 0.6;
619
- }
620
-
621
- .bayon-rte-button--danger {
622
- color: #c62828;
623
- }
624
-
625
- .bayon-rte-button--primary {
626
- background: #7f38d8;
627
- color: #ffffff;
628
- }
629
-
630
- .bayon-rte-button--primary:hover {
631
- background: #6f2fc4;
632
- }
633
-
634
- @media (min-width: 600px) {
635
- .bayon-rte-surface {
636
- min-height: min(max(550px, 72vh), 820px);
637
- padding: 24px;
638
- }
639
-
640
- .bayon-rte-surface__inner {
641
- padding: 0 50px 0 40px;
642
- }
643
-
644
- .bayon-rte-transcription {
645
- top: -6px;
646
- }
647
-
648
- .bayon-rte-title {
649
- font-size: 2.45rem;
650
- }
651
-
652
- .bayon-rte-body,
653
- .bayon-rte-renderer {
654
- font-size: 1.25rem;
655
- line-height: 1.68;
656
- }
657
-
658
- .bayon-rte-body {
659
- min-height: 360px;
660
- }
661
-
662
- .bayon-rte-meta {
663
- flex-direction: row;
664
- }
665
-
666
- .bayon-rte-special-tool {
667
- gap: 16px;
668
- min-height: 56px;
669
- transform: translate(-49px, -4px) scale(0.96);
670
- }
671
-
672
- .bayon-rte-special-tool--visible {
673
- transform: translate(-49px, -10px) scale(1);
674
- }
675
-
676
- .bayon-rte-block-tool {
677
- min-height: 34px;
678
- transform: translate(-34px, 8px);
679
- }
680
-
681
- .bayon-rte-block-tool--menu-open {
682
- transform: translate(-34px, 2px);
683
- }
684
-
685
- .bayon-rte-block-hover-zone {
686
- left: -58px;
687
- width: 58px;
688
- }
689
-
690
- .bayon-rte-block-tool__actions .bayon-rte-special-button {
691
- height: 34px;
692
- width: 34px;
693
- }
694
-
695
- .bayon-rte-special-tool__actions {
696
- gap: 16px;
697
- }
698
-
699
- .bayon-rte-special-button {
700
- height: 39px;
701
- width: 39px;
702
- }
703
-
704
- .bayon-rte-special-toggle {
705
- height: 34px;
706
- width: 34px;
707
- }
708
- }
709
-
710
- @media (min-width: 900px) {
711
- .bayon-rte-surface {
712
- padding-bottom: 0;
713
- padding-top: 0;
714
- }
715
- }
716
- `;
717
- export function RichTextStyleScope() {
718
- return _jsx("style", { children: richTextStyles });
719
- }
@@ -1,7 +0,0 @@
1
- import type { SpecialBlockAction } from "./SpecialBlockTool";
2
- type SpecialBlockOptionProps = {
3
- action: SpecialBlockAction;
4
- onInsert: (action: SpecialBlockAction) => void;
5
- };
6
- export declare function SpecialBlockOption({ action, onInsert, }: SpecialBlockOptionProps): import("react/jsx-runtime").JSX.Element;
7
- export {};
@@ -1,7 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- // Renders one selectable special-block action inside the insertion tool.
4
- export function SpecialBlockOption({ action, onInsert, }) {
5
- const Icon = action.icon;
6
- return (_jsx("button", { "aria-label": action.label, className: "bayon-rte-icon-button bayon-rte-special-button", onClick: () => onInsert(action), onMouseDown: (event) => event.preventDefault(), title: action.label, type: "button", children: _jsx(Icon, { size: 18 }) }));
7
- }