@arolariu/components 0.0.35 → 0.0.37

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 (293) hide show
  1. package/changelog.md +13 -0
  2. package/dist/cjs/components/ui/accordion.cjs +1 -1
  3. package/dist/cjs/components/ui/accordion.cjs.map +1 -1
  4. package/dist/cjs/components/ui/alert-dialog.cjs +1 -1
  5. package/dist/cjs/components/ui/alert-dialog.cjs.map +1 -1
  6. package/dist/cjs/components/ui/alert.cjs +1 -1
  7. package/dist/cjs/components/ui/alert.cjs.map +1 -1
  8. package/dist/cjs/components/ui/aspect-ratio.cjs.map +1 -1
  9. package/dist/cjs/components/ui/avatar.cjs.map +1 -1
  10. package/dist/cjs/components/ui/background-beams.cjs +210 -0
  11. package/dist/cjs/components/ui/background-beams.cjs.map +1 -0
  12. package/dist/cjs/components/ui/badge.cjs +1 -1
  13. package/dist/cjs/components/ui/badge.cjs.map +1 -1
  14. package/dist/cjs/components/ui/breadcrumb.cjs.map +1 -1
  15. package/dist/cjs/components/ui/bubble-background.cjs +214 -0
  16. package/dist/cjs/components/ui/bubble-background.cjs.map +1 -0
  17. package/dist/cjs/components/ui/button.cjs +6 -6
  18. package/dist/cjs/components/ui/button.cjs.map +1 -1
  19. package/dist/cjs/components/ui/card.cjs +13 -3
  20. package/dist/cjs/components/ui/card.cjs.map +1 -1
  21. package/dist/cjs/components/ui/carousel.cjs.map +1 -1
  22. package/dist/cjs/components/ui/chart.cjs.map +1 -1
  23. package/dist/cjs/components/ui/checkbox.cjs +1 -1
  24. package/dist/cjs/components/ui/checkbox.cjs.map +1 -1
  25. package/dist/cjs/components/ui/collapsible.cjs +1 -1
  26. package/dist/cjs/components/ui/collapsible.cjs.map +1 -1
  27. package/dist/cjs/components/ui/command.cjs +2 -2
  28. package/dist/cjs/components/ui/command.cjs.map +1 -1
  29. package/dist/cjs/components/ui/context-menu.cjs +7 -7
  30. package/dist/cjs/components/ui/context-menu.cjs.map +1 -1
  31. package/dist/cjs/components/ui/counting-number.cjs +95 -0
  32. package/dist/cjs/components/ui/counting-number.cjs.map +1 -0
  33. package/dist/cjs/components/ui/dialog.cjs +1 -1
  34. package/dist/cjs/components/ui/dialog.cjs.map +1 -1
  35. package/dist/cjs/components/ui/dot-background.cjs +131 -0
  36. package/dist/cjs/components/ui/dot-background.cjs.map +1 -0
  37. package/dist/cjs/components/ui/drawer.cjs +3 -3
  38. package/dist/cjs/components/ui/drawer.cjs.map +1 -1
  39. package/dist/cjs/components/ui/dropdown-menu.cjs +7 -7
  40. package/dist/cjs/components/ui/dropdown-menu.cjs.map +1 -1
  41. package/dist/cjs/components/ui/fireworks-background.cjs +259 -0
  42. package/dist/cjs/components/ui/fireworks-background.cjs.map +1 -0
  43. package/dist/cjs/components/ui/flip-button.cjs +100 -0
  44. package/dist/cjs/components/ui/flip-button.cjs.map +1 -0
  45. package/dist/cjs/components/ui/form.cjs +2 -2
  46. package/dist/cjs/components/ui/form.cjs.map +1 -1
  47. package/dist/cjs/components/ui/gradient-background.cjs +60 -0
  48. package/dist/cjs/components/ui/gradient-background.cjs.map +1 -0
  49. package/dist/cjs/components/ui/gradient-text.cjs +83 -0
  50. package/dist/cjs/components/ui/gradient-text.cjs.map +1 -0
  51. package/dist/cjs/components/ui/highlight-text.cjs +74 -0
  52. package/dist/cjs/components/ui/highlight-text.cjs.map +1 -0
  53. package/dist/cjs/components/ui/hole-background.cjs +361 -0
  54. package/dist/cjs/components/ui/hole-background.cjs.map +1 -0
  55. package/dist/cjs/components/ui/hover-card.cjs +9 -6
  56. package/dist/cjs/components/ui/hover-card.cjs.map +1 -1
  57. package/dist/cjs/components/ui/input-otp.cjs +2 -3
  58. package/dist/cjs/components/ui/input-otp.cjs.map +1 -1
  59. package/dist/cjs/components/ui/input.cjs +1 -1
  60. package/dist/cjs/components/ui/input.cjs.map +1 -1
  61. package/dist/cjs/components/ui/label.cjs.map +1 -1
  62. package/dist/cjs/components/ui/menubar.cjs +9 -9
  63. package/dist/cjs/components/ui/menubar.cjs.map +1 -1
  64. package/dist/cjs/components/ui/navigation-menu.cjs +5 -5
  65. package/dist/cjs/components/ui/navigation-menu.cjs.map +1 -1
  66. package/dist/cjs/components/ui/pagination.cjs.map +1 -1
  67. package/dist/cjs/components/ui/popover.cjs +1 -1
  68. package/dist/cjs/components/ui/popover.cjs.map +1 -1
  69. package/dist/cjs/components/ui/progress.cjs.map +1 -1
  70. package/dist/cjs/components/ui/radio-group.cjs +1 -1
  71. package/dist/cjs/components/ui/radio-group.cjs.map +1 -1
  72. package/dist/cjs/components/ui/resizable.cjs.map +1 -1
  73. package/dist/cjs/components/ui/ripple-button.cjs +108 -0
  74. package/dist/cjs/components/ui/ripple-button.cjs.map +1 -0
  75. package/dist/cjs/components/ui/scratcher.cjs +179 -0
  76. package/dist/cjs/components/ui/scratcher.cjs.map +1 -0
  77. package/dist/cjs/components/ui/scroll-area.cjs +1 -1
  78. package/dist/cjs/components/ui/scroll-area.cjs.map +1 -1
  79. package/dist/cjs/components/ui/select.cjs +6 -5
  80. package/dist/cjs/components/ui/select.cjs.map +1 -1
  81. package/dist/cjs/components/ui/separator.cjs.map +1 -1
  82. package/dist/cjs/components/ui/sheet.cjs +1 -1
  83. package/dist/cjs/components/ui/sheet.cjs.map +1 -1
  84. package/dist/cjs/components/ui/sidebar.cjs +14 -11
  85. package/dist/cjs/components/ui/sidebar.cjs.map +1 -1
  86. package/dist/cjs/components/ui/skeleton.cjs +2 -1
  87. package/dist/cjs/components/ui/skeleton.cjs.map +1 -1
  88. package/dist/cjs/components/ui/slider.cjs +2 -2
  89. package/dist/cjs/components/ui/slider.cjs.map +1 -1
  90. package/dist/cjs/components/ui/sonner.cjs +5 -7
  91. package/dist/cjs/components/ui/sonner.cjs.map +1 -1
  92. package/dist/cjs/components/ui/switch.cjs +2 -2
  93. package/dist/cjs/components/ui/switch.cjs.map +1 -1
  94. package/dist/cjs/components/ui/table.cjs +2 -2
  95. package/dist/cjs/components/ui/table.cjs.map +1 -1
  96. package/dist/cjs/components/ui/tabs.cjs +3 -3
  97. package/dist/cjs/components/ui/tabs.cjs.map +1 -1
  98. package/dist/cjs/components/ui/textarea.cjs +1 -1
  99. package/dist/cjs/components/ui/textarea.cjs.map +1 -1
  100. package/dist/cjs/components/ui/toggle-group.cjs +2 -2
  101. package/dist/cjs/components/ui/toggle-group.cjs.map +1 -1
  102. package/dist/cjs/components/ui/toggle.cjs +2 -2
  103. package/dist/cjs/components/ui/toggle.cjs.map +1 -1
  104. package/dist/cjs/components/ui/tooltip.cjs +1 -1
  105. package/dist/cjs/components/ui/tooltip.cjs.map +1 -1
  106. package/dist/cjs/index.cjs +55 -4
  107. package/dist/cjs/index.css +1013 -258
  108. package/dist/esm/components/ui/accordion.js +1 -1
  109. package/dist/esm/components/ui/accordion.js.map +1 -1
  110. package/dist/esm/components/ui/alert-dialog.js +1 -1
  111. package/dist/esm/components/ui/alert-dialog.js.map +1 -1
  112. package/dist/esm/components/ui/alert.js +1 -1
  113. package/dist/esm/components/ui/alert.js.map +1 -1
  114. package/dist/esm/components/ui/aspect-ratio.js.map +1 -1
  115. package/dist/esm/components/ui/avatar.js.map +1 -1
  116. package/dist/esm/components/ui/background-beams.js +166 -0
  117. package/dist/esm/components/ui/background-beams.js.map +1 -0
  118. package/dist/esm/components/ui/badge.js +1 -1
  119. package/dist/esm/components/ui/badge.js.map +1 -1
  120. package/dist/esm/components/ui/breadcrumb.js.map +1 -1
  121. package/dist/esm/components/ui/bubble-background.js +180 -0
  122. package/dist/esm/components/ui/bubble-background.js.map +1 -0
  123. package/dist/esm/components/ui/button.js +6 -6
  124. package/dist/esm/components/ui/button.js.map +1 -1
  125. package/dist/esm/components/ui/card.js +11 -4
  126. package/dist/esm/components/ui/card.js.map +1 -1
  127. package/dist/esm/components/ui/carousel.js.map +1 -1
  128. package/dist/esm/components/ui/chart.js.map +1 -1
  129. package/dist/esm/components/ui/checkbox.js +1 -1
  130. package/dist/esm/components/ui/checkbox.js.map +1 -1
  131. package/dist/esm/components/ui/collapsible.js +1 -1
  132. package/dist/esm/components/ui/collapsible.js.map +1 -1
  133. package/dist/esm/components/ui/command.js +2 -2
  134. package/dist/esm/components/ui/command.js.map +1 -1
  135. package/dist/esm/components/ui/context-menu.js +7 -7
  136. package/dist/esm/components/ui/context-menu.js.map +1 -1
  137. package/dist/esm/components/ui/counting-number.js +61 -0
  138. package/dist/esm/components/ui/counting-number.js.map +1 -0
  139. package/dist/esm/components/ui/dialog.js +1 -1
  140. package/dist/esm/components/ui/dialog.js.map +1 -1
  141. package/dist/esm/components/ui/dot-background.js +97 -0
  142. package/dist/esm/components/ui/dot-background.js.map +1 -0
  143. package/dist/esm/components/ui/drawer.js +3 -3
  144. package/dist/esm/components/ui/drawer.js.map +1 -1
  145. package/dist/esm/components/ui/dropdown-menu.js +7 -7
  146. package/dist/esm/components/ui/dropdown-menu.js.map +1 -1
  147. package/dist/esm/components/ui/fireworks-background.js +225 -0
  148. package/dist/esm/components/ui/fireworks-background.js.map +1 -0
  149. package/dist/esm/components/ui/flip-button.js +66 -0
  150. package/dist/esm/components/ui/flip-button.js.map +1 -0
  151. package/dist/esm/components/ui/form.js +2 -2
  152. package/dist/esm/components/ui/form.js.map +1 -1
  153. package/dist/esm/components/ui/gradient-background.js +26 -0
  154. package/dist/esm/components/ui/gradient-background.js.map +1 -0
  155. package/dist/esm/components/ui/gradient-text.js +49 -0
  156. package/dist/esm/components/ui/gradient-text.js.map +1 -0
  157. package/dist/esm/components/ui/highlight-text.js +40 -0
  158. package/dist/esm/components/ui/highlight-text.js.map +1 -0
  159. package/dist/esm/components/ui/hole-background.js +327 -0
  160. package/dist/esm/components/ui/hole-background.js.map +1 -0
  161. package/dist/esm/components/ui/hover-card.js +9 -6
  162. package/dist/esm/components/ui/hover-card.js.map +1 -1
  163. package/dist/esm/components/ui/input-otp.js +2 -3
  164. package/dist/esm/components/ui/input-otp.js.map +1 -1
  165. package/dist/esm/components/ui/input.js +1 -1
  166. package/dist/esm/components/ui/input.js.map +1 -1
  167. package/dist/esm/components/ui/label.js.map +1 -1
  168. package/dist/esm/components/ui/menubar.js +9 -9
  169. package/dist/esm/components/ui/menubar.js.map +1 -1
  170. package/dist/esm/components/ui/navigation-menu.js +5 -5
  171. package/dist/esm/components/ui/navigation-menu.js.map +1 -1
  172. package/dist/esm/components/ui/pagination.js.map +1 -1
  173. package/dist/esm/components/ui/popover.js +1 -1
  174. package/dist/esm/components/ui/popover.js.map +1 -1
  175. package/dist/esm/components/ui/progress.js.map +1 -1
  176. package/dist/esm/components/ui/radio-group.js +1 -1
  177. package/dist/esm/components/ui/radio-group.js.map +1 -1
  178. package/dist/esm/components/ui/resizable.js.map +1 -1
  179. package/dist/esm/components/ui/ripple-button.js +74 -0
  180. package/dist/esm/components/ui/ripple-button.js.map +1 -0
  181. package/dist/esm/components/ui/scratcher.js +145 -0
  182. package/dist/esm/components/ui/scratcher.js.map +1 -0
  183. package/dist/esm/components/ui/scroll-area.js +1 -1
  184. package/dist/esm/components/ui/scroll-area.js.map +1 -1
  185. package/dist/esm/components/ui/select.js +6 -5
  186. package/dist/esm/components/ui/select.js.map +1 -1
  187. package/dist/esm/components/ui/separator.js.map +1 -1
  188. package/dist/esm/components/ui/sheet.js +1 -1
  189. package/dist/esm/components/ui/sheet.js.map +1 -1
  190. package/dist/esm/components/ui/sidebar.js +14 -11
  191. package/dist/esm/components/ui/sidebar.js.map +1 -1
  192. package/dist/esm/components/ui/skeleton.js +2 -1
  193. package/dist/esm/components/ui/skeleton.js.map +1 -1
  194. package/dist/esm/components/ui/slider.js +2 -2
  195. package/dist/esm/components/ui/slider.js.map +1 -1
  196. package/dist/esm/components/ui/sonner.js +5 -7
  197. package/dist/esm/components/ui/sonner.js.map +1 -1
  198. package/dist/esm/components/ui/switch.js +2 -2
  199. package/dist/esm/components/ui/switch.js.map +1 -1
  200. package/dist/esm/components/ui/table.js +2 -2
  201. package/dist/esm/components/ui/table.js.map +1 -1
  202. package/dist/esm/components/ui/tabs.js +3 -3
  203. package/dist/esm/components/ui/tabs.js.map +1 -1
  204. package/dist/esm/components/ui/textarea.js +1 -1
  205. package/dist/esm/components/ui/textarea.js.map +1 -1
  206. package/dist/esm/components/ui/toggle-group.js +2 -2
  207. package/dist/esm/components/ui/toggle-group.js.map +1 -1
  208. package/dist/esm/components/ui/toggle.js +2 -2
  209. package/dist/esm/components/ui/toggle.js.map +1 -1
  210. package/dist/esm/components/ui/tooltip.js +1 -1
  211. package/dist/esm/components/ui/tooltip.js.map +1 -1
  212. package/dist/esm/index.css +1013 -258
  213. package/dist/esm/index.js +26 -1
  214. package/dist/index.css +1013 -258
  215. package/dist/index.js +26 -1
  216. package/dist/types/components/ui/background-beams.d.ts +4 -0
  217. package/dist/types/components/ui/bubble-background.d.ts +16 -0
  218. package/dist/types/components/ui/card.d.ts +2 -1
  219. package/dist/types/components/ui/counting-number.d.ts +15 -0
  220. package/dist/types/components/ui/dot-background.d.ts +57 -0
  221. package/dist/types/components/ui/fireworks-background.d.ts +24 -0
  222. package/dist/types/components/ui/flip-button.d.ts +13 -0
  223. package/dist/types/components/ui/form.d.ts +1 -1
  224. package/dist/types/components/ui/gradient-background.d.ts +7 -0
  225. package/dist/types/components/ui/gradient-text.d.ts +10 -0
  226. package/dist/types/components/ui/highlight-text.d.ts +11 -0
  227. package/dist/types/components/ui/hole-background.d.ts +9 -0
  228. package/dist/types/components/ui/ripple-button.d.ts +10 -0
  229. package/dist/types/components/ui/scratcher.d.ts +12 -0
  230. package/dist/types/components/ui/select.d.ts +3 -1
  231. package/dist/types/components/ui/sidebar.d.ts +5 -6
  232. package/dist/types/index.d.ts +13 -1
  233. package/package.json +536 -461
  234. package/readme.md +10 -6
  235. package/src/components/ui/accordion.tsx +3 -2
  236. package/src/components/ui/alert-dialog.tsx +160 -160
  237. package/src/components/ui/alert.tsx +3 -2
  238. package/src/components/ui/aspect-ratio.tsx +12 -12
  239. package/src/components/ui/avatar.tsx +53 -52
  240. package/src/components/ui/background-beams.tsx +142 -0
  241. package/src/components/ui/badge.tsx +48 -47
  242. package/src/components/ui/breadcrumb.tsx +117 -116
  243. package/src/components/ui/bubble-background.tsx +187 -0
  244. package/src/components/ui/button.tsx +61 -60
  245. package/src/components/ui/card.tsx +97 -79
  246. package/src/components/ui/carousel.tsx +241 -240
  247. package/src/components/ui/chart.tsx +353 -352
  248. package/src/components/ui/checkbox.tsx +32 -31
  249. package/src/components/ui/collapsible.tsx +34 -34
  250. package/src/components/ui/command.tsx +177 -176
  251. package/src/components/ui/context-menu.tsx +255 -254
  252. package/src/components/ui/counting-number.tsx +108 -0
  253. package/src/components/ui/dialog.tsx +3 -2
  254. package/src/components/ui/dot-background.tsx +158 -0
  255. package/src/components/ui/drawer.tsx +138 -137
  256. package/src/components/ui/dropdown-menu.tsx +260 -259
  257. package/src/components/ui/fireworks-background.tsx +378 -0
  258. package/src/components/ui/flip-button.tsx +110 -0
  259. package/src/components/ui/form.tsx +174 -173
  260. package/src/components/ui/gradient-background.tsx +43 -0
  261. package/src/components/ui/gradient-text.tsx +65 -0
  262. package/src/components/ui/highlight-text.tsx +71 -0
  263. package/src/components/ui/hole-background.tsx +361 -0
  264. package/src/components/ui/hover-card.tsx +44 -41
  265. package/src/components/ui/input-otp.tsx +77 -77
  266. package/src/components/ui/input.tsx +23 -22
  267. package/src/components/ui/label.tsx +24 -23
  268. package/src/components/ui/menubar.tsx +279 -278
  269. package/src/components/ui/navigation-menu.tsx +171 -170
  270. package/src/components/ui/pagination.tsx +129 -128
  271. package/src/components/ui/popover.tsx +48 -47
  272. package/src/components/ui/progress.tsx +31 -30
  273. package/src/components/ui/radio-group.tsx +45 -44
  274. package/src/components/ui/resizable.tsx +56 -55
  275. package/src/components/ui/ripple-button.tsx +111 -0
  276. package/src/components/ui/scratcher.tsx +171 -0
  277. package/src/components/ui/scroll-area.tsx +58 -57
  278. package/src/components/ui/select.tsx +191 -183
  279. package/src/components/ui/separator.tsx +28 -27
  280. package/src/components/ui/sheet.tsx +145 -144
  281. package/src/components/ui/sidebar.tsx +729 -725
  282. package/src/components/ui/skeleton.tsx +19 -17
  283. package/src/components/ui/slider.tsx +63 -62
  284. package/src/components/ui/sonner.tsx +8 -12
  285. package/src/components/ui/switch.tsx +31 -30
  286. package/src/components/ui/table.tsx +119 -118
  287. package/src/components/ui/tabs.tsx +66 -65
  288. package/src/components/ui/textarea.tsx +20 -19
  289. package/src/components/ui/toggle-group.tsx +73 -72
  290. package/src/components/ui/toggle.tsx +47 -46
  291. package/src/components/ui/tooltip.tsx +61 -60
  292. package/src/index.css +75 -42
  293. package/src/index.ts +385 -330
