@jotx-labs/editor 2.4.130 → 2.4.131

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 (45) hide show
  1. package/dist/styles/BlockMenu.css +111 -0
  2. package/dist/styles/ButtonNodeView.css +169 -0
  3. package/dist/styles/ChartNodeView.css +99 -0
  4. package/dist/styles/CodeBlockNodeView.css +90 -0
  5. package/dist/styles/DateTimeNodeView.css +89 -0
  6. package/dist/styles/GridCardNodeView.css +231 -0
  7. package/dist/styles/ImageToolbar.css +67 -0
  8. package/dist/styles/ImageVideoBlocks.css +441 -0
  9. package/dist/styles/JotxEditor.css +691 -0
  10. package/dist/styles/JotxLinkNodeView.css +149 -0
  11. package/dist/styles/LinkDialog.css +118 -0
  12. package/dist/styles/MathNodeView.css +97 -0
  13. package/dist/styles/MermaidNodeView.css +146 -0
  14. package/dist/styles/NodePickerDialog.css +189 -0
  15. package/dist/styles/ReadonlyBlockRenderer.css +389 -0
  16. package/dist/styles/SearchBar.css +167 -0
  17. package/dist/styles/SearchHighlight.css +48 -0
  18. package/dist/styles/SectionNodeView.css +90 -0
  19. package/dist/styles/SlashMenu.css +135 -0
  20. package/dist/styles/SpellCheck.css +16 -0
  21. package/dist/styles/TableToolbar.css +137 -0
  22. package/dist/styles/ToggleNodeView.css +56 -0
  23. package/package.json +4 -3
  24. package/src/styles/BlockMenu.css +111 -0
  25. package/src/styles/ButtonNodeView.css +169 -0
  26. package/src/styles/ChartNodeView.css +99 -0
  27. package/src/styles/CodeBlockNodeView.css +90 -0
  28. package/src/styles/DateTimeNodeView.css +89 -0
  29. package/src/styles/GridCardNodeView.css +231 -0
  30. package/src/styles/ImageToolbar.css +67 -0
  31. package/src/styles/ImageVideoBlocks.css +441 -0
  32. package/src/styles/JotxEditor.css +691 -0
  33. package/src/styles/JotxLinkNodeView.css +149 -0
  34. package/src/styles/LinkDialog.css +118 -0
  35. package/src/styles/MathNodeView.css +97 -0
  36. package/src/styles/MermaidNodeView.css +146 -0
  37. package/src/styles/NodePickerDialog.css +189 -0
  38. package/src/styles/ReadonlyBlockRenderer.css +389 -0
  39. package/src/styles/SearchBar.css +167 -0
  40. package/src/styles/SearchHighlight.css +48 -0
  41. package/src/styles/SectionNodeView.css +90 -0
  42. package/src/styles/SlashMenu.css +135 -0
  43. package/src/styles/SpellCheck.css +16 -0
  44. package/src/styles/TableToolbar.css +137 -0
  45. package/src/styles/ToggleNodeView.css +56 -0
