sqlite-hub 0.8.7 → 0.9.1

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 (34) hide show
  1. package/changelog.md +16 -0
  2. package/frontend/index.html +1 -1
  3. package/frontend/js/api.js +67 -0
  4. package/frontend/js/app.js +1554 -999
  5. package/frontend/js/components/modal.js +208 -3
  6. package/frontend/js/components/queryEditor.js +9 -4
  7. package/frontend/js/components/queryHistoryDetail.js +34 -12
  8. package/frontend/js/components/queryHistoryPanel.js +8 -11
  9. package/frontend/js/components/rowEditorPanel.js +26 -5
  10. package/frontend/js/components/sidebar.js +49 -5
  11. package/frontend/js/components/structureGraph.js +614 -632
  12. package/frontend/js/components/tableDesignerSqlPreview.js +24 -25
  13. package/frontend/js/lib/mediaTaggingDefaults.js +27 -0
  14. package/frontend/js/router.js +81 -71
  15. package/frontend/js/store.js +3140 -2179
  16. package/frontend/js/views/charts.js +2 -2
  17. package/frontend/js/views/data.js +28 -14
  18. package/frontend/js/views/editor.js +172 -177
  19. package/frontend/js/views/mediaTagging.js +931 -0
  20. package/frontend/styles/base.css +11 -1
  21. package/frontend/styles/components.css +54 -6
  22. package/frontend/styles/views.css +910 -0
  23. package/package.json +1 -1
  24. package/server/routes/charts.js +4 -1
  25. package/server/routes/data.js +14 -0
  26. package/server/routes/mediaTagging.js +166 -0
  27. package/server/routes/sql.js +1 -0
  28. package/server/server.js +4 -0
  29. package/server/services/sqlite/dataBrowserService.js +25 -0
  30. package/server/services/sqlite/exportService.js +31 -1
  31. package/server/services/sqlite/mediaTaggingService.js +1689 -0
  32. package/server/services/storage/appStateStore.js +325 -3
  33. package/server/services/storage/queryHistoryUtils.js +165 -2
  34. package/shortkeys.md +5 -0
@@ -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%;
@@ -322,7 +343,847 @@
322
343
  background: var(--color-surface-container-lowest);
323
344
  }