@@ -69,7 +69,7 @@ function DropdownMenuContent({ className, sideOffset = 4, ...props }) {
69
69
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_dropdown_menu_namespaceObject.Content, {
70
70
  "data-slot": "dropdown-menu-content",
71
71
  sideOffset: sideOffset,
72
- className: (0, utils_cjs_namespaceObject.cn)("bg-white text-neutral-950 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] overflow-hidden rounded-md border border-neutral-200 p-1 shadow-md dark:bg-neutral-950 dark:text-neutral-50 dark:border-neutral-800", className),
72
+ className: (0, utils_cjs_namespaceObject.cn)("bg-white text-neutral-950 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 border-neutral-200 p-1 shadow-md dark:bg-neutral-950 dark:text-neutral-50 dark:border-neutral-800", className),
73
73
  ...props
74
74
  })
75
75
  });
@@ -85,14 +85,14 @@ function DropdownMenuItem({ className, inset, variant = "default", ...props }) {
85
85
  "data-slot": "dropdown-menu-item",
86
86
  "data-inset": inset,
87
87
  "data-variant": variant,
88
- className: (0, utils_cjs_namespaceObject.cn)("focus:bg-neutral-100 focus:text-neutral-900 data-[variant=destructive]:text-neutral-50 data-[variant=destructive]:focus:bg-red-500/10 dark:data-[variant=destructive]:focus:bg-red-500/40 data-[variant=destructive]:focus:text-neutral-50 [svg]:*:data-[variant=destructive]:text-destructive-foreground! [&_svg:not([class*='text-'])]:text-neutral-500 relative flex cursor-default items-center gap-2 rounded-xs 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 dark:focus:bg-neutral-800 dark:focus:text-neutral-50 dark:data-[variant=destructive]:text-neutral-50 dark:data-[variant=destructive]:focus:bg-red-900/10 dark:dark:data-[variant=destructive]:focus:bg-red-900/40 dark:data-[variant=destructive]:focus:text-neutral-50 dark:[&_svg:not([class*='text-'])]:text-neutral-400", className),
88
+ className: (0, utils_cjs_namespaceObject.cn)("focus:bg-neutral-100 focus:text-neutral-900 data-[variant=destructive]:text-red-500 data-[variant=destructive]:focus:bg-red-500/10 dark:data-[variant=destructive]:focus:bg-red-500/20 data-[variant=destructive]:focus:text-red-500 data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-neutral-500 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 dark:focus:bg-neutral-800 dark:focus:text-neutral-50 dark:data-[variant=destructive]:text-red-900 dark:data-[variant=destructive]:focus:bg-red-900/10 dark:dark:data-[variant=destructive]:focus:bg-red-900/20 dark:data-[variant=destructive]:focus:text-red-900 dark:[&_svg:not([class*='text-'])]:text-neutral-400", className),
89
89
  ...props
90
90
  });
