@zvk/ui 0.1.9 → 0.1.12

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 (42) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +4 -0
  3. package/dist/components/grid-list/grid-list.d.ts +29 -0
  4. package/dist/components/grid-list/grid-list.js +125 -0
  5. package/dist/components/grid-list/index.d.ts +2 -0
  6. package/dist/components/grid-list/index.js +2 -0
  7. package/dist/components/index.d.ts +16 -0
  8. package/dist/components/index.js +8 -0
  9. package/dist/components/list-row/index.d.ts +2 -0
  10. package/dist/components/list-row/index.js +2 -0
  11. package/dist/components/list-row/list-row.d.ts +54 -0
  12. package/dist/components/list-row/list-row.js +60 -0
  13. package/dist/components/multi-select/index.d.ts +2 -0
  14. package/dist/components/multi-select/index.js +2 -0
  15. package/dist/components/multi-select/multi-select.d.ts +32 -0
  16. package/dist/components/multi-select/multi-select.js +212 -0
  17. package/dist/components/splitter/index.d.ts +2 -0
  18. package/dist/components/splitter/index.js +2 -0
  19. package/dist/components/splitter/splitter.d.ts +63 -0
  20. package/dist/components/splitter/splitter.js +163 -0
  21. package/dist/components/stepper/index.d.ts +2 -0
  22. package/dist/components/stepper/index.js +2 -0
  23. package/dist/components/stepper/stepper.d.ts +30 -0
  24. package/dist/components/stepper/stepper.js +61 -0
  25. package/dist/components/tags-input/index.d.ts +2 -0
  26. package/dist/components/tags-input/index.js +2 -0
  27. package/dist/components/tags-input/tags-input.d.ts +21 -0
  28. package/dist/components/tags-input/tags-input.js +132 -0
  29. package/dist/components/toolbar/index.d.ts +2 -0
  30. package/dist/components/toolbar/index.js +2 -0
  31. package/dist/components/toolbar/toolbar.d.ts +33 -0
  32. package/dist/components/toolbar/toolbar.js +106 -0
  33. package/dist/components/tree-view/index.d.ts +2 -0
  34. package/dist/components/tree-view/index.js +2 -0
  35. package/dist/components/tree-view/tree-view.d.ts +33 -0
  36. package/dist/components/tree-view/tree-view.js +190 -0
  37. package/dist/internal/collection/index.d.ts +2 -0
  38. package/dist/internal/collection/index.js +1 -0
  39. package/dist/internal/collection/selection.d.ts +11 -0
  40. package/dist/internal/collection/selection.js +60 -0
  41. package/dist/styles.css +1006 -161
  42. package/package.json +43 -1
package/dist/styles.css CHANGED
@@ -820,6 +820,163 @@
820
820
  }
821
821
 
822
822
 
823
+ /* src/components/stepper/stepper.css */
824
+ @layer zvk-ui-components {
825
+ .zvk-ui-stepper {
826
+ color: var(--zvk-ui-color-foreground);
827
+ font-family: var(--zvk-ui-font-family-primary);
828
+ }
829
+
830
+ .zvk-ui-stepper__list {
831
+ display: grid;
832
+ gap: var(--zvk-ui-space-3);
833
+ grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
834
+ list-style: none;
835
+ margin: 0;
836
+ padding: 0;
837
+ }
838
+
839
+ .zvk-ui-stepper[data-orientation="vertical"] .zvk-ui-stepper__list {
840
+ grid-template-columns: minmax(0, 1fr);
841
+ }
842
+
843
+ .zvk-ui-stepper__item {
844
+ min-inline-size: 0;
845
+ position: relative;
846
+ }
847
+
848
+ .zvk-ui-stepper__item:not(:last-child)::after {
849
+ background: var(--zvk-ui-color-border);
850
+ block-size: 1px;
851
+ content: "";
852
+ inline-size: calc(100% - 2.25rem);
853
+ inset-block-start: 1rem;
854
+ inset-inline-start: 2.25rem;
855
+ position: absolute;
856
+ }
857
+
858
+ .zvk-ui-stepper[data-orientation="vertical"] .zvk-ui-stepper__item:not(:last-child)::after {
859
+ block-size: calc(100% + var(--zvk-ui-space-3));
860
+ inline-size: 1px;
861
+ inset-block-start: 2rem;
862
+ inset-inline-start: 1rem;
863
+ }
864
+
865
+ .zvk-ui-stepper__item[data-state="complete"]::after {
866
+ background: var(--zvk-ui-color-primary);
867
+ }
868
+
869
+ .zvk-ui-stepper__step,
870
+ .zvk-ui-stepper__trigger {
871
+ align-items: flex-start;
872
+ background: transparent;
873
+ border: 0;
874
+ color: inherit;
875
+ display: grid;
876
+ font: inherit;
877
+ gap: var(--zvk-ui-space-2);
878
+ grid-template-columns: auto minmax(0, 1fr);
879
+ inline-size: 100%;
880
+ padding: 0;
881
+ position: relative;
882
+ text-align: start;
883
+ z-index: 1;
884
+ }
885
+
886
+ .zvk-ui-stepper:not([data-orientation="vertical"]) .zvk-ui-stepper__step,
887
+ .zvk-ui-stepper:not([data-orientation="vertical"]) .zvk-ui-stepper__trigger {
888
+ grid-template-columns: minmax(0, 1fr);
889
+ grid-template-rows: 2rem auto;
890
+ }
891
+
892
+ .zvk-ui-stepper:not([data-orientation="vertical"]) .zvk-ui-stepper__content {
893
+ inline-size: 100%;
894
+ }
895
+
896
+ .zvk-ui-stepper__trigger {
897
+ border-radius: var(--zvk-ui-radius-md);
898
+ cursor: pointer;
899
+ padding: var(--zvk-ui-space-1);
900
+ }
901
+
902
+ .zvk-ui-stepper__trigger:hover:not(:disabled) {
903
+ background: var(--zvk-ui-control-hover);
904
+ }
905
+
906
+ .zvk-ui-stepper__trigger:focus-visible {
907
+ outline: 2px solid var(--zvk-ui-color-ring);
908
+ outline-offset: 2px;
909
+ }
910
+
911
+ .zvk-ui-stepper__trigger:disabled {
912
+ cursor: not-allowed;
913
+ }
914
+
915
+ .zvk-ui-stepper__indicator {
916
+ align-items: center;
917
+ background: var(--zvk-ui-color-muted);
918
+ border: 1px solid var(--zvk-ui-color-border);
919
+ border-radius: var(--zvk-ui-radius-full);
920
+ color: var(--zvk-ui-color-muted-foreground);
921
+ display: inline-flex;
922
+ font-size: var(--zvk-ui-font-size-xs);
923
+ font-weight: 700;
924
+ block-size: 2rem;
925
+ inline-size: 2rem;
926
+ justify-content: center;
927
+ line-height: 1;
928
+ }
929
+
930
+ .zvk-ui-stepper__item[data-state="complete"] .zvk-ui-stepper__indicator,
931
+ .zvk-ui-stepper__item[data-state="current"] .zvk-ui-stepper__indicator {
932
+ background: var(--zvk-ui-color-primary);
933
+ border-color: transparent;
934
+ color: var(--zvk-ui-color-primary-foreground);
935
+ }
936
+
937
+ .zvk-ui-stepper__item[data-state="disabled"] .zvk-ui-stepper__indicator {
938
+ opacity: var(--zvk-ui-opacity-disabled);
939
+ }
940
+
941
+ .zvk-ui-stepper__content {
942
+ display: grid;
943
+ gap: var(--zvk-ui-space-1);
944
+ min-inline-size: 0;
945
+ }
946
+
947
+ .zvk-ui-stepper__label {
948
+ color: var(--zvk-ui-color-foreground);
949
+ font-size: var(--zvk-ui-font-size-sm);
950
+ font-weight: 700;
951
+ line-height: var(--zvk-ui-line-height-tight);
952
+ }
953
+
954
+ .zvk-ui-stepper__description,
955
+ .zvk-ui-stepper__optional {
956
+ color: var(--zvk-ui-color-muted-foreground);
957
+ font-size: var(--zvk-ui-font-size-xs);
958
+ line-height: var(--zvk-ui-line-height-normal);
959
+ }
960
+
961
+ .zvk-ui-stepper__item[data-state="disabled"] .zvk-ui-stepper__content {
962
+ opacity: var(--zvk-ui-opacity-disabled);
963
+ }
964
+
965
+ @media (max-width: 48rem) {
966
+ .zvk-ui-stepper__list {
967
+ grid-template-columns: minmax(0, 1fr);
968
+ }
969
+
970
+ .zvk-ui-stepper__item:not(:last-child)::after {
971
+ block-size: calc(100% + var(--zvk-ui-space-3));
972
+ inline-size: 1px;
973
+ inset-block-start: 2rem;
974
+ inset-inline-start: 1rem;
975
+ }
976
+ }
977
+ }
978
+
979
+
823
980
  /* src/components/alert/alert.css */
