@docyrus/shadcn 0.1.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 (343) hide show
  1. package/README.md +158 -0
  2. package/dist/default/accordion.d.ts +9 -0
  3. package/dist/default/accordion.js +51 -0
  4. package/dist/default/accordion.js.map +1 -0
  5. package/dist/default/alert-dialog.d.ts +23 -0
  6. package/dist/default/alert-dialog.js +153 -0
  7. package/dist/default/alert-dialog.js.map +1 -0
  8. package/dist/default/alert.d.ts +11 -0
  9. package/dist/default/alert.js +56 -0
  10. package/dist/default/alert.js.map +1 -0
  11. package/dist/default/aspect-ratio.d.ts +6 -0
  12. package/dist/default/aspect-ratio.js +8 -0
  13. package/dist/default/aspect-ratio.js.map +1 -0
  14. package/dist/default/avatar.d.ts +8 -0
  15. package/dist/default/avatar.js +46 -0
  16. package/dist/default/avatar.js.map +1 -0
  17. package/dist/default/badge.d.ts +13 -0
  18. package/dist/default/badge.js +32 -0
  19. package/dist/default/badge.js.map +1 -0
  20. package/dist/default/breadcrumb.d.ts +22 -0
  21. package/dist/default/breadcrumb.js +94 -0
  22. package/dist/default/breadcrumb.js.map +1 -0
  23. package/dist/default/button-group.d.ts +17 -0
  24. package/dist/default/button-group.js +98 -0
  25. package/dist/default/button-group.js.map +1 -0
  26. package/dist/default/button.d.ts +14 -0
  27. package/dist/default/button.js +54 -0
  28. package/dist/default/button.js.map +1 -0
  29. package/dist/default/calendar.d.ts +13 -0
  30. package/dist/default/calendar.js +231 -0
  31. package/dist/default/calendar.js.map +1 -0
  32. package/dist/default/card.d.ts +10 -0
  33. package/dist/default/card.js +66 -0
  34. package/dist/default/card.js.map +1 -0
  35. package/dist/default/carousel.d.ts +23 -0
  36. package/dist/default/carousel.js +237 -0
  37. package/dist/default/carousel.js.map +1 -0
  38. package/dist/default/chart.d.ts +69 -0
  39. package/dist/default/chart.js +241 -0
  40. package/dist/default/chart.js.map +1 -0
  41. package/dist/default/checkbox.d.ts +6 -0
  42. package/dist/default/checkbox.js +34 -0
  43. package/dist/default/checkbox.js.map +1 -0
  44. package/dist/default/collapsible.d.ts +8 -0
  45. package/dist/default/collapsible.js +9 -0
  46. package/dist/default/collapsible.js.map +1 -0
  47. package/dist/default/command.d.ts +83 -0
  48. package/dist/default/command.js +169 -0
  49. package/dist/default/command.js.map +1 -0
  50. package/dist/default/context-menu.d.ts +30 -0
  51. package/dist/default/context-menu.js +146 -0
  52. package/dist/default/context-menu.js.map +1 -0
  53. package/dist/default/dialog.d.ts +22 -0
  54. package/dist/default/dialog.js +101 -0
  55. package/dist/default/dialog.js.map +1 -0
  56. package/dist/default/drawer.d.ts +27 -0
  57. package/dist/default/drawer.js +99 -0
  58. package/dist/default/drawer.js.map +1 -0
  59. package/dist/default/dropdown-menu.d.ts +30 -0
  60. package/dist/default/dropdown-menu.js +143 -0
  61. package/dist/default/dropdown-menu.js.map +1 -0
  62. package/dist/default/empty.d.ts +15 -0
  63. package/dist/default/empty.js +104 -0
  64. package/dist/default/empty.js.map +1 -0
  65. package/dist/default/field.d.ts +30 -0
  66. package/dist/default/field.js +253 -0
  67. package/dist/default/field.js.map +1 -0
  68. package/dist/default/form.d.ts +28 -0
  69. package/dist/default/form.js +121 -0
  70. package/dist/default/form.js.map +1 -0
  71. package/dist/default/hover-card.d.ts +8 -0
  72. package/dist/default/hover-card.js +30 -0
  73. package/dist/default/hover-card.js.map +1 -0
  74. package/dist/default/index.d.ts +95 -0
  75. package/dist/default/index.js +4029 -0
  76. package/dist/default/index.js.map +1 -0
  77. package/dist/default/input-group.d.ts +20 -0
  78. package/dist/default/input-group.js +225 -0
  79. package/dist/default/input-group.js.map +1 -0
  80. package/dist/default/input-otp.d.ts +37 -0
  81. package/dist/default/input-otp.js +53 -0
  82. package/dist/default/input-otp.js.map +1 -0
  83. package/dist/default/input.d.ts +5 -0
  84. package/dist/default/input.js +30 -0
  85. package/dist/default/input.js.map +1 -0
  86. package/dist/default/item.d.ts +28 -0
  87. package/dist/default/item.js +203 -0
  88. package/dist/default/item.js.map +1 -0
  89. package/dist/default/kbd.d.ts +6 -0
  90. package/dist/default/kbd.js +37 -0
  91. package/dist/default/kbd.js.map +1 -0
  92. package/dist/default/label.d.ts +8 -0
  93. package/dist/default/label.js +26 -0
  94. package/dist/default/label.js.map +1 -0
  95. package/dist/default/menubar.d.ts +31 -0
  96. package/dist/default/menubar.js +194 -0
  97. package/dist/default/menubar.js.map +1 -0
  98. package/dist/default/navigation-menu.d.ts +15 -0
  99. package/dist/default/navigation-menu.js +106 -0
  100. package/dist/default/navigation-menu.js.map +1 -0
  101. package/dist/default/pagination.d.ts +33 -0
  102. package/dist/default/pagination.js +146 -0
  103. package/dist/default/pagination.js.map +1 -0
  104. package/dist/default/popover.d.ts +8 -0
  105. package/dist/default/popover.js +30 -0
  106. package/dist/default/popover.js.map +1 -0
  107. package/dist/default/progress.d.ts +6 -0
  108. package/dist/default/progress.js +32 -0
  109. package/dist/default/progress.js.map +1 -0
  110. package/dist/default/radio-group.d.ts +7 -0
  111. package/dist/default/radio-group.js +41 -0
  112. package/dist/default/radio-group.js.map +1 -0
  113. package/dist/default/resizable.d.ts +27 -0
  114. package/dist/default/resizable.js +42 -0
  115. package/dist/default/resizable.js.map +1 -0
  116. package/dist/default/scroll-area.d.ts +7 -0
  117. package/dist/default/scroll-area.js +44 -0
  118. package/dist/default/scroll-area.js.map +1 -0
  119. package/dist/default/select.d.ts +15 -0
  120. package/dist/default/select.js +121 -0
  121. package/dist/default/select.js.map +1 -0
  122. package/dist/default/separator.d.ts +6 -0
  123. package/dist/default/separator.js +31 -0
  124. package/dist/default/separator.js.map +1 -0
  125. package/dist/default/sheet.d.ts +29 -0
  126. package/dist/default/sheet.js +112 -0
  127. package/dist/default/sheet.js.map +1 -0
  128. package/dist/default/sidebar.d.ts +71 -0
  129. package/dist/default/sidebar.js +780 -0
  130. package/dist/default/sidebar.js.map +1 -0
  131. package/dist/default/skeleton.d.ts +5 -0
  132. package/dist/default/skeleton.js +24 -0
  133. package/dist/default/skeleton.js.map +1 -0
  134. package/dist/default/slider.d.ts +6 -0
  135. package/dist/default/slider.js +30 -0
  136. package/dist/default/slider.js.map +1 -0
  137. package/dist/default/sonner.d.ts +7 -0
  138. package/dist/default/sonner.js +35 -0
  139. package/dist/default/sonner.js.map +1 -0
  140. package/dist/default/spinner.d.ts +5 -0
  141. package/dist/default/spinner.js +24 -0
  142. package/dist/default/spinner.js.map +1 -0
  143. package/dist/default/styles.css +149 -0
  144. package/dist/default/switch.d.ts +6 -0
  145. package/dist/default/switch.js +34 -0
  146. package/dist/default/switch.js.map +1 -0
  147. package/dist/default/table.d.ts +12 -0
  148. package/dist/default/table.js +87 -0
  149. package/dist/default/table.js.map +1 -0
  150. package/dist/default/tabs.d.ts +9 -0
  151. package/dist/default/tabs.js +51 -0
  152. package/dist/default/tabs.js.map +1 -0
  153. package/dist/default/textarea.d.ts +5 -0
  154. package/dist/default/textarea.js +27 -0
  155. package/dist/default/textarea.js.map +1 -0
  156. package/dist/default/toggle-group.d.ts +15 -0
  157. package/dist/default/toggle-group.js +77 -0
  158. package/dist/default/toggle-group.js.map +1 -0
  159. package/dist/default/toggle.d.ts +15 -0
  160. package/dist/default/toggle.js +44 -0
  161. package/dist/default/toggle.js.map +1 -0
  162. package/dist/default/tooltip.d.ts +9 -0
  163. package/dist/default/tooltip.js +29 -0
  164. package/dist/default/tooltip.js.map +1 -0
  165. package/dist/hooks/index.d.ts +1 -0
  166. package/dist/hooks/index.js +21 -0
  167. package/dist/hooks/index.js.map +1 -0
  168. package/dist/hooks/use-mobile.d.ts +3 -0
  169. package/dist/hooks/use-mobile.js +21 -0
  170. package/dist/hooks/use-mobile.js.map +1 -0
  171. package/dist/index.d.ts +98 -0
  172. package/dist/index.js +4029 -0
  173. package/dist/index.js.map +1 -0
  174. package/dist/lib/index.d.ts +2 -0
  175. package/dist/lib/index.js +11 -0
  176. package/dist/lib/index.js.map +1 -0
  177. package/dist/lib/utils.d.ts +5 -0
  178. package/dist/lib/utils.js +11 -0
  179. package/dist/lib/utils.js.map +1 -0
  180. package/dist/new-york/accordion.d.ts +10 -0
  181. package/dist/new-york/accordion.js +68 -0
  182. package/dist/new-york/accordion.js.map +1 -0
  183. package/dist/new-york/alert-dialog.d.ts +17 -0
  184. package/dist/new-york/alert-dialog.js +171 -0
  185. package/dist/new-york/alert-dialog.js.map +1 -0
  186. package/dist/new-york/alert.d.ts +13 -0
  187. package/dist/new-york/alert.js +71 -0
  188. package/dist/new-york/alert.js.map +1 -0
  189. package/dist/new-york/aspect-ratio.d.ts +6 -0
  190. package/dist/new-york/aspect-ratio.js +12 -0
  191. package/dist/new-york/aspect-ratio.js.map +1 -0
  192. package/dist/new-york/avatar.d.ts +9 -0
  193. package/dist/new-york/avatar.js +58 -0
  194. package/dist/new-york/avatar.js.map +1 -0
  195. package/dist/new-york/badge.d.ts +13 -0
  196. package/dist/new-york/badge.js +46 -0
  197. package/dist/new-york/badge.js.map +1 -0
  198. package/dist/new-york/breadcrumb.d.ts +14 -0
  199. package/dist/new-york/breadcrumb.js +104 -0
  200. package/dist/new-york/breadcrumb.js.map +1 -0
  201. package/dist/new-york/button-group.d.ts +17 -0
  202. package/dist/new-york/button-group.js +100 -0
  203. package/dist/new-york/button-group.js.map +1 -0
  204. package/dist/new-york/button.d.ts +14 -0
  205. package/dist/new-york/button.js +58 -0
  206. package/dist/new-york/button.js.map +1 -0
  207. package/dist/new-york/calendar.d.ts +13 -0
  208. package/dist/new-york/calendar.js +237 -0
  209. package/dist/new-york/calendar.js.map +1 -0
  210. package/dist/new-york/card.d.ts +12 -0
  211. package/dist/new-york/card.js +91 -0
  212. package/dist/new-york/card.js.map +1 -0
  213. package/dist/new-york/carousel.d.ts +24 -0
  214. package/dist/new-york/carousel.js +246 -0
  215. package/dist/new-york/carousel.js.map +1 -0
  216. package/dist/new-york/chart.d.ts +43 -0
  217. package/dist/new-york/chart.js +243 -0
  218. package/dist/new-york/chart.js.map +1 -0
  219. package/dist/new-york/checkbox.d.ts +7 -0
  220. package/dist/new-york/checkbox.js +37 -0
  221. package/dist/new-york/checkbox.js.map +1 -0
  222. package/dist/new-york/collapsible.d.ts +8 -0
  223. package/dist/new-york/collapsible.js +35 -0
  224. package/dist/new-york/collapsible.js.map +1 -0
  225. package/dist/new-york/command.d.ts +22 -0
  226. package/dist/new-york/command.js +266 -0
  227. package/dist/new-york/command.js.map +1 -0
  228. package/dist/new-york/context-menu.d.ts +28 -0
  229. package/dist/new-york/context-menu.js +215 -0
  230. package/dist/new-york/context-menu.js.map +1 -0
  231. package/dist/new-york/dialog.d.ts +18 -0
  232. package/dist/new-york/dialog.js +134 -0
  233. package/dist/new-york/dialog.js.map +1 -0
  234. package/dist/new-york/drawer.d.ts +16 -0
  235. package/dist/new-york/drawer.js +125 -0
  236. package/dist/new-york/drawer.js.map +1 -0
  237. package/dist/new-york/dropdown-menu.d.ts +28 -0
  238. package/dist/new-york/dropdown-menu.js +224 -0
  239. package/dist/new-york/dropdown-menu.js.map +1 -0
  240. package/dist/new-york/empty.d.ts +15 -0
  241. package/dist/new-york/empty.js +104 -0
  242. package/dist/new-york/empty.js.map +1 -0
  243. package/dist/new-york/field.d.ts +30 -0
  244. package/dist/new-york/field.js +263 -0
  245. package/dist/new-york/field.js.map +1 -0
  246. package/dist/new-york/form.d.ts +28 -0
  247. package/dist/new-york/form.js +131 -0
  248. package/dist/new-york/form.js.map +1 -0
  249. package/dist/new-york/hover-card.d.ts +9 -0
  250. package/dist/new-york/hover-card.js +42 -0
  251. package/dist/new-york/hover-card.js.map +1 -0
  252. package/dist/new-york/index.d.ts +92 -0
  253. package/dist/new-york/index.js +4965 -0
  254. package/dist/new-york/index.js.map +1 -0
  255. package/dist/new-york/input-group.d.ts +20 -0
  256. package/dist/new-york/input-group.js +226 -0
  257. package/dist/new-york/input-group.js.map +1 -0
  258. package/dist/new-york/input-otp.d.ts +14 -0
  259. package/dist/new-york/input-otp.js +70 -0
  260. package/dist/new-york/input-otp.js.map +1 -0
  261. package/dist/new-york/input.d.ts +6 -0
  262. package/dist/new-york/input.js +28 -0
  263. package/dist/new-york/input.js.map +1 -0
  264. package/dist/new-york/item.d.ts +28 -0
  265. package/dist/new-york/item.js +205 -0
  266. package/dist/new-york/item.js.map +1 -0
  267. package/dist/new-york/kbd.d.ts +6 -0
  268. package/dist/new-york/kbd.js +37 -0
  269. package/dist/new-york/kbd.js.map +1 -0
  270. package/dist/new-york/label.d.ts +7 -0
  271. package/dist/new-york/label.js +28 -0
  272. package/dist/new-york/label.js.map +1 -0
  273. package/dist/new-york/menubar.d.ts +29 -0
  274. package/dist/new-york/menubar.js +243 -0
  275. package/dist/new-york/menubar.js.map +1 -0
  276. package/dist/new-york/navigation-menu.d.ts +18 -0
  277. package/dist/new-york/navigation-menu.js +169 -0
  278. package/dist/new-york/navigation-menu.js.map +1 -0
  279. package/dist/new-york/pagination.d.ts +18 -0
  280. package/dist/new-york/pagination.js +147 -0
  281. package/dist/new-york/pagination.js.map +1 -0
  282. package/dist/new-york/popover.d.ts +10 -0
  283. package/dist/new-york/popover.js +47 -0
  284. package/dist/new-york/popover.js.map +1 -0
  285. package/dist/new-york/progress.d.ts +7 -0
  286. package/dist/new-york/progress.js +38 -0
  287. package/dist/new-york/progress.js.map +1 -0
  288. package/dist/new-york/radio-group.d.ts +8 -0
  289. package/dist/new-york/radio-group.js +50 -0
  290. package/dist/new-york/radio-group.js.map +1 -0
  291. package/dist/new-york/resizable.d.ts +11 -0
  292. package/dist/new-york/resizable.js +53 -0
  293. package/dist/new-york/resizable.js.map +1 -0
  294. package/dist/new-york/scroll-area.d.ts +8 -0
  295. package/dist/new-york/scroll-area.js +65 -0
  296. package/dist/new-york/scroll-area.js.map +1 -0
  297. package/dist/new-york/select.d.ts +18 -0
  298. package/dist/new-york/select.js +169 -0
  299. package/dist/new-york/select.js.map +1 -0
  300. package/dist/new-york/separator.d.ts +7 -0
  301. package/dist/new-york/separator.js +32 -0
  302. package/dist/new-york/separator.js.map +1 -0
  303. package/dist/new-york/sheet.d.ts +16 -0
  304. package/dist/new-york/sheet.js +126 -0
  305. package/dist/new-york/sheet.js.map +1 -0
  306. package/dist/new-york/sidebar.d.ts +75 -0
  307. package/dist/new-york/sidebar.js +859 -0
  308. package/dist/new-york/sidebar.js.map +1 -0
  309. package/dist/new-york/skeleton.d.ts +5 -0
  310. package/dist/new-york/skeleton.js +22 -0
  311. package/dist/new-york/skeleton.js.map +1 -0
  312. package/dist/new-york/slider.d.ts +7 -0
  313. package/dist/new-york/slider.js +69 -0
  314. package/dist/new-york/slider.js.map +1 -0
  315. package/dist/new-york/sonner.d.ts +6 -0
  316. package/dist/new-york/sonner.js +34 -0
  317. package/dist/new-york/sonner.js.map +1 -0
  318. package/dist/new-york/spinner.d.ts +5 -0
  319. package/dist/new-york/spinner.js +24 -0
  320. package/dist/new-york/spinner.js.map +1 -0
  321. package/dist/new-york/styles.css +129 -0
  322. package/dist/new-york/switch.d.ts +7 -0
  323. package/dist/new-york/switch.js +37 -0
  324. package/dist/new-york/switch.js.map +1 -0
  325. package/dist/new-york/table.d.ts +13 -0
  326. package/dist/new-york/table.js +114 -0
  327. package/dist/new-york/table.js.map +1 -0
  328. package/dist/new-york/tabs.d.ts +10 -0
  329. package/dist/new-york/tabs.js +70 -0
  330. package/dist/new-york/tabs.js.map +1 -0
  331. package/dist/new-york/textarea.d.ts +6 -0
  332. package/dist/new-york/textarea.js +25 -0
  333. package/dist/new-york/textarea.js.map +1 -0
  334. package/dist/new-york/toggle-group.d.ts +14 -0
  335. package/dist/new-york/toggle-group.js +95 -0
  336. package/dist/new-york/toggle-group.js.map +1 -0
  337. package/dist/new-york/toggle.d.ts +13 -0
  338. package/dist/new-york/toggle.js +49 -0
  339. package/dist/new-york/toggle.js.map +1 -0
  340. package/dist/new-york/tooltip.d.ts +10 -0
  341. package/dist/new-york/tooltip.js +58 -0
  342. package/dist/new-york/tooltip.js.map +1 -0
  343. package/package.json +133 -0
