@health-samurai/react-components 0.0.0-alpha.3 → 0.0.0-alpha.5

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 (251) hide show
  1. package/dist/bundle.css +687 -446
  2. package/dist/src/components/code-editor/http/grammar/http.d.ts +3 -0
  3. package/dist/src/components/code-editor/http/grammar/http.d.ts.map +1 -0
  4. package/dist/src/components/code-editor/http/grammar/http.grammar +74 -0
  5. package/dist/src/components/code-editor/http/grammar/http.js +38 -0
  6. package/dist/src/components/code-editor/http/grammar/http.js.map +1 -0
  7. package/dist/src/components/code-editor/http/grammar/http.terms.d.ts +2 -0
  8. package/dist/src/components/code-editor/http/grammar/http.terms.d.ts.map +1 -0
  9. package/dist/src/components/code-editor/http/grammar/http.terms.js +4 -0
  10. package/dist/src/components/code-editor/http/grammar/http.terms.js.map +1 -0
  11. package/dist/src/components/code-editor/http/grammar/http.test.d.ts +2 -0
  12. package/dist/src/components/code-editor/http/grammar/http.test.d.ts.map +1 -0
  13. package/dist/src/components/code-editor/http/grammar/http.test.js +80 -0
  14. package/dist/src/components/code-editor/http/grammar/http.test.js.map +1 -0
  15. package/dist/src/components/code-editor/http/index.d.ts +4 -0
  16. package/dist/src/components/code-editor/http/index.d.ts.map +1 -0
  17. package/dist/src/components/code-editor/http/index.js +66 -0
  18. package/dist/src/components/code-editor/http/index.js.map +1 -0
  19. package/dist/src/components/code-editor/index.d.ts +13 -2
  20. package/dist/src/components/code-editor/index.d.ts.map +1 -1
  21. package/dist/src/components/code-editor/index.js +161 -20
  22. package/dist/src/components/code-editor/index.js.map +1 -1
  23. package/dist/src/components/code-editor.stories.js +3 -1
  24. package/dist/src/components/code-editor.stories.js.map +1 -1
  25. package/dist/src/components/request-line-editor.d.ts +11 -35
  26. package/dist/src/components/request-line-editor.d.ts.map +1 -1
  27. package/dist/src/components/request-line-editor.js +51 -49
  28. package/dist/src/components/request-line-editor.js.map +1 -1
  29. package/dist/src/components/request-line-editor.stories.d.ts.map +1 -1
  30. package/dist/src/components/request-line-editor.stories.js +17 -53
  31. package/dist/src/components/request-line-editor.stories.js.map +1 -1
  32. package/dist/src/components/tree-view.d.ts +16 -0
  33. package/dist/src/components/tree-view.d.ts.map +1 -0
  34. package/dist/src/components/tree-view.js +67 -0
  35. package/dist/src/components/tree-view.js.map +1 -0
  36. package/dist/src/components/tree-view.stories.d.ts +13 -0
  37. package/dist/src/components/tree-view.stories.d.ts.map +1 -0
  38. package/dist/src/components/tree-view.stories.js +274 -0
  39. package/dist/src/components/tree-view.stories.js.map +1 -0
  40. package/dist/src/icons.d.ts +3 -0
  41. package/dist/src/icons.d.ts.map +1 -0
  42. package/dist/src/icons.js +47 -0
  43. package/dist/src/icons.js.map +1 -0
  44. package/dist/src/index.css +42 -3
  45. package/dist/src/index.d.ts +1 -1
  46. package/dist/src/index.d.ts.map +1 -1
  47. package/dist/src/index.js +1 -1
  48. package/dist/src/index.js.map +1 -1
  49. package/dist/src/shadcn/components/ui/accordion.d.ts.map +1 -1
  50. package/dist/src/shadcn/components/ui/accordion.js +23 -5
  51. package/dist/src/shadcn/components/ui/accordion.js.map +1 -1
  52. package/dist/src/shadcn/components/ui/alert.d.ts.map +1 -1
  53. package/dist/src/shadcn/components/ui/alert.js +12 -5
  54. package/dist/src/shadcn/components/ui/alert.js.map +1 -1
  55. package/dist/src/shadcn/components/ui/avatar.d.ts.map +1 -1
  56. package/dist/src/shadcn/components/ui/avatar.js +4 -3
  57. package/dist/src/shadcn/components/ui/avatar.js.map +1 -1
  58. package/dist/src/shadcn/components/ui/badge.d.ts.map +1 -1
  59. package/dist/src/shadcn/components/ui/badge.js +16 -5
  60. package/dist/src/shadcn/components/ui/badge.js.map +1 -1
  61. package/dist/src/shadcn/components/ui/breadcrumb.d.ts.map +1 -1
  62. package/dist/src/shadcn/components/ui/breadcrumb.js +6 -6
  63. package/dist/src/shadcn/components/ui/breadcrumb.js.map +1 -1
  64. package/dist/src/shadcn/components/ui/button.d.ts.map +1 -1
  65. package/dist/src/shadcn/components/ui/button.js +19 -11
  66. package/dist/src/shadcn/components/ui/button.js.map +1 -1
  67. package/dist/src/shadcn/components/ui/card.d.ts.map +1 -1
  68. package/dist/src/shadcn/components/ui/card.js +14 -6
  69. package/dist/src/shadcn/components/ui/card.js.map +1 -1
  70. package/dist/src/shadcn/components/ui/carousel.d.ts.map +1 -1
  71. package/dist/src/shadcn/components/ui/carousel.js +1 -0
  72. package/dist/src/shadcn/components/ui/carousel.js.map +1 -1
  73. package/dist/src/shadcn/components/ui/checkbox.d.ts.map +1 -1
  74. package/dist/src/shadcn/components/ui/checkbox.js +20 -5
  75. package/dist/src/shadcn/components/ui/checkbox.js.map +1 -1
  76. package/dist/src/shadcn/components/ui/checkbox.stories.d.ts.map +1 -1
  77. package/dist/src/shadcn/components/ui/checkbox.stories.js +44 -35
  78. package/dist/src/shadcn/components/ui/checkbox.stories.js.map +1 -1
  79. package/dist/src/shadcn/components/ui/combobox.d.ts +18 -0
  80. package/dist/src/shadcn/components/ui/combobox.d.ts.map +1 -0
  81. package/dist/src/shadcn/components/ui/combobox.js +121 -0
  82. package/dist/src/shadcn/components/ui/combobox.js.map +1 -0
  83. package/dist/src/shadcn/components/ui/combobox.stories.d.ts +11 -0
  84. package/dist/src/shadcn/components/ui/combobox.stories.d.ts.map +1 -0
  85. package/dist/src/shadcn/components/ui/combobox.stories.js +16 -0
  86. package/dist/src/shadcn/components/ui/combobox.stories.js.map +1 -0
  87. package/dist/src/shadcn/components/ui/command.d.ts.map +1 -1
  88. package/dist/src/shadcn/components/ui/command.js +73 -12
  89. package/dist/src/shadcn/components/ui/command.js.map +1 -1
  90. package/dist/src/shadcn/components/ui/command.stories.js +0 -1
  91. package/dist/src/shadcn/components/ui/command.stories.js.map +1 -1
  92. package/dist/src/shadcn/components/ui/dialog.d.ts.map +1 -1
  93. package/dist/src/shadcn/components/ui/dialog.js +35 -7
  94. package/dist/src/shadcn/components/ui/dialog.js.map +1 -1
  95. package/dist/src/shadcn/components/ui/drawer.d.ts.map +1 -1
  96. package/dist/src/shadcn/components/ui/drawer.js +26 -5
  97. package/dist/src/shadcn/components/ui/drawer.js.map +1 -1
  98. package/dist/src/shadcn/components/ui/dropdown-menu.d.ts.map +1 -1
  99. package/dist/src/shadcn/components/ui/dropdown-menu.js +12 -1
  100. package/dist/src/shadcn/components/ui/dropdown-menu.js.map +1 -1
  101. package/dist/src/shadcn/components/ui/form.d.ts.map +1 -1
  102. package/dist/src/shadcn/components/ui/form.js +12 -4
  103. package/dist/src/shadcn/components/ui/form.js.map +1 -1
  104. package/dist/src/shadcn/components/ui/input-otp.d.ts.map +1 -1
  105. package/dist/src/shadcn/components/ui/input-otp.js +1 -0
  106. package/dist/src/shadcn/components/ui/input-otp.js.map +1 -1
  107. package/dist/src/shadcn/components/ui/input.d.ts.map +1 -1
  108. package/dist/src/shadcn/components/ui/input.js +87 -16
  109. package/dist/src/shadcn/components/ui/input.js.map +1 -1
  110. package/dist/src/shadcn/components/ui/label.d.ts.map +1 -1
  111. package/dist/src/shadcn/components/ui/label.js +8 -1
  112. package/dist/src/shadcn/components/ui/label.js.map +1 -1
  113. package/dist/src/shadcn/components/ui/menubar.d.ts.map +1 -1
  114. package/dist/src/shadcn/components/ui/menubar.js +35 -13
  115. package/dist/src/shadcn/components/ui/menubar.js.map +1 -1
  116. package/dist/src/shadcn/components/ui/pagination.d.ts.map +1 -1
  117. package/dist/src/shadcn/components/ui/pagination.js +6 -6
  118. package/dist/src/shadcn/components/ui/pagination.js.map +1 -1
  119. package/dist/src/shadcn/components/ui/popover.d.ts.map +1 -1
  120. package/dist/src/shadcn/components/ui/popover.js +12 -1
  121. package/dist/src/shadcn/components/ui/popover.js.map +1 -1
  122. package/dist/src/shadcn/components/ui/progress.d.ts.map +1 -1
  123. package/dist/src/shadcn/components/ui/progress.js +6 -2
  124. package/dist/src/shadcn/components/ui/progress.js.map +1 -1
  125. package/dist/src/shadcn/components/ui/radio-group.d.ts.map +1 -1
  126. package/dist/src/shadcn/components/ui/radio-group.js +11 -6
  127. package/dist/src/shadcn/components/ui/radio-group.js.map +1 -1
  128. package/dist/src/shadcn/components/ui/radio-group.stories.d.ts.map +1 -1
  129. package/dist/src/shadcn/components/ui/radio-group.stories.js +57 -34
  130. package/dist/src/shadcn/components/ui/radio-group.stories.js.map +1 -1
  131. package/dist/src/shadcn/components/ui/resizable.d.ts.map +1 -1
  132. package/dist/src/shadcn/components/ui/resizable.js +1 -0
  133. package/dist/src/shadcn/components/ui/resizable.js.map +1 -1
  134. package/dist/src/shadcn/components/ui/scroll-area.d.ts.map +1 -1
  135. package/dist/src/shadcn/components/ui/scroll-area.js +9 -3
  136. package/dist/src/shadcn/components/ui/scroll-area.js.map +1 -1
  137. package/dist/src/shadcn/components/ui/select.d.ts.map +1 -1
  138. package/dist/src/shadcn/components/ui/select.js +49 -14
  139. package/dist/src/shadcn/components/ui/select.js.map +1 -1
  140. package/dist/src/shadcn/components/ui/select.stories.d.ts.map +1 -1
  141. package/dist/src/shadcn/components/ui/select.stories.js +1 -4
  142. package/dist/src/shadcn/components/ui/select.stories.js.map +1 -1
  143. package/dist/src/shadcn/components/ui/separator.d.ts.map +1 -1
  144. package/dist/src/shadcn/components/ui/separator.js +7 -1
  145. package/dist/src/shadcn/components/ui/separator.js.map +1 -1
  146. package/dist/src/shadcn/components/ui/sidebar.d.ts.map +1 -1
  147. package/dist/src/shadcn/components/ui/sidebar.js +20 -6
  148. package/dist/src/shadcn/components/ui/sidebar.js.map +1 -1
  149. package/dist/src/shadcn/components/ui/skeleton.d.ts.map +1 -1
  150. package/dist/src/shadcn/components/ui/skeleton.js +3 -1
  151. package/dist/src/shadcn/components/ui/skeleton.js.map +1 -1
  152. package/dist/src/shadcn/components/ui/slider.d.ts.map +1 -1
  153. package/dist/src/shadcn/components/ui/slider.js +34 -4
  154. package/dist/src/shadcn/components/ui/slider.js.map +1 -1
  155. package/dist/src/shadcn/components/ui/sonner.d.ts +16 -1
  156. package/dist/src/shadcn/components/ui/sonner.d.ts.map +1 -1
  157. package/dist/src/shadcn/components/ui/sonner.js +23 -3
  158. package/dist/src/shadcn/components/ui/sonner.js.map +1 -1
  159. package/dist/src/shadcn/components/ui/sonner.stories.d.ts.map +1 -1
  160. package/dist/src/shadcn/components/ui/sonner.stories.js +19 -11
  161. package/dist/src/shadcn/components/ui/sonner.stories.js.map +1 -1
  162. package/dist/src/shadcn/components/ui/switch.d.ts.map +1 -1
  163. package/dist/src/shadcn/components/ui/switch.js +18 -2
  164. package/dist/src/shadcn/components/ui/switch.js.map +1 -1
  165. package/dist/src/shadcn/components/ui/table.d.ts.map +1 -1
  166. package/dist/src/shadcn/components/ui/table.js +12 -8
  167. package/dist/src/shadcn/components/ui/table.js.map +1 -1
  168. package/dist/src/shadcn/components/ui/tabs.d.ts +21 -3
  169. package/dist/src/shadcn/components/ui/tabs.d.ts.map +1 -1
  170. package/dist/src/shadcn/components/ui/tabs.js +314 -9
  171. package/dist/src/shadcn/components/ui/tabs.js.map +1 -1
  172. package/dist/src/shadcn/components/ui/tabs.stories.d.ts.map +1 -1
  173. package/dist/src/shadcn/components/ui/tabs.stories.js +50 -1
  174. package/dist/src/shadcn/components/ui/tabs.stories.js.map +1 -1
  175. package/dist/src/shadcn/components/ui/textarea.d.ts.map +1 -1
  176. package/dist/src/shadcn/components/ui/textarea.js +15 -1
  177. package/dist/src/shadcn/components/ui/textarea.js.map +1 -1
  178. package/dist/src/shadcn/components/ui/toggle-group.d.ts.map +1 -1
  179. package/dist/src/shadcn/components/ui/toggle-group.js +7 -2
  180. package/dist/src/shadcn/components/ui/toggle-group.js.map +1 -1
  181. package/dist/src/shadcn/components/ui/toggle.d.ts.map +1 -1
  182. package/dist/src/shadcn/components/ui/toggle.js +18 -6
  183. package/dist/src/shadcn/components/ui/toggle.js.map +1 -1
  184. package/dist/src/shadcn/components/ui/tooltip.d.ts.map +1 -1
  185. package/dist/src/shadcn/components/ui/tooltip.js +11 -1
  186. package/dist/src/shadcn/components/ui/tooltip.js.map +1 -1
  187. package/dist/src/shadcn/components/ui/tree.d.ts +20 -0
  188. package/dist/src/shadcn/components/ui/tree.d.ts.map +1 -0
  189. package/dist/src/shadcn/components/ui/tree.js +111 -0
  190. package/dist/src/shadcn/components/ui/tree.js.map +1 -0
  191. package/package.json +9 -2
  192. package/src/components/code-editor/http/grammar/http.grammar +74 -0
  193. package/src/components/code-editor/http/grammar/http.terms.ts +9 -0
  194. package/src/components/code-editor/http/grammar/http.test.ts +110 -0
  195. package/src/components/code-editor/http/grammar/http.ts +21 -0
  196. package/src/components/code-editor/http/index.ts +87 -0
  197. package/src/components/code-editor/index.tsx +182 -21
  198. package/src/components/code-editor.stories.tsx +1 -1
  199. package/src/components/request-line-editor.stories.tsx +17 -27
  200. package/src/components/request-line-editor.tsx +72 -61
  201. package/src/components/tree-view.stories.tsx +260 -0
  202. package/src/components/tree-view.tsx +101 -0
  203. package/src/icons.tsx +45 -0
  204. package/src/index.css +42 -3
  205. package/src/index.tsx +1 -1
  206. package/src/shadcn/components/ui/accordion.tsx +66 -8
  207. package/src/shadcn/components/ui/alert.tsx +53 -15
  208. package/src/shadcn/components/ui/avatar.tsx +17 -6
  209. package/src/shadcn/components/ui/badge.tsx +67 -18
  210. package/src/shadcn/components/ui/breadcrumb.tsx +35 -7
  211. package/src/shadcn/components/ui/button.tsx +118 -57
  212. package/src/shadcn/components/ui/card.tsx +44 -13
  213. package/src/shadcn/components/ui/carousel.tsx +1 -0
  214. package/src/shadcn/components/ui/checkbox.stories.tsx +20 -24
  215. package/src/shadcn/components/ui/checkbox.tsx +45 -4
  216. package/src/shadcn/components/ui/combobox.stories.tsx +19 -0
  217. package/src/shadcn/components/ui/combobox.tsx +142 -0
  218. package/src/shadcn/components/ui/command.stories.tsx +1 -1
  219. package/src/shadcn/components/ui/command.tsx +192 -36
  220. package/src/shadcn/components/ui/dialog.tsx +101 -13
  221. package/src/shadcn/components/ui/drawer.tsx +93 -18
  222. package/src/shadcn/components/ui/dropdown-menu.tsx +38 -9
  223. package/src/shadcn/components/ui/form.tsx +16 -4
  224. package/src/shadcn/components/ui/input-otp.tsx +1 -0
  225. package/src/shadcn/components/ui/input.tsx +281 -29
  226. package/src/shadcn/components/ui/label.tsx +21 -4
  227. package/src/shadcn/components/ui/menubar.tsx +188 -43
  228. package/src/shadcn/components/ui/pagination.tsx +12 -6
  229. package/src/shadcn/components/ui/popover.tsx +35 -4
  230. package/src/shadcn/components/ui/progress.tsx +21 -5
  231. package/src/shadcn/components/ui/radio-group.stories.tsx +22 -14
  232. package/src/shadcn/components/ui/radio-group.tsx +42 -5
  233. package/src/shadcn/components/ui/resizable.tsx +1 -0
  234. package/src/shadcn/components/ui/scroll-area.tsx +33 -5
  235. package/src/shadcn/components/ui/select.stories.tsx +0 -2
  236. package/src/shadcn/components/ui/select.tsx +184 -33
  237. package/src/shadcn/components/ui/separator.tsx +15 -5
  238. package/src/shadcn/components/ui/sidebar.tsx +68 -26
  239. package/src/shadcn/components/ui/skeleton.tsx +4 -1
  240. package/src/shadcn/components/ui/slider.tsx +82 -11
  241. package/src/shadcn/components/ui/sonner.stories.tsx +19 -15
  242. package/src/shadcn/components/ui/sonner.tsx +53 -3
  243. package/src/shadcn/components/ui/switch.tsx +53 -7
  244. package/src/shadcn/components/ui/table.tsx +38 -11
  245. package/src/shadcn/components/ui/tabs.stories.tsx +32 -0
  246. package/src/shadcn/components/ui/tabs.tsx +455 -17
  247. package/src/shadcn/components/ui/textarea.tsx +42 -4
  248. package/src/shadcn/components/ui/toggle-group.tsx +28 -5
  249. package/src/shadcn/components/ui/toggle.tsx +59 -18
  250. package/src/shadcn/components/ui/tooltip.tsx +33 -8
  251. package/src/shadcn/components/ui/tree.tsx +200 -0
