@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,205 @@
1
+ @layer components {
2
+ .sv-button {
3
+ @apply inline-flex items-center justify-center gap-1.5 tracking-wide whitespace-nowrap select-none;
4
+
5
+ font-weight: 500;
6
+ line-height: 1;
7
+
8
+ border-radius: var(--radius);
9
+ cursor: var(--cursor-interactive);
10
+
11
+ transition: var(--transition-all);
12
+
13
+ background-color: var(--sv-bg);
14
+ color: var(--sv-fg);
15
+ border: var(--border-width) solid var(--sv-border);
16
+
17
+ height: var(--sv-height);
18
+ padding-inline: var(--sv-px);
19
+ font-size: var(--sv-text);
20
+
21
+ --sv-icon-size: 1rem;
22
+
23
+ --sv-bg-hover: var(--state-bg-hover);
24
+ --sv-bg-active: var(--state-bg-hover);
25
+ }
26
+
27
+ /* =========================
28
+ VARIANTS
29
+ ========================== */
30
+
31
+ .sv-button:is(.sv-variant--primary, [data-variant="primary"]) {
32
+ --sv-bg: var(--color-primary);
33
+ --sv-fg: var(--color-primary-foreground);
34
+ --sv-border: transparent;
35
+
36
+ --sv-bg-hover: var(--color-primary-hover);
37
+ --sv-bg-active: var(--color-primary-hover);
38
+ }
39
+
40
+ .sv-button:is(.sv-variant--secondary, [data-variant="secondary"]) {
41
+ --sv-bg: var(--color-secondary);
42
+ --sv-fg: var(--color-secondary-foreground);
43
+
44
+ --sv-bg-hover: var(--color-secondary-hover);
45
+ --sv-bg-active: var(--color-secondary-hover);
46
+ }
47
+
48
+ .sv-button:is(.sv-variant--outline, [data-variant="outline"]) {
49
+ --sv-bg: transparent;
50
+ --sv-fg: var(--color-foreground);
51
+ --sv-border: var(--color-border);
52
+
53
+ --sv-bg-hover: var(--color-surface-hover);
54
+ --sv-bg-active: var(--color-surface-hover);
55
+ }
56
+
57
+ .sv-button:is(.sv-variant--ghost, [data-variant="ghost"]) {
58
+ --sv-bg: transparent;
59
+ --sv-fg: var(--color-foreground);
60
+ --sv-border: transparent;
61
+
62
+ --sv-bg-hover: var(--color-surface-hover);
63
+ --sv-bg-active: var(--color-surface-hover);
64
+ }
65
+
66
+ .sv-button:is(.sv-variant--danger, [data-variant="danger"]) {
67
+ @apply inset-shadow-xs inset-shadow-white/10;
68
+ --sv-bg: var(--color-danger);
69
+ --sv-fg: var(--color-danger-foreground);
70
+
71
+ --sv-bg-hover: var(--color-danger-hover);
72
+ --sv-bg-active: var(--color-danger-hover);
73
+ }
74
+
75
+ .sv-button:is(.sv-variant--link, [data-variant="link"]) {
76
+ --sv-bg: transparent;
77
+ --sv-fg: var(--color-primary-foreground);
78
+ --sv-border: transparent;
79
+
80
+ --sv-bg-hover: transparent;
81
+ --sv-bg-active: transparent;
82
+
83
+ @apply underline-offset-4 hover:underline;
84
+ text-decoration-color: var(--color-primary);
85
+ }
86
+
87
+ /* =========================
88
+ SIZES
89
+ ========================== */
90
+
91
+ .sv-button:is(.sv-size--xs, [data-size="xs"]) {
92
+ --sv-height: 1.5rem; /* 24px */
93
+ --sv-px: 0.5rem;
94
+ --sv-text: 0.75rem;
95
+ --sv-gap: 0.25rem;
96
+ --sv-icon-size: 0.75rem;
97
+ }
98
+
99
+ .sv-button:is(.sv-size--sm, [data-size="sm"]) {
100
+ --sv-height: 1.75rem; /* 28px */
101
+ --sv-px: 0.625rem;
102
+ --sv-text: 0.8rem;
103
+ --sv-gap: 0.25rem;
104
+ --sv-icon-size: 0.875rem;
105
+ }
106
+
107
+ .sv-button:is(.sv-size--md, [data-size="md"]) {
108
+ --sv-height: 2rem; /* 32px */
109
+ --sv-px: 0.75rem;
110
+ --sv-text: 0.875rem;
111
+ --sv-gap: 0.375rem;
112
+ --sv-icon-size: 1rem;
113
+ }
114
+
115
+ .sv-button:is(.sv-size--lg, [data-size="lg"]) {
116
+ --sv-height: 2.25rem; /* 36px */
117
+ --sv-px: 0.875rem;
118
+ --sv-text: 0.9rem;
119
+ --sv-gap: 0.375rem;
120
+ --sv-icon-size: 1.125rem;
121
+ }
122
+
123
+ /* =========================
124
+ ICON SIZES
125
+ ========================== */
126
+
127
+ .sv-button:is(.sv-size--icon-xs, [data-size="icon-xs"]) {
128
+ --sv-height: 1.5rem;
129
+ --sv-px: 0;
130
+ width: var(--sv-height);
131
+ --sv-icon-size: 0.75rem;
132
+ }
133
+
134
+ .sv-button:is(.sv-size--icon-sm, [data-size="icon-sm"]) {
135
+ --sv-height: 1.75rem;
136
+ --sv-px: 0;
137
+ width: var(--sv-height);
138
+ --sv-icon-size: 0.875rem;
139
+ }
140
+
141
+ .sv-button:is(.sv-size--icon, [data-size="icon"]) {
142
+ --sv-height: 2rem;
143
+ --sv-px: 0;
144
+ width: var(--sv-height);
145
+ --sv-icon-size: 1rem;
146
+ }
147
+
148
+ .sv-button:is(.sv-size--icon-lg, [data-size="icon-lg"]) {
149
+ --sv-height: 2.25rem;
150
+ --sv-px: 0;
151
+ width: var(--sv-height);
152
+ --sv-icon-size: 1.125rem;
153
+ }
154
+
155
+ /* =========================
156
+ STATES
157
+ ========================== */
158
+
159
+ .sv-button:hover:not(:disabled) {
160
+ background-color: var(--sv-bg-hover);
161
+ }
162
+
163
+ .sv-button:active:not(:disabled) {
164
+ transform: translateY(var(--press-offset));
165
+ background-color: var(--sv-bg-active);
166
+ }
167
+
168
+ /* =========================
169
+ DISABLED
170
+ ========================== */
171
+
172
+ .sv-button:disabled,
173
+ .sv-button[aria-disabled="true"] {
174
+ opacity: var(--disabled-opacity);
175
+ cursor: var(--cursor-disabled);
176
+ pointer-events: none;
177
+ }
178
+
179
+ /* =========================
180
+ EXTENSIONS
181
+ ========================== */
182
+
183
+ .sv-button:is(.sv-block, [data-block="true"]) {
184
+ @apply w-full;
185
+ }
186
+
187
+ /*.sv-button[aria-expanded='true'] {
188
+ background-color: var(--color-surface-hover);
189
+ }*/
190
+
191
+ .sv-button[aria-invalid="true"] {
192
+ outline-color: var(--color-danger);
193
+ }
194
+
195
+ /* =========================
196
+ ICON SYSTEM
197
+ ========================== */
198
+
199
+ .sv-button > svg,
200
+ .sv-button__icon {
201
+ width: var(--sv-icon-size);
202
+ height: var(--sv-icon-size);
203
+ flex-shrink: 0;
204
+ }
205
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,34 @@
1
+ @layer components {
2
+ .sv-calendar {
3
+ @apply p-2;
4
+ }
5
+
6
+ .sv-calendar-header {
7
+ @apply flex items-center justify-between pb-2;
8
+ }
9
+
10
+ .sv-calendar-heading {
11
+ @apply text-sm font-medium;
12
+ }
13
+
14
+ .sv-calendar-grid {
15
+ @apply w-full border-collapse;
16
+ }
17
+
18
+ .sv-calendar-head-cell {
19
+ @apply text-muted-foreground w-8 rounded-md text-xs font-normal;
20
+ }
21
+
22
+ .sv-calendar-cell {
23
+ @apply [&:has([data-selected])]:bg-primary relative p-0 text-center text-sm [&:has([data-selected])]:rounded-md;
24
+ }
25
+
26
+ .sv-calendar-day {
27
+ @apply hover:bg-surface data-selected:bg-primary data-selected:text-primary-foreground data-today:bg-surface h-8 w-8 rounded-md p-0 font-normal aria-selected:opacity-100 data-disabled:pointer-events-none data-disabled:opacity-50 data-outside-month:opacity-30;
28
+ }
29
+
30
+ .sv-calendar-prev-button,
31
+ .sv-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,114 @@
1
+ @layer components {
2
+ /* =========================
3
+ CARD ROOT
4
+ ========================== */
5
+
6
+ .sv-card {
7
+ @apply bg-surface;
8
+ /* color: var(--color-surface-foreground); */
9
+
10
+ @apply gap-4 overflow-hidden rounded-lg py-4 text-sm;
11
+ @apply ring-1 ring-foreground/10;
12
+
13
+ /* Remove bottom padding when a footer is present */
14
+ &:has([data-slot="card-footer"]) {
15
+ @apply pb-0;
16
+ }
17
+
18
+ /* Remove top padding when the first child is an image */
19
+ &:has(> img:first-child) {
20
+ @apply pt-0;
21
+ }
22
+
23
+ /* Images at the edges get matching radius */
24
+ & > img:first-child {
25
+ @apply rounded-t-lg;
26
+ }
27
+ & > img:last-child {
28
+ @apply rounded-b-lg;
29
+ }
30
+
31
+ /* sm size */
32
+ &[data-size="sm"] {
33
+ @apply gap-3 py-3;
34
+
35
+ &:has([data-slot="card-footer"]) {
36
+ @apply pb-0;
37
+ }
38
+ }
39
+ }
40
+
41
+ /* =========================
42
+ CARD HEADER
43
+ ========================== */
44
+
45
+ .sv-card-header {
46
+ @apply gap-1 rounded-t-lg px-4;
47
+
48
+ /* Bordered header variant */
49
+ &.border-b {
50
+ @apply pb-4;
51
+ }
52
+
53
+ /* sm size — driven by parent group */
54
+ .group\/card[data-size="sm"] & {
55
+ @apply px-3;
56
+
57
+ &.border-b {
58
+ @apply pb-3;
59
+ }
60
+ }
61
+ }
62
+
63
+ /* =========================
64
+ CARD TITLE
65
+ ========================== */
66
+
67
+ .sv-card-title {
68
+ @apply text-base font-medium leading-snug;
69
+
70
+ .group\/card[data-size="sm"] & {
71
+ @apply text-sm;
72
+ }
73
+ }
74
+
75
+ /* =========================
76
+ CARD DESCRIPTION
77
+ ========================== */
78
+
79
+ .sv-card-description {
80
+ @apply text-muted-foreground text-sm;
81
+ }
82
+
83
+ /* =========================
84
+ CARD CONTENT
85
+ ========================== */
86
+
87
+ .sv-card-content {
88
+ @apply px-4;
89
+
90
+ .group\/card[data-size="sm"] & {
91
+ @apply px-3;
92
+ }
93
+ }
94
+
95
+ /* =========================
96
+ CARD FOOTER
97
+ ========================== */
98
+
99
+ .sv-card-footer {
100
+ @apply bg-muted/50 rounded-b-lg border-t border-border p-4;
101
+
102
+ .group\/card[data-size="sm"] & {
103
+ @apply p-3;
104
+ }
105
+ }
106
+
107
+ /* =========================
108
+ CARD ACTION
109
+ ========================== */
110
+
111
+ .sv-card-action {
112
+ /* Layout handled inline via Tailwind utilities (col/row positioning) */
113
+ }
114
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,5 @@
1
+ @layer components {
2
+ .sv-carousel-previous, .sv-carousel-next { @apply absolute touch-manipulation rounded-full; }
3
+ .sv-carousel-previous { @apply left-[-3rem] top-1/2 -translate-y-1/2; }
4
+ .sv-carousel-next { @apply right-[-3rem] top-1/2 -translate-y-1/2; }
5
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,5 @@
1
+ @layer components {
2
+ .sv-chart { @apply flex items-center justify-center; }
3
+ .sv-chart-tooltip { @apply bg-surface text-surface-foreground rounded-lg border border-border px-2.5 py-1.5 text-xs shadow-md; }
4
+ .sv-chart-tooltip-content { @apply flex flex-col gap-1; }
5
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,20 @@
1
+ @layer components {
2
+ .sv-checkbox {
3
+ @apply border-border flex size-4 shrink-0 items-center justify-center rounded-[4px] border transition-colors;
4
+ @apply focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3;
5
+ @apply data-checked:bg-primary data-checked:text-primary-foreground data-checked:border-primary;
6
+ @apply disabled:cursor-not-allowed disabled:opacity-50;
7
+ @apply group-has-[[data-slot=field]]/field:opacity-50;
8
+ }
9
+
10
+ .sv-checkbox[aria-invalid='true'] {
11
+ @apply border-danger ring-danger/20 ring-3;
12
+ }
13
+
14
+ .sv-checkbox-indicator {
15
+ @apply grid place-content-center text-current transition-none;
16
+ & > svg {
17
+ @apply size-3.5;
18
+ }
19
+ }
20
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,14 @@
1
+ @layer components {
2
+ .sv-command { @apply flex size-full flex-col overflow-hidden rounded-lg border border-border bg-surface; }
3
+ .sv-command-input-wrapper { @apply relative flex items-center border-b border-border px-3; }
4
+ .sv-command-input { @apply flex h-9 w-full bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50; }
5
+ .sv-command-input-icon { @apply absolute right-3 size-4 text-muted-foreground; }
6
+ .sv-command-list { @apply max-h-[300px] overflow-y-auto overflow-x-hidden p-1; }
7
+ .sv-command-item { @apply cursor-default rounded-sm px-2 py-1.5 text-sm outline-none select-none data-selected:bg-surface data-disabled:pointer-events-none data-disabled:opacity-50; }
8
+ .sv-command-item-indicator { @apply ml-auto size-4 opacity-0 group-data-checked/command-item:opacity-100; }
9
+ .sv-command-group-heading { @apply text-muted-foreground px-2 py-1.5 text-xs font-medium; }
10
+ .sv-command-empty { @apply py-6 text-center text-sm text-muted-foreground; }
11
+ .sv-command-separator { @apply bg-border -mx-1 my-1 h-px; }
12
+ .sv-command-shortcut { @apply text-muted-foreground ml-auto text-xs tracking-widest; }
13
+ .sv-command-dialog { @apply top-1/3 translate-y-0 overflow-hidden p-0; }
14
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,43 @@
1
+ @layer components {
2
+ .sv-context-menu-content {
3
+ @apply min-w-32;
4
+ }
5
+
6
+ .sv-context-menu-item {
7
+ @apply cursor-default rounded-sm px-2 py-1.5 text-sm outline-none select-none;
8
+ @apply data-highlighted:bg-surface data-highlighted:text-surface-foreground;
9
+ @apply data-disabled:pointer-events-none data-disabled:opacity-50;
10
+ }
11
+
12
+ .sv-context-menu-checkbox-item,
13
+ .sv-context-menu-radio-item {
14
+ @apply cursor-default rounded-sm py-1 pr-8 pl-6 text-sm outline-none select-none;
15
+ @apply data-highlighted:bg-surface data-highlighted:text-surface-foreground;
16
+ @apply data-disabled:pointer-events-none data-disabled:opacity-50;
17
+ }
18
+
19
+ .sv-context-menu-label {
20
+ @apply text-muted-foreground px-2 py-1.5 text-xs font-medium;
21
+ }
22
+
23
+ .sv-context-menu-separator {
24
+ @apply bg-border -mx-1 my-1 h-px;
25
+ }
26
+
27
+ .sv-context-menu-shortcut {
28
+ @apply text-muted-foreground ml-auto text-xs tracking-widest;
29
+ }
30
+
31
+ .sv-context-menu-sub-trigger {
32
+ @apply cursor-default rounded-sm px-2 py-1.5 text-sm outline-none select-none;
33
+ @apply data-highlighted:bg-surface data-highlighted:text-surface-foreground;
34
+ }
35
+
36
+ .sv-context-menu-sub-content {
37
+ @apply min-w-32;
38
+ }
39
+
40
+ .sv-context-menu-group-heading {
41
+ @apply text-muted-foreground px-2 py-1.5 text-xs font-medium;
42
+ }
43
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,5 @@
1
+ @layer components {
2
+ .sv-data-table { @apply w-full overflow-auto; }
3
+ .sv-data-table-toolbar { @apply flex items-center justify-between gap-2 pb-4; }
4
+ .sv-data-table-content { @apply rounded-lg border border-border; }
5
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,30 @@
1
+ @layer components {
2
+ .sv-dialog-overlay {
3
+ @apply fixed inset-0 z-50 bg-black/10 data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0;
4
+ }
5
+
6
+ .sv-dialog-content {
7
+ @apply bg-surface text-surface-foreground fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl border border-border p-4 text-sm shadow-lg outline-none sm:max-w-sm;
8
+ @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;
9
+ }
10
+
11
+ .sv-dialog-close {
12
+ @apply absolute top-2 right-2;
13
+ }
14
+
15
+ .sv-dialog-header {
16
+ @apply flex flex-col gap-2;
17
+ }
18
+
19
+ .sv-dialog-footer {
20
+ @apply -mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t border-border bg-muted/50 p-4 sm:flex-row sm:justify-end;
21
+ }
22
+
23
+ .sv-dialog-title {
24
+ @apply text-base leading-none font-medium;
25
+ }
26
+
27
+ .sv-dialog-description {
28
+ @apply text-muted-foreground text-sm;
29
+ }
30
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';
@@ -0,0 +1,10 @@
1
+ @layer components {
2
+ .sv-drawer-overlay { @apply fixed inset-0 z-50 bg-black/10; }
3
+ .sv-drawer-content { @apply bg-surface text-surface-foreground fixed z-50 flex flex-col border-border text-sm; }
4
+ .sv-drawer-content[data-vaul-drawer-direction=bottom] { @apply inset-x-0 bottom-0 mt-24 max-h-[80vh] rounded-t-xl border-t; }
5
+ .sv-drawer-handle { @apply bg-muted mx-auto mt-4 h-1 w-[100px] shrink-0 rounded-full; }
6
+ .sv-drawer-header { @apply flex flex-col gap-0.5 p-4 text-center; }
7
+ .sv-drawer-title { @apply text-foreground text-base font-medium; }
8
+ .sv-drawer-description { @apply text-muted-foreground text-sm; }
9
+ .sv-drawer-footer { @apply mt-auto flex flex-col gap-2 p-4; }
10
+ }
@@ -0,0 +1 @@
1
+ import '../styles.css';