@svkit/styles 0.0.2-beta.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 (179) hide show
  1. package/dist/components/accordion.css +82 -0
  2. package/dist/components/accordion.js +1 -0
  3. package/dist/components/alert-dialog.css +26 -0
  4. package/dist/components/alert-dialog.js +1 -0
  5. package/dist/components/alert.css +21 -0
  6. package/dist/components/alert.js +1 -0
  7. package/dist/components/avatar.css +158 -0
  8. package/dist/components/avatar.js +1 -0
  9. package/dist/components/badge.css +125 -0
  10. package/dist/components/badge.js +1 -0
  11. package/dist/components/breadcrumb.css +30 -0
  12. package/dist/components/breadcrumb.js +1 -0
  13. package/dist/components/button-group.css +99 -0
  14. package/dist/components/button-group.js +1 -0
  15. package/dist/components/button.css +205 -0
  16. package/dist/components/button.js +1 -0
  17. package/dist/components/calendar.css +34 -0
  18. package/dist/components/calendar.js +1 -0
  19. package/dist/components/card.css +114 -0
  20. package/dist/components/card.js +1 -0
  21. package/dist/components/carousel.css +5 -0
  22. package/dist/components/carousel.js +1 -0
  23. package/dist/components/chart.css +5 -0
  24. package/dist/components/chart.js +1 -0
  25. package/dist/components/checkbox.css +20 -0
  26. package/dist/components/checkbox.js +1 -0
  27. package/dist/components/command.css +14 -0
  28. package/dist/components/command.js +1 -0
  29. package/dist/components/context-menu.css +43 -0
  30. package/dist/components/context-menu.js +1 -0
  31. package/dist/components/data-table.css +5 -0
  32. package/dist/components/data-table.js +1 -0
  33. package/dist/components/dialog.css +30 -0
  34. package/dist/components/dialog.js +1 -0
  35. package/dist/components/drawer.css +10 -0
  36. package/dist/components/drawer.js +1 -0
  37. package/dist/components/dropdown-menu.css +195 -0
  38. package/dist/components/dropdown-menu.js +1 -0
  39. package/dist/components/empty.css +25 -0
  40. package/dist/components/empty.js +1 -0
  41. package/dist/components/field.css +25 -0
  42. package/dist/components/field.js +1 -0
  43. package/dist/components/form.css +7 -0
  44. package/dist/components/form.js +1 -0
  45. package/dist/components/hover-card.css +3 -0
  46. package/dist/components/hover-card.js +1 -0
  47. package/dist/components/index.css +55 -0
  48. package/dist/components/index.js +1 -0
  49. package/dist/components/input-group.css +42 -0
  50. package/dist/components/input-group.js +1 -0
  51. package/dist/components/input-otp.css +33 -0
  52. package/dist/components/input-otp.js +1 -0
  53. package/dist/components/input.css +65 -0
  54. package/dist/components/input.js +1 -0
  55. package/dist/components/item.css +62 -0
  56. package/dist/components/item.js +1 -0
  57. package/dist/components/kbd.css +12 -0
  58. package/dist/components/kbd.js +1 -0
  59. package/dist/components/label.css +20 -0
  60. package/dist/components/label.js +1 -0
  61. package/dist/components/menu.css +110 -0
  62. package/dist/components/menu.js +1 -0
  63. package/dist/components/menubar.css +54 -0
  64. package/dist/components/menubar.js +1 -0
  65. package/dist/components/native-select.css +23 -0
  66. package/dist/components/native-select.js +1 -0
  67. package/dist/components/navigation-menu.css +48 -0
  68. package/dist/components/navigation-menu.js +1 -0
  69. package/dist/components/pagination.css +33 -0
  70. package/dist/components/pagination.js +1 -0
  71. package/dist/components/popover.css +6 -0
  72. package/dist/components/popover.js +1 -0
  73. package/dist/components/progress.css +9 -0
  74. package/dist/components/progress.js +1 -0
  75. package/dist/components/radio-group.css +24 -0
  76. package/dist/components/radio-group.js +1 -0
  77. package/dist/components/range-calendar.css +34 -0
  78. package/dist/components/range-calendar.js +1 -0
  79. package/dist/components/resizable.css +4 -0
  80. package/dist/components/resizable.js +1 -0
  81. package/dist/components/scroll-area.css +18 -0
  82. package/dist/components/scroll-area.js +1 -0
  83. package/dist/components/select.css +57 -0
  84. package/dist/components/select.js +1 -0
  85. package/dist/components/separator.css +13 -0
  86. package/dist/components/separator.js +1 -0
  87. package/dist/components/sheet.css +45 -0
  88. package/dist/components/sheet.js +1 -0
  89. package/dist/components/sidebar.css +71 -0
  90. package/dist/components/sidebar.js +1 -0
  91. package/dist/components/skeleton.css +33 -0
  92. package/dist/components/skeleton.js +1 -0
  93. package/dist/components/slider.css +43 -0
  94. package/dist/components/slider.js +1 -0
  95. package/dist/components/spinner.css +5 -0
  96. package/dist/components/spinner.js +1 -0
  97. package/dist/components/switch.css +46 -0
  98. package/dist/components/switch.js +1 -0
  99. package/dist/components/table.css +10 -0
  100. package/dist/components/table.js +1 -0
  101. package/dist/components/tabs.css +40 -0
  102. package/dist/components/tabs.js +1 -0
  103. package/dist/components/textarea.css +11 -0
  104. package/dist/components/textarea.js +1 -0
  105. package/dist/components/toast.css +156 -0
  106. package/dist/components/toast.js +1 -0
  107. package/dist/components/toggle-group.css +13 -0
  108. package/dist/components/toggle-group.js +1 -0
  109. package/dist/components/toggle.css +25 -0
  110. package/dist/components/toggle.js +1 -0
  111. package/dist/components/tooltip.css +90 -0
  112. package/dist/components/tooltip.js +1 -0
  113. package/dist/index-full.css +11 -0
  114. package/dist/index.css +9 -0
  115. package/dist/index.js +1 -0
  116. package/dist/styles.css +5344 -0
  117. package/index-full.css +11 -0
  118. package/index.css +9 -0
  119. package/package.json +37 -0
  120. package/src/base/base.css +161 -0
  121. package/src/components/accordion.css +82 -0
  122. package/src/components/alert-dialog.css +26 -0
  123. package/src/components/alert.css +21 -0
  124. package/src/components/avatar.css +158 -0
  125. package/src/components/badge.css +125 -0
  126. package/src/components/breadcrumb.css +30 -0
  127. package/src/components/button-group.css +99 -0
  128. package/src/components/button.css +205 -0
  129. package/src/components/calendar.css +34 -0
  130. package/src/components/card.css +114 -0
  131. package/src/components/carousel.css +5 -0
  132. package/src/components/chart.css +5 -0
  133. package/src/components/checkbox.css +20 -0
  134. package/src/components/command.css +14 -0
  135. package/src/components/context-menu.css +43 -0
  136. package/src/components/data-table.css +5 -0
  137. package/src/components/dialog.css +30 -0
  138. package/src/components/drawer.css +10 -0
  139. package/src/components/dropdown-menu.css +195 -0
  140. package/src/components/empty.css +25 -0
  141. package/src/components/field.css +25 -0
  142. package/src/components/form.css +7 -0
  143. package/src/components/hover-card.css +3 -0
  144. package/src/components/index.css +55 -0
  145. package/src/components/input-group.css +42 -0
  146. package/src/components/input-otp.css +33 -0
  147. package/src/components/input.css +65 -0
  148. package/src/components/item.css +62 -0
  149. package/src/components/kbd.css +12 -0
  150. package/src/components/label.css +20 -0
  151. package/src/components/menu.css +110 -0
  152. package/src/components/menubar.css +54 -0
  153. package/src/components/native-select.css +23 -0
  154. package/src/components/navigation-menu.css +48 -0
  155. package/src/components/pagination.css +33 -0
  156. package/src/components/popover.css +6 -0
  157. package/src/components/progress.css +9 -0
  158. package/src/components/radio-group.css +24 -0
  159. package/src/components/range-calendar.css +34 -0
  160. package/src/components/resizable.css +4 -0
  161. package/src/components/scroll-area.css +18 -0
  162. package/src/components/select.css +57 -0
  163. package/src/components/separator.css +13 -0
  164. package/src/components/sheet.css +45 -0
  165. package/src/components/sidebar.css +71 -0
  166. package/src/components/skeleton.css +33 -0
  167. package/src/components/slider.css +43 -0
  168. package/src/components/spinner.css +5 -0
  169. package/src/components/switch.css +46 -0
  170. package/src/components/table.css +10 -0
  171. package/src/components/tabs.css +40 -0
  172. package/src/components/textarea.css +11 -0
  173. package/src/components/toast.css +156 -0
  174. package/src/components/toggle-group.css +13 -0
  175. package/src/components/toggle.css +25 -0
  176. package/src/components/tooltip.css +90 -0
  177. package/src/themes/default.css +91 -0
  178. package/src/tokens/interactions.css +72 -0
  179. package/src/tokens/variables.css +111 -0