824
981
  @layer zvk-ui-components {
825
982
  :where(.zvk-ui-alert) {
@@ -1498,6 +1655,10 @@
1498
1655
  }
1499
1656
  }
1500
1657
 
1658
+ .zvk-ui-input {
1659
+ padding-inline: var(--zvk-ui-control-padding-x);
1660
+ }
1661
+
1501
1662
 
1502
1663
  /* src/components/textarea/textarea.css */
1503
1664
  @layer zvk-ui-components {
@@ -1553,6 +1714,11 @@
1553
1714
  }
1554
1715
  }
1555
1716
 
1717
+ .zvk-ui-textarea {
1718
+ padding-block: var(--zvk-ui-space-2);
1719
+ padding-inline: var(--zvk-ui-control-padding-x);
1720
+ }
1721
+
1556
1722
 
1557
1723
  /* src/components/checkbox/checkbox.css */
1558
1724
  @layer zvk-ui-components {
@@ -1580,7 +1746,7 @@
1580
1746
  .zvk-ui-checkbox__control {
1581
1747
  align-items: center;
1582
1748
  background: var(--zvk-ui-control-background);
1583
- border: 1px solid var(--zvk-ui-color-border);
1749
+ border: 1px solid var(--zvk-ui-control-border);
1584
1750
  border-radius: var(--zvk-ui-radius-sm);
1585
1751
  box-shadow: var(--zvk-ui-shadow-xs);
1586
1752
  display: inline-flex;
@@ -1609,11 +1775,24 @@
1609
1775
  border-color: var(--zvk-ui-color-primary);
1610
1776
  }
1611
1777
 
1778
+ .zvk-ui-checkbox__input:indeterminate + .zvk-ui-checkbox__control {
1779
+ background: var(--zvk-ui-color-primary);
1780
+ border-color: var(--zvk-ui-color-primary);
1781
+ }
1782
+
1612
1783
  .zvk-ui-checkbox__input:checked + .zvk-ui-checkbox__control .zvk-ui-checkbox__indicator {
1613
1784
  opacity: 1;
1614
1785
  transform: rotate(45deg) scale(1) translate(-1px, -1px);
1615
1786
  }
1616
1787
 
1788
+ .zvk-ui-checkbox__input:indeterminate + .zvk-ui-checkbox__control .zvk-ui-checkbox__indicator {
1789
+ block-size: 0;
1790
+ inline-size: 0.625rem;
1791
+ border-width: 0 0 2px;
1792
+ opacity: 1;
1793
+ transform: none;
1794
+ }
1795
+
1617
1796
  .zvk-ui-checkbox__input:focus-visible + .zvk-ui-checkbox__control {
1618
1797
  box-shadow: var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
1619
1798
  }
@@ -2541,123 +2720,417 @@
2541
2720
  }
2542
2721
 
2543
2722
 
