@aster-ui/prefixed 0.12.50

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 (388) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +40 -0
  3. package/dist/chart.d.ts +2 -0
  4. package/dist/chart.js +5 -0
  5. package/dist/chart.js.map +1 -0
  6. package/dist/components/Affix.d.ts +14 -0
  7. package/dist/components/Affix.js +57 -0
  8. package/dist/components/Affix.js.map +1 -0
  9. package/dist/components/Alert.d.ts +10 -0
  10. package/dist/components/Alert.js +31 -0
  11. package/dist/components/Alert.js.map +1 -0
  12. package/dist/components/Anchor.d.ts +55 -0
  13. package/dist/components/Anchor.js +116 -0
  14. package/dist/components/Anchor.js.map +1 -0
  15. package/dist/components/Autocomplete.d.ts +38 -0
  16. package/dist/components/Autocomplete.js +186 -0
  17. package/dist/components/Autocomplete.js.map +1 -0
  18. package/dist/components/Avatar.d.ts +28 -0
  19. package/dist/components/Avatar.js +65 -0
  20. package/dist/components/Avatar.js.map +1 -0
  21. package/dist/components/Badge.d.ts +39 -0
  22. package/dist/components/Badge.js +220 -0
  23. package/dist/components/Badge.js.map +1 -0
  24. package/dist/components/Breadcrumb.d.ts +32 -0
  25. package/dist/components/Breadcrumb.js +39 -0
  26. package/dist/components/Breadcrumb.js.map +1 -0
  27. package/dist/components/Browser.d.ts +7 -0
  28. package/dist/components/Browser.js +15 -0
  29. package/dist/components/Browser.js.map +1 -0
  30. package/dist/components/Button.d.ts +38 -0
  31. package/dist/components/Button.js +114 -0
  32. package/dist/components/Button.js.map +1 -0
  33. package/dist/components/Card.d.ts +57 -0
  34. package/dist/components/Card.js +202 -0
  35. package/dist/components/Card.js.map +1 -0
  36. package/dist/components/Carousel.d.ts +55 -0
  37. package/dist/components/Carousel.js +205 -0
  38. package/dist/components/Carousel.js.map +1 -0
  39. package/dist/components/Cascader.d.ts +71 -0
  40. package/dist/components/Cascader.js +416 -0
  41. package/dist/components/Cascader.js.map +1 -0
  42. package/dist/components/Chart.d.ts +19 -0
  43. package/dist/components/Chart.js +153 -0
  44. package/dist/components/Chart.js.map +1 -0
  45. package/dist/components/Chat.d.ts +11 -0
  46. package/dist/components/Chat.js +33 -0
  47. package/dist/components/Chat.js.map +1 -0
  48. package/dist/components/Checkbox.d.ts +42 -0
  49. package/dist/components/Checkbox.js +156 -0
  50. package/dist/components/Checkbox.js.map +1 -0
  51. package/dist/components/Code.d.ts +16 -0
  52. package/dist/components/Code.js +60 -0
  53. package/dist/components/Code.js.map +1 -0
  54. package/dist/components/Collapse.d.ts +45 -0
  55. package/dist/components/Collapse.js +115 -0
  56. package/dist/components/Collapse.js.map +1 -0
  57. package/dist/components/ColorPicker.d.ts +16 -0
  58. package/dist/components/ColorPicker.js +368 -0
  59. package/dist/components/ColorPicker.js.map +1 -0
  60. package/dist/components/Command.d.ts +65 -0
  61. package/dist/components/Command.js +422 -0
  62. package/dist/components/Command.js.map +1 -0
  63. package/dist/components/ConfigProvider.d.ts +59 -0
  64. package/dist/components/ConfigProvider.js +46 -0
  65. package/dist/components/ConfigProvider.js.map +1 -0
  66. package/dist/components/Container.d.ts +12 -0
  67. package/dist/components/Container.js +28 -0
  68. package/dist/components/Container.js.map +1 -0
  69. package/dist/components/ContextMenu.d.ts +59 -0
  70. package/dist/components/ContextMenu.js +206 -0
  71. package/dist/components/ContextMenu.js.map +1 -0
  72. package/dist/components/CopyButton.d.ts +37 -0
  73. package/dist/components/CopyButton.js +123 -0
  74. package/dist/components/CopyButton.js.map +1 -0
  75. package/dist/components/Countdown.d.ts +27 -0
  76. package/dist/components/Countdown.js +118 -0
  77. package/dist/components/Countdown.js.map +1 -0
  78. package/dist/components/DatePicker.d.ts +11 -0
  79. package/dist/components/DatePicker.js +188 -0
  80. package/dist/components/DatePicker.js.map +1 -0
  81. package/dist/components/Descriptions.d.ts +84 -0
  82. package/dist/components/Descriptions.js +234 -0
  83. package/dist/components/Descriptions.js.map +1 -0
  84. package/dist/components/Diff.d.ts +12 -0
  85. package/dist/components/Diff.js +22 -0
  86. package/dist/components/Diff.js.map +1 -0
  87. package/dist/components/Divider.d.ts +8 -0
  88. package/dist/components/Divider.js +36 -0
  89. package/dist/components/Divider.js.map +1 -0
  90. package/dist/components/Dock.d.ts +38 -0
  91. package/dist/components/Dock.js +47 -0
  92. package/dist/components/Dock.js.map +1 -0
  93. package/dist/components/Drawer.d.ts +81 -0
  94. package/dist/components/Drawer.js +246 -0
  95. package/dist/components/Drawer.js.map +1 -0
  96. package/dist/components/Dropdown.d.ts +104 -0
  97. package/dist/components/Dropdown.js +407 -0
  98. package/dist/components/Dropdown.js.map +1 -0
  99. package/dist/components/Empty.d.ts +17 -0
  100. package/dist/components/Empty.js +145 -0
  101. package/dist/components/Empty.js.map +1 -0
  102. package/dist/components/Fieldset.d.ts +21 -0
  103. package/dist/components/Fieldset.js +21 -0
  104. package/dist/components/Fieldset.js.map +1 -0
  105. package/dist/components/FileInput.d.ts +9 -0
  106. package/dist/components/FileInput.js +38 -0
  107. package/dist/components/FileInput.js.map +1 -0
  108. package/dist/components/Filter.d.ts +27 -0
  109. package/dist/components/Filter.js +57 -0
  110. package/dist/components/Filter.js.map +1 -0
  111. package/dist/components/Flex.d.ts +14 -0
  112. package/dist/components/Flex.js +66 -0
  113. package/dist/components/Flex.js.map +1 -0
  114. package/dist/components/FloatButton.d.ts +73 -0
  115. package/dist/components/FloatButton.js +187 -0
  116. package/dist/components/FloatButton.js.map +1 -0
  117. package/dist/components/Footer.d.ts +16 -0
  118. package/dist/components/Footer.js +22 -0
  119. package/dist/components/Footer.js.map +1 -0
  120. package/dist/components/Form.d.ts +107 -0
  121. package/dist/components/Form.js +277 -0
  122. package/dist/components/Form.js.map +1 -0
  123. package/dist/components/Grid.d.ts +26 -0
  124. package/dist/components/Grid.js +1090 -0
  125. package/dist/components/Grid.js.map +1 -0
  126. package/dist/components/Hero.d.ts +11 -0
  127. package/dist/components/Hero.js +21 -0
  128. package/dist/components/Hero.js.map +1 -0
  129. package/dist/components/HoverGallery.d.ts +10 -0
  130. package/dist/components/HoverGallery.js +20 -0
  131. package/dist/components/HoverGallery.js.map +1 -0
  132. package/dist/components/Image.d.ts +26 -0
  133. package/dist/components/Image.js +172 -0
  134. package/dist/components/Image.js.map +1 -0
  135. package/dist/components/Input.d.ts +36 -0
  136. package/dist/components/Input.js +263 -0
  137. package/dist/components/Input.js.map +1 -0
  138. package/dist/components/InputNumber.d.ts +19 -0
  139. package/dist/components/InputNumber.js +158 -0
  140. package/dist/components/InputNumber.js.map +1 -0
  141. package/dist/components/Join.d.ts +6 -0
  142. package/dist/components/Join.js +19 -0
  143. package/dist/components/Join.js.map +1 -0
  144. package/dist/components/Kbd.d.ts +9 -0
  145. package/dist/components/Kbd.js +20 -0
  146. package/dist/components/Kbd.js.map +1 -0
  147. package/dist/components/Layout.d.ts +67 -0
  148. package/dist/components/Layout.js +188 -0
  149. package/dist/components/Layout.js.map +1 -0
  150. package/dist/components/List.d.ts +79 -0
  151. package/dist/components/List.js +128 -0
  152. package/dist/components/List.js.map +1 -0
  153. package/dist/components/Loading.d.ts +9 -0
  154. package/dist/components/Loading.js +40 -0
  155. package/dist/components/Loading.js.map +1 -0
  156. package/dist/components/Mask.d.ts +14 -0
  157. package/dist/components/Mask.js +37 -0
  158. package/dist/components/Mask.js.map +1 -0
  159. package/dist/components/Masonry.d.ts +15 -0
  160. package/dist/components/Masonry.js +84 -0
  161. package/dist/components/Masonry.js.map +1 -0
  162. package/dist/components/Mention.d.ts +30 -0
  163. package/dist/components/Mention.js +179 -0
  164. package/dist/components/Mention.js.map +1 -0
  165. package/dist/components/Menu.d.ts +72 -0
  166. package/dist/components/Menu.js +163 -0
  167. package/dist/components/Menu.js.map +1 -0
  168. package/dist/components/Message.d.ts +20 -0
  169. package/dist/components/Message.js +57 -0
  170. package/dist/components/Message.js.map +1 -0
  171. package/dist/components/Modal.d.ts +57 -0
  172. package/dist/components/Modal.js +338 -0
  173. package/dist/components/Modal.js.map +1 -0
  174. package/dist/components/MonthCalendar.d.ts +31 -0
  175. package/dist/components/MonthCalendar.js +205 -0
  176. package/dist/components/MonthCalendar.js.map +1 -0
  177. package/dist/components/Navbar.d.ts +22 -0
  178. package/dist/components/Navbar.js +50 -0
  179. package/dist/components/Navbar.js.map +1 -0
  180. package/dist/components/Notification.d.ts +50 -0
  181. package/dist/components/Notification.js +150 -0
  182. package/dist/components/Notification.js.map +1 -0
  183. package/dist/components/OTPInput.d.ts +32 -0
  184. package/dist/components/OTPInput.js +114 -0
  185. package/dist/components/OTPInput.js.map +1 -0
  186. package/dist/components/Pagination.d.ts +18 -0
  187. package/dist/components/Pagination.js +175 -0
  188. package/dist/components/Pagination.js.map +1 -0
  189. package/dist/components/Phone.d.ts +8 -0
  190. package/dist/components/Phone.js +17 -0
  191. package/dist/components/Phone.js.map +1 -0
  192. package/dist/components/Popconfirm.d.ts +17 -0
  193. package/dist/components/Popconfirm.js +125 -0
  194. package/dist/components/Popconfirm.js.map +1 -0
  195. package/dist/components/Popover.d.ts +15 -0
  196. package/dist/components/Popover.js +89 -0
  197. package/dist/components/Popover.js.map +1 -0
  198. package/dist/components/Progress.d.ts +5 -0
  199. package/dist/components/Progress.js +23 -0
  200. package/dist/components/Progress.js.map +1 -0
  201. package/dist/components/QRCode.d.ts +19 -0
  202. package/dist/components/QRCode.js +75 -0
  203. package/dist/components/QRCode.js.map +1 -0
  204. package/dist/components/RadialProgress.d.ts +10 -0
  205. package/dist/components/RadialProgress.js +48 -0
  206. package/dist/components/RadialProgress.js.map +1 -0
  207. package/dist/components/Radio.d.ts +26 -0
  208. package/dist/components/Radio.js +61 -0
  209. package/dist/components/Radio.js.map +1 -0
  210. package/dist/components/Range.d.ts +16 -0
  211. package/dist/components/Range.js +57 -0
  212. package/dist/components/Range.js.map +1 -0
  213. package/dist/components/Rating.d.ts +30 -0
  214. package/dist/components/Rating.js +127 -0
  215. package/dist/components/Rating.js.map +1 -0
  216. package/dist/components/Responsive.d.ts +18 -0
  217. package/dist/components/Responsive.js +17 -0
  218. package/dist/components/Responsive.js.map +1 -0
  219. package/dist/components/ResponsiveDrawer.d.ts +34 -0
  220. package/dist/components/ResponsiveDrawer.js +75 -0
  221. package/dist/components/ResponsiveDrawer.js.map +1 -0
  222. package/dist/components/Result.d.ts +12 -0
  223. package/dist/components/Result.js +110 -0
  224. package/dist/components/Result.js.map +1 -0
  225. package/dist/components/RichTextEditor.d.ts +32 -0
  226. package/dist/components/RichTextEditor.js +335 -0
  227. package/dist/components/RichTextEditor.js.map +1 -0
  228. package/dist/components/Segmented.d.ts +37 -0
  229. package/dist/components/Segmented.js +73 -0
  230. package/dist/components/Segmented.js.map +1 -0
  231. package/dist/components/Select.d.ts +18 -0
  232. package/dist/components/Select.js +78 -0
  233. package/dist/components/Select.js.map +1 -0
  234. package/dist/components/Skeleton.d.ts +9 -0
  235. package/dist/components/Skeleton.js +24 -0
  236. package/dist/components/Skeleton.js.map +1 -0
  237. package/dist/components/Space.d.ts +11 -0
  238. package/dist/components/Space.js +61 -0
  239. package/dist/components/Space.js.map +1 -0
  240. package/dist/components/Splitter.d.ts +29 -0
  241. package/dist/components/Splitter.js +257 -0
  242. package/dist/components/Splitter.js.map +1 -0
  243. package/dist/components/Stat.d.ts +18 -0
  244. package/dist/components/Stat.js +26 -0
  245. package/dist/components/Stat.js.map +1 -0
  246. package/dist/components/Status.d.ts +18 -0
  247. package/dist/components/Status.js +34 -0
  248. package/dist/components/Status.js.map +1 -0
  249. package/dist/components/Steps.d.ts +52 -0
  250. package/dist/components/Steps.js +97 -0
  251. package/dist/components/Steps.js.map +1 -0
  252. package/dist/components/Table.d.ts +105 -0
  253. package/dist/components/Table.js +637 -0
  254. package/dist/components/Table.js.map +1 -0
  255. package/dist/components/Tabs.d.ts +45 -0
  256. package/dist/components/Tabs.js +86 -0
  257. package/dist/components/Tabs.js.map +1 -0
  258. package/dist/components/Tag.d.ts +34 -0
  259. package/dist/components/Tag.js +210 -0
  260. package/dist/components/Tag.js.map +1 -0
  261. package/dist/components/TextRotate.d.ts +13 -0
  262. package/dist/components/TextRotate.js +26 -0
  263. package/dist/components/TextRotate.js.map +1 -0
  264. package/dist/components/Textarea.d.ts +9 -0
  265. package/dist/components/Textarea.js +44 -0
  266. package/dist/components/Textarea.js.map +1 -0
  267. package/dist/components/ThemeController.d.ts +28 -0
  268. package/dist/components/ThemeController.js +162 -0
  269. package/dist/components/ThemeController.js.map +1 -0
  270. package/dist/components/TimePicker.d.ts +20 -0
  271. package/dist/components/TimePicker.js +304 -0
  272. package/dist/components/TimePicker.js.map +1 -0
  273. package/dist/components/Timeline.d.ts +79 -0
  274. package/dist/components/Timeline.js +151 -0
  275. package/dist/components/Timeline.js.map +1 -0
  276. package/dist/components/Toggle.d.ts +7 -0
  277. package/dist/components/Toggle.js +39 -0
  278. package/dist/components/Toggle.js.map +1 -0
  279. package/dist/components/Tooltip.d.ts +9 -0
  280. package/dist/components/Tooltip.js +37 -0
  281. package/dist/components/Tooltip.js.map +1 -0
  282. package/dist/components/Tour.d.ts +123 -0
  283. package/dist/components/Tour.js +400 -0
  284. package/dist/components/Tour.js.map +1 -0
  285. package/dist/components/Transfer.d.ts +22 -0
  286. package/dist/components/Transfer.js +214 -0
  287. package/dist/components/Transfer.js.map +1 -0
  288. package/dist/components/Tree.d.ts +118 -0
  289. package/dist/components/Tree.js +444 -0
  290. package/dist/components/Tree.js.map +1 -0
  291. package/dist/components/TreeSelect.d.ts +84 -0
  292. package/dist/components/TreeSelect.js +755 -0
  293. package/dist/components/TreeSelect.js.map +1 -0
  294. package/dist/components/Typography.d.ts +53 -0
  295. package/dist/components/Typography.js +182 -0
  296. package/dist/components/Typography.js.map +1 -0
  297. package/dist/components/Upload.d.ts +38 -0
  298. package/dist/components/Upload.js +261 -0
  299. package/dist/components/Upload.js.map +1 -0
  300. package/dist/components/VirtualList.d.ts +29 -0
  301. package/dist/components/VirtualList.js +69 -0
  302. package/dist/components/VirtualList.js.map +1 -0
  303. package/dist/components/Watermark.d.ts +40 -0
  304. package/dist/components/Watermark.js +129 -0
  305. package/dist/components/Watermark.js.map +1 -0
  306. package/dist/components/WeekCalendar.d.ts +35 -0
  307. package/dist/components/WeekCalendar.js +204 -0
  308. package/dist/components/WeekCalendar.js.map +1 -0
  309. package/dist/components/Window.d.ts +7 -0
  310. package/dist/components/Window.js +10 -0
  311. package/dist/components/Window.js.map +1 -0
  312. package/dist/contexts/IconSizeContext.d.ts +2 -0
  313. package/dist/contexts/IconSizeContext.js +6 -0
  314. package/dist/contexts/IconSizeContext.js.map +1 -0
  315. package/dist/editor.d.ts +1 -0
  316. package/dist/editor.js +5 -0
  317. package/dist/editor.js.map +1 -0
  318. package/dist/hooks/useBreakpoint.d.ts +10 -0
  319. package/dist/hooks/useBreakpoint.js +36 -0
  320. package/dist/hooks/useBreakpoint.js.map +1 -0
  321. package/dist/hooks/useClickOutside.d.ts +17 -0
  322. package/dist/hooks/useClickOutside.js +18 -0
  323. package/dist/hooks/useClickOutside.js.map +1 -0
  324. package/dist/hooks/useClipboard.d.ts +20 -0
  325. package/dist/hooks/useClipboard.js +17 -0
  326. package/dist/hooks/useClipboard.js.map +1 -0
  327. package/dist/hooks/useDebounce.d.ts +18 -0
  328. package/dist/hooks/useDebounce.js +16 -0
  329. package/dist/hooks/useDebounce.js.map +1 -0
  330. package/dist/hooks/useDisclosure.d.ts +20 -0
  331. package/dist/hooks/useDisclosure.js +9 -0
  332. package/dist/hooks/useDisclosure.js.map +1 -0
  333. package/dist/hooks/useHover.d.ts +18 -0
  334. package/dist/hooks/useHover.js +16 -0
  335. package/dist/hooks/useHover.js.map +1 -0
  336. package/dist/hooks/useKeyPress.d.ts +40 -0
  337. package/dist/hooks/useKeyPress.js +34 -0
  338. package/dist/hooks/useKeyPress.js.map +1 -0
  339. package/dist/hooks/useLocalStorage.d.ts +12 -0
  340. package/dist/hooks/useLocalStorage.js +49 -0
  341. package/dist/hooks/useLocalStorage.js.map +1 -0
  342. package/dist/hooks/usePrevious.d.ts +15 -0
  343. package/dist/hooks/usePrevious.js +11 -0
  344. package/dist/hooks/usePrevious.js.map +1 -0
  345. package/dist/hooks/useWindowSize.d.ts +21 -0
  346. package/dist/hooks/useWindowSize.js +21 -0
  347. package/dist/hooks/useWindowSize.js.map +1 -0
  348. package/dist/index.d.ts +216 -0
  349. package/dist/index.js +256 -0
  350. package/dist/index.js.map +1 -0
  351. package/dist/locale/de-DE.d.ts +3 -0
  352. package/dist/locale/de-DE.js +100 -0
  353. package/dist/locale/de-DE.js.map +1 -0
  354. package/dist/locale/en-CA.d.ts +3 -0
  355. package/dist/locale/en-CA.js +11 -0
  356. package/dist/locale/en-CA.js.map +1 -0
  357. package/dist/locale/en-GB.d.ts +3 -0
  358. package/dist/locale/en-GB.js +11 -0
  359. package/dist/locale/en-GB.js.map +1 -0
  360. package/dist/locale/en-US.d.ts +3 -0
  361. package/dist/locale/en-US.js +100 -0
  362. package/dist/locale/en-US.js.map +1 -0
  363. package/dist/locale/es-ES.d.ts +3 -0
  364. package/dist/locale/es-ES.js +100 -0
  365. package/dist/locale/es-ES.js.map +1 -0
  366. package/dist/locale/fr-FR.d.ts +3 -0
  367. package/dist/locale/fr-FR.js +100 -0
  368. package/dist/locale/fr-FR.js.map +1 -0
  369. package/dist/locale/index.d.ts +107 -0
  370. package/dist/locale/ja-JP.d.ts +3 -0
  371. package/dist/locale/ja-JP.js +100 -0
  372. package/dist/locale/ja-JP.js.map +1 -0
  373. package/dist/locale/ko-KR.d.ts +3 -0
  374. package/dist/locale/ko-KR.js +100 -0
  375. package/dist/locale/ko-KR.js.map +1 -0
  376. package/dist/locale/pt-BR.d.ts +3 -0
  377. package/dist/locale/pt-BR.js +100 -0
  378. package/dist/locale/pt-BR.js.map +1 -0
  379. package/dist/locale/zh-CN.d.ts +3 -0
  380. package/dist/locale/zh-CN.js +100 -0
  381. package/dist/locale/zh-CN.js.map +1 -0
  382. package/dist/qrcode.d.ts +2 -0
  383. package/dist/qrcode.js +5 -0
  384. package/dist/qrcode.js.map +1 -0
  385. package/dist/virtuallist.d.ts +2 -0
  386. package/dist/virtuallist.js +5 -0
  387. package/dist/virtuallist.js.map +1 -0
  388. package/package.json +130 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatButton.js","sources":["../../src/components/FloatButton.tsx"],"sourcesContent":["import React, { useState, useEffect, createContext, useContext } from 'react'\n\n// DaisyUI classes\nconst dBtn = 'd-btn'\nconst dBtnLg = 'd-btn-lg'\nconst dBtnCircle = 'd-btn-circle'\nconst dBtnSquare = 'd-btn-square'\nconst dBtnNeutral = 'd-btn-neutral'\nconst dBtnPrimary = 'd-btn-primary'\nconst dTooltip = 'd-tooltip'\nconst dTooltipLeft = 'd-tooltip-left'\nconst dTooltipRight = 'd-tooltip-right'\nconst dTooltipTop = 'd-tooltip-top'\nconst dTooltipBottom = 'd-tooltip-bottom'\nconst dIndicator = 'd-indicator'\nconst dIndicatorItem = 'd-indicator-item'\nconst dBadge = 'd-badge'\nconst dBadgeSecondary = 'd-badge-secondary'\nconst dFab = 'd-fab'\nconst dFabFlower = 'd-fab-flower'\nconst dFabMainAction = 'd-fab-main-action'\nconst dFabClose = 'd-fab-close'\n\n// Default icons\nconst PlusIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 4v16m8-8H4\" />\n </svg>\n)\n\nconst ArrowUpIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 10l7-7m0 0l7 7m-7-7v18\" />\n </svg>\n)\n\nconst CloseIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n)\n\nexport interface FloatButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {\n /** Icon to display */\n icon?: React.ReactNode\n /** Description text below icon */\n description?: React.ReactNode\n /** Button type/color */\n type?: 'default' | 'primary'\n /** Button shape */\n shape?: 'circle' | 'square'\n /** Tooltip text */\n tooltip?: string\n /** Tooltip placement */\n tooltipPlacement?: 'left' | 'right' | 'top' | 'bottom'\n /** Badge content */\n badge?: number | React.ReactNode\n /** Link URL (renders as anchor) */\n href?: string\n /** Link target */\n target?: string\n /** @deprecated Use icon prop instead */\n children?: React.ReactNode\n}\n\nexport interface FloatButtonGroupProps {\n /** Child FloatButton components */\n children: React.ReactNode\n /** Arrange buttons in a quarter-circle (radial) layout */\n flower?: boolean\n /** Button shape for children */\n shape?: 'circle' | 'square'\n /** Main trigger button icon */\n icon?: React.ReactNode\n /** Main action button that replaces trigger when open (fab-main-action) */\n mainAction?: React.ReactNode\n /** Click handler for main action button */\n onMainAction?: () => void\n /** Show close button when open (fab-close) */\n showClose?: boolean\n /** Button type/color */\n type?: 'default' | 'primary'\n /** Position on screen */\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n /** Distance from edge */\n offset?: number\n /** Additional CSS classes */\n className?: string\n /** Custom styles */\n style?: React.CSSProperties\n}\n\nexport interface BackTopProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'onClick'> {\n /** Scroll threshold to show button (pixels) */\n visibilityHeight?: number\n /** Scroll target (default: window) */\n target?: () => HTMLElement | Window\n /** Click handler (called before scrolling) */\n onClick?: () => void\n /** Custom icon */\n icon?: React.ReactNode\n /** Duration of scroll animation in ms */\n duration?: number\n /** Position on screen */\n position?: 'bottom-right' | 'bottom-left'\n /** Distance from edge in pixels */\n offset?: number\n /** @deprecated Use icon prop instead */\n children?: React.ReactNode\n}\n\n// Context for group\ninterface FloatButtonGroupContextValue {\n inGroup: boolean\n shape?: 'circle' | 'square'\n}\n\nconst FloatButtonGroupContext = createContext<FloatButtonGroupContextValue>({ inGroup: false })\n\nconst tooltipPlacementClasses: Record<string, string> = {\n left: dTooltipLeft,\n right: dTooltipRight,\n top: dTooltipTop,\n bottom: dTooltipBottom,\n}\n\nconst typeClasses: Record<string, string> = {\n default: dBtnNeutral,\n primary: dBtnPrimary,\n}\n\nconst shapeClasses: Record<string, string> = {\n circle: dBtnCircle,\n square: dBtnSquare,\n}\n\ninterface FloatButtonComponent extends React.FC<FloatButtonProps> {\n Group: React.FC<FloatButtonGroupProps>\n BackTop: React.FC<BackTopProps>\n}\n\nconst FloatButtonBase: React.FC<FloatButtonProps & { style?: React.CSSProperties }> = ({\n icon,\n description,\n onClick,\n type = 'default',\n shape = 'circle',\n className = '',\n tooltip,\n tooltipPlacement = 'left',\n badge,\n href,\n target,\n children,\n style,\n ...rest\n}) => {\n const groupContext = useContext(FloatButtonGroupContext)\n const effectiveShape = groupContext.inGroup ? (groupContext.shape || shape) : shape\n\n const buttonClasses = [\n dBtn,\n dBtnLg,\n 'shadow-lg',\n shapeClasses[effectiveShape],\n typeClasses[type],\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const content = icon || children || <PlusIcon />\n\n const buttonContent = (\n <>\n {description ? (\n <div className=\"flex flex-col items-center\">\n {content}\n <span className=\"text-xs mt-1\">{description}</span>\n </div>\n ) : (\n content\n )}\n </>\n )\n\n // When inside a group, render simple button without wrapper divs\n // DaisyUI's fab CSS requires direct button children\n if (groupContext.inGroup) {\n return href ? (\n <a\n href={href}\n target={target}\n className={buttonClasses}\n title={tooltip}\n onClick={onClick as any}\n {...(rest as any)}\n >\n {buttonContent}\n </a>\n ) : (\n <button className={buttonClasses} title={tooltip} onClick={onClick} {...rest}>\n {buttonContent}\n </button>\n )\n }\n\n const buttonElement = href ? (\n <a\n href={href}\n target={target}\n className={buttonClasses}\n style={style}\n onClick={onClick as any}\n {...(rest as any)}\n >\n {buttonContent}\n </a>\n ) : (\n <button className={buttonClasses} onClick={onClick} style={style} {...rest}>\n {buttonContent}\n </button>\n )\n\n const withBadge = badge !== undefined ? (\n <div className={dIndicator} style={style}>\n <span className={`${dIndicatorItem} ${dBadge} ${dBadgeSecondary}`}>\n {badge}\n </span>\n {href ? (\n <a href={href} target={target} className={buttonClasses} onClick={onClick as any} {...(rest as any)}>\n {buttonContent}\n </a>\n ) : (\n <button className={buttonClasses} onClick={onClick} {...rest}>\n {buttonContent}\n </button>\n )}\n </div>\n ) : buttonElement\n\n if (tooltip) {\n return (\n <div className={`${dTooltip} ${tooltipPlacementClasses[tooltipPlacement]}`} data-tip={tooltip} style={style}>\n {badge !== undefined ? (\n <div className={dIndicator}>\n <span className={`${dIndicatorItem} ${dBadge} ${dBadgeSecondary}`}>{badge}</span>\n {href ? (\n <a href={href} target={target} className={buttonClasses} onClick={onClick as any} {...(rest as any)}>\n {buttonContent}\n </a>\n ) : (\n <button className={buttonClasses} onClick={onClick} {...rest}>\n {buttonContent}\n </button>\n )}\n </div>\n ) : href ? (\n <a href={href} target={target} className={buttonClasses} onClick={onClick as any} {...(rest as any)}>\n {buttonContent}\n </a>\n ) : (\n <button className={buttonClasses} onClick={onClick} {...rest}>\n {buttonContent}\n </button>\n )}\n </div>\n )\n }\n\n return withBadge\n}\n\nexport const FloatButton: FloatButtonComponent = (props) => {\n const {\n style: propStyle,\n ...rest\n } = props\n\n const groupContext = useContext(FloatButtonGroupContext)\n\n // If in group, don't apply fixed positioning\n if (groupContext.inGroup) {\n return <FloatButtonBase {...rest} />\n }\n\n // Standalone button with fixed positioning\n const style: React.CSSProperties = {\n position: 'fixed',\n zIndex: 1000,\n bottom: 24,\n right: 24,\n ...propStyle,\n }\n\n return <FloatButtonBase {...rest} style={style} />\n}\n\nconst FloatButtonGroup: React.FC<FloatButtonGroupProps> = ({\n children,\n flower = false,\n shape = 'circle',\n icon,\n mainAction,\n onMainAction,\n showClose = false,\n type = 'default',\n position = 'bottom-right',\n offset = 24,\n className = '',\n style: propStyle,\n}) => {\n const fabClasses = [\n dFab,\n flower ? dFabFlower : '',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const triggerButtonClasses = [\n dBtn,\n dBtnLg,\n 'shadow-lg',\n shapeClasses[shape],\n typeClasses[type],\n ]\n .filter(Boolean)\n .join(' ')\n\n const containerStyle: React.CSSProperties = {\n ...(position.includes('bottom') ? { bottom: offset } : { top: offset }),\n ...(position.includes('right') ? { right: offset } : { left: offset }),\n ...propStyle,\n }\n\n return (\n <div className={fabClasses} style={containerStyle}>\n {/* Trigger button - shown when closed */}\n <div\n tabIndex={0}\n role=\"button\"\n className={triggerButtonClasses}\n >\n {icon || <PlusIcon />}\n </div>\n\n {/* Main action button - shown when open (replaces trigger in flower mode) */}\n {mainAction && (\n <button\n className={`${triggerButtonClasses} ${dFabMainAction}`}\n onClick={onMainAction}\n >\n {mainAction}\n </button>\n )}\n\n {/* Close button - shown when open */}\n {showClose && (\n <button className={`${triggerButtonClasses} ${dFabClose}`}>\n <CloseIcon />\n </button>\n )}\n\n <FloatButtonGroupContext.Provider value={{ inGroup: true, shape }}>\n {children}\n </FloatButtonGroupContext.Provider>\n </div>\n )\n}\n\nconst BackTop: React.FC<BackTopProps> = ({\n visibilityHeight = 400,\n target,\n onClick,\n icon,\n duration = 450,\n position = 'bottom-right',\n offset = 24,\n className = '',\n children,\n style: propStyle,\n ...rest\n}) => {\n const [visible, setVisible] = useState(false)\n\n useEffect(() => {\n const scrollTarget = target ? target() : window\n\n const handleScroll = () => {\n const scrollTop =\n scrollTarget instanceof Window\n ? window.scrollY\n : (scrollTarget as HTMLElement).scrollTop\n\n setVisible(scrollTop >= visibilityHeight)\n }\n\n scrollTarget.addEventListener('scroll', handleScroll)\n handleScroll()\n\n return () => scrollTarget.removeEventListener('scroll', handleScroll)\n }, [target, visibilityHeight])\n\n const handleClick = () => {\n onClick?.()\n const scrollTarget = target ? target() : window\n if (scrollTarget instanceof Window) {\n window.scrollTo({ top: 0, behavior: 'smooth' })\n } else {\n (scrollTarget as HTMLElement).scrollTo({ top: 0, behavior: 'smooth' })\n }\n }\n\n if (!visible) return null\n\n const buttonClasses = [\n dBtn,\n dBtnLg,\n dBtnCircle,\n dBtnNeutral,\n 'shadow-lg',\n 'transition-opacity',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const style: React.CSSProperties = {\n position: 'fixed',\n zIndex: 1000,\n bottom: offset,\n ...(position.includes('right') ? { right: offset } : { left: offset }),\n ...propStyle,\n }\n\n return (\n <button className={buttonClasses} onClick={handleClick} style={style} {...rest}>\n {icon || children || <ArrowUpIcon />}\n </button>\n )\n}\n\nFloatButton.Group = FloatButtonGroup\nFloatButton.BackTop = BackTop\n"],"names":["dBtn","dBtnLg","dBtnCircle","dBtnSquare","dBtnNeutral","dBtnPrimary","dTooltip","dTooltipLeft","dTooltipRight","dTooltipTop","dTooltipBottom","dIndicator","dIndicatorItem","dBadge","dBadgeSecondary","dFab","dFabFlower","dFabMainAction","dFabClose","PlusIcon","jsx","ArrowUpIcon","CloseIcon","FloatButtonGroupContext","createContext","tooltipPlacementClasses","typeClasses","shapeClasses","FloatButtonBase","icon","description","onClick","type","shape","className","tooltip","tooltipPlacement","badge","href","target","children","style","rest","groupContext","useContext","effectiveShape","buttonClasses","content","buttonContent","Fragment","jsxs","buttonElement","withBadge","FloatButton","props","propStyle","FloatButtonGroup","flower","mainAction","onMainAction","showClose","position","offset","fabClasses","triggerButtonClasses","containerStyle","BackTop","visibilityHeight","duration","visible","setVisible","useState","useEffect","scrollTarget","handleScroll","scrollTop","handleClick"],"mappings":";;AAGA,MAAMA,IAAO,SACPC,IAAS,YACTC,IAAa,gBACbC,IAAa,gBACbC,IAAc,iBACdC,IAAc,iBACdC,IAAW,aACXC,IAAe,kBACfC,IAAgB,mBAChBC,IAAc,iBACdC,IAAiB,oBACjBC,IAAa,eACbC,IAAiB,oBACjBC,IAAS,WACTC,IAAkB,qBAClBC,IAAO,SACPC,IAAa,gBACbC,IAAiB,qBACjBC,IAAY,eAGZC,IAAW,MACf,gBAAAC,EAAC,OAAA,EAAI,OAAM,8BAA6B,WAAU,WAAU,MAAK,QAAO,SAAQ,aAAY,QAAO,gBACjG,UAAA,gBAAAA,EAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,iBAAA,CAAiB,EAAA,CACxF,GAGIC,IAAc,MAClB,gBAAAD,EAAC,OAAA,EAAI,OAAM,8BAA6B,WAAU,WAAU,MAAK,QAAO,SAAQ,aAAY,QAAO,gBACjG,UAAA,gBAAAA,EAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,4BAAA,CAA4B,EAAA,CACnG,GAGIE,KAAY,MAChB,gBAAAF,EAAC,OAAA,EAAI,OAAM,8BAA6B,WAAU,WAAU,MAAK,QAAO,SAAQ,aAAY,QAAO,gBACjG,UAAA,gBAAAA,EAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,uBAAA,CAAuB,EAAA,CAC9F,GA8EIG,IAA0BC,EAA4C,EAAE,SAAS,IAAO,GAExFC,KAAkD;AAAA,EACtD,MAAMlB;AAAA,EACN,OAAOC;AAAA,EACP,KAAKC;AAAA,EACL,QAAQC;AACV,GAEMgB,IAAsC;AAAA,EAC1C,SAAStB;AAAA,EACT,SAASC;AACX,GAEMsB,IAAuC;AAAA,EAC3C,QAAQzB;AAAA,EACR,QAAQC;AACV,GAOMyB,IAAgF,CAAC;AAAA,EACrF,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,WAAAC,IAAY;AAAA,EACZ,SAAAC;AAAA,EACA,kBAAAC,IAAmB;AAAA,EACnB,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAeC,EAAWrB,CAAuB,GACjDsB,IAAiBF,EAAa,WAAWA,EAAa,SAASV,GAE/Da,IAAgB;AAAA,IACpB9C;AAAA,IACAC;AAAA,IACA;AAAA,IACA0B,EAAakB,CAAc;AAAA,IAC3BnB,EAAYM,CAAI;AAAA,IAChBE;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAELa,IAAUlB,KAAQW,KAAY,gBAAApB,EAACD,GAAA,CAAA,CAAS,GAExC6B,IACJ,gBAAA5B,EAAA6B,GAAA,EACG,UAAAnB,IACC,gBAAAoB,EAAC,OAAA,EAAI,WAAU,8BACZ,UAAA;AAAA,IAAAH;AAAA,IACD,gBAAA3B,EAAC,QAAA,EAAK,WAAU,gBAAgB,UAAAU,EAAA,CAAY;AAAA,EAAA,EAAA,CAC9C,IAEAiB,GAEJ;AAKF,MAAIJ,EAAa;AACf,WAAOL,IACL,gBAAAlB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAAkB;AAAA,QACA,QAAAC;AAAA,QACA,WAAWO;AAAA,QACX,OAAOX;AAAA,QACP,SAAAJ;AAAA,QACC,GAAIW;AAAA,QAEJ,UAAAM;AAAA,MAAA;AAAA,IAAA,IAGH,gBAAA5B,EAAC,UAAA,EAAO,WAAW0B,GAAe,OAAOX,GAAS,SAAAJ,GAAmB,GAAGW,GACrE,UAAAM,EAAA,CACH;AAIJ,QAAMG,IAAgBb,IACpB,gBAAAlB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAAkB;AAAA,MACA,QAAAC;AAAA,MACA,WAAWO;AAAA,MACX,OAAAL;AAAA,MACA,SAAAV;AAAA,MACC,GAAIW;AAAA,MAEJ,UAAAM;AAAA,IAAA;AAAA,EAAA,sBAGF,UAAA,EAAO,WAAWF,GAAe,SAAAf,GAAkB,OAAAU,GAAe,GAAGC,GACnE,UAAAM,EAAA,CACH,GAGII,IAAYf,MAAU,2BACzB,OAAA,EAAI,WAAW1B,GAAY,OAAA8B,GAC1B,UAAA;AAAA,IAAA,gBAAArB,EAAC,QAAA,EAAK,WAAW,GAAGR,CAAc,IAAIC,CAAM,IAAIC,CAAe,IAC5D,UAAAuB,EAAA,CACH;AAAA,IACCC,IACC,gBAAAlB,EAAC,KAAA,EAAE,MAAAkB,GAAY,QAAAC,GAAgB,WAAWO,GAAe,SAAAf,GAA0B,GAAIW,GACpF,UAAAM,EAAA,CACH,sBAEC,UAAA,EAAO,WAAWF,GAAe,SAAAf,GAAmB,GAAGW,GACrD,UAAAM,EAAA,CACH;AAAA,EAAA,EAAA,CAEJ,IACEG;AAEJ,SAAIhB,sBAEC,OAAA,EAAI,WAAW,GAAG7B,CAAQ,IAAImB,GAAwBW,CAAgB,CAAC,IAAI,YAAUD,GAAS,OAAAM,GAC5F,UAAAJ,MAAU,SACT,gBAAAa,EAAC,OAAA,EAAI,WAAWvC,GACd,UAAA;AAAA,IAAA,gBAAAS,EAAC,QAAA,EAAK,WAAW,GAAGR,CAAc,IAAIC,CAAM,IAAIC,CAAe,IAAK,UAAAuB,EAAA,CAAM;AAAA,IACzEC,IACC,gBAAAlB,EAAC,KAAA,EAAE,MAAAkB,GAAY,QAAAC,GAAgB,WAAWO,GAAe,SAAAf,GAA0B,GAAIW,GACpF,UAAAM,EAAA,CACH,sBAEC,UAAA,EAAO,WAAWF,GAAe,SAAAf,GAAmB,GAAGW,GACrD,UAAAM,EAAA,CACH;AAAA,EAAA,EAAA,CAEJ,IACEV,IACF,gBAAAlB,EAAC,KAAA,EAAE,MAAAkB,GAAY,QAAAC,GAAgB,WAAWO,GAAe,SAAAf,GAA0B,GAAIW,GACpF,UAAAM,EAAA,CACH,sBAEC,UAAA,EAAO,WAAWF,GAAe,SAAAf,GAAmB,GAAGW,GACrD,UAAAM,EAAA,CACH,EAAA,CAEJ,IAIGI;AACT,GAEaC,IAAoC,CAACC,MAAU;AAC1D,QAAM;AAAA,IACJ,OAAOC;AAAA,IACP,GAAGb;AAAA,EAAA,IACDY;AAKJ,MAHqBV,EAAWrB,CAAuB,EAGtC;AACf,WAAO,gBAAAH,EAACQ,GAAA,EAAiB,GAAGc,EAAA,CAAM;AAIpC,QAAMD,IAA6B;AAAA,IACjC,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,GAAGc;AAAA,EAAA;AAGL,SAAO,gBAAAnC,EAACQ,GAAA,EAAiB,GAAGc,GAAM,OAAAD,EAAA,CAAc;AAClD,GAEMe,KAAoD,CAAC;AAAA,EACzD,UAAAhB;AAAA,EACA,QAAAiB,IAAS;AAAA,EACT,OAAAxB,IAAQ;AAAA,EACR,MAAAJ;AAAA,EACA,YAAA6B;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,MAAA5B,IAAO;AAAA,EACP,UAAA6B,IAAW;AAAA,EACX,QAAAC,IAAS;AAAA,EACT,WAAA5B,IAAY;AAAA,EACZ,OAAOqB;AACT,MAAM;AACJ,QAAMQ,IAAa;AAAA,IACjBhD;AAAA,IACA0C,IAASzC,IAAa;AAAA,IACtBkB;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAEL8B,IAAuB;AAAA,IAC3BhE;AAAA,IACAC;AAAA,IACA;AAAA,IACA0B,EAAaM,CAAK;AAAA,IAClBP,EAAYM,CAAI;AAAA,EAAA,EAEf,OAAO,OAAO,EACd,KAAK,GAAG,GAELiC,IAAsC;AAAA,IAC1C,GAAIJ,EAAS,SAAS,QAAQ,IAAI,EAAE,QAAQC,EAAA,IAAW,EAAE,KAAKA,EAAA;AAAA,IAC9D,GAAID,EAAS,SAAS,OAAO,IAAI,EAAE,OAAOC,EAAA,IAAW,EAAE,MAAMA,EAAA;AAAA,IAC7D,GAAGP;AAAA,EAAA;AAGL,SACE,gBAAAL,EAAC,OAAA,EAAI,WAAWa,GAAY,OAAOE,GAEjC,UAAA;AAAA,IAAA,gBAAA7C;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,UAAU;AAAA,QACV,MAAK;AAAA,QACL,WAAW4C;AAAA,QAEV,UAAAnC,uBAASV,GAAA,CAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,IAIpBuC,KACC,gBAAAtC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,GAAG4C,CAAoB,IAAI/C,CAAc;AAAA,QACpD,SAAS0C;AAAA,QAER,UAAAD;AAAA,MAAA;AAAA,IAAA;AAAA,IAKJE,KACC,gBAAAxC,EAAC,UAAA,EAAO,WAAW,GAAG4C,CAAoB,IAAI9C,CAAS,IACrD,UAAA,gBAAAE,EAACE,IAAA,CAAA,CAAU,EAAA,CACb;AAAA,IAGF,gBAAAF,EAACG,EAAwB,UAAxB,EAAiC,OAAO,EAAE,SAAS,IAAM,OAAAU,EAAA,GACvD,UAAAO,EAAA,CACH;AAAA,EAAA,GACF;AAEJ,GAEM0B,KAAkC,CAAC;AAAA,EACvC,kBAAAC,IAAmB;AAAA,EACnB,QAAA5B;AAAA,EACA,SAAAR;AAAA,EACA,MAAAF;AAAA,EACA,UAAAuC,IAAW;AAAA,EACX,UAAAP,IAAW;AAAA,EACX,QAAAC,IAAS;AAAA,EACT,WAAA5B,IAAY;AAAA,EACZ,UAAAM;AAAA,EACA,OAAOe;AAAA,EACP,GAAGb;AACL,MAAM;AACJ,QAAM,CAAC2B,GAASC,CAAU,IAAIC,EAAS,EAAK;AAE5C,EAAAC,EAAU,MAAM;AACd,UAAMC,IAAelC,IAASA,EAAA,IAAW,QAEnCmC,IAAe,MAAM;AACzB,YAAMC,IACJF,aAAwB,SACpB,OAAO,UACNA,EAA6B;AAEpC,MAAAH,EAAWK,KAAaR,CAAgB;AAAA,IAC1C;AAEA,WAAAM,EAAa,iBAAiB,UAAUC,CAAY,GACpDA,EAAA,GAEO,MAAMD,EAAa,oBAAoB,UAAUC,CAAY;AAAA,EACtE,GAAG,CAACnC,GAAQ4B,CAAgB,CAAC;AAE7B,QAAMS,IAAc,MAAM;AACxB,IAAA7C,IAAA;AACA,UAAM0C,IAAelC,IAASA,EAAA,IAAW;AACzC,IAAIkC,aAAwB,SAC1B,OAAO,SAAS,EAAE,KAAK,GAAG,UAAU,UAAU,IAE7CA,EAA6B,SAAS,EAAE,KAAK,GAAG,UAAU,UAAU;AAAA,EAEzE;AAEA,MAAI,CAACJ,EAAS,QAAO;AAErB,QAAMvB,IAAgB;AAAA,IACpB9C;AAAA,IACAC;AAAA,IACAC;AAAA,IACAE;AAAA,IACA;AAAA,IACA;AAAA,IACA8B;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAELO,IAA6B;AAAA,IACjC,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,QAAQqB;AAAA,IACR,GAAID,EAAS,SAAS,OAAO,IAAI,EAAE,OAAOC,EAAA,IAAW,EAAE,MAAMA,EAAA;AAAA,IAC7D,GAAGP;AAAA,EAAA;AAGL,SACE,gBAAAnC,EAAC,UAAA,EAAO,WAAW0B,GAAe,SAAS8B,GAAa,OAAAnC,GAAe,GAAGC,GACvE,UAAAb,KAAQW,KAAY,gBAAApB,EAACC,KAAY,GACpC;AAEJ;AAEAgC,EAAY,QAAQG;AACpBH,EAAY,UAAUa;"}
