@invergent/ui-sdk 0.0.0-stage → 2.19.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 (332) hide show
  1. package/README.md +62 -2
  2. package/dist/accordion.cjs +97 -0
  3. package/dist/accordion.cjs.map +1 -0
  4. package/dist/accordion.d.cts +10 -0
  5. package/dist/accordion.d.ts +10 -0
  6. package/dist/accordion.js +92 -0
  7. package/dist/accordion.js.map +1 -0
  8. package/dist/alert.cjs +82 -0
  9. package/dist/alert.cjs.map +1 -0
  10. package/dist/alert.d.cts +14 -0
  11. package/dist/alert.d.ts +14 -0
  12. package/dist/alert.js +77 -0
  13. package/dist/alert.js.map +1 -0
  14. package/dist/avatar.cjs +110 -0
  15. package/dist/avatar.cjs.map +1 -0
  16. package/dist/avatar.d.cts +14 -0
  17. package/dist/avatar.d.ts +14 -0
  18. package/dist/avatar.js +103 -0
  19. package/dist/avatar.js.map +1 -0
  20. package/dist/badge.cjs +47 -0
  21. package/dist/badge.cjs.map +1 -0
  22. package/dist/badge.d.cts +13 -0
  23. package/dist/badge.d.ts +13 -0
  24. package/dist/badge.js +44 -0
  25. package/dist/badge.js.map +1 -0
  26. package/dist/brand-beam.cjs +2303 -0
  27. package/dist/brand-beam.cjs.map +1 -0
  28. package/dist/brand-beam.d.cts +36 -0
  29. package/dist/brand-beam.d.ts +36 -0
  30. package/dist/brand-beam.js +2301 -0
  31. package/dist/brand-beam.js.map +1 -0
  32. package/dist/button.cjs +17 -0
  33. package/dist/button.cjs.map +1 -0
  34. package/dist/button.d.cts +14 -0
  35. package/dist/button.d.ts +14 -0
  36. package/dist/button.js +4 -0
  37. package/dist/button.js.map +1 -0
  38. package/dist/card.cjs +109 -0
  39. package/dist/card.cjs.map +1 -0
  40. package/dist/card.d.cts +14 -0
  41. package/dist/card.d.ts +14 -0
  42. package/dist/card.js +101 -0
  43. package/dist/card.js.map +1 -0
  44. package/dist/chart.cjs +275 -0
  45. package/dist/chart.cjs.map +1 -0
  46. package/dist/chart.d.cts +47 -0
  47. package/dist/chart.d.ts +47 -0
  48. package/dist/chart.js +247 -0
  49. package/dist/chart.js.map +1 -0
  50. package/dist/checkbox.cjs +41 -0
  51. package/dist/checkbox.cjs.map +1 -0
  52. package/dist/checkbox.d.cts +7 -0
  53. package/dist/checkbox.d.ts +7 -0
  54. package/dist/checkbox.js +39 -0
  55. package/dist/checkbox.js.map +1 -0
  56. package/dist/chip.cjs +92 -0
  57. package/dist/chip.cjs.map +1 -0
  58. package/dist/chip.d.cts +33 -0
  59. package/dist/chip.d.ts +33 -0
  60. package/dist/chip.js +86 -0
  61. package/dist/chip.js.map +1 -0
  62. package/dist/choice-card.cjs +127 -0
  63. package/dist/choice-card.cjs.map +1 -0
  64. package/dist/choice-card.d.cts +20 -0
  65. package/dist/choice-card.d.ts +20 -0
  66. package/dist/choice-card.js +124 -0
  67. package/dist/choice-card.js.map +1 -0
  68. package/dist/chunk-2UHRDVPT.cjs +183 -0
  69. package/dist/chunk-2UHRDVPT.cjs.map +1 -0
  70. package/dist/chunk-5CRE35VX.js +20 -0
  71. package/dist/chunk-5CRE35VX.js.map +1 -0
  72. package/dist/chunk-6ARYCL4L.cjs +30 -0
  73. package/dist/chunk-6ARYCL4L.cjs.map +1 -0
  74. package/dist/chunk-6JCVTRUK.js +21 -0
  75. package/dist/chunk-6JCVTRUK.js.map +1 -0
  76. package/dist/chunk-6YHDDRIM.cjs +13 -0
  77. package/dist/chunk-6YHDDRIM.cjs.map +1 -0
  78. package/dist/chunk-A44JJ6NH.js +58 -0
  79. package/dist/chunk-A44JJ6NH.js.map +1 -0
  80. package/dist/chunk-CPAFEXKR.js +63 -0
  81. package/dist/chunk-CPAFEXKR.js.map +1 -0
  82. package/dist/chunk-CTIEUG5L.js +28 -0
  83. package/dist/chunk-CTIEUG5L.js.map +1 -0
  84. package/dist/chunk-DSDDDYG3.cjs +60 -0
  85. package/dist/chunk-DSDDDYG3.cjs.map +1 -0
  86. package/dist/chunk-IB7LTHEQ.js +55 -0
  87. package/dist/chunk-IB7LTHEQ.js.map +1 -0
  88. package/dist/chunk-ID7MWMJO.cjs +162 -0
  89. package/dist/chunk-ID7MWMJO.cjs.map +1 -0
  90. package/dist/chunk-IVMZANP7.cjs +67 -0
  91. package/dist/chunk-IVMZANP7.cjs.map +1 -0
  92. package/dist/chunk-L73QIINW.js +157 -0
  93. package/dist/chunk-L73QIINW.js.map +1 -0
  94. package/dist/chunk-LZGII7SX.js +11 -0
  95. package/dist/chunk-LZGII7SX.js.map +1 -0
  96. package/dist/chunk-M677T75H.js +24 -0
  97. package/dist/chunk-M677T75H.js.map +1 -0
  98. package/dist/chunk-OAVCB3MR.cjs +26 -0
  99. package/dist/chunk-OAVCB3MR.cjs.map +1 -0
  100. package/dist/chunk-RVX6SN4U.cjs +23 -0
  101. package/dist/chunk-RVX6SN4U.cjs.map +1 -0
  102. package/dist/chunk-T74Z3WTK.js +151 -0
  103. package/dist/chunk-T74Z3WTK.js.map +1 -0
  104. package/dist/chunk-UOUXW63J.cjs +22 -0
  105. package/dist/chunk-UOUXW63J.cjs.map +1 -0
  106. package/dist/chunk-VBICNC43.cjs +61 -0
  107. package/dist/chunk-VBICNC43.cjs.map +1 -0
  108. package/dist/collapsible-header.cjs +66 -0
  109. package/dist/collapsible-header.cjs.map +1 -0
  110. package/dist/collapsible-header.d.cts +15 -0
  111. package/dist/collapsible-header.d.ts +15 -0
  112. package/dist/collapsible-header.js +63 -0
  113. package/dist/collapsible-header.js.map +1 -0
  114. package/dist/collapsible.cjs +38 -0
  115. package/dist/collapsible.cjs.map +1 -0
  116. package/dist/collapsible.d.cts +8 -0
  117. package/dist/collapsible.d.ts +8 -0
  118. package/dist/collapsible.js +34 -0
  119. package/dist/collapsible.js.map +1 -0
  120. package/dist/color-picker.cjs +60 -0
  121. package/dist/color-picker.cjs.map +1 -0
  122. package/dist/color-picker.d.cts +12 -0
  123. package/dist/color-picker.d.ts +12 -0
  124. package/dist/color-picker.js +57 -0
  125. package/dist/color-picker.js.map +1 -0
  126. package/dist/confirm-dialog.cjs +72 -0
  127. package/dist/confirm-dialog.cjs.map +1 -0
  128. package/dist/confirm-dialog.d.cts +19 -0
  129. package/dist/confirm-dialog.d.ts +19 -0
  130. package/dist/confirm-dialog.js +70 -0
  131. package/dist/confirm-dialog.js.map +1 -0
  132. package/dist/control-styles.cjs +16 -0
  133. package/dist/control-styles.cjs.map +1 -0
  134. package/dist/control-styles.d.cts +7 -0
  135. package/dist/control-styles.d.ts +7 -0
  136. package/dist/control-styles.js +10 -0
  137. package/dist/control-styles.js.map +1 -0
  138. package/dist/dialog.cjs +50 -0
  139. package/dist/dialog.cjs.map +1 -0
  140. package/dist/dialog.d.cts +20 -0
  141. package/dist/dialog.d.ts +20 -0
  142. package/dist/dialog.js +5 -0
  143. package/dist/dialog.js.map +1 -0
  144. package/dist/dropdown-menu.cjs +265 -0
  145. package/dist/dropdown-menu.cjs.map +1 -0
  146. package/dist/dropdown-menu.d.cts +32 -0
  147. package/dist/dropdown-menu.d.ts +32 -0
  148. package/dist/dropdown-menu.js +249 -0
  149. package/dist/dropdown-menu.js.map +1 -0
  150. package/dist/empty-state.cjs +50 -0
  151. package/dist/empty-state.cjs.map +1 -0
  152. package/dist/empty-state.d.cts +23 -0
  153. package/dist/empty-state.d.ts +23 -0
  154. package/dist/empty-state.js +47 -0
  155. package/dist/empty-state.js.map +1 -0
  156. package/dist/field.cjs +221 -0
  157. package/dist/field.cjs.map +1 -0
  158. package/dist/field.d.cts +30 -0
  159. package/dist/field.d.ts +30 -0
  160. package/dist/field.js +210 -0
  161. package/dist/field.js.map +1 -0
  162. package/dist/input-group.cjs +148 -0
  163. package/dist/input-group.cjs.map +1 -0
  164. package/dist/input-group.d.cts +20 -0
  165. package/dist/input-group.d.ts +20 -0
  166. package/dist/input-group.js +141 -0
  167. package/dist/input-group.js.map +1 -0
  168. package/dist/input.cjs +13 -0
  169. package/dist/input.cjs.map +1 -0
  170. package/dist/input.d.cts +6 -0
  171. package/dist/input.d.ts +6 -0
  172. package/dist/input.js +4 -0
  173. package/dist/input.js.map +1 -0
  174. package/dist/label.cjs +13 -0
  175. package/dist/label.cjs.map +1 -0
  176. package/dist/label.d.cts +7 -0
  177. package/dist/label.d.ts +7 -0
  178. package/dist/label.js +4 -0
  179. package/dist/label.js.map +1 -0
  180. package/dist/lib/utils.cjs +12 -0
  181. package/dist/lib/utils.cjs.map +1 -0
  182. package/dist/lib/utils.d.cts +5 -0
  183. package/dist/lib/utils.d.ts +5 -0
  184. package/dist/lib/utils.js +3 -0
  185. package/dist/lib/utils.js.map +1 -0
  186. package/dist/list-row.cjs +188 -0
  187. package/dist/list-row.cjs.map +1 -0
  188. package/dist/list-row.d.cts +51 -0
  189. package/dist/list-row.d.ts +51 -0
  190. package/dist/list-row.js +164 -0
  191. package/dist/list-row.js.map +1 -0
  192. package/dist/pill-tabs.cjs +109 -0
  193. package/dist/pill-tabs.cjs.map +1 -0
  194. package/dist/pill-tabs.d.cts +24 -0
  195. package/dist/pill-tabs.d.ts +24 -0
  196. package/dist/pill-tabs.js +107 -0
  197. package/dist/pill-tabs.js.map +1 -0
  198. package/dist/popover.cjs +88 -0
  199. package/dist/popover.cjs.map +1 -0
  200. package/dist/popover.d.cts +13 -0
  201. package/dist/popover.d.ts +13 -0
  202. package/dist/popover.js +80 -0
  203. package/dist/popover.js.map +1 -0
  204. package/dist/progress-bar.cjs +28 -0
  205. package/dist/progress-bar.cjs.map +1 -0
  206. package/dist/progress-bar.d.cts +11 -0
  207. package/dist/progress-bar.d.ts +11 -0
  208. package/dist/progress-bar.js +26 -0
  209. package/dist/progress-bar.js.map +1 -0
  210. package/dist/scroll-area.cjs +63 -0
  211. package/dist/scroll-area.cjs.map +1 -0
  212. package/dist/scroll-area.d.cts +8 -0
  213. package/dist/scroll-area.d.ts +8 -0
  214. package/dist/scroll-area.js +60 -0
  215. package/dist/scroll-area.js.map +1 -0
  216. package/dist/section-label.cjs +30 -0
  217. package/dist/section-label.cjs.map +1 -0
  218. package/dist/section-label.d.cts +13 -0
  219. package/dist/section-label.d.ts +13 -0
  220. package/dist/section-label.js +28 -0
  221. package/dist/section-label.js.map +1 -0
  222. package/dist/segmented-control.cjs +75 -0
  223. package/dist/segmented-control.cjs.map +1 -0
  224. package/dist/segmented-control.d.cts +26 -0
  225. package/dist/segmented-control.d.ts +26 -0
  226. package/dist/segmented-control.js +53 -0
  227. package/dist/segmented-control.js.map +1 -0
  228. package/dist/select.cjs +193 -0
  229. package/dist/select.cjs.map +1 -0
  230. package/dist/select.d.cts +18 -0
  231. package/dist/select.d.ts +18 -0
  232. package/dist/select.js +182 -0
  233. package/dist/select.js.map +1 -0
  234. package/dist/separator.cjs +13 -0
  235. package/dist/separator.cjs.map +1 -0
  236. package/dist/separator.d.cts +7 -0
  237. package/dist/separator.d.ts +7 -0
  238. package/dist/separator.js +4 -0
  239. package/dist/separator.js.map +1 -0
  240. package/dist/sidebar.cjs +29 -0
  241. package/dist/sidebar.cjs.map +1 -0
  242. package/dist/sidebar.d.cts +58 -0
  243. package/dist/sidebar.d.ts +58 -0
  244. package/dist/sidebar.js +4 -0
  245. package/dist/sidebar.js.map +1 -0
  246. package/dist/skeleton.cjs +19 -0
  247. package/dist/skeleton.cjs.map +1 -0
  248. package/dist/skeleton.d.cts +5 -0
  249. package/dist/skeleton.d.ts +5 -0
  250. package/dist/skeleton.js +17 -0
  251. package/dist/skeleton.js.map +1 -0
  252. package/dist/sonner.cjs +40 -0
  253. package/dist/sonner.cjs.map +1 -0
  254. package/dist/sonner.d.cts +6 -0
  255. package/dist/sonner.d.ts +6 -0
  256. package/dist/sonner.js +38 -0
  257. package/dist/sonner.js.map +1 -0
  258. package/dist/sparkline.cjs +44 -0
  259. package/dist/sparkline.cjs.map +1 -0
  260. package/dist/sparkline.d.cts +12 -0
  261. package/dist/sparkline.d.ts +12 -0
  262. package/dist/sparkline.js +42 -0
  263. package/dist/sparkline.js.map +1 -0
  264. package/dist/spinner.cjs +13 -0
  265. package/dist/spinner.cjs.map +1 -0
  266. package/dist/spinner.d.cts +5 -0
  267. package/dist/spinner.d.ts +5 -0
  268. package/dist/spinner.js +11 -0
  269. package/dist/spinner.js.map +1 -0
  270. package/dist/stat-card.cjs +65 -0
  271. package/dist/stat-card.cjs.map +1 -0
  272. package/dist/stat-card.d.cts +22 -0
  273. package/dist/stat-card.d.ts +22 -0
  274. package/dist/stat-card.js +61 -0
  275. package/dist/stat-card.js.map +1 -0
  276. package/dist/status-dot.cjs +32 -0
  277. package/dist/status-dot.cjs.map +1 -0
  278. package/dist/status-dot.d.cts +11 -0
  279. package/dist/status-dot.d.ts +11 -0
  280. package/dist/status-dot.js +29 -0
  281. package/dist/status-dot.js.map +1 -0
  282. package/dist/switch.cjs +38 -0
  283. package/dist/switch.cjs.map +1 -0
  284. package/dist/switch.d.cts +9 -0
  285. package/dist/switch.d.ts +9 -0
  286. package/dist/switch.js +36 -0
  287. package/dist/switch.js.map +1 -0
  288. package/dist/table.cjs +118 -0
  289. package/dist/table.cjs.map +1 -0
  290. package/dist/table.d.cts +13 -0
  291. package/dist/table.d.ts +13 -0
  292. package/dist/table.js +109 -0
  293. package/dist/table.js.map +1 -0
  294. package/dist/tabs.cjs +124 -0
  295. package/dist/tabs.cjs.map +1 -0
  296. package/dist/tabs.d.cts +15 -0
  297. package/dist/tabs.d.ts +15 -0
  298. package/dist/tabs.js +118 -0
  299. package/dist/tabs.js.map +1 -0
  300. package/dist/text-link.cjs +51 -0
  301. package/dist/text-link.cjs.map +1 -0
  302. package/dist/text-link.d.cts +15 -0
  303. package/dist/text-link.d.ts +15 -0
  304. package/dist/text-link.js +48 -0
  305. package/dist/text-link.js.map +1 -0
  306. package/dist/textarea.cjs +13 -0
  307. package/dist/textarea.cjs.map +1 -0
  308. package/dist/textarea.d.cts +6 -0
  309. package/dist/textarea.d.ts +6 -0
  310. package/dist/textarea.js +4 -0
  311. package/dist/textarea.js.map +1 -0
  312. package/dist/theme.css +109 -0
  313. package/dist/toggle-group.cjs +155 -0
  314. package/dist/toggle-group.cjs.map +1 -0
  315. package/dist/toggle-group.d.cts +31 -0
  316. package/dist/toggle-group.d.ts +31 -0
  317. package/dist/toggle-group.js +130 -0
  318. package/dist/toggle-group.js.map +1 -0
  319. package/dist/toggle.cjs +21 -0
  320. package/dist/toggle.cjs.map +1 -0
  321. package/dist/toggle.d.cts +23 -0
  322. package/dist/toggle.d.ts +23 -0
  323. package/dist/toggle.js +4 -0
  324. package/dist/toggle.js.map +1 -0
  325. package/dist/tokens.css +77 -0
  326. package/dist/tooltip.cjs +25 -0
  327. package/dist/tooltip.cjs.map +1 -0
  328. package/dist/tooltip.d.cts +10 -0
  329. package/dist/tooltip.d.ts +10 -0
  330. package/dist/tooltip.js +4 -0
  331. package/dist/tooltip.js.map +1 -0
  332. package/package.json +60 -4