2544
- /* src/components/collapsible/collapsible.css */
2723
+ /* src/components/multi-select/multi-select.css */
2545
2724
  @layer zvk-ui-components {
2546
- :where(.zvk-ui-collapsible) {
2547
- --zvk-ui-collapsible-gap: var(--zvk-ui-space-3);
2548
- display: grid;
2549
- gap: var(--zvk-ui-collapsible-gap);
2550
- }
2551
-
2552
- :where(.zvk-ui-collapsible__trigger) {
2553
- --zvk-ui-collapsible-trigger-padding-x: var(--zvk-ui-control-padding-x);
2554
- --zvk-ui-collapsible-trigger-height: var(--zvk-ui-control-height-md);
2725
+ .zvk-ui-multi-select__control {
2555
2726
  align-items: center;
2556
- appearance: none;
2727
+ backdrop-filter: var(--zvk-ui-material-control-backdrop-filter);
2557
2728
  background: var(--zvk-ui-control-background);
2558
- border: 1px solid var(--zvk-ui-color-border);
2729
+ border: 1px solid var(--zvk-ui-control-border);
2559
2730
  border-radius: var(--zvk-ui-radius-md);
2560
2731
  color: var(--zvk-ui-color-foreground);
2561
- cursor: pointer;
2562
- display: inline-flex;
2563
- font-family: var(--zvk-ui-font-family-primary);
2564
- font-size: var(--zvk-ui-font-size-sm);
2565
- gap: var(--zvk-ui-control-gap);
2566
- height: var(--zvk-ui-collapsible-trigger-height);
2567
- justify-content: flex-start;
2568
- min-width: max-content;
2569
- padding-inline: var(--zvk-ui-collapsible-trigger-padding-x);
2570
- transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
2732
+ display: grid;
2733
+ gap: var(--zvk-ui-space-2);
2734
+ grid-template-columns: minmax(0, 1fr) auto;
2735
+ min-block-size: var(--zvk-ui-control-height-md);
2736
+ padding: var(--zvk-ui-space-1) var(--zvk-ui-space-2);
2571
2737
  }
2572
2738
 
2573
- :where(.zvk-ui-collapsible__trigger:hover:not(:disabled, [data-disabled="true"])) {
2574
- background: var(--zvk-ui-control-hover);
2739
+ .zvk-ui-multi-select__control:hover:not([data-disabled="true"]) {
2740
+ border-color: var(--zvk-ui-control-border-strong);
2575
2741
  }
2576
2742
 
2577
- :where(.zvk-ui-collapsible[data-state="open"] .zvk-ui-collapsible__trigger, .zvk-ui-collapsible__content:not([hidden])) {
2578
- border-color: var(--zvk-ui-color-border-strong);
2743
+ .zvk-ui-multi-select__control:focus-within {
2744
+ border-color: var(--zvk-ui-color-ring);
2745
+ outline: 2px solid var(--zvk-ui-color-ring);
2746
+ outline-offset: 1px;
2579
2747
  }
2580
2748
 
2581
- :where(.zvk-ui-collapsible__content) {
2582
- padding-inline: var(--zvk-ui-control-padding-x);
2749
+ .zvk-ui-multi-select__control[data-invalid="true"] {
2750
+ border-color: var(--zvk-ui-color-destructive);
2583
2751
  }
2584
2752
 
2585
- :where(.zvk-ui-collapsible__content[data-state="open"]) {
2586
- animation: zvk-ui-collapsible-content-enter var(--zvk-ui-duration-normal) var(--zvk-ui-ease-standard) both;
2753
+ .zvk-ui-multi-select__control[data-size="sm"] {
2754
+ min-block-size: var(--zvk-ui-control-height-sm);
2587
2755
  }
2588
2756
 
2589
- :where(.zvk-ui-collapsible__content[data-state="closed"]) {
2590
- overflow: hidden;
2757
+ .zvk-ui-multi-select__control[data-size="lg"] {
2758
+ min-block-size: var(--zvk-ui-control-height-lg);
2591
2759
  }
2592
2760
 
2593
- @keyframes zvk-ui-collapsible-content-enter {
2594
- from {
2595
- opacity: 0;
2596
- transform: translateY(-0.25rem);
2597
- }
2598
-
2599
- to {
2600
- opacity: 1;
2601
- transform: translateY(0);
2602
- }
2761
+ .zvk-ui-multi-select__values {
2762
+ align-items: center;
2763
+ display: flex;
2764
+ flex-wrap: wrap;
2765
+ gap: var(--zvk-ui-space-1);
2766
+ min-inline-size: 0;
2603
2767
  }
2604
2768
 
2605
- @media (prefers-reduced-motion: reduce) {
2606
- :where(.zvk-ui-collapsible__content[data-state="open"]) {
2607
- animation: none;
2608
- }
2769
+ .zvk-ui-multi-select__input {
2770
+ background: transparent;
2771
+ border: 0;
2772
+ color: inherit;
2773
+ flex: 1 1 8rem;
2774
+ font: inherit;
2775
+ min-block-size: 1.75rem;
2776
+ min-inline-size: 6rem;
2777
+ outline: 0;
2778
+ padding: 0 var(--zvk-ui-space-1);
2609
2779
  }
2610
- }
2611
2780
 
2612
-
2613
- /* src/components/accordion/accordion.css */
2614
- @layer zvk-ui-components {
2615
- :where(.zvk-ui-accordion) {
2616
- --zvk-ui-accordion-gap: var(--zvk-ui-space-2);
2617
- display: grid;
2618
- gap: var(--zvk-ui-accordion-gap);
2781
+ .zvk-ui-multi-select__input:disabled {
2782
+ cursor: not-allowed;
2619
2783
  }
2620
2784
 
2621
- :where(.zvk-ui-accordion__item) {
2785
+ .zvk-ui-multi-select__token {
2786
+ align-items: center;
2787
+ background: var(--zvk-ui-color-muted);
2622
2788
  border: 1px solid var(--zvk-ui-color-border);
2623
- border-radius: var(--zvk-ui-radius-md);
2624
- overflow: hidden;
2625
- transition: border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
2626
- }
2627
-
2628
- :where(.zvk-ui-accordion__item[data-state="open"]) {
2629
- border-color: var(--zvk-ui-color-border-strong);
2789
+ border-radius: var(--zvk-ui-radius-full);
2790
+ color: var(--zvk-ui-color-foreground);
2791
+ display: inline-flex;
2792
+ font-size: var(--zvk-ui-font-size-xs);
2793
+ font-weight: 650;
2794
+ gap: var(--zvk-ui-space-1);
2795
+ line-height: 1;
2796
+ min-block-size: 1.5rem;
2797
+ padding-inline: var(--zvk-ui-space-2) var(--zvk-ui-space-1);
2630
2798
  }
2631
2799
 
2632
- :where(.zvk-ui-accordion__trigger) {
2633
- --zvk-ui-accordion-trigger-height: var(--zvk-ui-control-height-md);
2634
- align-items: center;
2800
+ .zvk-ui-multi-select__token-remove,
2801
+ .zvk-ui-multi-select__clear {
2635
2802
  appearance: none;
2636
- background: var(--zvk-ui-color-surface);
2637
- border: none;
2638
- color: var(--zvk-ui-color-foreground);
2803
+ background: transparent;
2804
+ border: 0;
2805
+ border-radius: var(--zvk-ui-radius-sm);
2806
+ color: var(--zvk-ui-color-muted-foreground);
2639
2807
  cursor: pointer;
2640
- display: inline-flex;
2641
- font-family: var(--zvk-ui-font-family-primary);
2642
- font-size: var(--zvk-ui-font-size-sm);
2643
- gap: var(--zvk-ui-control-gap);
2644
- justify-content: flex-start;
2645
- line-height: 1;
2646
- min-width: 100%;
2647
- min-height: var(--zvk-ui-accordion-trigger-height);
2648
- padding-inline: var(--zvk-ui-control-padding-x);
2649
- text-align: left;
2650
- transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
2651
- width: 100%;
2808
+ font: inherit;
2652
2809
  }
2653
2810
 
2654
- :where(.zvk-ui-accordion__trigger[data-state="open"]) {
2655
- background: var(--zvk-ui-control-hover);
2811
+ .zvk-ui-multi-select__token-remove {
2812
+ block-size: 1.125rem;
2813
+ inline-size: 1.125rem;
2814
+ line-height: 1;
2815
+ padding: 0;
2656
2816
  }
2657
2817
 
2658
- :where(.zvk-ui-accordion__trigger:focus-visible) {
2659
- outline: 0;
2660
- box-shadow: var(--zvk-ui-focus-ring);
2818
+ .zvk-ui-multi-select__clear {
2819
+ font-size: var(--zvk-ui-font-size-xs);
2820
+ padding: var(--zvk-ui-space-1) var(--zvk-ui-space-2);
2821
+ }
2822
+
2823
+ .zvk-ui-multi-select__token-remove:hover:not(:disabled),
2824
+ .zvk-ui-multi-select__token-remove:focus-visible,
2825
+ .zvk-ui-multi-select__clear:hover:not(:disabled),
2826
+ .zvk-ui-multi-select__clear:focus-visible {
2827
+ background: var(--zvk-ui-control-hover);
2828
+ color: var(--zvk-ui-color-foreground);
2829
+ outline: 0;
2830
+ }
2831
+
2832
+ .zvk-ui-multi-select__popup {
2833
+ --zvk-ui-multi-select-motion-x: 0;
2834
+ --zvk-ui-multi-select-motion-y: -0.1875rem;
2835
+ backdrop-filter: var(--zvk-ui-material-floating-backdrop-filter);
2836
+ background: var(--zvk-ui-color-surface);
2837
+ border: 1px solid var(--zvk-ui-card-border);
2838
+ border-radius: var(--zvk-ui-radius-md);
2839
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-material-glass-shadow);
2840
+ display: grid;
2841
+ font-family: var(--zvk-ui-font-family-primary);
2842
+ gap: var(--zvk-ui-space-1);
2843
+ max-block-size: min(18rem, var(--zvk-ui-floating-available-height));
2844
+ overflow: auto;
2845
+ padding: var(--zvk-ui-space-1);
2846
+ z-index: var(--zvk-ui-z-popover);
2847
+ }
2848
+
2849
+ .zvk-ui-multi-select__popup[data-side="top"] {
2850
+ --zvk-ui-multi-select-motion-y: 0.1875rem;
2851
+ }
2852
+
2853
+ .zvk-ui-multi-select__popup[data-side="left"] {
2854
+ --zvk-ui-multi-select-motion-x: 0.1875rem;
2855
+ --zvk-ui-multi-select-motion-y: 0;
2856
+ }
2857
+
2858
+ .zvk-ui-multi-select__popup[data-side="right"] {
2859
+ --zvk-ui-multi-select-motion-x: -0.1875rem;
2860
+ --zvk-ui-multi-select-motion-y: 0;
2861
+ }
2862
+
2863
+ .zvk-ui-multi-select__popup[data-state="open"] {
2864
+ animation: zvk-ui-multi-select-popup-enter var(--zvk-ui-duration-fast) var(--zvk-ui-ease-enter);
2865
+ }
2866
+
2867
+ .zvk-ui-multi-select__option {
2868
+ align-items: center;
2869
+ border-radius: var(--zvk-ui-radius-sm);
2870
+ color: var(--zvk-ui-color-foreground);
2871
+ cursor: pointer;
2872
+ display: grid;
2873
+ font-size: var(--zvk-ui-font-size-sm);
2874
+ gap: var(--zvk-ui-space-2);
2875
+ grid-template-columns: 1rem minmax(0, 1fr);
2876
+ padding: var(--zvk-ui-space-2) var(--zvk-ui-space-3);
2877
+ }
2878
+
2879
+ .zvk-ui-multi-select__option[data-highlighted="true"] {
2880
+ background: var(--zvk-ui-color-muted);
2881
+ }
2882
+
2883
+ .zvk-ui-multi-select__option[data-selected="true"] {
2884
+ font-weight: 700;
2885
+ }
2886
+
2887
+ .zvk-ui-multi-select__option[data-disabled="true"] {
2888
+ color: var(--zvk-ui-color-muted-foreground);
2889
+ cursor: not-allowed;
2890
+ opacity: 0.6;
2891
+ }
2892
+
2893
+ .zvk-ui-multi-select__option-check {
2894
+ color: var(--zvk-ui-color-primary);
2895
+ font-weight: 700;
2896
+ text-align: center;
2897
+ }
2898
+
2899
+ .zvk-ui-multi-select__empty {
2900
+ color: var(--zvk-ui-color-muted-foreground);
2901
+ font-size: var(--zvk-ui-font-size-sm);
2902
+ padding: var(--zvk-ui-space-3);
2903
+ }
2904
+
2905
+ @keyframes zvk-ui-multi-select-popup-enter {
2906
+ from {
2907
+ opacity: 0;
2908
+ transform: translate(var(--zvk-ui-multi-select-motion-x), var(--zvk-ui-multi-select-motion-y)) scale(0.98);
2909
+ }
2910
+
2911
+ to {
2912
+ opacity: 1;
2913
+ transform: translate(0, 0) scale(1);
2914
+ }
2915
+ }
2916
+
2917
+ @media (prefers-reduced-motion: reduce) {
2918
+ .zvk-ui-multi-select__popup[data-state="open"] {
2919
+ animation: none;
2920
+ }
2921
+ }
2922
+ }
2923
+
2924
+
2925
+ /* src/components/tags-input/tags-input.css */
2926
+ @layer zvk-ui-components {
2927
+ .zvk-ui-tags-input__control {
2928
+ align-items: center;
2929
+ backdrop-filter: var(--zvk-ui-material-control-backdrop-filter);
2930
+ background: var(--zvk-ui-control-background);
2931
+ border: 1px solid var(--zvk-ui-control-border);
2932
+ border-radius: var(--zvk-ui-radius-md);
2933
+ color: var(--zvk-ui-color-foreground);
2934
+ display: flex;
2935
+ flex-wrap: wrap;
2936
+ gap: var(--zvk-ui-space-1);
2937
+ min-block-size: var(--zvk-ui-control-height-md);
2938
+ padding: var(--zvk-ui-space-1) var(--zvk-ui-space-2);
2939
+ }
2940
+
2941
+ .zvk-ui-tags-input__control:hover:not([data-disabled="true"]) {
2942
+ border-color: var(--zvk-ui-control-border-strong);
2943
+ }
2944
+
2945
+ .zvk-ui-tags-input__control:focus-within {
2946
+ border-color: var(--zvk-ui-color-ring);
2947
+ outline: 2px solid var(--zvk-ui-color-ring);
2948
+ outline-offset: 1px;
2949
+ }
2950
+
2951
+ .zvk-ui-tags-input__control[data-invalid="true"] {
2952
+ border-color: var(--zvk-ui-color-destructive);
2953
+ }
2954
+
2955
+ .zvk-ui-tags-input__control[data-size="sm"] {
2956
+ min-block-size: var(--zvk-ui-control-height-sm);
2957
+ }
2958
+
2959
+ .zvk-ui-tags-input__control[data-size="lg"] {
2960
+ min-block-size: var(--zvk-ui-control-height-lg);
2961
+ }
2962
+
2963
+ .zvk-ui-tags-input__input {
2964
+ background: transparent;
2965
+ border: 0;
2966
+ color: inherit;
2967
+ flex: 1 1 8rem;
2968
+ font: inherit;
2969
+ min-block-size: 1.75rem;
2970
+ min-inline-size: 6rem;
2971
+ outline: 0;
2972
+ padding: 0 var(--zvk-ui-space-1);
2973
+ }
2974
+
2975
+ .zvk-ui-tags-input__input:disabled {
2976
+ cursor: not-allowed;
2977
+ }
2978
+
2979
+ .zvk-ui-tags-input__tag {
2980
+ align-items: center;
2981
+ background: var(--zvk-ui-color-muted);
2982
+ border: 1px solid var(--zvk-ui-color-border);
2983
+ border-radius: var(--zvk-ui-radius-full);
2984
+ color: var(--zvk-ui-color-foreground);
2985
+ display: inline-flex;
2986
+ font-size: var(--zvk-ui-font-size-xs);
2987
+ font-weight: 650;
2988
+ gap: var(--zvk-ui-space-1);
2989
+ line-height: 1;
2990
+ min-block-size: 1.5rem;
2991
+ padding-inline: var(--zvk-ui-space-2) var(--zvk-ui-space-1);
2992
+ }
2993
+
2994
+ .zvk-ui-tags-input__remove {
2995
+ appearance: none;
2996
+ background: transparent;
2997
+ border: 0;
2998
+ border-radius: var(--zvk-ui-radius-sm);
2999
+ block-size: 1.125rem;
3000
+ color: var(--zvk-ui-color-muted-foreground);
3001
+ cursor: pointer;
3002
+ font: inherit;
3003
+ inline-size: 1.125rem;
3004
+ line-height: 1;
3005
+ padding: 0;
3006
+ }
3007
+
3008
+ .zvk-ui-tags-input__remove:hover:not(:disabled),
3009
+ .zvk-ui-tags-input__remove:focus-visible {
3010
+ background: var(--zvk-ui-control-hover);
3011
+ color: var(--zvk-ui-color-foreground);
3012
+ outline: 0;
3013
+ }
3014
+ }
3015
+
3016
+
3017
+ /* src/components/collapsible/collapsible.css */
3018
+ @layer zvk-ui-components {
3019
+ :where(.zvk-ui-collapsible) {
3020
+ --zvk-ui-collapsible-gap: var(--zvk-ui-space-3);
3021
+ display: grid;
3022
+ gap: var(--zvk-ui-collapsible-gap);
3023
+ }
3024
+
3025
+ :where(.zvk-ui-collapsible__trigger) {
3026
+ --zvk-ui-collapsible-trigger-padding-x: var(--zvk-ui-control-padding-x);
3027
+ --zvk-ui-collapsible-trigger-height: var(--zvk-ui-control-height-md);
3028
+ align-items: center;
3029
+ appearance: none;
3030
+ background: var(--zvk-ui-control-background);
3031
+ border: 1px solid var(--zvk-ui-color-border);
3032
+ border-radius: var(--zvk-ui-radius-md);
3033
+ color: var(--zvk-ui-color-foreground);
3034
+ cursor: pointer;
3035
+ display: inline-flex;
3036
+ font-family: var(--zvk-ui-font-family-primary);
3037
+ font-size: var(--zvk-ui-font-size-sm);
3038
+ gap: var(--zvk-ui-control-gap);
3039
+ height: var(--zvk-ui-collapsible-trigger-height);
3040
+ justify-content: flex-start;
3041
+ min-width: max-content;
3042
+ padding-inline: var(--zvk-ui-collapsible-trigger-padding-x);
3043
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
3044
+ }
3045
+
3046
+ :where(.zvk-ui-collapsible__trigger:hover:not(:disabled, [data-disabled="true"])) {
3047
+ background: var(--zvk-ui-control-hover);
3048
+ }
3049
+
3050
+ :where(.zvk-ui-collapsible[data-state="open"] .zvk-ui-collapsible__trigger, .zvk-ui-collapsible__content:not([hidden])) {
3051
+ border-color: var(--zvk-ui-color-border-strong);
3052
+ }
3053
+
3054
+ :where(.zvk-ui-collapsible__content) {
3055
+ padding-inline: var(--zvk-ui-control-padding-x);
3056
+ }
3057
+
3058
+ :where(.zvk-ui-collapsible__content[data-state="open"]) {
3059
+ animation: zvk-ui-collapsible-content-enter var(--zvk-ui-duration-normal) var(--zvk-ui-ease-standard) both;
3060
+ }
3061
+
3062
+ :where(.zvk-ui-collapsible__content[data-state="closed"]) {
3063
+ overflow: hidden;
3064
+ }
3065
+
3066
+ @keyframes zvk-ui-collapsible-content-enter {
3067
+ from {
3068
+ opacity: 0;
3069
+ transform: translateY(-0.25rem);
3070
+ }
3071
+
3072
+ to {
3073
+ opacity: 1;
3074
+ transform: translateY(0);
3075
+ }
3076
+ }
3077
+
3078
+ @media (prefers-reduced-motion: reduce) {
3079
+ :where(.zvk-ui-collapsible__content[data-state="open"]) {
3080
+ animation: none;
3081
+ }
3082
+ }
3083
+ }
3084
+
3085
+
3086
+ /* src/components/accordion/accordion.css */
3087
+ @layer zvk-ui-components {
3088
+ :where(.zvk-ui-accordion) {
3089
+ --zvk-ui-accordion-gap: var(--zvk-ui-space-2);
3090
+ display: grid;
3091
+ gap: var(--zvk-ui-accordion-gap);
3092
+ }
3093
+
3094
+ :where(.zvk-ui-accordion__item) {
3095
+ border: 1px solid var(--zvk-ui-color-border);
3096
+ border-radius: var(--zvk-ui-radius-md);
3097
+ overflow: hidden;
3098
+ transition: border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
3099
+ }
3100
+
3101
+ :where(.zvk-ui-accordion__item[data-state="open"]) {
3102
+ border-color: var(--zvk-ui-color-border-strong);
3103
+ }
3104
+
3105
+ :where(.zvk-ui-accordion__trigger) {
3106
+ --zvk-ui-accordion-trigger-height: var(--zvk-ui-control-height-md);
3107
+ align-items: center;
3108
+ appearance: none;
3109
+ background: var(--zvk-ui-color-surface);
3110
+ border: none;
3111
+ color: var(--zvk-ui-color-foreground);
3112
+ cursor: pointer;
3113
+ display: inline-flex;
3114
+ font-family: var(--zvk-ui-font-family-primary);
3115
+ font-size: var(--zvk-ui-font-size-sm);
3116
+ gap: var(--zvk-ui-control-gap);
3117
+ justify-content: flex-start;
3118
+ line-height: 1;
3119
+ min-width: 100%;
3120
+ min-height: var(--zvk-ui-accordion-trigger-height);
3121
+ padding-inline: var(--zvk-ui-control-padding-x);
3122
+ text-align: left;
3123
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
3124
+ width: 100%;
3125
+ }
3126
+
3127
+ :where(.zvk-ui-accordion__trigger[data-state="open"]) {
3128
+ background: var(--zvk-ui-control-hover);
3129
+ }
3130
+
3131
+ :where(.zvk-ui-accordion__trigger:focus-visible) {
3132
+ outline: 0;
3133
+ box-shadow: var(--zvk-ui-focus-ring);
2661
3134
  }
2662
3135
 
2663
3136
  :where(.zvk-ui-accordion__content) {
@@ -2745,10 +3218,10 @@
2745
3218
  }
2746
3219
 
2747
3220
  :where(.zvk-ui-tabs__trigger[data-state="active"]) {
2748
- background: var(--zvk-ui-color-surface-raised);
2749
- border-color: var(--zvk-ui-color-border-strong);
3221
+ background: var(--zvk-ui-color-primary-soft);
3222
+ border-color: var(--zvk-ui-control-border-strong);
2750
3223
  box-shadow: var(--zvk-ui-shadow-xs);
2751
- color: var(--zvk-ui-color-foreground);
3224
+ color: var(--zvk-ui-color-primary);
2752
3225
  }
2753
3226
 
2754
3227
  :where(.zvk-ui-tabs__trigger[data-disabled="true"]) {
@@ -3001,115 +3474,329 @@
3001
3474
 
3002
3475
  :where(.zvk-ui-table__toolbar-title) {
3003
3476
  color: var(--zvk-ui-color-foreground);
3004
- font-family: var(--zvk-ui-font-family-secondary);
3005
- font-size: var(--zvk-ui-font-size-lg);
3006
- font-weight: 700;
3477
+ font-family: var(--zvk-ui-font-family-secondary);
3478
+ font-size: var(--zvk-ui-font-size-lg);
3479
+ font-weight: 700;
3480
+ line-height: var(--zvk-ui-line-height-tight);
3481
+ margin: 0;
3482
+ }
3483
+
3484
+ :where(.zvk-ui-table__toolbar-actions) {
3485
+ align-items: center;
3486
+ display: inline-flex;
3487
+ flex-wrap: wrap;
3488
+ gap: var(--zvk-ui-space-2);
3489
+ }
3490
+
3491
+ :where(.zvk-ui-table__head, .zvk-ui-table__cell) {
3492
+ text-align: left;
3493
+ padding-block: var(--zvk-ui-table-cell-padding-y);
3494
+ padding-inline: var(--zvk-ui-table-cell-padding-x);
3495
+ }
3496
+
3497
+ :where(.zvk-ui-table__selection-cell) {
3498
+ inline-size: 1%;
3499
+ text-align: center;
3500
+ white-space: nowrap;
3501
+ }
3502
+
3503
+ :where(.zvk-ui-table__selection-cell[data-disabled="true"]) {
3504
+ opacity: var(--zvk-ui-opacity-disabled);
3505
+ }
3506
+
3507
+ :where(.zvk-ui-table__selection-checkbox) {
3508
+ justify-content: center;
3509
+ }
3510
+
3511
+ :where(.zvk-ui-table__head) {
3512
+ font-size: var(--zvk-ui-font-size-sm);
3513
+ font-weight: 600;
3514
+ }
3515
+
3516
+ :where(.zvk-ui-table__sort-button) {
3517
+ align-items: center;
3518
+ appearance: none;
3519
+ background: transparent;
3520
+ border: 0;
3521
+ border-radius: var(--zvk-ui-radius-sm);
3522
+ color: inherit;
3523
+ cursor: pointer;
3524
+ display: inline-flex;
3525
+ font: inherit;
3526
+ font-weight: inherit;
3527
+ gap: var(--zvk-ui-space-2);
3528
+ margin: calc(-1 * var(--zvk-ui-space-1));
3529
+ padding: var(--zvk-ui-space-1);
3530
+ text-align: inherit;
3531
+ }
3532
+
3533
+ :where(.zvk-ui-table__sort-button:hover) {
3534
+ background: var(--zvk-ui-color-muted);
3535
+ }
3536
+
3537
+ :where(.zvk-ui-table__sort-button:focus-visible) {
3538
+ box-shadow: var(--zvk-ui-focus-ring);
3539
+ outline: none;
3540
+ }
3541
+
3542
+ :where(.zvk-ui-table__sort-button:disabled) {
3543
+ cursor: not-allowed;
3544
+ opacity: 0.55;
3545
+ }
3546
+
3547
+ :where(.zvk-ui-table__sort-direction) {
3548
+ color: var(--zvk-ui-color-muted-foreground);
3549
+ font-size: var(--zvk-ui-font-size-xs);
3550
+ font-weight: 500;
3551
+ line-height: 1;
3552
+ }
3553
+
3554
+ :where(.zvk-ui-table__row) {
3555
+ border-bottom: 1px solid var(--zvk-ui-color-border-subtle);
3556
+ }
3557
+
3558
+ :where(.zvk-ui-table__row:last-child) {
3559
+ border-bottom: none;
3560
+ }
3561
+
3562
+ :where(.zvk-ui-table__state-row) {
3563
+ color: var(--zvk-ui-color-muted-foreground);
3564
+ }
3565
+
3566
+ :where(.zvk-ui-table__state-row[data-state="loading"]) {
3567
+ color: var(--zvk-ui-color-foreground);
3568
+ }
3569
+
3570
+ :where(.zvk-ui-table__state-row[data-state="error"]) {
3571
+ color: var(--zvk-ui-color-destructive);
3572
+ }
3573
+
3574
+ :where(.zvk-ui-table__state-cell) {
3575
+ padding-block: calc(var(--zvk-ui-table-cell-padding-y) * 2);
3576
+ text-align: center;
3577
+ }
3578
+
3579
+ @media (max-width: 40rem) {
3580
+ :where(.zvk-ui-table-container) {
3581
+ box-shadow:
3582
+ inset var(--zvk-ui-space-2) 0 var(--zvk-ui-space-3) calc(-1 * var(--zvk-ui-space-3)) color-mix(in srgb, var(--zvk-ui-color-foreground) 18%, transparent),
3583
+ inset calc(-1 * var(--zvk-ui-space-2)) 0 var(--zvk-ui-space-3) calc(-1 * var(--zvk-ui-space-3)) color-mix(in srgb, var(--zvk-ui-color-foreground) 18%, transparent);
3584
+ scrollbar-width: thin;
3585
+ }
3586
+ }
3587
+ }
3588
+
3589
+
3590
+ /* src/components/list-row/list-row.css */
3591
+ @layer zvk-ui-components {
3592
+ :where(.zvk-ui-list-row) {
3593
+ --zvk-ui-list-row-bg: transparent;
3594
+ --zvk-ui-list-row-border: transparent;
3595
+ align-items: center;
3596
+ background: var(--zvk-ui-list-row-bg);
3597
+ border: 1px solid var(--zvk-ui-list-row-border);
3598
+ border-radius: var(--zvk-ui-radius-md);
3599
+ color: var(--zvk-ui-color-foreground);
3600
+ display: grid;
3601
+ font-family: var(--zvk-ui-font-family-primary);
3602
+ gap: var(--zvk-ui-space-3);
3603
+ grid-template-columns: auto minmax(0, 1fr) auto auto auto;
3604
+ min-width: 0;
3605
+ padding-block: var(--zvk-ui-space-3);
3606
+ padding-inline: var(--zvk-ui-space-3);
3607
+ text-align: start;
3608
+ text-decoration: none;
3609
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
3610
+ }
3611
+
3612
+ :where(.zvk-ui-list-row[data-variant="surface"]) {
3613
+ --zvk-ui-list-row-bg: var(--zvk-ui-color-surface);
3614
+ --zvk-ui-list-row-border: var(--zvk-ui-color-border);
3615
+ }
3616
+
3617
+ :where(.zvk-ui-list-row[data-selected="true"]) {
3618
+ --zvk-ui-list-row-bg: var(--zvk-ui-color-muted);
3619
+ --zvk-ui-list-row-border: var(--zvk-ui-color-primary);
3620
+ }
3621
+
3622
+ :where(.zvk-ui-list-row[data-density="compact"]) {
3623
+ gap: var(--zvk-ui-space-2);
3624
+ padding-block: var(--zvk-ui-space-2);
3625
+ padding-inline: var(--zvk-ui-space-2);
3626
+ }
3627
+
3628
+ :where(.zvk-ui-list-row[data-density="comfortable"]) {
3629
+ gap: var(--zvk-ui-space-4);
3630
+ padding-block: var(--zvk-ui-space-4);
3631
+ padding-inline: var(--zvk-ui-space-4);
3632
+ }
3633
+
3634
+ :where(.zvk-ui-list-row--action) {
3635
+ appearance: none;
3636
+ cursor: pointer;
3637
+ font: inherit;
3638
+ width: 100%;
3639
+ }
3640
+
3641
+ :where(button.zvk-ui-list-row--action) {
3642
+ border-color: var(--zvk-ui-list-row-border);
3643
+ }
3644
+
3645
+ :where(.zvk-ui-list-row--action:hover:not(:disabled, [data-disabled="true"])) {
3646
+ --zvk-ui-list-row-bg: var(--zvk-ui-control-hover);
3647
+ --zvk-ui-list-row-border: var(--zvk-ui-color-border-strong);
3648
+ }
3649
+
3650
+ :where(.zvk-ui-list-row--action:focus-visible) {
3651
+ box-shadow: var(--zvk-ui-focus-ring);
3652
+ outline: 0;
3653
+ }
3654
+
3655
+ :where(.zvk-ui-list-row[data-disabled="true"], .zvk-ui-list-row:disabled) {
3656
+ cursor: not-allowed;
3657
+ opacity: var(--zvk-ui-opacity-disabled);
3658
+ }
3659
+
3660
+ :where(.zvk-ui-list-row__leading, .zvk-ui-list-row__trailing, .zvk-ui-list-row__actions) {
3661
+ align-items: center;
3662
+ display: inline-flex;
3663
+ gap: var(--zvk-ui-space-2);
3664
+ min-width: 0;
3665
+ }
3666
+
3667
+ :where(.zvk-ui-list-row__content) {
3668
+ display: grid;
3669
+ gap: var(--zvk-ui-space-1);
3670
+ min-width: 0;
3671
+ }
3672
+
3673
+ :where(.zvk-ui-list-row__title) {
3674
+ color: var(--zvk-ui-color-foreground);
3675
+ font-size: var(--zvk-ui-font-size-sm);
3676
+ font-weight: 650;
3007
3677
  line-height: var(--zvk-ui-line-height-tight);
3008
3678
  margin: 0;
3679
+ min-width: 0;
3009
3680
  }
3010
3681
 
3011
- :where(.zvk-ui-table__toolbar-actions) {
3012
- align-items: center;
3013
- display: inline-flex;
3014
- flex-wrap: wrap;
3015
- gap: var(--zvk-ui-space-2);
3682
+ :where(.zvk-ui-list-row__description, .zvk-ui-list-row__meta) {
3683
+ color: var(--zvk-ui-color-muted-foreground);
3684
+ font-size: var(--zvk-ui-font-size-xs);
3685
+ line-height: var(--zvk-ui-line-height-normal);
3686
+ margin: 0;
3687
+ min-width: 0;
3016
3688
  }
3017
3689
 
3018
- :where(.zvk-ui-table__head, .zvk-ui-table__cell) {
3019
- text-align: left;
3020
- padding-block: var(--zvk-ui-table-cell-padding-y);
3021
- padding-inline: var(--zvk-ui-table-cell-padding-x);
3690
+ :where(.zvk-ui-list-row__meta, .zvk-ui-list-row__trailing, .zvk-ui-list-row__actions) {
3691
+ justify-self: end;
3022
3692
  }
3693
+ }
3023
3694
 
3024
- :where(.zvk-ui-table__selection-cell) {
3025
- inline-size: 1%;
3026
- text-align: center;
3027
- white-space: nowrap;
3695
+
3696
+ /* src/components/grid-list/grid-list.css */
3697
+ @layer zvk-ui-components {
3698
+ :where(.zvk-ui-grid-list) {
3699
+ display: grid;
3700
+ gap: var(--zvk-ui-space-2);
3701
+ min-width: 0;
3028
3702
  }
3029
3703
 
3030
- :where(.zvk-ui-table__selection-cell[data-disabled="true"]) {
3031
- opacity: var(--zvk-ui-opacity-disabled);
3704
+ :where(.zvk-ui-grid-list__row) {
3705
+ background: var(--zvk-ui-color-surface);
3706
+ border: 1px solid var(--zvk-ui-color-border);
3707
+ border-radius: var(--zvk-ui-radius-md);
3708
+ color: var(--zvk-ui-color-foreground);
3709
+ cursor: pointer;
3710
+ display: grid;
3711
+ min-width: 0;
3712
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
3032
3713
  }
3033
3714
 
3034
- :where(.zvk-ui-table__selection-checkbox) {
3035
- justify-content: center;
3715
+ :where(.zvk-ui-grid-list__row:hover:not([data-disabled="true"])) {
3716
+ background: var(--zvk-ui-control-hover);
3717
+ border-color: var(--zvk-ui-color-border-strong);
3036
3718
  }
3037
3719
 
3038
- :where(.zvk-ui-table__head) {
3039
- font-size: var(--zvk-ui-font-size-sm);
3040
- font-weight: 600;
3720
+ :where(.zvk-ui-grid-list__row:focus-visible) {
3721
+ box-shadow: var(--zvk-ui-focus-ring);
3722
+ outline: 0;
3041
3723
  }
3042
3724
 
3043
- :where(.zvk-ui-table__sort-button) {
3044
- align-items: center;
3045
- appearance: none;
3046
- background: transparent;
3047
- border: 0;
3048
- border-radius: var(--zvk-ui-radius-sm);
3049
- color: inherit;
3050
- cursor: pointer;
3051
- display: inline-flex;
3052
- font: inherit;
3053
- font-weight: inherit;
3054
- gap: var(--zvk-ui-space-2);
3055
- margin: calc(-1 * var(--zvk-ui-space-1));
3056
- padding: var(--zvk-ui-space-1);
3057
- text-align: inherit;
3725
+ :where(.zvk-ui-grid-list__row[data-active="true"]) {
3726
+ border-color: var(--zvk-ui-color-border-strong);
3058
3727
  }
3059
3728
 
3060
- :where(.zvk-ui-table__sort-button:hover) {
3729
+ :where(.zvk-ui-grid-list__row[data-selected="true"]) {
3061
3730
  background: var(--zvk-ui-color-muted);
3731
+ border-color: var(--zvk-ui-color-primary);
3062
3732
  }
3063
3733
 
3064
- :where(.zvk-ui-table__sort-button:focus-visible) {
3065
- box-shadow: var(--zvk-ui-focus-ring);
3066
- outline: none;
3734
+ :where(.zvk-ui-grid-list__row[data-disabled="true"]) {
3735
+ cursor: not-allowed;
3736
+ opacity: var(--zvk-ui-opacity-disabled);
3067
3737
  }
3068
3738
 
3069
- :where(.zvk-ui-table__sort-button:disabled) {
3070
- cursor: not-allowed;
3071
- opacity: 0.55;
3739
+ :where(.zvk-ui-grid-list__cell) {
3740
+ display: grid;
3741
+ gap: var(--zvk-ui-space-1);
3742
+ min-width: 0;
3743
+ padding: var(--zvk-ui-space-3);
3072
3744
  }
3073
3745
 
3074
- :where(.zvk-ui-table__sort-direction) {
3746
+ :where(.zvk-ui-grid-list__empty, .zvk-ui-grid-list__loading) {
3075
3747
  color: var(--zvk-ui-color-muted-foreground);
3076
- font-size: var(--zvk-ui-font-size-xs);
3077
- font-weight: 500;
3078
- line-height: 1;
3748
+ font-size: var(--zvk-ui-font-size-sm);
3749
+ padding: var(--zvk-ui-space-4);
3750
+ text-align: center;
3079
3751
  }
3752
+ }
3080
3753
 
3081
- :where(.zvk-ui-table__row) {
3082
- border-bottom: 1px solid var(--zvk-ui-color-border-subtle);
3754
+
3755
+ /* src/components/tree-view/tree-view.css */
3756
+ @layer zvk-ui-components {
3757
+ :where(.zvk-ui-tree-view) {
3758
+ display: grid;
3759
+ gap: var(--zvk-ui-space-1);
3760
+ min-width: 0;
3083
3761
  }
3084
3762
 
3085
- :where(.zvk-ui-table__row:last-child) {
3086
- border-bottom: none;
3763
+ :where(.zvk-ui-tree-view__item) {
3764
+ align-items: center;
3765
+ border: 1px solid transparent;
3766
+ border-radius: var(--zvk-ui-radius-sm);
3767
+ color: var(--zvk-ui-color-foreground);
3768
+ cursor: pointer;
3769
+ display: flex;
3770
+ font-size: var(--zvk-ui-font-size-sm);
3771
+ gap: var(--zvk-ui-space-2);
3772
+ min-height: var(--zvk-ui-control-height-sm);
3773
+ min-width: 0;
3774
+ padding-block: var(--zvk-ui-space-1);
3775
+ padding-inline: calc(var(--zvk-ui-space-2) + var(--zvk-ui-tree-view-indent, 0rem)) var(--zvk-ui-space-2);
3776
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
3087
3777
  }
3088
3778
 
3089
- :where(.zvk-ui-table__state-row) {
3090
- color: var(--zvk-ui-color-muted-foreground);
3779
+ :where(.zvk-ui-tree-view__item:hover:not([data-disabled="true"])) {
3780
+ background: var(--zvk-ui-control-hover);
3091
3781
  }
3092
3782
 
3093
- :where(.zvk-ui-table__state-row[data-state="loading"]) {
3094
- color: var(--zvk-ui-color-foreground);
3783
+ :where(.zvk-ui-tree-view__item:focus-visible) {
3784
+ box-shadow: var(--zvk-ui-focus-ring);
3785
+ outline: 0;
3095
3786
  }
3096
3787
 
3097
- :where(.zvk-ui-table__state-row[data-state="error"]) {
3098
- color: var(--zvk-ui-color-destructive);
3788
+ :where(.zvk-ui-tree-view__item[data-active="true"]) {
3789
+ border-color: var(--zvk-ui-color-border-strong);
3099
3790
  }
3100
3791
 
3101
- :where(.zvk-ui-table__state-cell) {
3102
- padding-block: calc(var(--zvk-ui-table-cell-padding-y) * 2);
3103
- text-align: center;
3792
+ :where(.zvk-ui-tree-view__item[data-selected="true"]) {
3793
+ background: var(--zvk-ui-color-muted);
3794
+ border-color: var(--zvk-ui-color-primary);
3104
3795
  }
3105
3796
 
3106
- @media (max-width: 40rem) {
3107
- :where(.zvk-ui-table-container) {
3108
- box-shadow:
3109
- inset var(--zvk-ui-space-2) 0 var(--zvk-ui-space-3) calc(-1 * var(--zvk-ui-space-3)) color-mix(in srgb, var(--zvk-ui-color-foreground) 18%, transparent),
3110
- inset calc(-1 * var(--zvk-ui-space-2)) 0 var(--zvk-ui-space-3) calc(-1 * var(--zvk-ui-space-3)) color-mix(in srgb, var(--zvk-ui-color-foreground) 18%, transparent);
3111
- scrollbar-width: thin;
3112
- }
3797
+ :where(.zvk-ui-tree-view__item[data-disabled="true"]) {
3798
+ cursor: not-allowed;
3799
+ opacity: var(--zvk-ui-opacity-disabled);
3113
3800
  }
3114
3801
  }
3115
3802
 
@@ -4481,7 +5168,7 @@
4481
5168
  cursor: default;
4482
5169
  display: flex;
4483
5170
  gap: var(--zvk-ui-space-2);
4484
- justify-content: space-between;
5171
+ justify-content: flex-start;
4485
5172
  padding: var(--zvk-ui-space-2) var(--zvk-ui-space-3);
4486
5173
  text-align: left;
4487
5174
  user-select: none;
@@ -4962,7 +5649,7 @@
4962
5649
  display: flex;
4963
5650
  font: inherit;
4964
5651
  gap: var(--zvk-ui-space-2);
4965
- justify-content: space-between;
5652
+ justify-content: flex-start;
4966
5653
  padding: var(--zvk-ui-space-2) var(--zvk-ui-space-3);
4967
5654
  text-align: start;
4968
5655
  }
@@ -5112,7 +5799,7 @@
5112
5799
  align-items: center;
5113
5800
  display: flex;
5114
5801
  gap: var(--zvk-ui-space-2);
5115
- justify-content: space-between;
5802
+ justify-content: flex-start;
5116
5803
  padding: var(--zvk-ui-space-2) var(--zvk-ui-space-3);
5117
5804
  text-align: start;
5118
5805
  }
@@ -5577,6 +6264,164 @@
5577
6264
  }
5578
6265
 
5579
6266
 
6267
+ /* src/components/splitter/splitter.css */
6268
+ @layer zvk-ui-components {
6269
+ :where(.zvk-ui-splitter) {
6270
+ align-items: stretch;
6271
+ display: flex;
6272
+ gap: 0;
6273
+ min-height: 0;
6274
+ min-width: 0;
6275
+ overflow: hidden;
6276
+ }
6277
+
6278
+ :where(.zvk-ui-splitter[data-orientation="vertical"]) {
6279
+ flex-direction: column;
6280
+ }
6281
+
6282
+ :where(.zvk-ui-splitter__panel) {
6283
+ min-height: 0;
6284
+ min-width: 0;
6285
+ overflow: auto;
6286
+ }
6287
+
6288
+ :where(.zvk-ui-splitter__handle) {
6289
+ align-items: center;
6290
+ align-self: stretch;
6291
+ cursor: col-resize;
6292
+ display: inline-flex;
6293
+ flex: 0 0 var(--zvk-ui-space-2);
6294
+ justify-content: center;
6295
+ outline: 0;
6296
+ position: relative;
6297
+ touch-action: none;
6298
+ }
6299
+
6300
+ :where(.zvk-ui-splitter__handle)::before {
6301
+ background: var(--zvk-ui-color-border);
6302
+ border-radius: var(--zvk-ui-radius-full);
6303
+ content: "";
6304
+ display: block;
6305
+ height: 100%;
6306
+ min-height: var(--zvk-ui-space-6);
6307
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
6308
+ width: 1px;
6309
+ }
6310
+
6311
+ :where(.zvk-ui-splitter__handle:hover:not([data-disabled="true"]))::before {
6312
+ background: var(--zvk-ui-color-border-strong);
6313
+ }
6314
+
6315
+ :where(.zvk-ui-splitter__handle:focus-visible)::before {
6316
+ background: var(--zvk-ui-color-primary);
6317
+ box-shadow: var(--zvk-ui-focus-ring);
6318
+ }
6319
+
6320
+ :where(.zvk-ui-splitter__handle[data-orientation="horizontal"]) {
6321
+ align-self: stretch;
6322
+ cursor: row-resize;
6323
+ flex-basis: var(--zvk-ui-space-2);
6324
+ }
6325
+
6326
+ :where(.zvk-ui-splitter__handle[data-orientation="horizontal"])::before {
6327
+ height: 1px;
6328
+ min-height: 0;
6329
+ min-width: var(--zvk-ui-space-6);
6330
+ width: 100%;
6331
+ }
6332
+
6333
+ :where(.zvk-ui-splitter__handle[data-disabled="true"]) {
6334
+ cursor: not-allowed;
6335
+ opacity: var(--zvk-ui-opacity-disabled);
6336
+ }
6337
+ }
6338
+
6339
+
6340
+ /* src/components/toolbar/toolbar.css */
6341
+ @layer zvk-ui-components {
6342
+ :where(.zvk-ui-toolbar) {
6343
+ align-items: center;
6344
+ display: inline-flex;
6345
+ flex-wrap: wrap;
6346
+ gap: var(--zvk-ui-space-1);
6347
+ min-width: 0;
6348
+ }
6349
+
6350
+ :where(.zvk-ui-toolbar[data-orientation="vertical"]) {
6351
+ align-items: stretch;
6352
+ flex-direction: column;
6353
+ }
6354
+
6355
+ :where(.zvk-ui-toolbar__group) {
6356
+ align-items: center;
6357
+ display: inline-flex;
6358
+ gap: var(--zvk-ui-space-1);
6359
+ min-width: 0;
6360
+ }
6361
+
6362
+ :where(.zvk-ui-toolbar[data-orientation="vertical"] .zvk-ui-toolbar__group) {
6363
+ align-items: stretch;
6364
+ flex-direction: column;
6365
+ }
6366
+
6367
+ :where(.zvk-ui-toolbar__button) {
6368
+ align-items: center;
6369
+ appearance: none;
6370
+ background: transparent;
6371
+ border: 1px solid transparent;
6372
+ border-radius: var(--zvk-ui-radius-sm);
6373
+ color: var(--zvk-ui-color-foreground);
6374
+ cursor: pointer;
6375
+ display: inline-flex;
6376
+ font-family: var(--zvk-ui-font-family-primary);
6377
+ font-size: var(--zvk-ui-font-size-sm);
6378
+ font-weight: 600;
6379
+ gap: var(--zvk-ui-control-gap);
6380
+ height: var(--zvk-ui-control-height-sm);
6381
+ justify-content: center;
6382
+ line-height: 1;
6383
+ min-width: var(--zvk-ui-control-height-sm);
6384
+ padding-inline: calc(var(--zvk-ui-control-padding-x) - 0.125rem);
6385
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
6386
+ user-select: none;
6387
+ }
6388
+
6389
+ :where(.zvk-ui-toolbar__button:hover:not(:disabled, [data-disabled="true"])) {
6390
+ background: var(--zvk-ui-control-hover);
6391
+ }
6392
+
6393
+ :where(.zvk-ui-toolbar__button:focus-visible) {
6394
+ box-shadow: var(--zvk-ui-focus-ring);
6395
+ outline: 0;
6396
+ }
6397
+
6398
+ :where(.zvk-ui-toolbar__button:disabled, .zvk-ui-toolbar__button[data-disabled="true"]) {
6399
+ cursor: not-allowed;
6400
+ opacity: var(--zvk-ui-opacity-disabled);
6401
+ }
6402
+
6403
+ :where(.zvk-ui-toolbar__toggle[data-state="on"]) {
6404
+ background: var(--zvk-ui-color-muted);
6405
+ border-color: var(--zvk-ui-color-border-strong);
6406
+ }
6407
+
6408
+ :where(.zvk-ui-toolbar__separator) {
6409
+ align-self: stretch;
6410
+ background: var(--zvk-ui-color-border);
6411
+ flex: 0 0 1px;
6412
+ margin: var(--zvk-ui-space-1);
6413
+ min-height: var(--zvk-ui-control-height-sm);
6414
+ width: 1px;
6415
+ }
6416
+
6417
+ :where(.zvk-ui-toolbar__separator[data-orientation="horizontal"]) {
6418
+ height: 1px;
6419
+ min-height: 0;
6420
+ width: auto;
6421
+ }
6422
+ }
6423
+
6424
+
5580
6425
  /* src/components/toast/toast.css */
5581
6426
  @layer zvk-ui-components {
5582
6427
  :where(.zvk-ui-toast-viewport) {