@@ -0,0 +1,104 @@
1
+ import { cva } from 'class-variance-authority';
2
+ import { clsx } from 'clsx';
3
+ import { twMerge } from 'tailwind-merge';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ // src/new-york/empty.tsx
7
+ function cn(...inputs) {
8
+ return twMerge(clsx(inputs));
9
+ }
10
+ function Empty({ className, ...props }) {
11
+ return /* @__PURE__ */ jsx(
12
+ "div",
13
+ {
14
+ "data-slot": "empty",
15
+ className: cn(
16
+ "flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border-dashed p-6 text-center text-balance md:p-12",
17
+ className
18
+ ),
19
+ ...props
20
+ }
21
+ );
22
+ }
23
+ function EmptyHeader({ className, ...props }) {
24
+ return /* @__PURE__ */ jsx(
25
+ "div",
26
+ {
27
+ "data-slot": "empty-header",
28
+ className: cn(
29
+ "flex max-w-sm flex-col items-center gap-2 text-center",
30
+ className
31
+ ),
32
+ ...props
33
+ }
34
+ );
35
+ }
36
+ var emptyMediaVariants = cva(
37
+ "flex shrink-0 items-center justify-center mb-2 [&_svg]:pointer-events-none [&_svg]:shrink-0",
38
+ {
39
+ variants: {
40
+ variant: {
41
+ default: "bg-transparent",
42
+ icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6"
43
+ }
44
+ },
45
+ defaultVariants: {
46
+ variant: "default"
47
+ }
48
+ }
49
+ );
50
+ function EmptyMedia({
51
+ className,
52
+ variant = "default",
53
+ ...props
54
+ }) {
55
+ return /* @__PURE__ */ jsx(
56
+ "div",
57
+ {
58
+ "data-slot": "empty-icon",
59
+ "data-variant": variant,
60
+ className: cn(emptyMediaVariants({ variant, className })),
61
+ ...props
62
+ }
63
+ );
64
+ }
65
+ function EmptyTitle({ className, ...props }) {
66
+ return /* @__PURE__ */ jsx(
67
+ "div",
68
+ {
69
+ "data-slot": "empty-title",
70
+ className: cn("text-lg font-medium tracking-tight", className),
71
+ ...props
72
+ }
73
+ );
74
+ }
75
+ function EmptyDescription({ className, ...props }) {
76
+ return /* @__PURE__ */ jsx(
77
+ "div",
78
+ {
79
+ "data-slot": "empty-description",
80
+ className: cn(
81
+ "text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4",
82
+ className
83
+ ),
84
+ ...props
85
+ }
86
+ );
87
+ }
88
+ function EmptyContent({ className, ...props }) {
89
+ return /* @__PURE__ */ jsx(
90
+ "div",
91
+ {
92
+ "data-slot": "empty-content",
93
+ className: cn(
94
+ "flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance",
95
+ className
96
+ ),
97
+ ...props
98
+ }
99
+ );
100
+ }
101
+
102
+ export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle };
103
+ //# sourceMappingURL=empty.js.map
104
+ //# sourceMappingURL=empty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/new-york/empty.tsx"],"names":[],"mappings":";;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACDA,SAAS,KAAA,CAAM,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACnE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,8HAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACzE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,uDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,IAAM,kBAAA,GAAqB,GAAA;AAAA,EACzB,6FAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEA,SAAS,UAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,GAAG;AACL,CAAA,EAA0E;AACxE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,YAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,WAAW,EAAA,CAAG,kBAAA,CAAmB,EAAE,OAAA,EAAS,SAAA,EAAW,CAAC,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA;AAAA,MAC5D,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA8B;AAC5E,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,yGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC1E,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,+EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ","file":"empty.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty\"\n className={cn(\n \"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border-dashed p-6 text-center text-balance md:p-12\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn(\n \"flex max-w-sm flex-col items-center gap-2 text-center\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst emptyMediaVariants = cva(\n \"flex shrink-0 items-center justify-center mb-2 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn(\"text-lg font-medium tracking-tight\", className)}\n {...props}\n />\n )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn(\n \"text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn(\n \"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\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.js';
5
+ import 'react';
6
+ import '@radix-ui/react-label';
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,263 @@
1
+ import { useMemo } from 'react';
2
+ import { cva } from 'class-variance-authority';
3
+ import { clsx } from 'clsx';
4
+ import { twMerge } from 'tailwind-merge';
5
+ import * as LabelPrimitive from '@radix-ui/react-label';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
8
+
9
+ // src/new-york/field.tsx
10
+ function cn(...inputs) {
11
+ return twMerge(clsx(inputs));
12
+ }
13
+ function Label({
14
+ className,
15
+ ...props
16
+ }) {
17
+ return /* @__PURE__ */ jsx(
18
+ LabelPrimitive.Root,
19
+ {
20
+ "data-slot": "label",
21
+ className: cn(
22
+ "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
23
+ className
24
+ ),
25
+ ...props
26
+ }
27
+ );
28
+ }
29
+ function Separator({
30
+ className,
31
+ orientation = "horizontal",
32
+ decorative = true,
33
+ ...props
34
+ }) {
35
+ return /* @__PURE__ */ jsx(
36
+ SeparatorPrimitive.Root,
37
+ {
38
+ "data-slot": "separator",
39
+ decorative,
40
+ orientation,
41
+ className: cn(
42
+ "bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
43
+ className
44
+ ),
45
+ ...props
46
+ }
47
+ );
48
+ }
49
+ function FieldSet({ className, ...props }) {
50
+ return /* @__PURE__ */ jsx(
51
+ "fieldset",
52
+ {
53
+ "data-slot": "field-set",
54
+ className: cn(
55
+ "flex flex-col gap-6",
56
+ "has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",
57
+ className
58
+ ),
59
+ ...props
60
+ }
61
+ );
62
+ }
63
+ function FieldLegend({
64
+ className,
65
+ variant = "legend",
66
+ ...props
67
+ }) {
68
+ return /* @__PURE__ */ jsx(
69
+ "legend",
70
+ {
71
+ "data-slot": "field-legend",
72
+ "data-variant": variant,
73
+ className: cn(
74
+ "mb-3 font-medium",
75
+ "data-[variant=legend]:text-base",
76
+ "data-[variant=label]:text-sm",
77
+ className
78
+ ),
79
+ ...props
80
+ }
81
+ );
82
+ }
83
+ function FieldGroup({ className, ...props }) {
84
+ return /* @__PURE__ */ jsx(
85
+ "div",
86
+ {
87
+ "data-slot": "field-group",
88
+ className: cn(
89
+ "group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4",
90
+ className
91
+ ),
92
+ ...props
93
+ }
94
+ );
95
+ }
96
+ var fieldVariants = cva(
97
+ "group/field flex w-full gap-3 data-[invalid=true]:text-destructive",
98
+ {
99
+ variants: {
100
+ orientation: {
101
+ vertical: ["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],
102
+ horizontal: [
103
+ "flex-row items-center",
104
+ "[&>[data-slot=field-label]]:flex-auto",
105
+ "has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
106
+ ],
107
+ responsive: [
108
+ "flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto",
109
+ "@md/field-group:[&>[data-slot=field-label]]:flex-auto",
110
+ "@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
111
+ ]
112
+ }
113
+ },
114
+ defaultVariants: {
115
+ orientation: "vertical"
116
+ }
117
+ }
118
+ );
119
+ function Field({
120
+ className,
121
+ orientation = "vertical",
122
+ ...props
123
+ }) {
124
+ return /* @__PURE__ */ jsx(
125
+ "div",
126
+ {
127
+ role: "group",
128
+ "data-slot": "field",
129
+ "data-orientation": orientation,
130
+ className: cn(fieldVariants({ orientation }), className),
131
+ ...props
132
+ }
133
+ );
134
+ }
135
+ function FieldContent({ className, ...props }) {
136
+ return /* @__PURE__ */ jsx(
137
+ "div",
138
+ {
139
+ "data-slot": "field-content",
140
+ className: cn(
141
+ "group/field-content flex flex-1 flex-col gap-1.5 leading-snug",
142
+ className
143
+ ),
144
+ ...props
145
+ }
146
+ );
147
+ }
148
+ function FieldLabel({
149
+ className,
150
+ ...props
151
+ }) {
152
+ return /* @__PURE__ */ jsx(
153
+ Label,
154
+ {
155
+ "data-slot": "field-label",
156
+ className: cn(
157
+ "group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50",
158
+ "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4",
159
+ "has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10",
160
+ className
161
+ ),
162
+ ...props
163
+ }
164
+ );
165
+ }
166
+ function FieldTitle({ className, ...props }) {
167
+ return /* @__PURE__ */ jsx(
168
+ "div",
169
+ {
170
+ "data-slot": "field-label",
171
+ className: cn(
172
+ "flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50",
173
+ className
174
+ ),
175
+ ...props
176
+ }
177
+ );
178
+ }
179
+ function FieldDescription({ className, ...props }) {
180
+ return /* @__PURE__ */ jsx(
181
+ "p",
182
+ {
183
+ "data-slot": "field-description",
184
+ className: cn(
185
+ "text-muted-foreground text-sm leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance",
186
+ "last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5",
187
+ "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",
188
+ className
189
+ ),
190
+ ...props
191
+ }
192
+ );
193
+ }
194
+ function FieldSeparator({
195
+ children,
196
+ className,
197
+ ...props
198
+ }) {
199
+ return /* @__PURE__ */ jsxs(
200
+ "div",
201
+ {
202
+ "data-slot": "field-separator",
203
+ "data-content": !!children,
204
+ className: cn(
205
+ "relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2",
206
+ className
207
+ ),
208
+ ...props,
209
+ children: [
210
+ /* @__PURE__ */ jsx(Separator, { className: "absolute inset-0 top-1/2" }),
211
+ children && /* @__PURE__ */ jsx(
212
+ "span",
213
+ {
214
+ className: "bg-background text-muted-foreground relative mx-auto block w-fit px-2",
215
+ "data-slot": "field-separator-content",
216
+ children
217
+ }
218
+ )
219
+ ]
220
+ }
221
+ );
222
+ }
223
+ function FieldError({
224
+ className,
225
+ children,
226
+ errors,
227
+ ...props
228
+ }) {
229
+ const content = useMemo(() => {
230
+ if (children) {
231
+ return children;
232
+ }
233
+ if (!errors?.length) {
234
+ return null;
235
+ }
236
+ const uniqueErrors = [
237
+ ...new Map(errors.map((error) => [error?.message, error])).values()
238
+ ];
239
+ if (uniqueErrors?.length == 1) {
240
+ return uniqueErrors[0]?.message;
241
+ }
242
+ return /* @__PURE__ */ jsx("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
243
+ (error, index) => error?.message && /* @__PURE__ */ jsx("li", { children: error.message }, index)
244
+ ) });
245
+ }, [children, errors]);
246
+ if (!content) {
247
+ return null;
248
+ }
249
+ return /* @__PURE__ */ jsx(
250
+ "div",
251
+ {
252
+ role: "alert",
253
+ "data-slot": "field-error",
254
+ className: cn("text-destructive text-sm font-normal", className),
255
+ ...props,
256
+ children: content
257
+ }
258
+ );
259
+ }
260
+
261
+ export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle };
262
+ //# sourceMappingURL=field.js.map
263
+ //# sourceMappingURL=field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/new-york/label.tsx","../../src/new-york/separator.tsx","../../src/new-york/field.tsx"],"names":["jsx"],"mappings":"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","file":"field.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","import { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/new-york/label\"\nimport { Separator } from \"@/new-york/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\",\n \"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-medium\",\n \"data-[variant=legend]:text-base\",\n \"data-[variant=label]:text-sm\",\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-7 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\",\n \"[&>[data-slot=field-label]]:flex-auto\",\n \"has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n responsive: [\n \"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto\",\n \"@md/field-group:[&>[data-slot=field-label]]:flex-auto\",\n \"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\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.5 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-snug group-data-[disabled=true]/field:opacity-50\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4\",\n \"has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10\",\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-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\",\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-muted-foreground text-sm leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\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=\"bg-background text-muted-foreground relative mx-auto block w-fit px-2\"\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-destructive text-sm font-normal\", 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,28 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as react_hook_form from 'react-hook-form';
3
+ import { FieldValues, FieldPath, ControllerProps } from 'react-hook-form';
4
+ import * as React from 'react';
5
+ import * as LabelPrimitive from '@radix-ui/react-label';
6
+ import { Slot } from '@radix-ui/react-slot';
7
+
8
+ declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: react_hook_form.FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
9
+ declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
10
+ declare const useFormField: () => {
11
+ invalid: boolean;
12
+ isDirty: boolean;
13
+ isTouched: boolean;
14
+ isValidating: boolean;
15
+ error?: react_hook_form.FieldError;
16
+ id: string;
17
+ name: string;
18
+ formItemId: string;
19
+ formDescriptionId: string;
20
+ formMessageId: string;
21
+ };
22
+ declare function FormItem({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
23
+ declare function FormLabel({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>): react_jsx_runtime.JSX.Element;
24
+ declare function FormControl({ ...props }: React.ComponentProps<typeof Slot>): react_jsx_runtime.JSX.Element;
25
+ declare function FormDescription({ className, ...props }: React.ComponentProps<"p">): react_jsx_runtime.JSX.Element;
26
+ declare function FormMessage({ className, ...props }: React.ComponentProps<"p">): react_jsx_runtime.JSX.Element | null;
27
+
28
+ export { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, useFormField };
@@ -0,0 +1,131 @@
1
+ import * as React from 'react';
2
+ import { Slot } from '@radix-ui/react-slot';
3
+ import { FormProvider, Controller, useFormContext, useFormState } from 'react-hook-form';
4
+ import { clsx } from 'clsx';
5
+ import { twMerge } from 'tailwind-merge';
6
+ import * as LabelPrimitive from '@radix-ui/react-label';
7
+ import { jsx } from 'react/jsx-runtime';
8
+
9
+ function cn(...inputs) {
10
+ return twMerge(clsx(inputs));
11
+ }
12
+ function Label({
13
+ className,
14
+ ...props
15
+ }) {
16
+ return /* @__PURE__ */ jsx(
17
+ LabelPrimitive.Root,
18
+ {
19
+ "data-slot": "label",
20
+ className: cn(
21
+ "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
22
+ className
23
+ ),
24
+ ...props
25
+ }
26
+ );
27
+ }
28
+ var Form = FormProvider;
29
+ var FormFieldContext = React.createContext(
30
+ {}
31
+ );
32
+ var FormField = ({
33
+ ...props
34
+ }) => {
35
+ return /* @__PURE__ */ jsx(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx(Controller, { ...props }) });
36
+ };
37
+ var useFormField = () => {
38
+ const fieldContext = React.useContext(FormFieldContext);
39
+ const itemContext = React.useContext(FormItemContext);
40
+ const { getFieldState } = useFormContext();
41
+ const formState = useFormState({ name: fieldContext.name });
42
+ const fieldState = getFieldState(fieldContext.name, formState);
43
+ if (!fieldContext) {
44
+ throw new Error("useFormField should be used within <FormField>");
45
+ }
46
+ const { id } = itemContext;
47
+ return {
48
+ id,
49
+ name: fieldContext.name,
50
+ formItemId: `${id}-form-item`,
51
+ formDescriptionId: `${id}-form-item-description`,
52
+ formMessageId: `${id}-form-item-message`,
53
+ ...fieldState
54
+ };
55
+ };
56
+ var FormItemContext = React.createContext(
57
+ {}
58
+ );
59
+ function FormItem({ className, ...props }) {
60
+ const id = React.useId();
61
+ return /* @__PURE__ */ jsx(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx(
62
+ "div",
63
+ {
64
+ "data-slot": "form-item",
65
+ className: cn("grid gap-2", className),
66
+ ...props
67
+ }
68
+ ) });
69
+ }
70
+ function FormLabel({
71
+ className,
72
+ ...props
73
+ }) {
74
+ const { error, formItemId } = useFormField();
75
+ return /* @__PURE__ */ jsx(
76
+ Label,
77
+ {
78
+ "data-slot": "form-label",
79
+ "data-error": !!error,
80
+ className: cn("data-[error=true]:text-destructive", className),
81
+ htmlFor: formItemId,
82
+ ...props
83
+ }
84
+ );
85
+ }
86
+ function FormControl({ ...props }) {
87
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
88
+ return /* @__PURE__ */ jsx(
89
+ Slot,
90
+ {
91
+ "data-slot": "form-control",
92
+ id: formItemId,
93
+ "aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
94
+ "aria-invalid": !!error,
95
+ ...props
96
+ }
97
+ );
98
+ }
99
+ function FormDescription({ className, ...props }) {
100
+ const { formDescriptionId } = useFormField();
101
+ return /* @__PURE__ */ jsx(
102
+ "p",
103
+ {
104
+ "data-slot": "form-description",
105
+ id: formDescriptionId,
106
+ className: cn("text-muted-foreground text-sm", className),
107
+ ...props
108
+ }
109
+ );
110
+ }
111
+ function FormMessage({ className, ...props }) {
112
+ const { error, formMessageId } = useFormField();
113
+ const body = error ? String(error?.message ?? "") : props.children;
114
+ if (!body) {
115
+ return null;
116
+ }
117
+ return /* @__PURE__ */ jsx(
118
+ "p",
119
+ {
120
+ "data-slot": "form-message",
121
+ id: formMessageId,
122
+ className: cn("text-destructive text-sm", className),
123
+ ...props,
124
+ children: body
125
+ }
126
+ );
127
+ }
128
+
129
+ export { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, useFormField };
130
+ //# sourceMappingURL=form.js.map
131
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/new-york/label.tsx","../../src/new-york/form.tsx"],"names":["jsx"],"mappings":"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","file":"form.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/new-york/label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState } = useFormContext()\n const formState = useFormState({ name: fieldContext.name })\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n)\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n )\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message ?? \"\") : props.children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n )\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
4
+
5
+ declare function HoverCard({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Root>): react_jsx_runtime.JSX.Element;
6
+ declare function HoverCardTrigger({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
7
+ declare function HoverCardContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof HoverCardPrimitive.Content>): react_jsx_runtime.JSX.Element;
8
+
9
+ export { HoverCard, HoverCardContent, HoverCardTrigger };
@@ -0,0 +1,42 @@
1
+ import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
2
+ import { clsx } from 'clsx';
3
+ import { twMerge } from 'tailwind-merge';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ function cn(...inputs) {
7
+ return twMerge(clsx(inputs));
8
+ }
9
+ function HoverCard({
10
+ ...props
11
+ }) {
12
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Root, { "data-slot": "hover-card", ...props });
13
+ }
14
+ function HoverCardTrigger({
15
+ ...props
16
+ }) {
17
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
18
+ }
19
+ function HoverCardContent({
20
+ className,
21
+ align = "center",
22
+ sideOffset = 4,
23
+ ...props
24
+ }) {
25
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx(
26
+ HoverCardPrimitive.Content,
27
+ {
28
+ "data-slot": "hover-card-content",
29
+ align,
30
+ sideOffset,
31
+ className: cn(
32
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",
33
+ className
34
+ ),
35
+ ...props
36
+ }
37
+ ) });
38
+ }
39
+
40
+ export { HoverCard, HoverCardContent, HoverCardTrigger };
41
+ //# sourceMappingURL=hover-card.js.map
42
+ //# sourceMappingURL=hover-card.js.map