react-shadcn-kit 0.1.1 → 0.2.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 (334) hide show
  1. package/README.md +59 -75
  2. package/dist/assets/global.css +1 -1
  3. package/dist/components/composites/action-button.d.ts +16 -0
  4. package/dist/components/composites/action-button.js +71 -0
  5. package/dist/components/composites/action-button.js.map +1 -0
  6. package/dist/components/composites/index.d.ts +8 -0
  7. package/dist/components/composites/sidebar-wrapper.d.ts +27 -0
  8. package/dist/components/composites/sidebar-wrapper.js +21 -0
  9. package/dist/components/composites/sidebar-wrapper.js.map +1 -0
  10. package/dist/{molecules → components/composites}/theme-toggle.js +3 -3
  11. package/dist/components/composites/theme-toggle.js.map +1 -0
  12. package/dist/{molecules → components/composites}/user-menu.js +4 -4
  13. package/dist/components/composites/user-menu.js.map +1 -0
  14. package/dist/components/marketing/hero.d.ts +12 -0
  15. package/dist/components/marketing/hero.js +87 -0
  16. package/dist/components/marketing/hero.js.map +1 -0
  17. package/dist/components/marketing/index.d.ts +6 -0
  18. package/dist/components/marketing/social-proof.d.ts +10 -0
  19. package/dist/components/marketing/social-proof.js +21 -0
  20. package/dist/components/marketing/social-proof.js.map +1 -0
  21. package/dist/components/marketing/value-props.d.ts +14 -0
  22. package/dist/components/marketing/value-props.js +25 -0
  23. package/dist/components/marketing/value-props.js.map +1 -0
  24. package/dist/{atoms → components/primitives}/accordion.js +1 -1
  25. package/dist/components/primitives/accordion.js.map +1 -0
  26. package/dist/{atoms → components/primitives}/alert-dialog.js +2 -2
  27. package/dist/components/primitives/alert-dialog.js.map +1 -0
  28. package/dist/{atoms → components/primitives}/alert.js +1 -1
  29. package/dist/components/primitives/alert.js.map +1 -0
  30. package/dist/components/primitives/aspect-ratio.js.map +1 -0
  31. package/dist/{atoms → components/primitives}/avatar.js +1 -1
  32. package/dist/components/primitives/avatar.js.map +1 -0
  33. package/dist/components/primitives/badge-variants.d.ts +3 -0
  34. package/dist/{atoms/badge.js → components/primitives/badge-variants.js} +7 -19
  35. package/dist/components/primitives/badge-variants.js.map +1 -0
  36. package/dist/components/primitives/badge.d.ts +9 -0
  37. package/dist/components/primitives/badge.js +21 -0
  38. package/dist/components/primitives/badge.js.map +1 -0
  39. package/dist/{atoms → components/primitives}/breadcrumb.js +1 -1
  40. package/dist/components/primitives/breadcrumb.js.map +1 -0
  41. package/dist/components/primitives/button-group-variants.d.ts +3 -0
  42. package/dist/components/primitives/button-group-variants.js +19 -0
  43. package/dist/components/primitives/button-group-variants.js.map +1 -0
  44. package/dist/components/primitives/button-group.d.ts +13 -0
  45. package/dist/components/primitives/button-group.js +52 -0
  46. package/dist/components/primitives/button-group.js.map +1 -0
  47. package/dist/components/primitives/button-variants.d.ts +4 -0
  48. package/dist/{atoms/button.js → components/primitives/button-variants.js} +8 -28
  49. package/dist/components/primitives/button-variants.js.map +1 -0
  50. package/dist/components/primitives/button.d.ts +9 -0
  51. package/dist/components/primitives/button.js +21 -0
  52. package/dist/components/primitives/button.js.map +1 -0
  53. package/dist/{atoms → components/primitives}/calendar.d.ts +1 -1
  54. package/dist/{atoms → components/primitives}/calendar.js +5 -4
  55. package/dist/components/primitives/calendar.js.map +1 -0
  56. package/dist/{atoms → components/primitives}/card.js +1 -1
  57. package/dist/components/primitives/card.js.map +1 -0
  58. package/dist/{atoms → components/primitives}/carousel.d.ts +1 -1
  59. package/dist/{atoms → components/primitives}/carousel.js +1 -1
  60. package/dist/components/primitives/carousel.js.map +1 -0
  61. package/dist/{atoms → components/primitives}/chart.js +1 -1
  62. package/dist/components/primitives/chart.js.map +1 -0
  63. package/dist/{atoms → components/primitives}/checkbox.js +1 -1
  64. package/dist/components/primitives/checkbox.js.map +1 -0
  65. package/dist/components/primitives/collapsible.js.map +1 -0
  66. package/dist/{atoms → components/primitives}/command.d.ts +1 -1
  67. package/dist/{atoms → components/primitives}/command.js +1 -1
  68. package/dist/components/primitives/command.js.map +1 -0
  69. package/dist/{atoms → components/primitives}/context-menu.js +1 -1
  70. package/dist/components/primitives/context-menu.js.map +1 -0
  71. package/dist/components/primitives/custom-button-variants.d.ts +5 -0
  72. package/dist/components/primitives/custom-button-variants.js +38 -0
  73. package/dist/components/primitives/custom-button-variants.js.map +1 -0
  74. package/dist/components/primitives/custom-button.d.ts +22 -0
  75. package/dist/components/primitives/custom-button.js +64 -0
  76. package/dist/components/primitives/custom-button.js.map +1 -0
  77. package/dist/{atoms → components/primitives}/dialog.js +8 -8
  78. package/dist/components/primitives/dialog.js.map +1 -0
  79. package/dist/{atoms → components/primitives}/drawer.js +1 -1
  80. package/dist/components/primitives/drawer.js.map +1 -0
  81. package/dist/{atoms → components/primitives}/dropdown-menu.js +1 -1
  82. package/dist/components/primitives/dropdown-menu.js.map +1 -0
  83. package/dist/{atoms → components/primitives}/empty.js +1 -1
  84. package/dist/components/primitives/empty.js.map +1 -0
  85. package/dist/{atoms → components/primitives}/field.d.ts +1 -1
  86. package/dist/{atoms → components/primitives}/field.js +1 -1
  87. package/dist/components/primitives/field.js.map +1 -0
  88. package/dist/components/primitives/form-context.d.ts +23 -0
  89. package/dist/components/primitives/form-context.js +26 -0
  90. package/dist/components/primitives/form-context.js.map +1 -0
  91. package/dist/components/primitives/form.d.ts +11 -0
  92. package/dist/components/primitives/form.js +85 -0
  93. package/dist/components/primitives/form.js.map +1 -0
  94. package/dist/{atoms → components/primitives}/hover-card.js +1 -1
  95. package/dist/components/primitives/hover-card.js.map +1 -0
  96. package/dist/components/primitives/index.d.ts +116 -0
  97. package/dist/{atoms → components/primitives}/input-group.d.ts +2 -2
  98. package/dist/{atoms → components/primitives}/input-group.js +1 -1
  99. package/dist/components/primitives/input-group.js.map +1 -0
  100. package/dist/{atoms → components/primitives}/input-otp.js +1 -1
  101. package/dist/components/primitives/input-otp.js.map +1 -0
  102. package/dist/{atoms → components/primitives}/input.js +1 -1
  103. package/dist/components/primitives/input.js.map +1 -0
  104. package/dist/{atoms → components/primitives}/item.d.ts +2 -2
  105. package/dist/{atoms → components/primitives}/item.js +1 -1
  106. package/dist/components/primitives/item.js.map +1 -0
  107. package/dist/{atoms → components/primitives}/kbd.js +1 -1
  108. package/dist/components/primitives/kbd.js.map +1 -0
  109. package/dist/{atoms → components/primitives}/label.js +1 -1
  110. package/dist/components/primitives/label.js.map +1 -0
  111. package/dist/components/primitives/loading-swap.d.ts +8 -0
  112. package/dist/components/primitives/loading-swap.js +25 -0
  113. package/dist/components/primitives/loading-swap.js.map +1 -0
  114. package/dist/{atoms → components/primitives}/menubar.js +1 -1
  115. package/dist/components/primitives/menubar.js.map +1 -0
  116. package/dist/components/primitives/navigation-menu-variants.d.ts +1 -0
  117. package/dist/components/primitives/navigation-menu-variants.js +8 -0
  118. package/dist/components/primitives/navigation-menu-variants.js.map +1 -0
  119. package/dist/components/primitives/navigation-menu.d.ts +13 -0
  120. package/dist/components/primitives/navigation-menu.js +102 -0
  121. package/dist/components/primitives/navigation-menu.js.map +1 -0
  122. package/dist/{atoms → components/primitives}/pagination.d.ts +1 -1
  123. package/dist/{atoms → components/primitives}/pagination.js +2 -2
  124. package/dist/components/primitives/pagination.js.map +1 -0
  125. package/dist/{atoms → components/primitives}/popover.js +1 -1
  126. package/dist/components/primitives/popover.js.map +1 -0
  127. package/dist/{atoms → components/primitives}/progress.js +1 -1
  128. package/dist/components/primitives/progress.js.map +1 -0
  129. package/dist/{atoms → components/primitives}/radio-group.js +1 -1
  130. package/dist/components/primitives/radio-group.js.map +1 -0
  131. package/dist/{atoms → components/primitives}/resizable.js +1 -1
  132. package/dist/components/primitives/resizable.js.map +1 -0
  133. package/dist/{atoms → components/primitives}/scroll-area.js +1 -1
  134. package/dist/components/primitives/scroll-area.js.map +1 -0
  135. package/dist/{atoms → components/primitives}/select.js +1 -1
  136. package/dist/components/primitives/select.js.map +1 -0
  137. package/dist/{atoms → components/primitives}/separator.js +1 -1
  138. package/dist/components/primitives/separator.js.map +1 -0
  139. package/dist/{atoms → components/primitives}/sheet.js +5 -5
  140. package/dist/components/primitives/sheet.js.map +1 -0
  141. package/dist/components/primitives/sidebar-context.d.ts +12 -0
  142. package/dist/components/primitives/sidebar-context.js +13 -0
  143. package/dist/components/primitives/sidebar-context.js.map +1 -0
  144. package/dist/components/primitives/sidebar-variants.d.ts +4 -0
  145. package/dist/components/primitives/sidebar-variants.js +25 -0
  146. package/dist/components/primitives/sidebar-variants.js.map +1 -0
  147. package/dist/components/primitives/sidebar.d.ts +56 -0
  148. package/dist/components/primitives/sidebar.js +542 -0
  149. package/dist/components/primitives/sidebar.js.map +1 -0
  150. package/dist/{atoms → components/primitives}/skeleton.js +1 -1
  151. package/dist/components/primitives/skeleton.js.map +1 -0
  152. package/dist/{atoms → components/primitives}/slider.js +1 -1
  153. package/dist/components/primitives/slider.js.map +1 -0
  154. package/dist/components/primitives/sonner.js.map +1 -0
  155. package/dist/{atoms → components/primitives}/spinner.js +1 -1
  156. package/dist/components/primitives/spinner.js.map +1 -0
  157. package/dist/{atoms → components/primitives}/switch.js +1 -1
  158. package/dist/components/primitives/switch.js.map +1 -0
  159. package/dist/{atoms → components/primitives}/table.js +1 -1
  160. package/dist/components/primitives/table.js.map +1 -0
  161. package/dist/{atoms → components/primitives}/tabs.js +1 -1
  162. package/dist/components/primitives/tabs.js.map +1 -0
  163. package/dist/{atoms → components/primitives}/textarea.js +1 -1
  164. package/dist/components/primitives/textarea.js.map +1 -0
  165. package/dist/components/primitives/theme-provider.js.map +1 -0
  166. package/dist/{atoms → components/primitives}/toggle-group.d.ts +1 -1
  167. package/dist/{atoms → components/primitives}/toggle-group.js +2 -2
  168. package/dist/components/primitives/toggle-group.js.map +1 -0
  169. package/dist/components/primitives/toggle-variants.d.ts +4 -0
  170. package/dist/{atoms/toggle.js → components/primitives/toggle-variants.js} +5 -24
  171. package/dist/components/primitives/toggle-variants.js.map +1 -0
  172. package/dist/components/primitives/toggle.d.ts +9 -0
  173. package/dist/components/primitives/toggle.js +21 -0
  174. package/dist/components/primitives/toggle.js.map +1 -0
  175. package/dist/{atoms → components/primitives}/tooltip.js +1 -1
  176. package/dist/components/primitives/tooltip.js.map +1 -0
  177. package/dist/composites/index.js +11 -0
  178. package/dist/{organisms → composites}/index.js.map +1 -1
  179. package/dist/hooks/index.d.ts +7 -0
  180. package/dist/hooks/index.js +8 -2
  181. package/dist/hooks/index.js.map +1 -1
  182. package/dist/hooks/use-aria-live.d.ts +22 -0
  183. package/dist/hooks/use-aria-live.js +18 -0
  184. package/dist/hooks/use-aria-live.js.map +1 -0
  185. package/dist/hooks/use-focus-visible.d.ts +15 -0
  186. package/dist/hooks/use-focus-visible.js +16 -0
  187. package/dist/hooks/use-focus-visible.js.map +1 -0
  188. package/dist/hooks/use-screen-reader-only.d.ts +14 -0
  189. package/dist/hooks/use-screen-reader-only.js +10 -0
  190. package/dist/hooks/use-screen-reader-only.js.map +1 -0
  191. package/dist/index.d.ts +10 -58
  192. package/dist/index.js +371 -344
  193. package/dist/index.js.map +1 -1
  194. package/dist/lib/index.d.ts +3 -0
  195. package/dist/lib/index.js +8 -2
  196. package/dist/lib/index.js.map +1 -1
  197. package/dist/lib/utils-enhanced.d.ts +27 -0
  198. package/dist/lib/utils-enhanced.js +28 -0
  199. package/dist/lib/utils-enhanced.js.map +1 -0
  200. package/dist/lib/utils-enhanced.test.d.ts +1 -0
  201. package/dist/marketing/index.js +9 -0
  202. package/dist/primitives/index.js +345 -0
  203. package/dist/{atoms → primitives}/index.js.map +1 -1
  204. package/package.json +18 -26
  205. package/dist/atoms/accordion.js.map +0 -1
  206. package/dist/atoms/alert-dialog.js.map +0 -1
  207. package/dist/atoms/alert.js.map +0 -1
  208. package/dist/atoms/aspect-ratio.js.map +0 -1
  209. package/dist/atoms/avatar.js.map +0 -1
  210. package/dist/atoms/badge.d.ts +0 -9
  211. package/dist/atoms/badge.js.map +0 -1
  212. package/dist/atoms/breadcrumb.js.map +0 -1
  213. package/dist/atoms/button-group.d.ts +0 -11
  214. package/dist/atoms/button-group.js +0 -76
  215. package/dist/atoms/button-group.js.map +0 -1
  216. package/dist/atoms/button.d.ts +0 -10
  217. package/dist/atoms/button.js.map +0 -1
  218. package/dist/atoms/calendar.js.map +0 -1
  219. package/dist/atoms/card.js.map +0 -1
  220. package/dist/atoms/carousel.js.map +0 -1
  221. package/dist/atoms/chart.js.map +0 -1
  222. package/dist/atoms/checkbox.js.map +0 -1
  223. package/dist/atoms/collapsible.js.map +0 -1
  224. package/dist/atoms/command.js.map +0 -1
  225. package/dist/atoms/context-menu.js.map +0 -1
  226. package/dist/atoms/dialog.js.map +0 -1
  227. package/dist/atoms/drawer.js.map +0 -1
  228. package/dist/atoms/dropdown-menu.js.map +0 -1
  229. package/dist/atoms/empty.js.map +0 -1
  230. package/dist/atoms/field.js.map +0 -1
  231. package/dist/atoms/form.d.ts +0 -24
  232. package/dist/atoms/form.js +0 -88
  233. package/dist/atoms/form.js.map +0 -1
  234. package/dist/atoms/hover-card.js.map +0 -1
  235. package/dist/atoms/index.d.ts +0 -54
  236. package/dist/atoms/index.js +0 -342
  237. package/dist/atoms/input-group.js.map +0 -1
  238. package/dist/atoms/input-otp.js.map +0 -1
  239. package/dist/atoms/input.js.map +0 -1
  240. package/dist/atoms/item.js.map +0 -1
  241. package/dist/atoms/kbd.js.map +0 -1
  242. package/dist/atoms/label.js.map +0 -1
  243. package/dist/atoms/menubar.js.map +0 -1
  244. package/dist/atoms/navigation-menu.d.ts +0 -14
  245. package/dist/atoms/navigation-menu.js +0 -160
  246. package/dist/atoms/navigation-menu.js.map +0 -1
  247. package/dist/atoms/pagination.js.map +0 -1
  248. package/dist/atoms/popover.js.map +0 -1
  249. package/dist/atoms/progress.js.map +0 -1
  250. package/dist/atoms/radio-group.js.map +0 -1
  251. package/dist/atoms/resizable.js.map +0 -1
  252. package/dist/atoms/scroll-area.js.map +0 -1
  253. package/dist/atoms/select.js.map +0 -1
  254. package/dist/atoms/separator.js.map +0 -1
  255. package/dist/atoms/sheet.js.map +0 -1
  256. package/dist/atoms/sidebar.d.ts +0 -70
  257. package/dist/atoms/sidebar.js +0 -573
  258. package/dist/atoms/sidebar.js.map +0 -1
  259. package/dist/atoms/skeleton.js.map +0 -1
  260. package/dist/atoms/slider.js.map +0 -1
  261. package/dist/atoms/sonner.js.map +0 -1
  262. package/dist/atoms/spinner.js.map +0 -1
  263. package/dist/atoms/switch.js.map +0 -1
  264. package/dist/atoms/table.js.map +0 -1
  265. package/dist/atoms/tabs.js.map +0 -1
  266. package/dist/atoms/textarea.js.map +0 -1
  267. package/dist/atoms/theme-provider.js.map +0 -1
  268. package/dist/atoms/toggle-group.js.map +0 -1
  269. package/dist/atoms/toggle.d.ts +0 -9
  270. package/dist/atoms/toggle.js.map +0 -1
  271. package/dist/atoms/tooltip.js.map +0 -1
  272. package/dist/default-layout.js +0 -114
  273. package/dist/default-layout.js.map +0 -1
  274. package/dist/molecules/index.d.ts +0 -3
  275. package/dist/molecules/index.js +0 -9
  276. package/dist/molecules/sidebar-theme-toggle.d.ts +0 -5
  277. package/dist/molecules/sidebar-theme-toggle.js +0 -39
  278. package/dist/molecules/sidebar-theme-toggle.js.map +0 -1
  279. package/dist/molecules/theme-toggle.js.map +0 -1
  280. package/dist/molecules/user-menu.js.map +0 -1
  281. package/dist/organisms/app-navbar.d.ts +0 -73
  282. package/dist/organisms/app-navbar.js +0 -142
  283. package/dist/organisms/app-navbar.js.map +0 -1
  284. package/dist/organisms/app-sidebar.d.ts +0 -67
  285. package/dist/organisms/app-sidebar.js +0 -161
  286. package/dist/organisms/app-sidebar.js.map +0 -1
  287. package/dist/organisms/index.d.ts +0 -2
  288. package/dist/organisms/index.js +0 -7
  289. /package/dist/{molecules → components/composites}/theme-toggle.d.ts +0 -0
  290. /package/dist/{molecules → components/composites}/user-menu.d.ts +0 -0
  291. /package/dist/{atoms → components/primitives}/accordion.d.ts +0 -0
  292. /package/dist/{atoms → components/primitives}/alert-dialog.d.ts +0 -0
  293. /package/dist/{atoms → components/primitives}/alert.d.ts +0 -0
  294. /package/dist/{atoms → components/primitives}/aspect-ratio.d.ts +0 -0
  295. /package/dist/{atoms → components/primitives}/aspect-ratio.js +0 -0
  296. /package/dist/{atoms → components/primitives}/avatar.d.ts +0 -0
  297. /package/dist/{atoms → components/primitives}/breadcrumb.d.ts +0 -0
  298. /package/dist/{atoms → components/primitives}/card.d.ts +0 -0
  299. /package/dist/{atoms → components/primitives}/chart.d.ts +0 -0
  300. /package/dist/{atoms → components/primitives}/checkbox.d.ts +0 -0
  301. /package/dist/{atoms → components/primitives}/collapsible.d.ts +0 -0
  302. /package/dist/{atoms → components/primitives}/collapsible.js +0 -0
  303. /package/dist/{atoms → components/primitives}/context-menu.d.ts +0 -0
  304. /package/dist/{atoms → components/primitives}/dialog.d.ts +0 -0
  305. /package/dist/{atoms → components/primitives}/drawer.d.ts +0 -0
  306. /package/dist/{atoms → components/primitives}/dropdown-menu.d.ts +0 -0
  307. /package/dist/{atoms → components/primitives}/empty.d.ts +0 -0
  308. /package/dist/{atoms → components/primitives}/hover-card.d.ts +0 -0
  309. /package/dist/{atoms → components/primitives}/input-otp.d.ts +0 -0
  310. /package/dist/{atoms → components/primitives}/input.d.ts +0 -0
  311. /package/dist/{atoms → components/primitives}/kbd.d.ts +0 -0
  312. /package/dist/{atoms → components/primitives}/label.d.ts +0 -0
  313. /package/dist/{atoms → components/primitives}/menubar.d.ts +0 -0
  314. /package/dist/{atoms → components/primitives}/popover.d.ts +0 -0
  315. /package/dist/{atoms → components/primitives}/progress.d.ts +0 -0
  316. /package/dist/{atoms → components/primitives}/radio-group.d.ts +0 -0
  317. /package/dist/{atoms → components/primitives}/resizable.d.ts +0 -0
  318. /package/dist/{atoms → components/primitives}/scroll-area.d.ts +0 -0
  319. /package/dist/{atoms → components/primitives}/select.d.ts +0 -0
  320. /package/dist/{atoms → components/primitives}/separator.d.ts +0 -0
  321. /package/dist/{atoms → components/primitives}/sheet.d.ts +0 -0
  322. /package/dist/{atoms → components/primitives}/skeleton.d.ts +0 -0
  323. /package/dist/{atoms → components/primitives}/slider.d.ts +0 -0
  324. /package/dist/{atoms → components/primitives}/sonner.d.ts +0 -0
  325. /package/dist/{atoms → components/primitives}/sonner.js +0 -0
  326. /package/dist/{atoms → components/primitives}/spinner.d.ts +0 -0
  327. /package/dist/{atoms → components/primitives}/switch.d.ts +0 -0
  328. /package/dist/{atoms → components/primitives}/table.d.ts +0 -0
  329. /package/dist/{atoms → components/primitives}/tabs.d.ts +0 -0
  330. /package/dist/{atoms → components/primitives}/textarea.d.ts +0 -0
  331. /package/dist/{atoms → components/primitives}/theme-provider.d.ts +0 -0
  332. /package/dist/{atoms → components/primitives}/theme-provider.js +0 -0
  333. /package/dist/{atoms → components/primitives}/tooltip.d.ts +0 -0
  334. /package/dist/{molecules → marketing}/index.js.map +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-button.js","sources":["../../../src/components/primitives/custom-button.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Slot, Slottable } from \"@radix-ui/react-slot\";\nimport { type VariantProps } from \"class-variance-authority\";\nimport { Spinner } from \"./spinner\";\nimport { cn } from \"@/lib/utils\";\nimport { customButtonVariants } from \"./custom-button-variants\";\n\ninterface CustomButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof customButtonVariants> {\n asChild?: boolean;\n loading?: boolean;\n loadingText?: string;\n loadingIcon?: React.ElementType;\n loadingIconPlacement?: \"left\" | \"right\";\n icon?: React.ElementType;\n iconPlacement?: \"left\" | \"right\";\n}\n\n/**\n * CustomButton\n *\n * An enhanced button component with premium animations, loading states,\n * and accessibility baked in. Supports icons with flexible placement\n * and various visual effects like expansion and ring hovers.\n */\nconst CustomButton = React.forwardRef<HTMLButtonElement, CustomButtonProps>(\n (\n {\n className,\n variant,\n effect,\n size,\n asChild = false,\n loading,\n loadingText,\n loadingIcon: LoadingIcon = Spinner,\n loadingIconPlacement = \"left\",\n icon: Icon,\n iconPlacement = \"left\",\n children,\n disabled,\n \"aria-label\": ariaLabel,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"button\";\n const isDisabled = loading || disabled;\n\n // Accessibility: Automatic label if children is empty (icon-only button)\n const effectiveAriaLabel =\n ariaLabel || (typeof children === \"string\" ? undefined : loading ? loadingText : undefined);\n\n const renderIcon = (placement: \"left\" | \"right\") => {\n const ActiveIcon = loading ? LoadingIcon : Icon;\n if (!ActiveIcon) return null;\n\n // Logic to determine if this icon should be displayed based on placement\n if (loading && loadingIconPlacement !== placement) return null;\n if (!loading && iconPlacement !== placement) return null;\n\n const iconContent = (\n <ActiveIcon aria-hidden=\"true\" className={cn(loading && !loadingText && \"animate-spin\")} />\n );\n\n if (effect === \"expandIcon\") {\n return (\n <span\n className={cn(\n \"transition-all duration-200 opacity-0 w-0 overflow-hidden inline-flex items-center justify-center\",\n placement === \"left\"\n ? \"group-hover:opacity-100 group-hover:w-5 group-hover:pr-1\"\n : \"group-hover:opacity-100 group-hover:w-5 group-hover:pl-1\",\n )}\n >\n {iconContent}\n </span>\n );\n }\n\n return iconContent;\n };\n\n return (\n <Comp\n ref={ref}\n className={cn(customButtonVariants({ variant, effect, size, className }))}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n aria-disabled={isDisabled || undefined}\n aria-label={effectiveAriaLabel}\n {...props}\n >\n {renderIcon(\"left\")}\n <Slottable>\n {loading && loadingText ? (\n <span className=\"inline-flex items-center gap-2\">{loadingText}</span>\n ) : (\n children\n )}\n </Slottable>\n {renderIcon(\"right\")}\n\n {/* Screen Reader Announcements */}\n {loading && (\n <span className=\"sr-only\" aria-live=\"polite\">\n {loadingText || \"Loading...\"}\n </span>\n )}\n </Comp>\n );\n },\n);\n\nCustomButton.displayName = \"CustomButton\";\n\nexport { CustomButton };\nexport type { CustomButtonProps };\n"],"names":["jsxs","jsx","React","Slot","Slottable","Spinner","cn","customButtonVariants","CustomButton","className","variant","effect","size","asChild","loading","loadingText","LoadingIcon","loadingIconPlacement","Icon","iconPlacement","children","disabled","ariaLabel","props","ref","Comp","isDisabled","effectiveAriaLabel","renderIcon","placement","ActiveIcon","iconContent"],"mappings":"AA4BA,SAAA,QAAAA,GAAA,OAAAC,SAAA;AAAA,YAAAC,OAAA;AAAA,SAAA,QAAAC,GAAA,aAAAC,SAAA;AAAA,SAAA,WAAAC,SAAA;AAAA,SAAA,MAAAC,SAAA;AAAA,SAAA,wBAAAC,SAAA;AAAA,MAAMC,IAAeN,EAAM;AAAA,EACzB,CACE;AAAA,IACE,WAAAO;AAAA,IACA,SAAAC;AAAA,IACA,QAAAC;AAAA,IACA,MAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,SAAAC;AAAA,IACA,aAAAC;AAAA,IACA,aAAaC,IAAcX;AAAA,IAC3B,sBAAAY,IAAuB;AAAA,IACvB,MAAMC;AAAA,IACN,eAAAC,IAAgB;AAAA,IAChB,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,cAAcC;AAAA,IACd,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAOZ,IAAUV,IAAO,UACxBuB,IAAaZ,KAAWO,GAGxBM,IACJL,MAAc,OAAOF,KAAa,WAAW,SAAYN,IAAUC,IAAc,SAE7Ea,IAAa,CAACC,MAAgC;AAClD,YAAMC,IAAahB,IAAUE,IAAcE;AAK3C,UAJI,CAACY,KAGDhB,KAAWG,MAAyBY,KACpC,CAACf,KAAWK,MAAkBU,EAAW,QAAO;AAEpD,YAAME,IACJ,gBAAA9B,EAAC6B,GAAA,EAAW,eAAY,QAAO,WAAWxB,EAAGQ,KAAW,CAACC,KAAe,cAAc,EAAA,CAAG;AAG3F,aAAIJ,MAAW,eAEX,gBAAAV;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWK;AAAA,YACT;AAAA,YACAuB,MAAc,SACV,6DACA;AAAA,UAAA;AAAA,UAGL,UAAAE;AAAA,QAAA;AAAA,MAAA,IAKAA;AAAA,IACT;AAEA,WACE,gBAAA/B;AAAA,MAACyB;AAAA,MAAA;AAAA,QACC,KAAAD;AAAA,QACA,WAAWlB,EAAGC,EAAqB,EAAE,SAAAG,GAAS,QAAAC,GAAQ,MAAAC,GAAM,WAAAH,EAAA,CAAW,CAAC;AAAA,QACxE,UAAUiB;AAAA,QACV,aAAWZ,KAAW;AAAA,QACtB,iBAAeY,KAAc;AAAA,QAC7B,cAAYC;AAAA,QACX,GAAGJ;AAAA,QAEH,UAAA;AAAA,UAAAK,EAAW,MAAM;AAAA,UAClB,gBAAA3B,EAACG,GAAA,EACE,UAAAU,KAAWC,IACV,gBAAAd,EAAC,UAAK,WAAU,kCAAkC,UAAAc,EAAA,CAAY,IAE9DK,EAAA,CAEJ;AAAA,UACCQ,EAAW,OAAO;AAAA,UAGlBd,uBACE,QAAA,EAAK,WAAU,WAAU,aAAU,UACjC,eAAe,aAAA,CAClB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEAN,EAAa,cAAc;"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as a, jsxs as i } from "react/jsx-runtime";
