@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
package/LICENSE ADDED
@@ -0,0 +1,15 @@
1
+ ISC License
2
+
3
+ Copyright (c) 2025
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,40 @@
1
+ # @aster-ui/prefixed
2
+
3
+ React UI component library with DaisyUI - prefixed version.
4
+
5
+ This package is identical to `asterui` but uses prefixed DaisyUI classes (`d-btn`, `d-card`, etc.) to avoid conflicts with other CSS frameworks or custom styles.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install @aster-ui/prefixed
11
+ # or
12
+ pnpm add @aster-ui/prefixed
13
+ ```
14
+
15
+ ## DaisyUI Configuration
16
+
17
+ When using this package, you must configure DaisyUI to use the `d-` prefix in your CSS:
18
+
19
+ ```css
20
+ @import "tailwindcss";
21
+ @plugin "daisyui" {
22
+ prefix: "d-";
23
+ }
24
+ ```
25
+
26
+ ## Usage
27
+
28
+ ```tsx
29
+ import { Button, Card } from '@aster-ui/prefixed'
30
+
31
+ function App() {
32
+ return (
33
+ <Card>
34
+ <Button color="primary">Click me</Button>
35
+ </Card>
36
+ )
37
+ }
38
+ ```
39
+
40
+ The components will automatically use the prefixed DaisyUI classes internally (e.g., `d-btn`, `d-card`).
@@ -0,0 +1,2 @@
1
+ export { Chart } from './components/Chart';
2
+ export type { ChartProps } from './components/Chart';
package/dist/chart.js ADDED
@@ -0,0 +1,5 @@
1
+ import { Chart as t } from "./components/Chart.js";
2
+ export {
3
+ t as Chart
4
+ };
5
+ //# sourceMappingURL=chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,14 @@
1
+ import { default as React } from 'react';
2
+ export interface AffixProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
3
+ /** Content to make sticky */
4
+ children: React.ReactNode;
5
+ /** Offset from top when fixed (pixels) */
6
+ offsetTop?: number;
7
+ /** Offset from bottom when fixed (pixels) */
8
+ offsetBottom?: number;
9
+ /** Scroll target (default: window) */
10
+ target?: () => HTMLElement | Window;
11
+ /** Callback when affix state changes */
12
+ onChange?: (affixed: boolean) => void;
13
+ }
14
+ export declare const Affix: React.FC<AffixProps>;
@@ -0,0 +1,57 @@
1
+ import { jsx as u, jsxs as L } from "react/jsx-runtime";
2
+ import { useState as w, useRef as S, useEffect as b } from "react";
3
+ const j = ({
4
+ children: a,
5
+ offsetTop: t,
6
+ offsetBottom: i,
7
+ target: m,
8
+ onChange: h,
9
+ className: x = "",
10
+ ...v
11
+ }) => {
12
+ const [r, R] = w(!1), [z, y] = w({}), [A, g] = w({}), l = S(null), d = S(null), o = !!m;
13
+ return b(() => {
14
+ if (o)
15
+ return;
16
+ const c = window, n = () => {
17
+ if (!l.current || !d.current) return;
18
+ const s = l.current.getBoundingClientRect(), p = d.current.getBoundingClientRect();
19
+ let e = !1, f = {};
20
+ if (t !== void 0)
21
+ e = s.top < t, e && (f = {
22
+ position: "fixed",
23
+ top: t,
24
+ width: s.width,
25
+ zIndex: 100
26
+ });
27
+ else if (i !== void 0) {
28
+ const E = window.innerHeight;
29
+ e = s.bottom > E - i, e && (f = {
30
+ position: "fixed",
31
+ bottom: i,
32
+ width: s.width,
33
+ zIndex: 100
34
+ });
35
+ }
36
+ e !== r && (R(e), h?.(e)), e ? (y({
37
+ width: p.width,
38
+ height: p.height
39
+ }), g(f)) : (y({}), g({}));
40
+ };
41
+ return c.addEventListener("scroll", n), window.addEventListener("resize", n), n(), () => {
42
+ c.removeEventListener("scroll", n), window.removeEventListener("resize", n);
43
+ };
44
+ }, [o, t, i, r, h]), o ? /* @__PURE__ */ u("div", { className: x, style: {
45
+ position: "sticky",
46
+ top: t,
47
+ bottom: i,
48
+ zIndex: 100
49
+ }, ...v, children: a }) : /* @__PURE__ */ L("div", { ref: l, className: x, "data-state": r ? "affixed" : "normal", ...v, children: [
50
+ r && /* @__PURE__ */ u("div", { style: z }),
51
+ /* @__PURE__ */ u("div", { ref: d, style: A, children: a })
52
+ ] });
53
+ };
54
+ export {
55
+ j as Affix
56
+ };
57
+ //# sourceMappingURL=Affix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Affix.js","sources":["../../src/components/Affix.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react'\n\nexport interface AffixProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Content to make sticky */\n children: React.ReactNode\n /** Offset from top when fixed (pixels) */\n offsetTop?: number\n /** Offset from bottom when fixed (pixels) */\n offsetBottom?: number\n /** Scroll target (default: window) */\n target?: () => HTMLElement | Window\n /** Callback when affix state changes */\n onChange?: (affixed: boolean) => void\n}\n\nexport const Affix: React.FC<AffixProps> = ({\n children,\n offsetTop,\n offsetBottom,\n target,\n onChange,\n className = '',\n ...rest\n}) => {\n const [affixed, setAffixed] = useState(false)\n const [placeholderStyle, setPlaceholderStyle] = useState<React.CSSProperties>({})\n const [affixStyle, setAffixStyle] = useState<React.CSSProperties>({})\n const wrapperRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n // For custom targets, use CSS sticky positioning\n const hasCustomTarget = !!target\n\n useEffect(() => {\n // For custom targets, use CSS sticky - no JS needed for positioning\n if (hasCustomTarget) {\n return\n }\n\n const scrollTarget = window\n\n const handleScroll = () => {\n if (!wrapperRef.current || !contentRef.current) return\n\n const rect = wrapperRef.current.getBoundingClientRect()\n const contentRect = contentRef.current.getBoundingClientRect()\n\n let shouldAffix = false\n let newAffixStyle: React.CSSProperties = {}\n\n if (offsetTop !== undefined) {\n // Affix to top\n shouldAffix = rect.top < offsetTop\n if (shouldAffix) {\n newAffixStyle = {\n position: 'fixed',\n top: offsetTop,\n width: rect.width,\n zIndex: 100,\n }\n }\n } else if (offsetBottom !== undefined) {\n // Affix to bottom\n const viewportHeight = window.innerHeight\n shouldAffix = rect.bottom > viewportHeight - offsetBottom\n if (shouldAffix) {\n newAffixStyle = {\n position: 'fixed',\n bottom: offsetBottom,\n width: rect.width,\n zIndex: 100,\n }\n }\n }\n\n if (shouldAffix !== affixed) {\n setAffixed(shouldAffix)\n onChange?.(shouldAffix)\n }\n\n if (shouldAffix) {\n setPlaceholderStyle({\n width: contentRect.width,\n height: contentRect.height,\n })\n setAffixStyle(newAffixStyle)\n } else {\n setPlaceholderStyle({})\n setAffixStyle({})\n }\n }\n\n scrollTarget.addEventListener('scroll', handleScroll)\n window.addEventListener('resize', handleScroll)\n handleScroll()\n\n return () => {\n scrollTarget.removeEventListener('scroll', handleScroll)\n window.removeEventListener('resize', handleScroll)\n }\n }, [hasCustomTarget, offsetTop, offsetBottom, affixed, onChange])\n\n // For custom scroll containers, use CSS sticky\n if (hasCustomTarget) {\n const stickyStyle: React.CSSProperties = {\n position: 'sticky',\n top: offsetTop,\n bottom: offsetBottom,\n zIndex: 100,\n }\n\n return (\n <div className={className} style={stickyStyle} {...rest}>\n {children}\n </div>\n )\n }\n\n // For window scrolling, use fixed positioning with JS\n return (\n <div ref={wrapperRef} className={className} data-state={affixed ? 'affixed' : 'normal'} {...rest}>\n {affixed && <div style={placeholderStyle} />}\n <div ref={contentRef} style={affixStyle}>\n {children}\n </div>\n </div>\n )\n}\n"],"names":["Affix","children","offsetTop","offsetBottom","target","onChange","className","rest","affixed","setAffixed","useState","placeholderStyle","setPlaceholderStyle","affixStyle","setAffixStyle","wrapperRef","useRef","contentRef","hasCustomTarget","useEffect","scrollTarget","handleScroll","rect","contentRect","shouldAffix","newAffixStyle","viewportHeight","jsxs","jsx"],"mappings":";;AAeO,MAAMA,IAA8B,CAAC;AAAA,EAC1C,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,MAAM;AACJ,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAS,EAAK,GACtC,CAACC,GAAkBC,CAAmB,IAAIF,EAA8B,CAAA,CAAE,GAC1E,CAACG,GAAYC,CAAa,IAAIJ,EAA8B,CAAA,CAAE,GAC9DK,IAAaC,EAAuB,IAAI,GACxCC,IAAaD,EAAuB,IAAI,GAGxCE,IAAkB,CAAC,CAACd;AAwE1B,SAtEAe,EAAU,MAAM;AAEd,QAAID;AACF;AAGF,UAAME,IAAe,QAEfC,IAAe,MAAM;AACzB,UAAI,CAACN,EAAW,WAAW,CAACE,EAAW,QAAS;AAEhD,YAAMK,IAAOP,EAAW,QAAQ,sBAAA,GAC1BQ,IAAcN,EAAW,QAAQ,sBAAA;AAEvC,UAAIO,IAAc,IACdC,IAAqC,CAAA;AAEzC,UAAIvB,MAAc;AAEhB,QAAAsB,IAAcF,EAAK,MAAMpB,GACrBsB,MACFC,IAAgB;AAAA,UACd,UAAU;AAAA,UACV,KAAKvB;AAAA,UACL,OAAOoB,EAAK;AAAA,UACZ,QAAQ;AAAA,QAAA;AAAA,eAGHnB,MAAiB,QAAW;AAErC,cAAMuB,IAAiB,OAAO;AAC9B,QAAAF,IAAcF,EAAK,SAASI,IAAiBvB,GACzCqB,MACFC,IAAgB;AAAA,UACd,UAAU;AAAA,UACV,QAAQtB;AAAA,UACR,OAAOmB,EAAK;AAAA,UACZ,QAAQ;AAAA,QAAA;AAAA,MAGd;AAEA,MAAIE,MAAgBhB,MAClBC,EAAWe,CAAW,GACtBnB,IAAWmB,CAAW,IAGpBA,KACFZ,EAAoB;AAAA,QAClB,OAAOW,EAAY;AAAA,QACnB,QAAQA,EAAY;AAAA,MAAA,CACrB,GACDT,EAAcW,CAAa,MAE3Bb,EAAoB,CAAA,CAAE,GACtBE,EAAc,CAAA,CAAE;AAAA,IAEpB;AAEA,WAAAM,EAAa,iBAAiB,UAAUC,CAAY,GACpD,OAAO,iBAAiB,UAAUA,CAAY,GAC9CA,EAAA,GAEO,MAAM;AACX,MAAAD,EAAa,oBAAoB,UAAUC,CAAY,GACvD,OAAO,oBAAoB,UAAUA,CAAY;AAAA,IACnD;AAAA,EACF,GAAG,CAACH,GAAiBhB,GAAWC,GAAcK,GAASH,CAAQ,CAAC,GAG5Da,sBASC,OAAA,EAAI,WAAAZ,GAAsB,OARY;AAAA,IACvC,UAAU;AAAA,IACV,KAAKJ;AAAA,IACL,QAAQC;AAAA,IACR,QAAQ;AAAA,EAAA,GAIwC,GAAGI,GAChD,UAAAN,GACH,IAMF,gBAAA0B,EAAC,OAAA,EAAI,KAAKZ,GAAY,WAAAT,GAAsB,cAAYE,IAAU,YAAY,UAAW,GAAGD,GACzF,UAAA;AAAA,IAAAC,KAAW,gBAAAoB,EAAC,OAAA,EAAI,OAAOjB,EAAA,CAAkB;AAAA,sBACzC,OAAA,EAAI,KAAKM,GAAY,OAAOJ,GAC1B,UAAAZ,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;"}
@@ -0,0 +1,10 @@
1
+ import { default as React } from 'react';
2
+ export interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ children: React.ReactNode;
4
+ type?: 'info' | 'success' | 'warning' | 'error';
5
+ outline?: boolean;
6
+ dash?: boolean;
7
+ soft?: boolean;
8
+ vertical?: boolean;
9
+ }
10
+ export declare const Alert: React.FC<AlertProps>;
@@ -0,0 +1,31 @@
1
+ import { jsx as d } from "react/jsx-runtime";
2
+ const i = "d-alert", f = "d-alert-info", A = "d-alert-success", u = "d-alert-warning", g = "d-alert-error", m = "d-alert-outline", p = "d-alert-dash", h = "d-alert-soft", j = "d-alert-vertical", x = ({
3
+ children: t,
4
+ className: r = "",
5
+ type: e,
6
+ outline: s = !1,
7
+ dash: l = !1,
8
+ soft: o = !1,
9
+ vertical: a = !1,
10
+ ...n
11
+ }) => {
12
+ const c = [
13
+ i,
14
+ e && {
15
+ info: f,
16
+ success: A,
17
+ warning: u,
18
+ error: g
19
+ }[e],
20
+ s && m,
21
+ l && p,
22
+ o && h,
23
+ a && j,
24
+ r
25
+ ].filter(Boolean).join(" ");
26
+ return /* @__PURE__ */ d("div", { role: "alert", className: c, ...n, children: t });
27
+ };
28
+ export {
29
+ x as Alert
30
+ };
31
+ //# sourceMappingURL=Alert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Alert.js","sources":["../../src/components/Alert.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dAlert = 'd-alert'\nconst dAlertInfo = 'd-alert-info'\nconst dAlertSuccess = 'd-alert-success'\nconst dAlertWarning = 'd-alert-warning'\nconst dAlertError = 'd-alert-error'\nconst dAlertOutline = 'd-alert-outline'\nconst dAlertDash = 'd-alert-dash'\nconst dAlertSoft = 'd-alert-soft'\nconst dAlertVertical = 'd-alert-vertical'\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n type?: 'info' | 'success' | 'warning' | 'error'\n outline?: boolean\n dash?: boolean\n soft?: boolean\n vertical?: boolean\n}\n\nexport const Alert: React.FC<AlertProps> = ({\n children,\n className = '',\n type,\n outline = false,\n dash = false,\n soft = false,\n vertical = false,\n ...rest\n}) => {\n const typeClasses = {\n info: dAlertInfo,\n success: dAlertSuccess,\n warning: dAlertWarning,\n error: dAlertError,\n }\n\n const classes = [\n dAlert,\n type && typeClasses[type],\n outline && dAlertOutline,\n dash && dAlertDash,\n soft && dAlertSoft,\n vertical && dAlertVertical,\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div role=\"alert\" className={classes} {...rest}>\n {children}\n </div>\n )\n}\n"],"names":["dAlert","dAlertInfo","dAlertSuccess","dAlertWarning","dAlertError","dAlertOutline","dAlertDash","dAlertSoft","dAlertVertical","Alert","children","className","type","outline","dash","soft","vertical","rest","classes","jsx"],"mappings":";AAGA,MAAMA,IAAS,WACTC,IAAa,gBACbC,IAAgB,mBAChBC,IAAgB,mBAChBC,IAAc,iBACdC,IAAgB,mBAChBC,IAAa,gBACbC,IAAa,gBACbC,IAAiB,oBAWVC,IAA8B,CAAC;AAAA,EAC1C,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,MAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,MAAAC,IAAO;AAAA,EACP,UAAAC,IAAW;AAAA,EACX,GAAGC;AACL,MAAM;AAQJ,QAAMC,IAAU;AAAA,IACdlB;AAAA,IACAY,KATkB;AAAA,MAClB,MAAMX;AAAA,MACN,SAASC;AAAA,MACT,SAASC;AAAA,MACT,OAAOC;AAAA,IAAA,EAKaQ,CAAI;AAAA,IACxBC,KAAWR;AAAA,IACXS,KAAQR;AAAA,IACRS,KAAQR;AAAA,IACRS,KAAYR;AAAA,IACZG;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAQ,EAAC,SAAI,MAAK,SAAQ,WAAWD,GAAU,GAAGD,GACvC,UAAAP,GACH;AAEJ;"}
@@ -0,0 +1,55 @@
1
+ import { default as React } from 'react';
2
+ export interface AnchorLinkItem {
3
+ /** Target element id (without #) */
4
+ href: string;
5
+ /** Link title */
6
+ title: React.ReactNode;
7
+ /** Nested links */
8
+ children?: AnchorLinkItem[];
9
+ }
10
+ export interface AnchorProps {
11
+ /** Anchor links (alternative to Anchor.Link children) */
12
+ items?: AnchorLinkItem[];
13
+ /** Layout direction */
14
+ direction?: 'horizontal' | 'vertical';
15
+ /** Offset from top when calculating scroll position */
16
+ offsetTop?: number;
17
+ /** Bounding distance of anchor area */
18
+ bounds?: number;
19
+ /** Target scroll container (default: window) */
20
+ getContainer?: () => HTMLElement | Window;
21
+ /** Customize the anchor highlight */
22
+ getCurrentAnchor?: (activeLink: string) => string;
23
+ /** Callback when active link changes */
24
+ onChange?: (activeLink: string) => void;
25
+ /** Callback when link is clicked */
26
+ onClick?: (e: React.MouseEvent, link: {
27
+ href: string;
28
+ title: React.ReactNode;
29
+ }) => void;
30
+ /** Currently active link (controlled) */
31
+ activeLink?: string;
32
+ /** Whether to fix the anchor when scrolling */
33
+ affix?: boolean;
34
+ /** Pixels to offset from top when affix is true */
35
+ affixOffsetTop?: number;
36
+ /** Replace history instead of push */
37
+ replace?: boolean;
38
+ /** Custom class name */
39
+ className?: string;
40
+ /** Anchor.Link children */
41
+ children?: React.ReactNode;
42
+ }
43
+ export interface AnchorLinkProps {
44
+ /** Target element id (without #) */
45
+ href: string;
46
+ /** Link title */
47
+ title: React.ReactNode;
48
+ /** Nested links */
49
+ children?: React.ReactNode;
50
+ /** Custom class name */
51
+ className?: string;
52
+ }
53
+ export declare const Anchor: React.FC<AnchorProps> & {
54
+ Link: React.FC<AnchorLinkProps>;
55
+ };
@@ -0,0 +1,116 @@
1
+ import { jsx as a, jsxs as W } from "react/jsx-runtime";
2
+ import { useState as C, useRef as V, useCallback as $, useEffect as E, createContext as X, useContext as Z } from "react";
3
+ const _ = "d-text-primary", O = "d-border-primary", tt = "d-text-base-content", et = "d-hover:text-base-content", nt = "d-hover:border-base-content", ot = "d-bg-base-100", R = X(null), rt = () => {
4
+ const o = Z(R);
5
+ if (!o)
6
+ throw new Error("Anchor.Link must be used within an Anchor");
7
+ return o;
8
+ }, Y = ({
9
+ href: o,
10
+ title: h,
11
+ children: r,
12
+ className: x = ""
13
+ }) => {
14
+ const { activeLink: c, direction: f, registerLink: l, unregisterLink: w, handleClick: k } = rt();
15
+ E(() => (l(o), () => w(o)), [o, l, w]);
16
+ const v = c === o, d = f === "vertical";
17
+ return /* @__PURE__ */ W("div", { className: d ? "" : "inline-block", children: [
18
+ /* @__PURE__ */ a(
19
+ "a",
20
+ {
21
+ href: `#${o}`,
22
+ onClick: (b) => k(b, o, h),
23
+ className: `
24
+ block text-sm transition-colors
25
+ ${d ? "py-1 pl-3 border-l-2" : "px-3 py-1 border-b-2"}
26
+ ${v ? `${_} ${O} font-medium` : `${tt}/70 border-transparent ${et} ${nt}/30`}
27
+ ${x}
28
+ `.trim(),
29
+ children: h
30
+ }
31
+ ),
32
+ r && /* @__PURE__ */ a("div", { className: d ? "pl-3" : "inline-flex", children: r })
33
+ ] });
34
+ }, ct = ({
35
+ items: o,
36
+ direction: h = "vertical",
37
+ offsetTop: r = 0,
38
+ bounds: x = 5,
39
+ getContainer: c,
40
+ getCurrentAnchor: f,
41
+ onChange: l,
42
+ onClick: w,
43
+ activeLink: k,
44
+ affix: v = !1,
45
+ affixOffsetTop: d = 0,
46
+ replace: b = !1,
47
+ className: D = "",
48
+ children: q
49
+ }) => {
50
+ const [F, T] = C(""), [i, H] = C([]), [m, G] = C(!1), p = V(null), A = V(null), g = k !== void 0, B = g ? k : F, J = f ? f(B) : B, K = $((e) => {
51
+ H((t) => t.includes(e) ? t : [...t, e]);
52
+ }, []), M = $((e) => {
53
+ H((t) => t.filter((n) => n !== e));
54
+ }, []), N = $((e) => {
55
+ const t = document.getElementById(e);
56
+ if (t) {
57
+ const n = c?.() ?? window, s = t.getBoundingClientRect().top, u = n === window ? 0 : n.getBoundingClientRect().top, y = n === window ? window.scrollY : n.scrollTop, L = s - u + y - r;
58
+ n === window ? window.scrollTo({ top: L, behavior: "smooth" }) : n.scrollTo({ top: L, behavior: "smooth" }), b ? window.history.replaceState(null, "", `#${e}`) : window.history.pushState(null, "", `#${e}`);
59
+ }
60
+ }, [c, r, b]), Q = $((e, t, n) => {
61
+ e.preventDefault(), w?.(e, { href: t, title: n }), N(t), g || T(t), l?.(t);
62
+ }, [w, N, g, l]);
63
+ E(() => {
64
+ if (!v || !p.current) return;
65
+ const e = c?.() ?? window, t = () => {
66
+ if (!p.current || !A.current) return;
67
+ const n = A.current.getBoundingClientRect(), s = e === window ? 0 : e.getBoundingClientRect().top, u = n.top - s <= d;
68
+ u !== m && G(u);
69
+ };
70
+ return e.addEventListener("scroll", t, { passive: !0 }), t(), () => e.removeEventListener("scroll", t);
71
+ }, [v, d, c, m]), E(() => {
72
+ if (i.length === 0) return;
73
+ const e = c?.() ?? window, t = () => {
74
+ let n = "";
75
+ const s = e === window ? document.documentElement : e, u = e === window ? 0 : s.getBoundingClientRect().top, y = e === window ? window.scrollY : s.scrollTop, L = s.scrollHeight, U = e === window ? window.innerHeight : s.clientHeight;
76
+ if (y + U >= L - 10 && i.length > 0)
77
+ n = i[i.length - 1];
78
+ else {
79
+ for (const j of i) {
80
+ const z = document.getElementById(j);
81
+ z && z.getBoundingClientRect().top - u - r <= x && (n = j);
82
+ }
83
+ !n && i.length > 0 && (n = i[0]);
84
+ }
85
+ n && n !== B && (g || T(n), l?.(n));
86
+ };
87
+ return e.addEventListener("scroll", t, { passive: !0 }), t(), () => e.removeEventListener("scroll", t);
88
+ }, [i, c, r, x, B, g, l]);
89
+ const I = {
90
+ activeLink: J,
91
+ direction: h,
92
+ offsetTop: r,
93
+ registerLink: K,
94
+ unregisterLink: M,
95
+ handleClick: Q
96
+ }, S = (e) => e.map((t) => /* @__PURE__ */ a(Y, { href: t.href, title: t.title, children: t.children && S(t.children) }, t.href)), P = /* @__PURE__ */ a(
97
+ "nav",
98
+ {
99
+ ref: p,
100
+ className: `
101
+ ${h === "horizontal" ? "flex items-center" : "flex flex-col"}
102
+ ${m ? `fixed ${ot} shadow-sm z-10` : ""}
103
+ ${D}
104
+ `.trim(),
105
+ style: m ? { top: d } : void 0,
106
+ children: o ? S(o) : q
107
+ }
108
+ );
109
+ return v ? /* @__PURE__ */ a(R.Provider, { value: I, children: /* @__PURE__ */ a("div", { ref: A, style: m && p.current ? { height: p.current.offsetHeight } : void 0, children: P }) }) : /* @__PURE__ */ a(R.Provider, { value: I, children: P });
110
+ }, ut = Object.assign(ct, {
111
+ Link: Y
112
+ });
113
+ export {
114
+ ut as Anchor
115
+ };
116
+ //# sourceMappingURL=Anchor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Anchor.js","sources":["../../src/components/Anchor.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback, createContext, useContext, useRef } from 'react'\n\n// DaisyUI classes\nconst dTextPrimary = 'd-text-primary'\nconst dBorderPrimary = 'd-border-primary'\nconst dTextBaseContent = 'd-text-base-content'\nconst dHoverTextBaseContent = 'd-hover:text-base-content'\nconst dHoverBorderBaseContent = 'd-hover:border-base-content'\nconst dBgBase100 = 'd-bg-base-100'\n\nexport interface AnchorLinkItem {\n /** Target element id (without #) */\n href: string\n /** Link title */\n title: React.ReactNode\n /** Nested links */\n children?: AnchorLinkItem[]\n}\n\nexport interface AnchorProps {\n /** Anchor links (alternative to Anchor.Link children) */\n items?: AnchorLinkItem[]\n /** Layout direction */\n direction?: 'horizontal' | 'vertical'\n /** Offset from top when calculating scroll position */\n offsetTop?: number\n /** Bounding distance of anchor area */\n bounds?: number\n /** Target scroll container (default: window) */\n getContainer?: () => HTMLElement | Window\n /** Customize the anchor highlight */\n getCurrentAnchor?: (activeLink: string) => string\n /** Callback when active link changes */\n onChange?: (activeLink: string) => void\n /** Callback when link is clicked */\n onClick?: (e: React.MouseEvent, link: { href: string; title: React.ReactNode }) => void\n /** Currently active link (controlled) */\n activeLink?: string\n /** Whether to fix the anchor when scrolling */\n affix?: boolean\n /** Pixels to offset from top when affix is true */\n affixOffsetTop?: number\n /** Replace history instead of push */\n replace?: boolean\n /** Custom class name */\n className?: string\n /** Anchor.Link children */\n children?: React.ReactNode\n}\n\nexport interface AnchorLinkProps {\n /** Target element id (without #) */\n href: string\n /** Link title */\n title: React.ReactNode\n /** Nested links */\n children?: React.ReactNode\n /** Custom class name */\n className?: string\n}\n\ninterface AnchorContextValue {\n activeLink: string\n direction: 'horizontal' | 'vertical'\n offsetTop: number\n registerLink: (href: string) => void\n unregisterLink: (href: string) => void\n handleClick: (e: React.MouseEvent, href: string, title: React.ReactNode) => void\n}\n\nconst AnchorContext = createContext<AnchorContextValue | null>(null)\n\nconst useAnchorContext = () => {\n const context = useContext(AnchorContext)\n if (!context) {\n throw new Error('Anchor.Link must be used within an Anchor')\n }\n return context\n}\n\nconst AnchorLink: React.FC<AnchorLinkProps> = ({\n href,\n title,\n children,\n className = '',\n}) => {\n const { activeLink, direction, registerLink, unregisterLink, handleClick } = useAnchorContext()\n\n useEffect(() => {\n registerLink(href)\n return () => unregisterLink(href)\n }, [href, registerLink, unregisterLink])\n\n const isActive = activeLink === href\n const isVertical = direction === 'vertical'\n\n return (\n <div className={isVertical ? '' : 'inline-block'}>\n <a\n href={`#${href}`}\n onClick={(e) => handleClick(e, href, title)}\n className={`\n block text-sm transition-colors\n ${isVertical ? 'py-1 pl-3 border-l-2' : 'px-3 py-1 border-b-2'}\n ${isActive\n ? `${dTextPrimary} ${dBorderPrimary} font-medium`\n : `${dTextBaseContent}/70 border-transparent ${dHoverTextBaseContent} ${dHoverBorderBaseContent}/30`\n }\n ${className}\n `.trim()}\n >\n {title}\n </a>\n {children && (\n <div className={isVertical ? 'pl-3' : 'inline-flex'}>\n {children}\n </div>\n )}\n </div>\n )\n}\n\nconst AnchorComponent: React.FC<AnchorProps> = ({\n items,\n direction = 'vertical',\n offsetTop = 0,\n bounds = 5,\n getContainer,\n getCurrentAnchor,\n onChange,\n onClick,\n activeLink: controlledActiveLink,\n affix = false,\n affixOffsetTop = 0,\n replace = false,\n className = '',\n children,\n}) => {\n const [internalActiveLink, setInternalActiveLink] = useState('')\n const [links, setLinks] = useState<string[]>([])\n const [isAffixed, setIsAffixed] = useState(false)\n const anchorRef = useRef<HTMLDivElement>(null)\n const placeholderRef = useRef<HTMLDivElement>(null)\n\n const isControlled = controlledActiveLink !== undefined\n const rawActiveLink = isControlled ? controlledActiveLink : internalActiveLink\n const activeLink = getCurrentAnchor ? getCurrentAnchor(rawActiveLink) : rawActiveLink\n\n const registerLink = useCallback((href: string) => {\n setLinks((prev) => (prev.includes(href) ? prev : [...prev, href]))\n }, [])\n\n const unregisterLink = useCallback((href: string) => {\n setLinks((prev) => prev.filter((link) => link !== href))\n }, [])\n\n const scrollToTarget = useCallback((href: string) => {\n const target = document.getElementById(href)\n if (target) {\n const container = getContainer?.() ?? window\n const targetTop = target.getBoundingClientRect().top\n const containerTop = container === window\n ? 0\n : (container as HTMLElement).getBoundingClientRect().top\n const scrollTop = container === window\n ? window.scrollY\n : (container as HTMLElement).scrollTop\n\n const top = targetTop - containerTop + scrollTop - offsetTop\n\n if (container === window) {\n window.scrollTo({ top, behavior: 'smooth' })\n } else {\n (container as HTMLElement).scrollTo({ top, behavior: 'smooth' })\n }\n\n // Update URL hash\n if (replace) {\n window.history.replaceState(null, '', `#${href}`)\n } else {\n window.history.pushState(null, '', `#${href}`)\n }\n }\n }, [getContainer, offsetTop, replace])\n\n const handleClick = useCallback((\n e: React.MouseEvent,\n href: string,\n title: React.ReactNode\n ) => {\n e.preventDefault()\n onClick?.(e, { href, title })\n scrollToTarget(href)\n\n if (!isControlled) {\n setInternalActiveLink(href)\n }\n onChange?.(href)\n }, [onClick, scrollToTarget, isControlled, onChange])\n\n // Affix logic\n useEffect(() => {\n if (!affix || !anchorRef.current) return\n\n const container = getContainer?.() ?? window\n\n const handleScroll = () => {\n if (!anchorRef.current || !placeholderRef.current) return\n\n const placeholderRect = placeholderRef.current.getBoundingClientRect()\n const containerTop = container === window\n ? 0\n : (container as HTMLElement).getBoundingClientRect().top\n\n const shouldAffix = placeholderRect.top - containerTop <= affixOffsetTop\n\n if (shouldAffix !== isAffixed) {\n setIsAffixed(shouldAffix)\n }\n }\n\n container.addEventListener('scroll', handleScroll, { passive: true })\n handleScroll()\n\n return () => container.removeEventListener('scroll', handleScroll)\n }, [affix, affixOffsetTop, getContainer, isAffixed])\n\n // Scroll spy\n useEffect(() => {\n if (links.length === 0) return\n\n const container = getContainer?.() ?? window\n\n const handleScroll = () => {\n let currentActive = ''\n const containerEl = container === window ? document.documentElement : container as HTMLElement\n const containerTop = container === window\n ? 0\n : containerEl.getBoundingClientRect().top\n\n // Check if scrolled to near the bottom\n const scrollTop = container === window ? window.scrollY : containerEl.scrollTop\n const scrollHeight = containerEl.scrollHeight\n const clientHeight = container === window ? window.innerHeight : containerEl.clientHeight\n const isNearBottom = scrollTop + clientHeight >= scrollHeight - 10\n\n // If near bottom, use the last link\n if (isNearBottom && links.length > 0) {\n currentActive = links[links.length - 1]\n } else {\n // Find the last element that has scrolled past the top (standard scroll spy behavior)\n for (const href of links) {\n const element = document.getElementById(href)\n if (element) {\n const rect = element.getBoundingClientRect()\n const distance = rect.top - containerTop - offsetTop\n\n // If element's top is within bounds of the threshold, it's the current section\n if (distance <= bounds) {\n currentActive = href\n }\n }\n }\n\n // If nothing matched, use the first link\n if (!currentActive && links.length > 0) {\n currentActive = links[0]\n }\n }\n\n if (currentActive && currentActive !== rawActiveLink) {\n if (!isControlled) {\n setInternalActiveLink(currentActive)\n }\n onChange?.(currentActive)\n }\n }\n\n container.addEventListener('scroll', handleScroll, { passive: true })\n handleScroll() // Initial check\n\n return () => container.removeEventListener('scroll', handleScroll)\n }, [links, getContainer, offsetTop, bounds, rawActiveLink, isControlled, onChange])\n\n const contextValue: AnchorContextValue = {\n activeLink,\n direction,\n offsetTop,\n registerLink,\n unregisterLink,\n handleClick,\n }\n\n const renderItems = (linkItems: AnchorLinkItem[]): React.ReactNode => {\n return linkItems.map((item) => (\n <AnchorLink key={item.href} href={item.href} title={item.title}>\n {item.children && renderItems(item.children)}\n </AnchorLink>\n ))\n }\n\n const anchorContent = (\n <nav\n ref={anchorRef}\n className={`\n ${direction === 'horizontal' ? 'flex items-center' : 'flex flex-col'}\n ${isAffixed ? `fixed ${dBgBase100} shadow-sm z-10` : ''}\n ${className}\n `.trim()}\n style={isAffixed ? { top: affixOffsetTop } : undefined}\n >\n {items ? renderItems(items) : children}\n </nav>\n )\n\n if (affix) {\n return (\n <AnchorContext.Provider value={contextValue}>\n <div ref={placeholderRef} style={isAffixed && anchorRef.current ? { height: anchorRef.current.offsetHeight } : undefined}>\n {anchorContent}\n </div>\n </AnchorContext.Provider>\n )\n }\n\n return (\n <AnchorContext.Provider value={contextValue}>\n {anchorContent}\n </AnchorContext.Provider>\n )\n}\n\nexport const Anchor = Object.assign(AnchorComponent, {\n Link: AnchorLink,\n})\n"],"names":["dTextPrimary","dBorderPrimary","dTextBaseContent","dHoverTextBaseContent","dHoverBorderBaseContent","dBgBase100","AnchorContext","createContext","useAnchorContext","context","useContext","AnchorLink","href","title","children","className","activeLink","direction","registerLink","unregisterLink","handleClick","useEffect","isActive","isVertical","jsxs","jsx","e","AnchorComponent","items","offsetTop","bounds","getContainer","getCurrentAnchor","onChange","onClick","controlledActiveLink","affix","affixOffsetTop","replace","internalActiveLink","setInternalActiveLink","useState","links","setLinks","isAffixed","setIsAffixed","anchorRef","useRef","placeholderRef","isControlled","rawActiveLink","useCallback","prev","link","scrollToTarget","target","container","targetTop","containerTop","scrollTop","top","handleScroll","placeholderRect","shouldAffix","currentActive","containerEl","scrollHeight","clientHeight","element","contextValue","renderItems","linkItems","item","anchorContent","Anchor"],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { default as React } from 'react';
2
+ export interface AutocompleteOption {
3
+ value: string;
4
+ label: string;
5
+ disabled?: boolean;
6
+ }
7
+ export interface AutocompleteProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'onSelect'> {
8
+ value?: string;
9
+ defaultValue?: string;
10
+ onChange?: (value: string) => void;
11
+ onSelect?: (value: string, option: AutocompleteOption) => void;
12
+ onSearch?: (value: string) => void;
13
+ options: AutocompleteOption[] | string[];
14
+ placeholder?: string;
15
+ disabled?: boolean;
16
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
17
+ color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';
18
+ /** Validation status */
19
+ status?: 'error' | 'warning';
20
+ allowCustomValue?: boolean;
21
+ filterOption?: (option: AutocompleteOption, inputValue: string) => boolean;
22
+ notFoundContent?: React.ReactNode;
23
+ /** Show clear button when input has value */
24
+ allowClear?: boolean | {
25
+ clearIcon?: React.ReactNode;
26
+ };
27
+ /** Callback when clear button is clicked */
28
+ onClear?: () => void;
29
+ /** Controlled open state */
30
+ open?: boolean;
31
+ /** Default open state */
32
+ defaultOpen?: boolean;
33
+ /** Callback when open state changes */
34
+ onOpenChange?: (open: boolean) => void;
35
+ /** Activate first option by default */
36
+ defaultActiveFirstOption?: boolean;
37
+ }
38
+ export declare const Autocomplete: React.FC<AutocompleteProps>;
@@ -0,0 +1,186 @@
1
+ import { jsxs as M, jsx as o } from "react/jsx-runtime";
2
+ import { useId as ie, useState as k, useRef as O, useEffect as z } from "react";
3
+ import { useConfig as ue } from "./ConfigProvider.js";
4
+ const pe = "d-dropdown", fe = "d-dropdown-bottom", he = "d-dropdown-open", be = "d-dropdown-content", me = "d-menu", Ie = "d-input", ge = "d-input-xs", we = "d-input-sm", xe = "d-input-md", ye = "d-input-lg", ve = "d-input-xl", Ce = "d-input-neutral", ke = "d-input-primary", De = "d-input-secondary", Ne = "d-input-accent", $e = "d-input-info", je = "d-input-success", A = "d-input-warning", R = "d-input-error", Ee = ({ onClick: l, className: I }) => /* @__PURE__ */ o(
5
+ "button",
6
+ {
7
+ type: "button",
8
+ onClick: l,
9
+ className: `flex items-center justify-center opacity-50 hover:opacity-100 transition-opacity ${I || ""}`,
10
+ "aria-label": "Clear input",
11
+ tabIndex: -1,
12
+ children: /* @__PURE__ */ o("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ o("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
13
+ }
14
+ ), ze = ({
15
+ value: l,
16
+ defaultValue: I = "",
17
+ onChange: g,
18
+ onSelect: T,
19
+ onSearch: V,
20
+ options: K,
21
+ placeholder: P = "Type to search...",
22
+ disabled: p = !1,
23
+ size: U,
24
+ color: D,
25
+ status: w,
26
+ className: W = "",
27
+ allowCustomValue: N = !0,
28
+ filterOption: $,
29
+ notFoundContent: X = "No results found",
30
+ allowClear: f,
31
+ onClear: F,
32
+ open: j,
33
+ defaultOpen: H = !1,
34
+ onOpenChange: q,
35
+ defaultActiveFirstOption: x = !0,
36
+ ...G
37
+ }) => {
38
+ const { componentSize: J } = ue(), Q = U ?? J ?? "md", y = ie(), Y = `${y}-input`, E = `${y}-listbox`, v = K.map(
39
+ (e) => typeof e == "string" ? { value: e, label: e } : e
40
+ ), [h, b] = k(I), [Z, _] = k(H), [t, r] = k(-1), m = O(null), d = O(null), S = j !== void 0, i = S ? j : Z, c = (e) => {
41
+ S || _(e), q?.(e);
42
+ };
43
+ z(() => {
44
+ if (l !== void 0) {
45
+ const e = v.find((n) => n.value === l);
46
+ b(e?.label || l);
47
+ }
48
+ }, [l, v]);
49
+ const ee = (e, n) => e.label.toLowerCase().includes(n.toLowerCase()), a = v.filter(
50
+ (e) => $ ? $(e, h) : ee(e, h)
51
+ ), u = a.filter((e) => !e.disabled), ne = (e) => {
52
+ const n = e.target.value;
53
+ b(n), c(!0), x && u.length > 0 ? r(0) : r(-1), V?.(n), N && g?.(n);
54
+ }, C = (e) => {
55
+ e.disabled || (b(e.label), c(!1), r(-1), g?.(e.value), T?.(e.value, e), m.current?.focus());
56
+ }, te = (e) => {
57
+ if (!i && (e.key === "ArrowDown" || e.key === "ArrowUp")) {
58
+ c(!0), x && u.length > 0 && r(0);
59
+ return;
60
+ }
61
+ switch (e.key) {
62
+ case "ArrowDown":
63
+ e.preventDefault(), r((n) => {
64
+ for (let s = n + 1; s < a.length; s++)
65
+ if (!a[s].disabled) return s;
66
+ return n;
67
+ });
68
+ break;
69
+ case "ArrowUp":
70
+ e.preventDefault(), r((n) => {
71
+ for (let s = n - 1; s >= 0; s--)
72
+ if (!a[s].disabled) return s;
73
+ return n;
74
+ });
75
+ break;
76
+ case "Enter":
77
+ e.preventDefault(), t >= 0 && a[t] && !a[t].disabled ? C(a[t]) : !N && u.length > 0 && C(u[0]);
78
+ break;
79
+ case "Escape":
80
+ c(!1), r(-1), m.current?.blur();
81
+ break;
82
+ }
83
+ }, se = () => {
84
+ c(!0), x && u.length > 0 && r(0);
85
+ }, oe = (e) => {
86
+ d.current && d.current.contains(e.relatedTarget) || setTimeout(() => c(!1), 200);
87
+ }, re = (e) => {
88
+ e.stopPropagation(), b(""), g?.(""), F?.(), m.current?.focus();
89
+ }, ae = {
90
+ xs: ge,
91
+ sm: we,
92
+ md: xe,
93
+ lg: ye,
94
+ xl: ve
95
+ }, le = w ? {
96
+ error: R,
97
+ warning: A
98
+ }[w] : D ? {
99
+ neutral: Ce,
100
+ primary: ke,
101
+ secondary: De,
102
+ accent: Ne,
103
+ info: $e,
104
+ success: je,
105
+ warning: A,
106
+ error: R
107
+ }[D] : "";
108
+ z(() => {
109
+ t >= 0 && d.current && d.current.children[t]?.scrollIntoView({ block: "nearest" });
110
+ }, [t]);
111
+ const B = f && h && !p, ce = typeof f == "object" && f.clearIcon ? f.clearIcon : null, L = (e) => `${y}-option-${e}`, de = [
112
+ `${Ie} w-full`,
113
+ ae[Q],
114
+ le,
115
+ B && "pr-10"
116
+ ].filter(Boolean).join(" ");
117
+ return /* @__PURE__ */ M(
118
+ "div",
119
+ {
120
+ className: `${pe} ${fe} w-full ${i && !p ? he : ""} ${W}`,
121
+ "data-state": i ? "open" : "closed",
122
+ ...G,
123
+ children: [
124
+ /* @__PURE__ */ M("div", { className: "relative w-full", children: [
125
+ /* @__PURE__ */ o(
126
+ "input",
127
+ {
128
+ ref: m,
129
+ id: Y,
130
+ type: "text",
131
+ role: "combobox",
132
+ "aria-expanded": i,
133
+ "aria-haspopup": "listbox",
134
+ "aria-controls": E,
135
+ "aria-autocomplete": "list",
136
+ "aria-activedescendant": t >= 0 ? L(t) : void 0,
137
+ "aria-invalid": w === "error" ? !0 : void 0,
138
+ value: h,
139
+ onChange: ne,
140
+ onKeyDown: te,
141
+ onFocus: se,
142
+ onBlur: oe,
143
+ placeholder: P,
144
+ disabled: p,
145
+ className: de
146
+ }
147
+ ),
148
+ B && /* @__PURE__ */ o("span", { className: "absolute right-3 top-1/2 -translate-y-1/2 z-10", children: ce || /* @__PURE__ */ o(Ee, { onClick: re }) })
149
+ ] }),
150
+ i && !p && /* @__PURE__ */ o(
151
+ "ul",
152
+ {
153
+ ref: d,
154
+ id: E,
155
+ role: "listbox",
156
+ "aria-label": "Suggestions",
157
+ tabIndex: -1,
158
+ className: `${be} ${me} bg-base-100 rounded-box z-50 w-full shadow-lg border border-base-300 max-h-60 overflow-auto flex-nowrap`,
159
+ children: a.length > 0 ? a.map((e, n) => /* @__PURE__ */ o("li", { children: /* @__PURE__ */ o(
160
+ "a",
161
+ {
162
+ id: L(n),
163
+ role: "option",
164
+ "aria-selected": t === n,
165
+ "aria-disabled": e.disabled,
166
+ onMouseDown: (s) => {
167
+ s.preventDefault(), C(e);
168
+ },
169
+ onMouseEnter: () => !e.disabled && r(n),
170
+ className: [
171
+ n === t && !e.disabled && "active",
172
+ e.disabled && "disabled text-base-content/40 cursor-not-allowed"
173
+ ].filter(Boolean).join(" "),
174
+ children: e.label
175
+ }
176
+ ) }, e.value)) : /* @__PURE__ */ o("li", { className: "disabled", children: /* @__PURE__ */ o("span", { className: "text-base-content/60 text-center cursor-default", children: X }) })
177
+ }
178
+ )
179
+ ]
180
+ }
181
+ );
182
+ };
183
+ export {
184
+ ze as Autocomplete
185
+ };
186
+ //# sourceMappingURL=Autocomplete.js.map