@@ -0,0 +1,441 @@
1
+ /**
2
+ * Image and Video Block Styles
3
+ */
4
+
5
+ /* === IMAGE BLOCK === */
6
+ .jotx-image-block {
7
+ margin: 20px 0;
8
+ position: relative;
9
+ }
10
+
11
+ .jotx-image-block.selected {
12
+ outline: 2px solid var(--jotx-primary, #007bff);
13
+ outline-offset: 4px;
14
+ }
15
+
16
+ .jotx-image-wrapper {
17
+ position: relative;
18
+ display: inline-block;
19
+ }
20
+
21
+ .jotx-image-block img {
22
+ display: block;
23
+ max-width: 100%;
24
+ height: auto;
25
+ border-radius: 8px;
26
+ }
27
+
28
+ /* Alignment */
29
+ .jotx-image-align-left {
30
+ text-align: left;
31
+ }
32
+
33
+ .jotx-image-align-center {
34
+ text-align: center;
35
+ }
36
+
37
+ .jotx-image-align-right {
38
+ text-align: right;
39
+ }
40
+
41
+ .jotx-image-align-full img {
42
+ width: 100%;
43
+ }
44
+
45
+ /* Caption */
46
+ .jotx-image-caption {
47
+ width: 100%;
48
+ margin-top: 8px;
49
+ padding: 8px;
50
+ font-size: 14px;
51
+ font-style: italic;
52
+ color: var(--jotx-textSecondary, #666);
53
+ border: 1px solid transparent;
54
+ border-radius: 4px;
55
+ background: transparent;
56
+ }
57
+
58
+ .jotx-image-caption:focus {
59
+ outline: none;
60
+ border-color: var(--jotx-border, #ddd);
61
+ background: var(--jotx-backgroundSecondary, #f5f5f5);
62
+ }
63
+
64
+ /* Controls */
65
+ .jotx-image-controls {
66
+ position: absolute;
67
+ top: 8px;
68
+ right: 8px;
69
+ display: flex;
70
+ gap: 8px;
71
+ padding: 8px;
72
+ background: rgba(0, 0, 0, 0.7);
73
+ border-radius: 8px;
74
+ z-index: 10;
75
+ }
76
+
77
+ .jotx-image-controls button,
78
+ .jotx-image-controls select,
79
+ .jotx-image-controls input {
80
+ padding: 4px 8px;
81
+ font-size: 12px;
82
+ border: none;
83
+ border-radius: 4px;
84
+ background: var(--vscode-input-background, white);
85
+ color: var(--vscode-input-foreground, #333);
86
+ cursor: pointer;
87
+ }
88
+
89
+ .jotx-image-controls button:hover {
90
+ background: #f0f0f0;
91
+ }
92
+
93
+ /* Empty state */
94
+ .jotx-image-block-empty,
95
+ .jotx-float-image-empty {
96
+ display: flex;
97
+ flex-direction: column;
98
+ align-items: center;
99
+ gap: 12px;
100
+ padding: 40px;
101
+ border: 2px dashed var(--jotx-border, #ddd);
102
+ border-radius: 12px;
103
+ background: var(--jotx-backgroundSecondary, #f9f9f9);
104
+ }
105
+
106
+ .jotx-image-upload-button {
107
+ padding: 12px 24px;
108
+ font-size: 14px;
109
+ color: white;
110
+ background: var(--jotx-primary, #007bff);
111
+ border: none;
112
+ border-radius: 8px;
113
+ cursor: pointer;
114
+ transition: background 0.2s;
115
+ }
116
+
117
+ .jotx-image-upload-button:hover:not(:disabled) {
118
+ background: var(--jotx-primaryHover, #0056b3);
119
+ }
120
+
121
+ .jotx-image-upload-button:disabled {
122
+ opacity: 0.5;
123
+ cursor: not-allowed;
124
+ }
125
+
126
+ .jotx-image-error {
127
+ color: var(--jotx-error, #dc3545);
128
+ font-size: 12px;
129
+ }
130
+
131
+ /* === FLOAT IMAGE BLOCK === */
132
+ /* Container holds both the floating image and the content */
133
+ .jotx-float-image-container {
134
+ margin: 0 0 24px 0;
135
+ padding: 16px;
136
+ border: 1px solid transparent;
137
+ border-radius: 8px;
138
+ position: relative;
139
+ overflow: auto; /* Ensures container wraps floated children */
140
+ }
141
+
142
+ .jotx-float-image-container.selected {
143
+ border-color: var(--jotx-primary, #007bff);
144
+ background: var(--jotx-backgroundSecondary, rgba(0, 123, 255, 0.05));
145
+ }
146
+
147
+ /* The image wrapper floats left or right */
148
+ .jotx-float-image-wrapper {
149
+ position: relative;
150
+ max-width: 50%;
151
+ margin-bottom: 16px;
152
+ }
153
+
154
+ .jotx-float-image-wrapper.jotx-float-left {
155
+ float: left;
156
+ margin-right: 20px;
157
+ }
158
+
159
+ .jotx-float-image-wrapper.jotx-float-right {
160
+ float: right;
161
+ margin-left: 20px;
162
+ }
163
+
164
+ .jotx-float-image-wrapper img {
165
+ display: block;
166
+ width: 100%;
167
+ height: auto;
168
+ border-radius: 8px;
169
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
170
+ }
171
+
172
+ .jotx-float-image-wrapper .jotx-image-caption {
173
+ font-size: 12px;
174
+ margin-top: 8px;
175
+ }
176
+
177
+ /* Editable content area wraps around the floating image */
178
+ .jotx-float-image-content {
179
+ min-height: 100px;
180
+ padding: 8px;
181
+ /* Content will naturally wrap around the floated image */
182
+ }
183
+
184
+ .jotx-float-image-content p {
185
+ margin: 0 0 12px 0;
186
+ }
187
+
188
+ .jotx-float-image-content p:last-child {
189
+ margin-bottom: 0;
190
+ }
191
+
192
+ /* === VIDEO BLOCK === */
193
+ .jotx-video-block {
194
+ margin: 20px 0;
195
+ position: relative;
196
+ }
197
+
198
+ .jotx-video-block.selected {
199
+ outline: 2px solid var(--jotx-primary, #007bff);
200
+ outline-offset: 4px;
201
+ }
202
+
203
+ .jotx-video-title {
204
+ margin-bottom: 12px;
205
+ font-size: 16px;
206
+ font-weight: 600;
207
+ color: var(--jotx-text, #333);
208
+ }
209
+
210
+ .jotx-video-wrapper {
211
+ position: relative;
212
+ margin: 0 auto;
213
+ border-radius: 12px;
214
+ overflow: hidden;
215
+ background: #000;
216
+ min-height: 450px; /* Ensure wrapper is visible */
217
+ }
218
+
219
+ .jotx-video-wrapper iframe,
220
+ .jotx-video-wrapper video {
221
+ display: block;
222
+ width: 100%;
223
+ min-height: 450px; /* Ensure iframe is visible */
224
+ border: none;
225
+ }
226
+
227
+ .jotx-video-controls {
228
+ display: flex;
229
+ gap: 12px;
230
+ margin-top: 12px;
231
+ padding: 12px;
232
+ background: var(--jotx-backgroundSecondary, #f5f5f5);
233
+ border-radius: 8px;
234
+ }
235
+
236
+ .jotx-video-controls input,
237
+ .jotx-video-controls button {
238
+ padding: 8px 12px;
239
+ font-size: 14px;
240
+ border: 1px solid var(--jotx-border, #ddd);
241
+ border-radius: 6px;
242
+ background: var(--vscode-input-background, white);
243
+ color: var(--vscode-input-foreground, #333);
244
+ }
245
+
246
+ .jotx-video-controls input::placeholder {
247
+ color: var(--vscode-input-placeholderForeground, #999);
248
+ }
249
+
250
+ .jotx-video-controls button {
251
+ cursor: pointer;
252
+ background: var(--jotx-primary, #007bff);
253
+ color: white;
254
+ border: none;
255
+ }
256
+
257
+ .jotx-video-controls button:hover {
258
+ background: var(--jotx-primaryHover, #0056b3);
259
+ }
260
+
261
+ /* Empty state */
262
+ .jotx-video-empty {
263
+ display: flex;
264
+ flex-direction: column;
265
+ align-items: center;
266
+ gap: 16px;
267
+ padding: 40px;
268
+ border: 2px dashed var(--jotx-border, #ddd);
269
+ border-radius: 12px;
270
+ background: var(--jotx-backgroundSecondary, #f9f9f9);
271
+ }
272
+
273
+ .jotx-video-input-group {
274
+ display: flex;
275
+ flex-direction: column;
276
+ gap: 12px;
277
+ width: 100%;
278
+ max-width: 500px;
279
+ }
280
+
281
+ .jotx-video-input-group input {
282
+ padding: 12px;
283
+ font-size: 14px;
284
+ border: 1px solid var(--jotx-border, #ddd);
285
+ border-radius: 8px;
286
+ background: var(--vscode-input-background, white);
287
+ color: var(--vscode-input-foreground, #333);
288
+ }
289
+
290
+ .jotx-video-input-group input::placeholder {
291
+ color: var(--vscode-input-placeholderForeground, #999);
292
+ }
293
+
294
+ .jotx-video-empty button {
295
+ padding: 12px 24px;
296
+ font-size: 14px;
297
+ color: white;
298
+ background: var(--jotx-primary, #007bff);
299
+ border: none;
300
+ border-radius: 8px;
301
+ cursor: pointer;
302
+ }
303
+
304
+ .jotx-video-empty button:hover {
305
+ background: var(--jotx-primaryHover, #0056b3);
306
+ }
307
+
308
+ .jotx-video-error {
309
+ color: var(--jotx-error, #dc3545);
310
+ font-size: 14px;
311
+ }
312
+
313
+ /* === YOUTUBE THUMBNAIL PREVIEW === */
314
+ .jotx-youtube-thumbnail {
315
+ position: relative;
316
+ cursor: pointer;
317
+ border-radius: 12px;
318
+ overflow: hidden;
319
+ background: #000;
320
+ transition: transform 0.2s, box-shadow 0.2s;
321
+ }
322
+
323
+ .jotx-youtube-thumbnail:hover {
324
+ transform: scale(1.01);
325
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
326
+ }
327
+
328
+ .jotx-youtube-thumbnail img {
329
+ display: block;
330
+ width: 100%;
331
+ height: auto;
332
+ min-height: 200px;
333
+ object-fit: cover;
334
+ }
335
+
336
+ .jotx-youtube-play-overlay {
337
+ position: absolute;
338
+ top: 50%;
339
+ left: 50%;
340
+ transform: translate(-50%, -50%);
341
+ transition: transform 0.2s;
342
+ }
343
+
344
+ .jotx-youtube-thumbnail:hover .jotx-youtube-play-overlay {
345
+ transform: translate(-50%, -50%) scale(1.1);
346
+ }
347
+
348
+ .jotx-youtube-play-overlay svg {
349
+ filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.4));
350
+ }
351
+
352
+ .jotx-youtube-click-hint {
353
+ position: absolute;
354
+ bottom: 0;
355
+ left: 0;
356
+ right: 0;
357
+ padding: 12px 16px;
358
+ background: linear-gradient(to top, rgba(0, 0, 0, 0.8), transparent);
359
+ color: white;
360
+ font-size: 13px;
361
+ font-weight: 500;
362
+ text-align: center;
363
+ opacity: 0;
364
+ transition: opacity 0.2s;
365
+ }
366
+
367
+ .jotx-youtube-thumbnail:hover .jotx-youtube-click-hint {
368
+ opacity: 1;
369
+ }
370
+
371
+ .jotx-youtube-info {
372
+ display: flex;
373
+ align-items: center;
374
+ gap: 12px;
375
+ margin-top: 12px;
376
+ padding: 8px 12px;
377
+ background: var(--jotx-backgroundSecondary, #f5f5f5);
378
+ border-radius: 8px;
379
+ }
380
+
381
+ .jotx-youtube-badge {
382
+ display: inline-flex;
383
+ align-items: center;
384
+ padding: 4px 10px;
385
+ font-size: 11px;
386
+ font-weight: 600;
387
+ text-transform: uppercase;
388
+ letter-spacing: 0.5px;
389
+ color: white;
390
+ background: #FF0000;
391
+ border-radius: 4px;
392
+ }
393
+
394
+ .jotx-youtube-link {
395
+ color: var(--vscode-textLink-foreground, #007bff);
396
+ font-size: 12px;
397
+ text-decoration: none;
398
+ white-space: nowrap;
399
+ overflow: hidden;
400
+ text-overflow: ellipsis;
401
+ }
402
+
403
+ .jotx-youtube-link:hover {
404
+ text-decoration: underline;
405
+ }
406
+
407
+ .youtube-preview .jotx-video-controls {
408
+ margin-top: 12px;
409
+ }
410
+
411
+ /* Responsive */
412
+ @media (max-width: 768px) {
413
+ .jotx-float-left,
414
+ .jotx-float-right {
415
+ float: none;
416
+ max-width: 100%;
417
+ margin-left: 0;
418
+ margin-right: 0;
419
+ }
420
+
421
+ .jotx-video-wrapper {
422
+ width: 100% !important;
423
+ }
424
+
425
+ .jotx-youtube-info {
426
+ flex-direction: column;
427
+ align-items: flex-start;
428
+ }
429
+ }
430
+
431
+
432
+
433
+
434
+
435
+
436
+
437
+
438
+
439
+
440
+
441
+