2
2
  import * as o from "@radix-ui/react-dialog";
3
3
  import { XIcon as r } from "lucide-react";
4
- import { cn as n } from "../lib/utils.js";
4
+ import { cn as n } from "../../lib/utils.js";
5
5
  function m({ ...t }) {
6
6
  return /* @__PURE__ */ a(o.Root, { "data-slot": "dialog", ...t });
7
7
  }
@@ -14,7 +14,7 @@ function d({ ...t }) {
14
14
  function x({ ...t }) {
15
15
  return /* @__PURE__ */ a(o.Close, { "data-slot": "dialog-close", ...t });
16
16
  }
17
- function c({
17
+ function g({
18
18
  className: t,
19
19
  ...e
20
20
  }) {
@@ -37,7 +37,7 @@ function v({
37
37
  ...s
38
38
  }) {
39
39
  return /* @__PURE__ */ i(d, { "data-slot": "dialog-portal", children: [
40
- /* @__PURE__ */ a(c, {}),
40
+ /* @__PURE__ */ a(g, {}),
41
41
  /* @__PURE__ */ i(
42
42
  o.Content,
43
43
  {
@@ -75,7 +75,7 @@ function D({ className: t, ...e }) {
75
75
  }
76
76
  );
77
77
  }
78
- function h({ className: t, ...e }) {
78
+ function b({ className: t, ...e }) {
79
79
  return /* @__PURE__ */ a(
80
80
  "div",
81
81
  {
@@ -85,7 +85,7 @@ function h({ className: t, ...e }) {
85
85
  }
86
86
  );
87
87
  }
88
- function b({ className: t, ...e }) {
88
+ function h({ className: t, ...e }) {
89
89
  return /* @__PURE__ */ a(
90
90
  o.Title,
91
91
  {
@@ -113,11 +113,11 @@ export {
113
113
  x as DialogClose,
114
114
  v as DialogContent,
115
115
  y as DialogDescription,
116
- h as DialogFooter,
116
+ b as DialogFooter,
117
117
  D as DialogHeader,
118
- c as DialogOverlay,
118
+ g as DialogOverlay,
119
119
  d as DialogPortal,
120
- b as DialogTitle,
120
+ h as DialogTitle,
121
121
  p as DialogTrigger
122
122
  };
123
123
  //# sourceMappingURL=dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.js","sources":["../../../src/components/primitives/dialog.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n"],"names":["jsx","jsxs","DialogPrimitive","XIcon","cn","Dialog","props","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","className","DialogContent","children","showCloseButton","DialogHeader","DialogFooter","DialogTitle","DialogDescription"],"mappings":"AAMA,SAAA,OAAAA,GAAA,QAAAC,SAAA;AAAA,YAAAC,OAAA;AAAA,SAAA,SAAAC,SAAA;AAAA,SAAA,MAAAC,SAAA;AAAA,SAASC,EAAO,EAAE,GAAGC,KAA4D;AAC/E,2BAAQJ,EAAgB,MAAhB,EAAqB,aAAU,UAAU,GAAGI,GAAO;AAC7D;AAEA,SAASC,EAAc,EAAE,GAAGD,KAA+D;AACzF,2BAAQJ,EAAgB,SAAhB,EAAwB,aAAU,kBAAkB,GAAGI,GAAO;AACxE;AAEA,SAASE,EAAa,EAAE,GAAGF,KAA8D;AACvF,2BAAQJ,EAAgB,QAAhB,EAAuB,aAAU,iBAAiB,GAAGI,GAAO;AACtE;AAEA,SAASG,EAAY,EAAE,GAAGH,KAA6D;AACrF,2BAAQJ,EAAgB,OAAhB,EAAsB,aAAU,gBAAgB,GAAGI,GAAO;AACpE;AAEA,SAASI,EAAc;AAAA,EACrB,WAAAC;AAAA,EACA,GAAGL;AACL,GAAyD;AACvD,SACE,gBAAAN;AAAA,IAACE,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWE;AAAA,QACT;AAAA,QACAO;AAAA,MAAA;AAAA,MAED,GAAGL;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASM,EAAc;AAAA,EACrB,WAAAD;AAAA,EACA,UAAAE;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,GAAGR;AACL,GAEG;AACD,SACE,gBAAAL,EAACO,GAAA,EAAa,aAAU,iBACtB,UAAA;AAAA,IAAA,gBAAAR,EAACU,GAAA,EAAc;AAAA,IACf,gBAAAT;AAAA,MAACC,EAAgB;AAAA,MAAhB;AAAA,QACC,aAAU;AAAA,QACV,WAAWE;AAAA,UACT;AAAA,UACAO;AAAA,QAAA;AAAA,QAED,GAAGL;AAAA,QAEH,UAAA;AAAA,UAAAO;AAAA,UACAC,KACC,gBAAAb;AAAA,YAACC,EAAgB;AAAA,YAAhB;AAAA,cACC,aAAU;AAAA,cACV,WAAU;AAAA,cAEV,UAAA;AAAA,gBAAA,gBAAAF,EAACG,GAAA,EAAM;AAAA,gBACP,gBAAAH,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,QAAA,CAAK;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACjC;AAAA,MAAA;AAAA,IAAA;AAAA,EAEJ,GACF;AAEJ;AAEA,SAASe,EAAa,EAAE,WAAAJ,GAAW,GAAGL,KAAsC;AAC1E,SACE,gBAAAN;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWI,EAAG,gDAAgDO,CAAS;AAAA,MACtE,GAAGL;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASU,EAAa,EAAE,WAAAL,GAAW,GAAGL,KAAsC;AAC1E,SACE,gBAAAN;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWI,EAAG,0DAA0DO,CAAS;AAAA,MAChF,GAAGL;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASW,EAAY,EAAE,WAAAN,GAAW,GAAGL,KAA6D;AAChG,SACE,gBAAAN;AAAA,IAACE,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWE,EAAG,sCAAsCO,CAAS;AAAA,MAC5D,GAAGL;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASY,EAAkB;AAAA,EACzB,WAAAP;AAAA,EACA,GAAGL;AACL,GAA6D;AAC3D,SACE,gBAAAN;AAAA,IAACE,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWE,EAAG,iCAAiCO,CAAS;AAAA,MACvD,GAAGL;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as a, jsxs as o } from "react/jsx-runtime";
2
2
  import { Drawer as e } from "vaul";
3
- import { cn as d } from "../lib/utils.js";
3
+ import { cn as d } from "../../lib/utils.js";
4
4
  function s({ ...t }) {
5
5
  return /* @__PURE__ */ a(e.Root, { "data-slot": "drawer", ...t });
6
6
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawer.js","sources":["../../../src/components/primitives/drawer.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Drawer({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />;\n}\n\nfunction DrawerTrigger({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nfunction DrawerClose({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DrawerContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n \"group/drawer-content bg-background fixed z-50 flex h-auto flex-col\",\n \"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b\",\n \"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t\",\n \"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n \"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n className,\n )}\n {...props}\n >\n <div className=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\n \"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction DrawerTitle({ className, ...props }: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n};\n"],"names":["jsx","jsxs","Drawer$1","cn","Drawer","props","DrawerPrimitive","DrawerTrigger","DrawerPortal","DrawerClose","DrawerOverlay","className","DrawerContent","children","DrawerHeader","DrawerFooter","DrawerTitle","DrawerDescription"],"mappings":"AAOA,SAAA,OAAAA,GAAA,QAAAC,SAAA;AAAA,SAAA,UAAAC,SAAA;AAAA,SAAA,MAAAC,SAAA;AAAA,SAASC,EAAO,EAAE,GAAGC,KAA4D;AAC/E,2BAAQC,EAAgB,MAAhB,EAAqB,aAAU,UAAU,GAAGD,GAAO;AAC7D;AAEA,SAASE,EAAc,EAAE,GAAGF,KAA+D;AACzF,2BAAQC,EAAgB,SAAhB,EAAwB,aAAU,kBAAkB,GAAGD,GAAO;AACxE;AAEA,SAASG,EAAa,EAAE,GAAGH,KAA8D;AACvF,2BAAQC,EAAgB,QAAhB,EAAuB,aAAU,iBAAiB,GAAGD,GAAO;AACtE;AAEA,SAASI,EAAY,EAAE,GAAGJ,KAA6D;AACrF,2BAAQC,EAAgB,OAAhB,EAAsB,aAAU,gBAAgB,GAAGD,GAAO;AACpE;AAEA,SAASK,EAAc;AAAA,EACrB,WAAAC;AAAA,EACA,GAAGN;AACL,GAAyD;AACvD,SACE,gBAAAL;AAAA,IAACM,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWH;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGN;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASO,EAAc;AAAA,EACrB,WAAAD;AAAA,EACA,UAAAE;AAAA,EACA,GAAGR;AACL,GAAyD;AACvD,SACE,gBAAAJ,EAACO,GAAA,EAAa,aAAU,iBACtB,UAAA;AAAA,IAAA,gBAAAR,EAACU,GAAA,EAAc;AAAA,IACf,gBAAAT;AAAA,MAACK,EAAgB;AAAA,MAAhB;AAAA,QACC,aAAU;AAAA,QACV,WAAWH;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACAQ;AAAA,QAAA;AAAA,QAED,GAAGN;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAL,EAAC,OAAA,EAAI,WAAU,kIAAA,CAAkI;AAAA,UAChJa;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;AAEA,SAASC,EAAa,EAAE,WAAAH,GAAW,GAAGN,KAAsC;AAC1E,SACE,gBAAAL;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWG;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGN;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASU,EAAa,EAAE,WAAAJ,GAAW,GAAGN,KAAsC;AAC1E,SACE,gBAAAL;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWG,EAAG,mCAAmCQ,CAAS;AAAA,MACzD,GAAGN;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASW,EAAY,EAAE,WAAAL,GAAW,GAAGN,KAA6D;AAChG,SACE,gBAAAL;AAAA,IAACM,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWH,EAAG,iCAAiCQ,CAAS;AAAA,MACvD,GAAGN;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASY,EAAkB;AAAA,EACzB,WAAAN;AAAA,EACA,GAAGN;AACL,GAA6D;AAC3D,SACE,gBAAAL;AAAA,IAACM,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWH,EAAG,iCAAiCQ,CAAS;AAAA,MACvD,GAAGN;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as t, jsxs as s } from "react/jsx-runtime";
2
2
  import * as n from "@radix-ui/react-dropdown-menu";
3
3
  import { CheckIcon as i, CircleIcon as u, ChevronRightIcon as c } from "lucide-react";
4
- import { cn as r } from "../lib/utils.js";
4
+ import { cn as r } from "../../lib/utils.js";
5
5
  function f({ ...e }) {
6
6
  return /* @__PURE__ */ t(n.Root, { "data-slot": "dropdown-menu", ...e });
7
7
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu.js","sources":["../../../src/components/primitives/dropdown-menu.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return <DropdownMenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"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 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />;\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return <DropdownMenuPrimitive.RadioGroup data-slot=\"dropdown-menu-radio-group\" {...props} />;\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\"text-muted-foreground ml-auto text-xs tracking-widest\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"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 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n"],"names":["jsx","jsxs","DropdownMenuPrimitive","CheckIcon","CircleIcon","ChevronRightIcon","cn","DropdownMenu","props","DropdownMenuPortal","DropdownMenuTrigger","DropdownMenuContent","className","sideOffset","DropdownMenuGroup","DropdownMenuItem","inset","variant","DropdownMenuCheckboxItem","children","checked","DropdownMenuRadioGroup","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","DropdownMenuSubContent"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as n } from "react/jsx-runtime";
2
2
  import { cva as i } from "class-variance-authority";
3
- import { cn as a } from "../lib/utils.js";
3
+ import { cn as a } from "../../lib/utils.js";
4
4
  function d({ className: e, ...t }) {
5
5
  return /* @__PURE__ */ n(
6
6
  "div",
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty.js","sources":["../../../src/components/primitives/empty.tsx"],"sourcesContent":["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(\"flex max-w-sm flex-col items-center gap-2 text-center\", className)}\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 { Empty, EmptyHeader, EmptyTitle, EmptyDescription, EmptyContent, EmptyMedia };\n"],"names":["Empty","className","props","jsx","cn","EmptyHeader","emptyMediaVariants","cva","EmptyMedia","variant","EmptyTitle","EmptyDescription","EmptyContent"],"mappings":";;;AAIA,SAASA,EAAM,EAAE,WAAAC,GAAW,GAAGC,KAAsC;AACnE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASG,EAAY,EAAE,WAAAJ,GAAW,GAAGC,KAAsC;AACzE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,yDAAyDH,CAAS;AAAA,MAC/E,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,MAAMI,IAAqBC;AAAA,EACzB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAEA,SAASC,EAAW;AAAA,EAClB,WAAAP;AAAA,EACA,SAAAQ,IAAU;AAAA,EACV,GAAGP;AACL,GAA0E;AACxE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAcM;AAAA,MACd,WAAWL,EAAGE,EAAmB,EAAE,SAAAG,GAAS,WAAAR,EAAA,CAAW,CAAC;AAAA,MACvD,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASQ,EAAW,EAAE,WAAAT,GAAW,GAAGC,KAAsC;AACxE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,sCAAsCH,CAAS;AAAA,MAC5D,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASS,EAAiB,EAAE,WAAAV,GAAW,GAAGC,KAAoC;AAC5E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASU,EAAa,EAAE,WAAAX,GAAW,GAAGC,KAAsC;AAC1E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1,5 +1,5 @@
1
1
  import { VariantProps } from 'class-variance-authority';
2
- import { Label } from './label';
2
+ import { Label } from '../primitives/label';
3
3
  declare function FieldSet({ className, ...props }: React.ComponentProps<"fieldset">): import("react/jsx-runtime").JSX.Element;
4
4
  declare function FieldLegend({ className, variant, ...props }: React.ComponentProps<"legend"> & {
5
5
  variant?: "legend" | "label";
@@ -1,7 +1,7 @@
1
1
  import { jsx as a, jsxs as f } from "react/jsx-runtime";
2
2
  import { useMemo as u } from "react";
3
3
  import { cva as c } from "class-variance-authority";
4
- import { cn as l } from "../lib/utils.js";
4
+ import { cn as l } from "../../lib/utils.js";
5
5
  import { Label as m } from "./label.js";
6
6
  import { Separator as p } from "./separator.js";
7
7
  function k({ className: t, ...e }) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.js","sources":["../../../src/components/primitives/field.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Label } from \"../primitives/label\";\nimport { Separator } from \"../primitives/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(\"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\", {\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\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(\"group/field-content flex flex-1 flex-col gap-1.5 leading-snug\", className)}\n {...props}\n />\n );\n}\n\nfunction FieldLabel({ className, ...props }: 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 = [...new Map(errors.map((error) => [error?.message, error])).values()];\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((error, index) => error?.message && <li key={index}>{error.message}</li>)}\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"],"names":["FieldSet","className","props","jsx","cn","FieldLegend","variant","FieldGroup","fieldVariants","cva","Field","orientation","FieldContent","FieldLabel","Label","FieldTitle","FieldDescription","FieldSeparator","children","jsxs","Separator","FieldError","errors","content","useMemo","uniqueErrors","error","index"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { FieldPath, FieldValues } from 'react-hook-form';
2
+ import * as React from "react";
3
+ type FormFieldContextValue<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = {
4
+ name: TName;
5
+ };
6
+ export declare const FormFieldContext: React.Context<FormFieldContextValue<FieldValues, string>>;
7
+ type FormItemContextValue = {
8
+ id: string;
9
+ };
10
+ export declare const FormItemContext: React.Context<FormItemContextValue>;
11
+ export declare const useFormField: () => {
12
+ invalid: boolean;
13
+ isDirty: boolean;
14
+ isTouched: boolean;
15
+ isValidating: boolean;
16
+ error?: import('react-hook-form').FieldError;
17
+ id: string;
18
+ name: string;
19
+ formItemId: string;
20
+ formDescriptionId: string;
21
+ formMessageId: string;
22
+ };
23
+ export {};
@@ -0,0 +1,26 @@
1
+ import * as o from "react";
2
+ import { useFormContext as i, useFormState as a } from "react-hook-form";
3
+ const c = o.createContext(
4
+ {}
5
+ ), d = o.createContext(
6
+ {}
7
+ ), F = () => {
8
+ const e = o.useContext(c), m = o.useContext(d), { getFieldState: r } = i(), n = a({ name: e?.name });
9
+ if (!e)
10
+ throw new Error("useFormField should be used within <FormField>");
11
+ const s = r(e.name, n), { id: t } = m;
12
+ return {
13
+ id: t,
14
+ name: e.name,
15
+ formItemId: `${t}-form-item`,
16
+ formDescriptionId: `${t}-form-item-description`,
17
+ formMessageId: `${t}-form-item-message`,
18
+ ...s
19
+ };
20
+ };
21
+ export {
22
+ c as FormFieldContext,
23
+ d as FormItemContext,
24
+ F as useFormField
25
+ };
26
+ //# sourceMappingURL=form-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-context.js","sources":["../../../src/components/primitives/form-context.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { useFormContext, useFormState, type FieldPath, type FieldValues } from \"react-hook-form\";\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nexport const FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\ntype FormItemContextValue = {\n id: string;\n};\n\nexport const FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nexport const 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\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const fieldState = getFieldState(fieldContext.name, formState);\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"],"names":["React","useFormContext","useFormState","FormFieldContext","FormItemContext","useFormField","fieldContext","itemContext","getFieldState","formState","fieldState","id"],"mappings":"AAYO,YAAAA,OAAA;AAAA,SAAA,kBAAAC,GAAA,gBAAAC,SAAA;AAAA,MAAMC,IAAmBH,EAAM;AAAA,EACpC,CAAA;AACF,GAMaI,IAAkBJ,EAAM;AAAA,EACnC,CAAA;AACF,GAEaK,IAAe,MAAM;AAChC,QAAMC,IAAeN,EAAM,WAAWG,CAAgB,GAChDI,IAAcP,EAAM,WAAWI,CAAe,GAC9C,EAAE,eAAAI,EAAA,IAAkBP,EAAA,GACpBQ,IAAYP,EAAa,EAAE,MAAMI,GAAc,MAAM;AAE3D,MAAI,CAACA;AACH,UAAM,IAAI,MAAM,gDAAgD;AAGlE,QAAMI,IAAaF,EAAcF,EAAa,MAAMG,CAAS,GAEvD,EAAE,IAAAE,MAAOJ;AAEf,SAAO;AAAA,IACL,IAAAI;AAAA,IACA,MAAML,EAAa;AAAA,IACnB,YAAY,GAAGK,CAAE;AAAA,IACjB,mBAAmB,GAAGA,CAAE;AAAA,IACxB,eAAe,GAAGA,CAAE;AAAA,IACpB,GAAGD;AAAA,EAAA;AAEP;"}
@@ -0,0 +1,11 @@
1
+ import { ControllerProps, FieldPath, FieldValues } from 'react-hook-form';
2
+ import * as React from "react";
3
+ import * as LabelPrimitive from "@radix-ui/react-label";
4
+ declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: import('react-hook-form').FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
5
+ declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>) => import("react/jsx-runtime").JSX.Element;
6
+ declare const FormItem: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
+ declare const FormLabel: React.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React.RefAttributes<HTMLLabelElement>, "ref"> & React.RefAttributes<HTMLLabelElement>>;
8
+ declare const FormControl: React.ForwardRefExoticComponent<Omit<import('@radix-ui/react-slot').SlotProps & React.RefAttributes<HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>;
9
+ declare const FormDescription: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
10
+ declare const FormMessage: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
11
+ export { Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField };
@@ -0,0 +1,85 @@
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import * as s from "react";
3
+ import { Slot as l } from "@radix-ui/react-slot";
4
+ import { FormProvider as c, Controller as f } from "react-hook-form";
5
+ import { cn as i } from "../../lib/utils.js";
6
+ import { Label as F } from "./label.js";
7
+ import { FormItemContext as p, useFormField as n, FormFieldContext as u } from "./form-context.js";
8
+ const D = c, M = ({
9
+ ...r
10
+ }) => /* @__PURE__ */ m(u.Provider, { value: { name: r.name }, children: /* @__PURE__ */ m(f, { ...r }) }), I = s.forwardRef(
11
+ ({ className: r, ...o }, e) => {
12
+ const t = s.useId();
13
+ return /* @__PURE__ */ m(p.Provider, { value: { id: t }, children: /* @__PURE__ */ m("div", { ref: e, "data-slot": "form-item", className: i("grid gap-2", r), ...o }) });
14
+ }
15
+ ), g = s.forwardRef(({ className: r, ...o }, e) => {
16
+ const { error: t, formItemId: a } = n();
17
+ return /* @__PURE__ */ m(
18
+ F,
19
+ {
20
+ ref: e,
21
+ "data-slot": "form-label",
22
+ "data-error": !!t,
23
+ className: i("data-[error=true]:text-destructive", r),
24
+ htmlFor: a,
25
+ ...o
26
+ }
27
+ );
28
+ }), v = s.forwardRef(({ ...r }, o) => {
29
+ const { error: e, formItemId: t, formDescriptionId: a, formMessageId: d } = n();
30
+ return /* @__PURE__ */ m(
31
+ l,
32
+ {
33
+ ref: o,
34
+ "data-slot": "form-control",
35
+ id: t,
36
+ "aria-describedby": e ? `${a} ${d}` : `${a}`,
37
+ "aria-invalid": !!e,
38
+ ...r
39
+ }
40
+ );
41
+ }), x = s.forwardRef(
42
+ ({ className: r, ...o }, e) => {
43
+ const { formDescriptionId: t } = n();
44
+ return /* @__PURE__ */ m(
45
+ "p",
46
+ {
47
+ ref: e,
48
+ "data-slot": "form-description",
49
+ id: t,
50
+ className: i("text-muted-foreground text-sm", r),
51
+ ...o
52
+ }
53
+ );
54
+ }
55
+ ), N = s.forwardRef(
56
+ ({ className: r, ...o }, e) => {
57
+ const { error: t, formMessageId: a } = n(), d = t ? String(t?.message ?? "") : o.children;
58
+ return d ? /* @__PURE__ */ m(
59
+ "p",
60
+ {
61
+ ref: e,
62
+ "data-slot": "form-message",
63
+ id: a,
64
+ className: i("text-destructive text-sm", r),
65
+ ...o,
66
+ children: d
67
+ }
68
+ ) : null;
69
+ }
70
+ );
71
+ I.displayName = "FormItem";
72
+ g.displayName = "FormLabel";
73
+ v.displayName = "FormControl";
74
+ x.displayName = "FormDescription";
75
+ N.displayName = "FormMessage";
76
+ export {
77
+ D as Form,
78
+ v as FormControl,
79
+ x as FormDescription,
80
+ M as FormField,
81
+ I as FormItem,
82
+ g as FormLabel,
83
+ N as FormMessage
84
+ };
85
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","sources":["../../../src/components/primitives/form.tsx"],"sourcesContent":["\"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 type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Label } from \"../primitives/label\";\nimport { FormFieldContext, FormItemContext, useFormField } from \"./form-context\";\n\nconst Form = FormProvider;\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 FormItem = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\n ({ className, ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} data-slot=\"form-item\" className={cn(\"grid gap-2\", className)} {...props} />\n </FormItemContext.Provider>\n );\n },\n);\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\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\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\n return (\n <Slot\n ref={ref}\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}\n aria-invalid={!!error}\n {...props}\n />\n );\n});\n\nconst FormDescription = React.forwardRef<HTMLParagraphElement, React.ComponentProps<\"p\">>(\n ({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n },\n);\n\nconst FormMessage = React.forwardRef<HTMLParagraphElement, React.ComponentProps<\"p\">>(\n ({ className, ...props }, ref) => {\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 ref={ref}\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);\n\nFormItem.displayName = \"FormItem\";\nFormLabel.displayName = \"FormLabel\";\nFormControl.displayName = \"FormControl\";\nFormDescription.displayName = \"FormDescription\";\nFormMessage.displayName = \"FormMessage\";\n\nexport { Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField };\n"],"names":["jsx","React","Slot","FormProvider","Controller","cn","Label","FormItemContext","useFormField","FormFieldContext","Form","FormField","props","FormItem","className","ref","id","FormLabel","error","formItemId","FormControl","formDescriptionId","formMessageId","FormDescription","FormMessage","body"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as o } from "react/jsx-runtime";
2
2
  import * as r from "@radix-ui/react-hover-card";
3
- import { cn as i } from "../lib/utils.js";
3
+ import { cn as i } from "../../lib/utils.js";
4
4
  function m({ ...t }) {
5
5
  return /* @__PURE__ */ o(r.Root, { "data-slot": "hover-card", ...t });
6
6
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hover-card.js","sources":["../../../src/components/primitives/hover-card.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction HoverCard({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\nfunction HoverCardTrigger({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />;\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"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\",\n className,\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n"],"names":["jsx","HoverCardPrimitive","cn","HoverCard","props","HoverCardTrigger","HoverCardContent","className","align","sideOffset"],"mappings":"AAOA,SAAA,OAAAA,SAAA;AAAA,YAAAC,OAAA;AAAA,SAAA,MAAAC,SAAA;AAAA,SAASC,EAAU,EAAE,GAAGC,KAA+D;AACrF,2BAAQH,EAAmB,MAAnB,EAAwB,aAAU,cAAc,GAAGG,GAAO;AACpE;AAEA,SAASC,EAAiB,EAAE,GAAGD,KAAkE;AAC/F,2BAAQH,EAAmB,SAAnB,EAA2B,aAAU,sBAAsB,GAAGG,GAAO;AAC/E;AAEA,SAASE,EAAiB;AAAA,EACxB,WAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,YAAAC,IAAa;AAAA,EACb,GAAGL;AACL,GAA4D;AAC1D,SACE,gBAAAJ,EAACC,EAAmB,QAAnB,EAA0B,aAAU,qBACnC,UAAA,gBAAAD;AAAA,IAACC,EAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,OAAAO;AAAA,MACA,YAAAC;AAAA,MACA,WAAWP;AAAA,QACT;AAAA,QACAK;AAAA,MAAA;AAAA,MAED,GAAGH;AAAA,IAAA;AAAA,EAAA,GAER;AAEJ;"}
@@ -0,0 +1,116 @@
1
+ export * from './accordion';
2
+ export * from './alert';
3
+ export * from './alert-dialog';
4
+ export * from './aspect-ratio';
5
+ export * from './avatar';
6
+ export * from './badge';
7
+ export * from './breadcrumb';
8
+ export * from './button';
9
+ export * from './button-group';
10
+ export * from './calendar';
11
+ export * from './card';
12
+ export * from './carousel';
13
+ export * from './chart';
14
+ export * from './checkbox';
15
+ export * from './collapsible';
16
+ export * from './command';
17
+ export * from './context-menu';
18
+ export * from './custom-button';
19
+ export * from './dialog';
20
+ export * from './drawer';
21
+ export * from './dropdown-menu';
22
+ export * from './empty';
23
+ export * from './field';
24
+ export * from './form';
25
+ export * from './hover-card';
26
+ export * from './input';
27
+ export * from './input-group';
28
+ export * from './input-otp';
29
+ export * from './item';
30
+ export * from './kbd';
31
+ export * from './label';
32
+ export * from './loading-swap';
33
+ export * from './menubar';
34
+ export * from './navigation-menu';
35
+ export * from './pagination';
36
+ export * from './popover';
37
+ export * from './progress';
38
+ export * from './radio-group';
39
+ export * from './resizable';
40
+ export * from './scroll-area';
41
+ export * from './select';
42
+ export * from './separator';
43
+ export * from './sheet';
44
+ export * from './sidebar';
45
+ export * from './skeleton';
46
+ export * from './slider';
47
+ export * from './sonner';
48
+ export * from './spinner';
49
+ export * from './switch';
50
+ export * from './table';
51
+ export * from './tabs';
52
+ export * from './textarea';
53
+ export * from './theme-provider';
54
+ export * from './toggle';
55
+ export * from './toggle-group';
56
+ export * from './tooltip';
57
+ export type * from './accordion';
58
+ export type * from './alert';
59
+ export type * from './alert-dialog';
60
+ export type * from './aspect-ratio';
61
+ export type * from './avatar';
62
+ export type * from './badge';
63
+ export type * from './breadcrumb';
64
+ export type * from './button';
65
+ export type * from './button-group';
66
+ export type * from './calendar';
67
+ export type * from './card';
68
+ export type * from './carousel';
69
+ export type * from './chart';
70
+ export type * from './checkbox';
71
+ export type * from './collapsible';
72
+ export type * from './command';
73
+ export type * from './context-menu';
74
+ export type * from './custom-button';
75
+ export type * from './dialog';
76
+ export type * from './drawer';
77
+ export type * from './dropdown-menu';
78
+ export type * from './empty';
79
+ export type * from './field';
80
+ export type * from './form';
81
+ export type * from './hover-card';
82
+ export type * from './input';
83
+ export type * from './input-group';
84
+ export type * from './input-otp';
85
+ export type * from './item';
86
+ export type * from './kbd';
87
+ export type * from './label';
88
+ export type * from './loading-swap';
89
+ export type * from './menubar';
90
+ export type * from './navigation-menu';
91
+ export type * from './pagination';
92
+ export type * from './popover';
93
+ export type * from './progress';
94
+ export type * from './radio-group';
95
+ export type * from './resizable';
96
+ export type * from './scroll-area';
97
+ export type * from './select';
98
+ export type * from './separator';
99
+ export type * from './sheet';
100
+ export type * from './sidebar';
101
+ export type * from './skeleton';
102
+ export type * from './slider';
103
+ export type * from './sonner';
104
+ export type * from './spinner';
105
+ export type * from './switch';
106
+ export type * from './table';
107
+ export type * from './tabs';
108
+ export type * from './textarea';
109
+ export type * from './theme-provider';
110
+ export type * from './toggle';
111
+ export type * from './toggle-group';
112
+ export * from './tooltip';
113
+ export * from './custom-button-variants';
114
+ export { Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField, } from './form';
115
+ export { useFormField } from './form-context';
116
+ export { useSidebar } from './sidebar-context';
@@ -1,9 +1,9 @@
1
1
  import { VariantProps } from 'class-variance-authority';
2
- import { Button } from './button';
2
+ import { Button } from '../primitives/button';
3
3
  import * as React from "react";
4
4
  declare function InputGroup({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
5
5
  declare const inputGroupAddonVariants: (props?: ({
6
- align?: "inline-end" | "inline-start" | "block-end" | "block-start" | null | undefined;
6
+ align?: "inline-start" | "inline-end" | "block-start" | "block-end" | null | undefined;
7
7
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
8
8
  declare function InputGroupAddon({ className, align, ...props }: React.ComponentProps<"div"> & VariantProps<typeof inputGroupAddonVariants>): import("react/jsx-runtime").JSX.Element;
9
9
  declare const inputGroupButtonVariants: (props?: ({
@@ -1,6 +1,6 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
2
  import { cva as s } from "class-variance-authority";
3
- import { cn as n } from "../lib/utils.js";
3
+ import { cn as n } from "../../lib/utils.js";
4
4
  import { Button as u } from "./button.js";
5
5
  import { Input as p } from "./input.js";
6
6
  import { Textarea as l } from "./textarea.js";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-group.js","sources":["../../../src/components/primitives/input-group.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"../primitives/button\";\nimport { Input } from \"../primitives/input\";\nimport { Textarea } from \"../primitives/textarea\";\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none\",\n \"h-9 min-w-0 has-[>textarea]:h-auto\",\n\n // Variants based on alignment.\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n // Focus state.\n \"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]\",\n\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\",\n\n className,\n )}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50\",\n {\n variants: {\n align: {\n \"inline-start\": \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\": \"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-3 pt-3 [.border-b]:pb-3 group-has-[>input]/input-group:pt-2.5\",\n \"block-end\":\n \"order-last w-full justify-start px-3 pb-3 [.border-t]:pt-3 group-has-[>input]/input-group:pb-2.5\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n },\n);\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return;\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus();\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva(\"text-sm shadow-none flex gap-2 items-center\", {\n variants: {\n size: {\n xs: \"h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2\",\n sm: \"h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5\",\n \"icon-xs\": \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n});\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupInput({ className, ...props }: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupTextarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n};\n"],"names":["InputGroup","className","props","jsx","cn","inputGroupAddonVariants","cva","InputGroupAddon","align","e","inputGroupButtonVariants","InputGroupButton","type","variant","size","Button","InputGroupText","InputGroupInput","Input","InputGroupTextarea","Textarea"],"mappings":";;;;;;AAUA,SAASA,EAAW,EAAE,WAAAC,GAAW,GAAGC,KAAsC;AACxE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAWC;AAAA,QACT;AAAA,QACA;AAAA;AAAA,QAGA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAGA;AAAA;AAAA,QAGA;AAAA,QAEAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,MAAMG,IAA0BC;AAAA,EAC9B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,OAAO;AAAA,QACL,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,eACE;AAAA,QACF,aACE;AAAA,MAAA;AAAA,IACJ;AAAA,IAEF,iBAAiB;AAAA,MACf,OAAO;AAAA,IAAA;AAAA,EACT;AAEJ;AAEA,SAASC,EAAgB;AAAA,EACvB,WAAAN;AAAA,EACA,OAAAO,IAAQ;AAAA,EACR,GAAGN;AACL,GAA+E;AAC7E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,cAAYK;AAAA,MACZ,WAAWJ,EAAGC,EAAwB,EAAE,OAAAG,EAAA,CAAO,GAAGP,CAAS;AAAA,MAC3D,SAAS,CAACQ,MAAM;AACd,QAAKA,EAAE,OAAuB,QAAQ,QAAQ,KAG9CA,EAAE,cAAc,eAAe,cAAc,OAAO,GAAG,MAAA;AAAA,MACzD;AAAA,MACC,GAAGP;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,MAAMQ,IAA2BJ,EAAI,+CAA+C;AAAA,EAClF,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,WAAW;AAAA,MACX,WAAW;AAAA,IAAA;AAAA,EACb;AAAA,EAEF,iBAAiB;AAAA,IACf,MAAM;AAAA,EAAA;AAEV,CAAC;AAED,SAASK,EAAiB;AAAA,EACxB,WAAAV;AAAA,EACA,MAAAW,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,GAAGZ;AACL,GACiD;AAC/C,SACE,gBAAAC;AAAA,IAACY;AAAA,IAAA;AAAA,MACC,MAAAH;AAAA,MACA,aAAWE;AAAA,MACX,SAAAD;AAAA,MACA,WAAWT,EAAGM,EAAyB,EAAE,MAAAI,EAAA,CAAM,GAAGb,CAAS;AAAA,MAC1D,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASc,EAAe,EAAE,WAAAf,GAAW,GAAGC,KAAuC;AAC7E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASe,EAAgB,EAAE,WAAAhB,GAAW,GAAGC,KAAwC;AAC/E,SACE,gBAAAC;AAAA,IAACe;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWd;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASiB,EAAmB,EAAE,WAAAlB,GAAW,GAAGC,KAA2C;AACrF,SACE,gBAAAC;AAAA,IAACiB;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWhB;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -2,7 +2,7 @@ import { jsx as e, jsxs as u } from "react/jsx-runtime";
2
2
  import * as c from "react";
3
3
  import { OTPInput as l, OTPInputContext as p } from "input-otp";
4
4
  import { MinusIcon as m } from "lucide-react";
5
- import { cn as a } from "../lib/utils.js";
5
+ import { cn as a } from "../../lib/utils.js";
6
6
  function g({
7
7
  className: t,
8
8
  containerClassName: r,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-otp.js","sources":["../../../src/components/primitives/input-otp.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { MinusIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string;\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\"flex items-center gap-2 has-disabled:opacity-50\", containerClassName)}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-group\" className={cn(\"flex items-center\", className)} {...props} />\n );\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number;\n}) {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n"],"names":["jsx","jsxs","React","OTPInput","OTPInputContext","MinusIcon","cn","InputOTP","className","containerClassName","props","InputOTPGroup","InputOTPSlot","index","inputOTPContext","char","hasFakeCaret","isActive","InputOTPSeparator"],"mappings":"AAMA,SAAA,OAAAA,GAAA,QAAAC,SAAA;AAAA,YAAAC,OAAA;AAAA,SAAA,YAAAC,GAAA,mBAAAC,SAAA;AAAA,SAAA,aAAAC,SAAA;AAAA,SAAA,MAAAC,SAAA;AAAA,SAASC,EAAS;AAAA,EAChB,WAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,GAAGC;AACL,GAEG;AACD,SACE,gBAAAV;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,oBAAoBG,EAAG,mDAAmDG,CAAkB;AAAA,MAC5F,WAAWH,EAAG,+BAA+BE,CAAS;AAAA,MACrD,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASC,EAAc,EAAE,WAAAH,GAAW,GAAGE,KAAsC;AAC3E,SACE,gBAAAV,EAAC,OAAA,EAAI,aAAU,mBAAkB,WAAWM,EAAG,qBAAqBE,CAAS,GAAI,GAAGE,EAAA,CAAO;AAE/F;AAEA,SAASE,EAAa;AAAA,EACpB,OAAAC;AAAA,EACA,WAAAL;AAAA,EACA,GAAGE;AACL,GAEG;AACD,QAAMI,IAAkBZ,EAAM,WAAWE,CAAe,GAClD,EAAE,MAAAW,GAAM,cAAAC,GAAc,UAAAC,EAAA,IAAaH,GAAiB,MAAMD,CAAK,KAAK,CAAA;AAE1E,SACE,gBAAAZ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAagB;AAAA,MACb,WAAWX;AAAA,QACT;AAAA,QACAE;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,MAEH,UAAA;AAAA,QAAAK;AAAA,QACAC,uBACE,OAAA,EAAI,WAAU,yEACb,UAAA,gBAAAhB,EAAC,OAAA,EAAI,WAAU,2DAAA,CAA2D,EAAA,CAC5E;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;AAEA,SAASkB,EAAkB,EAAE,GAAGR,KAAsC;AACpE,SACE,gBAAAV,EAAC,OAAA,EAAI,aAAU,uBAAsB,MAAK,aAAa,GAAGU,GACxD,UAAA,gBAAAV,EAACK,GAAA,CAAA,CAAU,EAAA,CACb;AAEJ;"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as t } from "react/jsx-runtime";
2
- import { cn as n } from "../lib/utils.js";
2
+ import { cn as n } from "../../lib/utils.js";
3
3
  function a({ className: e, type: i, ...r }) {
4
4
  return /* @__PURE__ */ t(
5
5
  "input",