@vortexm/vjt 0.1.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 (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +82 -0
  3. package/dist/index.d.ts +4 -0
  4. package/dist/index.js +7073 -0
  5. package/dist/lib/action-runtime.d.ts +78 -0
  6. package/dist/lib/default-styles.d.ts +2 -0
  7. package/dist/lib/dom-state.d.ts +45 -0
  8. package/dist/lib/layout.d.ts +11 -0
  9. package/dist/lib/logging.d.ts +1 -0
  10. package/dist/lib/network.d.ts +29 -0
  11. package/dist/lib/references.d.ts +25 -0
  12. package/dist/lib/render.d.ts +3 -0
  13. package/dist/lib/resource-manager.d.ts +25 -0
  14. package/dist/lib/types.d.ts +144 -0
  15. package/dist/lib/widgets/adaptive-layout.d.ts +10 -0
  16. package/dist/lib/widgets/bindings.d.ts +33 -0
  17. package/dist/lib/widgets/button.d.ts +11 -0
  18. package/dist/lib/widgets/checkbox.d.ts +11 -0
  19. package/dist/lib/widgets/combobox.d.ts +9 -0
  20. package/dist/lib/widgets/conditional-container.d.ts +21 -0
  21. package/dist/lib/widgets/container-layout.d.ts +39 -0
  22. package/dist/lib/widgets/context-menu.d.ts +14 -0
  23. package/dist/lib/widgets/context.d.ts +58 -0
  24. package/dist/lib/widgets/delegation.d.ts +30 -0
  25. package/dist/lib/widgets/edit.d.ts +12 -0
  26. package/dist/lib/widgets/grid-view.d.ts +9 -0
  27. package/dist/lib/widgets/image.d.ts +7 -0
  28. package/dist/lib/widgets/link.d.ts +10 -0
  29. package/dist/lib/widgets/list.d.ts +9 -0
  30. package/dist/lib/widgets/listbox.d.ts +9 -0
  31. package/dist/lib/widgets/md-text.d.ts +9 -0
  32. package/dist/lib/widgets/modal-window.d.ts +15 -0
  33. package/dist/lib/widgets/overlay-container.d.ts +11 -0
  34. package/dist/lib/widgets/panel.d.ts +9 -0
  35. package/dist/lib/widgets/radio-group.d.ts +9 -0
  36. package/dist/lib/widgets/splitter.d.ts +6 -0
  37. package/dist/lib/widgets/spoiler.d.ts +9 -0
  38. package/dist/lib/widgets/static-text.d.ts +10 -0
  39. package/dist/lib/widgets/tabs.d.ts +10 -0
  40. package/dist/lib/widgets/textarea.d.ts +10 -0
  41. package/dist/lib/widgets/ui-reference.d.ts +9 -0
  42. package/package.json +61 -0
  43. package/vjt-styles.css +756 -0
package/vjt-styles.css ADDED
@@ -0,0 +1,756 @@
1
+ html[data-vjt-theme="dark"] {
2
+ color-scheme: dark;
3
+ --vjt-bg: #17212b;
4
+ --vjt-surface: rgba(34, 40, 49, 0.94);
5
+ --vjt-modal-surface: #222831;
6
+ --vjt-surface-muted: #2c3440;
7
+ --vjt-text: #eef4fb;
8
+ --vjt-muted: #9eb2c8;
9
+ --vjt-border: #3a4d63;
10
+ --vjt-accent: #6d8fb3;
11
+ --vjt-accent-contrast: #f4f8fc;
12
+ --vjt-shadow: 0 22px 56px rgba(4, 11, 19, 0.42);
13
+ --vjt-bg-glow: rgba(109, 143, 179, 0.06);
14
+ }
15
+
16
+ html[data-vjt-theme="light"] {
17
+ color-scheme: light;
18
+ --vjt-bg: #eef3f8;
19
+ --vjt-surface: rgba(251, 253, 255, 0.92);
20
+ --vjt-modal-surface: #f8fbff;
21
+ --vjt-surface-muted: #e4ebf3;
22
+ --vjt-text: #223140;
23
+ --vjt-muted: #6c7f93;
24
+ --vjt-border: #bccbd9;
25
+ --vjt-accent: #6f8fb1;
26
+ --vjt-accent-contrast: #f8fbff;
27
+ --vjt-shadow: 0 18px 48px rgba(34, 51, 68, 0.12);
28
+ --vjt-bg-glow: rgba(111, 143, 177, 0.08);
29
+ }
30
+
31
+ html {
32
+ --vjt-font: "Segoe UI", system-ui, sans-serif;
33
+ --vjt-font-heading: Georgia, "Times New Roman", serif;
34
+ }
35
+
36
+ .vjt-static-text,
37
+ .vjt-md-text,
38
+ .vjt-edit,
39
+ .vjt-edit-stepper,
40
+ .vjt-textarea,
41
+ .vjt-button,
42
+ .vjt-link,
43
+ .vjt-checkbox,
44
+ .vjt-radio-group,
45
+ .vjt-listbox,
46
+ .vjt-combobox,
47
+ .vjt-grid-view,
48
+ .vjt-overlay-container,
49
+ .vjt-tabs,
50
+ .vjt-panel,
51
+ .vjt-container-layout,
52
+ .vjt-list,
53
+ .vjt-adaptive-layout {
54
+ font-family: var(--vjt-font);
55
+ color: var(--vjt-text);
56
+ }
57
+
58
+ .vjt-static-text {
59
+ min-width: 0;
60
+ }
61
+
62
+ .vjt-md-text {
63
+ min-width: 0;
64
+ }
65
+
66
+ .vjt-md-text-body {
67
+ width: 100%;
68
+ min-width: 0;
69
+ }
70
+
71
+ .vjt-md-text-body > :first-child {
72
+ margin-top: 0;
73
+ }
74
+
75
+ .vjt-md-text-body > :last-child {
76
+ margin-bottom: 0;
77
+ }
78
+
79
+ .vjt-md-text-body pre,
80
+ .vjt-md-text-body code {
81
+ font-family: Consolas, "Courier New", monospace;
82
+ }
83
+
84
+ .vjt-md-text-body pre {
85
+ padding: 10px 12px;
86
+ border-radius: 12px;
87
+ border: 1px solid var(--vjt-border);
88
+ background: color-mix(in srgb, var(--vjt-surface-muted) 88%, transparent);
89
+ overflow: auto;
90
+ }
91
+
92
+ .vjt-md-text-body code {
93
+ padding: 1px 4px;
94
+ border-radius: 6px;
95
+ background: color-mix(in srgb, var(--vjt-surface-muted) 86%, transparent);
96
+ }
97
+
98
+ .vjt-static-text:is(h1, h2, h3, h4, h5, h6) {
99
+ font-family: var(--vjt-font-heading);
100
+ letter-spacing: -0.02em;
101
+ }
102
+
103
+ .vjt-panel,
104
+ .vjt-container-layout {
105
+ min-width: 0;
106
+ min-height: 0;
107
+ }
108
+
109
+ .vjt-panel > * {
110
+ flex: 1 1 auto;
111
+ min-width: 0;
112
+ min-height: 0;
113
+ }
114
+
115
+ .vjt-layout-cell,
116
+ .vjt-layout-row {
117
+ min-width: 0;
118
+ min-height: 0;
119
+ }
120
+
121
+ .vjt-layout-cell > * {
122
+ min-width: 0;
123
+ min-height: 0;
124
+ }
125
+
126
+ .vjt-layout-cell > .vjt-panel,
127
+ .vjt-layout-cell > .vjt-container-layout,
128
+ .vjt-layout-cell > .vjt-adaptive-layout,
129
+ .vjt-layout-cell > .vjt-ui-reference,
130
+ .vjt-layout-cell > .vjt-static-text,
131
+ .vjt-layout-cell > .vjt-md-text,
132
+ .vjt-layout-cell > .vjt-edit,
133
+ .vjt-layout-cell > .vjt-textarea,
134
+ .vjt-layout-cell > .vjt-button,
135
+ .vjt-layout-cell > .vjt-link,
136
+ .vjt-layout-cell > .vjt-checkbox,
137
+ .vjt-layout-cell > .vjt-radio-group,
138
+ .vjt-layout-cell > .vjt-listbox,
139
+ .vjt-layout-cell > .vjt-combobox,
140
+ .vjt-layout-cell > .vjt-grid-view,
141
+ .vjt-layout-cell > .vjt-list,
142
+ .vjt-layout-cell > .vjt-tabs,
143
+ .vjt-layout-cell > .vjt-spoiler,
144
+ .vjt-layout-cell > .vjt-overlay-container {
145
+ width: 100%;
146
+ }
147
+
148
+ .vjt-panel {
149
+ display: block;
150
+ }
151
+
152
+ .vjt-edit,
153
+ .vjt-textarea,
154
+ .vjt-button {
155
+ min-height: 52px;
156
+ border-radius: 14px;
157
+ border: 1px solid var(--vjt-border);
158
+ transition: border-color 140ms ease, box-shadow 140ms ease, background-color 140ms ease, color 140ms ease, transform 140ms ease;
159
+ }
160
+
161
+ .vjt-edit,
162
+ .vjt-textarea,
163
+ .vjt-listbox,
164
+ .vjt-combobox {
165
+ width: 100%;
166
+ padding: 0 14px;
167
+ background: var(--vjt-surface);
168
+ color: var(--vjt-text);
169
+ font-size: 16px;
170
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18);
171
+ }
172
+
173
+ .vjt-textarea {
174
+ min-height: 120px;
175
+ padding: 14px;
176
+ resize: vertical;
177
+ }
178
+
179
+ .vjt-edit-stepper {
180
+ display: flex;
181
+ align-items: stretch;
182
+ width: 100%;
183
+ flex-wrap: nowrap;
184
+ min-height: 52px;
185
+ border-radius: 14px;
186
+ border: 1px solid var(--vjt-border);
187
+ background: var(--vjt-surface);
188
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18);
189
+ overflow: hidden;
190
+ transition: border-color 140ms ease, box-shadow 140ms ease, background-color 140ms ease, color 140ms ease;
191
+ }
192
+
193
+ .vjt-edit-stepper:focus-within {
194
+ border-color: var(--vjt-accent);
195
+ box-shadow: 0 0 0 4px color-mix(in srgb, var(--vjt-accent) 16%, transparent);
196
+ }
197
+
198
+ .vjt-edit--stepped {
199
+ flex: 1 1 auto;
200
+ width: auto;
201
+ min-width: 0;
202
+ border: 0;
203
+ border-radius: 0;
204
+ box-shadow: none;
205
+ background: transparent;
206
+ }
207
+
208
+ .vjt-edit--stepped:focus {
209
+ border-color: transparent;
210
+ box-shadow: none;
211
+ }
212
+
213
+ .vjt-edit-stepper-controls {
214
+ display: flex;
215
+ flex-direction: column;
216
+ flex: 0 0 44px;
217
+ border-left: 1px solid var(--vjt-border);
218
+ background: color-mix(in srgb, var(--vjt-surface-muted) 86%, transparent);
219
+ }
220
+
221
+ .vjt-edit-stepper-button {
222
+ flex: 1 1 50%;
223
+ min-height: 0;
224
+ border: 0;
225
+ border-bottom: 1px solid var(--vjt-border);
226
+ background: transparent;
227
+ color: var(--vjt-text);
228
+ font-size: 16px;
229
+ font-weight: 700;
230
+ cursor: pointer;
231
+ transition: background-color 140ms ease, color 140ms ease;
232
+ }
233
+
234
+ .vjt-edit-stepper-button:last-child {
235
+ border-bottom: 0;
236
+ }
237
+
238
+ .vjt-edit-stepper-button:hover:enabled {
239
+ background: color-mix(in srgb, var(--vjt-accent) 18%, transparent);
240
+ }
241
+
242
+ .vjt-edit-stepper-button:disabled {
243
+ cursor: not-allowed;
244
+ opacity: 0.5;
245
+ }
246
+
247
+ .vjt-edit::placeholder {
248
+ color: var(--vjt-muted);
249
+ }
250
+
251
+ .vjt-edit:focus {
252
+ outline: none;
253
+ border-color: var(--vjt-accent);
254
+ box-shadow: 0 0 0 4px color-mix(in srgb, var(--vjt-accent) 16%, transparent);
255
+ }
256
+
257
+ .vjt-edit:disabled {
258
+ cursor: not-allowed;
259
+ opacity: 0.65;
260
+ }
261
+
262
+ .vjt-button {
263
+ display: inline-flex;
264
+ align-items: center;
265
+ justify-content: center;
266
+ padding: 0 16px;
267
+ background: var(--vjt-accent);
268
+ color: var(--vjt-accent-contrast);
269
+ font-size: 16px;
270
+ font-weight: 600;
271
+ cursor: pointer;
272
+ box-shadow: var(--vjt-shadow);
273
+ }
274
+
275
+ .vjt-button:hover:enabled {
276
+ transform: translateY(-1px);
277
+ }
278
+
279
+ .vjt-button:focus-visible {
280
+ outline: none;
281
+ border-color: var(--vjt-accent);
282
+ box-shadow: 0 0 0 4px color-mix(in srgb, var(--vjt-accent) 18%, transparent);
283
+ }
284
+
285
+ .vjt-button:disabled {
286
+ cursor: not-allowed;
287
+ opacity: 0.65;
288
+ transform: none;
289
+ }
290
+
291
+ .vjt-link {
292
+ display: inline-flex;
293
+ align-items: center;
294
+ min-height: 52px;
295
+ color: var(--vjt-accent);
296
+ text-decoration: none;
297
+ }
298
+
299
+ .vjt-link.is-disabled {
300
+ opacity: 0.5;
301
+ pointer-events: none;
302
+ cursor: not-allowed;
303
+ }
304
+
305
+ .vjt-link--link {
306
+ text-decoration: underline;
307
+ text-underline-offset: 0.18em;
308
+ }
309
+
310
+ .vjt-link--button,
311
+ .vjt-button--regular,
312
+ .vjt-button--bright {
313
+ justify-content: center;
314
+ min-height: 52px;
315
+ padding: 0 16px;
316
+ border-radius: 14px;
317
+ border: 1px solid var(--vjt-border);
318
+ background: var(--vjt-surface);
319
+ font-size: 16px;
320
+ }
321
+
322
+ .vjt-button--regular {
323
+ color: var(--vjt-text);
324
+ }
325
+
326
+ .vjt-button--bright {
327
+ background: var(--vjt-accent);
328
+ color: var(--vjt-accent-contrast);
329
+ }
330
+
331
+ .vjt-list {
332
+ scrollbar-color: var(--vjt-border) transparent;
333
+ }
334
+
335
+ .vjt-list-element {
336
+ width: 100%;
337
+ }
338
+
339
+ .vjt-grid-view {
340
+ display: flex;
341
+ flex-direction: column;
342
+ gap: 8px;
343
+ }
344
+
345
+ .vjt-grid-row {
346
+ display: grid;
347
+ grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
348
+ gap: 8px;
349
+ }
350
+
351
+ .vjt-grid-cell {
352
+ min-width: 0;
353
+ min-height: 0;
354
+ }
355
+
356
+ .vjt-checkbox {
357
+ display: inline-flex;
358
+ align-items: center;
359
+ gap: 12px;
360
+ min-height: 52px;
361
+ width: 100%;
362
+ padding: 8px 12px;
363
+ border-radius: 14px;
364
+ color: var(--vjt-text);
365
+ cursor: pointer;
366
+ user-select: none;
367
+ }
368
+
369
+ .vjt-checkbox-input {
370
+ position: absolute;
371
+ opacity: 0;
372
+ pointer-events: none;
373
+ }
374
+
375
+ .vjt-checkbox-indicator {
376
+ position: relative;
377
+ flex: 0 0 20px;
378
+ width: 20px;
379
+ height: 20px;
380
+ border: 1px solid var(--vjt-border);
381
+ background: var(--vjt-surface);
382
+ transition: background-color 140ms ease, border-color 140ms ease, transform 140ms ease;
383
+ }
384
+
385
+ .vjt-checkbox-label {
386
+ margin: 0;
387
+ min-width: 0;
388
+ font-size: 16px;
389
+ }
390
+
391
+ .vjt-checkbox--check .vjt-checkbox-indicator {
392
+ border-radius: 6px;
393
+ }
394
+
395
+ .vjt-checkbox--switch .vjt-checkbox-indicator {
396
+ flex-basis: 40px;
397
+ width: 40px;
398
+ height: 24px;
399
+ border-radius: 999px;
400
+ background: color-mix(in srgb, var(--vjt-surface-muted) 88%, var(--vjt-surface));
401
+ border-color: color-mix(in srgb, var(--vjt-border) 90%, transparent);
402
+ }
403
+
404
+ .vjt-checkbox--switch .vjt-checkbox-indicator::after,
405
+ .vjt-checkbox--check .vjt-checkbox-indicator::after {
406
+ content: "";
407
+ position: absolute;
408
+ transition: transform 140ms ease, opacity 140ms ease, background-color 140ms ease;
409
+ }
410
+
411
+ .vjt-checkbox--switch .vjt-checkbox-indicator::after {
412
+ top: 2px;
413
+ left: 2px;
414
+ width: 18px;
415
+ height: 18px;
416
+ border-radius: 50%;
417
+ background: color-mix(in srgb, var(--vjt-text) 88%, var(--vjt-surface));
418
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.18);
419
+ }
420
+
421
+ .vjt-checkbox--check .vjt-checkbox-indicator::after {
422
+ inset: 4px;
423
+ border-radius: 3px;
424
+ background: var(--vjt-accent);
425
+ opacity: 0;
426
+ transform: scale(0.5);
427
+ }
428
+
429
+ .vjt-checkbox-input:checked + .vjt-checkbox-indicator {
430
+ border-color: var(--vjt-accent);
431
+ background: color-mix(in srgb, var(--vjt-accent) 16%, var(--vjt-surface));
432
+ }
433
+
434
+ .vjt-checkbox--switch .vjt-checkbox-input:checked + .vjt-checkbox-indicator {
435
+ border-color: color-mix(in srgb, var(--vjt-accent) 84%, white);
436
+ background: color-mix(in srgb, var(--vjt-accent) 62%, var(--vjt-surface));
437
+ }
438
+
439
+ .vjt-checkbox--switch .vjt-checkbox-input:checked + .vjt-checkbox-indicator::after {
440
+ transform: translateX(16px);
441
+ background: color-mix(in srgb, white 86%, var(--vjt-accent));
442
+ }
443
+
444
+ .vjt-checkbox--check .vjt-checkbox-input:checked + .vjt-checkbox-indicator::after {
445
+ opacity: 1;
446
+ transform: scale(1);
447
+ }
448
+
449
+ .vjt-checkbox-input:disabled + .vjt-checkbox-indicator,
450
+ .vjt-checkbox-input:disabled ~ .vjt-checkbox-label {
451
+ opacity: 0.55;
452
+ cursor: not-allowed;
453
+ }
454
+
455
+ .vjt-radio-group {
456
+ display: flex;
457
+ flex-direction: column;
458
+ gap: 8px;
459
+ padding: 8px;
460
+ margin: 0;
461
+ border: 0;
462
+ min-width: 0;
463
+ }
464
+
465
+ .vjt-radio-group--bordered {
466
+ border: 1px solid var(--vjt-border);
467
+ border-radius: 14px;
468
+ }
469
+
470
+ .vjt-radio-option {
471
+ display: flex;
472
+ align-items: center;
473
+ gap: 10px;
474
+ }
475
+
476
+ .vjt-image {
477
+ box-sizing: border-box;
478
+ flex: 1 1 auto;
479
+ width: auto;
480
+ height: auto;
481
+ min-width: 0;
482
+ min-height: 0;
483
+ overflow: hidden;
484
+ display: flex;
485
+ align-items: center;
486
+ justify-content: center;
487
+ }
488
+
489
+ .vjt-image-tag {
490
+ display: block;
491
+ width: auto;
492
+ height: auto;
493
+ min-width: 0;
494
+ min-height: 0;
495
+ object-fit: contain;
496
+ object-position: center;
497
+ }
498
+
499
+ .vjt-overlay-container {
500
+ display: grid;
501
+ width: 100%;
502
+ min-width: 0;
503
+ min-height: 0;
504
+ }
505
+
506
+ .vjt-overlay-layer {
507
+ grid-area: 1 / 1;
508
+ min-width: 0;
509
+ min-height: 0;
510
+ }
511
+
512
+ .vjt-overlay-layer > .vjt-static-text,
513
+ .vjt-overlay-layer > .vjt-md-text,
514
+ .vjt-overlay-layer > .vjt-panel,
515
+ .vjt-overlay-layer > .vjt-container-layout,
516
+ .vjt-overlay-layer > .vjt-adaptive-layout,
517
+ .vjt-overlay-layer > .vjt-ui-reference {
518
+ width: 100%;
519
+ height: 100%;
520
+ min-width: 0;
521
+ min-height: 0;
522
+ }
523
+
524
+ .vjt-overlay-layer > .vjt-static-text,
525
+ .vjt-overlay-layer > .vjt-md-text {
526
+ align-self: stretch;
527
+ justify-self: stretch;
528
+ }
529
+
530
+ .vjt-tabs {
531
+ display: flex;
532
+ flex-direction: column;
533
+ width: 100%;
534
+ height: 100%;
535
+ min-width: 0;
536
+ min-height: 0;
537
+ }
538
+
539
+ .vjt-tabs-header {
540
+ display: flex;
541
+ gap: 6px;
542
+ padding: 0 0 0 2px;
543
+ border-bottom: 1px solid color-mix(in srgb, var(--vjt-border) 80%, transparent);
544
+ }
545
+
546
+ .vjt-tab-button {
547
+ min-height: 48px;
548
+ padding: 12px 16px;
549
+ border-radius: 14px 14px 0 0;
550
+ border: 1px solid var(--vjt-border);
551
+ background: var(--vjt-surface-muted);
552
+ color: var(--vjt-muted);
553
+ font-size: 16px;
554
+ border-bottom-color: transparent;
555
+ box-shadow: inset 0 -1px 0 color-mix(in srgb, var(--vjt-border) 60%, transparent);
556
+ cursor: pointer;
557
+ }
558
+
559
+ .vjt-tab-button:hover {
560
+ color: var(--vjt-text);
561
+ background: color-mix(in srgb, var(--vjt-surface-muted) 78%, var(--vjt-surface));
562
+ }
563
+
564
+ .vjt-tab-button:disabled {
565
+ opacity: 0.5;
566
+ cursor: not-allowed;
567
+ }
568
+
569
+ .vjt-tab-button.is-active {
570
+ background: var(--vjt-surface);
571
+ color: var(--vjt-text);
572
+ border-bottom-color: var(--vjt-surface);
573
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14);
574
+ }
575
+
576
+ .vjt-tabs-content {
577
+ flex: 1 1 auto;
578
+ min-height: 0;
579
+ padding-top: 14px;
580
+ border-top: 1px solid color-mix(in srgb, var(--vjt-border) 65%, transparent);
581
+ overflow: auto;
582
+ }
583
+
584
+ .vjt-spoiler {
585
+ display: flex;
586
+ flex-direction: column;
587
+ width: 100%;
588
+ min-width: 0;
589
+ border: 1px solid color-mix(in srgb, var(--vjt-border) 75%, transparent);
590
+ border-radius: 10px;
591
+ background: color-mix(in srgb, var(--vjt-surface) 94%, transparent);
592
+ overflow: hidden;
593
+ }
594
+
595
+ .vjt-spoiler-caption {
596
+ display: flex;
597
+ align-items: center;
598
+ gap: 8px;
599
+ width: 100%;
600
+ min-height: 40px;
601
+ padding: 9px 12px;
602
+ border: 0;
603
+ background: transparent;
604
+ color: var(--vjt-text);
605
+ cursor: pointer;
606
+ text-align: left;
607
+ }
608
+
609
+ .vjt-spoiler-caption:disabled {
610
+ opacity: 0.55;
611
+ cursor: not-allowed;
612
+ }
613
+
614
+ .vjt-spoiler-chevron {
615
+ display: inline-flex;
616
+ align-items: center;
617
+ justify-content: center;
618
+ width: 18px;
619
+ height: 18px;
620
+ border-radius: 999px;
621
+ background: color-mix(in srgb, var(--vjt-surface-muted) 85%, transparent);
622
+ color: var(--vjt-accent);
623
+ font-weight: 700;
624
+ font-size: 12px;
625
+ flex: 0 0 18px;
626
+ }
627
+
628
+ .vjt-spoiler-caption-text {
629
+ min-width: 0;
630
+ font-weight: 600;
631
+ }
632
+
633
+ .vjt-spoiler-content {
634
+ padding: 0 0 0;
635
+ min-width: 0;
636
+ min-height: 0;
637
+ }
638
+
639
+ .vjt-spoiler-text {
640
+ white-space: pre-wrap;
641
+ line-height: 1.4;
642
+ }
643
+
644
+ .vjt-splitter {
645
+ width: 100%;
646
+ height: 100%;
647
+ min-width: 8px;
648
+ min-height: 8px;
649
+ background: color-mix(in srgb, var(--vjt-border) 55%, transparent);
650
+ border-radius: 999px;
651
+ cursor: col-resize;
652
+ touch-action: none;
653
+ }
654
+
655
+ .vjt-splitter.is-disabled {
656
+ opacity: 0.5;
657
+ cursor: not-allowed;
658
+ }
659
+
660
+ .vjt-modal-backdrop,
661
+ .vjt-context-menu-backdrop {
662
+ position: fixed;
663
+ inset: 0;
664
+ z-index: 1000;
665
+ }
666
+
667
+ .vjt-modal-backdrop {
668
+ display: flex;
669
+ align-items: center;
670
+ justify-content: center;
671
+ background: rgba(7, 10, 15, 0.56);
672
+ }
673
+
674
+ .vjt-modal-window {
675
+ position: relative;
676
+ display: flex;
677
+ flex-direction: column;
678
+ background: var(--vjt-modal-surface);
679
+ color: var(--vjt-text);
680
+ border: 1px solid var(--vjt-border);
681
+ border-radius: 18px;
682
+ box-shadow: var(--vjt-shadow);
683
+ overflow: hidden;
684
+ }
685
+
686
+ .vjt-modal-body {
687
+ flex: 1 1 auto;
688
+ min-height: 0;
689
+ padding: 18px;
690
+ }
691
+
692
+ .vjt-modal-footer {
693
+ display: flex;
694
+ gap: 10px;
695
+ justify-content: flex-end;
696
+ padding: 14px 18px 18px;
697
+ }
698
+
699
+ .vjt-modal-close {
700
+ position: absolute;
701
+ top: 12px;
702
+ right: 12px;
703
+ display: inline-flex;
704
+ align-items: center;
705
+ justify-content: center;
706
+ width: 32px;
707
+ height: 32px;
708
+ border-radius: 999px;
709
+ border: 1px solid var(--vjt-border);
710
+ background: color-mix(in srgb, var(--vjt-surface-muted) 88%, white);
711
+ color: color-mix(in srgb, var(--vjt-text) 92%, black);
712
+ font-size: 18px;
713
+ line-height: 1;
714
+ font-weight: 700;
715
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
716
+ }
717
+
718
+ .vjt-modal-close--mobile {
719
+ top: 16px;
720
+ right: 16px;
721
+ width: 48px;
722
+ height: 48px;
723
+ font-size: 26px;
724
+ }
725
+
726
+ .vjt-modal-close:disabled,
727
+ .vjt-context-menu-item:disabled,
728
+ .vjt-listbox:disabled,
729
+ .vjt-combobox:disabled {
730
+ opacity: 0.5;
731
+ cursor: not-allowed;
732
+ }
733
+
734
+ .vjt-context-menu {
735
+ position: fixed;
736
+ min-width: 180px;
737
+ padding: 8px;
738
+ border-radius: 14px;
739
+ border: 1px solid var(--vjt-border);
740
+ background: var(--vjt-surface);
741
+ box-shadow: var(--vjt-shadow);
742
+ }
743
+
744
+ .vjt-context-menu-item {
745
+ width: 100%;
746
+ padding: 10px 12px;
747
+ text-align: left;
748
+ border: 0;
749
+ border-radius: 10px;
750
+ background: transparent;
751
+ color: var(--vjt-text);
752
+ }
753
+
754
+ .vjt-context-menu-item:hover {
755
+ background: color-mix(in srgb, var(--vjt-accent) 14%, transparent);
756
+ }