package/dist/field.cjs ADDED
@@ -0,0 +1,221 @@
1
+ 'use strict';
2
+
3
+ var chunk6ARYCL4L_cjs = require('./chunk-6ARYCL4L.cjs');
4
+ var chunkOAVCB3MR_cjs = require('./chunk-OAVCB3MR.cjs');
5
+ var chunk6YHDDRIM_cjs = require('./chunk-6YHDDRIM.cjs');
6
+ var react = require('react');
7
+ var classVarianceAuthority = require('class-variance-authority');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ function FieldSet({ className, ...props }) {
11
+ return /* @__PURE__ */ jsxRuntime.jsx(
12
+ "fieldset",
13
+ {
14
+ "data-slot": "field-set",
15
+ className: chunk6YHDDRIM_cjs.cn(
16
+ "flex flex-col gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",
17
+ className
18
+ ),
19
+ ...props
20
+ }
21
+ );
22
+ }
23
+ function FieldLegend({
24
+ className,
25
+ variant = "legend",
26
+ ...props
27
+ }) {
28
+ return /* @__PURE__ */ jsxRuntime.jsx(
29
+ "legend",
30
+ {
31
+ "data-slot": "field-legend",
32
+ "data-variant": variant,
33
+ className: chunk6YHDDRIM_cjs.cn(
34
+ "mb-3 font-semibold uppercase data-[variant=label]:text-xs data-[variant=legend]:text-xs",
35
+ className
36
+ ),
37
+ ...props
38
+ }
39
+ );
40
+ }
41
+ function FieldGroup({ className, ...props }) {
42
+ return /* @__PURE__ */ jsxRuntime.jsx(
43
+ "div",
44
+ {
45
+ "data-slot": "field-group",
46
+ className: chunk6YHDDRIM_cjs.cn(
47
+ "group/field-group @container/field-group flex w-full flex-col gap-10 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4",
48
+ className
49
+ ),
50
+ ...props
51
+ }
52
+ );
53
+ }
54
+ var fieldVariants = classVarianceAuthority.cva(
55
+ "group/field flex w-full gap-3 data-[invalid=true]:text-destructive",
56
+ {
57
+ variants: {
58
+ orientation: {
59
+ vertical: "flex-col *:w-full [&>.sr-only]:w-auto",
60
+ horizontal: "flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
61
+ responsive: "flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
62
+ }
63
+ },
64
+ defaultVariants: {
65
+ orientation: "vertical"
66
+ }
67
+ }
68
+ );
69
+ function Field({
70
+ className,
71
+ orientation = "vertical",
72
+ ...props
73
+ }) {
74
+ return /* @__PURE__ */ jsxRuntime.jsx(
75
+ "div",
76
+ {
77
+ role: "group",
78
+ "data-slot": "field",
79
+ "data-orientation": orientation,
80
+ className: chunk6YHDDRIM_cjs.cn(fieldVariants({ orientation }), className),
81
+ ...props
82
+ }
83
+ );
84
+ }
85
+ function FieldContent({ className, ...props }) {
86
+ return /* @__PURE__ */ jsxRuntime.jsx(
87
+ "div",
88
+ {
89
+ "data-slot": "field-content",
90
+ className: chunk6YHDDRIM_cjs.cn(
91
+ "group/field-content flex flex-1 flex-col gap-1 leading-snug",
92
+ className
93
+ ),
94
+ ...props
95
+ }
96
+ );
97
+ }
98
+ function FieldLabel({
99
+ className,
100
+ ...props
101
+ }) {
102
+ return /* @__PURE__ */ jsxRuntime.jsx(
103
+ chunkOAVCB3MR_cjs.Label,
104
+ {
105
+ "data-slot": "field-label",
106
+ className: chunk6YHDDRIM_cjs.cn(
107
+ "group/field-label peer/field-label flex w-fit gap-2 leading-relaxed group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-none has-[>[data-slot=field]]:border *:data-[slot=field]:p-4 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10",
108
+ "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col",
109
+ className
110
+ ),
111
+ ...props
112
+ }
113
+ );
114
+ }
115
+ function FieldTitle({ className, ...props }) {
116
+ return /* @__PURE__ */ jsxRuntime.jsx(
117
+ "div",
118
+ {
119
+ "data-slot": "field-label",
120
+ className: chunk6YHDDRIM_cjs.cn(
121
+ "flex w-fit items-center gap-2 text-xs font-semibold uppercase group-data-[disabled=true]/field:opacity-50 in-data-[slot=field-label]:font-semibold",
122
+ className
123
+ ),
124
+ ...props
125
+ }
126
+ );
127
+ }
128
+ function FieldDescription({ className, ...props }) {
129
+ return /* @__PURE__ */ jsxRuntime.jsx(
130
+ "p",
131
+ {
132
+ "data-slot": "field-description",
133
+ className: chunk6YHDDRIM_cjs.cn(
134
+ "text-left text-sm leading-normal font-normal tracking-normal text-muted-foreground normal-case group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5",
135
+ "last:mt-0 nth-last-2:-mt-1",
136
+ "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
137
+ className
138
+ ),
139
+ ...props
140
+ }
141
+ );
142
+ }
143
+ function FieldSeparator({
144
+ children,
145
+ className,
146
+ ...props
147
+ }) {
148
+ return /* @__PURE__ */ jsxRuntime.jsxs(
149
+ "div",
150
+ {
151
+ "data-slot": "field-separator",
152
+ "data-content": !!children,
153
+ className: chunk6YHDDRIM_cjs.cn(
154
+ "relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2",
155
+ className
156
+ ),
157
+ ...props,
158
+ children: [
159
+ /* @__PURE__ */ jsxRuntime.jsx(chunk6ARYCL4L_cjs.Separator, { className: "absolute inset-0 top-1/2" }),
160
+ children && /* @__PURE__ */ jsxRuntime.jsx(
161
+ "span",
162
+ {
163
+ className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground",
164
+ "data-slot": "field-separator-content",
165
+ children
166
+ }
167
+ )
168
+ ]
169
+ }
170
+ );
171
+ }
172
+ function FieldError({
173
+ className,
174
+ children,
175
+ errors,
176
+ ...props
177
+ }) {
178
+ const content = react.useMemo(() => {
179
+ if (children) {
180
+ return children;
181
+ }
182
+ if (!errors?.length) {
183
+ return null;
184
+ }
185
+ const uniqueErrors = [
186
+ ...new Map(errors.map((error) => [error?.message, error])).values()
187
+ ];
188
+ if (uniqueErrors?.length == 1) {
189
+ return uniqueErrors[0]?.message;
190
+ }
191
+ return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
192
+ (error, index) => error?.message && /* @__PURE__ */ jsxRuntime.jsx("li", { children: error.message }, index)
193
+ ) });
194
+ }, [children, errors]);
195
+ if (!content) {
196
+ return null;
197
+ }
198
+ return /* @__PURE__ */ jsxRuntime.jsx(
199
+ "div",
200
+ {
201
+ role: "alert",
202
+ "data-slot": "field-error",
203
+ className: chunk6YHDDRIM_cjs.cn("text-sm font-normal text-destructive", className),
204
+ ...props,
205
+ children: content
206
+ }
207
+ );
208
+ }
209
+
210
+ exports.Field = Field;
211
+ exports.FieldContent = FieldContent;
212
+ exports.FieldDescription = FieldDescription;
213
+ exports.FieldError = FieldError;
214
+ exports.FieldGroup = FieldGroup;
215
+ exports.FieldLabel = FieldLabel;
216
+ exports.FieldLegend = FieldLegend;
217
+ exports.FieldSeparator = FieldSeparator;
218
+ exports.FieldSet = FieldSet;
219
+ exports.FieldTitle = FieldTitle;
220
+ //# sourceMappingURL=field.cjs.map
221
+ //# sourceMappingURL=field.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/field.tsx"],"names":["jsx","cn","cva","Label","jsxs","Separator","useMemo"],"mappings":"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","file":"field.cjs","sourcesContent":["\"use client\"\n\nimport { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"./lib/utils\"\nimport { Label } from \"./label\"\nimport { Separator } from \"./separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-semibold uppercase data-[variant=label]:text-xs data-[variant=legend]:text-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-10 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\n \"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-1 leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-relaxed group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-none has-[>[data-slot=field]]:border *:data-[slot=field]:p-4 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-xs font-semibold uppercase group-data-[disabled=true]/field:opacity-50 in-data-[slot=field-label]:font-semibold\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-left text-sm leading-normal font-normal tracking-normal text-muted-foreground normal-case group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors?.length) {\n return null\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ]\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-sm font-normal text-destructive\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n}\n"]}
@@ -0,0 +1,30 @@
1
+ import * as class_variance_authority_types from 'class-variance-authority/types';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { Label } from './label.cjs';
5
+ import 'react';
6
+ import 'radix-ui';
7
+
8
+ declare function FieldSet({ className, ...props }: React.ComponentProps<"fieldset">): react_jsx_runtime.JSX.Element;
9
+ declare function FieldLegend({ className, variant, ...props }: React.ComponentProps<"legend"> & {
10
+ variant?: "legend" | "label";
11
+ }): react_jsx_runtime.JSX.Element;
12
+ declare function FieldGroup({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
13
+ declare const fieldVariants: (props?: ({
14
+ orientation?: "horizontal" | "vertical" | "responsive" | null | undefined;
15
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
16
+ declare function Field({ className, orientation, ...props }: React.ComponentProps<"div"> & VariantProps<typeof fieldVariants>): react_jsx_runtime.JSX.Element;
17
+ declare function FieldContent({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
18
+ declare function FieldLabel({ className, ...props }: React.ComponentProps<typeof Label>): react_jsx_runtime.JSX.Element;
19
+ declare function FieldTitle({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
20
+ declare function FieldDescription({ className, ...props }: React.ComponentProps<"p">): react_jsx_runtime.JSX.Element;
21
+ declare function FieldSeparator({ children, className, ...props }: React.ComponentProps<"div"> & {
22
+ children?: React.ReactNode;
23
+ }): react_jsx_runtime.JSX.Element;
24
+ declare function FieldError({ className, children, errors, ...props }: React.ComponentProps<"div"> & {
25
+ errors?: Array<{
26
+ message?: string;
27
+ } | undefined>;
28
+ }): react_jsx_runtime.JSX.Element | null;
29
+
30
+ export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle };
@@ -0,0 +1,30 @@
1
+ import * as class_variance_authority_types from 'class-variance-authority/types';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { Label } from './label.js';
5
+ import 'react';
6
+ import 'radix-ui';
7
+
8
+ declare function FieldSet({ className, ...props }: React.ComponentProps<"fieldset">): react_jsx_runtime.JSX.Element;
9
+ declare function FieldLegend({ className, variant, ...props }: React.ComponentProps<"legend"> & {
10
+ variant?: "legend" | "label";
11
+ }): react_jsx_runtime.JSX.Element;
12
+ declare function FieldGroup({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
13
+ declare const fieldVariants: (props?: ({
14
+ orientation?: "horizontal" | "vertical" | "responsive" | null | undefined;
15
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
16
+ declare function Field({ className, orientation, ...props }: React.ComponentProps<"div"> & VariantProps<typeof fieldVariants>): react_jsx_runtime.JSX.Element;
17
+ declare function FieldContent({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
18
+ declare function FieldLabel({ className, ...props }: React.ComponentProps<typeof Label>): react_jsx_runtime.JSX.Element;
19
+ declare function FieldTitle({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
20
+ declare function FieldDescription({ className, ...props }: React.ComponentProps<"p">): react_jsx_runtime.JSX.Element;
21
+ declare function FieldSeparator({ children, className, ...props }: React.ComponentProps<"div"> & {
22
+ children?: React.ReactNode;
23
+ }): react_jsx_runtime.JSX.Element;
24
+ declare function FieldError({ className, children, errors, ...props }: React.ComponentProps<"div"> & {
25
+ errors?: Array<{
26
+ message?: string;
27
+ } | undefined>;
28
+ }): react_jsx_runtime.JSX.Element | null;
29
+
30
+ export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle };
package/dist/field.js ADDED
@@ -0,0 +1,210 @@
1
+ import { Separator } from './chunk-CTIEUG5L.js';
2
+ import { Label } from './chunk-M677T75H.js';
3
+ import { cn } from './chunk-LZGII7SX.js';
4
+ import { useMemo } from 'react';
5
+ import { cva } from 'class-variance-authority';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+
8
+ function FieldSet({ className, ...props }) {
9
+ return /* @__PURE__ */ jsx(
10
+ "fieldset",
11
+ {
12
+ "data-slot": "field-set",
13
+ className: cn(
14
+ "flex flex-col gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",
15
+ className
16
+ ),
17
+ ...props
18
+ }
19
+ );
20
+ }
21
+ function FieldLegend({
22
+ className,
23
+ variant = "legend",
24
+ ...props
25
+ }) {
26
+ return /* @__PURE__ */ jsx(
27
+ "legend",
28
+ {
29
+ "data-slot": "field-legend",
30
+ "data-variant": variant,
31
+ className: cn(
32
+ "mb-3 font-semibold uppercase data-[variant=label]:text-xs data-[variant=legend]:text-xs",
33
+ className
34
+ ),
35
+ ...props
36
+ }
37
+ );
38
+ }
39
+ function FieldGroup({ className, ...props }) {
40
+ return /* @__PURE__ */ jsx(
41
+ "div",
42
+ {
43
+ "data-slot": "field-group",
44
+ className: cn(
45
+ "group/field-group @container/field-group flex w-full flex-col gap-10 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4",
46
+ className
47
+ ),
48
+ ...props
49
+ }
50
+ );
51
+ }
52
+ var fieldVariants = cva(
53
+ "group/field flex w-full gap-3 data-[invalid=true]:text-destructive",
54
+ {
55
+ variants: {
56
+ orientation: {
57
+ vertical: "flex-col *:w-full [&>.sr-only]:w-auto",
58
+ horizontal: "flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
59
+ responsive: "flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
60
+ }
61
+ },
62
+ defaultVariants: {
63
+ orientation: "vertical"
64
+ }
65
+ }
66
+ );
67
+ function Field({
68
+ className,
69
+ orientation = "vertical",
70
+ ...props
71
+ }) {
72
+ return /* @__PURE__ */ jsx(
73
+ "div",
74
+ {
75
+ role: "group",
76
+ "data-slot": "field",
77
+ "data-orientation": orientation,
78
+ className: cn(fieldVariants({ orientation }), className),
79
+ ...props
80
+ }
81
+ );
82
+ }
83
+ function FieldContent({ className, ...props }) {
84
+ return /* @__PURE__ */ jsx(
85
+ "div",
86
+ {
87
+ "data-slot": "field-content",
88
+ className: cn(
89
+ "group/field-content flex flex-1 flex-col gap-1 leading-snug",
90
+ className
91
+ ),
92
+ ...props
93
+ }
94
+ );
95
+ }
96
+ function FieldLabel({
97
+ className,
98
+ ...props
99
+ }) {
100
+ return /* @__PURE__ */ jsx(
101
+ Label,
102
+ {
103
+ "data-slot": "field-label",
104
+ className: cn(
105
+ "group/field-label peer/field-label flex w-fit gap-2 leading-relaxed group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-none has-[>[data-slot=field]]:border *:data-[slot=field]:p-4 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10",
106
+ "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col",
107
+ className
108
+ ),
109
+ ...props
110
+ }
111
+ );
112
+ }
113
+ function FieldTitle({ className, ...props }) {
114
+ return /* @__PURE__ */ jsx(
115
+ "div",
116
+ {
117
+ "data-slot": "field-label",
118
+ className: cn(
119
+ "flex w-fit items-center gap-2 text-xs font-semibold uppercase group-data-[disabled=true]/field:opacity-50 in-data-[slot=field-label]:font-semibold",
120
+ className
121
+ ),
122
+ ...props
123
+ }
124
+ );
125
+ }
126
+ function FieldDescription({ className, ...props }) {
127
+ return /* @__PURE__ */ jsx(
128
+ "p",
129
+ {
130
+ "data-slot": "field-description",
131
+ className: cn(
132
+ "text-left text-sm leading-normal font-normal tracking-normal text-muted-foreground normal-case group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5",
133
+ "last:mt-0 nth-last-2:-mt-1",
134
+ "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
135
+ className
136
+ ),
137
+ ...props
138
+ }
139
+ );
140
+ }
141
+ function FieldSeparator({
142
+ children,
143
+ className,
144
+ ...props
145
+ }) {
146
+ return /* @__PURE__ */ jsxs(
147
+ "div",
148
+ {
149
+ "data-slot": "field-separator",
150
+ "data-content": !!children,
151
+ className: cn(
152
+ "relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2",
153
+ className
154
+ ),
155
+ ...props,
156
+ children: [
157
+ /* @__PURE__ */ jsx(Separator, { className: "absolute inset-0 top-1/2" }),
158
+ children && /* @__PURE__ */ jsx(
159
+ "span",
160
+ {
161
+ className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground",
162
+ "data-slot": "field-separator-content",
163
+ children
164
+ }
165
+ )
166
+ ]
167
+ }
168
+ );
169
+ }
170
+ function FieldError({
171
+ className,
172
+ children,
173
+ errors,
174
+ ...props
175
+ }) {
176
+ const content = useMemo(() => {
177
+ if (children) {
178
+ return children;
179
+ }
180
+ if (!errors?.length) {
181
+ return null;
182
+ }
183
+ const uniqueErrors = [
184
+ ...new Map(errors.map((error) => [error?.message, error])).values()
185
+ ];
186
+ if (uniqueErrors?.length == 1) {
187
+ return uniqueErrors[0]?.message;
188
+ }
189
+ return /* @__PURE__ */ jsx("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
190
+ (error, index) => error?.message && /* @__PURE__ */ jsx("li", { children: error.message }, index)
191
+ ) });
192
+ }, [children, errors]);
193
+ if (!content) {
194
+ return null;
195
+ }
196
+ return /* @__PURE__ */ jsx(
197
+ "div",
198
+ {
199
+ role: "alert",
200
+ "data-slot": "field-error",
201
+ className: cn("text-sm font-normal text-destructive", className),
202
+ ...props,
203
+ children: content
204
+ }
205
+ );
206
+ }
207
+
208
+ export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle };
209
+ //# sourceMappingURL=field.js.map
210
+ //# sourceMappingURL=field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/field.tsx"],"names":[],"mappings":"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","file":"field.js","sourcesContent":["\"use client\"\n\nimport { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"./lib/utils\"\nimport { Label } from \"./label\"\nimport { Separator } from \"./separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-semibold uppercase data-[variant=label]:text-xs data-[variant=legend]:text-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-10 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\n \"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-1 leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-relaxed group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-none has-[>[data-slot=field]]:border *:data-[slot=field]:p-4 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-xs font-semibold uppercase group-data-[disabled=true]/field:opacity-50 in-data-[slot=field-label]:font-semibold\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-left text-sm leading-normal font-normal tracking-normal text-muted-foreground normal-case group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors?.length) {\n return null\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ]\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-sm font-normal text-destructive\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n}\n"]}