@@ -0,0 +1,16 @@
1
+ import { default as React } from 'react';
2
+ export interface FooterProps extends React.HTMLAttributes<HTMLElement> {
3
+ children: React.ReactNode;
4
+ center?: boolean;
5
+ horizontal?: boolean;
6
+ vertical?: boolean;
7
+ }
8
+ export interface FooterTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {
9
+ children: React.ReactNode;
10
+ }
11
+ declare function FooterRoot({ children, className, center, horizontal, vertical, ...rest }: FooterProps): import("react/jsx-runtime").JSX.Element;
12
+ declare function FooterTitle({ children, className, ...rest }: FooterTitleProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare const Footer: typeof FooterRoot & {
14
+ Title: typeof FooterTitle;
15
+ };
16
+ export {};
@@ -0,0 +1,22 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ const a = "d-footer", i = "d-footer-center", f = "d-footer-horizontal", d = "d-footer-vertical", F = "d-footer-title";
3
+ function m({ children: o, className: t = "", center: e = !1, horizontal: n = !1, vertical: s = !1, ...c }) {
4
+ const l = [
5
+ a,
6
+ e && i,
7
+ n && f,
8
+ s && d,
9
+ t
10
+ ].filter(Boolean).join(" ");
11
+ return /* @__PURE__ */ r("footer", { className: l, ...c, children: o });
12
+ }
13
+ function u({ children: o, className: t = "", ...e }) {
14
+ return /* @__PURE__ */ r("h6", { className: `${F} ${t}`, ...e, children: o });
15
+ }
16
+ const T = Object.assign(m, {
17
+ Title: u
18
+ });
19
+ export {
20
+ T as Footer
21
+ };
22
+ //# sourceMappingURL=Footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Footer.js","sources":["../../src/components/Footer.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dFooter = 'd-footer'\nconst dFooterCenter = 'd-footer-center'\nconst dFooterHorizontal = 'd-footer-horizontal'\nconst dFooterVertical = 'd-footer-vertical'\nconst dFooterTitle = 'd-footer-title'\n\nexport interface FooterProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode\n center?: boolean\n horizontal?: boolean\n vertical?: boolean\n}\n\nexport interface FooterTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {\n children: React.ReactNode\n}\n\nfunction FooterRoot({ children, className = '', center = false, horizontal = false, vertical = false, ...rest }: FooterProps) {\n const classes = [\n dFooter,\n center && dFooterCenter,\n horizontal && dFooterHorizontal,\n vertical && dFooterVertical,\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return <footer className={classes} {...rest}>{children}</footer>\n}\n\nfunction FooterTitle({ children, className = '', ...rest }: FooterTitleProps) {\n return <h6 className={`${dFooterTitle} ${className}`} {...rest}>{children}</h6>\n}\n\nexport const Footer = Object.assign(FooterRoot, {\n Title: FooterTitle,\n})\n"],"names":["dFooter","dFooterCenter","dFooterHorizontal","dFooterVertical","dFooterTitle","FooterRoot","children","className","center","horizontal","vertical","rest","classes","FooterTitle","jsx","Footer"],"mappings":";AAGA,MAAMA,IAAU,YACVC,IAAgB,mBAChBC,IAAoB,uBACpBC,IAAkB,qBAClBC,IAAe;AAarB,SAASC,EAAW,EAAE,UAAAC,GAAU,WAAAC,IAAY,IAAI,QAAAC,IAAS,IAAO,YAAAC,IAAa,IAAO,UAAAC,IAAW,IAAO,GAAGC,KAAqB;AAC5H,QAAMC,IAAU;AAAA,IACdZ;AAAA,IACAQ,KAAUP;AAAA,IACVQ,KAAcP;AAAA,IACdQ,KAAYP;AAAA,IACZI;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BAAQ,UAAA,EAAO,WAAWK,GAAU,GAAGD,GAAO,UAAAL,GAAS;AACzD;AAEA,SAASO,EAAY,EAAE,UAAAP,GAAU,WAAAC,IAAY,IAAI,GAAGI,KAA0B;AAC5E,SAAO,gBAAAG,EAAC,MAAA,EAAG,WAAW,GAAGV,CAAY,IAAIG,CAAS,IAAK,GAAGI,GAAO,UAAAL,EAAA,CAAS;AAC5E;AAEO,MAAMS,IAAS,OAAO,OAAOV,GAAY;AAAA,EAC9C,OAAOQ;AACT,CAAC;"}
@@ -0,0 +1,107 @@
1
+ import { default as React } from 'react';
2
+ import { UseFormReturn, FieldValues, SubmitHandler, UseFormProps, FieldArrayPath, FieldArray } from 'react-hook-form';
3
+ export interface FormProps<TFieldValues extends FieldValues = FieldValues> extends Omit<React.FormHTMLAttributes<HTMLFormElement>, 'onSubmit'> {
4
+ form?: UseFormReturn<TFieldValues>;
5
+ onFinish?: SubmitHandler<TFieldValues>;
6
+ /** Called when form validation fails */
7
+ onFinishFailed?: (errorInfo: {
8
+ values: TFieldValues;
9
+ errorFields: Array<{
10
+ name: string;
11
+ errors: string[];
12
+ }>;
13
+ }) => void;
14
+ initialValues?: UseFormProps<TFieldValues>['defaultValues'];
15
+ layout?: 'vertical' | 'horizontal' | 'inline';
16
+ /** Label width in pixels for horizontal layout (default: 80) */
17
+ labelWidth?: number;
18
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
19
+ /** Disable all form fields */
20
+ disabled?: boolean;
21
+ children: React.ReactNode;
22
+ }
23
+ export interface FormRule {
24
+ required?: boolean | string;
25
+ type?: 'email' | 'url' | 'number';
26
+ min?: number | {
27
+ value: number;
28
+ message: string;
29
+ };
30
+ max?: number | {
31
+ value: number;
32
+ message: string;
33
+ };
34
+ pattern?: RegExp | {
35
+ value: RegExp;
36
+ message: string;
37
+ };
38
+ message?: string;
39
+ validate?: (value: any) => boolean | string | Promise<boolean | string>;
40
+ }
41
+ export type ValidateTrigger = 'onChange' | 'onBlur' | 'onSubmit' | ('onChange' | 'onBlur' | 'onSubmit')[];
42
+ export interface FormItemProps {
43
+ name?: string | string[];
44
+ label?: string;
45
+ /** Floating label text (alternative to label, uses DaisyUI floating-label) */
46
+ floatingLabel?: string;
47
+ help?: string;
48
+ required?: boolean;
49
+ rules?: FormRule | FormRule[];
50
+ valuePropName?: string;
51
+ inline?: boolean;
52
+ className?: string;
53
+ children: React.ReactElement;
54
+ /** Tooltip text to show next to label */
55
+ tooltip?: string;
56
+ /** Additional content below the form control */
57
+ extra?: React.ReactNode;
58
+ /** Show validation feedback icon */
59
+ hasFeedback?: boolean;
60
+ /** Field names that this field depends on for validation */
61
+ dependencies?: string[];
62
+ /** When to trigger validation */
63
+ validateTrigger?: ValidateTrigger;
64
+ /** Initial value for this field (overrides Form's initialValues) */
65
+ initialValue?: any;
66
+ /** Hide this field (still validates and submits) */
67
+ hidden?: boolean;
68
+ /** Text/element before input (outside, using DaisyUI label) */
69
+ addonBefore?: React.ReactNode;
70
+ /** Text/element after input (outside, using DaisyUI label) */
71
+ addonAfter?: React.ReactNode;
72
+ }
73
+ export interface FormListProps<TFieldValues extends FieldValues = FieldValues> {
74
+ name: FieldArrayPath<TFieldValues>;
75
+ children: (fields: FieldArray<TFieldValues>[], operations: {
76
+ add: (value?: any) => void;
77
+ remove: (index: number) => void;
78
+ move: (from: number, to: number) => void;
79
+ }) => React.ReactNode;
80
+ }
81
+ declare function FormRoot<TFieldValues extends FieldValues = FieldValues>({ form: externalForm, onFinish, onFinishFailed, initialValues, layout, labelWidth, size, disabled, children, className, noValidate, ...props }: FormProps<TFieldValues>): import("react/jsx-runtime").JSX.Element;
82
+ declare function FormItem({ name, label, floatingLabel, help, required, rules, valuePropName, inline, className, children, tooltip, extra, hasFeedback, dependencies, validateTrigger, initialValue, hidden, addonBefore, addonAfter, }: FormItemProps): import("react/jsx-runtime").JSX.Element;
83
+ declare function FormList<TFieldValues extends FieldValues = FieldValues>({ name, children, }: FormListProps<TFieldValues>): import("react/jsx-runtime").JSX.Element;
84
+ export declare function useFormInstance<TFieldValues extends FieldValues = FieldValues>(): UseFormReturn<TFieldValues, any, TFieldValues> & {
85
+ setFieldValue: import('react-hook-form').UseFormSetValue<TFieldValues>;
86
+ getFieldValue: (name: any) => any;
87
+ getFieldsValue: import('react-hook-form').UseFormGetValues<TFieldValues>;
88
+ setFieldsValue: (values: any) => void;
89
+ validateFields: import('react-hook-form').UseFormTrigger<TFieldValues>;
90
+ resetFields: import('react-hook-form').UseFormReset<TFieldValues>;
91
+ isFieldTouched: (name: string) => boolean;
92
+ getFieldError: (name: string) => string | undefined;
93
+ };
94
+ export interface FormErrorListProps {
95
+ /** Specific field names to show errors for (shows all errors if not specified) */
96
+ fields?: string[];
97
+ /** Custom className */
98
+ className?: string;
99
+ }
100
+ declare function FormErrorList({ fields, className }: FormErrorListProps): import("react/jsx-runtime").JSX.Element | null;
101
+ export declare const Form: typeof FormRoot & {
102
+ Item: typeof FormItem;
103
+ List: typeof FormList;
104
+ ErrorList: typeof FormErrorList;
105
+ useForm: typeof useFormInstance;
106
+ };
107
+ export type { UseFormReturn as FormInstance };
@@ -0,0 +1,277 @@
1
+ import { jsx as t, jsxs as w } from "react/jsx-runtime";
2
+ import { createContext as he, useId as ee, useEffect as te, useRef as se, isValidElement as re, cloneElement as ge, useContext as pe } from "react";
3
+ import { useForm as ne, useFieldArray as ve, useWatch as xe, Controller as ye } from "react-hook-form";
4
+ import { useConfig as be } from "./ConfigProvider.js";
5
+ const Ne = "d-input", $e = "d-input-xs", ke = "d-input-sm", Fe = "d-input-md", Ve = "d-input-lg", we = "d-input-xl", Le = "d-floating-label", Ce = "d-loading", Ie = "d-loading-spinner", Ee = "d-loading-xs", Ae = "d-tooltip", je = "d-tooltip-top", X = he(void 0), _ = {
6
+ email: {
7
+ value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,
8
+ message: "Please enter a valid email address"
9
+ },
10
+ url: {
11
+ value: /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$/,
12
+ message: "Please enter a valid URL"
13
+ },
14
+ number: {
15
+ value: /^-?\d+(\.\d+)?$/,
16
+ message: "Please enter a valid number"
17
+ }
18
+ };
19
+ function J() {
20
+ const s = pe(X);
21
+ if (!s)
22
+ throw new Error("Form compound components must be used within Form");
23
+ return s;
24
+ }
25
+ function ze({
26
+ form: s,
27
+ onFinish: n,
28
+ onFinishFailed: r,
29
+ initialValues: i,
30
+ layout: v = "vertical",
31
+ labelWidth: h = 60,
32
+ size: N,
33
+ disabled: c = !1,
34
+ children: g,
35
+ className: d = "",
36
+ noValidate: x = !0,
37
+ ...y
38
+ }) {
39
+ const { componentSize: u } = be(), $ = N ?? u ?? "md", j = ne({
40
+ defaultValues: i
41
+ }), b = s || j, R = async (k) => {
42
+ if (k.preventDefault(), await b.trigger())
43
+ n && n(b.getValues());
44
+ else if (r) {
45
+ const F = b.formState.errors, z = [], S = (B, T = "") => {
46
+ for (const E in B) {
47
+ const A = T ? `${T}.${E}` : E, l = B[E];
48
+ l?.message ? z.push({ name: A, errors: [l.message] }) : typeof l == "object" && l !== null && S(l, A);
49
+ }
50
+ };
51
+ S(F), r({ values: b.getValues(), errorFields: z });
52
+ }
53
+ }, I = (k) => {
54
+ k.preventDefault(), b.reset(i);
55
+ };
56
+ return /* @__PURE__ */ t(X.Provider, { value: { form: b, layout: v, labelWidth: h, size: $, disabled: c }, children: /* @__PURE__ */ t("form", { onSubmit: R, onReset: I, className: d, noValidate: x, ...y, children: g }) });
57
+ }
58
+ function Se({
59
+ name: s,
60
+ label: n,
61
+ floatingLabel: r,
62
+ help: i,
63
+ required: v = !1,
64
+ rules: h,
65
+ valuePropName: N = "value",
66
+ inline: c = !1,
67
+ className: g = "",
68
+ children: d,
69
+ tooltip: x,
70
+ extra: y,
71
+ hasFeedback: u = !1,
72
+ dependencies: $,
73
+ validateTrigger: j = "onChange",
74
+ initialValue: b,
75
+ hidden: R = !1,
76
+ addonBefore: I,
77
+ addonAfter: k
78
+ }) {
79
+ const { form: m, size: F, listName: z, layout: S, labelWidth: B, disabled: T } = J(), E = ee(), A = ee();
80
+ if (!s)
81
+ return /* @__PURE__ */ t("div", { className: `${c ? "w-auto" : "w-full"} ${g}`, style: R ? { display: "none" } : void 0, children: d });
82
+ let l;
83
+ Array.isArray(s) ? l = (z ? [z, ...s] : s).join(".") : l = s, te(() => {
84
+ b !== void 0 && m.getValues(l) === void 0 && m.setValue(l, b);
85
+ }, []);
86
+ const q = xe({
87
+ control: m.control,
88
+ name: $,
89
+ disabled: !$ || $.length === 0
90
+ }), K = se(m);
91
+ K.current = m;
92
+ const W = se(void 0);
93
+ te(() => {
94
+ if (!$ || $.length === 0) return;
95
+ if (W.current === void 0) {
96
+ W.current = JSON.stringify(q);
97
+ return;
98
+ }
99
+ const e = JSON.stringify(q);
100
+ W.current !== e && (W.current = e, K.current.trigger(l));
101
+ }, [q, $, l]);
102
+ const M = ((e) => {
103
+ const o = e.split(".");
104
+ let a = m.formState.errors;
105
+ for (const P of o) {
106
+ if (!a) break;
107
+ a = a[P];
108
+ }
109
+ return a;
110
+ })(l), L = M?.message, oe = h ? Array.isArray(h) ? h : [h] : [], C = {}, D = [], Z = [];
111
+ v && (C.required = "This field is required");
112
+ for (const e of oe) {
113
+ if (e.required && (C.required = typeof e.required == "string" ? e.required : e.message || "This field is required"), e.type && _[e.type] && D.push({
114
+ pattern: _[e.type].value,
115
+ message: e.message || _[e.type].message
116
+ }), e.min !== void 0) {
117
+ const o = typeof e.min == "object" ? e.min.value : e.min, a = typeof e.min == "object" ? e.min.message : e.message || `Minimum length is ${o} characters`;
118
+ C.minLength = { value: o, message: a };
119
+ }
120
+ if (e.max !== void 0) {
121
+ const o = typeof e.max == "object" ? e.max.value : e.max, a = typeof e.max == "object" ? e.max.message : e.message || `Maximum length is ${o} characters`;
122
+ C.maxLength = { value: o, message: a };
123
+ }
124
+ if (e.pattern) {
125
+ const o = e.pattern instanceof RegExp ? e.pattern : e.pattern.value, a = e.pattern instanceof RegExp ? e.message || "Invalid format" : e.pattern.message;
126
+ D.push({ pattern: o, message: a });
127
+ }
128
+ e.validate && Z.push(e.validate);
129
+ }
130
+ (D.length > 0 || Z.length > 0) && (C.validate = async (e) => {
131
+ if (!e && !C.required) return !0;
132
+ for (const { pattern: o, message: a } of D)
133
+ if (e && !o.test(e))
134
+ return a;
135
+ for (const o of Z) {
136
+ const a = await o(e);
137
+ if (a !== !0)
138
+ return a;
139
+ }
140
+ return !0;
141
+ });
142
+ const H = Array.isArray(j) ? j : [j], U = H.includes("onChange"), ae = H.includes("onBlur"), ie = ({ hasError: e, isValidating: o }) => o ? /* @__PURE__ */ t("span", { className: `${Ce} ${Ie} ${Ee} text-base-content/50` }) : e ? /* @__PURE__ */ t("svg", { className: "w-4 h-4 text-error", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) : /* @__PURE__ */ t("svg", { className: "w-4 h-4 text-success", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }), le = () => /* @__PURE__ */ t("div", { className: `${Ae} ${je} ml-1`, "data-tip": x, children: /* @__PURE__ */ t("svg", { className: "w-4 h-4 text-base-content/50 cursor-help", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }) });
143
+ return /* @__PURE__ */ t(
144
+ ye,
145
+ {
146
+ name: l,
147
+ control: m.control,
148
+ rules: C,
149
+ render: ({ field: e, fieldState: o }) => {
150
+ const { value: a, onChange: P, onBlur: ce, ref: de } = e, ue = o.isTouched && m.formState.isValidating, p = {
151
+ id: E,
152
+ ref: de,
153
+ "aria-invalid": M ? !0 : void 0,
154
+ "aria-describedby": M ? A : void 0
155
+ };
156
+ p.onBlur = () => {
157
+ ce(), ae && m.trigger(l);
158
+ }, N === "checked" ? (p.checked = a, p.onChange = (f) => {
159
+ P(f.target.checked), U && m.trigger(l);
160
+ }) : (p.value = a || "", p.onChange = (f) => {
161
+ f && f.target !== void 0 ? P(f.target.value) : P(f), U && m.trigger(l);
162
+ }), F && re(d) && (d.props.size || (p.size = F)), M && (p.color = "error", p["aria-invalid"] = !0), T && (p.disabled = !0), (I || k) && (p.unstyled = !0);
163
+ const Y = re(d) ? ge(d, p) : d, V = S === "horizontal", G = S === "inline", Q = {
164
+ xs: $e,
165
+ sm: ke,
166
+ md: Fe,
167
+ lg: Ve,
168
+ xl: we
169
+ }, me = () => {
170
+ const f = /* @__PURE__ */ w("div", { className: `${V ? "flex-1" : ""} ${u ? "relative" : ""}`, children: [
171
+ Y,
172
+ u && o.isTouched && /* @__PURE__ */ t("span", { className: "absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none", children: /* @__PURE__ */ t(ie, { hasError: !!M, isValidating: ue }) })
173
+ ] });
174
+ if (r) {
175
+ const O = [
176
+ Le,
177
+ F && Q[F]
178
+ ].filter(Boolean).join(" ");
179
+ return /* @__PURE__ */ w("label", { className: O, children: [
180
+ Y,
181
+ /* @__PURE__ */ w("span", { children: [
182
+ r,
183
+ v && /* @__PURE__ */ t("span", { className: "text-error ml-1", children: "*" })
184
+ ] })
185
+ ] });
186
+ }
187
+ return f;
188
+ }, fe = (f) => {
189
+ if (!I && !k) return f;
190
+ const O = [
191
+ Ne,
192
+ "flex",
193
+ "items-center",
194
+ "gap-2",
195
+ F && Q[F]
196
+ ].filter(Boolean).join(" ");
197
+ return /* @__PURE__ */ w("label", { className: O, children: [
198
+ I && /* @__PURE__ */ t("span", { className: "text-base-content/70", children: I }),
199
+ f,
200
+ k && /* @__PURE__ */ t("span", { className: "text-base-content/70", children: k })
201
+ ] });
202
+ };
203
+ return /* @__PURE__ */ w("div", { className: `${c ? "w-auto" : "w-full"} ${V ? "mb-4" : ""} ${G ? "inline-flex mr-4" : ""} ${g}`, style: R ? { display: "none" } : void 0, children: [
204
+ /* @__PURE__ */ w("div", { className: V ? "flex items-center gap-4" : "", children: [
205
+ n && !r && /* @__PURE__ */ t(
206
+ "label",
207
+ {
208
+ htmlFor: E,
209
+ className: `block text-sm font-medium ${V ? "flex-shrink-0 text-right" : ""} ${!V && !G ? "mb-1" : ""}`,
210
+ style: V ? { width: B } : void 0,
211
+ children: /* @__PURE__ */ w("span", { className: "flex items-center", children: [
212
+ n,
213
+ v && /* @__PURE__ */ t("span", { className: "text-error ml-1", children: "*" }),
214
+ x && /* @__PURE__ */ t(le, {})
215
+ ] })
216
+ }
217
+ ),
218
+ fe(me())
219
+ ] }),
220
+ !V && !c && /* @__PURE__ */ t("p", { id: A, className: `validator-hint ${L ? "!visible text-error" : ""} min-h-[1.25rem]`, role: L ? "alert" : void 0, children: L || i && /* @__PURE__ */ t("span", { className: "text-base-content/70", children: i }) || " " }),
221
+ V && (L || i) && /* @__PURE__ */ t("p", { id: A, className: `validator-hint ${L ? "!visible text-error" : ""} min-h-[1.25rem]`, role: L ? "alert" : void 0, children: L || i && /* @__PURE__ */ t("span", { className: "text-base-content/70", children: i }) }),
222
+ y && /* @__PURE__ */ t("div", { className: "text-sm text-base-content/60 mt-1", children: y })
223
+ ] });
224
+ }
225
+ }
226
+ );
227
+ }
228
+ function Me({
229
+ name: s,
230
+ children: n
231
+ }) {
232
+ const { form: r, layout: i, size: v, disabled: h } = J(), { fields: N, append: c, remove: g, move: d } = ve({
233
+ control: r.control,
234
+ name: s
235
+ }), x = N.map((y, u) => ({
236
+ ...y,
237
+ name: u
238
+ }));
239
+ return /* @__PURE__ */ t(X.Provider, { value: { form: r, layout: i, size: v, listName: s, disabled: h }, children: n(x, {
240
+ add: c,
241
+ remove: g,
242
+ move: d
243
+ }) });
244
+ }
245
+ function Pe() {
246
+ const s = ne(), n = s;
247
+ return n.setFieldValue = s.setValue, n.getFieldValue = (r) => s.getValues(r), n.getFieldsValue = s.getValues, n.setFieldsValue = (r) => {
248
+ Object.keys(r).forEach((i) => {
249
+ s.setValue(i, r[i]);
250
+ });
251
+ }, n.validateFields = s.trigger, n.resetFields = s.reset, n.isFieldTouched = (r) => !!s.formState.touchedFields[r], n.getFieldError = (r) => s.formState.errors[r]?.message, n;
252
+ }
253
+ function Re({ fields: s, className: n = "" }) {
254
+ const { form: r } = J(), { errors: i } = r.formState, v = (c, g = "") => {
255
+ const d = [];
256
+ for (const x in c) {
257
+ const y = g ? `${g}.${x}` : x, u = c[x];
258
+ u?.message ? d.push({ field: y, message: u.message }) : typeof u == "object" && u !== null && d.push(...v(u, y));
259
+ }
260
+ return d;
261
+ }, h = v(i), N = s ? h.filter((c) => s.includes(c.field)) : h;
262
+ return N.length === 0 ? null : /* @__PURE__ */ t("ul", { className: `text-error text-sm space-y-1 ${n}`, role: "alert", children: N.map((c, g) => /* @__PURE__ */ w("li", { className: "flex items-start gap-2", children: [
263
+ /* @__PURE__ */ t("svg", { className: "w-4 h-4 mt-0.5 flex-shrink-0", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }),
264
+ /* @__PURE__ */ t("span", { children: c.message })
265
+ ] }, `${c.field}-${g}`)) });
266
+ }
267
+ const Oe = Object.assign(ze, {
268
+ Item: Se,
269
+ List: Me,
270
+ ErrorList: Re,
271
+ useForm: Pe
272
+ });
273
+ export {
274
+ Oe as Form,
275
+ Pe as useFormInstance
276
+ };
277
+ //# sourceMappingURL=Form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form.js","sources":["../../src/components/Form.tsx"],"sourcesContent":["import React, { createContext, useContext, cloneElement, isValidElement, useId, useEffect, useRef } from 'react'\nimport { useForm, UseFormReturn, FieldValues, SubmitHandler, UseFormProps, Controller, useFieldArray, FieldArrayPath, FieldArray, useWatch } from 'react-hook-form'\nimport { useConfig } from './ConfigProvider'\n\n// DaisyUI classes\nconst dInput = 'd-input'\nconst dInputXs = 'd-input-xs'\nconst dInputSm = 'd-input-sm'\nconst dInputMd = 'd-input-md'\nconst dInputLg = 'd-input-lg'\nconst dInputXl = 'd-input-xl'\nconst dFloatingLabel = 'd-floating-label'\nconst dLoading = 'd-loading'\nconst dLoadingSpinner = 'd-loading-spinner'\nconst dLoadingXs = 'd-loading-xs'\nconst dTooltip = 'd-tooltip'\nconst dTooltipTop = 'd-tooltip-top'\n\ninterface FormContextValue {\n form: UseFormReturn<any>\n layout?: 'vertical' | 'horizontal' | 'inline'\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n labelWidth?: number\n listName?: string\n disabled?: boolean\n}\n\nconst FormContext = createContext<FormContextValue | undefined>(undefined)\n\n// Built-in type validators\nconst TYPE_VALIDATORS = {\n email: {\n value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i,\n message: 'Please enter a valid email address',\n },\n url: {\n value: /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)$/,\n message: 'Please enter a valid URL',\n },\n number: {\n value: /^-?\\d+(\\.\\d+)?$/,\n message: 'Please enter a valid number',\n },\n}\n\nexport interface FormProps<TFieldValues extends FieldValues = FieldValues>\n extends Omit<React.FormHTMLAttributes<HTMLFormElement>, 'onSubmit'> {\n form?: UseFormReturn<TFieldValues>\n onFinish?: SubmitHandler<TFieldValues>\n /** Called when form validation fails */\n onFinishFailed?: (errorInfo: { values: TFieldValues; errorFields: Array<{ name: string; errors: string[] }> }) => void\n initialValues?: UseFormProps<TFieldValues>['defaultValues']\n layout?: 'vertical' | 'horizontal' | 'inline'\n /** Label width in pixels for horizontal layout (default: 80) */\n labelWidth?: number\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Disable all form fields */\n disabled?: boolean\n children: React.ReactNode\n}\n\nexport interface FormRule {\n required?: boolean | string\n type?: 'email' | 'url' | 'number'\n min?: number | { value: number; message: string }\n max?: number | { value: number; message: string }\n pattern?: RegExp | { value: RegExp; message: string }\n message?: string\n validate?: (value: any) => boolean | string | Promise<boolean | string>\n}\n\nexport type ValidateTrigger = 'onChange' | 'onBlur' | 'onSubmit' | ('onChange' | 'onBlur' | 'onSubmit')[]\n\nexport interface FormItemProps {\n name?: string | string[]\n label?: string\n /** Floating label text (alternative to label, uses DaisyUI floating-label) */\n floatingLabel?: string\n help?: string\n required?: boolean\n rules?: FormRule | FormRule[]\n valuePropName?: string\n inline?: boolean\n className?: string\n children: React.ReactElement\n /** Tooltip text to show next to label */\n tooltip?: string\n /** Additional content below the form control */\n extra?: React.ReactNode\n /** Show validation feedback icon */\n hasFeedback?: boolean\n /** Field names that this field depends on for validation */\n dependencies?: string[]\n /** When to trigger validation */\n validateTrigger?: ValidateTrigger\n /** Initial value for this field (overrides Form's initialValues) */\n initialValue?: any\n /** Hide this field (still validates and submits) */\n hidden?: boolean\n /** Text/element before input (outside, using DaisyUI label) */\n addonBefore?: React.ReactNode\n /** Text/element after input (outside, using DaisyUI label) */\n addonAfter?: React.ReactNode\n}\n\nexport interface FormListProps<TFieldValues extends FieldValues = FieldValues> {\n name: FieldArrayPath<TFieldValues>\n children: (\n fields: FieldArray<TFieldValues>[],\n operations: {\n add: (value?: any) => void\n remove: (index: number) => void\n move: (from: number, to: number) => void\n }\n ) => React.ReactNode\n}\n\nfunction useFormContext() {\n const context = useContext(FormContext)\n if (!context) {\n throw new Error('Form compound components must be used within Form')\n }\n return context\n}\n\nfunction FormRoot<TFieldValues extends FieldValues = FieldValues>({\n form: externalForm,\n onFinish,\n onFinishFailed,\n initialValues,\n layout = 'vertical',\n labelWidth = 60,\n size,\n disabled = false,\n children,\n className = '',\n noValidate = true,\n ...props\n}: FormProps<TFieldValues>) {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n\n const internalForm = useForm<TFieldValues>({\n defaultValues: initialValues,\n })\n\n const form = externalForm || internalForm\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n\n // Trigger validation\n const isValid = await form.trigger()\n\n if (isValid) {\n if (onFinish) {\n onFinish(form.getValues())\n }\n } else {\n if (onFinishFailed) {\n const errors = form.formState.errors\n const errorFields: Array<{ name: string; errors: string[] }> = []\n\n // Flatten errors into errorFields array\n const flattenErrors = (obj: any, prefix = '') => {\n for (const key in obj) {\n const fullKey = prefix ? `${prefix}.${key}` : key\n const value = obj[key]\n if (value?.message) {\n errorFields.push({ name: fullKey, errors: [value.message as string] })\n } else if (typeof value === 'object' && value !== null) {\n flattenErrors(value, fullKey)\n }\n }\n }\n flattenErrors(errors)\n\n onFinishFailed({ values: form.getValues(), errorFields })\n }\n }\n }\n\n const handleReset = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n form.reset(initialValues as any)\n }\n\n return (\n <FormContext.Provider value={{ form, layout, labelWidth, size: effectiveSize, disabled }}>\n <form onSubmit={handleSubmit} onReset={handleReset} className={className} noValidate={noValidate} {...props}>\n {children}\n </form>\n </FormContext.Provider>\n )\n}\n\nfunction FormItem({\n name,\n label,\n floatingLabel,\n help,\n required = false,\n rules,\n valuePropName = 'value',\n inline = false,\n className = '',\n children,\n tooltip,\n extra,\n hasFeedback = false,\n dependencies,\n validateTrigger = 'onChange',\n initialValue,\n hidden = false,\n addonBefore,\n addonAfter,\n}: FormItemProps) {\n const { form, size, listName, layout, labelWidth, disabled: formDisabled } = useFormContext()\n const inputId = useId()\n const errorId = useId()\n\n if (!name) {\n // Render without form control if no name provided\n return <div className={`${inline ? 'w-auto' : 'w-full'} ${className}`} style={hidden ? { display: 'none' } : undefined}>{children}</div>\n }\n\n // Handle nested field names (for Form.List)\n let fieldName: string\n if (Array.isArray(name)) {\n // If we're inside a Form.List, prepend the list name\n const fullPath = listName ? [listName, ...name] : name\n fieldName = fullPath.join('.')\n } else {\n fieldName = name\n }\n\n // Set initial value if provided\n useEffect(() => {\n if (initialValue !== undefined) {\n const currentValue = form.getValues(fieldName as any)\n if (currentValue === undefined) {\n form.setValue(fieldName as any, initialValue)\n }\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Watch dependencies and re-validate when they change\n const watchedDeps = useWatch({\n control: form.control,\n name: dependencies as any,\n disabled: !dependencies || dependencies.length === 0,\n })\n\n // Use refs to avoid infinite loops\n const formRef = useRef(form)\n formRef.current = form\n const prevDepsRef = useRef<string | undefined>(undefined)\n\n useEffect(() => {\n // Skip if no dependencies\n if (!dependencies || dependencies.length === 0) return\n\n // Skip initial render\n if (prevDepsRef.current === undefined) {\n prevDepsRef.current = JSON.stringify(watchedDeps)\n return\n }\n\n // Only trigger if dependency values actually changed\n const currentDeps = JSON.stringify(watchedDeps)\n if (prevDepsRef.current !== currentDeps) {\n prevDepsRef.current = currentDeps\n formRef.current.trigger(fieldName as any)\n }\n }, [watchedDeps, dependencies, fieldName])\n\n // Get error by traversing the error object path\n const getErrorByPath = (path: string) => {\n const keys = path.split('.')\n let error: any = form.formState.errors\n for (const key of keys) {\n if (!error) break\n error = error[key]\n }\n return error\n }\n\n const error = getErrorByPath(fieldName)\n const errorMessage = error?.message as string | undefined\n\n // Normalize rules to array\n const rulesArray: FormRule[] = rules\n ? Array.isArray(rules) ? rules : [rules]\n : []\n\n // Build validation rules\n const validationRules: any = {}\n const patternValidators: Array<{ pattern: RegExp; message: string }> = []\n const customValidators: Array<(value: any) => boolean | string | Promise<boolean | string>> = []\n\n // Handle top-level required prop\n if (required) {\n validationRules.required = 'This field is required'\n }\n\n // Process each rule\n for (const rule of rulesArray) {\n // Required\n if (rule.required) {\n validationRules.required = typeof rule.required === 'string'\n ? rule.required\n : rule.message || 'This field is required'\n }\n\n // Type validator\n if (rule.type && TYPE_VALIDATORS[rule.type]) {\n patternValidators.push({\n pattern: TYPE_VALIDATORS[rule.type].value,\n message: rule.message || TYPE_VALIDATORS[rule.type].message,\n })\n }\n\n // Min length\n if (rule.min !== undefined) {\n const minValue = typeof rule.min === 'object' ? rule.min.value : rule.min\n const minMessage = typeof rule.min === 'object'\n ? rule.min.message\n : rule.message || `Minimum length is ${minValue} characters`\n validationRules.minLength = { value: minValue, message: minMessage }\n }\n\n // Max length\n if (rule.max !== undefined) {\n const maxValue = typeof rule.max === 'object' ? rule.max.value : rule.max\n const maxMessage = typeof rule.max === 'object'\n ? rule.max.message\n : rule.message || `Maximum length is ${maxValue} characters`\n validationRules.maxLength = { value: maxValue, message: maxMessage }\n }\n\n // Pattern - collect all patterns\n if (rule.pattern) {\n const patternValue = rule.pattern instanceof RegExp ? rule.pattern : rule.pattern.value\n const patternMessage = rule.pattern instanceof RegExp\n ? rule.message || 'Invalid format'\n : rule.pattern.message\n patternValidators.push({ pattern: patternValue, message: patternMessage })\n }\n\n // Custom validator\n if (rule.validate) {\n customValidators.push(rule.validate)\n }\n }\n\n // Combine all pattern and custom validators into a single validate function\n if (patternValidators.length > 0 || customValidators.length > 0) {\n validationRules.validate = async (value: any) => {\n // Skip validation if empty (required rule handles that)\n if (!value && !validationRules.required) return true\n\n // Check all patterns\n for (const { pattern, message } of patternValidators) {\n if (value && !pattern.test(value)) {\n return message\n }\n }\n\n // Run all custom validators\n for (const validator of customValidators) {\n const result = await validator(value)\n if (result !== true) {\n return result\n }\n }\n\n return true\n }\n }\n\n // Normalize validateTrigger to array\n const triggers = Array.isArray(validateTrigger) ? validateTrigger : [validateTrigger]\n const shouldValidateOnChange = triggers.includes('onChange')\n const shouldValidateOnBlur = triggers.includes('onBlur')\n\n // Feedback icons\n const FeedbackIcon = ({ hasError, isValidating }: { hasError: boolean; isValidating: boolean }) => {\n if (isValidating) {\n return (\n <span className={`${dLoading} ${dLoadingSpinner} ${dLoadingXs} text-base-content/50`} />\n )\n }\n if (hasError) {\n return (\n <svg className=\"w-4 h-4 text-error\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n )\n }\n return (\n <svg className=\"w-4 h-4 text-success\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n )\n }\n\n // Tooltip icon\n const TooltipIcon = () => (\n <div className={`${dTooltip} ${dTooltipTop} ml-1`} data-tip={tooltip}>\n <svg className=\"w-4 h-4 text-base-content/50 cursor-help\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n </div>\n )\n\n return (\n <Controller\n name={fieldName}\n control={form.control}\n rules={validationRules}\n render={({ field, fieldState }) => {\n const { value, onChange, onBlur, ref } = field\n const isValidating = fieldState.isTouched && form.formState.isValidating\n\n // Clone the child element and inject form control props\n const childProps: any = {\n id: inputId,\n ref,\n 'aria-invalid': error ? true : undefined,\n 'aria-describedby': error ? errorId : undefined,\n }\n\n // Handle onBlur based on validateTrigger\n childProps.onBlur = () => {\n onBlur()\n if (shouldValidateOnBlur) {\n form.trigger(fieldName as any)\n }\n }\n\n // Handle different value prop names (e.g., 'checked' for checkboxes)\n if (valuePropName === 'checked') {\n childProps.checked = value\n childProps.onChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e.target.checked)\n if (shouldValidateOnChange) {\n form.trigger(fieldName as any)\n }\n }\n } else {\n childProps.value = value || ''\n childProps.onChange = (eventOrValue: any) => {\n // Handle components that pass value directly (e.g., Range, Rating)\n // vs components that pass event object (e.g., Input, Select)\n if (eventOrValue && eventOrValue.target !== undefined) {\n onChange(eventOrValue.target.value)\n } else {\n onChange(eventOrValue)\n }\n if (shouldValidateOnChange) {\n form.trigger(fieldName as any)\n }\n }\n }\n\n // Apply size if specified at form level\n if (size && isValidElement(children)) {\n const existingProps = children.props as any\n if (!existingProps.size) {\n childProps.size = size\n }\n }\n\n // Apply error styling and accessibility\n if (error) {\n childProps.color = 'error'\n childProps['aria-invalid'] = true\n }\n\n // Apply form-level disabled state\n if (formDisabled) {\n childProps.disabled = true\n }\n\n // When wrapped with addons, the child input should be unstyled (the wrapper has the styling)\n const hasAddons = addonBefore || addonAfter\n if (hasAddons) {\n childProps.unstyled = true\n }\n\n const enhancedChild = isValidElement(children)\n ? cloneElement(children as React.ReactElement<any>, childProps)\n : children\n\n const isHorizontal = layout === 'horizontal'\n const isInline = layout === 'inline'\n\n // Size class for floating label\n const floatingSizeClasses: Record<string, string> = {\n xs: dInputXs,\n sm: dInputSm,\n md: dInputMd,\n lg: dInputLg,\n xl: dInputXl,\n }\n\n // Build the input element with optional floating label wrapper\n const renderInputElement = () => {\n const inputWithFeedback = (\n <div className={`${isHorizontal ? 'flex-1' : ''} ${hasFeedback ? 'relative' : ''}`}>\n {enhancedChild}\n {hasFeedback && fieldState.isTouched && (\n <span className=\"absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none\">\n <FeedbackIcon hasError={!!error} isValidating={isValidating} />\n </span>\n )}\n </div>\n )\n\n // Floating label variant\n if (floatingLabel) {\n const floatingClasses = [\n dFloatingLabel,\n size && floatingSizeClasses[size],\n ].filter(Boolean).join(' ')\n\n return (\n <label className={floatingClasses}>\n {enhancedChild}\n <span>{floatingLabel}{required && <span className=\"text-error ml-1\">*</span>}</span>\n </label>\n )\n }\n\n return inputWithFeedback\n }\n\n // Wrap with external addons if specified using DaisyUI input wrapper pattern\n const renderWithAddons = (input: React.ReactNode) => {\n if (!addonBefore && !addonAfter) return input\n\n const addonClasses = [\n dInput,\n 'flex',\n 'items-center',\n 'gap-2',\n size && floatingSizeClasses[size],\n ].filter(Boolean).join(' ')\n\n return (\n <label className={addonClasses}>\n {addonBefore && <span className=\"text-base-content/70\">{addonBefore}</span>}\n {input}\n {addonAfter && <span className=\"text-base-content/70\">{addonAfter}</span>}\n </label>\n )\n }\n\n return (\n <div className={`${inline ? 'w-auto' : 'w-full'} ${isHorizontal ? 'mb-4' : ''} ${isInline ? 'inline-flex mr-4' : ''} ${className}`} style={hidden ? { display: 'none' } : undefined}>\n <div className={isHorizontal ? 'flex items-center gap-4' : ''}>\n {label && !floatingLabel && (\n <label\n htmlFor={inputId}\n className={`block text-sm font-medium ${isHorizontal ? 'flex-shrink-0 text-right' : ''} ${!isHorizontal && !isInline ? 'mb-1' : ''}`}\n style={isHorizontal ? { width: labelWidth } : undefined}\n >\n <span className=\"flex items-center\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n {tooltip && <TooltipIcon />}\n </span>\n </label>\n )}\n {renderWithAddons(renderInputElement())}\n </div>\n {!isHorizontal && !inline && (\n <p id={errorId} className={`validator-hint ${errorMessage ? '!visible text-error' : ''} min-h-[1.25rem]`} role={errorMessage ? 'alert' : undefined}>\n {errorMessage || (help && <span className=\"text-base-content/70\">{help}</span>) || '\\u00A0'}\n </p>\n )}\n {isHorizontal && (errorMessage || help) && (\n <p id={errorId} className={`validator-hint ${errorMessage ? '!visible text-error' : ''} min-h-[1.25rem]`} role={errorMessage ? 'alert' : undefined}>\n {errorMessage || (help && <span className=\"text-base-content/70\">{help}</span>)}\n </p>\n )}\n {extra && (\n <div className=\"text-sm text-base-content/60 mt-1\">{extra}</div>\n )}\n </div>\n )\n }}\n />\n )\n}\n\nfunction FormList<TFieldValues extends FieldValues = FieldValues>({\n name,\n children,\n}: FormListProps<TFieldValues>) {\n const { form, layout, size, disabled } = useFormContext()\n\n const { fields, append, remove, move } = useFieldArray({\n control: form.control,\n name,\n })\n\n // Add name (index) to each field for proper path construction\n const fieldsWithName = fields.map((field, index) => ({\n ...field,\n name: index,\n }))\n\n return (\n <FormContext.Provider value={{ form, layout, size, listName: name as string, disabled }}>\n {children(fieldsWithName as any, {\n add: append,\n remove,\n move,\n })}\n </FormContext.Provider>\n )\n}\n\n// Enhanced hook to expose full form API\nexport function useFormInstance<TFieldValues extends FieldValues = FieldValues>() {\n const formInstance = useForm<TFieldValues>()\n\n // Add convenience methods to the instance\n const enhancedInstance = formInstance as typeof formInstance & {\n setFieldValue: typeof formInstance.setValue\n getFieldValue: (name: any) => any\n getFieldsValue: typeof formInstance.getValues\n setFieldsValue: (values: any) => void\n validateFields: typeof formInstance.trigger\n resetFields: typeof formInstance.reset\n isFieldTouched: (name: string) => boolean\n getFieldError: (name: string) => string | undefined\n }\n\n // Add the alias methods\n enhancedInstance.setFieldValue = formInstance.setValue\n enhancedInstance.getFieldValue = (name: any) => formInstance.getValues(name)\n enhancedInstance.getFieldsValue = formInstance.getValues\n enhancedInstance.setFieldsValue = (values: any) => {\n Object.keys(values).forEach((key) => {\n formInstance.setValue(key as any, values[key])\n })\n }\n enhancedInstance.validateFields = formInstance.trigger\n enhancedInstance.resetFields = formInstance.reset\n enhancedInstance.isFieldTouched = (name: string) => {\n const touched = formInstance.formState.touchedFields as any\n return !!touched[name]\n }\n enhancedInstance.getFieldError = (name: string) => {\n const errors = formInstance.formState.errors as any\n return errors[name]?.message as string | undefined\n }\n\n return enhancedInstance\n}\n\nexport interface FormErrorListProps {\n /** Specific field names to show errors for (shows all errors if not specified) */\n fields?: string[]\n /** Custom className */\n className?: string\n}\n\nfunction FormErrorList({ fields, className = '' }: FormErrorListProps) {\n const { form } = useFormContext()\n const { errors } = form.formState\n\n // Flatten nested errors into a list\n const flattenErrors = (obj: any, prefix = ''): Array<{ field: string; message: string }> => {\n const result: Array<{ field: string; message: string }> = []\n\n for (const key in obj) {\n const fullKey = prefix ? `${prefix}.${key}` : key\n const value = obj[key]\n\n if (value?.message) {\n result.push({ field: fullKey, message: value.message as string })\n } else if (typeof value === 'object' && value !== null) {\n result.push(...flattenErrors(value, fullKey))\n }\n }\n\n return result\n }\n\n const allErrors = flattenErrors(errors)\n const filteredErrors = fields\n ? allErrors.filter(e => fields.includes(e.field))\n : allErrors\n\n if (filteredErrors.length === 0) {\n return null\n }\n\n return (\n <ul className={`text-error text-sm space-y-1 ${className}`} role=\"alert\">\n {filteredErrors.map((error, index) => (\n <li key={`${error.field}-${index}`} className=\"flex items-start gap-2\">\n <svg className=\"w-4 h-4 mt-0.5 flex-shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n <span>{error.message}</span>\n </li>\n ))}\n </ul>\n )\n}\n\nexport const Form = Object.assign(FormRoot, {\n Item: FormItem,\n List: FormList,\n ErrorList: FormErrorList,\n useForm: useFormInstance,\n})\n\nexport type { UseFormReturn as FormInstance }\n"],"names":["dInput","dInputXs","dInputSm","dInputMd","dInputLg","dInputXl","dFloatingLabel","dLoading","dLoadingSpinner","dLoadingXs","dTooltip","dTooltipTop","FormContext","createContext","TYPE_VALIDATORS","useFormContext","context","useContext","FormRoot","externalForm","onFinish","onFinishFailed","initialValues","layout","labelWidth","size","disabled","children","className","noValidate","props","componentSize","useConfig","effectiveSize","internalForm","useForm","form","handleSubmit","e","errors","errorFields","flattenErrors","obj","prefix","key","fullKey","value","handleReset","jsx","FormItem","name","label","floatingLabel","help","required","rules","valuePropName","inline","tooltip","extra","hasFeedback","dependencies","validateTrigger","initialValue","hidden","addonBefore","addonAfter","listName","formDisabled","inputId","useId","errorId","fieldName","useEffect","watchedDeps","useWatch","formRef","useRef","prevDepsRef","currentDeps","error","path","keys","errorMessage","rulesArray","validationRules","patternValidators","customValidators","rule","minValue","minMessage","maxValue","maxMessage","patternValue","patternMessage","pattern","message","validator","result","triggers","shouldValidateOnChange","shouldValidateOnBlur","FeedbackIcon","hasError","isValidating","TooltipIcon","Controller","field","fieldState","onChange","onBlur","ref","childProps","eventOrValue","isValidElement","enhancedChild","cloneElement","isHorizontal","isInline","floatingSizeClasses","renderInputElement","inputWithFeedback","jsxs","floatingClasses","renderWithAddons","input","addonClasses","FormList","fields","append","remove","move","useFieldArray","fieldsWithName","index","useFormInstance","formInstance","enhancedInstance","values","FormErrorList","allErrors","filteredErrors","Form"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { default as React } from 'react';
2
+ export interface RowProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ children: React.ReactNode;
4
+ cols?: 24 | 120;
5
+ gutter?: number | [number, number];
6
+ justify?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly';
7
+ align?: 'start' | 'end' | 'center' | 'stretch' | 'baseline';
8
+ }
9
+ export interface ColProps extends React.HTMLAttributes<HTMLDivElement> {
10
+ children: React.ReactNode;
11
+ span?: number;
12
+ offset?: number;
13
+ order?: number;
14
+ xs?: number;
15
+ sm?: number;
16
+ md?: number;
17
+ lg?: number;
18
+ xl?: number;
19
+ xxl?: number;
20
+ }
21
+ export declare function Row({ children, cols, gutter, justify, align, className, style: userStyle, ...rest }: RowProps): import("react/jsx-runtime").JSX.Element;
22
+ export declare function Col({ children, span, offset, order, xs, sm, md, lg, xl, xxl, className, style: userStyle, ...rest }: ColProps): import("react/jsx-runtime").JSX.Element;
23
+ export declare const Grid: {
24
+ Row: typeof Row;
25
+ Col: typeof Col;
26
+ };