@@ -14,6 +14,18 @@ import {
14
14
  import { Label } from "#shadcn/components/ui/label";
15
15
  import { cn } from "#shadcn/lib/utils";
16
16
 
17
+ // Form item styles
18
+ const formItemStyles = cn("grid", "gap-2");
19
+
20
+ // Form label error styles
21
+ const formLabelErrorStyles = cn("data-[error=true]:text-text-error-primary");
22
+
23
+ // Form description styles
24
+ const formDescriptionStyles = cn("text-text-secondary", "text-sm");
25
+
26
+ // Form message styles
27
+ const formMessageStyles = cn("text-text-error-primary", "text-sm");
28
+
17
29
  const Form = FormProvider;
18
30
 
19
31
  type FormFieldContextValue<
@@ -78,7 +90,7 @@ function FormItem({ className, ...props }: React.ComponentProps<"div">) {
78
90
  <FormItemContext.Provider value={{ id }}>
79
91
  <div
80
92
  data-slot="form-item"
81
- className={cn("grid gap-2", className)}
93
+ className={cn(formItemStyles, className)}
82
94
  {...props}
83
95
  />
84
96
  </FormItemContext.Provider>
@@ -95,7 +107,7 @@ function FormLabel({
95
107
  <Label
96
108
  data-slot="form-label"
97
109
  data-error={!!error}
98
- className={cn("data-[error=true]:text-destructive", className)}
110
+ className={cn(formLabelErrorStyles, className)}
99
111
  htmlFor={formItemId}
100
112
  {...props}
101
113
  />
@@ -128,7 +140,7 @@ function FormDescription({ className, ...props }: React.ComponentProps<"p">) {
128
140
  <p
129
141
  data-slot="form-description"
130
142
  id={formDescriptionId}
131
- className={cn("text-muted-foreground text-sm", className)}
143
+ className={cn(formDescriptionStyles, className)}
132
144
  {...props}
133
145
  />
134
146
  );
@@ -146,7 +158,7 @@ function FormMessage({ className, ...props }: React.ComponentProps<"p">) {
146
158
  <p
147
159
  data-slot="form-message"
148
160
  id={formMessageId}
149
- className={cn("text-destructive text-sm", className)}
161
+ className={cn(formMessageStyles, className)}
150
162
  {...props}
151
163
  >
152
164
  {body}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { OTPInput, OTPInputContext } from "input-otp";
2
3
  import { MinusIcon } from "lucide-react";
3
4
  import * as React from "react";
@@ -3,57 +3,309 @@ import type * as React from "react";
3
3
 
4
4
  import { cn } from "#shadcn/lib/utils";
5
5
 
6
- const iconBaseClasses =
7
- "absolute top-1/2 -translate-y-1/2 cursor-pointer z-10 flex items-center justify-center [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0";
6
+ // Base icon styles
7
+ const iconBaseClasses = cn(
8
+ // Positioning
9
+ "absolute",
10
+ "top-1/2",
11
+ "-translate-y-1/2",
12
+ "z-10",
8
13
 
9
- const iconLeftPosition =
10
- "left-3 hover:text-text-tertiary hover:cursor-default transition-colors duration-300";
14
+ // Layout & Flexbox
15
+ "flex",
16
+ "items-center",
17
+ "justify-center",
11
18
 
12
- const iconRightContainer =
13
- "absolute right-3 top-1/2 -translate-y-1/2 flex gap-2 z-10";
19
+ // Cursor & Interactions
20
+ "cursor-default",
21
+ "[&_svg]:pointer-events-none",
14
22
 
15
- const iconNormalColor =
16
- "text-text-tertiary hover:text-fg-secondary transition-colors duration-300";
17
- const iconInvalidColor =
18
- "text-fg-tertiary hover:text-fg-secondary transition-colors duration-300";
19
- const iconDisabledColor =
20
- "text-text-disabled hover:cursor-not-allowed transition-colors duration-300";
23
+ // Sizing
24
+ "[&_svg:not([class*='size-'])]:size-4",
25
+ "shrink-0",
26
+ "[&_svg]:shrink-0",
27
+ );
28
+
29
+ // Left icon positioning
30
+ const iconLeftPosition = cn(
31
+ // Positioning
32
+ "left-3",
33
+
34
+ // Transitions
35
+ "transition-colors",
36
+ "duration-300",
37
+ );
38
+
39
+ // Right icon container
40
+ const iconRightContainer = cn(
41
+ // Positioning
42
+ "absolute",
43
+ "right-3",
44
+ "top-1/2",
45
+ "-translate-y-1/2",
46
+
47
+ // Layout & Flexbox
48
+ "flex",
49
+ "gap-2",
50
+
51
+ // Z-index
52
+ "z-10",
53
+ );
54
+
55
+ // Icon color states
56
+ const iconNormalColor = cn(
57
+ // Colors
58
+ "text-text-tertiary",
59
+
60
+ // Transitions
61
+ "transition-colors",
62
+ "duration-300",
63
+ );
64
+
65
+ const iconInvalidColor = cn(
66
+ // Colors
67
+ "text-text-tertiary",
68
+
69
+ // Transitions
70
+ "transition-colors",
71
+ "duration-300",
72
+ );
73
+
74
+ const iconDisabledColor = cn(
75
+ // Colors
76
+ "text-text-disabled",
77
+
78
+ // Cursor & Interactions
79
+ "hover:cursor-not-allowed",
80
+
81
+ // Transitions
82
+ "transition-colors",
83
+ "duration-300",
84
+ );
85
+
86
+ // Icon wrapper styles
87
+ const iconWrapperClasses = cn(
88
+ // Sizing
89
+ "flex",
90
+ "items-center",
91
+ "[&>svg]:w-full",
92
+ "[&>svg]:h-full",
93
+ "[&>svg]:stroke-[1.5]",
94
+ );
95
+
96
+ // Right icon item styles
97
+ const iconRightItemClasses = cn(
98
+ // Layout & Flexbox
99
+ "flex",
100
+ "items-center",
101
+ "justify-center",
102
+
103
+ // Transitions
104
+ "transition-colors",
105
+ "duration-300",
106
+ );
107
+
108
+ // Suffix styles
109
+ const suffixClasses = cn(
110
+ // Borders
111
+ "border-border-primary",
112
+ "border",
113
+
114
+ // Background & Colors
115
+ "bg-bg-tertiary",
116
+ "text-text-tertiary",
117
+
118
+ // Layout & Flexbox
119
+ "flex",
120
+ "items-center",
121
+
122
+ // Spacing & Sizing
123
+ "rounded-r-md",
124
+ "px-3",
125
+ "py-1",
126
+
127
+ // Typography
128
+ "typo-body",
129
+
130
+ // Cursor & Interactions
131
+ "cursor-default",
132
+
133
+ // Transitions
134
+ "transition-colors",
135
+ "duration-300",
136
+ );
137
+
138
+ // Disabled suffix styles
139
+ const suffixDisabledClasses = cn(
140
+ // Borders
141
+ "border-border-primary",
142
+ "border",
143
+
144
+ // Background & Colors
145
+ "bg-bg-tertiary",
146
+ "text-text-disabled",
147
+
148
+ // Layout & Flexbox
149
+ "flex",
150
+ "items-center",
21
151
 
22
- const iconWrapperClasses = "[&>svg]:w-full [&>svg]:h-full [&>svg]:stroke-[1.5]";
152
+ // Spacing & Sizing
153
+ "rounded-r-md",
154
+ "px-3",
155
+ "py-1",
156
+
157
+ // Typography
158
+ "typo-body",
159
+
160
+ // Cursor & Interactions
161
+ "hover:cursor-not-allowed",
162
+
163
+ // Transitions
164
+ "transition-colors",
165
+ "duration-300",
166
+ );
23
167
 
24
- const iconRightItemClasses =
25
- "cursor-pointer flex items-center justify-center transition-colors duration-300";
168
+ // Invalid suffix styles
169
+ const suffixInvalidClasses = cn(
170
+ // Borders
171
+ "border-border-error",
172
+ "border",
26
173
 
27
- const suffixClasses =
28
- "border-border-primary bg-bg-tertiary text-text-tertiary flex items-center rounded-r-md border px-3 py-1 typo-body cursor-default transition-colors duration-300";
174
+ // Background & Colors
175
+ "bg-bg-secondary",
176
+ "text-text-tertiary",
29
177
 
30
- const suffixDisabledClasses =
31
- "border-border-primary bg-bg-tertiary text-text-disabled flex items-center rounded-r-md border px-3 py-1 typo-body hover:cursor-not-allowed transition-colors duration-300";
178
+ // Layout & Flexbox
179
+ "flex",
180
+ "items-center",
32
181
 
33
- const suffixInvalidClasses =
34
- "border-border-error bg-bg-secondary flex items-center rounded-r-md border px-3 py-1 text-text-tertiary typo-body cursor-default transition-colors duration-300";
182
+ // Spacing & Sizing
183
+ "rounded-r-md",
184
+ "px-3",
185
+ "py-1",
186
+
187
+ // Typography
188
+ "typo-body",
189
+
190
+ // Cursor & Interactions
191
+ "cursor-default",
192
+
193
+ // Transitions
194
+ "transition-colors",
195
+ "duration-300",
196
+ );
35
197
 
36
198
  const inputVariants = cva(
37
199
  cn(
38
- "h-9 file:text-text-primary placeholder:text-text-quternary disabled:placeholder:text-text-disabled selection:bg-bg-primary selection:text-text-primary-foreground border-border-primary hover:border-border-primary_hover flex w-full min-w-0 border bg-transparent px-3 py-2 typo-body text-base transition-all duration-300 outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-md file:font-medium disabled:bg-bg-secondary disabled:cursor-not-allowed disabled:border-border-primary md:text-md selection:bg-selection",
39
- "focus-visible:ring-4 focus-visible:ring-ring-blue focus-visible:border-border-link",
40
- "aria-invalid:ring-destructive aria-invalid:text-text-error-primary aria-invalid:border-border-error-primary",
41
- "",
200
+ // Sizing & Layout
201
+ "h-9",
202
+ "flex",
203
+ "w-full",
204
+ "min-w-0",
205
+
206
+ // Spacing & Padding
207
+ "px-3",
208
+ "py-2",
209
+
210
+ // Borders
211
+ "border",
212
+ "border-border-primary",
213
+
214
+ // Background & Colors
215
+ "bg-transparent",
216
+ "text-base",
217
+
218
+ // Typography
219
+ "typo-body",
220
+ "md:text-md",
221
+
222
+ // File input styles
223
+ "file:text-text-primary",
224
+ "file:inline-flex",
225
+ "file:h-7",
226
+ "file:border-0",
227
+ "file:bg-transparent",
228
+ "file:text-md",
229
+ "file:font-medium",
230
+
231
+ // Placeholder styles
232
+ "placeholder:text-text-quternary",
233
+
234
+ // Selection styles
235
+ "selection:bg-bg-primary",
236
+ "selection:text-text-primary-foreground",
237
+ "selection:bg-selection",
238
+
239
+ // Hover states
240
+ "hover:border-border-primary_hover",
241
+
242
+ // Focus states
243
+
244
+ "focus-visible:border-border-link",
245
+
246
+ // Invalid states
247
+ "aria-invalid:ring-destructive",
248
+ "aria-invalid:text-text-error-primary",
249
+ "aria-invalid:border-border-error-primary",
250
+
251
+ // Disabled states
252
+ "disabled:bg-bg-secondary",
253
+ "disabled:cursor-not-allowed",
254
+ "disabled:border-border-primary",
255
+ "disabled:text-text-disabled",
256
+ "disabled:placeholder:text-text-disabled",
257
+
258
+ // Transitions
259
+ "transition-all",
260
+ "duration-300",
261
+
262
+ // Outline
263
+ "outline-none",
264
+
265
+ // Border radius
42
266
  "rounded-md",
43
267
  ),
44
268
  {
45
269
  variants: {
46
270
  hasLeftSlot: {
47
- true: "pl-9",
271
+ true: cn(
272
+ // Left padding for icon
273
+ "pl-9",
274
+ ),
48
275
  },
49
276
  hasRightSlot: {
50
- true: "pr-9",
277
+ true: cn(
278
+ // Right padding for icon
279
+ "pr-9",
280
+ ),
51
281
  },
52
282
  hasSuffix: {
53
- true: "border-r-0 focus-visible:ring-offset-0 rounded-l-md rounded-r-none focus-visible:border-r-1",
283
+ true: cn(
284
+ // Border adjustments for suffix
285
+ "border-r-0",
286
+ "rounded-l-md",
287
+ "rounded-r-none",
288
+
289
+ // Focus adjustments
290
+ "focus-visible:ring-offset-0",
291
+ "focus-visible:border-r-1",
292
+ ),
54
293
  },
55
294
  invalid: {
56
- true: "border-border-error focus-visible:ring-4 focus-visible:ring-ring-red focus-visible:border-border-error hover:border-border-error_inverse transition-all duration-300",
295
+ true: cn(
296
+ // Invalid border colors
297
+ "border-border-error",
298
+ "hover:border-border-error_inverse",
299
+
300
+ // Invalid focus states
301
+ "focus-visible:ring-4",
302
+ "focus-visible:ring-ring-red",
303
+ "focus-visible:border-border-error",
304
+
305
+ // Transitions
306
+ "transition-all",
307
+ "duration-300",
308
+ ),
57
309
  },
58
310
  },
59
311
  defaultVariants: {
@@ -4,6 +4,26 @@ import type * as React from "react";
4
4
 
5
5
  import { cn } from "#shadcn/lib/utils";
6
6
 
7
+ // Label styles
8
+ const labelStyles = cn(
9
+ // Layout
10
+ "flex",
11
+ "items-center",
12
+ "gap-2",
13
+ // Typography
14
+ "text-text-primary",
15
+ "typo-label",
16
+ "leading-none",
17
+ // Interaction
18
+ "select-none",
19
+ // Group disabled states
20
+ "group-data-[disabled=true]:pointer-events-none",
21
+ "group-data-[disabled=true]:opacity-50",
22
+ // Peer disabled states
23
+ "peer-disabled:cursor-not-allowed",
24
+ "peer-disabled:opacity-50",
25
+ );
26
+
7
27
  function Label({
8
28
  className,
9
29
  ...props
@@ -11,10 +31,7 @@ function Label({
11
31
  return (
12
32
  <LabelPrimitive.Root
13
33
  data-slot="label"
14
- className={cn(
15
- "flex items-center gap-2 text-text-primary typo-label leading-none select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
16
- className,
17
- )}
34
+ className={cn(labelStyles, className)}
18
35
  {...props}
19
36
  />
20
37
  );