@elixpo/lixeditor 2.1.6

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.
@@ -0,0 +1,468 @@
1
+ /* Kill BlockNote's default file panel (Embed popup) — we have our own UI */
2
+ .bn-file-panel,
3
+ [class*="mantine-Popover-dropdown"]:has([data-test="embed-input"]),
4
+ [class*="mantine-Popover-dropdown"]:has([data-test="upload-input"]),
5
+ .blog-editor-wrapper [class*="mantine-Popover-dropdown"] {
6
+ display: none !important;
7
+ visibility: hidden !important;
8
+ pointer-events: none !important;
9
+ opacity: 0 !important;
10
+ width: 0 !important;
11
+ height: 0 !important;
12
+ overflow: hidden !important;
13
+ }
14
+
15
+ /* ===== Custom Blog Image Block ===== */
16
+
17
+ /* Empty state container */
18
+ .blog-img-empty {
19
+ position: relative;
20
+ width: 100%;
21
+ min-height: 140px;
22
+ border: 1.5px dashed var(--border-default);
23
+ border-radius: 12px;
24
+ background: var(--bg-surface);
25
+ display: flex;
26
+ flex-direction: column;
27
+ align-items: center;
28
+ justify-content: center;
29
+ gap: 12px;
30
+ padding: 24px 16px;
31
+ margin: 4px 0;
32
+ outline: none;
33
+ transition: all 0.2s ease;
34
+ }
35
+
36
+ .blog-img-empty:focus-visible,
37
+ .blog-img-empty:hover {
38
+ border-color: rgba(155, 123, 247, 0.4);
39
+ background: rgba(155, 123, 247, 0.04);
40
+ }
41
+
42
+ .blog-img-empty--generating {
43
+ border: none;
44
+ background: transparent;
45
+ padding: 0;
46
+ min-height: 200px;
47
+ pointer-events: none;
48
+ user-select: none;
49
+ }
50
+
51
+ .blog-img-empty[data-drag-over="true"] {
52
+ border-color: #9b7bf7;
53
+ background: rgba(155, 123, 247, 0.08);
54
+ box-shadow: 0 0 24px rgba(155, 123, 247, 0.1);
55
+ }
56
+
57
+ /* 3 action buttons row */
58
+ .blog-img-actions-row {
59
+ display: flex;
60
+ gap: 8px;
61
+ }
62
+
63
+ .blog-img-action {
64
+ display: flex;
65
+ align-items: center;
66
+ gap: 6px;
67
+ padding: 8px 16px;
68
+ background: var(--bg-elevated);
69
+ border: 1px solid var(--border-default);
70
+ border-radius: 8px;
71
+ color: var(--text-muted);
72
+ font-size: 13px;
73
+ font-weight: 500;
74
+ cursor: pointer;
75
+ transition: all 0.15s ease;
76
+ }
77
+
78
+ .blog-img-action:hover {
79
+ background: rgba(155, 123, 247, 0.1);
80
+ border-color: rgba(155, 123, 247, 0.35);
81
+ color: #9b7bf7;
82
+ }
83
+
84
+ .blog-img-action-ai {
85
+ border-color: rgba(155, 123, 247, 0.25);
86
+ color: #9b7bf7;
87
+ }
88
+
89
+ .blog-img-action-ai:hover {
90
+ border-color: rgba(155, 123, 247, 0.5);
91
+ background: rgba(155, 123, 247, 0.12);
92
+ color: #b69aff;
93
+ }
94
+
95
+ /* Hint text */
96
+ .blog-img-hint {
97
+ font-size: 11px;
98
+ color: var(--text-faint);
99
+ margin: 0;
100
+ }
101
+
102
+ /* Dismiss / delete button on empty placeholder */
103
+ .blog-img-dismiss {
104
+ position: absolute;
105
+ top: 8px;
106
+ right: 8px;
107
+ width: 26px;
108
+ height: 26px;
109
+ border-radius: 6px;
110
+ display: flex;
111
+ align-items: center;
112
+ justify-content: center;
113
+ background: var(--bg-surface);
114
+ border: 1px solid var(--border-default);
115
+ color: var(--text-faint);
116
+ cursor: pointer;
117
+ opacity: 0;
118
+ transition: opacity 0.15s, color 0.15s, background 0.15s;
119
+ }
120
+
121
+ .blog-img-empty:hover .blog-img-dismiss {
122
+ opacity: 1;
123
+ }
124
+
125
+ .blog-img-dismiss:hover {
126
+ color: #f87171;
127
+ background: rgba(248, 113, 113, 0.08);
128
+ border-color: rgba(248, 113, 113, 0.3);
129
+ }
130
+
131
+ /* Inline input row (embed URL / AI prompt) */
132
+ .blog-img-input-row {
133
+ display: flex;
134
+ align-items: center;
135
+ gap: 6px;
136
+ width: 100%;
137
+ max-width: 480px;
138
+ position: relative;
139
+ }
140
+
141
+ .blog-img-url-input {
142
+ flex: 1;
143
+ background: rgba(196, 181, 253, 0.04);
144
+ border: 1.5px dashed rgba(196, 181, 253, 0.25);
145
+ border-radius: 8px;
146
+ color: var(--text-primary);
147
+ font-size: 13px;
148
+ padding: 9px 12px;
149
+ outline: none;
150
+ transition: border-color 0.15s;
151
+ }
152
+
153
+ .blog-img-url-input:focus {
154
+ border-color: rgba(196, 181, 253, 0.4);
155
+ border-style: solid;
156
+ }
157
+
158
+ .blog-img-url-input::placeholder {
159
+ color: rgba(196, 181, 253, 0.3);
160
+ }
161
+
162
+ .blog-img-ai-input {
163
+ border-color: rgba(155, 123, 247, 0.25);
164
+ }
165
+
166
+ .blog-img-ai-input:focus {
167
+ border-color: rgba(155, 123, 247, 0.45);
168
+ }
169
+
170
+ .blog-img-submit-btn {
171
+ width: 32px;
172
+ height: 32px;
173
+ flex-shrink: 0;
174
+ display: flex;
175
+ align-items: center;
176
+ justify-content: center;
177
+ background: rgba(196, 181, 253, 0.1);
178
+ border: 1px solid rgba(196, 181, 253, 0.2);
179
+ border-radius: 8px;
180
+ color: #c4b5fd;
181
+ cursor: pointer;
182
+ transition: all 0.15s;
183
+ }
184
+
185
+ .blog-img-submit-btn:hover:not(:disabled) {
186
+ background: rgba(196, 181, 253, 0.2);
187
+ border-color: rgba(196, 181, 253, 0.4);
188
+ }
189
+
190
+ .blog-img-submit-btn:disabled {
191
+ opacity: 0.3;
192
+ cursor: not-allowed;
193
+ }
194
+
195
+ .blog-img-ai-submit {
196
+ background: rgba(155, 123, 247, 0.1);
197
+ border-color: rgba(155, 123, 247, 0.25);
198
+ color: #b69aff;
199
+ }
200
+
201
+ .blog-img-cancel-btn {
202
+ width: 32px;
203
+ height: 32px;
204
+ flex-shrink: 0;
205
+ display: flex;
206
+ align-items: center;
207
+ justify-content: center;
208
+ background: transparent;
209
+ border: 1px solid rgba(196, 181, 253, 0.1);
210
+ border-radius: 8px;
211
+ color: rgba(196, 181, 253, 0.35);
212
+ cursor: pointer;
213
+ transition: all 0.15s;
214
+ }
215
+
216
+ .blog-img-cancel-btn:hover {
217
+ color: #f87171;
218
+ border-color: rgba(248, 113, 113, 0.25);
219
+ background: rgba(248, 113, 113, 0.06);
220
+ }
221
+
222
+ .blog-img-error {
223
+ position: absolute;
224
+ bottom: -20px;
225
+ left: 0;
226
+ font-size: 11px;
227
+ color: #f87171;
228
+ }
229
+
230
+ /* Upload spinner */
231
+ .blog-img-status {
232
+ display: flex;
233
+ flex-direction: column;
234
+ align-items: center;
235
+ gap: 10px;
236
+ color: rgba(196, 181, 253, 0.5);
237
+ font-size: 13px;
238
+ }
239
+
240
+ .blog-img-spinner {
241
+ width: 26px;
242
+ height: 26px;
243
+ border: 2.5px solid rgba(196, 181, 253, 0.12);
244
+ border-top-color: #c4b5fd;
245
+ border-radius: 50%;
246
+ animation: blogImgSpin 0.8s linear infinite;
247
+ }
248
+
249
+ @keyframes blogImgSpin {
250
+ to { transform: rotate(360deg); }
251
+ }
252
+
253
+ /* AI generating — skeleton with RGB shimmer */
254
+ .blog-img-generating {
255
+ position: relative;
256
+ width: 100%;
257
+ height: 200px;
258
+ border-radius: 10px;
259
+ overflow: hidden;
260
+ background: rgba(14, 18, 27, 0.6);
261
+ }
262
+
263
+ .blog-img-gen-shimmer {
264
+ position: absolute;
265
+ inset: 0;
266
+ background: linear-gradient(
267
+ -45deg,
268
+ rgba(196, 181, 253, 0.06) 0%,
269
+ rgba(155, 123, 247, 0.12) 25%,
270
+ rgba(96, 165, 250, 0.08) 50%,
271
+ rgba(196, 181, 253, 0.12) 75%,
272
+ rgba(244, 114, 182, 0.06) 100%
273
+ );
274
+ background-size: 400% 400%;
275
+ animation: blogImgRGBShimmer 3s ease-in-out infinite;
276
+ }
277
+
278
+ @keyframes blogImgRGBShimmer {
279
+ 0% { background-position: 0% 50%; }
280
+ 50% { background-position: 100% 50%; }
281
+ 100% { background-position: 0% 50%; }
282
+ }
283
+
284
+ .blog-img-gen-label {
285
+ position: absolute;
286
+ top: 50%;
287
+ left: 50%;
288
+ transform: translate(-50%, -50%);
289
+ display: flex;
290
+ align-items: center;
291
+ gap: 8px;
292
+ color: rgba(196, 181, 253, 0.5);
293
+ font-size: 13px;
294
+ font-weight: 500;
295
+ white-space: nowrap;
296
+ z-index: 2;
297
+ }
298
+
299
+ .blog-img-gen-label svg {
300
+ animation: blogImgStarSpin 3s linear infinite;
301
+ }
302
+
303
+ @keyframes blogImgStarSpin {
304
+ from { transform: rotate(0deg); }
305
+ to { transform: rotate(360deg); }
306
+ }
307
+
308
+ /* ===== Image loaded state ===== */
309
+
310
+ .blog-img-loaded {
311
+ width: 100%;
312
+ margin: 4px 0;
313
+ outline: none;
314
+ }
315
+
316
+ .blog-img-wrapper {
317
+ position: relative;
318
+ width: 100%;
319
+ border-radius: 10px;
320
+ overflow: hidden;
321
+ }
322
+
323
+ .blog-img-main {
324
+ display: block;
325
+ width: 100%;
326
+ height: auto;
327
+ max-height: 600px;
328
+ object-fit: cover;
329
+ border-radius: 10px;
330
+ }
331
+
332
+ /* Hover overlay */
333
+ .blog-img-hover-overlay {
334
+ position: absolute;
335
+ inset: 0;
336
+ background: transparent;
337
+ display: flex;
338
+ align-items: flex-start;
339
+ justify-content: flex-end;
340
+ padding: 8px;
341
+ opacity: 0;
342
+ transition: all 0.2s ease;
343
+ border-radius: 10px;
344
+ }
345
+
346
+ .blog-img-loaded:hover .blog-img-hover-overlay,
347
+ .blog-img-loaded:focus-within .blog-img-hover-overlay {
348
+ opacity: 1;
349
+ background: rgba(0, 0, 0, 0.3);
350
+ }
351
+
352
+ .blog-img-hover-actions {
353
+ display: flex;
354
+ gap: 4px;
355
+ }
356
+
357
+ .blog-img-hover-btn {
358
+ width: 30px;
359
+ height: 30px;
360
+ display: flex;
361
+ align-items: center;
362
+ justify-content: center;
363
+ background: rgba(14, 18, 27, 0.8);
364
+ backdrop-filter: blur(8px);
365
+ border: 1px solid rgba(196, 181, 253, 0.2);
366
+ border-radius: 7px;
367
+ color: #c4b5fd;
368
+ cursor: pointer;
369
+ transition: all 0.15s;
370
+ }
371
+
372
+ .blog-img-hover-btn:hover {
373
+ background: rgba(196, 181, 253, 0.15);
374
+ border-color: rgba(196, 181, 253, 0.4);
375
+ }
376
+
377
+ .blog-img-hover-delete {
378
+ color: #f87171;
379
+ border-color: rgba(248, 113, 113, 0.2);
380
+ }
381
+
382
+ .blog-img-hover-delete:hover {
383
+ background: rgba(248, 113, 113, 0.15);
384
+ border-color: rgba(248, 113, 113, 0.4);
385
+ }
386
+
387
+ /* Caption */
388
+ .blog-img-caption {
389
+ text-align: center;
390
+ font-size: 13px;
391
+ color: var(--text-faint);
392
+ margin: 6px 0 0;
393
+ padding: 2px 8px;
394
+ cursor: pointer;
395
+ transition: color 0.15s;
396
+ }
397
+
398
+ .blog-img-caption:hover {
399
+ color: #c4b5fd;
400
+ }
401
+
402
+ .blog-img-caption--empty {
403
+ color: rgba(107, 122, 141, 0.45);
404
+ font-style: italic;
405
+ }
406
+
407
+ .blog-img-caption--empty:hover {
408
+ color: rgba(196, 181, 253, 0.5);
409
+ }
410
+
411
+ .blog-img-caption-input {
412
+ display: block;
413
+ width: 100%;
414
+ text-align: center;
415
+ font-size: 13px;
416
+ color: var(--text-primary);
417
+ background: rgba(196, 181, 253, 0.04);
418
+ border: 1px solid rgba(196, 181, 253, 0.15);
419
+ border-radius: 6px;
420
+ padding: 5px 12px;
421
+ margin-top: 6px;
422
+ outline: none;
423
+ }
424
+
425
+ .blog-img-caption-input:focus {
426
+ border-color: rgba(196, 181, 253, 0.3);
427
+ }
428
+
429
+ .blog-img-caption-input::placeholder {
430
+ color: var(--text-faint);
431
+ }
432
+
433
+ /* ===== Fail Toast ===== */
434
+
435
+ .blog-img-fail-toast {
436
+ position: fixed;
437
+ bottom: 32px;
438
+ left: 50%;
439
+ transform: translateX(-50%);
440
+ display: flex;
441
+ align-items: center;
442
+ gap: 10px;
443
+ background: rgba(14, 18, 27, 0.9);
444
+ backdrop-filter: blur(12px);
445
+ border: 1px solid rgba(248, 113, 113, 0.25);
446
+ border-radius: 10px;
447
+ padding: 10px 18px;
448
+ color: #f87171;
449
+ font-size: 13px;
450
+ z-index: 9999;
451
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.5);
452
+ animation: blogImgToastIn 0.25s ease;
453
+ white-space: nowrap;
454
+ }
455
+
456
+ .blog-img-fail-toast--out {
457
+ animation: blogImgToastOut 0.35s ease forwards;
458
+ }
459
+
460
+ @keyframes blogImgToastIn {
461
+ from { opacity: 0; transform: translateX(-50%) translateY(12px); }
462
+ to { opacity: 1; transform: translateX(-50%) translateY(0); }
463
+ }
464
+
465
+ @keyframes blogImgToastOut {
466
+ from { opacity: 1; transform: translateX(-50%) translateY(0); }
467
+ to { opacity: 0; transform: translateX(-50%) translateY(-10px); }
468
+ }