sqlite-hub 0.7.0 → 0.9.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 (45) hide show
  1. package/changelog.md +25 -0
  2. package/docs/DESIGN_GUIDELINES.md +36 -0
  3. package/frontend/index.html +79 -0
  4. package/frontend/js/api.js +67 -0
  5. package/frontend/js/app.js +1401 -921
  6. package/frontend/js/components/connectionCard.js +3 -4
  7. package/frontend/js/components/emptyState.js +4 -4
  8. package/frontend/js/components/modal.js +239 -30
  9. package/frontend/js/components/queryEditor.js +11 -8
  10. package/frontend/js/components/queryHistoryDetail.js +27 -8
  11. package/frontend/js/components/queryHistoryPanel.js +6 -5
  12. package/frontend/js/components/rowEditorPanel.js +84 -58
  13. package/frontend/js/components/sidebar.js +76 -33
  14. package/frontend/js/components/structureGraph.js +629 -715
  15. package/frontend/js/components/tableDesignerEditor.js +9 -8
  16. package/frontend/js/components/tableDesignerSidebar.js +11 -10
  17. package/frontend/js/components/tableDesignerSqlPreview.js +61 -30
  18. package/frontend/js/lib/mediaTaggingDefaults.js +27 -0
  19. package/frontend/js/router.js +81 -71
  20. package/frontend/js/store.js +3095 -2165
  21. package/frontend/js/views/charts.js +68 -40
  22. package/frontend/js/views/connections.js +5 -17
  23. package/frontend/js/views/data.js +40 -27
  24. package/frontend/js/views/editor.js +172 -177
  25. package/frontend/js/views/mediaTagging.js +861 -0
  26. package/frontend/js/views/overview.js +149 -10
  27. package/frontend/js/views/settings.js +2 -2
  28. package/frontend/js/views/structure.js +74 -70
  29. package/frontend/js/views/tableDesigner.js +7 -2
  30. package/frontend/styles/base.css +73 -1
  31. package/frontend/styles/components.css +105 -105
  32. package/frontend/styles/structure-graph.css +19 -82
  33. package/frontend/styles/tokens.css +2 -0
  34. package/frontend/styles/views.css +823 -30
  35. package/package.json +1 -1
  36. package/server/routes/charts.js +4 -1
  37. package/server/routes/data.js +14 -0
  38. package/server/routes/mediaTagging.js +166 -0
  39. package/server/routes/sql.js +1 -0
  40. package/server/server.js +4 -0
  41. package/server/services/sqlite/dataBrowserService.js +25 -0
  42. package/server/services/sqlite/exportService.js +31 -1
  43. package/server/services/sqlite/mediaTaggingService.js +1689 -0
  44. package/server/services/sqlite/overviewService.js +68 -0
  45. package/server/services/storage/appStateStore.js +321 -2
@@ -25,6 +25,27 @@
25
25
  gap: var(--spacing-8);
26
26
  }
27
27
 
28
+ .data-browser-row {
29
+ background: var(--color-surface-lowest);
30
+ }
31
+
32
+ .data-browser-row--even {
33
+ background: var(--color-surface-low);
34
+ }
35
+
36
+ .data-browser-row--odd {
37
+ background: var(--color-surface-lowest);
38
+ }
39
+
40
+ .data-browser-row:hover {
41
+ background: var(--color-surface-high);
42
+ }
43
+
44
+ .data-browser-row.is-selected,
45
+ .data-browser-row.is-selected:hover {
46
+ background: var(--color-surface-bright);
47
+ }
48
+
28
49
  .table-designer-view {
29
50
  display: flex;
30
51
  height: 100%;
@@ -55,6 +76,10 @@
55
76
  flex: 0 0 34%;
56
77
  }
57
78
 
79
+ .table-designer-workspace__bottom.is-collapsed {
80
+ flex: 0 0 auto;
81
+ }
82
+
58
83
  .landing-view {
59
84
  align-items: center;
60
85
  display: flex;
@@ -206,11 +231,13 @@
206
231
  }
207
232
 
208
233
  .charts-detail-shell__header {
209
- align-items: end;
210
234
  display: flex;
211
- flex-wrap: wrap;
235
+ flex-direction: column;
212
236
  gap: var(--spacing-4);
213
- justify-content: space-between;
237
+ }
238
+
239
+ .charts-detail-shell__title {
240
+ min-width: 0;
214
241
  }