91
91
  }
92
92
  function DropdownMenuCheckboxItem({ className, children, checked, ...props }) {
93
93
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(react_dropdown_menu_namespaceObject.CheckboxItem, {
94
94
  "data-slot": "dropdown-menu-checkbox-item",
95
- className: (0, utils_cjs_namespaceObject.cn)("focus:bg-neutral-100 focus:text-neutral-900 relative flex cursor-default items-center gap-2 rounded-xs 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 dark:focus:bg-neutral-800 dark:focus:text-neutral-50", className),
95
+ className: (0, utils_cjs_namespaceObject.cn)("focus:bg-neutral-100 focus:text-neutral-900 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 dark:focus:bg-neutral-800 dark:focus:text-neutral-50", className),
96
96
  checked: checked,
97
97
  ...props,
98
98
  children: [
@@ -117,7 +117,7 @@ function DropdownMenuRadioGroup({ ...props }) {
117
117
  function DropdownMenuRadioItem({ className, children, ...props }) {
118
118
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(react_dropdown_menu_namespaceObject.RadioItem, {
119
119
  "data-slot": "dropdown-menu-radio-item",
120
- className: (0, utils_cjs_namespaceObject.cn)("focus:bg-neutral-100 focus:text-neutral-900 relative flex cursor-default items-center gap-2 rounded-xs 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 dark:focus:bg-neutral-800 dark:focus:text-neutral-50", className),
120
+ className: (0, utils_cjs_namespaceObject.cn)("focus:bg-neutral-100 focus:text-neutral-900 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 dark:focus:bg-neutral-800 dark:focus:text-neutral-50", className),
121
121
  ...props,
122
122
  children: [
123
123
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
@@ -136,7 +136,7 @@ function DropdownMenuLabel({ className, inset, ...props }) {
136
136
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_dropdown_menu_namespaceObject.Label, {
137
137
  "data-slot": "dropdown-menu-label",
138
138
  "data-inset": inset,
139
- className: (0, utils_cjs_namespaceObject.cn)("px-2 py-1.5 text-sm font-medium data-inset:pl-8", className),
139
+ className: (0, utils_cjs_namespaceObject.cn)("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className),
140
140
  ...props
141
141
  });
142
142
  }
@@ -164,7 +164,7 @@ function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
164
164
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(react_dropdown_menu_namespaceObject.SubTrigger, {
165
165
  "data-slot": "dropdown-menu-sub-trigger",
166
166
  "data-inset": inset,
167
- className: (0, utils_cjs_namespaceObject.cn)("focus:bg-neutral-100 focus:text-neutral-900 data-[state=open]:bg-neutral-100 data-[state=open]:text-neutral-900 flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none data-inset:pl-8 dark:focus:bg-neutral-800 dark:focus:text-neutral-50 dark:data-[state=open]:bg-neutral-800 dark:data-[state=open]:text-neutral-50", className),
167
+ className: (0, utils_cjs_namespaceObject.cn)("focus:bg-neutral-100 focus:text-neutral-900 data-[state=open]:bg-neutral-100 data-[state=open]:text-neutral-900 flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 dark:focus:bg-neutral-800 dark:focus:text-neutral-50 dark:data-[state=open]:bg-neutral-800 dark:data-[state=open]:text-neutral-50", className),
168
168
  ...props,
169
169
  children: [
170
170
  children,
@@ -177,7 +177,7 @@ function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
177
177
  function DropdownMenuSubContent({ className, ...props }) {
178
178
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_dropdown_menu_namespaceObject.SubContent, {
179
179
  "data-slot": "dropdown-menu-sub-content",
180
- className: (0, utils_cjs_namespaceObject.cn)("bg-white text-neutral-950 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] overflow-hidden rounded-md border border-neutral-200 p-1 shadow-lg dark:bg-neutral-950 dark:text-neutral-50 dark:border-neutral-800", className),
180
+ className: (0, utils_cjs_namespaceObject.cn)("bg-white text-neutral-950 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 border-neutral-200 p-1 shadow-lg dark:bg-neutral-950 dark:text-neutral-50 dark:border-neutral-800", className),
181
181
  ...props
182
182
  });
183
183
  }
@@ -1 +1 @@
1
- {"version":3,"file":"components\\ui\\dropdown-menu.cjs","sources":["webpack://@arolariu/components/./src/components/ui/dropdown-menu.tsx"],"sourcesContent":["\r\n\r\nimport * as React from \"react\";\r\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\r\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\r\nimport { cn } from \"./../../lib/utils\";\r\n\r\nfunction DropdownMenu({\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\r\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\r\n}\r\n\r\nfunction DropdownMenuPortal({\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\r\n return (\r\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\r\n );\r\n}\r\n\r\nfunction DropdownMenuTrigger({\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\r\n return (\r\n <DropdownMenuPrimitive.Trigger\r\n data-slot=\"dropdown-menu-trigger\"\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction DropdownMenuContent({\r\n className,\r\n sideOffset = 4,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\r\n return (\r\n <DropdownMenuPrimitive.Portal>\r\n <DropdownMenuPrimitive.Content\r\n data-slot=\"dropdown-menu-content\"\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"bg-white text-neutral-950 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] overflow-hidden rounded-md border border-neutral-200 p-1 shadow-md dark:bg-neutral-950 dark:text-neutral-50 dark:border-neutral-800\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </DropdownMenuPrimitive.Portal>\r\n );\r\n}\r\n\r\nfunction DropdownMenuGroup({\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\r\n return (\r\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\r\n );\r\n}\r\n\r\nfunction DropdownMenuItem({\r\n className,\r\n inset,\r\n variant = \"default\",\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\r\n inset?: boolean;\r\n variant?: \"default\" | \"destructive\";\r\n}) {\r\n return (\r\n <DropdownMenuPrimitive.Item\r\n data-slot=\"dropdown-menu-item\"\r\n data-inset={inset}\r\n data-variant={variant}\r\n className={cn(\r\n \"focus:bg-neutral-100 focus:text-neutral-900 data-[variant=destructive]:text-neutral-50 data-[variant=destructive]:focus:bg-red-500/10 dark:data-[variant=destructive]:focus:bg-red-500/40 data-[variant=destructive]:focus:text-neutral-50 [svg]:*:data-[variant=destructive]:text-destructive-foreground! [&_svg:not([class*='text-'])]:text-neutral-500 relative flex cursor-default items-center gap-2 rounded-xs 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 dark:focus:bg-neutral-800 dark:focus:text-neutral-50 dark:data-[variant=destructive]:text-neutral-50 dark:data-[variant=destructive]:focus:bg-red-900/10 dark:dark:data-[variant=destructive]:focus:bg-red-900/40 dark:data-[variant=destructive]:focus:text-neutral-50 dark:[&_svg:not([class*='text-'])]:text-neutral-400\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction DropdownMenuCheckboxItem({\r\n className,\r\n children,\r\n checked,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\r\n return (\r\n <DropdownMenuPrimitive.CheckboxItem\r\n data-slot=\"dropdown-menu-checkbox-item\"\r\n className={cn(\r\n \"focus:bg-neutral-100 focus:text-neutral-900 relative flex cursor-default items-center gap-2 rounded-xs 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 dark:focus:bg-neutral-800 dark:focus:text-neutral-50\",\r\n className\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <CheckIcon className=\"size-4\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.CheckboxItem>\r\n );\r\n}\r\n\r\nfunction DropdownMenuRadioGroup({\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\r\n return (\r\n <DropdownMenuPrimitive.RadioGroup\r\n data-slot=\"dropdown-menu-radio-group\"\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction DropdownMenuRadioItem({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\r\n return (\r\n <DropdownMenuPrimitive.RadioItem\r\n data-slot=\"dropdown-menu-radio-item\"\r\n className={cn(\r\n \"focus:bg-neutral-100 focus:text-neutral-900 relative flex cursor-default items-center gap-2 rounded-xs 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 dark:focus:bg-neutral-800 dark:focus:text-neutral-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <CircleIcon className=\"size-2 fill-current\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.RadioItem>\r\n );\r\n}\r\n\r\nfunction DropdownMenuLabel({\r\n className,\r\n inset,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\r\n inset?: boolean;\r\n}) {\r\n return (\r\n <DropdownMenuPrimitive.Label\r\n data-slot=\"dropdown-menu-label\"\r\n data-inset={inset}\r\n className={cn(\r\n \"px-2 py-1.5 text-sm font-medium data-inset:pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction DropdownMenuSeparator({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\r\n return (\r\n <DropdownMenuPrimitive.Separator\r\n data-slot=\"dropdown-menu-separator\"\r\n className={cn(\r\n \"bg-neutral-200 -mx-1 my-1 h-px dark:bg-neutral-800\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction DropdownMenuShortcut({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) {\r\n return (\r\n <span\r\n data-slot=\"dropdown-menu-shortcut\"\r\n className={cn(\r\n \"text-neutral-500 ml-auto text-xs tracking-widest dark:text-neutral-400\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction DropdownMenuSub({\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\r\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\r\n}\r\n\r\nfunction DropdownMenuSubTrigger({\r\n className,\r\n inset,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\r\n inset?: boolean;\r\n}) {\r\n return (\r\n <DropdownMenuPrimitive.SubTrigger\r\n data-slot=\"dropdown-menu-sub-trigger\"\r\n data-inset={inset}\r\n className={cn(\r\n \"focus:bg-neutral-100 focus:text-neutral-900 data-[state=open]:bg-neutral-100 data-[state=open]:text-neutral-900 flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none data-inset:pl-8 dark:focus:bg-neutral-800 dark:focus:text-neutral-50 dark:data-[state=open]:bg-neutral-800 dark:data-[state=open]:text-neutral-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRightIcon className=\"ml-auto size-4\" />\r\n </DropdownMenuPrimitive.SubTrigger>\r\n );\r\n}\r\n\r\nfunction DropdownMenuSubContent({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\r\n return (\r\n <DropdownMenuPrimitive.SubContent\r\n data-slot=\"dropdown-menu-sub-content\"\r\n className={cn(\r\n \"bg-white text-neutral-950 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] overflow-hidden rounded-md border border-neutral-200 p-1 shadow-lg dark:bg-neutral-950 dark:text-neutral-50 dark:border-neutral-800\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport {\r\n DropdownMenu,\r\n DropdownMenuPortal,\r\n DropdownMenuTrigger,\r\n DropdownMenuContent,\r\n DropdownMenuGroup,\r\n DropdownMenuLabel,\r\n DropdownMenuItem,\r\n DropdownMenuCheckboxItem,\r\n DropdownMenuRadioGroup,\r\n DropdownMenuRadioItem,\r\n DropdownMenuSeparator,\r\n DropdownMenuShortcut,\r\n DropdownMenuSub,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuSubContent,\r\n};\r\n"],"names":["DropdownMenu","props","DropdownMenuPrimitive","DropdownMenuPortal","DropdownMenuTrigger","DropdownMenuContent","className","sideOffset","cn","DropdownMenuGroup","DropdownMenuItem","inset","variant","DropdownMenuCheckboxItem","children","checked","CheckIcon","DropdownMenuRadioGroup","DropdownMenuRadioItem","CircleIcon","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","ChevronRightIcon","DropdownMenuSubContent"],"mappings":"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"}
1
+ {"version":3,"file":"components\\ui\\dropdown-menu.cjs","sources":["webpack://@arolariu/components/./src/components/ui/dropdown-menu.tsx"],"sourcesContent":["\n\nimport * 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({\n ...props\n}: 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 (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\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-white text-neutral-950 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 border-neutral-200 p-1 shadow-md dark:bg-neutral-950 dark:text-neutral-50 dark:border-neutral-800\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n );\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-neutral-100 focus:text-neutral-900 data-[variant=destructive]:text-red-500 data-[variant=destructive]:focus:bg-red-500/10 dark:data-[variant=destructive]:focus:bg-red-500/20 data-[variant=destructive]:focus:text-red-500 data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-neutral-500 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 dark:focus:bg-neutral-800 dark:focus:text-neutral-50 dark:data-[variant=destructive]:text-red-900 dark:data-[variant=destructive]:focus:bg-red-900/10 dark:dark:data-[variant=destructive]:focus:bg-red-900/20 dark:data-[variant=destructive]:focus:text-red-900 dark:[&_svg:not([class*='text-'])]:text-neutral-400\",\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-neutral-100 focus:text-neutral-900 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 dark:focus:bg-neutral-800 dark:focus:text-neutral-50\",\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 (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\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-neutral-100 focus:text-neutral-900 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 dark:focus:bg-neutral-800 dark:focus:text-neutral-50\",\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(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\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(\n \"bg-neutral-200 -mx-1 my-1 h-px dark:bg-neutral-800\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-neutral-500 ml-auto text-xs tracking-widest dark:text-neutral-400\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: 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-neutral-100 focus:text-neutral-900 data-[state=open]:bg-neutral-100 data-[state=open]:text-neutral-900 flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 dark:focus:bg-neutral-800 dark:focus:text-neutral-50 dark:data-[state=open]:bg-neutral-800 dark:data-[state=open]:text-neutral-50\",\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-white text-neutral-950 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 border-neutral-200 p-1 shadow-lg dark:bg-neutral-950 dark:text-neutral-50 dark:border-neutral-800\",\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":["DropdownMenu","props","DropdownMenuPrimitive","DropdownMenuPortal","DropdownMenuTrigger","DropdownMenuContent","className","sideOffset","cn","DropdownMenuGroup","DropdownMenuItem","inset","variant","DropdownMenuCheckboxItem","children","checked","CheckIcon","DropdownMenuRadioGroup","DropdownMenuRadioItem","CircleIcon","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","ChevronRightIcon","DropdownMenuSubContent"],"mappings":"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"}
@@ -0,0 +1,259 @@
1
+ "use client";
2
+ "use strict";
3
+ var __webpack_require__ = {};
4
+ (()=>{
5
+ __webpack_require__.d = (exports1, definition)=>{
6
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ get: definition[key]
9
+ });
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.r = (exports1)=>{
17
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
18
+ value: 'Module'
19
+ });
20
+ Object.defineProperty(exports1, '__esModule', {
21
+ value: true
22
+ });
23
+ };
24
+ })();
25
+ var __webpack_exports__ = {};
26
+ __webpack_require__.r(__webpack_exports__);
27
+ __webpack_require__.d(__webpack_exports__, {
28
+ FireworksBackground: ()=>FireworksBackground
29
+ });
30
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
31
+ const external_react_namespaceObject = require("react");
32
+ const utils_cjs_namespaceObject = require("../../lib/utils.cjs");
33
+ const rand = (min, max)=>Math.random() * (max - min) + min;
34
+ const randInt = (min, max)=>Math.floor(Math.random() * (max - min) + min);
35
+ const randColor = ()=>`hsl(${randInt(0, 360)}, 100%, 50%)`;
36
+ const createParticle = (x, y, color, speed, direction, gravity, friction, size)=>{
37
+ const vx = Math.cos(direction) * speed;
38
+ const vy = Math.sin(direction) * speed;
39
+ const alpha = 1;
40
+ const decay = rand(0.005, 0.02);
41
+ return {
42
+ x,
43
+ y,
44
+ color,
45
+ speed,
46
+ direction,
47
+ vx,
48
+ vy,
49
+ gravity,
50
+ friction,
51
+ alpha,
52
+ decay,
53
+ size,
54
+ update () {
55
+ this.vx *= this.friction;
56
+ this.vy *= this.friction;
57
+ this.vy += this.gravity;
58
+ this.x += this.vx;
59
+ this.y += this.vy;
60
+ this.alpha -= this.decay;
61
+ },
62
+ draw (ctx) {
63
+ ctx.save();
64
+ ctx.globalAlpha = this.alpha;
65
+ ctx.beginPath();
66
+ ctx.arc(this.x, this.y, this.size, 0, 2 * Math.PI);
67
+ ctx.fillStyle = this.color;
68
+ ctx.fill();
69
+ ctx.restore();
70
+ },
71
+ isAlive () {
72
+ return this.alpha > 0;
73
+ }
74
+ };
75
+ };
76
+ const createFirework = (x, y, targetY, color, speed, size, particleSpeed, particleSize, onExplode)=>{
77
+ const angle = -Math.PI / 2 + rand(-0.3, 0.3);
78
+ const vx = Math.cos(angle) * speed;
79
+ const vy = Math.sin(angle) * speed;
80
+ const trail = [];
81
+ const trailLength = randInt(10, 25);
82
+ return {
83
+ x,
84
+ y,
85
+ targetY,
86
+ color,
87
+ speed,
88
+ size,
89
+ angle,
90
+ vx,
91
+ vy,
92
+ trail,
93
+ trailLength,
94
+ exploded: false,
95
+ update () {
96
+ this.trail.push({
97
+ x: this.x,
98
+ y: this.y
99
+ });
100
+ if (this.trail.length > this.trailLength) this.trail.shift();
101
+ this.x += this.vx;
102
+ this.y += this.vy;
103
+ this.vy += 0.02;
104
+ if (this.vy >= 0 || this.y <= this.targetY) {
105
+ this.explode();
106
+ return false;
107
+ }
108
+ return true;
109
+ },
110
+ explode () {
111
+ const numParticles = randInt(50, 150);
112
+ const particles = [];
113
+ for(let i = 0; i < numParticles; i++){
114
+ const particleAngle = rand(0, 2 * Math.PI);
115
+ const localParticleSpeed = getValueByRange(particleSpeed);
116
+ const localParticleSize = getValueByRange(particleSize);
117
+ particles.push(createParticle(this.x, this.y, this.color, localParticleSpeed, particleAngle, 0.05, 0.98, localParticleSize));
118
+ }
119
+ onExplode(particles);
120
+ },
121
+ draw (ctx) {
122
+ ctx.save();
123
+ ctx.beginPath();
124
+ if (this.trail.length > 1) {
125
+ ctx.moveTo(this.trail[0].x, this.trail[0].y);
126
+ for (const point of this.trail)ctx.lineTo(point.x, point.y);
127
+ } else {
128
+ ctx.moveTo(this.x, this.y);
129
+ ctx.lineTo(this.x, this.y);
130
+ }
131
+ ctx.strokeStyle = this.color;
132
+ ctx.lineWidth = this.size;
133
+ ctx.lineCap = "round";
134
+ ctx.stroke();
135
+ ctx.restore();
136
+ }
137
+ };
138
+ };
139
+ const getValueByRange = (range)=>{
140
+ if ("number" == typeof range) return range;
141
+ return rand(range.min, range.max);
142
+ };
143
+ const getColor = (color)=>{
144
+ if (Array.isArray(color)) return color[randInt(0, color.length)];
145
+ return color ?? randColor();
146
+ };
147
+ const FireworksBackground = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ className, canvasProps, population = 1, color, fireworkSpeed = {
148
+ min: 4,
149
+ max: 8
150
+ }, fireworkSize = {
151
+ min: 2,
152
+ max: 5
153
+ }, particleSpeed = {
154
+ min: 2,
155
+ max: 7
156
+ }, particleSize = {
157
+ min: 1,
158
+ max: 5
159
+ }, ...props }, ref)=>{
160
+ const canvasRef = external_react_namespaceObject.useRef(null);
161
+ const containerRef = external_react_namespaceObject.useRef(null);
162
+ external_react_namespaceObject.useImperativeHandle(ref, ()=>containerRef.current);
163
+ external_react_namespaceObject.useEffect(()=>{
164
+ const canvas = canvasRef.current;
165
+ const container = containerRef.current;
166
+ if (!canvas || !container) return;
167
+ const ctx = canvas.getContext("2d");
168
+ if (!ctx) return;
169
+ let maxX = window.innerWidth;
170
+ let ratio = container.offsetHeight / container.offsetWidth;
171
+ let maxY = maxX * ratio;
172
+ canvas.width = maxX;
173
+ canvas.height = maxY;
174
+ const setCanvasSize = ()=>{
175
+ maxX = window.innerWidth;
176
+ ratio = container.offsetHeight / container.offsetWidth;
177
+ maxY = maxX * ratio;
178
+ canvas.width = maxX;
179
+ canvas.height = maxY;
180
+ };
181
+ window.addEventListener("resize", setCanvasSize);
182
+ const explosions = [];
183
+ const fireworks = [];
184
+ const handleExplosion = (particles)=>{
185
+ explosions.push(...particles);
186
+ };
187
+ const launchFirework = ()=>{
188
+ const x = rand(0.1 * maxX, 0.9 * maxX);
189
+ const y = maxY;
190
+ const targetY = rand(0.1 * maxY, 0.4 * maxY);
191
+ const fireworkColor = getColor(color);
192
+ const speed = getValueByRange(fireworkSpeed);
193
+ const size = getValueByRange(fireworkSize);
194
+ fireworks.push(createFirework(x, y, targetY, fireworkColor, speed, size, particleSpeed, particleSize, handleExplosion));
195
+ const timeout = rand(300, 800) / population;
196
+ setTimeout(launchFirework, timeout);
197
+ };
198
+ launchFirework();
199
+ let animationFrameId;
200
+ const animate = ()=>{
201
+ ctx.clearRect(0, 0, maxX, maxY);
202
+ for(let i = fireworks.length - 1; i >= 0; i--){
203
+ const firework = fireworks[i];
204
+ if (firework.update()) firework.draw(ctx);
205
+ else fireworks.splice(i, 1);
206
+ }
207
+ for(let i = explosions.length - 1; i >= 0; i--){
208
+ const particle = explosions[i];
209
+ particle.update();
210
+ if (particle.isAlive()) particle.draw(ctx);
211
+ else explosions.splice(i, 1);
212
+ }
213
+ animationFrameId = requestAnimationFrame(animate);
214
+ };
215
+ animate();
216
+ const handleClick = (event)=>{
217
+ const x = event.clientX;
218
+ const y = maxY;
219
+ const targetY = event.clientY;
220
+ const fireworkColor = getColor(color);
221
+ const speed = getValueByRange(fireworkSpeed);
222
+ const size = getValueByRange(fireworkSize);
223
+ fireworks.push(createFirework(x, y, targetY, fireworkColor, speed, size, particleSpeed, particleSize, handleExplosion));
224
+ };
225
+ container.addEventListener("click", handleClick);
226
+ return ()=>{
227
+ window.removeEventListener("resize", setCanvasSize);
228
+ container.removeEventListener("click", handleClick);
229
+ cancelAnimationFrame(animationFrameId);
230
+ };
231
+ }, [
232
+ population,
233
+ color,
234
+ fireworkSpeed,
235
+ fireworkSize,
236
+ particleSpeed,
237
+ particleSize
238
+ ]);
239
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
240
+ ref: containerRef,
241
+ className: (0, utils_cjs_namespaceObject.cn)("relative size-full overflow-hidden", className),
242
+ ...props,
243
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("canvas", {
244
+ ...canvasProps,
245
+ ref: canvasRef,
246
+ className: (0, utils_cjs_namespaceObject.cn)("absolute inset-0 size-full", canvasProps?.className)
247
+ })
248
+ });
249
+ });
250
+ FireworksBackground.displayName = "FireworksBackground";
251
+ exports.FireworksBackground = __webpack_exports__.FireworksBackground;
252
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
253
+ "FireworksBackground"
254
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
255
+ Object.defineProperty(exports, '__esModule', {
256
+ value: true
257
+ });
258
+
259
+ //# sourceMappingURL=fireworks-background.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components\\ui\\fireworks-background.cjs","sources":["webpack://@arolariu/components/./src/components/ui/fireworks-background.tsx"],"sourcesContent":["\n\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst rand = (min: number, max: number): number =>\n Math.random() * (max - min) + min;\nconst randInt = (min: number, max: number): number =>\n Math.floor(Math.random() * (max - min) + min);\nconst randColor = (): string => `hsl(${randInt(0, 360)}, 100%, 50%)`;\n\ninterface ParticleType {\n x: number;\n y: number;\n color: string;\n speed: number;\n direction: number;\n vx: number;\n vy: number;\n gravity: number;\n friction: number;\n alpha: number;\n decay: number;\n size: number;\n update: () => void;\n draw: (ctx: CanvasRenderingContext2D) => void;\n isAlive: () => boolean;\n}\n\nconst createParticle = (\n x: number,\n y: number,\n color: string,\n speed: number,\n direction: number,\n gravity: number,\n friction: number,\n size: number\n): ParticleType => {\n const vx = Math.cos(direction) * speed;\n const vy = Math.sin(direction) * speed;\n const alpha = 1;\n const decay = rand(0.005, 0.02);\n\n return {\n x,\n y,\n color,\n speed,\n direction,\n vx,\n vy,\n gravity,\n friction,\n alpha,\n decay,\n size,\n update() {\n this.vx *= this.friction;\n this.vy *= this.friction;\n this.vy += this.gravity;\n this.x += this.vx;\n this.y += this.vy;\n this.alpha -= this.decay;\n },\n draw(ctx: CanvasRenderingContext2D) {\n ctx.save();\n ctx.globalAlpha = this.alpha;\n ctx.beginPath();\n ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);\n ctx.fillStyle = this.color;\n ctx.fill();\n ctx.restore();\n },\n isAlive() {\n return this.alpha > 0;\n },\n };\n};\n\ninterface FireworkType {\n x: number;\n y: number;\n targetY: number;\n color: string;\n speed: number;\n size: number;\n angle: number;\n vx: number;\n vy: number;\n trail: { x: number; y: number }[];\n trailLength: number;\n exploded: boolean;\n update: () => boolean;\n explode: () => void;\n draw: (ctx: CanvasRenderingContext2D) => void;\n}\n\nconst createFirework = (\n x: number,\n y: number,\n targetY: number,\n color: string,\n speed: number,\n size: number,\n particleSpeed: { min: number; max: number } | number,\n particleSize: { min: number; max: number } | number,\n onExplode: (particles: ParticleType[]) => void\n): FireworkType => {\n const angle = -Math.PI / 2 + rand(-0.3, 0.3);\n const vx = Math.cos(angle) * speed;\n const vy = Math.sin(angle) * speed;\n const trail: { x: number; y: number }[] = [];\n const trailLength = randInt(10, 25);\n\n return {\n x,\n y,\n targetY,\n color,\n speed,\n size,\n angle,\n vx,\n vy,\n trail,\n trailLength,\n exploded: false,\n update() {\n this.trail.push({ x: this.x, y: this.y });\n if (this.trail.length > this.trailLength) {\n this.trail.shift();\n }\n this.x += this.vx;\n this.y += this.vy;\n this.vy += 0.02;\n if (this.vy >= 0 || this.y <= this.targetY) {\n this.explode();\n return false;\n }\n return true;\n },\n explode() {\n const numParticles = randInt(50, 150);\n const particles: ParticleType[] = [];\n for (let i = 0; i < numParticles; i++) {\n const particleAngle = rand(0, Math.PI * 2);\n const localParticleSpeed = getValueByRange(particleSpeed);\n const localParticleSize = getValueByRange(particleSize);\n particles.push(\n createParticle(\n this.x,\n this.y,\n this.color,\n localParticleSpeed,\n particleAngle,\n 0.05,\n 0.98,\n localParticleSize\n )\n );\n }\n onExplode(particles);\n },\n draw(ctx: CanvasRenderingContext2D) {\n ctx.save();\n ctx.beginPath();\n if (this.trail.length > 1) {\n ctx.moveTo(this.trail[0].x, this.trail[0].y);\n for (const point of this.trail) {\n ctx.lineTo(point.x, point.y);\n }\n } else {\n ctx.moveTo(this.x, this.y);\n ctx.lineTo(this.x, this.y);\n }\n ctx.strokeStyle = this.color;\n ctx.lineWidth = this.size;\n ctx.lineCap = \"round\";\n ctx.stroke();\n ctx.restore();\n },\n };\n};\n\nconst getValueByRange = (\n range: { min: number; max: number } | number\n): number => {\n if (typeof range === \"number\") {\n return range;\n }\n return rand(range.min, range.max);\n};\n\nconst getColor = (color: string | string[] | undefined): string => {\n if (Array.isArray(color)) {\n return color[randInt(0, color.length)];\n }\n return color ?? randColor();\n};\n\ninterface FireworksBackgroundProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\"> {\n canvasProps?: React.HTMLAttributes<HTMLCanvasElement>;\n population?: number;\n color?: string | string[];\n fireworkSpeed?: { min: number; max: number } | number;\n fireworkSize?: { min: number; max: number } | number;\n particleSpeed?: { min: number; max: number } | number;\n particleSize?: { min: number; max: number } | number;\n}\n\nconst FireworksBackground = React.forwardRef<\n HTMLDivElement,\n FireworksBackgroundProps\n>(\n (\n {\n className,\n canvasProps,\n population = 1,\n color,\n fireworkSpeed = { min: 4, max: 8 },\n fireworkSize = { min: 2, max: 5 },\n particleSpeed = { min: 2, max: 7 },\n particleSize = { min: 1, max: 5 },\n ...props\n },\n ref\n ) => {\n const canvasRef = React.useRef<HTMLCanvasElement>(null);\n const containerRef = React.useRef<HTMLDivElement>(null);\n React.useImperativeHandle(\n ref,\n () => containerRef.current as HTMLDivElement\n );\n\n React.useEffect(() => {\n const canvas = canvasRef.current;\n const container = containerRef.current;\n if (!canvas || !container) return;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n\n let maxX = window.innerWidth;\n let ratio = container.offsetHeight / container.offsetWidth;\n let maxY = maxX * ratio;\n canvas.width = maxX;\n canvas.height = maxY;\n\n const setCanvasSize = () => {\n maxX = window.innerWidth;\n ratio = container.offsetHeight / container.offsetWidth;\n maxY = maxX * ratio;\n canvas.width = maxX;\n canvas.height = maxY;\n };\n window.addEventListener(\"resize\", setCanvasSize);\n\n const explosions: ParticleType[] = [];\n const fireworks: FireworkType[] = [];\n\n const handleExplosion = (particles: ParticleType[]) => {\n explosions.push(...particles);\n };\n\n const launchFirework = () => {\n const x = rand(maxX * 0.1, maxX * 0.9);\n const y = maxY;\n const targetY = rand(maxY * 0.1, maxY * 0.4);\n const fireworkColor = getColor(color);\n const speed = getValueByRange(fireworkSpeed);\n const size = getValueByRange(fireworkSize);\n fireworks.push(\n createFirework(\n x,\n y,\n targetY,\n fireworkColor,\n speed,\n size,\n particleSpeed,\n particleSize,\n handleExplosion\n )\n );\n const timeout = rand(300, 800) / population;\n setTimeout(launchFirework, timeout);\n };\n\n launchFirework();\n\n let animationFrameId: number;\n const animate = () => {\n ctx.clearRect(0, 0, maxX, maxY);\n\n for (let i = fireworks.length - 1; i >= 0; i--) {\n const firework = fireworks[i];\n if (!firework.update()) {\n fireworks.splice(i, 1);\n } else {\n firework.draw(ctx);\n }\n }\n\n for (let i = explosions.length - 1; i >= 0; i--) {\n const particle = explosions[i];\n particle.update();\n if (particle.isAlive()) {\n particle.draw(ctx);\n } else {\n explosions.splice(i, 1);\n }\n }\n\n animationFrameId = requestAnimationFrame(animate);\n };\n\n animate();\n\n const handleClick = (event: MouseEvent) => {\n const x = event.clientX;\n const y = maxY;\n const targetY = event.clientY;\n const fireworkColor = getColor(color);\n const speed = getValueByRange(fireworkSpeed);\n const size = getValueByRange(fireworkSize);\n fireworks.push(\n createFirework(\n x,\n y,\n targetY,\n fireworkColor,\n speed,\n size,\n particleSpeed,\n particleSize,\n handleExplosion\n )\n );\n };\n\n container.addEventListener(\"click\", handleClick);\n\n return () => {\n window.removeEventListener(\"resize\", setCanvasSize);\n container.removeEventListener(\"click\", handleClick);\n cancelAnimationFrame(animationFrameId);\n };\n }, [\n population,\n color,\n fireworkSpeed,\n fireworkSize,\n particleSpeed,\n particleSize,\n ]);\n\n return (\n <div\n ref={containerRef}\n className={cn(\"relative size-full overflow-hidden\", className)}\n {...props}\n >\n <canvas\n {...canvasProps}\n ref={canvasRef}\n className={cn(\"absolute inset-0 size-full\", canvasProps?.className)}\n />\n </div>\n );\n }\n);\n\nFireworksBackground.displayName = \"FireworksBackground\";\n\nexport { FireworksBackground, type FireworksBackgroundProps };\n"],"names":["rand","min","max","Math","randInt","randColor","createParticle","x","y","color","speed","direction","gravity","friction","size","vx","vy","alpha","decay","ctx","createFirework","targetY","particleSpeed","particleSize","onExplode","angle","trail","trailLength","numParticles","particles","i","particleAngle","localParticleSpeed","getValueByRange","localParticleSize","point","range","getColor","Array","FireworksBackground","React","className","canvasProps","population","fireworkSpeed","fireworkSize","props","ref","canvasRef","containerRef","canvas","container","maxX","window","ratio","maxY","setCanvasSize","explosions","fireworks","handleExplosion","launchFirework","fireworkColor","timeout","setTimeout","animationFrameId","animate","firework","particle","requestAnimationFrame","handleClick","event","cancelAnimationFrame","cn"],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ "use client";
2
+ "use strict";
3
+ var __webpack_require__ = {};
4
+ (()=>{
5
+ __webpack_require__.d = (exports1, definition)=>{
6
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ get: definition[key]
9
+ });
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.r = (exports1)=>{
17
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
18
+ value: 'Module'
19
+ });
20
+ Object.defineProperty(exports1, '__esModule', {
21
+ value: true
22
+ });
23
+ };
24
+ })();
25
+ var __webpack_exports__ = {};
26
+ __webpack_require__.r(__webpack_exports__);
27
+ __webpack_require__.d(__webpack_exports__, {
28
+ FlipButton: ()=>FlipButton
29
+ });
30
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
31
+ const external_react_namespaceObject = require("react");
32
+ const react_namespaceObject = require("motion/react");
33
+ const utils_cjs_namespaceObject = require("../../lib/utils.cjs");
34
+ const defaultSpanClassName = "absolute inset-0 flex items-center justify-center rounded-lg";
35
+ const FlipButton = /*#__PURE__*/ external_react_namespaceObject.forwardRef(({ frontText, backText, transition = {
36
+ type: "spring",
37
+ stiffness: 280,
38
+ damping: 20
39
+ }, className, frontClassName, backClassName, from = "top", ...props }, ref)=>{
40
+ const isVertical = "top" === from || "bottom" === from;
41
+ const rotateAxis = isVertical ? "rotateX" : "rotateY";
42
+ const frontOffset = "top" === from || "left" === from ? "50%" : "-50%";
43
+ const backOffset = "top" === from || "left" === from ? "-50%" : "50%";
44
+ const buildVariant = (opacity, rotation, offset = null)=>({
45
+ opacity,
46
+ [rotateAxis]: rotation,
47
+ ...isVertical && null !== offset ? {
48
+ y: offset
49
+ } : {},
50
+ ...!isVertical && null !== offset ? {
51
+ x: offset
52
+ } : {}
53
+ });
54
+ const frontVariants = {
55
+ initial: buildVariant(1, 0, "0%"),
56
+ hover: buildVariant(0, 90, frontOffset)
57
+ };
58
+ const backVariants = {
59
+ initial: buildVariant(0, 90, backOffset),
60
+ hover: buildVariant(1, 0, "0%")
61
+ };
62
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(react_namespaceObject.motion.button, {
63
+ ref: ref,
64
+ initial: "initial",
65
+ whileHover: "hover",
66
+ whileTap: {
67
+ scale: 0.95
68
+ },
69
+ className: (0, utils_cjs_namespaceObject.cn)("relative inline-block h-10 px-4 py-2 text-sm font-medium cursor-pointer perspective-[1000px] focus:outline-none", className),
70
+ ...props,
71
+ children: [
72
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_namespaceObject.motion.span, {
73
+ variants: frontVariants,
74
+ transition: transition,
75
+ className: (0, utils_cjs_namespaceObject.cn)(defaultSpanClassName, "bg-muted text-black dark:text-white", frontClassName),
76
+ children: frontText
77
+ }),
78
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_namespaceObject.motion.span, {
79
+ variants: backVariants,
80
+ transition: transition,
81
+ className: (0, utils_cjs_namespaceObject.cn)(defaultSpanClassName, "bg-primary text-primary-foreground", backClassName),
82
+ children: backText
83
+ }),
84
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
85
+ className: "invisible",
86
+ children: frontText
87
+ })
88
+ ]
89
+ });
90
+ });
91
+ FlipButton.displayName = "FlipButton";
92
+ exports.FlipButton = __webpack_exports__.FlipButton;
93
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
94
+ "FlipButton"
95
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
96
+ Object.defineProperty(exports, '__esModule', {
97
+ value: true
98
+ });
99
+
100
+ //# sourceMappingURL=flip-button.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components\\ui\\flip-button.cjs","sources":["webpack://@arolariu/components/./src/components/ui/flip-button.tsx"],"sourcesContent":["\n\nimport * as React from \"react\";\nimport {\n type HTMLMotionProps,\n type Transition,\n type Variant,\n motion,\n} from \"motion/react\";\n\nimport { cn } from \"@/lib/utils\";\n\ntype FlipDirection = \"top\" | \"bottom\" | \"left\" | \"righ\";\n\ninterface FlipButtonProps extends HTMLMotionProps<\"button\"> {\n frontText: string;\n backText: string;\n transition?: Transition;\n frontClassName?: string;\n backClassName?: string;\n from?: FlipDirection;\n}\n\nconst defaultSpanClassName =\n \"absolute inset-0 flex items-center justify-center rounded-lg\";\n\nconst FlipButton = React.forwardRef<HTMLButtonElement, FlipButtonProps>(\n (\n {\n frontText,\n backText,\n transition = { type: \"spring\", stiffness: 280, damping: 20 },\n className,\n frontClassName,\n backClassName,\n from = \"top\",\n ...props\n },\n ref\n ) => {\n const isVertical = from === \"top\" || from === \"bottom\";\n const rotateAxis = isVertical ? \"rotateX\" : \"rotateY\";\n\n const frontOffset = from === \"top\" || from === \"left\" ? \"50%\" : \"-50%\";\n const backOffset = from === \"top\" || from === \"left\" ? \"-50%\" : \"50%\";\n\n const buildVariant = (\n opacity: number,\n rotation: number,\n offset: string | null = null\n ): Variant => ({\n opacity,\n [rotateAxis]: rotation,\n ...(isVertical && offset !== null ? { y: offset } : {}),\n ...(!isVertical && offset !== null ? { x: offset } : {}),\n });\n\n const frontVariants = {\n initial: buildVariant(1, 0, \"0%\"),\n hover: buildVariant(0, 90, frontOffset),\n };\n\n const backVariants = {\n initial: buildVariant(0, 90, backOffset),\n hover: buildVariant(1, 0, \"0%\"),\n };\n\n return (\n <motion.button\n ref={ref}\n initial=\"initial\"\n whileHover=\"hover\"\n whileTap={{ scale: 0.95 }}\n className={cn(\n \"relative inline-block h-10 px-4 py-2 text-sm font-medium cursor-pointer perspective-[1000px] focus:outline-none\",\n className\n )}\n {...props}\n >\n <motion.span\n variants={frontVariants}\n transition={transition}\n className={cn(\n defaultSpanClassName,\n \"bg-muted text-black dark:text-white\",\n frontClassName\n )}\n >\n {frontText}\n </motion.span>\n <motion.span\n variants={backVariants}\n transition={transition}\n className={cn(\n defaultSpanClassName,\n \"bg-primary text-primary-foreground\",\n backClassName\n )}\n >\n {backText}\n </motion.span>\n <span className=\"invisible\">{frontText}</span>\n </motion.button>\n );\n }\n);\n\nFlipButton.displayName = \"FlipButton\";\n\nexport { FlipButton, type FlipButtonProps, type FlipDirection };\n"],"names":["defaultSpanClassName","FlipButton","React","frontText","backText","transition","className","frontClassName","backClassName","from","props","ref","isVertical","rotateAxis","frontOffset","backOffset","buildVariant","opacity","rotation","offset","frontVariants","backVariants","motion","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAMA,uBACJ;AAEF,MAAMC,aAAa,WAAbA,GAAaC,+BAAAA,UAAgB,CACjC,CACE,EACEC,SAAS,EACTC,QAAQ,EACRC,aAAa;IAAE,MAAM;IAAU,WAAW;IAAK,SAAS;AAAG,CAAC,EAC5DC,SAAS,EACTC,cAAc,EACdC,aAAa,EACbC,OAAO,KAAK,EACZ,GAAGC,OACJ,EACDC;IAEA,MAAMC,aAAaH,UAAAA,QAAkBA,aAAAA;IACrC,MAAMI,aAAaD,aAAa,YAAY;IAE5C,MAAME,cAAcL,UAAAA,QAAkBA,WAAAA,OAAkB,QAAQ;IAChE,MAAMM,aAAaN,UAAAA,QAAkBA,WAAAA,OAAkB,SAAS;IAEhE,MAAMO,eAAe,CACnBC,SACAC,UACAC,SAAwB,IAAI,GACf;YACbF;YACA,CAACJ,WAAW,EAAEK;YACd,GAAIN,cAAcO,SAAAA,SAAkB;gBAAE,GAAGA;YAAO,IAAI,CAAC,CAAC;YACtD,GAAI,CAACP,cAAcO,SAAAA,SAAkB;gBAAE,GAAGA;YAAO,IAAI,CAAC,CAAC;QACzD;IAEA,MAAMC,gBAAgB;QACpB,SAASJ,aAAa,GAAG,GAAG;QAC5B,OAAOA,aAAa,GAAG,IAAIF;IAC7B;IAEA,MAAMO,eAAe;QACnB,SAASL,aAAa,GAAG,IAAID;QAC7B,OAAOC,aAAa,GAAG,GAAG;IAC5B;IAEA,OACE,WADF,GACE,sCAACM,sBAAAA,MAAAA,CAAAA,MAAa;QACZ,KAAKX;QACL,SAAQ;QACR,YAAW;QACX,UAAU;YAAE,OAAO;QAAK;QACxB,WAAWY,IAAAA,0BAAAA,EAAAA,EACT,mHACAjB;QAED,GAAGI,KAAK;;0BAET,qCAACY,sBAAAA,MAAAA,CAAAA,IAAW;gBACV,UAAUF;gBACV,YAAYf;gBACZ,WAAWkB,IAAAA,0BAAAA,EAAAA,EACTvB,sBACA,uCACAO;0BAGDJ;;0BAEH,qCAACmB,sBAAAA,MAAAA,CAAAA,IAAW;gBACV,UAAUD;gBACV,YAAYhB;gBACZ,WAAWkB,IAAAA,0BAAAA,EAAAA,EACTvB,sBACA,sCACAQ;0BAGDJ;;0BAEH,qCAAC;gBAAK,WAAU;0BAAaD;;;;AAGnC;AAGFF,WAAW,WAAW,GAAG"}
@@ -88,7 +88,7 @@ function FormLabel({ className, ...props }) {
88
88
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_label_cjs_namespaceObject.Label, {
89
89
  "data-slot": "form-label",
90
90
  "data-error": !!error,
91
- className: (0, utils_cjs_namespaceObject.cn)("data-[error=true]:text-neutral-50 dark:data-[error=true]:text-neutral-50", className),
91
+ className: (0, utils_cjs_namespaceObject.cn)("data-[error=true]:text-red-500 dark:data-[error=true]:text-red-900", className),
92
92
  htmlFor: formItemId,
93
93
  ...props
94
94
  });