324
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-grid {
393
+ align-content: stretch;
394
+ display: grid;
395
+ flex: 1;
396
+ gap: var(--spacing-5);
397
+ grid-auto-rows: minmax(0, 1fr);
398
+ grid-template-columns: repeat(3, minmax(0, 1fr));
399
+ min-height: 0;
400
+ overflow: hidden;
401
+ }
402
+
403
+ .media-tagging-card {
404
+ background: var(--color-surface-low);
405
+ display: flex;
406
+ flex-direction: column;
407
+ height: 100%;
408
+ min-height: 0;
409
+ overflow: hidden;
410
+ }
411
+
412
+ .media-tagging-card--workflow {
413
+ flex: 1;
414
+ min-height: 32rem;
415
+ }
416
+
417
+ .media-tagging-card__header {
418
+ align-items: start;
419
+ border-bottom: 1px solid rgba(75, 71, 50, 0.14);
420
+ display: flex;
421
+ flex-wrap: wrap;
422
+ gap: var(--spacing-4);
423
+ justify-content: space-between;
424
+ padding: var(--spacing-5);
425
+ }
426
+
427
+ .media-tagging-card__body {
428
+ display: flex;
429
+ flex: 1;
430
+ flex-direction: column;
431
+ gap: var(--spacing-4);
432
+ min-height: 0;
433
+ padding: var(--spacing-5);
434
+ }
435
+
436
+ .media-tagging-card__body--workflow {
437
+ display: grid;
438
+ gap: var(--spacing-5);
439
+ grid-template-columns: minmax(0, 1.8fr) minmax(18rem, 0.9fr);
440
+ }
441
+
442
+ .media-tagging-card__eyebrow {
443
+ color: var(--color-primary-container);
444
+ font-family: var(--font-family-mono);
445
+ font-size: 0.625rem;
446
+ font-weight: 700;
447
+ letter-spacing: 0.18em;
448
+ text-transform: uppercase;
449
+ }
450
+
451
+ .media-tagging-card__title {
452
+ color: var(--color-primary-container);
453
+ font-family: var(--font-family-headline);
454
+ font-size: 1.15rem;
455
+ font-weight: 900;
456
+ letter-spacing: -0.04em;
457
+ margin-top: var(--spacing-2);
458
+ text-transform: uppercase;
459
+ }
460
+
461
+ .media-tagging-card__copy {
462
+ color: var(--color-on-surface-variant);
463
+ font-size: 0.875rem;
464
+ line-height: 1.7;
465
+ margin-top: var(--spacing-2);
466
+ }
467
+
468
+ .media-tagging-form-grid,
469
+ .media-tagging-query-grid {
470
+ display: grid;
471
+ gap: var(--spacing-4);
472
+ }
473
+
474
+ .media-tagging-form-grid {
475
+ grid-template-columns: repeat(2, minmax(0, 1fr));
476
+ }
477
+
478
+ .media-tagging-query-grid {
479
+ grid-template-rows: repeat(2, minmax(0, 1fr));
480
+ }
481
+
482
+ .media-tagging-field {
483
+ display: flex;
484
+ flex-direction: column;
485
+ gap: 0.45rem;
486
+ }
487
+
488
+ .media-tagging-field__meta {
489
+ display: flex;
490
+ flex-direction: column;
491
+ gap: 0.25rem;
492
+ }
493
+
494
+ .media-tagging-field__label {
495
+ color: var(--color-on-surface);
496
+ font-family: var(--font-family-mono);
497
+ font-size: 0.7rem;
498
+ font-weight: 700;
499
+ letter-spacing: 0.08em;
500
+ text-transform: uppercase;
501
+ }
502
+
503
+ .media-tagging-field__hint {
504
+ color: rgba(229, 226, 225, 0.45);
505
+ font-family: var(--font-family-mono);
506
+ font-size: 0.65rem;
507
+ letter-spacing: 0.06em;
508
+ text-transform: uppercase;
509
+ }
510
+
511
+ .media-tagging-static-field {
512
+ align-items: center;
513
+ background: var(--color-surface-container-lowest);
514
+ border: 1px solid rgba(75, 71, 50, 0.18);
515
+ color: var(--color-on-surface);
516
+ display: flex;
517
+ font-family: var(--font-family-mono);
518
+ font-size: 0.8rem;
519
+ min-height: var(--control-height);
520
+ padding: 0 0.95rem;
521
+ }
522
+
523
+ .media-tagging-textarea {
524
+ background: var(--color-surface-container-lowest);
525
+ border: 1px solid rgba(75, 71, 50, 0.18);
526
+ color: var(--color-on-surface);
527
+ font-family: var(--font-family-mono);
528
+ font-size: 0.8rem;
529
+ min-height: 13rem;
530
+ padding: 0.85rem 0.95rem;
531
+ resize: vertical;
532
+ }
533
+
534
+ .sql-highlight-shell {
535
+ background: var(--color-surface-container-lowest);
536
+ border: 1px solid rgba(75, 71, 50, 0.18);
537
+ min-height: 13rem;
538
+ overflow: hidden;
539
+ }
540
+
541
+ .sql-highlight-shell--media {
542
+ min-height: 13rem;
543
+ }
544
+
545
+ .sql-highlight-shell--tall {
546
+ min-height: 22rem;
547
+ }
548
+
549
+ .sql-highlight-layer {
550
+ min-height: inherit;
551
+ }
552
+
553
+ .sql-highlight-content,
554
+ .sql-highlight-input {
555
+ font-family: var(--font-family-mono);
556
+ font-size: 0.8rem;
557
+ line-height: 1.6;
558
+ padding: 0.85rem 0.95rem;
559
+ }
560
+
561
+ .sql-highlight-content {
562
+ color: var(--color-on-surface);
563
+ }
564
+
565
+ .sql-highlight-input {
566
+ resize: none;
567
+ }
568
+
569
+ .media-tagging-status {
570
+ align-items: end;
571
+ display: flex;
572
+ flex-direction: column;
573
+ gap: 0.35rem;
574
+ }
575
+
576
+ .media-tagging-status__value {
577
+ color: var(--color-primary-container);
578
+ font-family: var(--font-family-headline);
579
+ font-size: 2rem;
580
+ font-weight: 900;
581
+ letter-spacing: -0.04em;
582
+ }
583
+
584
+ .media-tagging-status__label {
585
+ color: rgba(229, 226, 225, 0.5);
586
+ font-family: var(--font-family-mono);
587
+ font-size: 0.625rem;
588
+ letter-spacing: 0.14em;
589
+ text-transform: uppercase;
590
+ }
591
+
592
+ .media-tagging-status--compact {
593
+ align-items: flex-end;
594
+ gap: 0.2rem;
595
+ }
596
+
597
+ .media-tagging-status--compact .media-tagging-status__value {
598
+ font-size: 1.25rem;
599
+ }
600
+
601
+ .media-tagging-status--preview {
602
+ align-items: flex-start;
603
+ min-width: max-content;
604
+ }
605
+
606
+ .media-tagging-mapping-list {
607
+ display: grid;
608
+ gap: var(--spacing-3);
609
+ max-height: 18rem;
610
+ }
611
+
612
+ .media-tagging-mapping-card {
613
+ background: var(--color-surface-container-lowest);
614
+ border: 1px solid rgba(75, 71, 50, 0.16);
615
+ padding: var(--spacing-4);
616
+ }
617
+
618
+ .media-tagging-mapping-card.is-selected {
619
+ border-color: rgba(252, 227, 0, 0.45);
620
+ }
621
+
622
+ .media-tagging-preview {
623
+ display: grid;
624
+ gap: var(--spacing-5);
625
+ grid-template-columns: minmax(0, 1.2fr) minmax(18rem, 1fr);
626
+ min-height: 0;
627
+ }
628
+
629
+ .media-tagging-preview--meta-hidden {
630
+ grid-template-columns: minmax(0, 1fr);
631
+ }
632
+
633
+ .media-tagging-preview--meta-hidden .media-tagging-preview__meta {
634
+ display: none;
635
+ }
636
+
637
+ .media-tagging-preview__media {
638
+ align-items: stretch;
639
+ background:
640
+ radial-gradient(circle at top right, rgba(252, 227, 0, 0.1), transparent 30%),
641
+ linear-gradient(180deg, rgba(32, 31, 31, 0.95), rgba(14, 14, 14, 1));
642
+ border: 1px solid rgba(75, 71, 50, 0.16);
643
+ display: flex;
644
+ flex-direction: column;
645
+ justify-content: flex-start;
646
+ min-height: 26rem;
647
+ overflow: hidden;
648
+ padding: var(--spacing-4);
649
+ position: relative;
650
+ }
651
+
652
+ .media-tagging-preview__media--audio {
653
+ justify-content: flex-start;
654
+ }
655
+
656
+ .media-tagging-preview__media--audio .media-tagging-preview__media-toolbar {
657
+ justify-content: space-between;
658
+ }
659
+
660
+ .media-tagging-preview__media-toolbar {
661
+ align-items: center;
662
+ border-bottom: 1px solid rgba(75, 71, 50, 0.18);
663
+ display: flex;
664
+ flex: 0 0 auto;
665
+ flex-wrap: wrap;
666
+ gap: var(--spacing-3);
667
+ justify-content: space-between;
668
+ margin: calc(var(--spacing-4) * -1) calc(var(--spacing-4) * -1) var(--spacing-4);
669
+ min-height: calc(var(--control-height) + var(--spacing-4));
670
+ padding: var(--spacing-2) var(--spacing-4);
671
+ width: calc(100% + (var(--spacing-4) * 2));
672
+ }
673
+
674
+ .media-tagging-preview__toolbar-actions {
675
+ display: flex;
676
+ flex-wrap: wrap;
677
+ gap: var(--spacing-3);
678
+ justify-content: flex-end;
679
+ margin-left: auto;
680
+ }
681
+
682
+ .media-tagging-preview__asset-shell {
683
+ align-items: center;
684
+ display: flex;
685
+ flex: 1;
686
+ justify-content: center;
687
+ min-height: 0;
688
+ overflow: hidden;
689
+ width: 100%;
690
+ }
691
+
692
+ .media-tagging-preview__rotation-controls {
693
+ display: flex;
694
+ gap: var(--spacing-2);
695
+ }
696
+
697
+ .media-tagging-preview__icon-button {
698
+ backdrop-filter: blur(8px);
699
+ background: rgba(20, 20, 20, 0.78);
700
+ min-width: var(--control-height);
701
+ padding: 0;
702
+ width: var(--control-height);
703
+ }
704
+
705
+ .media-tagging-preview__toggle {
706
+ backdrop-filter: blur(8px);
707
+ background: rgba(20, 20, 20, 0.78);
708
+ }
709
+
710
+ .media-tagging-preview__asset {
711
+ flex: 1;
712
+ height: 100%;
713
+ min-height: 0;
714
+ object-fit: contain;
715
+ transform: rotate(var(--media-tagging-preview-rotation, 0deg));
716
+ transform-origin: center;
717
+ transition: transform var(--transition-standard);
718
+ width: 100%;
719
+ }
720
+
721
+ .media-tagging-preview__asset.is-rotated-quarter {
722
+ height: min(100%, 72vw);
723
+ width: min(100%, 72vh);
724
+ }
725
+
726
+ .media-tagging-audio-preview {
727
+ align-items: center;
728
+ align-self: center;
729
+ background:
730
+ linear-gradient(180deg, rgba(32, 31, 31, 0.96), rgba(14, 14, 14, 0.98)),
731
+ radial-gradient(circle at top left, rgba(252, 227, 0, 0.1), transparent 35%);
732
+ border: 1px solid rgba(75, 71, 50, 0.2);
733
+ box-shadow: var(--shadow-subtle-glow);
734
+ display: grid;
735
+ gap: var(--spacing-5);
736
+ grid-template-columns: auto minmax(0, 1fr);
737
+ margin: auto 0;
738
+ max-width: 42rem;
739
+ padding: var(--spacing-6);
740
+ width: min(100%, 42rem);
741
+ }
742
+
743
+ .media-tagging-audio-preview__icon {
744
+ align-items: center;
745
+ background: rgba(252, 227, 0, 0.08);
746
+ border: 1px solid rgba(252, 227, 0, 0.22);
747
+ color: var(--color-primary-container);
748
+ display: flex;
749
+ height: 5.5rem;
750
+ justify-content: center;
751
+ width: 5.5rem;
752
+ }
753
+
754
+ .media-tagging-audio-preview__icon .material-symbols-outlined {
755
+ font-size: 2.5rem;
756
+ }
757
+
758
+ .media-tagging-audio-preview__content {
759
+ display: flex;
760
+ flex-direction: column;
761
+ gap: var(--spacing-3);
762
+ min-width: 0;
763
+ }
764
+
765
+ .media-tagging-audio-preview__eyebrow {
766
+ color: rgba(229, 226, 225, 0.48);
767
+ font-family: var(--font-family-mono);
768
+ font-size: 0.625rem;
769
+ font-weight: 700;
770
+ letter-spacing: 0.16em;
771
+ text-transform: uppercase;
772
+ }
773
+
774
+ .media-tagging-audio-preview__title {
775
+ color: var(--color-on-surface);
776
+ font-family: var(--font-family-headline);
777
+ font-size: 1.35rem;
778
+ font-weight: 800;
779
+ letter-spacing: -0.03em;
780
+ line-height: 1.2;
781
+ word-break: break-word;
782
+ }
783
+
784
+ .media-tagging-audio-preview__player {
785
+ max-width: 100%;
786
+ width: 100%;
787
+ }
788
+
789
+ .media-tagging-preview__placeholder,
790
+ .media-tagging-preview__empty {
791
+ align-items: center;
792
+ color: rgba(229, 226, 225, 0.4);
793
+ display: flex;
794
+ flex: 1;
795
+ flex-direction: column;
796
+ justify-content: center;
797
+ text-align: center;
798
+ }
799
+
800
+ .media-tagging-preview__meta {
801
+ background: var(--color-surface-container-lowest);
802
+ border: 1px solid rgba(75, 71, 50, 0.16);
803
+ display: flex;
804
+ flex-direction: column;
805
+ min-height: 0;
806
+ overflow: hidden;
807
+ padding: var(--spacing-5);
808
+ }
809
+
810
+ .media-tagging-preview__meta-header {
811
+ align-items: center;
812
+ display: flex;
813
+ flex-wrap: wrap;
814
+ gap: var(--spacing-3);
815
+ justify-content: space-between;
816
+ }
817
+
818
+ .media-tagging-preview__eyebrow {
819
+ color: rgba(229, 226, 225, 0.48);
820
+ font-family: var(--font-family-mono);
821
+ font-size: 0.625rem;
822
+ font-weight: 700;
823
+ letter-spacing: 0.16em;
824
+ text-transform: uppercase;
825
+ }
826
+
827
+ .media-tagging-preview__meta-action {
828
+ flex: 0 0 auto;
829
+ }
830
+
831
+ .media-tagging-preview__meta-actions {
832
+ display: flex;
833
+ flex-wrap: wrap;
834
+ gap: var(--spacing-2);
835
+ justify-content: flex-end;
836
+ }
837
+
838
+ .media-tagging-preview__metadata {
839
+ border-top: 1px solid rgba(75, 71, 50, 0.14);
840
+ display: flex;
841
+ flex: 1;
842
+ flex-direction: column;
843
+ gap: 0.75rem;
844
+ margin-top: var(--spacing-3);
845
+ min-height: 0;
846
+ overflow-y: auto;
847
+ padding-top: var(--spacing-4);
848
+ }
849
+
850
+ .media-tagging-preview__metadata-row {
851
+ align-items: start;
852
+ display: grid;
853
+ gap: var(--spacing-3);
854
+ grid-template-columns: minmax(6rem, 8rem) minmax(0, 1fr);
855
+ }
856
+
857
+ .media-tagging-preview__metadata-row span:first-child {
858
+ color: rgba(229, 226, 225, 0.5);
859
+ font-family: var(--font-family-mono);
860
+ font-size: 0.65rem;
861
+ letter-spacing: 0.08em;
862
+ text-transform: uppercase;
863
+ }
864
+
865
+ .media-tagging-preview__metadata-row span:last-child {
866
+ color: var(--color-on-surface);
867
+ font-size: 0.8rem;
868
+ line-height: 1.5;
869
+ min-width: 0;
870
+ overflow-wrap: anywhere;
871
+ white-space: normal;
872
+ }
873
+
874
+ .media-tagging-workflow-sidebar {
875
+ display: flex;
876
+ height: 100%;
877
+ flex-direction: column;
878
+ min-height: 0;
879
+ }
880
+
881
+ .media-tagging-tag-panel {
882
+ background: var(--color-surface-container-lowest);
883
+ border: 1px solid rgba(75, 71, 50, 0.16);
884
+ display: flex;
885
+ flex: 1;
886
+ flex-direction: column;
887
+ min-height: 0;
888
+ overflow: hidden;
889
+ }
890
+
891
+ .media-tagging-tag-panel__header,
892
+ .media-tagging-tag-panel__footer {
893
+ padding: var(--spacing-4);
894
+ }
895
+
896
+ .media-tagging-tag-panel__header {
897
+ border-bottom: 1px solid rgba(75, 71, 50, 0.14);
898
+ }
899
+
900
+ .media-tagging-tag-panel__header-row {
901
+ align-items: flex-start;
902
+ display: flex;
903
+ gap: var(--spacing-4);
904
+ justify-content: space-between;
905
+ }
906
+
907
+ .media-tagging-tag-panel__footer {
908
+ border-top: 1px solid rgba(75, 71, 50, 0.14);
909
+ display: flex;
910
+ flex-direction: column;
911
+ gap: var(--spacing-3);
912
+ }
913
+
914
+ .media-tagging-tag-panel__footer-main {
915
+ align-items: center;
916
+ display: flex;
917
+ gap: var(--spacing-3);
918
+ justify-content: space-between;
919
+ }
920
+
921
+ .media-tagging-tag-panel__remaining {
922
+ color: rgba(205, 199, 171, 0.45);
923
+ flex: 1 1 auto;
924
+ font-family: var(--font-family-mono);
925
+ font-size: 0.6875rem;
926
+ letter-spacing: 0.14em;
927
+ min-width: 0;
928
+ text-transform: uppercase;
929
+ }
930
+
931
+ .media-tagging-tag-panel__actions {
932
+ align-items: center;
933
+ display: flex;
934
+ flex: 0 0 auto;
935
+ flex-wrap: wrap;
936
+ gap: var(--spacing-3);
937
+ justify-content: flex-end;
938
+ }
939
+
940
+ .media-tagging-tag-list {
941
+ align-content: start;
942
+ display: grid;
943
+ flex: 1;
944
+ gap: var(--spacing-3);
945
+ grid-auto-rows: max-content;
946
+ min-height: 0;
947
+ overflow-y: auto;
948
+ padding: var(--spacing-4);
949
+ }
950
+
951
+ .media-tagging-created-tags-shell {
952
+ border-top: 1px solid rgba(75, 71, 50, 0.14);
953
+ margin-top: var(--spacing-2);
954
+ padding-top: var(--spacing-4);
955
+ overflow: hidden;
956
+ }
957
+
958
+ .media-tagging-created-tags-frame {
959
+ display: flex;
960
+ flex: 1;
961
+ min-height: 0;
962
+ overflow: hidden;
963
+ }
964
+
965
+ .media-tagging-created-tags {
966
+ background: var(--color-surface-container-lowest);
967
+ border: 1px solid rgba(75, 71, 50, 0.16);
968
+ display: flex;
969
+ flex: 1;
970
+ flex-direction: column;
971
+ gap: var(--spacing-2);
972
+ max-height: none;
973
+ min-height: 0;
974
+ overflow-y: auto;
975
+ padding: var(--spacing-3);
976
+ }
977
+
978
+ .media-tagging-created-tag {
979
+ align-items: center;
980
+ background: rgba(252, 227, 0, 0.05);
981
+ border: 1px solid rgba(252, 227, 0, 0.12);
982
+ display: flex;
983
+ gap: var(--spacing-3);
984
+ justify-content: space-between;
985
+ padding: 0.7rem 0.8rem;
986
+ }
987
+
988
+ .media-tagging-created-tag__content {
989
+ flex: 1;
990
+ min-width: 0;
991
+ }
992
+
993
+ .media-tagging-created-tag__label {
994
+ color: var(--color-on-surface);
995
+ font-size: 0.85rem;
996
+ line-height: 1.45;
997
+ word-break: break-word;
998
+ }
999
+
1000
+ .media-tagging-created-tag__meta {
1001
+ display: flex;
1002
+ flex-wrap: wrap;
1003
+ gap: 0.4rem;
1004
+ margin-top: 0.45rem;
1005
+ }
1006
+
1007
+ .media-tagging-created-tag__badge,
1008
+ .media-tagging-tag-option__badge {
1009
+ align-items: center;
1010
+ background: rgba(252, 227, 0, 0.1);
1011
+ border: 1px solid rgba(252, 227, 0, 0.18);
1012
+ color: var(--color-primary-container);
1013
+ display: inline-flex;
1014
+ font-family: var(--font-family-mono);
1015
+ font-size: 0.625rem;
1016
+ font-weight: 700;
1017
+ letter-spacing: 0.1em;
1018
+ line-height: 1;
1019
+ min-height: 1.4rem;
1020
+ padding: 0.25rem 0.45rem;
1021
+ text-transform: uppercase;
1022
+ }
1023
+
1024
+ .media-tagging-created-tag__remove {
1025
+ flex: 0 0 auto;
1026
+ align-items: center;
1027
+ display: inline-flex;
1028
+ height: 2.4rem;
1029
+ justify-content: center;
1030
+ min-width: 2.4rem;
1031
+ padding: 0;
1032
+ }
1033
+
1034
+ .media-tagging-tag-option {
1035
+ align-items: start;
1036
+ background: rgba(252, 227, 0, 0.03);
1037
+ border: 1px solid rgba(75, 71, 50, 0.18);
1038
+ border-radius: 0.25rem;
1039
+ cursor: pointer;
1040
+ display: grid;
1041
+ gap: var(--spacing-3);
1042
+ grid-template-columns: minmax(0, 1fr) auto;
1043
+ position: relative;
1044
+ padding: 0.85rem 0.95rem;
1045
+ transition:
1046
+ border-color var(--transition-fast),
1047
+ background-color var(--transition-fast),
1048
+ transform var(--transition-fast);
1049
+ }
1050
+
1051
+ .media-tagging-tag-option:hover {
1052
+ border-color: rgba(252, 227, 0, 0.28);
1053
+ background: rgba(252, 227, 0, 0.05);
1054
+ transform: translateY(-1px);
1055
+ }
1056
+
1057
+ .media-tagging-tag-option.is-selected {
1058
+ background: rgba(252, 227, 0, 0.09);
1059
+ border-color: rgba(252, 227, 0, 0.34);
1060
+ box-shadow: inset 0 0 0 1px rgba(252, 227, 0, 0.14);
1061
+ }
1062
+
1063
+ .media-tagging-tag-option__checkbox {
1064
+ height: 1px;
1065
+ left: 0;
1066
+ opacity: 0;
1067
+ pointer-events: none;
1068
+ position: absolute;
1069
+ top: 0;
1070
+ width: 1px;
1071
+ }
1072
+
1073
+ .media-tagging-tag-option__content {
1074
+ min-width: 0;
1075
+ }
1076
+
1077
+ .media-tagging-tag-option__text {
1078
+ color: var(--color-on-surface);
1079
+ font-size: 0.85rem;
1080
+ font-weight: 600;
1081
+ line-height: 1.45;
1082
+ word-break: break-word;
1083
+ }
1084
+
1085
+ .media-tagging-tag-option__badge {
1086
+ align-self: center;
1087
+ justify-self: end;
1088
+ max-width: 12rem;
1089
+ overflow: hidden;
1090
+ text-overflow: ellipsis;
1091
+ white-space: nowrap;
1092
+ }
1093
+
1094
+ .media-tagging-issues {
1095
+ display: grid;
1096
+ gap: var(--spacing-3);
1097
+ }
1098
+
1099
+ .media-tagging-issue {
1100
+ background: rgba(252, 227, 0, 0.06);
1101
+ border: 1px solid rgba(252, 227, 0, 0.15);
1102
+ color: var(--color-on-surface);
1103
+ font-size: 0.875rem;
1104
+ line-height: 1.65;
1105
+ padding: var(--spacing-4);
1106
+ padding-right: calc(var(--spacing-4) + 1.8rem);
1107
+ position: relative;
1108
+ }
1109
+
1110
+ .media-tagging-issue.is-error {
1111
+ background: rgba(147, 0, 10, 0.14);
1112
+ border-color: rgba(255, 180, 171, 0.22);
1113
+ }
1114
+
1115
+ .media-tagging-issue.is-success {
1116
+ background: rgba(0, 220, 225, 0.08);
1117
+ border-color: rgba(0, 220, 225, 0.18);
1118
+ }
1119
+
1120
+ .media-tagging-issue__code {
1121
+ color: var(--color-primary-container);
1122
+ font-family: var(--font-family-mono);
1123
+ font-size: 0.7rem;
1124
+ font-weight: 700;
1125
+ letter-spacing: 0.14em;
1126
+ text-transform: uppercase;
1127
+ }
1128
+
1129
+ .media-tagging-issue__dismiss {
1130
+ align-items: center;
1131
+ background: transparent;
1132
+ border: 0;
1133
+ color: rgba(229, 226, 225, 0.45);
1134
+ cursor: pointer;
1135
+ display: inline-flex;
1136
+ font-size: 1rem;
1137
+ font-weight: 700;
1138
+ height: 1.5rem;
1139
+ justify-content: center;
1140
+ line-height: 1;
1141
+ padding: 0;
1142
+ position: absolute;
1143
+ right: 0.75rem;
1144
+ top: 0.75rem;
1145
+ transition:
1146
+ color var(--transition-fast),
1147
+ transform var(--transition-fast);
1148
+ width: 1.5rem;
1149
+ }
1150
+
1151
+ .media-tagging-issue__dismiss:hover,
1152
+ .media-tagging-issue__dismiss:focus-visible {
1153
+ color: var(--color-on-surface);
1154
+ transform: scale(1.08);
1155
+ }
1156
+
1157
+ .media-tagging-inline-warning {
1158
+ background: rgba(252, 227, 0, 0.08);
1159
+ border: 1px solid rgba(252, 227, 0, 0.2);
1160
+ color: var(--color-on-surface);
1161
+ font-size: 0.85rem;
1162
+ line-height: 1.6;
1163
+ padding: var(--spacing-4);
1164
+ }
1165
+
325
1166
  @media (max-width: 1023px) {
1167
+ .media-tagging-grid {
1168
+ flex: 0 0 auto;
1169
+ grid-auto-rows: auto;
1170
+ }
1171
+
1172
+ .media-tagging-card {
1173
+ height: auto;
1174
+ }
1175
+
1176
+ .media-tagging-created-tags-shell,
1177
+ .media-tagging-mapping-list {
1178
+ flex: 0 0 auto;
1179
+ }
1180
+
1181
+ .media-tagging-created-tags,
1182
+ .media-tagging-mapping-list,
1183
+ .media-tagging-tag-list {
1184
+ max-height: 14rem;
1185
+ }
1186
+
326
1187
  .charts-view {
327
1188
  flex-direction: column;
328
1189
  }
@@ -348,4 +1209,53 @@
348
1209
  .table-designer-workspace__bottom {
349
1210
  flex-basis: 280px;
350
1211
  }
1212
+
1213
+ .media-tagging-grid,
1214
+ .media-tagging-card__body--workflow,
1215
+ .media-tagging-preview,
1216
+ .media-tagging-query-grid,
1217
+ .media-tagging-form-grid {
1218
+ grid-template-columns: 1fr;
1219
+ }
1220
+
1221
+ .sql-highlight-shell--media {
1222
+ min-height: 9rem;
1223
+ }
1224
+
1225
+ .media-tagging-audio-preview {
1226
+ grid-template-columns: 1fr;
1227
+ justify-items: center;
1228
+ text-align: center;
1229
+ }
1230
+ }
1231
+
1232
+ @media (min-width: 1024px) and (max-height: 900px) {
1233
+ .media-tagging-card--tagging .media-tagging-card__header,
1234
+ .media-tagging-card--tagging .media-tagging-card__body {
1235
+ padding: var(--spacing-4);
1236
+ }
1237
+
1238
+ .media-tagging-card--tagging .media-tagging-card__body {
1239
+ gap: var(--spacing-3);
1240
+ }
1241
+
1242
+ .media-tagging-card--tagging .media-tagging-form-grid,
1243
+ .media-tagging-card--tagging .media-tagging-query-grid {
1244
+ gap: var(--spacing-3);
1245
+ }
1246
+
1247
+ .media-tagging-card--tagging .media-tagging-field {
1248
+ gap: 0.35rem;
1249
+ }
1250
+
1251
+ .media-tagging-card--tagging .sql-highlight-shell--media {
1252
+ min-height: 4.5rem;
1253
+ }
1254
+
1255
+ .media-tagging-card--tagging .sql-highlight-content,
1256
+ .media-tagging-card--tagging .sql-highlight-input {
1257
+ font-size: 0.72rem;
1258
+ line-height: 1.5;
1259
+ padding: 0.65rem 0.75rem;
1260
+ }
351
1261
  }