215
242
 
216
243
  .charts-detail-shell__controls {
@@ -218,47 +245,49 @@
218
245
  display: flex;
219
246
  flex-wrap: wrap;
220
247
  gap: var(--spacing-3);
248
+ justify-content: space-between;
221
249
  }
222
250
 
223
- .charts-detail-shell__button {
224
- background: var(--color-surface-container);
225
- border: 1px solid rgba(75, 71, 50, 0.2);
226
- color: var(--color-on-surface);
227
- font-family: var(--font-family-mono);
228
- font-size: 0.625rem;
229
- font-weight: 700;
230
- letter-spacing: 0.16em;
231
- padding: 0.75rem 1rem;
232
- }
233
-
234
- .charts-detail-shell__button--primary {
235
- background: var(--color-primary-container);
236
- border-color: transparent;
237
- color: var(--color-on-primary);
251
+ .charts-detail-shell__controls-group {
252
+ align-items: end;
253
+ display: flex;
254
+ flex-wrap: wrap;
255
+ gap: var(--spacing-3);
238
256
  }
239
257
 
240
- .charts-detail-shell__button[disabled] {
241
- cursor: not-allowed;
242
- opacity: 0.5;
258
+ .charts-detail-shell__controls-group--end {
259
+ justify-content: flex-end;
260
+ margin-left: auto;
243
261
  }
244
262
 
245
263
  .charts-height-toggle {
246
264
  background: var(--color-surface-container-low);
247
265
  border: 1px solid rgba(75, 71, 50, 0.18);
248
266
  display: inline-flex;
249
- gap: 0.25rem;
250
- padding: 0.25rem;
267
+ gap: 0;
268
+ height: var(--control-height);
269
+ overflow: hidden;
251
270
  }
252
271
 
253
272
  .charts-height-toggle__button {
273
+ align-items: center;
254
274
  background: transparent;
255
- border: 1px solid transparent;
275
+ border: none;
276
+ box-sizing: border-box;
256
277
  color: var(--color-on-surface-variant);
278
+ display: inline-flex;
257
279
  font-family: var(--font-family-mono);
258
280
  font-size: 0.625rem;
259
281
  font-weight: 700;
282
+ height: var(--control-height);
283
+ justify-content: center;
284
+ line-height: 1;
260
285
  letter-spacing: 0.16em;
261
- padding: 0.55rem 0.8rem;
286
+ padding: 0 1rem;
287
+ }
288
+
289
+ .charts-height-toggle__button + .charts-height-toggle__button {
290
+ border-left: 1px solid rgba(75, 71, 50, 0.18);
262
291
  }
263
292
 
264
293
  .charts-height-toggle__button.is-active {
@@ -310,22 +339,772 @@
310
339
  min-height: var(--query-chart-height);
311
340
  }
312
341
 
313
- .query-chart-card__action {
314
- background: var(--color-surface-container);
342
+ .query-chart-card__results {
343
+ background: var(--color-surface-container-lowest);
344
+ }
345
+
346
+ .media-tagging-view {
347
+ display: flex;
348
+ flex-direction: column;
349
+ height: 100%;
350
+ min-height: 0;
351
+ min-width: 0;
352
+ }
353
+
354
+ .media-tagging-card__body--mapping {
355
+ min-height: 0;
356
+ }
357
+
358
+ .media-tagging-card__footer {
359
+ margin-top: auto;
360
+ padding-top: var(--spacing-4);
361
+ }
362
+
363
+ .media-tagging-created-tags-shell {
364
+ display: flex;
365
+ flex: 1;
366
+ flex-direction: column;
367
+ min-height: 0;
368
+ }
369
+
370
+ .media-tagging-created-tags {
371
+ flex: 1;
372
+ max-height: none;
373
+ min-height: 0;
374
+ }
375
+
376
+ .media-tagging-mapping-list {
377
+ flex: 0 0 auto;
378
+ min-height: auto;
379
+ overflow-y: auto;
380
+ }
381
+
382
+ .media-tagging-shell {
383
+ display: flex;
384
+ flex: 1;
385
+ flex-direction: column;
386
+ gap: var(--spacing-6);
387
+ height: 100%;
388
+ min-height: 0;
389
+ padding: var(--spacing-6);
390
+ }
391
+
392
+ .media-tagging-header {
393
+ border-bottom: 1px solid rgba(75, 71, 50, 0.18);
394
+ padding-bottom: var(--spacing-4);
395
+ }
396
+
397
+ .media-tagging-grid {
398
+ align-content: stretch;
399
+ display: grid;
400
+ flex: 1;
401
+ gap: var(--spacing-5);
402
+ grid-auto-rows: minmax(0, 1fr);
403
+ grid-template-columns: repeat(3, minmax(0, 1fr));
404
+ min-height: 0;
405
+ overflow: hidden;
406
+ }
407
+
408
+ .media-tagging-card {
409
+ background: var(--color-surface-low);
410
+ display: flex;
411
+ flex-direction: column;
412
+ height: 100%;
413
+ min-height: 0;
414
+ overflow: hidden;
415
+ }
416
+
417
+ .media-tagging-card--workflow {
418
+ min-height: 32rem;
419
+ }
420
+
421
+ .media-tagging-card__header {
422
+ align-items: start;
423
+ border-bottom: 1px solid rgba(75, 71, 50, 0.14);
424
+ display: flex;
425
+ flex-wrap: wrap;
426
+ gap: var(--spacing-4);
427
+ justify-content: space-between;
428
+ padding: var(--spacing-5);
429
+ }
430
+
431
+ .media-tagging-card__body {
432
+ display: flex;
433
+ flex: 1;
434
+ flex-direction: column;
435
+ gap: var(--spacing-4);
436
+ min-height: 0;
437
+ padding: var(--spacing-5);
438
+ }
439
+
440
+ .media-tagging-card__body--workflow {
441
+ display: grid;
442
+ gap: var(--spacing-5);
443
+ grid-template-columns: minmax(0, 1.8fr) minmax(18rem, 0.9fr);
444
+ }
445
+
446
+ .media-tagging-card__eyebrow {
447
+ color: var(--color-primary-container);
448
+ font-family: var(--font-family-mono);
449
+ font-size: 0.625rem;
450
+ font-weight: 700;
451
+ letter-spacing: 0.18em;
452
+ text-transform: uppercase;
453
+ }
454
+
455
+ .media-tagging-card__title {
456
+ color: var(--color-primary-container);
457
+ font-family: var(--font-family-headline);
458
+ font-size: 1.15rem;
459
+ font-weight: 900;
460
+ letter-spacing: -0.04em;
461
+ margin-top: var(--spacing-2);
462
+ text-transform: uppercase;
463
+ }
464
+
465
+ .media-tagging-card__copy {
466
+ color: var(--color-on-surface-variant);
467
+ font-size: 0.875rem;
468
+ line-height: 1.7;
469
+ margin-top: var(--spacing-2);
470
+ }
471
+
472
+ .media-tagging-form-grid,
473
+ .media-tagging-query-grid {
474
+ display: grid;
475
+ gap: var(--spacing-4);
476
+ }
477
+
478
+ .media-tagging-form-grid {
479
+ grid-template-columns: repeat(2, minmax(0, 1fr));
480
+ }
481
+
482
+ .media-tagging-query-grid {
483
+ grid-template-rows: repeat(2, minmax(0, 1fr));
484
+ }
485
+
486
+ .media-tagging-field {
487
+ display: flex;
488
+ flex-direction: column;
489
+ gap: 0.45rem;
490
+ }
491
+
492
+ .media-tagging-field__meta {
493
+ display: flex;
494
+ flex-direction: column;
495
+ gap: 0.25rem;
496
+ }
497
+
498
+ .media-tagging-field__label {
499
+ color: var(--color-on-surface);
500
+ font-family: var(--font-family-mono);
501
+ font-size: 0.7rem;
502
+ font-weight: 700;
503
+ letter-spacing: 0.08em;
504
+ text-transform: uppercase;
505
+ }
506
+
507
+ .media-tagging-field__hint {
508
+ color: rgba(229, 226, 225, 0.45);
509
+ font-family: var(--font-family-mono);
510
+ font-size: 0.65rem;
511
+ letter-spacing: 0.06em;
512
+ text-transform: uppercase;
513
+ }
514
+
515
+ .media-tagging-static-field {
516
+ align-items: center;
517
+ background: var(--color-surface-container-lowest);
518
+ border: 1px solid rgba(75, 71, 50, 0.18);
519
+ color: var(--color-on-surface);
520
+ display: flex;
521
+ font-family: var(--font-family-mono);
522
+ font-size: 0.8rem;
523
+ min-height: var(--control-height);
524
+ padding: 0 0.95rem;
525
+ }
526
+
527
+ .media-tagging-textarea {
528
+ background: var(--color-surface-container-lowest);
315
529
  border: 1px solid rgba(75, 71, 50, 0.18);
316
530
  color: var(--color-on-surface);
317
531
  font-family: var(--font-family-mono);
532
+ font-size: 0.8rem;
533
+ min-height: 13rem;
534
+ padding: 0.85rem 0.95rem;
535
+ resize: vertical;
536
+ }
537
+
538
+ .sql-highlight-shell {
539
+ background: var(--color-surface-container-lowest);
540
+ border: 1px solid rgba(75, 71, 50, 0.18);
541
+ min-height: 13rem;
542
+ overflow: hidden;
543
+ }
544
+
545
+ .sql-highlight-shell--media {
546
+ min-height: 13rem;
547
+ }
548
+
549
+ .sql-highlight-shell--tall {
550
+ min-height: 22rem;
551
+ }
552
+
553
+ .sql-highlight-layer {
554
+ min-height: inherit;
555
+ }
556
+
557
+ .sql-highlight-content,
558
+ .sql-highlight-input {
559
+ font-family: var(--font-family-mono);
560
+ font-size: 0.8rem;
561
+ line-height: 1.6;
562
+ padding: 0.85rem 0.95rem;
563
+ }
564
+
565
+ .sql-highlight-content {
566
+ color: var(--color-on-surface);
567
+ }
568
+
569
+ .sql-highlight-input {
570
+ resize: none;
571
+ }
572
+
573
+ .media-tagging-status {
574
+ align-items: end;
575
+ display: flex;
576
+ flex-direction: column;
577
+ gap: 0.35rem;
578
+ }
579
+
580
+ .media-tagging-status__value {
581
+ color: var(--color-primary-container);
582
+ font-family: var(--font-family-headline);
583
+ font-size: 2rem;
584
+ font-weight: 900;
585
+ letter-spacing: -0.04em;
586
+ }
587
+
588
+ .media-tagging-status__label {
589
+ color: rgba(229, 226, 225, 0.5);
590
+ font-family: var(--font-family-mono);
318
591
  font-size: 0.625rem;
319
- font-weight: 700;
320
592
  letter-spacing: 0.14em;
321
- padding: 0.55rem 0.85rem;
593
+ text-transform: uppercase;
322
594
  }
323
595
 
324
- .query-chart-card__results {
596
+ .media-tagging-status--compact {
597
+ align-items: flex-end;
598
+ gap: 0.2rem;
599
+ }
600
+
601
+ .media-tagging-status--compact .media-tagging-status__value {
602
+ font-size: 1.25rem;
603
+ }
604
+
605
+ .media-tagging-mapping-list {
606
+ display: grid;
607
+ gap: var(--spacing-3);
608
+ max-height: 18rem;
609
+ }
610
+
611
+ .media-tagging-mapping-card {
612
+ background: var(--color-surface-container-lowest);
613
+ border: 1px solid rgba(75, 71, 50, 0.16);
614
+ padding: var(--spacing-4);
615
+ }
616
+
617
+ .media-tagging-mapping-card.is-selected {
618
+ border-color: rgba(252, 227, 0, 0.45);
619
+ }
620
+
621
+ .media-tagging-preview {
622
+ display: grid;
623
+ gap: var(--spacing-5);
624
+ grid-template-columns: minmax(0, 1.2fr) minmax(18rem, 1fr);
625
+ min-height: 0;
626
+ }
627
+
628
+ .media-tagging-preview--meta-hidden {
629
+ grid-template-columns: minmax(0, 1fr);
630
+ }
631
+
632
+ .media-tagging-preview--meta-hidden .media-tagging-preview__meta {
633
+ display: none;
634
+ }
635
+
636
+ .media-tagging-preview__media {
637
+ align-items: stretch;
638
+ background:
639
+ radial-gradient(circle at top right, rgba(252, 227, 0, 0.1), transparent 30%),
640
+ linear-gradient(180deg, rgba(32, 31, 31, 0.95), rgba(14, 14, 14, 1));
641
+ border: 1px solid rgba(75, 71, 50, 0.16);
642
+ display: flex;
643
+ flex-direction: column;
644
+ justify-content: center;
645
+ min-height: 26rem;
646
+ overflow: hidden;
647
+ padding: var(--spacing-4);
648
+ position: relative;
649
+ }
650
+
651
+ .media-tagging-preview__media--audio {
652
+ justify-content: flex-start;
653
+ }
654
+
655
+ .media-tagging-preview__media--audio .media-tagging-preview__media-toolbar {
656
+ justify-content: flex-end;
657
+ position: static;
658
+ }
659
+
660
+ .media-tagging-preview__media-toolbar {
661
+ display: flex;
662
+ gap: var(--spacing-3);
663
+ position: absolute;
664
+ right: var(--spacing-4);
665
+ top: var(--spacing-4);
666
+ z-index: 1;
667
+ }
668
+
669
+ .media-tagging-preview__toggle {
670
+ backdrop-filter: blur(8px);
671
+ background: rgba(20, 20, 20, 0.78);
672
+ }
673
+
674
+ .media-tagging-preview__asset {
675
+ flex: 1;
676
+ height: 100%;
677
+ object-fit: contain;
678
+ width: 100%;
679
+ }
680
+
681
+ .media-tagging-audio-preview {
682
+ align-items: center;
683
+ align-self: center;
684
+ background:
685
+ linear-gradient(180deg, rgba(32, 31, 31, 0.96), rgba(14, 14, 14, 0.98)),
686
+ radial-gradient(circle at top left, rgba(252, 227, 0, 0.1), transparent 35%);
687
+ border: 1px solid rgba(75, 71, 50, 0.2);
688
+ box-shadow: var(--shadow-subtle-glow);
689
+ display: grid;
690
+ gap: var(--spacing-5);
691
+ grid-template-columns: auto minmax(0, 1fr);
692
+ margin: auto 0;
693
+ max-width: 42rem;
694
+ padding: var(--spacing-6);
695
+ width: min(100%, 42rem);
696
+ }
697
+
698
+ .media-tagging-audio-preview__icon {
699
+ align-items: center;
700
+ background: rgba(252, 227, 0, 0.08);
701
+ border: 1px solid rgba(252, 227, 0, 0.22);
702
+ color: var(--color-primary-container);
703
+ display: flex;
704
+ height: 5.5rem;
705
+ justify-content: center;
706
+ width: 5.5rem;
707
+ }
708
+
709
+ .media-tagging-audio-preview__icon .material-symbols-outlined {
710
+ font-size: 2.5rem;
711
+ }
712
+
713
+ .media-tagging-audio-preview__content {
714
+ display: flex;
715
+ flex-direction: column;
716
+ gap: var(--spacing-3);
717
+ min-width: 0;
718
+ }
719
+
720
+ .media-tagging-audio-preview__eyebrow {
721
+ color: rgba(229, 226, 225, 0.48);
722
+ font-family: var(--font-family-mono);
723
+ font-size: 0.625rem;
724
+ font-weight: 700;
725
+ letter-spacing: 0.16em;
726
+ text-transform: uppercase;
727
+ }
728
+
729
+ .media-tagging-audio-preview__title {
730
+ color: var(--color-on-surface);
731
+ font-family: var(--font-family-headline);
732
+ font-size: 1.35rem;
733
+ font-weight: 800;
734
+ letter-spacing: -0.03em;
735
+ line-height: 1.2;
736
+ word-break: break-word;
737
+ }
738
+
739
+ .media-tagging-audio-preview__player {
740
+ max-width: 100%;
741
+ width: 100%;
742
+ }
743
+
744
+ .media-tagging-preview__placeholder,
745
+ .media-tagging-preview__empty {
746
+ align-items: center;
747
+ color: rgba(229, 226, 225, 0.4);
748
+ display: flex;
749
+ flex: 1;
750
+ flex-direction: column;
751
+ justify-content: center;
752
+ text-align: center;
753
+ }
754
+
755
+ .media-tagging-preview__meta {
325
756
  background: var(--color-surface-container-lowest);
757
+ border: 1px solid rgba(75, 71, 50, 0.16);
758
+ display: flex;
759
+ flex-direction: column;
760
+ min-height: 0;
761
+ overflow: hidden;
762
+ padding: var(--spacing-5);
763
+ }
764
+
765
+ .media-tagging-preview__meta-header {
766
+ align-items: center;
767
+ display: flex;
768
+ gap: var(--spacing-3);
769
+ justify-content: space-between;
770
+ }
771
+
772
+ .media-tagging-preview__eyebrow {
773
+ color: rgba(229, 226, 225, 0.48);
774
+ font-family: var(--font-family-mono);
775
+ font-size: 0.625rem;
776
+ font-weight: 700;
777
+ letter-spacing: 0.16em;
778
+ text-transform: uppercase;
779
+ }
780
+
781
+ .media-tagging-preview__meta-action {
782
+ flex: 0 0 auto;
783
+ }
784
+
785
+ .media-tagging-preview__metadata {
786
+ border-top: 1px solid rgba(75, 71, 50, 0.14);
787
+ display: flex;
788
+ flex: 1;
789
+ flex-direction: column;
790
+ gap: 0.75rem;
791
+ margin-top: var(--spacing-3);
792
+ min-height: 0;
793
+ overflow-y: auto;
794
+ padding-top: var(--spacing-4);
795
+ }
796
+
797
+ .media-tagging-preview__metadata-row {
798
+ align-items: start;
799
+ display: grid;
800
+ gap: var(--spacing-3);
801
+ grid-template-columns: minmax(6rem, 8rem) minmax(0, 1fr);
802
+ }
803
+
804
+ .media-tagging-preview__metadata-row span:first-child {
805
+ color: rgba(229, 226, 225, 0.5);
806
+ font-family: var(--font-family-mono);
807
+ font-size: 0.65rem;
808
+ letter-spacing: 0.08em;
809
+ text-transform: uppercase;
810
+ }
811
+
812
+ .media-tagging-preview__metadata-row span:last-child {
813
+ color: var(--color-on-surface);
814
+ font-size: 0.8rem;
815
+ line-height: 1.5;
816
+ min-width: 0;
817
+ overflow-wrap: anywhere;
818
+ white-space: normal;
819
+ }
820
+
821
+ .media-tagging-workflow-sidebar {
822
+ display: flex;
823
+ height: 100%;
824
+ flex-direction: column;
825
+ min-height: 0;
826
+ }
827
+
828
+ .media-tagging-tag-panel {
829
+ background: var(--color-surface-container-lowest);
830
+ border: 1px solid rgba(75, 71, 50, 0.16);
831
+ display: flex;
832
+ flex: 1;
833
+ flex-direction: column;
834
+ min-height: 0;
835
+ overflow: hidden;
836
+ }
837
+
838
+ .media-tagging-tag-panel__header,
839
+ .media-tagging-tag-panel__footer {
840
+ padding: var(--spacing-4);
841
+ }
842
+
843
+ .media-tagging-tag-panel__header {
844
+ border-bottom: 1px solid rgba(75, 71, 50, 0.14);
845
+ }
846
+
847
+ .media-tagging-tag-panel__header-row {
848
+ align-items: flex-start;
849
+ display: flex;
850
+ gap: var(--spacing-4);
851
+ justify-content: space-between;
852
+ }
853
+
854
+ .media-tagging-tag-panel__footer {
855
+ border-top: 1px solid rgba(75, 71, 50, 0.14);
856
+ display: flex;
857
+ flex-direction: column;
858
+ gap: var(--spacing-3);
859
+ }
860
+
861
+ .media-tagging-tag-list {
862
+ align-content: start;
863
+ display: grid;
864
+ flex: 1;
865
+ gap: var(--spacing-3);
866
+ grid-auto-rows: max-content;
867
+ min-height: 0;
868
+ overflow-y: auto;
869
+ padding: var(--spacing-4);
870
+ }
871
+
872
+ .media-tagging-created-tags-shell {
873
+ border-top: 1px solid rgba(75, 71, 50, 0.14);
874
+ margin-top: var(--spacing-2);
875
+ padding-top: var(--spacing-4);
876
+ overflow: hidden;
877
+ }
878
+
879
+ .media-tagging-created-tags-frame {
880
+ display: flex;
881
+ flex: 1;
882
+ min-height: 0;
883
+ overflow: hidden;
884
+ }
885
+
886
+ .media-tagging-created-tags {
887
+ background: var(--color-surface-container-lowest);
888
+ border: 1px solid rgba(75, 71, 50, 0.16);
889
+ display: flex;
890
+ flex: 1;
891
+ flex-direction: column;
892
+ gap: var(--spacing-2);
893
+ max-height: none;
894
+ min-height: 0;
895
+ overflow-y: auto;
896
+ padding: var(--spacing-3);
897
+ }
898
+
899
+ .media-tagging-created-tag {
900
+ align-items: center;
901
+ background: rgba(252, 227, 0, 0.05);
902
+ border: 1px solid rgba(252, 227, 0, 0.12);
903
+ display: flex;
904
+ gap: var(--spacing-3);
905
+ justify-content: space-between;
906
+ padding: 0.7rem 0.8rem;
907
+ }
908
+
909
+ .media-tagging-created-tag__content {
910
+ flex: 1;
911
+ min-width: 0;
912
+ }
913
+
914
+ .media-tagging-created-tag__label {
915
+ color: var(--color-on-surface);
916
+ font-size: 0.85rem;
917
+ line-height: 1.45;
918
+ word-break: break-word;
919
+ }
920
+
921
+ .media-tagging-created-tag__meta {
922
+ display: flex;
923
+ flex-wrap: wrap;
924
+ gap: 0.4rem;
925
+ margin-top: 0.45rem;
926
+ }
927
+
928
+ .media-tagging-created-tag__badge,
929
+ .media-tagging-tag-option__badge {
930
+ align-items: center;
931
+ background: rgba(252, 227, 0, 0.1);
932
+ border: 1px solid rgba(252, 227, 0, 0.18);
933
+ color: var(--color-primary-container);
934
+ display: inline-flex;
935
+ font-family: var(--font-family-mono);
936
+ font-size: 0.625rem;
937
+ font-weight: 700;
938
+ letter-spacing: 0.1em;
939
+ line-height: 1;
940
+ min-height: 1.4rem;
941
+ padding: 0.25rem 0.45rem;
942
+ text-transform: uppercase;
943
+ }
944
+
945
+ .media-tagging-created-tag__remove {
946
+ flex: 0 0 auto;
947
+ align-items: center;
948
+ display: inline-flex;
949
+ height: 2.4rem;
950
+ justify-content: center;
951
+ min-width: 2.4rem;
952
+ padding: 0;
953
+ }
954
+
955
+ .media-tagging-tag-option {
956
+ align-items: start;
957
+ background: rgba(252, 227, 0, 0.03);
958
+ border: 1px solid rgba(75, 71, 50, 0.18);
959
+ border-radius: 0.25rem;
960
+ cursor: pointer;
961
+ display: grid;
962
+ gap: var(--spacing-3);
963
+ grid-template-columns: minmax(0, 1fr) auto;
964
+ position: relative;
965
+ padding: 0.85rem 0.95rem;
966
+ transition:
967
+ border-color var(--transition-fast),
968
+ background-color var(--transition-fast),
969
+ transform var(--transition-fast);
970
+ }
971
+
972
+ .media-tagging-tag-option:hover {
973
+ border-color: rgba(252, 227, 0, 0.28);
974
+ background: rgba(252, 227, 0, 0.05);
975
+ transform: translateY(-1px);
976
+ }
977
+
978
+ .media-tagging-tag-option.is-selected {
979
+ background: rgba(252, 227, 0, 0.09);
980
+ border-color: rgba(252, 227, 0, 0.34);
981
+ box-shadow: inset 0 0 0 1px rgba(252, 227, 0, 0.14);
982
+ }
983
+
984
+ .media-tagging-tag-option__checkbox {
985
+ height: 1px;
986
+ left: 0;
987
+ opacity: 0;
988
+ pointer-events: none;
989
+ position: absolute;
990
+ top: 0;
991
+ width: 1px;
992
+ }
993
+
994
+ .media-tagging-tag-option__content {
995
+ min-width: 0;
996
+ }
997
+
998
+ .media-tagging-tag-option__text {
999
+ color: var(--color-on-surface);
1000
+ font-size: 0.85rem;
1001
+ font-weight: 600;
1002
+ line-height: 1.45;
1003
+ word-break: break-word;
1004
+ }
1005
+
1006
+ .media-tagging-tag-option__badge {
1007
+ align-self: center;
1008
+ justify-self: end;
1009
+ max-width: 12rem;
1010
+ overflow: hidden;
1011
+ text-overflow: ellipsis;
1012
+ white-space: nowrap;
1013
+ }
1014
+
1015
+ .media-tagging-issues {
1016
+ display: grid;
1017
+ gap: var(--spacing-3);
1018
+ }
1019
+
1020
+ .media-tagging-issue {
1021
+ background: rgba(252, 227, 0, 0.06);
1022
+ border: 1px solid rgba(252, 227, 0, 0.15);
1023
+ color: var(--color-on-surface);
1024
+ font-size: 0.875rem;
1025
+ line-height: 1.65;
1026
+ padding: var(--spacing-4);
1027
+ padding-right: calc(var(--spacing-4) + 1.8rem);
1028
+ position: relative;
1029
+ }
1030
+
1031
+ .media-tagging-issue.is-error {
1032
+ background: rgba(147, 0, 10, 0.14);
1033
+ border-color: rgba(255, 180, 171, 0.22);
1034
+ }
1035
+
1036
+ .media-tagging-issue.is-success {
1037
+ background: rgba(0, 220, 225, 0.08);
1038
+ border-color: rgba(0, 220, 225, 0.18);
1039
+ }
1040
+
1041
+ .media-tagging-issue__code {
1042
+ color: var(--color-primary-container);
1043
+ font-family: var(--font-family-mono);
1044
+ font-size: 0.7rem;
1045
+ font-weight: 700;
1046
+ letter-spacing: 0.14em;
1047
+ text-transform: uppercase;
1048
+ }
1049
+
1050
+ .media-tagging-issue__dismiss {
1051
+ align-items: center;
1052
+ background: transparent;
1053
+ border: 0;
1054
+ color: rgba(229, 226, 225, 0.45);
1055
+ cursor: pointer;
1056
+ display: inline-flex;
1057
+ font-size: 1rem;
1058
+ font-weight: 700;
1059
+ height: 1.5rem;
1060
+ justify-content: center;
1061
+ line-height: 1;
1062
+ padding: 0;
1063
+ position: absolute;
1064
+ right: 0.75rem;
1065
+ top: 0.75rem;
1066
+ transition:
1067
+ color var(--transition-fast),
1068
+ transform var(--transition-fast);
1069
+ width: 1.5rem;
1070
+ }
1071
+
1072
+ .media-tagging-issue__dismiss:hover,
1073
+ .media-tagging-issue__dismiss:focus-visible {
1074
+ color: var(--color-on-surface);
1075
+ transform: scale(1.08);
1076
+ }
1077
+
1078
+ .media-tagging-inline-warning {
1079
+ background: rgba(252, 227, 0, 0.08);
1080
+ border: 1px solid rgba(252, 227, 0, 0.2);
1081
+ color: var(--color-on-surface);
1082
+ font-size: 0.85rem;
1083
+ line-height: 1.6;
1084
+ padding: var(--spacing-4);
326
1085
  }
327
1086
 
328
1087
  @media (max-width: 1023px) {
1088
+ .media-tagging-grid {
1089
+ flex: 0 0 auto;
1090
+ grid-auto-rows: auto;
1091
+ }
1092
+
1093
+ .media-tagging-card {
1094
+ height: auto;
1095
+ }
1096
+
1097
+ .media-tagging-created-tags-shell,
1098
+ .media-tagging-mapping-list {
1099
+ flex: 0 0 auto;
1100
+ }
1101
+
1102
+ .media-tagging-created-tags,
1103
+ .media-tagging-mapping-list,
1104
+ .media-tagging-tag-list {
1105
+ max-height: 14rem;
1106
+ }
1107
+
329
1108
  .charts-view {
330
1109
  flex-direction: column;
331
1110
  }
@@ -351,4 +1130,18 @@
351
1130
  .table-designer-workspace__bottom {
352
1131
  flex-basis: 280px;
353
1132
  }
1133
+
1134
+ .media-tagging-grid,
1135
+ .media-tagging-card__body--workflow,
1136
+ .media-tagging-preview,
1137
+ .media-tagging-query-grid,
1138
+ .media-tagging-form-grid {
1139
+ grid-template-columns: 1fr;
1140
+ }
1141
+
1142
+ .media-tagging-audio-preview {
1143
+ grid-template-columns: 1fr;
1144
+ justify-items: center;
1145
+ text-align: center;
1146
+ }
354
1147
  }