@@ -119,7 +119,7 @@ function FormMessage({ className, ...props }) {
119
119
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("p", {
120
120
  "data-slot": "form-message",
121
121
  id: formMessageId,
122
- className: (0, utils_cjs_namespaceObject.cn)("text-neutral-50 text-sm dark:text-neutral-50", className),
122
+ className: (0, utils_cjs_namespaceObject.cn)("text-red-500 text-sm dark:text-red-900", className),
123
123
  ...props,
124
124
  children: body
125
125
  });
@@ -1 +1 @@
1
- {"version":3,"file":"components\\ui\\form.cjs","sources":["webpack://@arolariu/components/./src/components/ui/form.tsx"],"sourcesContent":["\r\n\r\nimport * as React from \"react\";\r\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport {\r\n Controller,\r\n ControllerProps,\r\n FieldPath,\r\n FieldValues,\r\n FormProvider,\r\n useFormContext,\r\n useFormState,\r\n} from \"react-hook-form\";\r\nimport { cn } from \"./../../lib/utils\";\r\nimport { Label } from \"./label\";\r\n\r\nconst Form = FormProvider;\r\n\r\ntype FormFieldContextValue<\r\n TFieldValues extends FieldValues = FieldValues,\r\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\r\n> = {\r\n name: TName;\r\n};\r\n\r\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\r\n {} as FormFieldContextValue\r\n);\r\n\r\nconst FormField = <\r\n TFieldValues extends FieldValues = FieldValues,\r\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\r\n>({\r\n ...props\r\n}: ControllerProps<TFieldValues, TName>) => {\r\n return (\r\n <FormFieldContext.Provider value={{ name: props.name }}>\r\n <Controller {...props} />\r\n </FormFieldContext.Provider>\r\n );\r\n};\r\n\r\nconst useFormField = () => {\r\n const fieldContext = React.useContext(FormFieldContext);\r\n const itemContext = React.useContext(FormItemContext);\r\n const { getFieldState } = useFormContext();\r\n const formState = useFormState({ name: fieldContext.name });\r\n const fieldState = getFieldState(fieldContext.name, formState);\r\n\r\n if (!fieldContext) {\r\n throw new Error(\"useFormField should be used within <FormField>\");\r\n }\r\n\r\n const { id } = itemContext;\r\n\r\n return {\r\n id,\r\n name: fieldContext.name,\r\n formItemId: `${id}-form-item`,\r\n formDescriptionId: `${id}-form-item-description`,\r\n formMessageId: `${id}-form-item-message`,\r\n ...fieldState,\r\n };\r\n};\r\n\r\ntype FormItemContextValue = {\r\n id: string;\r\n};\r\n\r\nconst FormItemContext = React.createContext<FormItemContextValue>(\r\n {} as FormItemContextValue\r\n);\r\n\r\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\r\n const id = React.useId();\r\n\r\n return (\r\n <FormItemContext.Provider value={{ id }}>\r\n <div\r\n data-slot=\"form-item\"\r\n className={cn(\"grid gap-2\", className)}\r\n {...props}\r\n />\r\n </FormItemContext.Provider>\r\n );\r\n}\r\n\r\nfunction FormLabel({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\r\n const { error, formItemId } = useFormField();\r\n\r\n return (\r\n <Label\r\n data-slot=\"form-label\"\r\n data-error={!!error}\r\n className={cn(\r\n \"data-[error=true]:text-neutral-50 dark:data-[error=true]:text-neutral-50\",\r\n className\r\n )}\r\n htmlFor={formItemId}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\r\n const { error, formItemId, formDescriptionId, formMessageId } =\r\n useFormField();\r\n\r\n return (\r\n <Slot\r\n data-slot=\"form-control\"\r\n id={formItemId}\r\n aria-describedby={\r\n !error\r\n ? `${formDescriptionId}`\r\n : `${formDescriptionId} ${formMessageId}`\r\n }\r\n aria-invalid={!!error}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\r\n const { formDescriptionId } = useFormField();\r\n\r\n return (\r\n <p\r\n data-slot=\"form-description\"\r\n id={formDescriptionId}\r\n className={cn(\r\n \"text-neutral-500 text-sm dark:text-neutral-400\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\r\n const { error, formMessageId } = useFormField();\r\n const body = error ? String(error?.message ?? \"\") : props.children;\r\n\r\n if (!body) {\r\n return null;\r\n }\r\n\r\n return (\r\n <p\r\n data-slot=\"form-message\"\r\n id={formMessageId}\r\n className={cn(\"text-neutral-50 text-sm dark:text-neutral-50\", className)}\r\n {...props}\r\n >\r\n {body}\r\n </p>\r\n );\r\n}\r\n\r\nexport {\r\n useFormField,\r\n Form,\r\n FormItem,\r\n FormLabel,\r\n FormControl,\r\n FormDescription,\r\n FormMessage,\r\n FormField,\r\n};\r\n"],"names":["Form","FormProvider","FormFieldContext","React","FormField","props","Controller","useFormField","fieldContext","itemContext","FormItemContext","getFieldState","useFormContext","formState","useFormState","fieldState","Error","id","FormItem","className","cn","FormLabel","error","formItemId","Label","FormControl","formDescriptionId","formMessageId","Slot","FormDescription","FormMessage","body","String"],"mappings":"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"}
1
+ {"version":3,"file":"components\\ui\\form.cjs","sources":["webpack://@arolariu/components/./src/components/ui/form.tsx"],"sourcesContent":["\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Label } from \"@/components/ui/label\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n);\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\n \"data-[error=true]:text-red-500 dark:data-[error=true]:text-red-900\",\n className\n )}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\n \"text-neutral-500 text-sm dark:text-neutral-400\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? \"\") : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-red-500 text-sm dark:text-red-900\", className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n"],"names":["Form","FormProvider","FormFieldContext","React","FormField","props","Controller","useFormField","fieldContext","itemContext","FormItemContext","getFieldState","useFormContext","formState","useFormState","fieldState","Error","id","FormItem","className","cn","FormLabel","error","formItemId","Label","FormControl","formDescriptionId","formMessageId","Slot","FormDescription","FormMessage","body","String"],"mappings":"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"}