@@ -0,0 +1,110 @@
1
+ @layer components {
2
+ /* =========================
3
+ MENU TARGET
4
+ Shared floating panel shell
5
+ ========================== */
6
+
7
+ .sv-menu-target {
8
+ @apply flex flex-col bg-surface text-surface-foreground;
9
+
10
+ min-width: 8rem;
11
+ padding: 0.25rem;
12
+ border-radius: var(--radius);
13
+ box-shadow:
14
+ 0 0 0 1px color-mix(in oklab, var(--color-foreground) 10%, transparent),
15
+ var(--shadow-md);
16
+ outline: none;
17
+
18
+ /* Entrance / exit animations driven by bits-ui data attributes */
19
+ &[data-state="open"] {
20
+ @apply animate-in fade-in-0 zoom-in-95;
21
+ }
22
+
23
+ &[data-state="closed"] {
24
+ @apply animate-out fade-out-0 zoom-out-95;
25
+ }
26
+
27
+ /* Slide direction based on which side the menu opens from */
28
+ &[data-side="bottom"] {
29
+ @apply slide-in-from-top-2;
30
+ }
31
+ &[data-side="top"] {
32
+ @apply slide-in-from-bottom-2;
33
+ }
34
+ &[data-side="left"] {
35
+ @apply slide-in-from-right-2;
36
+ }
37
+ &[data-side="right"] {
38
+ @apply slide-in-from-left-2;
39
+ }
40
+ &[data-side="inline-start"] {
41
+ @apply slide-in-from-right-2;
42
+ }
43
+ &[data-side="inline-end"] {
44
+ @apply slide-in-from-left-2;
45
+ }
46
+ }
47
+
48
+ /* =========================
49
+ MENU TRANSLUCENT
50
+ Frosted glass surface --
51
+ descendant interactive states
52
+ ========================== */
53
+
54
+ .sv-menu-translucent {
55
+ @apply bg-surface/70 relative;
56
+
57
+ &::before {
58
+ content: "";
59
+ @apply pointer-events-none absolute inset-0 rounded-[inherit] backdrop-blur-2xl backdrop-saturate-150;
60
+ z-index: -1;
61
+ animation: none !important;
62
+ }
63
+
64
+ /* Items: focus and data-highlighted */
65
+ [data-slot$="-item"]:focus,
66
+ [data-slot$="-item"][data-highlighted] {
67
+ background-color: color-mix(
68
+ in oklab,
69
+ var(--color-foreground) 10%,
70
+ transparent
71
+ );
72
+ }
73
+
74
+ /* Separators */
75
+ [data-slot$="-separator"] {
76
+ background-color: color-mix(
77
+ in oklab,
78
+ var(--color-foreground) 5%,
79
+ transparent
80
+ );
81
+ }
82
+
83
+ /* Triggers: focus and aria-expanded */
84
+ [data-slot$="-trigger"]:focus,
85
+ [data-slot$="-trigger"][aria-expanded="true"] {
86
+ background-color: color-mix(
87
+ in oklab,
88
+ var(--color-foreground) 10%,
89
+ transparent
90
+ ) !important;
91
+ }
92
+
93
+ /* Destructive variant overrides inside translucent */
94
+ [data-variant="destructive"]:focus {
95
+ background-color: color-mix(
96
+ in oklab,
97
+ var(--color-foreground) 10%,
98
+ transparent
99
+ ) !important;
100
+ }
101
+
102
+ [data-variant="destructive"] {
103
+ @apply text-secondary-foreground!;
104
+ }
105
+
106
+ [data-variant="destructive"] *:not([data-slot]) {
107
+ @apply text-secondary-foreground!;
108
+ }
109
+ }
110
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,54 @@
1
+ @layer components {
2
+ .sv-menubar {
3
+ @apply flex h-8 items-center gap-0.5 rounded-lg border border-border bg-surface p-[3px];
4
+ }
5
+
6
+ .sv-menubar-trigger {
7
+ @apply rounded-sm px-1.5 py-[2px] text-sm font-medium outline-none transition-colors;
8
+ @apply hover:bg-muted;
9
+ @apply aria-expanded:bg-muted;
10
+ @apply focus-visible:ring-ring/50 focus-visible:ring-3;
11
+ }
12
+
13
+ .sv-menubar-content {
14
+ @apply min-w-36;
15
+ }
16
+
17
+ .sv-menubar-item {
18
+ @apply cursor-default rounded-sm px-2 py-1.5 text-sm outline-none select-none;
19
+ @apply data-highlighted:bg-surface data-highlighted:text-surface-foreground;
20
+ @apply data-disabled:pointer-events-none data-disabled:opacity-50;
21
+ }
22
+
23
+ .sv-menubar-checkbox-item,
24
+ .sv-menubar-radio-item {
25
+ @apply cursor-default rounded-sm py-1 pr-8 pl-6 text-sm outline-none select-none;
26
+ @apply data-highlighted:bg-surface data-highlighted:text-surface-foreground;
27
+ @apply data-disabled:pointer-events-none data-disabled:opacity-50;
28
+ }
29
+
30
+ .sv-menubar-label {
31
+ @apply text-muted-foreground px-2 py-1.5 text-xs font-medium;
32
+ }
33
+
34
+ .sv-menubar-separator {
35
+ @apply bg-border -mx-1 my-1 h-px;
36
+ }
37
+
38
+ .sv-menubar-shortcut {
39
+ @apply text-muted-foreground ml-auto text-xs tracking-widest;
40
+ }
41
+
42
+ .sv-menubar-sub-trigger {
43
+ @apply cursor-default rounded-sm px-2 py-1.5 text-sm outline-none select-none;
44
+ @apply data-highlighted:bg-surface data-highlighted:text-surface-foreground;
45
+ }
46
+
47
+ .sv-menubar-sub-content {
48
+ @apply min-w-36;
49
+ }
50
+
51
+ .sv-menubar-group-heading {
52
+ @apply text-muted-foreground px-2 py-1.5 text-xs font-medium;
53
+ }
54
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,23 @@
1
+ @layer components {
2
+ .sv-native-select-wrapper {
3
+ @apply relative w-fit;
4
+ }
5
+
6
+ .sv-native-select {
7
+ @apply border-border h-8 w-full min-w-0 appearance-none rounded-lg border bg-transparent py-1 pr-8 pl-2.5 text-sm outline-none transition-colors select-none;
8
+ @apply focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3;
9
+ @apply disabled:pointer-events-none disabled:cursor-not-allowed;
10
+ }
11
+
12
+ .sv-native-select[data-size='sm'] {
13
+ @apply h-7;
14
+ }
15
+
16
+ .sv-native-select[aria-invalid='true'] {
17
+ @apply border-danger ring-danger/20 ring-3;
18
+ }
19
+
20
+ .sv-native-select-icon {
21
+ @apply text-muted-foreground pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 select-none;
22
+ }
23
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,48 @@
1
+ @layer components {
2
+ .sv-navigation-menu {
3
+ @apply relative flex max-w-max flex-1 items-center justify-center;
4
+ }
5
+
6
+ .sv-navigation-menu-list {
7
+ @apply flex flex-1 list-none items-center justify-center;
8
+ }
9
+
10
+ .sv-navigation-menu-trigger {
11
+ @apply inline-flex h-9 w-max items-center justify-center gap-1 rounded-sm px-2.5 py-1 text-sm font-medium outline-none transition-colors;
12
+ @apply hover:bg-surface;
13
+ @apply focus-visible:ring-ring/50 focus-visible:ring-3;
14
+ @apply disabled:pointer-events-none;
15
+ }
16
+
17
+ .sv-navigation-menu-trigger-icon {
18
+ @apply size-3.5;
19
+ }
20
+
21
+ .sv-navigation-menu-content {
22
+ @apply absolute top-0 left-0 w-full md:absolute md:w-auto;
23
+ }
24
+
25
+ .sv-navigation-menu-item {
26
+ @apply relative;
27
+ }
28
+
29
+ .sv-navigation-menu-link {
30
+ @apply text-sm;
31
+ }
32
+
33
+ .sv-navigation-menu-indicator {
34
+ @apply top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden;
35
+ }
36
+
37
+ .sv-navigation-menu-indicator-arrow {
38
+ @apply relative top-[60%] h-2 w-2 rotate-45 bg-surface;
39
+ }
40
+
41
+ .sv-navigation-menu-viewport-wrapper {
42
+ @apply absolute start-0 top-full z-50 flex justify-center;
43
+ }
44
+
45
+ .sv-navigation-menu-viewport {
46
+ @apply relative mt-1.5 h-(--bits-navigation-menu-viewport-height) w-full overflow-hidden rounded-lg border border-border bg-surface shadow-lg md:w-(--bits-navigation-menu-viewport-width);
47
+ }
48
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,33 @@
1
+ @layer components {
2
+ .sv-pagination {
3
+ @apply mx-auto flex w-full justify-center;
4
+ }
5
+
6
+ .sv-pagination-content {
7
+ @apply flex items-center gap-0.5;
8
+ }
9
+
10
+ .sv-pagination-link {
11
+ @apply inline-flex size-8 items-center justify-center rounded-lg text-sm font-medium transition-colors;
12
+ @apply hover:bg-surface;
13
+ }
14
+
15
+ .sv-pagination-link[data-active] {
16
+ @apply border-border border bg-transparent;
17
+ }
18
+
19
+ .sv-pagination-ellipsis {
20
+ @apply inline-flex size-8 items-center justify-center;
21
+ & > svg {
22
+ @apply size-4;
23
+ }
24
+ }
25
+
26
+ .sv-pagination-previous {
27
+ @apply gap-1 pl-1.5;
28
+ }
29
+
30
+ .sv-pagination-next {
31
+ @apply gap-1 pr-1.5;
32
+ }
33
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,6 @@
1
+ @layer components {
2
+ .sv-popover-content {
3
+ @apply bg-surface text-surface-foreground z-50 w-72 rounded-lg border border-border p-2.5 text-sm shadow-md outline-hidden;
4
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95;
5
+ }
6
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,9 @@
1
+ @layer components {
2
+ .sv-progress {
3
+ @apply bg-muted relative flex h-1 w-full items-center overflow-x-hidden rounded-full;
4
+ }
5
+
6
+ .sv-progress-indicator {
7
+ @apply bg-primary size-full flex-1 rounded-full transition-all;
8
+ }
9
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,24 @@
1
+ @layer components {
2
+ .sv-radio-group {
3
+ @apply grid w-full gap-2;
4
+ }
5
+
6
+ .sv-radio-group-item {
7
+ @apply border-border relative aspect-square size-4 shrink-0 rounded-full border outline-none;
8
+ @apply focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3;
9
+ @apply disabled:cursor-not-allowed disabled:opacity-50;
10
+ @apply data-checked:bg-primary data-checked:border-primary;
11
+ }
12
+
13
+ .sv-radio-group-item[aria-invalid='true'] {
14
+ @apply border-danger ring-danger/20 ring-3;
15
+ }
16
+
17
+ .sv-radio-group-indicator {
18
+ @apply flex size-4 items-center justify-center;
19
+ }
20
+
21
+ .sv-radio-group-indicator-icon {
22
+ @apply text-primary-foreground size-2 fill-current;
23
+ }
24
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,34 @@
1
+ @layer components {
2
+ .sv-range-calendar {
3
+ @apply p-2;
4
+ }
5
+
6
+ .sv-range-calendar-header {
7
+ @apply flex items-center justify-between pb-2;
8
+ }
9
+
10
+ .sv-range-calendar-heading {
11
+ @apply text-sm font-medium;
12
+ }
13
+
14
+ .sv-range-calendar-grid {
15
+ @apply w-full border-collapse;
16
+ }
17
+
18
+ .sv-range-calendar-head-cell {
19
+ @apply text-muted-foreground w-8 rounded-md text-xs font-normal;
20
+ }
21
+
22
+ .sv-range-calendar-cell {
23
+ @apply text-center text-sm p-0 relative [&:has([data-selected])]:bg-primary [&:has([data-selected])]:rounded-md;
24
+ }
25
+
26
+ .sv-range-calendar-day {
27
+ @apply h-8 w-8 p-0 font-normal aria-selected:opacity-100 rounded-md hover:bg-surface data-selected:bg-primary data-selected:text-primary-foreground data-today:bg-surface data-disabled:opacity-50 data-disabled:pointer-events-none data-outside-month:opacity-30;
28
+ }
29
+
30
+ .sv-range-calendar-prev-button,
31
+ .sv-range-calendar-next-button {
32
+ @apply size-7 bg-transparent p-0 opacity-50 hover:opacity-100;
33
+ }
34
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,4 @@
1
+ @layer components {
2
+ .sv-resizable-pane-group { @apply flex h-full w-full data-direction-vertical:flex-col; }
3
+ .sv-resizable-handle { @apply bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-direction-vertical:h-px data-direction-vertical:w-full; }
4
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,18 @@
1
+ @layer components {
2
+ .sv-scroll-area {
3
+ @apply relative;
4
+ }
5
+
6
+ .sv-scroll-area-viewport {
7
+ @apply size-full rounded-[inherit] outline-none transition-[color,box-shadow];
8
+ @apply focus-visible:ring-ring/50 focus-visible:ring-3;
9
+ }
10
+
11
+ .sv-scroll-area-scrollbar {
12
+ @apply flex touch-none select-none p-px transition-colors;
13
+ }
14
+
15
+ .sv-scroll-area-thumb {
16
+ @apply bg-border relative flex-1 rounded-full;
17
+ }
18
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,57 @@
1
+ @layer components {
2
+ .sv-select-trigger {
3
+ @apply flex w-fit items-center justify-between gap-1.5 whitespace-nowrap rounded-lg border border-border bg-transparent py-2 pr-2 pl-2.5 text-sm outline-none transition-colors select-none;
4
+ @apply focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3;
5
+ @apply disabled:cursor-not-allowed disabled:opacity-50;
6
+ }
7
+
8
+ .sv-select-trigger[data-size='md'] {
9
+ @apply h-8;
10
+ }
11
+
12
+ .sv-select-trigger[data-size='sm'] {
13
+ @apply h-7;
14
+ }
15
+
16
+ .sv-select-trigger-icon {
17
+ @apply text-muted-foreground size-4 pointer-events-none;
18
+ }
19
+
20
+ .sv-select-content {
21
+ @apply relative z-50 overflow-x-hidden overflow-y-auto;
22
+ }
23
+
24
+ .sv-select-item {
25
+ @apply relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-none select-none;
26
+ @apply focus:bg-surface focus:text-surface-foreground;
27
+ @apply data-disabled:pointer-events-none data-disabled:opacity-50;
28
+ }
29
+
30
+ .sv-select-item-indicator {
31
+ @apply pointer-events-none absolute right-2 flex size-4 items-center justify-center;
32
+ }
33
+
34
+ .sv-select-label {
35
+ @apply text-muted-foreground px-1.5 py-1 text-xs;
36
+ }
37
+
38
+ .sv-select-separator {
39
+ @apply bg-border -mx-1 my-1 h-px;
40
+ }
41
+
42
+ .sv-select-group {
43
+ @apply scroll-my-1 p-1;
44
+ }
45
+
46
+ .sv-select-group-heading {
47
+ @apply text-muted-foreground px-2 py-1.5 text-xs;
48
+ }
49
+
50
+ .sv-select-scroll-up-button,
51
+ .sv-select-scroll-down-button {
52
+ @apply z-10 flex cursor-default items-center justify-center py-1;
53
+ & > svg {
54
+ @apply size-4;
55
+ }
56
+ }
57
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,13 @@
1
+ @layer components {
2
+ .sv-separator {
3
+ @apply bg-border shrink-0;
4
+
5
+ &[data-orientation="horizontal"] {
6
+ @apply h-px w-full;
7
+ }
8
+
9
+ &[data-orientation="vertical"] {
10
+ @apply w-px h-full;
11
+ }
12
+ }
13
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,45 @@
1
+ @layer components {
2
+ .sv-sheet-overlay {
3
+ @apply fixed inset-0 z-50 bg-black/10;
4
+ }
5
+
6
+ .sv-sheet-content {
7
+ @apply bg-surface text-surface-foreground fixed z-50 flex flex-col gap-4 border-border bg-clip-padding p-4 text-sm shadow-lg transition duration-200 ease-in-out;
8
+ }
9
+
10
+ .sv-sheet-content[data-side='bottom'] {
11
+ @apply inset-x-0 bottom-0 h-auto border-t;
12
+ }
13
+
14
+ .sv-sheet-content[data-side='left'] {
15
+ @apply inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm;
16
+ }
17
+
18
+ .sv-sheet-content[data-side='right'] {
19
+ @apply inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm;
20
+ }
21
+
22
+ .sv-sheet-content[data-side='top'] {
23
+ @apply inset-x-0 top-0 h-auto border-b;
24
+ }
25
+
26
+ .sv-sheet-close {
27
+ @apply absolute top-3 right-3;
28
+ }
29
+
30
+ .sv-sheet-header {
31
+ @apply flex flex-col gap-0.5 p-4;
32
+ }
33
+
34
+ .sv-sheet-footer {
35
+ @apply mt-auto flex flex-col gap-2 p-4;
36
+ }
37
+
38
+ .sv-sheet-title {
39
+ @apply text-foreground text-base font-medium;
40
+ }
41
+
42
+ .sv-sheet-description {
43
+ @apply text-muted-foreground text-sm;
44
+ }
45
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,71 @@
1
+ @layer components {
2
+ .sv-sidebar {
3
+ @apply bg-surface text-surface-foreground flex h-full w-[16rem] flex-col border-r border-border transition-[width] duration-200;
4
+ }
5
+ .sv-sidebar[data-state=closed] {
6
+ @apply w-[3rem];
7
+ }
8
+ .sv-sidebar-header {
9
+ @apply flex flex-col gap-2 p-2;
10
+ }
11
+ .sv-sidebar-footer {
12
+ @apply flex flex-col gap-2 p-2;
13
+ }
14
+ .sv-sidebar-content {
15
+ @apply flex flex-1 flex-col gap-2 overflow-auto p-2;
16
+ }
17
+ .sv-sidebar-group {
18
+ @apply flex flex-col gap-1;
19
+ }
20
+ .sv-sidebar-group-label {
21
+ @apply text-muted-foreground px-2 text-xs font-medium;
22
+ }
23
+ .sv-sidebar-menu {
24
+ @apply flex flex-col gap-1;
25
+ }
26
+ .sv-sidebar-menu-item {
27
+ @apply relative;
28
+ }
29
+ .sv-sidebar-menu-button {
30
+ @apply flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-sm font-medium outline-none transition-colors hover:bg-muted data-active:bg-muted;
31
+ }
32
+ .sv-sidebar-menu-button[data-size=sm] {
33
+ @apply text-xs;
34
+ }
35
+ .sv-sidebar-menu-button[data-size=lg] {
36
+ @apply text-base;
37
+ }
38
+ .sv-sidebar-group-content {
39
+ @apply flex flex-col gap-1;
40
+ }
41
+ .sv-sidebar-group-action {
42
+ @apply opacity-0 group-hover/sidebar-group:opacity-100;
43
+ }
44
+ .sv-sidebar-menu-sub {
45
+ @apply flex flex-col gap-1 pl-4;
46
+ }
47
+ .sv-sidebar-menu-sub-button {
48
+ @apply flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-none transition-colors hover:bg-muted;
49
+ }
50
+ .sv-sidebar-menu-sub-item {
51
+ @apply flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-none transition-colors hover:bg-muted;
52
+ }
53
+ .sv-sidebar-menu-action {
54
+ @apply opacity-0 group-hover/sidebar-menu-item:opacity-100;
55
+ }
56
+ .sv-sidebar-menu-badge {
57
+ @apply pointer-events-none absolute right-2 flex h-5 min-w-5 items-center justify-center rounded-full px-1 text-xs;
58
+ }
59
+ .sv-sidebar-rail {
60
+ @apply w-[3rem];
61
+ }
62
+ .sv-sidebar-trigger {
63
+ @apply absolute top-2 right-2;
64
+ }
65
+ .sv-sidebar-inset {
66
+ @apply p-4;
67
+ }
68
+ .sv-sidebar-separator {
69
+ @apply mx-2;
70
+ }
71
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,33 @@
1
+ @layer components {
2
+ .sv-skeleton {
3
+ @apply bg-surface rounded-md;
4
+ }
5
+
6
+ .sv-skeleton:is(.sv-animation-type--none, [data-animation-type="none"]) {
7
+ /* No animation styles applied */
8
+ }
9
+
10
+ .sv-skeleton:is(.sv-animation-type--pulse, [data-animation-type="pulse"]) {
11
+ @apply animate-pulse;
12
+ }
13
+
14
+ .sv-skeleton:is(
15
+ .sv-animation-type--shimmer,
16
+ [data-animation-type="shimmer"]
17
+ ) {
18
+ @apply relative overflow-hidden;
19
+
20
+ &::before {
21
+ --animate-skeleton: skeleton 1.5s linear infinite;
22
+
23
+ @apply animate-(--animate-skeleton) via-muted absolute inset-0 -translate-x-full
24
+ bg-linear-to-r from-transparent to-transparent content-[''];
25
+ }
26
+ }
27
+
28
+ @keyframes skeleton {
29
+ 100% {
30
+ transform: translateX(200%);
31
+ }
32
+ }
33
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';