@nofinite/nui 1.1.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of @nofinite/nui might be problematic. Click here for more details.

Files changed (739) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +61 -48
  3. package/dist/CHANGELOG.md +8 -0
  4. package/dist/LICENSE +201 -0
  5. package/dist/README.md +48 -0
  6. package/dist/components/accordion/Accordion.cjs +1 -1
  7. package/dist/components/accordion/Accordion.cjs.map +1 -1
  8. package/dist/components/accordion/Accordion.js +64 -43
  9. package/dist/components/accordion/Accordion.js.map +1 -1
  10. package/dist/components/alert/Alert.cjs +1 -1
  11. package/dist/components/alert/Alert.cjs.map +1 -1
  12. package/dist/components/alert/Alert.js +39 -25
  13. package/dist/components/alert/Alert.js.map +1 -1
  14. package/dist/components/avatar/Avatar.cjs +1 -1
  15. package/dist/components/avatar/Avatar.cjs.map +1 -1
  16. package/dist/components/avatar/Avatar.js +58 -44
  17. package/dist/components/avatar/Avatar.js.map +1 -1
  18. package/dist/components/avatar/AvatarGroup.cjs +1 -1
  19. package/dist/components/avatar/AvatarGroup.cjs.map +1 -1
  20. package/dist/components/avatar/AvatarGroup.js +34 -25
  21. package/dist/components/avatar/AvatarGroup.js.map +1 -1
  22. package/dist/components/badge/Badge.cjs +1 -1
  23. package/dist/components/badge/Badge.cjs.map +1 -1
  24. package/dist/components/badge/Badge.js +43 -68
  25. package/dist/components/badge/Badge.js.map +1 -1
  26. package/dist/components/badge/BadgeGroup.cjs +1 -1
  27. package/dist/components/badge/BadgeGroup.cjs.map +1 -1
  28. package/dist/components/badge/BadgeGroup.js +20 -10
  29. package/dist/components/badge/BadgeGroup.js.map +1 -1
  30. package/dist/components/breadcrumbs/Breadcrumbs.cjs +1 -1
  31. package/dist/components/breadcrumbs/Breadcrumbs.cjs.map +1 -1
  32. package/dist/components/breadcrumbs/Breadcrumbs.js +59 -39
  33. package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -1
  34. package/dist/components/button/Button.cjs +1 -1
  35. package/dist/components/button/Button.cjs.map +1 -1
  36. package/dist/components/button/Button.js +52 -17
  37. package/dist/components/button/Button.js.map +1 -1
  38. package/dist/components/card/Card.cjs +1 -1
  39. package/dist/components/card/Card.cjs.map +1 -1
  40. package/dist/components/card/Card.js +44 -41
  41. package/dist/components/card/Card.js.map +1 -1
  42. package/dist/components/checkbox/Checkbox.cjs +1 -1
  43. package/dist/components/checkbox/Checkbox.cjs.map +1 -1
  44. package/dist/components/checkbox/Checkbox.js +59 -40
  45. package/dist/components/checkbox/Checkbox.js.map +1 -1
  46. package/dist/components/chip/Chip.cjs +1 -1
  47. package/dist/components/chip/Chip.cjs.map +1 -1
  48. package/dist/components/chip/Chip.js +67 -47
  49. package/dist/components/chip/Chip.js.map +1 -1
  50. package/dist/components/combobox/Combobox.cjs +1 -1
  51. package/dist/components/combobox/Combobox.cjs.map +1 -1
  52. package/dist/components/combobox/Combobox.js +123 -108
  53. package/dist/components/combobox/Combobox.js.map +1 -1
  54. package/dist/components/commandpalette/CommandPalette.cjs +1 -1
  55. package/dist/components/commandpalette/CommandPalette.cjs.map +1 -1
  56. package/dist/components/commandpalette/CommandPalette.js +96 -73
  57. package/dist/components/commandpalette/CommandPalette.js.map +1 -1
  58. package/dist/components/contextmenu/ContextMenu.cjs +1 -1
  59. package/dist/components/contextmenu/ContextMenu.cjs.map +1 -1
  60. package/dist/components/contextmenu/ContextMenu.js +79 -58
  61. package/dist/components/contextmenu/ContextMenu.js.map +1 -1
  62. package/dist/components/datagrid/DataGrid.cjs +1 -1
  63. package/dist/components/datagrid/DataGrid.cjs.map +1 -1
  64. package/dist/components/datagrid/DataGrid.js +184 -202
  65. package/dist/components/datagrid/DataGrid.js.map +1 -1
  66. package/dist/components/datepicker/DatePicker.cjs +1 -1
  67. package/dist/components/datepicker/DatePicker.cjs.map +1 -1
  68. package/dist/components/datepicker/DatePicker.js +197 -164
  69. package/dist/components/datepicker/DatePicker.js.map +1 -1
  70. package/dist/components/daterangepicker/DateRangePicker.cjs +1 -1
  71. package/dist/components/daterangepicker/DateRangePicker.cjs.map +1 -1
  72. package/dist/components/daterangepicker/DateRangePicker.js +254 -213
  73. package/dist/components/daterangepicker/DateRangePicker.js.map +1 -1
  74. package/dist/components/dialog/DialogProvider.cjs +2 -0
  75. package/dist/components/dialog/DialogProvider.cjs.map +1 -0
  76. package/dist/components/dialog/DialogProvider.js +71 -0
  77. package/dist/components/dialog/DialogProvider.js.map +1 -0
  78. package/dist/components/dialog/dialogStore.cjs +2 -0
  79. package/dist/components/dialog/dialogStore.cjs.map +1 -0
  80. package/dist/components/dialog/dialogStore.js +60 -0
  81. package/dist/components/dialog/dialogStore.js.map +1 -0
  82. package/dist/components/drawer/Drawer.cjs +1 -1
  83. package/dist/components/drawer/Drawer.cjs.map +1 -1
  84. package/dist/components/drawer/Drawer.js +69 -47
  85. package/dist/components/drawer/Drawer.js.map +1 -1
  86. package/dist/components/dropdown/Dropdown.cjs +1 -1
  87. package/dist/components/dropdown/Dropdown.cjs.map +1 -1
  88. package/dist/components/dropdown/Dropdown.js +134 -108
  89. package/dist/components/dropdown/Dropdown.js.map +1 -1
  90. package/dist/components/fileuploader/FileUploader.cjs +1 -1
  91. package/dist/components/fileuploader/FileUploader.cjs.map +1 -1
  92. package/dist/components/fileuploader/FileUploader.js +96 -61
  93. package/dist/components/fileuploader/FileUploader.js.map +1 -1
  94. package/dist/components/hovercard/HoverCard.cjs +1 -1
  95. package/dist/components/hovercard/HoverCard.cjs.map +1 -1
  96. package/dist/components/hovercard/HoverCard.js +124 -69
  97. package/dist/components/hovercard/HoverCard.js.map +1 -1
  98. package/dist/components/input/Input.cjs +1 -1
  99. package/dist/components/input/Input.cjs.map +1 -1
  100. package/dist/components/input/Input.js +62 -37
  101. package/dist/components/input/Input.js.map +1 -1
  102. package/dist/components/layout/Container.cjs +1 -1
  103. package/dist/components/layout/Container.cjs.map +1 -1
  104. package/dist/components/layout/Container.js +21 -30
  105. package/dist/components/layout/Container.js.map +1 -1
  106. package/dist/components/layout/Flex.cjs +1 -1
  107. package/dist/components/layout/Flex.cjs.map +1 -1
  108. package/dist/components/layout/Flex.js +36 -19
  109. package/dist/components/layout/Flex.js.map +1 -1
  110. package/dist/components/layout/Grid.cjs +1 -1
  111. package/dist/components/layout/Grid.cjs.map +1 -1
  112. package/dist/components/layout/Grid.js +30 -18
  113. package/dist/components/layout/Grid.js.map +1 -1
  114. package/dist/components/link/Link.cjs +2 -0
  115. package/dist/components/link/Link.cjs.map +1 -0
  116. package/dist/components/link/Link.js +41 -0
  117. package/dist/components/link/Link.js.map +1 -0
  118. package/dist/components/megamenu/MegaMenu.cjs +1 -1
  119. package/dist/components/megamenu/MegaMenu.cjs.map +1 -1
  120. package/dist/components/megamenu/MegaMenu.js +107 -38
  121. package/dist/components/megamenu/MegaMenu.js.map +1 -1
  122. package/dist/components/modal/Modal.cjs +1 -1
  123. package/dist/components/modal/Modal.cjs.map +1 -1
  124. package/dist/components/modal/Modal.js +91 -83
  125. package/dist/components/modal/Modal.js.map +1 -1
  126. package/dist/components/multiselect/MultiSelect.cjs +2 -0
  127. package/dist/components/multiselect/MultiSelect.cjs.map +1 -0
  128. package/dist/components/multiselect/MultiSelect.js +176 -0
  129. package/dist/components/multiselect/MultiSelect.js.map +1 -0
  130. package/dist/components/nuiprovider/NUIProvider.cjs +2 -0
  131. package/dist/components/nuiprovider/NUIProvider.cjs.map +1 -0
  132. package/dist/components/nuiprovider/NUIProvider.js +36 -0
  133. package/dist/components/nuiprovider/NUIProvider.js.map +1 -0
  134. package/dist/components/pagination/Pagination.cjs +1 -1
  135. package/dist/components/pagination/Pagination.cjs.map +1 -1
  136. package/dist/components/pagination/Pagination.js +74 -41
  137. package/dist/components/pagination/Pagination.js.map +1 -1
  138. package/dist/components/popover/Popover.cjs +1 -1
  139. package/dist/components/popover/Popover.cjs.map +1 -1
  140. package/dist/components/popover/Popover.js +99 -100
  141. package/dist/components/popover/Popover.js.map +1 -1
  142. package/dist/components/progress/Progress.cjs +1 -1
  143. package/dist/components/progress/Progress.cjs.map +1 -1
  144. package/dist/components/progress/Progress.js +44 -22
  145. package/dist/components/progress/Progress.js.map +1 -1
  146. package/dist/components/radiogroup/RadioGroup.cjs +1 -1
  147. package/dist/components/radiogroup/RadioGroup.cjs.map +1 -1
  148. package/dist/components/radiogroup/RadioGroup.js +69 -74
  149. package/dist/components/radiogroup/RadioGroup.js.map +1 -1
  150. package/dist/components/rating/Rating.cjs +1 -1
  151. package/dist/components/rating/Rating.cjs.map +1 -1
  152. package/dist/components/rating/Rating.js +72 -33
  153. package/dist/components/rating/Rating.js.map +1 -1
  154. package/dist/components/resizable/Resizable.cjs +2 -0
  155. package/dist/components/resizable/Resizable.cjs.map +1 -0
  156. package/dist/components/resizable/Resizable.js +134 -0
  157. package/dist/components/resizable/Resizable.js.map +1 -0
  158. package/dist/components/select/Select.cjs +1 -1
  159. package/dist/components/select/Select.cjs.map +1 -1
  160. package/dist/components/select/Select.js +114 -113
  161. package/dist/components/select/Select.js.map +1 -1
  162. package/dist/components/skeleton/Skeleton.cjs +1 -1
  163. package/dist/components/skeleton/Skeleton.cjs.map +1 -1
  164. package/dist/components/skeleton/Skeleton.js +90 -67
  165. package/dist/components/skeleton/Skeleton.js.map +1 -1
  166. package/dist/components/slider/Slider.cjs +1 -1
  167. package/dist/components/slider/Slider.cjs.map +1 -1
  168. package/dist/components/slider/Slider.js +85 -82
  169. package/dist/components/slider/Slider.js.map +1 -1
  170. package/dist/components/spinner/Spinner.cjs +1 -1
  171. package/dist/components/spinner/Spinner.cjs.map +1 -1
  172. package/dist/components/spinner/Spinner.js +60 -17
  173. package/dist/components/spinner/Spinner.js.map +1 -1
  174. package/dist/components/stepper/Stepper.cjs +1 -5
  175. package/dist/components/stepper/Stepper.cjs.map +1 -1
  176. package/dist/components/stepper/Stepper.js +65 -39
  177. package/dist/components/stepper/Stepper.js.map +1 -1
  178. package/dist/components/switch/Switch.cjs +1 -1
  179. package/dist/components/switch/Switch.cjs.map +1 -1
  180. package/dist/components/switch/Switch.js +89 -62
  181. package/dist/components/switch/Switch.js.map +1 -1
  182. package/dist/components/table/Table.cjs +1 -1
  183. package/dist/components/table/Table.cjs.map +1 -1
  184. package/dist/components/table/Table.js +62 -35
  185. package/dist/components/table/Table.js.map +1 -1
  186. package/dist/components/tabs/Tabs.cjs +1 -1
  187. package/dist/components/tabs/Tabs.cjs.map +1 -1
  188. package/dist/components/tabs/Tabs.js +110 -50
  189. package/dist/components/tabs/Tabs.js.map +1 -1
  190. package/dist/components/textarea/Textarea.cjs +1 -1
  191. package/dist/components/textarea/Textarea.cjs.map +1 -1
  192. package/dist/components/textarea/Textarea.js +63 -58
  193. package/dist/components/textarea/Textarea.js.map +1 -1
  194. package/dist/components/timepicker/TimePicker.cjs +2 -0
  195. package/dist/components/timepicker/TimePicker.cjs.map +1 -0
  196. package/dist/components/timepicker/TimePicker.js +159 -0
  197. package/dist/components/timepicker/TimePicker.js.map +1 -0
  198. package/dist/components/timerangepicker/TimeRangePicker.cjs +2 -0
  199. package/dist/components/timerangepicker/TimeRangePicker.cjs.map +1 -0
  200. package/dist/components/timerangepicker/TimeRangePicker.js +208 -0
  201. package/dist/components/timerangepicker/TimeRangePicker.js.map +1 -0
  202. package/dist/components/toast/Toast.cjs +1 -1
  203. package/dist/components/toast/Toast.cjs.map +1 -1
  204. package/dist/components/toast/Toast.js +91 -38
  205. package/dist/components/toast/Toast.js.map +1 -1
  206. package/dist/components/tooltip/Tooltip.cjs +1 -1
  207. package/dist/components/tooltip/Tooltip.cjs.map +1 -1
  208. package/dist/components/tooltip/Tooltip.js +72 -56
  209. package/dist/components/tooltip/Tooltip.js.map +1 -1
  210. package/dist/components/treeview/TreeView.cjs +1 -1
  211. package/dist/components/treeview/TreeView.cjs.map +1 -1
  212. package/dist/components/treeview/TreeView.js +120 -90
  213. package/dist/components/treeview/TreeView.js.map +1 -1
  214. package/dist/components/virtuallist/VirtualList.cjs +1 -1
  215. package/dist/components/virtuallist/VirtualList.cjs.map +1 -1
  216. package/dist/components/virtuallist/VirtualList.js +52 -34
  217. package/dist/components/virtuallist/VirtualList.js.map +1 -1
  218. package/dist/dist/components/accordion/Accordion.cjs +2 -0
  219. package/dist/dist/components/accordion/Accordion.cjs.map +1 -0
  220. package/dist/dist/components/accordion/Accordion.js +51 -0
  221. package/dist/dist/components/accordion/Accordion.js.map +1 -0
  222. package/dist/dist/components/alert/Alert.cjs +2 -0
  223. package/dist/dist/components/alert/Alert.cjs.map +1 -0
  224. package/dist/dist/components/alert/Alert.js +32 -0
  225. package/dist/dist/components/alert/Alert.js.map +1 -0
  226. package/dist/dist/components/avatar/Avatar.cjs +2 -0
  227. package/dist/dist/components/avatar/Avatar.cjs.map +1 -0
  228. package/dist/dist/components/avatar/Avatar.js +51 -0
  229. package/dist/dist/components/avatar/Avatar.js.map +1 -0
  230. package/dist/dist/components/avatar/AvatarGroup.cjs +2 -0
  231. package/dist/dist/components/avatar/AvatarGroup.cjs.map +1 -0
  232. package/dist/dist/components/avatar/AvatarGroup.js +32 -0
  233. package/dist/dist/components/avatar/AvatarGroup.js.map +1 -0
  234. package/dist/dist/components/badge/Badge.cjs +2 -0
  235. package/dist/dist/components/badge/Badge.cjs.map +1 -0
  236. package/dist/dist/components/badge/Badge.js +81 -0
  237. package/dist/dist/components/badge/Badge.js.map +1 -0
  238. package/dist/dist/components/badge/BadgeGroup.cjs +2 -0
  239. package/dist/dist/components/badge/BadgeGroup.cjs.map +1 -0
  240. package/dist/dist/components/badge/BadgeGroup.js +17 -0
  241. package/dist/dist/components/badge/BadgeGroup.js.map +1 -0
  242. package/dist/dist/components/breadcrumbs/Breadcrumbs.cjs +2 -0
  243. package/dist/dist/components/breadcrumbs/Breadcrumbs.cjs.map +1 -0
  244. package/dist/dist/components/breadcrumbs/Breadcrumbs.js +46 -0
  245. package/dist/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -0
  246. package/dist/dist/components/button/Button.cjs +2 -0
  247. package/dist/dist/components/button/Button.cjs.map +1 -0
  248. package/dist/dist/components/button/Button.js +21 -0
  249. package/dist/dist/components/button/Button.js.map +1 -0
  250. package/dist/dist/components/card/Card.cjs +2 -0
  251. package/dist/dist/components/card/Card.cjs.map +1 -0
  252. package/dist/dist/components/card/Card.js +50 -0
  253. package/dist/dist/components/card/Card.js.map +1 -0
  254. package/dist/dist/components/checkbox/Checkbox.cjs +2 -0
  255. package/dist/dist/components/checkbox/Checkbox.cjs.map +1 -0
  256. package/dist/dist/components/checkbox/Checkbox.js +46 -0
  257. package/dist/dist/components/checkbox/Checkbox.js.map +1 -0
  258. package/dist/dist/components/chip/Chip.cjs +2 -0
  259. package/dist/dist/components/chip/Chip.cjs.map +1 -0
  260. package/dist/dist/components/chip/Chip.js +51 -0
  261. package/dist/dist/components/chip/Chip.js.map +1 -0
  262. package/dist/dist/components/combobox/Combobox.cjs +2 -0
  263. package/dist/dist/components/combobox/Combobox.cjs.map +1 -0
  264. package/dist/dist/components/combobox/Combobox.js +114 -0
  265. package/dist/dist/components/combobox/Combobox.js.map +1 -0
  266. package/dist/dist/components/commandpalette/CommandPalette.cjs +2 -0
  267. package/dist/dist/components/commandpalette/CommandPalette.cjs.map +1 -0
  268. package/dist/dist/components/commandpalette/CommandPalette.js +111 -0
  269. package/dist/dist/components/commandpalette/CommandPalette.js.map +1 -0
  270. package/dist/dist/components/contextmenu/ContextMenu.cjs +2 -0
  271. package/dist/dist/components/contextmenu/ContextMenu.cjs.map +1 -0
  272. package/dist/dist/components/contextmenu/ContextMenu.js +104 -0
  273. package/dist/dist/components/contextmenu/ContextMenu.js.map +1 -0
  274. package/dist/dist/components/datagrid/DataGrid.cjs +2 -0
  275. package/dist/dist/components/datagrid/DataGrid.cjs.map +1 -0
  276. package/dist/dist/components/datagrid/DataGrid.js +227 -0
  277. package/dist/dist/components/datagrid/DataGrid.js.map +1 -0
  278. package/dist/dist/components/datepicker/DatePicker.cjs +2 -0
  279. package/dist/dist/components/datepicker/DatePicker.cjs.map +1 -0
  280. package/dist/dist/components/datepicker/DatePicker.js +265 -0
  281. package/dist/dist/components/datepicker/DatePicker.js.map +1 -0
  282. package/dist/dist/components/daterangepicker/DateRangePicker.cjs +2 -0
  283. package/dist/dist/components/daterangepicker/DateRangePicker.cjs.map +1 -0
  284. package/dist/dist/components/daterangepicker/DateRangePicker.js +322 -0
  285. package/dist/dist/components/daterangepicker/DateRangePicker.js.map +1 -0
  286. package/dist/dist/components/drawer/Drawer.cjs +2 -0
  287. package/dist/dist/components/drawer/Drawer.cjs.map +1 -0
  288. package/dist/dist/components/drawer/Drawer.js +57 -0
  289. package/dist/dist/components/drawer/Drawer.js.map +1 -0
  290. package/dist/dist/components/dropdown/Dropdown.cjs +2 -0
  291. package/dist/dist/components/dropdown/Dropdown.cjs.map +1 -0
  292. package/dist/dist/components/dropdown/Dropdown.js +115 -0
  293. package/dist/dist/components/dropdown/Dropdown.js.map +1 -0
  294. package/dist/dist/components/fileuploader/FileUploader.cjs +2 -0
  295. package/dist/dist/components/fileuploader/FileUploader.cjs.map +1 -0
  296. package/dist/dist/components/fileuploader/FileUploader.js +83 -0
  297. package/dist/dist/components/fileuploader/FileUploader.js.map +1 -0
  298. package/dist/dist/components/hovercard/HoverCard.cjs +2 -0
  299. package/dist/dist/components/hovercard/HoverCard.cjs.map +1 -0
  300. package/dist/dist/components/hovercard/HoverCard.js +78 -0
  301. package/dist/dist/components/hovercard/HoverCard.js.map +1 -0
  302. package/dist/dist/components/input/Input.cjs +2 -0
  303. package/dist/dist/components/input/Input.cjs.map +1 -0
  304. package/dist/dist/components/input/Input.js +41 -0
  305. package/dist/dist/components/input/Input.js.map +1 -0
  306. package/dist/dist/components/layout/Container.cjs +2 -0
  307. package/dist/dist/components/layout/Container.cjs.map +1 -0
  308. package/dist/dist/components/layout/Container.js +33 -0
  309. package/dist/dist/components/layout/Container.js.map +1 -0
  310. package/dist/dist/components/layout/Flex.cjs +2 -0
  311. package/dist/dist/components/layout/Flex.cjs.map +1 -0
  312. package/dist/dist/components/layout/Flex.js +26 -0
  313. package/dist/dist/components/layout/Flex.js.map +1 -0
  314. package/dist/dist/components/layout/Grid.cjs +2 -0
  315. package/dist/dist/components/layout/Grid.cjs.map +1 -0
  316. package/dist/dist/components/layout/Grid.js +21 -0
  317. package/dist/dist/components/layout/Grid.js.map +1 -0
  318. package/dist/dist/components/layout/HStack.cjs.map +1 -0
  319. package/dist/dist/components/layout/HStack.js.map +1 -0
  320. package/dist/dist/components/layout/Stack.cjs.map +1 -0
  321. package/dist/dist/components/layout/Stack.js.map +1 -0
  322. package/dist/dist/components/megamenu/MegaMenu.cjs +2 -0
  323. package/dist/dist/components/megamenu/MegaMenu.cjs.map +1 -0
  324. package/dist/dist/components/megamenu/MegaMenu.js +43 -0
  325. package/dist/dist/components/megamenu/MegaMenu.js.map +1 -0
  326. package/dist/dist/components/modal/Modal.cjs +2 -0
  327. package/dist/dist/components/modal/Modal.cjs.map +1 -0
  328. package/dist/dist/components/modal/Modal.js +91 -0
  329. package/dist/dist/components/modal/Modal.js.map +1 -0
  330. package/dist/dist/components/pagination/Pagination.cjs +2 -0
  331. package/dist/dist/components/pagination/Pagination.cjs.map +1 -0
  332. package/dist/dist/components/pagination/Pagination.js +62 -0
  333. package/dist/dist/components/pagination/Pagination.js.map +1 -0
  334. package/dist/dist/components/popover/Popover.cjs +2 -0
  335. package/dist/dist/components/popover/Popover.cjs.map +1 -0
  336. package/dist/dist/components/popover/Popover.js +123 -0
  337. package/dist/dist/components/popover/Popover.js.map +1 -0
  338. package/dist/dist/components/progress/Progress.cjs +2 -0
  339. package/dist/dist/components/progress/Progress.cjs.map +1 -0
  340. package/dist/dist/components/progress/Progress.js +33 -0
  341. package/dist/dist/components/progress/Progress.js.map +1 -0
  342. package/dist/dist/components/radiogroup/RadioGroup.cjs +2 -0
  343. package/dist/dist/components/radiogroup/RadioGroup.cjs.map +1 -0
  344. package/dist/dist/components/radiogroup/RadioGroup.js +79 -0
  345. package/dist/dist/components/radiogroup/RadioGroup.js.map +1 -0
  346. package/dist/dist/components/rating/Rating.cjs +2 -0
  347. package/dist/dist/components/rating/Rating.cjs.map +1 -0
  348. package/dist/dist/components/rating/Rating.js +49 -0
  349. package/dist/dist/components/rating/Rating.js.map +1 -0
  350. package/dist/dist/components/skeleton/Skeleton.cjs +2 -0
  351. package/dist/dist/components/skeleton/Skeleton.cjs.map +1 -0
  352. package/dist/dist/components/skeleton/Skeleton.js +86 -0
  353. package/dist/dist/components/skeleton/Skeleton.js.map +1 -0
  354. package/dist/dist/components/slider/Slider.cjs +2 -0
  355. package/dist/dist/components/slider/Slider.cjs.map +1 -0
  356. package/dist/dist/components/slider/Slider.js +116 -0
  357. package/dist/dist/components/slider/Slider.js.map +1 -0
  358. package/dist/dist/components/spinner/Spinner.cjs +2 -0
  359. package/dist/dist/components/spinner/Spinner.cjs.map +1 -0
  360. package/dist/dist/components/spinner/Spinner.js +21 -0
  361. package/dist/dist/components/spinner/Spinner.js.map +1 -0
  362. package/dist/dist/components/stepper/Stepper.cjs +6 -0
  363. package/dist/dist/components/stepper/Stepper.cjs.map +1 -0
  364. package/dist/dist/components/stepper/Stepper.js +43 -0
  365. package/dist/dist/components/stepper/Stepper.js.map +1 -0
  366. package/dist/dist/components/switch/Switch.cjs +2 -0
  367. package/dist/dist/components/switch/Switch.cjs.map +1 -0
  368. package/dist/dist/components/switch/Switch.js +67 -0
  369. package/dist/dist/components/switch/Switch.js.map +1 -0
  370. package/dist/dist/components/table/Table.cjs +2 -0
  371. package/dist/dist/components/table/Table.cjs.map +1 -0
  372. package/dist/dist/components/table/Table.js +46 -0
  373. package/dist/dist/components/table/Table.js.map +1 -0
  374. package/dist/dist/components/tabs/Tabs.cjs +2 -0
  375. package/dist/dist/components/tabs/Tabs.cjs.map +1 -0
  376. package/dist/dist/components/tabs/Tabs.js +56 -0
  377. package/dist/dist/components/tabs/Tabs.js.map +1 -0
  378. package/dist/dist/components/textarea/Textarea.cjs +2 -0
  379. package/dist/dist/components/textarea/Textarea.cjs.map +1 -0
  380. package/dist/dist/components/textarea/Textarea.js +75 -0
  381. package/dist/dist/components/textarea/Textarea.js.map +1 -0
  382. package/dist/dist/components/toast/Toast.cjs +2 -0
  383. package/dist/dist/components/toast/Toast.cjs.map +1 -0
  384. package/dist/dist/components/toast/Toast.js +52 -0
  385. package/dist/dist/components/toast/Toast.js.map +1 -0
  386. package/dist/dist/components/tooltip/Tooltip.cjs +2 -0
  387. package/dist/dist/components/tooltip/Tooltip.cjs.map +1 -0
  388. package/dist/dist/components/tooltip/Tooltip.js +73 -0
  389. package/dist/dist/components/tooltip/Tooltip.js.map +1 -0
  390. package/dist/dist/components/treeview/TreeView.cjs +2 -0
  391. package/dist/dist/components/treeview/TreeView.cjs.map +1 -0
  392. package/dist/dist/components/treeview/TreeView.js +98 -0
  393. package/dist/dist/components/treeview/TreeView.js.map +1 -0
  394. package/dist/dist/components/virtuallist/VirtualList.cjs +2 -0
  395. package/dist/dist/components/virtuallist/VirtualList.cjs.map +1 -0
  396. package/dist/dist/components/virtuallist/VirtualList.js +58 -0
  397. package/dist/dist/components/virtuallist/VirtualList.js.map +1 -0
  398. package/dist/dist/index.cjs +2 -0
  399. package/dist/dist/index.cjs.map +1 -0
  400. package/dist/dist/index.js +109 -0
  401. package/dist/dist/index.js.map +1 -0
  402. package/dist/dist/styles/index.css +1 -0
  403. package/dist/dist/theme/NUIProvider.cjs.map +1 -0
  404. package/dist/dist/theme/NUIProvider.js.map +1 -0
  405. package/dist/dist/theme/useTheme.cjs.map +1 -0
  406. package/dist/dist/theme/useTheme.js.map +1 -0
  407. package/dist/dist/types/components/accordion/Accordion.d.ts +18 -0
  408. package/dist/dist/types/components/accordion/Accordion.d.ts.map +1 -0
  409. package/dist/dist/types/components/alert/Alert.d.ts +13 -0
  410. package/dist/dist/types/components/alert/Alert.d.ts.map +1 -0
  411. package/dist/dist/types/components/avatar/Avatar.d.ts +18 -0
  412. package/dist/dist/types/components/avatar/Avatar.d.ts.map +1 -0
  413. package/dist/dist/types/components/avatar/AvatarGroup.d.ts +10 -0
  414. package/dist/dist/types/components/avatar/AvatarGroup.d.ts.map +1 -0
  415. package/dist/dist/types/components/badge/Badge.d.ts +22 -0
  416. package/dist/dist/types/components/badge/Badge.d.ts.map +1 -0
  417. package/dist/dist/types/components/badge/BadgeGroup.d.ts +9 -0
  418. package/dist/dist/types/components/badge/BadgeGroup.d.ts.map +1 -0
  419. package/dist/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +15 -0
  420. package/dist/dist/types/components/breadcrumbs/Breadcrumbs.d.ts.map +1 -0
  421. package/dist/dist/types/components/button/Button.d.ts +15 -0
  422. package/dist/dist/types/components/button/Button.d.ts.map +1 -0
  423. package/dist/dist/types/components/card/Card.d.ts +27 -0
  424. package/dist/dist/types/components/card/Card.d.ts.map +1 -0
  425. package/dist/dist/types/components/checkbox/Checkbox.d.ts +15 -0
  426. package/dist/dist/types/components/checkbox/Checkbox.d.ts.map +1 -0
  427. package/dist/dist/types/components/chip/Chip.d.ts +21 -0
  428. package/dist/dist/types/components/chip/Chip.d.ts.map +1 -0
  429. package/dist/dist/types/components/combobox/Combobox.d.ts +24 -0
  430. package/dist/dist/types/components/combobox/Combobox.d.ts.map +1 -0
  431. package/dist/dist/types/components/commandpalette/CommandPalette.d.ts +21 -0
  432. package/dist/dist/types/components/commandpalette/CommandPalette.d.ts.map +1 -0
  433. package/dist/dist/types/components/contextmenu/ContextMenu.d.ts +17 -0
  434. package/dist/dist/types/components/contextmenu/ContextMenu.d.ts.map +1 -0
  435. package/dist/dist/types/components/datagrid/DataGrid.d.ts +28 -0
  436. package/dist/dist/types/components/datagrid/DataGrid.d.ts.map +1 -0
  437. package/dist/dist/types/components/datepicker/DatePicker.d.ts +14 -0
  438. package/dist/dist/types/components/datepicker/DatePicker.d.ts.map +1 -0
  439. package/dist/dist/types/components/daterangepicker/DateRangePicker.d.ts +19 -0
  440. package/dist/dist/types/components/daterangepicker/DateRangePicker.d.ts.map +1 -0
  441. package/dist/dist/types/components/drawer/Drawer.d.ts +12 -0
  442. package/dist/dist/types/components/drawer/Drawer.d.ts.map +1 -0
  443. package/dist/dist/types/components/dropdown/Dropdown.d.ts +18 -0
  444. package/dist/dist/types/components/dropdown/Dropdown.d.ts.map +1 -0
  445. package/dist/dist/types/components/fileuploader/FileUploader.d.ts +9 -0
  446. package/dist/dist/types/components/fileuploader/FileUploader.d.ts.map +1 -0
  447. package/dist/dist/types/components/hovercard/HoverCard.d.ts +10 -0
  448. package/dist/dist/types/components/hovercard/HoverCard.d.ts.map +1 -0
  449. package/dist/dist/types/components/input/Input.d.ts +15 -0
  450. package/dist/dist/types/components/input/Input.d.ts.map +1 -0
  451. package/dist/dist/types/components/layout/Container.d.ts +8 -0
  452. package/dist/dist/types/components/layout/Container.d.ts.map +1 -0
  453. package/dist/dist/types/components/layout/Flex.d.ts +14 -0
  454. package/dist/dist/types/components/layout/Flex.d.ts.map +1 -0
  455. package/dist/dist/types/components/layout/Grid.d.ts +10 -0
  456. package/dist/dist/types/components/layout/Grid.d.ts.map +1 -0
  457. package/dist/dist/types/components/layout/HStack.d.ts.map +1 -0
  458. package/dist/dist/types/components/layout/Stack.d.ts.map +1 -0
  459. package/dist/dist/types/components/megamenu/MegaMenu.d.ts +12 -0
  460. package/dist/dist/types/components/megamenu/MegaMenu.d.ts.map +1 -0
  461. package/dist/dist/types/components/modal/Modal.d.ts +16 -0
  462. package/dist/dist/types/components/modal/Modal.d.ts.map +1 -0
  463. package/dist/dist/types/components/pagination/Pagination.d.ts +9 -0
  464. package/dist/dist/types/components/pagination/Pagination.d.ts.map +1 -0
  465. package/dist/dist/types/components/popover/Popover.d.ts +21 -0
  466. package/dist/dist/types/components/popover/Popover.d.ts.map +1 -0
  467. package/dist/dist/types/components/progress/Progress.d.ts +13 -0
  468. package/dist/dist/types/components/progress/Progress.d.ts.map +1 -0
  469. package/dist/dist/types/components/radiogroup/RadioGroup.d.ts +18 -0
  470. package/dist/dist/types/components/radiogroup/RadioGroup.d.ts.map +1 -0
  471. package/dist/dist/types/components/rating/Rating.d.ts +19 -0
  472. package/dist/dist/types/components/rating/Rating.d.ts.map +1 -0
  473. package/dist/dist/types/components/select/Select.d.ts +20 -0
  474. package/dist/dist/types/components/select/Select.d.ts.map +1 -0
  475. package/dist/dist/types/components/skeleton/Skeleton.d.ts +44 -0
  476. package/dist/dist/types/components/skeleton/Skeleton.d.ts.map +1 -0
  477. package/dist/dist/types/components/slider/Slider.d.ts +13 -0
  478. package/dist/dist/types/components/slider/Slider.d.ts.map +1 -0
  479. package/dist/dist/types/components/spinner/Spinner.d.ts +7 -0
  480. package/dist/dist/types/components/spinner/Spinner.d.ts.map +1 -0
  481. package/dist/dist/types/components/stepper/Stepper.d.ts +12 -0
  482. package/dist/dist/types/components/stepper/Stepper.d.ts.map +1 -0
  483. package/dist/dist/types/components/switch/Switch.d.ts +15 -0
  484. package/dist/dist/types/components/switch/Switch.d.ts.map +1 -0
  485. package/dist/dist/types/components/table/Table.d.ts +14 -0
  486. package/dist/dist/types/components/table/Table.d.ts.map +1 -0
  487. package/dist/dist/types/components/tabs/Tabs.d.ts +14 -0
  488. package/dist/dist/types/components/tabs/Tabs.d.ts.map +1 -0
  489. package/dist/dist/types/components/textarea/Textarea.d.ts +14 -0
  490. package/dist/dist/types/components/textarea/Textarea.d.ts.map +1 -0
  491. package/dist/dist/types/components/toast/Toast.d.ts +16 -0
  492. package/dist/dist/types/components/toast/Toast.d.ts.map +1 -0
  493. package/dist/dist/types/components/tooltip/Tooltip.d.ts +10 -0
  494. package/dist/dist/types/components/tooltip/Tooltip.d.ts.map +1 -0
  495. package/dist/dist/types/components/treeview/TreeView.d.ts +16 -0
  496. package/dist/dist/types/components/treeview/TreeView.d.ts.map +1 -0
  497. package/dist/dist/types/components/virtuallist/VirtualList.d.ts +23 -0
  498. package/dist/dist/types/components/virtuallist/VirtualList.d.ts.map +1 -0
  499. package/dist/dist/types/index.d.ts +50 -0
  500. package/dist/dist/types/index.d.ts.map +1 -0
  501. package/dist/dist/types/theme/NUIProvider.d.ts.map +1 -0
  502. package/dist/dist/types/theme/useTheme.d.ts.map +1 -0
  503. package/dist/dist/types/utils/generateid/generateId.d.ts +2 -0
  504. package/dist/dist/types/utils/generateid/generateId.d.ts.map +1 -0
  505. package/dist/dist/types/utils/index.d.ts +9 -0
  506. package/dist/dist/types/utils/index.d.ts.map +1 -0
  507. package/dist/dist/types/utils/inertmanager/inertManager.d.ts +13 -0
  508. package/dist/dist/types/utils/inertmanager/inertManager.d.ts.map +1 -0
  509. package/dist/dist/types/utils/keyboardnav/keyboardNav.d.ts +11 -0
  510. package/dist/dist/types/utils/keyboardnav/keyboardNav.d.ts.map +1 -0
  511. package/dist/dist/types/utils/onclickoutside/onClickOutside.d.ts +3 -0
  512. package/dist/dist/types/utils/onclickoutside/onClickOutside.d.ts.map +1 -0
  513. package/dist/dist/types/utils/portal/portal.d.ts +4 -0
  514. package/dist/dist/types/utils/portal/portal.d.ts.map +1 -0
  515. package/dist/dist/types/utils/restorefocus/restoreFocus.d.ts +8 -0
  516. package/dist/dist/types/utils/restorefocus/restoreFocus.d.ts.map +1 -0
  517. package/dist/dist/types/utils/scrolllock/scrollLock.d.ts +11 -0
  518. package/dist/dist/types/utils/scrolllock/scrollLock.d.ts.map +1 -0
  519. package/dist/dist/types/utils/trapfocus/trapFocus.d.ts +8 -0
  520. package/dist/dist/types/utils/trapfocus/trapFocus.d.ts.map +1 -0
  521. package/dist/dist/utils/generateid/generateId.cjs.map +1 -0
  522. package/dist/dist/utils/generateid/generateId.js.map +1 -0
  523. package/dist/dist/utils/inertmanager/inertManager.cjs +2 -0
  524. package/dist/dist/utils/inertmanager/inertManager.cjs.map +1 -0
  525. package/dist/dist/utils/inertmanager/inertManager.js +18 -0
  526. package/dist/dist/utils/inertmanager/inertManager.js.map +1 -0
  527. package/dist/dist/utils/keyboardnav/keyboardNav.cjs.map +1 -0
  528. package/dist/dist/utils/keyboardnav/keyboardNav.js.map +1 -0
  529. package/dist/dist/utils/onclickoutside/onClickOutside.cjs +2 -0
  530. package/dist/dist/utils/onclickoutside/onClickOutside.cjs.map +1 -0
  531. package/dist/dist/utils/onclickoutside/onClickOutside.js +11 -0
  532. package/dist/dist/utils/onclickoutside/onClickOutside.js.map +1 -0
  533. package/dist/dist/utils/portal/portal.cjs +2 -0
  534. package/dist/dist/utils/portal/portal.cjs.map +1 -0
  535. package/dist/dist/utils/portal/portal.js +8 -0
  536. package/dist/dist/utils/portal/portal.js.map +1 -0
  537. package/dist/dist/utils/restorefocus/restoreFocus.cjs +2 -0
  538. package/dist/dist/utils/restorefocus/restoreFocus.cjs.map +1 -0
  539. package/dist/dist/utils/restorefocus/restoreFocus.js +7 -0
  540. package/dist/dist/utils/restorefocus/restoreFocus.js.map +1 -0
  541. package/dist/dist/utils/scrolllock/scrollLock.cjs +2 -0
  542. package/dist/dist/utils/scrolllock/scrollLock.cjs.map +1 -0
  543. package/dist/dist/utils/scrolllock/scrollLock.js +12 -0
  544. package/dist/dist/utils/scrolllock/scrollLock.js.map +1 -0
  545. package/dist/dist/utils/trapfocus/trapFocus.cjs +3 -0
  546. package/dist/dist/utils/trapfocus/trapFocus.cjs.map +1 -0
  547. package/dist/dist/utils/trapfocus/trapFocus.js +14 -0
  548. package/dist/dist/utils/trapfocus/trapFocus.js.map +1 -0
  549. package/dist/index.cjs +1 -1
  550. package/dist/index.js +118 -107
  551. package/dist/index.js.map +1 -1
  552. package/dist/package.json +2 -2
  553. package/dist/styles/nui.css +1 -1
  554. package/dist/types/components/accordion/Accordion.d.ts +7 -3
  555. package/dist/types/components/accordion/Accordion.d.ts.map +1 -1
  556. package/dist/types/components/alert/Alert.d.ts +18 -5
  557. package/dist/types/components/alert/Alert.d.ts.map +1 -1
  558. package/dist/types/components/avatar/Avatar.d.ts +12 -8
  559. package/dist/types/components/avatar/Avatar.d.ts.map +1 -1
  560. package/dist/types/components/avatar/AvatarGroup.d.ts +11 -4
  561. package/dist/types/components/avatar/AvatarGroup.d.ts.map +1 -1
  562. package/dist/types/components/badge/Badge.d.ts +19 -11
  563. package/dist/types/components/badge/Badge.d.ts.map +1 -1
  564. package/dist/types/components/badge/BadgeGroup.d.ts +7 -4
  565. package/dist/types/components/badge/BadgeGroup.d.ts.map +1 -1
  566. package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +14 -6
  567. package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  568. package/dist/types/components/button/Button.d.ts +25 -10
  569. package/dist/types/components/button/Button.d.ts.map +1 -1
  570. package/dist/types/components/card/Card.d.ts +12 -21
  571. package/dist/types/components/card/Card.d.ts.map +1 -1
  572. package/dist/types/components/checkbox/Checkbox.d.ts +12 -7
  573. package/dist/types/components/checkbox/Checkbox.d.ts.map +1 -1
  574. package/dist/types/components/chip/Chip.d.ts +14 -11
  575. package/dist/types/components/chip/Chip.d.ts.map +1 -1
  576. package/dist/types/components/combobox/Combobox.d.ts +15 -4
  577. package/dist/types/components/combobox/Combobox.d.ts.map +1 -1
  578. package/dist/types/components/commandpalette/CommandPalette.d.ts +12 -3
  579. package/dist/types/components/commandpalette/CommandPalette.d.ts.map +1 -1
  580. package/dist/types/components/contextmenu/ContextMenu.d.ts +14 -6
  581. package/dist/types/components/contextmenu/ContextMenu.d.ts.map +1 -1
  582. package/dist/types/components/datagrid/DataGrid.d.ts +16 -4
  583. package/dist/types/components/datagrid/DataGrid.d.ts.map +1 -1
  584. package/dist/types/components/datepicker/DatePicker.d.ts +13 -1
  585. package/dist/types/components/datepicker/DatePicker.d.ts.map +1 -1
  586. package/dist/types/components/daterangepicker/DateRangePicker.d.ts +3 -1
  587. package/dist/types/components/daterangepicker/DateRangePicker.d.ts.map +1 -1
  588. package/dist/types/components/dialog/DialogProvider.d.ts +2 -0
  589. package/dist/types/components/dialog/DialogProvider.d.ts.map +1 -0
  590. package/dist/types/components/dialog/dialogStore.d.ts +42 -0
  591. package/dist/types/components/dialog/dialogStore.d.ts.map +1 -0
  592. package/dist/types/components/drawer/Drawer.d.ts +18 -4
  593. package/dist/types/components/drawer/Drawer.d.ts.map +1 -1
  594. package/dist/types/components/dropdown/Dropdown.d.ts +21 -16
  595. package/dist/types/components/dropdown/Dropdown.d.ts.map +1 -1
  596. package/dist/types/components/fileuploader/FileUploader.d.ts +22 -3
  597. package/dist/types/components/fileuploader/FileUploader.d.ts.map +1 -1
  598. package/dist/types/components/hovercard/HoverCard.d.ts +45 -5
  599. package/dist/types/components/hovercard/HoverCard.d.ts.map +1 -1
  600. package/dist/types/components/input/Input.d.ts +20 -10
  601. package/dist/types/components/input/Input.d.ts.map +1 -1
  602. package/dist/types/components/layout/Container.d.ts +8 -4
  603. package/dist/types/components/layout/Container.d.ts.map +1 -1
  604. package/dist/types/components/layout/Flex.d.ts +27 -10
  605. package/dist/types/components/layout/Flex.d.ts.map +1 -1
  606. package/dist/types/components/layout/Grid.d.ts +11 -5
  607. package/dist/types/components/layout/Grid.d.ts.map +1 -1
  608. package/dist/types/components/link/Link.d.ts +22 -0
  609. package/dist/types/components/link/Link.d.ts.map +1 -0
  610. package/dist/types/components/megamenu/MegaMenu.d.ts +8 -11
  611. package/dist/types/components/megamenu/MegaMenu.d.ts.map +1 -1
  612. package/dist/types/components/modal/Modal.d.ts +8 -7
  613. package/dist/types/components/modal/Modal.d.ts.map +1 -1
  614. package/dist/types/components/multiselect/MultiSelect.d.ts +33 -0
  615. package/dist/types/components/multiselect/MultiSelect.d.ts.map +1 -0
  616. package/dist/types/components/nuiprovider/NUIProvider.d.ts +29 -0
  617. package/dist/types/components/nuiprovider/NUIProvider.d.ts.map +1 -0
  618. package/dist/types/components/pagination/Pagination.d.ts +17 -3
  619. package/dist/types/components/pagination/Pagination.d.ts.map +1 -1
  620. package/dist/types/components/popover/Popover.d.ts +54 -16
  621. package/dist/types/components/popover/Popover.d.ts.map +1 -1
  622. package/dist/types/components/progress/Progress.d.ts +17 -7
  623. package/dist/types/components/progress/Progress.d.ts.map +1 -1
  624. package/dist/types/components/radiogroup/RadioGroup.d.ts +15 -10
  625. package/dist/types/components/radiogroup/RadioGroup.d.ts.map +1 -1
  626. package/dist/types/components/rating/Rating.d.ts +24 -10
  627. package/dist/types/components/rating/Rating.d.ts.map +1 -1
  628. package/dist/types/components/resizable/Resizable.d.ts +24 -0
  629. package/dist/types/components/resizable/Resizable.d.ts.map +1 -0
  630. package/dist/types/components/select/Select.d.ts +17 -8
  631. package/dist/types/components/select/Select.d.ts.map +1 -1
  632. package/dist/types/components/skeleton/Skeleton.d.ts +37 -36
  633. package/dist/types/components/skeleton/Skeleton.d.ts.map +1 -1
  634. package/dist/types/components/slider/Slider.d.ts +15 -4
  635. package/dist/types/components/slider/Slider.d.ts.map +1 -1
  636. package/dist/types/components/spinner/Spinner.d.ts +14 -4
  637. package/dist/types/components/spinner/Spinner.d.ts.map +1 -1
  638. package/dist/types/components/stepper/Stepper.d.ts +17 -3
  639. package/dist/types/components/stepper/Stepper.d.ts.map +1 -1
  640. package/dist/types/components/switch/Switch.d.ts +20 -5
  641. package/dist/types/components/switch/Switch.d.ts.map +1 -1
  642. package/dist/types/components/table/Table.d.ts +24 -4
  643. package/dist/types/components/table/Table.d.ts.map +1 -1
  644. package/dist/types/components/tabs/Tabs.d.ts +25 -12
  645. package/dist/types/components/tabs/Tabs.d.ts.map +1 -1
  646. package/dist/types/components/textarea/Textarea.d.ts +8 -5
  647. package/dist/types/components/textarea/Textarea.d.ts.map +1 -1
  648. package/dist/types/components/timepicker/TimePicker.d.ts +26 -0
  649. package/dist/types/components/timepicker/TimePicker.d.ts.map +1 -0
  650. package/dist/types/components/timerangepicker/TimeRangePicker.d.ts +32 -0
  651. package/dist/types/components/timerangepicker/TimeRangePicker.d.ts.map +1 -0
  652. package/dist/types/components/toast/Toast.d.ts +23 -7
  653. package/dist/types/components/toast/Toast.d.ts.map +1 -1
  654. package/dist/types/components/tooltip/Tooltip.d.ts +13 -2
  655. package/dist/types/components/tooltip/Tooltip.d.ts.map +1 -1
  656. package/dist/types/components/treeview/TreeView.d.ts +20 -6
  657. package/dist/types/components/treeview/TreeView.d.ts.map +1 -1
  658. package/dist/types/components/virtuallist/VirtualList.d.ts +12 -16
  659. package/dist/types/components/virtuallist/VirtualList.d.ts.map +1 -1
  660. package/dist/types/index.d.ts +8 -4
  661. package/dist/types/index.d.ts.map +1 -1
  662. package/dist/types/utils/cn/cn.d.ts +19 -0
  663. package/dist/types/utils/cn/cn.d.ts.map +1 -0
  664. package/dist/types/utils/generateid/generateId.d.ts +7 -0
  665. package/dist/types/utils/generateid/generateId.d.ts.map +1 -1
  666. package/dist/types/utils/index.d.ts +2 -0
  667. package/dist/types/utils/index.d.ts.map +1 -1
  668. package/dist/types/utils/inertmanager/inertManager.d.ts +13 -0
  669. package/dist/types/utils/inertmanager/inertManager.d.ts.map +1 -1
  670. package/dist/types/utils/keyboardnav/keyboardNav.d.ts +17 -6
  671. package/dist/types/utils/keyboardnav/keyboardNav.d.ts.map +1 -1
  672. package/dist/types/utils/onclickoutside/onClickOutside.d.ts +9 -1
  673. package/dist/types/utils/onclickoutside/onClickOutside.d.ts.map +1 -1
  674. package/dist/types/utils/portal/portal.d.ts +14 -1
  675. package/dist/types/utils/portal/portal.d.ts.map +1 -1
  676. package/dist/types/utils/restorefocus/restoreFocus.d.ts +8 -4
  677. package/dist/types/utils/restorefocus/restoreFocus.d.ts.map +1 -1
  678. package/dist/types/utils/scrolllock/scrollLock.d.ts +10 -2
  679. package/dist/types/utils/scrolllock/scrollLock.d.ts.map +1 -1
  680. package/dist/types/utils/slot/slot.d.ts +12 -0
  681. package/dist/types/utils/slot/slot.d.ts.map +1 -0
  682. package/dist/types/utils/trapfocus/trapFocus.d.ts +6 -2
  683. package/dist/types/utils/trapfocus/trapFocus.d.ts.map +1 -1
  684. package/dist/utils/cn/cn.cjs +2 -0
  685. package/dist/utils/cn/cn.cjs.map +1 -0
  686. package/dist/utils/cn/cn.js +21 -0
  687. package/dist/utils/cn/cn.js.map +1 -0
  688. package/dist/utils/inertmanager/inertManager.cjs.map +1 -1
  689. package/dist/utils/inertmanager/inertManager.js.map +1 -1
  690. package/dist/utils/onclickoutside/onClickOutside.cjs +1 -1
  691. package/dist/utils/onclickoutside/onClickOutside.cjs.map +1 -1
  692. package/dist/utils/onclickoutside/onClickOutside.js +10 -6
  693. package/dist/utils/onclickoutside/onClickOutside.js.map +1 -1
  694. package/dist/utils/portal/portal.cjs.map +1 -1
  695. package/dist/utils/portal/portal.js.map +1 -1
  696. package/dist/utils/restorefocus/restoreFocus.cjs.map +1 -1
  697. package/dist/utils/restorefocus/restoreFocus.js.map +1 -1
  698. package/dist/utils/scrolllock/scrollLock.cjs.map +1 -1
  699. package/dist/utils/scrolllock/scrollLock.js +7 -0
  700. package/dist/utils/scrolllock/scrollLock.js.map +1 -1
  701. package/dist/utils/slot/slot.cjs +2 -0
  702. package/dist/utils/slot/slot.cjs.map +1 -0
  703. package/dist/utils/slot/slot.js +57 -0
  704. package/dist/utils/slot/slot.js.map +1 -0
  705. package/dist/utils/trapfocus/trapFocus.cjs.map +1 -1
  706. package/dist/utils/trapfocus/trapFocus.js.map +1 -1
  707. package/package.json +2 -2
  708. package/dist/components/layout/HStack.cjs.map +0 -1
  709. package/dist/components/layout/HStack.js.map +0 -1
  710. package/dist/components/layout/Stack.cjs.map +0 -1
  711. package/dist/components/layout/Stack.js.map +0 -1
  712. package/dist/theme/NUIProvider.cjs.map +0 -1
  713. package/dist/theme/NUIProvider.js.map +0 -1
  714. package/dist/theme/useTheme.cjs.map +0 -1
  715. package/dist/theme/useTheme.js.map +0 -1
  716. package/dist/types/components/layout/HStack.d.ts.map +0 -1
  717. package/dist/types/components/layout/Stack.d.ts.map +0 -1
  718. package/dist/types/theme/NUIProvider.d.ts.map +0 -1
  719. package/dist/types/theme/useTheme.d.ts.map +0 -1
  720. package/dist/utils/generateid/generateId.cjs.map +0 -1
  721. package/dist/utils/generateid/generateId.js.map +0 -1
  722. package/dist/utils/keyboardnav/keyboardNav.cjs.map +0 -1
  723. package/dist/utils/keyboardnav/keyboardNav.js.map +0 -1
  724. /package/dist/{components → dist/components}/layout/HStack.cjs +0 -0
  725. /package/dist/{components → dist/components}/layout/HStack.js +0 -0
  726. /package/dist/{components → dist/components}/layout/Stack.cjs +0 -0
  727. /package/dist/{components → dist/components}/layout/Stack.js +0 -0
  728. /package/dist/{theme → dist/theme}/NUIProvider.cjs +0 -0
  729. /package/dist/{theme → dist/theme}/NUIProvider.js +0 -0
  730. /package/dist/{theme → dist/theme}/useTheme.cjs +0 -0
  731. /package/dist/{theme → dist/theme}/useTheme.js +0 -0
  732. /package/dist/{types → dist/types}/components/layout/HStack.d.ts +0 -0
  733. /package/dist/{types → dist/types}/components/layout/Stack.d.ts +0 -0
  734. /package/dist/{types → dist/types}/theme/NUIProvider.d.ts +0 -0
  735. /package/dist/{types → dist/types}/theme/useTheme.d.ts +0 -0
  736. /package/dist/{utils → dist/utils}/generateid/generateId.cjs +0 -0
  737. /package/dist/{utils → dist/utils}/generateid/generateId.js +0 -0
  738. /package/dist/{utils → dist/utils}/keyboardnav/keyboardNav.cjs +0 -0
  739. /package/dist/{utils → dist/utils}/keyboardnav/keyboardNav.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.js","sources":["../../../../src/components/dropdown/Dropdown.tsx"],"sourcesContent":["/**\r\n * Dropdown.tsx (Fixed Version — No TS Errors)\r\n * -------------------------------------------\r\n * Accessible dropdown menu:\r\n * - Arrow key navigation\r\n * - Roving tabindex\r\n * - ESC and click outside to close\r\n * - Focus restore\r\n * - Portal rendering\r\n * - Fully typed with no TS or ESLint errors\r\n */\r\n\r\nimport React, {\r\n createContext,\r\n useState,\r\n useContext,\r\n useRef,\r\n useEffect,\r\n ReactNode,\r\n} from 'react';\r\n\r\nimport './Dropdown.css';\r\n\r\nimport { Portal, onClickOutside, restoreFocus, createKeyboardNavigation } from '../../utils/index';\r\n\r\n/* ============================================================\r\n * Context Types\r\n * ============================================================ */\r\n\r\ninterface DropdownContextProps {\r\n open: boolean;\r\n setOpen: React.Dispatch<React.SetStateAction<boolean>>;\r\n triggerRef: React.RefObject<HTMLButtonElement | null>;\r\n menuRef: React.RefObject<HTMLDivElement | null>;\r\n registerItem: (el: HTMLElement) => void;\r\n items: React.RefObject<HTMLElement[]>;\r\n}\r\n\r\nconst DropdownContext = createContext<DropdownContextProps | null>(null);\r\n\r\nfunction useDropdown() {\r\n const ctx = useContext(DropdownContext);\r\n if (!ctx) throw new Error('Dropdown components must be inside <Dropdown>');\r\n return ctx;\r\n}\r\n\r\n/* ============================================================\r\n * Dropdown root\r\n * ============================================================ */\r\n\r\nexport function Dropdown({ children }: { children: ReactNode }) {\r\n const [open, setOpen] = useState(false);\r\n\r\n const triggerRef = useRef<HTMLButtonElement>(null);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const items = useRef<HTMLElement[]>([]);\r\n\r\n const registerItem = (el: HTMLElement) => {\r\n items.current.push(el);\r\n };\r\n\r\n // Restore focus to trigger when closing\r\n useEffect(() => {\r\n if (!open) restoreFocus(triggerRef.current);\r\n }, [open]);\r\n\r\n return (\r\n <DropdownContext.Provider\r\n value={{\r\n open,\r\n setOpen,\r\n triggerRef,\r\n menuRef,\r\n registerItem,\r\n items,\r\n }}\r\n >\r\n <div className=\"ui-dropdown\">{children}</div>\r\n </DropdownContext.Provider>\r\n );\r\n}\r\n\r\n/* ============================================================\r\n * Trigger\r\n * ============================================================ */\r\n\r\nexport function DropdownTrigger({\r\n children,\r\n className = '',\r\n}: {\r\n children: ReactNode;\r\n className?: string;\r\n}) {\r\n const { open, setOpen, triggerRef } = useDropdown();\r\n\r\n return (\r\n <button\r\n ref={triggerRef}\r\n className={`ui-dropdown-trigger ${className}`}\r\n aria-haspopup=\"menu\"\r\n aria-expanded={open}\r\n onClick={() => setOpen((prev) => !prev)}\r\n >\r\n {children}\r\n </button>\r\n );\r\n}\r\n\r\n/* ============================================================\r\n * Menu\r\n * ============================================================ */\r\n\r\nexport function DropdownMenu({\r\n className = '',\r\n children,\r\n}: {\r\n className?: string;\r\n children: ReactNode;\r\n}) {\r\n const { open, setOpen, menuRef, items } = useDropdown();\r\n\r\n // Click outside\r\n useEffect(() => {\r\n if (!open) return;\r\n return onClickOutside(menuRef, () => setOpen(false));\r\n }, [open, menuRef, setOpen]);\r\n\r\n // ESC\r\n useEffect(() => {\r\n if (!open) return;\r\n\r\n const handler = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') setOpen(false);\r\n };\r\n\r\n document.addEventListener('keydown', handler);\r\n return () => document.removeEventListener('keydown', handler);\r\n }, [open, setOpen]);\r\n\r\n // Keyboard navigation\r\n useEffect(() => {\r\n if (!open) return;\r\n\r\n const menu = menuRef.current;\r\n if (!menu) return;\r\n\r\n const nav = createKeyboardNavigation({\r\n items: items.current,\r\n onSelect: (i) => items.current[i]?.click(),\r\n });\r\n\r\n menu.addEventListener('keydown', nav);\r\n items.current[0]?.focus();\r\n\r\n return () => menu.removeEventListener('keydown', nav);\r\n }, [open, menuRef, items]);\r\n\r\n if (!open) return null;\r\n\r\n return (\r\n <Portal>\r\n <div className=\"ui-dropdown-menu-wrapper\">\r\n <div\r\n ref={menuRef}\r\n className={`ui-dropdown-menu ${className}`}\r\n role=\"menu\"\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n </Portal>\r\n );\r\n}\r\n\r\n/* ============================================================\r\n * Menu Item\r\n * ============================================================ */\r\n\r\nexport function DropdownItem({\r\n children,\r\n onSelect,\r\n className = '',\r\n}: {\r\n children: ReactNode;\r\n onSelect?: () => void;\r\n className?: string;\r\n}) {\r\n const { registerItem, setOpen } = useDropdown();\r\n const itemRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (itemRef.current) registerItem(itemRef.current);\r\n }, [registerItem]);\r\n\r\n const handleClick = () => {\r\n onSelect?.();\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n <div\r\n ref={itemRef}\r\n className={`ui-dropdown-item ${className}`}\r\n role=\"menuitem\"\r\n tabIndex={-1}\r\n onClick={handleClick}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n"],"names":["DropdownContext","createContext","useDropdown","ctx","useContext","Dropdown","children","open","setOpen","useState","triggerRef","useRef","menuRef","items","registerItem","el","useEffect","restoreFocus","jsx","DropdownTrigger","className","prev","DropdownMenu","onClickOutside","handler","e","menu","nav","createKeyboardNavigation","i","Portal","DropdownItem","onSelect","itemRef","handleClick"],"mappings":";;;;;;;AAsCA,MAAMA,IAAkBC,EAA2C,IAAI;AAEvE,SAASC,IAAc;AACrB,QAAMC,IAAMC,EAAWJ,CAAe;AACtC,MAAI,CAACG,EAAK,OAAM,IAAI,MAAM,+CAA+C;AACzE,SAAOA;AACT;AAMO,SAASE,EAAS,EAAE,UAAAC,KAAqC;AAC9D,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAS,EAAK,GAEhCC,IAAaC,EAA0B,IAAI,GAC3CC,IAAUD,EAAuB,IAAI,GACrCE,IAAQF,EAAsB,EAAE,GAEhCG,IAAe,CAACC,MAAoB;AACxC,IAAAF,EAAM,QAAQ,KAAKE,CAAE;AAAA,EACvB;AAGA,SAAAC,EAAU,MAAM;AACd,IAAKT,KAAMU,EAAaP,EAAW,OAAO;AAAA,EAC5C,GAAG,CAACH,CAAI,CAAC,GAGP,gBAAAW;AAAA,IAAClB,EAAgB;AAAA,IAAhB;AAAA,MACC,OAAO;AAAA,QACL,MAAAO;AAAA,QACA,SAAAC;AAAA,QACA,YAAAE;AAAA,QACA,SAAAE;AAAA,QACA,cAAAE;AAAA,QACA,OAAAD;AAAA,MAAA;AAAA,MAGF,UAAA,gBAAAK,EAAC,OAAA,EAAI,WAAU,eAAe,UAAAZ,EAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAG7C;AAMO,SAASa,EAAgB;AAAA,EAC9B,UAAAb;AAAA,EACA,WAAAc,IAAY;AACd,GAGG;AACD,QAAM,EAAE,MAAAb,GAAM,SAAAC,GAAS,YAAAE,EAAA,IAAeR,EAAA;AAEtC,SACE,gBAAAgB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKR;AAAA,MACL,WAAW,uBAAuBU,CAAS;AAAA,MAC3C,iBAAc;AAAA,MACd,iBAAeb;AAAA,MACf,SAAS,MAAMC,EAAQ,CAACa,MAAS,CAACA,CAAI;AAAA,MAErC,UAAAf;AAAA,IAAA;AAAA,EAAA;AAGP;AAMO,SAASgB,EAAa;AAAA,EAC3B,WAAAF,IAAY;AAAA,EACZ,UAAAd;AACF,GAGG;AACD,QAAM,EAAE,MAAAC,GAAM,SAAAC,GAAS,SAAAI,GAAS,OAAAC,EAAA,IAAUX,EAAA;AAsC1C,SAnCAc,EAAU,MAAM;AACd,QAAKT;AACL,aAAOgB,EAAeX,GAAS,MAAMJ,EAAQ,EAAK,CAAC;AAAA,EACrD,GAAG,CAACD,GAAMK,GAASJ,CAAO,CAAC,GAG3BQ,EAAU,MAAM;AACd,QAAI,CAACT,EAAM;AAEX,UAAMiB,IAAU,CAACC,MAAqB;AACpC,MAAIA,EAAE,QAAQ,YAAUjB,EAAQ,EAAK;AAAA,IACvC;AAEA,oBAAS,iBAAiB,WAAWgB,CAAO,GACrC,MAAM,SAAS,oBAAoB,WAAWA,CAAO;AAAA,EAC9D,GAAG,CAACjB,GAAMC,CAAO,CAAC,GAGlBQ,EAAU,MAAM;AACd,QAAI,CAACT,EAAM;AAEX,UAAMmB,IAAOd,EAAQ;AACrB,QAAI,CAACc,EAAM;AAEX,UAAMC,IAAMC,EAAyB;AAAA,MACnC,OAAOf,EAAM;AAAA,MACb,UAAU,CAACgB,MAAMhB,EAAM,QAAQgB,CAAC,GAAG,MAAA;AAAA,IAAM,CAC1C;AAED,WAAAH,EAAK,iBAAiB,WAAWC,CAAG,GACpCd,EAAM,QAAQ,CAAC,GAAG,MAAA,GAEX,MAAMa,EAAK,oBAAoB,WAAWC,CAAG;AAAA,EACtD,GAAG,CAACpB,GAAMK,GAASC,CAAK,CAAC,GAEpBN,IAGH,gBAAAW,EAACY,GAAA,EACC,UAAA,gBAAAZ,EAAC,OAAA,EAAI,WAAU,4BACb,UAAA,gBAAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKN;AAAA,MACL,WAAW,oBAAoBQ,CAAS;AAAA,MACxC,MAAK;AAAA,MAEJ,UAAAd;AAAA,IAAA;AAAA,EAAA,GAEL,EAAA,CACF,IAbgB;AAepB;AAMO,SAASyB,EAAa;AAAA,EAC3B,UAAAzB;AAAA,EACA,UAAA0B;AAAA,EACA,WAAAZ,IAAY;AACd,GAIG;AACD,QAAM,EAAE,cAAAN,GAAc,SAAAN,EAAA,IAAYN,EAAA,GAC5B+B,IAAUtB,EAAuB,IAAI;AAE3C,EAAAK,EAAU,MAAM;AACd,IAAIiB,EAAQ,WAASnB,EAAamB,EAAQ,OAAO;AAAA,EACnD,GAAG,CAACnB,CAAY,CAAC;AAEjB,QAAMoB,IAAc,MAAM;AACxB,IAAAF,IAAA,GACAxB,EAAQ,EAAK;AAAA,EACf;AAEA,SACE,gBAAAU;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKe;AAAA,MACL,WAAW,oBAAoBb,CAAS;AAAA,MACxC,MAAK;AAAA,MACL,UAAU;AAAA,MACV,SAASc;AAAA,MAER,UAAA5B;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),t=require("react");;/* empty css */function x({multiple:i=!1,accept:u,onChange:c,className:d="",placeholder:f="Drag files here or click to upload"}){const n=t.useRef(null),[a,p]=t.useState([]),[m,o]=t.useState(!1),s=t.useCallback(e=>{p(e),c?.(e)},[c]),v=e=>{e.preventDefault(),o(!1);const l=Array.from(e.dataTransfer.files);if(!i){s([l[0]]);return}s([...a,...l])},g=e=>{const l=e.target.files?Array.from(e.target.files):[];if(!i){s([l[0]]);return}s([...a,...l])},h=e=>{const l=a.filter((y,j)=>j!==e);s(l)};return r.jsxs("div",{className:`ui-fileupload ${d}`,children:[r.jsx("div",{className:`ui-fileupload-dropzone ${m?"dragover":""}`,tabIndex:0,role:"button","aria-label":"Upload files",onClick:()=>n.current?.click(),onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&n.current?.click()},onDragOver:e=>{e.preventDefault(),o(!0)},onDragLeave:()=>o(!1),onDrop:v,children:r.jsx("span",{children:f})}),r.jsx("input",{ref:n,type:"file",accept:u,multiple:i,style:{display:"none"},onChange:g}),a.length>0&&r.jsx("ul",{className:"ui-fileupload-list",children:a.map((e,l)=>r.jsxs("li",{className:"ui-fileupload-item",children:[r.jsx("span",{className:"ui-fileupload-filename",children:e.name}),r.jsx("button",{className:"ui-fileupload-remove","aria-label":"Remove file",onClick:()=>h(l),children:"×"})]},l))})]})}exports.FileUploader=x;
2
+ //# sourceMappingURL=FileUploader.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileUploader.cjs","sources":["../../../../src/components/fileuploader/FileUploader.tsx"],"sourcesContent":["/**\r\n * FileUploader.tsx — FINAL VERSION\r\n * --------------------------------\r\n * Features:\r\n * - Drag & drop\r\n * - Click to upload\r\n * - Keyboard activate\r\n * - File list preview\r\n * - Remove file\r\n * - Accept filters\r\n * - Multiple uploads\r\n */\r\n\r\nimport { useRef, useState, useCallback, DragEvent, ChangeEvent } from 'react';\r\nimport './FileUploader.css';\r\n\r\nexport interface FileUploaderProps {\r\n multiple?: boolean;\r\n accept?: string;\r\n onChange?: (files: File[]) => void;\r\n className?: string;\r\n placeholder?: string;\r\n}\r\n\r\nexport function FileUploader({\r\n multiple = false,\r\n accept,\r\n onChange,\r\n className = '',\r\n placeholder = 'Drag files here or click to upload',\r\n}: FileUploaderProps) {\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n const [files, setFiles] = useState<File[]>([]);\r\n const [dragOver, setDragOver] = useState(false);\r\n\r\n const updateFiles = useCallback(\r\n (newFiles: File[]) => {\r\n setFiles(newFiles);\r\n onChange?.(newFiles);\r\n },\r\n [onChange]\r\n );\r\n\r\n const handleDrop = (e: DragEvent) => {\r\n e.preventDefault();\r\n setDragOver(false);\r\n\r\n const dropped = Array.from(e.dataTransfer.files);\r\n\r\n if (!multiple) {\r\n updateFiles([dropped[0]]);\r\n return;\r\n }\r\n\r\n updateFiles([...files, ...dropped]);\r\n };\r\n\r\n const handleSelect = (e: ChangeEvent<HTMLInputElement>) => {\r\n const selected = e.target.files ? Array.from(e.target.files) : [];\r\n if (!multiple) {\r\n updateFiles([selected[0]]);\r\n return;\r\n }\r\n updateFiles([...files, ...selected]);\r\n };\r\n\r\n const removeFile = (index: number) => {\r\n const newList = files.filter((_, i) => i !== index);\r\n updateFiles(newList);\r\n };\r\n\r\n return (\r\n <div className={`ui-fileupload ${className}`}>\r\n {/* DROP ZONE */}\r\n <div\r\n className={`ui-fileupload-dropzone ${dragOver ? 'dragover' : ''}`}\r\n tabIndex={0}\r\n role=\"button\"\r\n aria-label=\"Upload files\"\r\n onClick={() => inputRef.current?.click()}\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter' || e.key === ' ') inputRef.current?.click();\r\n }}\r\n onDragOver={(e) => {\r\n e.preventDefault();\r\n setDragOver(true);\r\n }}\r\n onDragLeave={() => setDragOver(false)}\r\n onDrop={handleDrop}\r\n >\r\n <span>{placeholder}</span>\r\n </div>\r\n\r\n {/* HIDDEN INPUT */}\r\n <input\r\n ref={inputRef}\r\n type=\"file\"\r\n accept={accept}\r\n multiple={multiple}\r\n style={{ display: 'none' }}\r\n onChange={handleSelect}\r\n />\r\n\r\n {/* FILE LIST */}\r\n {files.length > 0 && (\r\n <ul className=\"ui-fileupload-list\">\r\n {files.map((file, i) => (\r\n <li key={i} className=\"ui-fileupload-item\">\r\n <span className=\"ui-fileupload-filename\">{file.name}</span>\r\n <button\r\n className=\"ui-fileupload-remove\"\r\n aria-label=\"Remove file\"\r\n onClick={() => removeFile(i)}\r\n >\r\n ×\r\n </button>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"names":["FileUploader","multiple","accept","onChange","className","placeholder","inputRef","useRef","files","setFiles","useState","dragOver","setDragOver","updateFiles","useCallback","newFiles","handleDrop","dropped","handleSelect","selected","removeFile","index","newList","_","i","jsxs","jsx","file"],"mappings":"0KAwBO,SAASA,EAAa,CAC3B,SAAAC,EAAW,GACX,OAAAC,EACA,SAAAC,EACA,UAAAC,EAAY,GACZ,YAAAC,EAAc,oCAChB,EAAsB,CACpB,MAAMC,EAAWC,EAAAA,OAAgC,IAAI,EAC/C,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAAiB,CAAA,CAAE,EACvC,CAACC,EAAUC,CAAW,EAAIF,EAAAA,SAAS,EAAK,EAExCG,EAAcC,EAAAA,YACjBC,GAAqB,CACpBN,EAASM,CAAQ,EACjBZ,IAAWY,CAAQ,CACrB,EACA,CAACZ,CAAQ,CAAA,EAGLa,EAAc,GAAiB,CACnC,EAAE,eAAA,EACFJ,EAAY,EAAK,EAEjB,MAAMK,EAAU,MAAM,KAAK,EAAE,aAAa,KAAK,EAE/C,GAAI,CAAChB,EAAU,CACbY,EAAY,CAACI,EAAQ,CAAC,CAAC,CAAC,EACxB,MACF,CAEAJ,EAAY,CAAC,GAAGL,EAAO,GAAGS,CAAO,CAAC,CACpC,EAEMC,EAAgB,GAAqC,CACzD,MAAMC,EAAW,EAAE,OAAO,MAAQ,MAAM,KAAK,EAAE,OAAO,KAAK,EAAI,CAAA,EAC/D,GAAI,CAAClB,EAAU,CACbY,EAAY,CAACM,EAAS,CAAC,CAAC,CAAC,EACzB,MACF,CACAN,EAAY,CAAC,GAAGL,EAAO,GAAGW,CAAQ,CAAC,CACrC,EAEMC,EAAcC,GAAkB,CACpC,MAAMC,EAAUd,EAAM,OAAO,CAACe,EAAGC,IAAMA,IAAMH,CAAK,EAClDR,EAAYS,CAAO,CACrB,EAEA,OACEG,EAAAA,KAAC,MAAA,CAAI,UAAW,iBAAiBrB,CAAS,GAExC,SAAA,CAAAsB,EAAAA,IAAC,MAAA,CACC,UAAW,0BAA0Bf,EAAW,WAAa,EAAE,GAC/D,SAAU,EACV,KAAK,SACL,aAAW,eACX,QAAS,IAAML,EAAS,SAAS,MAAA,EACjC,UAAY,GAAM,EACZ,EAAE,MAAQ,SAAW,EAAE,MAAQ,MAAKA,EAAS,SAAS,MAAA,CAC5D,EACA,WAAa,GAAM,CACjB,EAAE,eAAA,EACFM,EAAY,EAAI,CAClB,EACA,YAAa,IAAMA,EAAY,EAAK,EACpC,OAAQI,EAER,SAAAU,EAAAA,IAAC,QAAM,SAAArB,CAAA,CAAY,CAAA,CAAA,EAIrBqB,EAAAA,IAAC,QAAA,CACC,IAAKpB,EACL,KAAK,OACL,OAAAJ,EACA,SAAAD,EACA,MAAO,CAAE,QAAS,MAAA,EAClB,SAAUiB,CAAA,CAAA,EAIXV,EAAM,OAAS,GACdkB,EAAAA,IAAC,MAAG,UAAU,qBACX,SAAAlB,EAAM,IAAI,CAACmB,EAAMH,IAChBC,EAAAA,KAAC,KAAA,CAAW,UAAU,qBACpB,SAAA,CAAAC,EAAAA,IAAC,OAAA,CAAK,UAAU,yBAA0B,SAAAC,EAAK,KAAK,EACpDD,EAAAA,IAAC,SAAA,CACC,UAAU,uBACV,aAAW,cACX,QAAS,IAAMN,EAAWI,CAAC,EAC5B,SAAA,GAAA,CAAA,CAED,CAAA,EAROA,CAST,CACD,CAAA,CACH,CAAA,EAEJ,CAEJ"}
@@ -0,0 +1,83 @@
1
+ import { jsxs as c, jsx as r } from "react/jsx-runtime";
2
+ import { useRef as y, useState as f, useCallback as b } from "react";
3
+ /* empty css */
4
+ function O({
5
+ multiple: n = !1,
6
+ accept: d,
7
+ onChange: s,
8
+ className: u = "",
9
+ placeholder: p = "Drag files here or click to upload"
10
+ }) {
11
+ const t = y(null), [a, m] = f([]), [v, o] = f(!1), i = b(
12
+ (e) => {
13
+ m(e), s?.(e);
14
+ },
15
+ [s]
16
+ ), h = (e) => {
17
+ e.preventDefault(), o(!1);
18
+ const l = Array.from(e.dataTransfer.files);
19
+ if (!n) {
20
+ i([l[0]]);
21
+ return;
22
+ }
23
+ i([...a, ...l]);
24
+ }, g = (e) => {
25
+ const l = e.target.files ? Array.from(e.target.files) : [];
26
+ if (!n) {
27
+ i([l[0]]);
28
+ return;
29
+ }
30
+ i([...a, ...l]);
31
+ }, D = (e) => {
32
+ const l = a.filter((N, k) => k !== e);
33
+ i(l);
34
+ };
35
+ return /* @__PURE__ */ c("div", { className: `ui-fileupload ${u}`, children: [
36
+ /* @__PURE__ */ r(
37
+ "div",
38
+ {
39
+ className: `ui-fileupload-dropzone ${v ? "dragover" : ""}`,
40
+ tabIndex: 0,
41
+ role: "button",
42
+ "aria-label": "Upload files",
43
+ onClick: () => t.current?.click(),
44
+ onKeyDown: (e) => {
45
+ (e.key === "Enter" || e.key === " ") && t.current?.click();
46
+ },
47
+ onDragOver: (e) => {
48
+ e.preventDefault(), o(!0);
49
+ },
50
+ onDragLeave: () => o(!1),
51
+ onDrop: h,
52
+ children: /* @__PURE__ */ r("span", { children: p })
53
+ }
54
+ ),
55
+ /* @__PURE__ */ r(
56
+ "input",
57
+ {
58
+ ref: t,
59
+ type: "file",
60
+ accept: d,
61
+ multiple: n,
62
+ style: { display: "none" },
63
+ onChange: g
64
+ }
65
+ ),
66
+ a.length > 0 && /* @__PURE__ */ r("ul", { className: "ui-fileupload-list", children: a.map((e, l) => /* @__PURE__ */ c("li", { className: "ui-fileupload-item", children: [
67
+ /* @__PURE__ */ r("span", { className: "ui-fileupload-filename", children: e.name }),
68
+ /* @__PURE__ */ r(
69
+ "button",
70
+ {
71
+ className: "ui-fileupload-remove",
72
+ "aria-label": "Remove file",
73
+ onClick: () => D(l),
74
+ children: "×"
75
+ }
76
+ )
77
+ ] }, l)) })
78
+ ] });
79
+ }
80
+ export {
81
+ O as FileUploader
82
+ };
83
+ //# sourceMappingURL=FileUploader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileUploader.js","sources":["../../../../src/components/fileuploader/FileUploader.tsx"],"sourcesContent":["/**\r\n * FileUploader.tsx — FINAL VERSION\r\n * --------------------------------\r\n * Features:\r\n * - Drag & drop\r\n * - Click to upload\r\n * - Keyboard activate\r\n * - File list preview\r\n * - Remove file\r\n * - Accept filters\r\n * - Multiple uploads\r\n */\r\n\r\nimport { useRef, useState, useCallback, DragEvent, ChangeEvent } from 'react';\r\nimport './FileUploader.css';\r\n\r\nexport interface FileUploaderProps {\r\n multiple?: boolean;\r\n accept?: string;\r\n onChange?: (files: File[]) => void;\r\n className?: string;\r\n placeholder?: string;\r\n}\r\n\r\nexport function FileUploader({\r\n multiple = false,\r\n accept,\r\n onChange,\r\n className = '',\r\n placeholder = 'Drag files here or click to upload',\r\n}: FileUploaderProps) {\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n const [files, setFiles] = useState<File[]>([]);\r\n const [dragOver, setDragOver] = useState(false);\r\n\r\n const updateFiles = useCallback(\r\n (newFiles: File[]) => {\r\n setFiles(newFiles);\r\n onChange?.(newFiles);\r\n },\r\n [onChange]\r\n );\r\n\r\n const handleDrop = (e: DragEvent) => {\r\n e.preventDefault();\r\n setDragOver(false);\r\n\r\n const dropped = Array.from(e.dataTransfer.files);\r\n\r\n if (!multiple) {\r\n updateFiles([dropped[0]]);\r\n return;\r\n }\r\n\r\n updateFiles([...files, ...dropped]);\r\n };\r\n\r\n const handleSelect = (e: ChangeEvent<HTMLInputElement>) => {\r\n const selected = e.target.files ? Array.from(e.target.files) : [];\r\n if (!multiple) {\r\n updateFiles([selected[0]]);\r\n return;\r\n }\r\n updateFiles([...files, ...selected]);\r\n };\r\n\r\n const removeFile = (index: number) => {\r\n const newList = files.filter((_, i) => i !== index);\r\n updateFiles(newList);\r\n };\r\n\r\n return (\r\n <div className={`ui-fileupload ${className}`}>\r\n {/* DROP ZONE */}\r\n <div\r\n className={`ui-fileupload-dropzone ${dragOver ? 'dragover' : ''}`}\r\n tabIndex={0}\r\n role=\"button\"\r\n aria-label=\"Upload files\"\r\n onClick={() => inputRef.current?.click()}\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter' || e.key === ' ') inputRef.current?.click();\r\n }}\r\n onDragOver={(e) => {\r\n e.preventDefault();\r\n setDragOver(true);\r\n }}\r\n onDragLeave={() => setDragOver(false)}\r\n onDrop={handleDrop}\r\n >\r\n <span>{placeholder}</span>\r\n </div>\r\n\r\n {/* HIDDEN INPUT */}\r\n <input\r\n ref={inputRef}\r\n type=\"file\"\r\n accept={accept}\r\n multiple={multiple}\r\n style={{ display: 'none' }}\r\n onChange={handleSelect}\r\n />\r\n\r\n {/* FILE LIST */}\r\n {files.length > 0 && (\r\n <ul className=\"ui-fileupload-list\">\r\n {files.map((file, i) => (\r\n <li key={i} className=\"ui-fileupload-item\">\r\n <span className=\"ui-fileupload-filename\">{file.name}</span>\r\n <button\r\n className=\"ui-fileupload-remove\"\r\n aria-label=\"Remove file\"\r\n onClick={() => removeFile(i)}\r\n >\r\n ×\r\n </button>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"names":["FileUploader","multiple","accept","onChange","className","placeholder","inputRef","useRef","files","setFiles","useState","dragOver","setDragOver","updateFiles","useCallback","newFiles","handleDrop","dropped","handleSelect","selected","removeFile","index","newList","_","i","jsxs","jsx","file"],"mappings":";;;AAwBO,SAASA,EAAa;AAAA,EAC3B,UAAAC,IAAW;AAAA,EACX,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,aAAAC,IAAc;AAChB,GAAsB;AACpB,QAAMC,IAAWC,EAAgC,IAAI,GAC/C,CAACC,GAAOC,CAAQ,IAAIC,EAAiB,CAAA,CAAE,GACvC,CAACC,GAAUC,CAAW,IAAIF,EAAS,EAAK,GAExCG,IAAcC;AAAA,IAClB,CAACC,MAAqB;AACpB,MAAAN,EAASM,CAAQ,GACjBZ,IAAWY,CAAQ;AAAA,IACrB;AAAA,IACA,CAACZ,CAAQ;AAAA,EAAA,GAGLa,IAAa,CAAC,MAAiB;AACnC,MAAE,eAAA,GACFJ,EAAY,EAAK;AAEjB,UAAMK,IAAU,MAAM,KAAK,EAAE,aAAa,KAAK;AAE/C,QAAI,CAAChB,GAAU;AACb,MAAAY,EAAY,CAACI,EAAQ,CAAC,CAAC,CAAC;AACxB;AAAA,IACF;AAEA,IAAAJ,EAAY,CAAC,GAAGL,GAAO,GAAGS,CAAO,CAAC;AAAA,EACpC,GAEMC,IAAe,CAAC,MAAqC;AACzD,UAAMC,IAAW,EAAE,OAAO,QAAQ,MAAM,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;AAC/D,QAAI,CAAClB,GAAU;AACb,MAAAY,EAAY,CAACM,EAAS,CAAC,CAAC,CAAC;AACzB;AAAA,IACF;AACA,IAAAN,EAAY,CAAC,GAAGL,GAAO,GAAGW,CAAQ,CAAC;AAAA,EACrC,GAEMC,IAAa,CAACC,MAAkB;AACpC,UAAMC,IAAUd,EAAM,OAAO,CAACe,GAAGC,MAAMA,MAAMH,CAAK;AAClD,IAAAR,EAAYS,CAAO;AAAA,EACrB;AAEA,SACE,gBAAAG,EAAC,OAAA,EAAI,WAAW,iBAAiBrB,CAAS,IAExC,UAAA;AAAA,IAAA,gBAAAsB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,0BAA0Bf,IAAW,aAAa,EAAE;AAAA,QAC/D,UAAU;AAAA,QACV,MAAK;AAAA,QACL,cAAW;AAAA,QACX,SAAS,MAAML,EAAS,SAAS,MAAA;AAAA,QACjC,WAAW,CAAC,MAAM;AAChB,WAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,QAAKA,EAAS,SAAS,MAAA;AAAA,QAC5D;AAAA,QACA,YAAY,CAAC,MAAM;AACjB,YAAE,eAAA,GACFM,EAAY,EAAI;AAAA,QAClB;AAAA,QACA,aAAa,MAAMA,EAAY,EAAK;AAAA,QACpC,QAAQI;AAAA,QAER,UAAA,gBAAAU,EAAC,UAAM,UAAArB,EAAA,CAAY;AAAA,MAAA;AAAA,IAAA;AAAA,IAIrB,gBAAAqB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKpB;AAAA,QACL,MAAK;AAAA,QACL,QAAAJ;AAAA,QACA,UAAAD;AAAA,QACA,OAAO,EAAE,SAAS,OAAA;AAAA,QAClB,UAAUiB;AAAA,MAAA;AAAA,IAAA;AAAA,IAIXV,EAAM,SAAS,KACd,gBAAAkB,EAAC,QAAG,WAAU,sBACX,UAAAlB,EAAM,IAAI,CAACmB,GAAMH,MAChB,gBAAAC,EAAC,MAAA,EAAW,WAAU,sBACpB,UAAA;AAAA,MAAA,gBAAAC,EAAC,QAAA,EAAK,WAAU,0BAA0B,UAAAC,EAAK,MAAK;AAAA,MACpD,gBAAAD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,cAAW;AAAA,UACX,SAAS,MAAMN,EAAWI,CAAC;AAAA,UAC5B,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAED,EAAA,GAROA,CAST,CACD,EAAA,CACH;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react/jsx-runtime"),e=require("react");;/* empty css */const L=require("../../utils/onclickoutside/onClickOutside.cjs"),T=require("../../utils/portal/portal.cjs");function C({trigger:E,children:p,openDelay:g=120,closeDelay:h=140,className:w=""}){const[t,n]=e.useState(!1),f=e.useRef(null),v=e.useRef(null),i=e.useRef(null),c=e.useRef(null),l=()=>{i.current&&clearTimeout(i.current),c.current&&clearTimeout(c.current)},m=()=>{l(),i.current=setTimeout(()=>n(!0),g)},a=()=>{l(),c.current=setTimeout(()=>n(!1),h)};e.useEffect(()=>{if(!t)return;const o=s=>{s.key==="Escape"&&n(!1)};return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[t]),e.useEffect(()=>{if(t)return L.onClickOutside(v,()=>n(!1))},[t]);const[d,R]=e.useState(null),r=e.useCallback(()=>{const o=f.current;if(!o)return;const s=o.getBoundingClientRect();R({top:s.bottom+8,left:s.left})},[]);return e.useEffect(()=>{if(t)return r(),window.addEventListener("resize",r),window.addEventListener("scroll",r,!0),()=>{window.removeEventListener("resize",r),window.removeEventListener("scroll",r,!0)}},[t,r]),u.jsxs("div",{className:"ui-hovercard-root",children:[u.jsx("div",{ref:f,className:"ui-hovercard-trigger",onMouseEnter:m,onMouseLeave:a,onFocus:m,onBlur:a,children:E}),t&&d&&u.jsx(T.Portal,{children:u.jsx("div",{ref:v,className:`ui-hovercard ${w}`,style:{top:d.top,left:d.left},role:"dialog","aria-hidden":!t,onMouseEnter:()=>{l(),n(!0)},onMouseLeave:a,children:p})})]})}exports.HoverCard=C;
2
+ //# sourceMappingURL=HoverCard.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HoverCard.cjs","sources":["../../../../src/components/hovercard/HoverCard.tsx"],"sourcesContent":["/**\r\n * HoverCard.tsx — FINAL VERSION\r\n * --------------------------------\r\n * Features:\r\n * - Open on hover / focus\r\n * - Close on leave / blur\r\n * - Delay open & close\r\n * - ESC to dismiss\r\n * - Outside dismiss\r\n * - Auto position (simple version)\r\n * - Portal rendering\r\n */\r\n\r\nimport { useState, useRef, useEffect, ReactNode, useCallback } from 'react';\r\nimport './HoverCard.css';\r\nimport { Portal, onClickOutside } from '../../utils/index';\r\n\r\nexport interface HoverCardProps {\r\n trigger: ReactNode;\r\n children: ReactNode;\r\n openDelay?: number;\r\n closeDelay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function HoverCard({\r\n trigger,\r\n children,\r\n openDelay = 120,\r\n closeDelay = 140,\r\n className = '',\r\n}: HoverCardProps) {\r\n const [open, setOpen] = useState(false);\r\n\r\n const triggerRef = useRef<HTMLDivElement | null>(null);\r\n const cardRef = useRef<HTMLDivElement | null>(null);\r\n\r\n const openTimer = useRef<NodeJS.Timeout | null>(null);\r\n const closeTimer = useRef<NodeJS.Timeout | null>(null);\r\n\r\n const clearTimers = () => {\r\n if (openTimer.current) clearTimeout(openTimer.current);\r\n if (closeTimer.current) clearTimeout(closeTimer.current);\r\n };\r\n\r\n const scheduleOpen = () => {\r\n clearTimers();\r\n openTimer.current = setTimeout(() => setOpen(true), openDelay);\r\n };\r\n\r\n const scheduleClose = () => {\r\n clearTimers();\r\n closeTimer.current = setTimeout(() => setOpen(false), closeDelay);\r\n };\r\n\r\n // ESC key dismiss\r\n useEffect(() => {\r\n if (!open) return;\r\n const handler = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') setOpen(false);\r\n };\r\n document.addEventListener('keydown', handler);\r\n return () => document.removeEventListener('keydown', handler);\r\n }, [open]);\r\n\r\n // click outside\r\n useEffect(() => {\r\n if (!open) return;\r\n return onClickOutside(cardRef, () => setOpen(false));\r\n }, [open]);\r\n\r\n // compute position\r\n const [pos, setPos] = useState<{ top: number; left: number } | null>(null);\r\n\r\n const updatePosition = useCallback(() => {\r\n const triggerEl = triggerRef.current;\r\n if (!triggerEl) return;\r\n\r\n const rect = triggerEl.getBoundingClientRect();\r\n setPos({\r\n top: rect.bottom + 8, // spacing\r\n left: rect.left,\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n updatePosition();\r\n window.addEventListener('resize', updatePosition);\r\n window.addEventListener('scroll', updatePosition, true);\r\n return () => {\r\n window.removeEventListener('resize', updatePosition);\r\n window.removeEventListener('scroll', updatePosition, true);\r\n };\r\n }, [open, updatePosition]);\r\n\r\n return (\r\n <div className=\"ui-hovercard-root\">\r\n {/* TRIGGER */}\r\n <div\r\n ref={triggerRef}\r\n className=\"ui-hovercard-trigger\"\r\n onMouseEnter={scheduleOpen}\r\n onMouseLeave={scheduleClose}\r\n onFocus={scheduleOpen}\r\n onBlur={scheduleClose}\r\n >\r\n {trigger}\r\n </div>\r\n\r\n {/* CARD */}\r\n {open && pos && (\r\n <Portal>\r\n <div\r\n ref={cardRef}\r\n className={`ui-hovercard ${className}`}\r\n style={{ top: pos.top, left: pos.left }}\r\n role=\"dialog\"\r\n aria-hidden={!open}\r\n onMouseEnter={() => {\r\n clearTimers();\r\n setOpen(true);\r\n }}\r\n onMouseLeave={scheduleClose}\r\n >\r\n {children}\r\n </div>\r\n </Portal>\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"names":["HoverCard","trigger","children","openDelay","closeDelay","className","open","setOpen","useState","triggerRef","useRef","cardRef","openTimer","closeTimer","clearTimers","scheduleOpen","scheduleClose","useEffect","handler","e","onClickOutside","pos","setPos","updatePosition","useCallback","triggerEl","rect","jsxs","jsx","Portal"],"mappings":"mRAyBO,SAASA,EAAU,CACxB,QAAAC,EACA,SAAAC,EACA,UAAAC,EAAY,IACZ,WAAAC,EAAa,IACb,UAAAC,EAAY,EACd,EAAmB,CACjB,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAAS,EAAK,EAEhCC,EAAaC,EAAAA,OAA8B,IAAI,EAC/CC,EAAUD,EAAAA,OAA8B,IAAI,EAE5CE,EAAYF,EAAAA,OAA8B,IAAI,EAC9CG,EAAaH,EAAAA,OAA8B,IAAI,EAE/CI,EAAc,IAAM,CACpBF,EAAU,SAAS,aAAaA,EAAU,OAAO,EACjDC,EAAW,SAAS,aAAaA,EAAW,OAAO,CACzD,EAEME,EAAe,IAAM,CACzBD,EAAA,EACAF,EAAU,QAAU,WAAW,IAAML,EAAQ,EAAI,EAAGJ,CAAS,CAC/D,EAEMa,EAAgB,IAAM,CAC1BF,EAAA,EACAD,EAAW,QAAU,WAAW,IAAMN,EAAQ,EAAK,EAAGH,CAAU,CAClE,EAGAa,EAAAA,UAAU,IAAM,CACd,GAAI,CAACX,EAAM,OACX,MAAMY,EAAWC,GAAqB,CAChCA,EAAE,MAAQ,UAAUZ,EAAQ,EAAK,CACvC,EACA,gBAAS,iBAAiB,UAAWW,CAAO,EACrC,IAAM,SAAS,oBAAoB,UAAWA,CAAO,CAC9D,EAAG,CAACZ,CAAI,CAAC,EAGTW,EAAAA,UAAU,IAAM,CACd,GAAKX,EACL,OAAOc,EAAAA,eAAeT,EAAS,IAAMJ,EAAQ,EAAK,CAAC,CACrD,EAAG,CAACD,CAAI,CAAC,EAGT,KAAM,CAACe,EAAKC,CAAM,EAAId,EAAAA,SAA+C,IAAI,EAEnEe,EAAiBC,EAAAA,YAAY,IAAM,CACvC,MAAMC,EAAYhB,EAAW,QAC7B,GAAI,CAACgB,EAAW,OAEhB,MAAMC,EAAOD,EAAU,sBAAA,EACvBH,EAAO,CACL,IAAKI,EAAK,OAAS,EACnB,KAAMA,EAAK,IAAA,CACZ,CACH,EAAG,CAAA,CAAE,EAELT,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAKX,EACL,OAAAiB,EAAA,EACA,OAAO,iBAAiB,SAAUA,CAAc,EAChD,OAAO,iBAAiB,SAAUA,EAAgB,EAAI,EAC/C,IAAM,CACX,OAAO,oBAAoB,SAAUA,CAAc,EACnD,OAAO,oBAAoB,SAAUA,EAAgB,EAAI,CAC3D,CACF,EAAG,CAACjB,EAAMiB,CAAc,CAAC,EAGvBI,EAAAA,KAAC,MAAA,CAAI,UAAU,oBAEb,SAAA,CAAAC,EAAAA,IAAC,MAAA,CACC,IAAKnB,EACL,UAAU,uBACV,aAAcM,EACd,aAAcC,EACd,QAASD,EACT,OAAQC,EAEP,SAAAf,CAAA,CAAA,EAIFK,GAAQe,GACPO,EAAAA,IAACC,EAAAA,OAAA,CACC,SAAAD,EAAAA,IAAC,MAAA,CACC,IAAKjB,EACL,UAAW,gBAAgBN,CAAS,GACpC,MAAO,CAAE,IAAKgB,EAAI,IAAK,KAAMA,EAAI,IAAA,EACjC,KAAK,SACL,cAAa,CAACf,EACd,aAAc,IAAM,CAClBQ,EAAA,EACAP,EAAQ,EAAI,CACd,EACA,aAAcS,EAEb,SAAAd,CAAA,CAAA,CACH,CACF,CAAA,EAEJ,CAEJ"}
@@ -0,0 +1,78 @@
1
+ import { jsxs as C, jsx as a } from "react/jsx-runtime";
2
+ import { useState as E, useRef as s, useEffect as f, useCallback as y } from "react";
3
+ /* empty css */
4
+ import { onClickOutside as M } from "../../utils/onclickoutside/onClickOutside.js";
5
+ import { Portal as R } from "../../utils/portal/portal.js";
6
+ function j({
7
+ trigger: h,
8
+ children: w,
9
+ openDelay: g = 120,
10
+ closeDelay: L = 140,
11
+ className: T = ""
12
+ }) {
13
+ const [e, t] = E(!1), m = s(null), v = s(null), i = s(null), u = s(null), c = () => {
14
+ i.current && clearTimeout(i.current), u.current && clearTimeout(u.current);
15
+ }, p = () => {
16
+ c(), i.current = setTimeout(() => t(!0), g);
17
+ }, l = () => {
18
+ c(), u.current = setTimeout(() => t(!1), L);
19
+ };
20
+ f(() => {
21
+ if (!e) return;
22
+ const n = (o) => {
23
+ o.key === "Escape" && t(!1);
24
+ };
25
+ return document.addEventListener("keydown", n), () => document.removeEventListener("keydown", n);
26
+ }, [e]), f(() => {
27
+ if (e)
28
+ return M(v, () => t(!1));
29
+ }, [e]);
30
+ const [d, k] = E(null), r = y(() => {
31
+ const n = m.current;
32
+ if (!n) return;
33
+ const o = n.getBoundingClientRect();
34
+ k({
35
+ top: o.bottom + 8,
36
+ // spacing
37
+ left: o.left
38
+ });
39
+ }, []);
40
+ return f(() => {
41
+ if (e)
42
+ return r(), window.addEventListener("resize", r), window.addEventListener("scroll", r, !0), () => {
43
+ window.removeEventListener("resize", r), window.removeEventListener("scroll", r, !0);
44
+ };
45
+ }, [e, r]), /* @__PURE__ */ C("div", { className: "ui-hovercard-root", children: [
46
+ /* @__PURE__ */ a(
47
+ "div",
48
+ {
49
+ ref: m,
50
+ className: "ui-hovercard-trigger",
51
+ onMouseEnter: p,
52
+ onMouseLeave: l,
53
+ onFocus: p,
54
+ onBlur: l,
55
+ children: h
56
+ }
57
+ ),
58
+ e && d && /* @__PURE__ */ a(R, { children: /* @__PURE__ */ a(
59
+ "div",
60
+ {
61
+ ref: v,
62
+ className: `ui-hovercard ${T}`,
63
+ style: { top: d.top, left: d.left },
64
+ role: "dialog",
65
+ "aria-hidden": !e,
66
+ onMouseEnter: () => {
67
+ c(), t(!0);
68
+ },
69
+ onMouseLeave: l,
70
+ children: w
71
+ }
72
+ ) })
73
+ ] });
74
+ }
75
+ export {
76
+ j as HoverCard
77
+ };
78
+ //# sourceMappingURL=HoverCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HoverCard.js","sources":["../../../../src/components/hovercard/HoverCard.tsx"],"sourcesContent":["/**\r\n * HoverCard.tsx — FINAL VERSION\r\n * --------------------------------\r\n * Features:\r\n * - Open on hover / focus\r\n * - Close on leave / blur\r\n * - Delay open & close\r\n * - ESC to dismiss\r\n * - Outside dismiss\r\n * - Auto position (simple version)\r\n * - Portal rendering\r\n */\r\n\r\nimport { useState, useRef, useEffect, ReactNode, useCallback } from 'react';\r\nimport './HoverCard.css';\r\nimport { Portal, onClickOutside } from '../../utils/index';\r\n\r\nexport interface HoverCardProps {\r\n trigger: ReactNode;\r\n children: ReactNode;\r\n openDelay?: number;\r\n closeDelay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function HoverCard({\r\n trigger,\r\n children,\r\n openDelay = 120,\r\n closeDelay = 140,\r\n className = '',\r\n}: HoverCardProps) {\r\n const [open, setOpen] = useState(false);\r\n\r\n const triggerRef = useRef<HTMLDivElement | null>(null);\r\n const cardRef = useRef<HTMLDivElement | null>(null);\r\n\r\n const openTimer = useRef<NodeJS.Timeout | null>(null);\r\n const closeTimer = useRef<NodeJS.Timeout | null>(null);\r\n\r\n const clearTimers = () => {\r\n if (openTimer.current) clearTimeout(openTimer.current);\r\n if (closeTimer.current) clearTimeout(closeTimer.current);\r\n };\r\n\r\n const scheduleOpen = () => {\r\n clearTimers();\r\n openTimer.current = setTimeout(() => setOpen(true), openDelay);\r\n };\r\n\r\n const scheduleClose = () => {\r\n clearTimers();\r\n closeTimer.current = setTimeout(() => setOpen(false), closeDelay);\r\n };\r\n\r\n // ESC key dismiss\r\n useEffect(() => {\r\n if (!open) return;\r\n const handler = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') setOpen(false);\r\n };\r\n document.addEventListener('keydown', handler);\r\n return () => document.removeEventListener('keydown', handler);\r\n }, [open]);\r\n\r\n // click outside\r\n useEffect(() => {\r\n if (!open) return;\r\n return onClickOutside(cardRef, () => setOpen(false));\r\n }, [open]);\r\n\r\n // compute position\r\n const [pos, setPos] = useState<{ top: number; left: number } | null>(null);\r\n\r\n const updatePosition = useCallback(() => {\r\n const triggerEl = triggerRef.current;\r\n if (!triggerEl) return;\r\n\r\n const rect = triggerEl.getBoundingClientRect();\r\n setPos({\r\n top: rect.bottom + 8, // spacing\r\n left: rect.left,\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n updatePosition();\r\n window.addEventListener('resize', updatePosition);\r\n window.addEventListener('scroll', updatePosition, true);\r\n return () => {\r\n window.removeEventListener('resize', updatePosition);\r\n window.removeEventListener('scroll', updatePosition, true);\r\n };\r\n }, [open, updatePosition]);\r\n\r\n return (\r\n <div className=\"ui-hovercard-root\">\r\n {/* TRIGGER */}\r\n <div\r\n ref={triggerRef}\r\n className=\"ui-hovercard-trigger\"\r\n onMouseEnter={scheduleOpen}\r\n onMouseLeave={scheduleClose}\r\n onFocus={scheduleOpen}\r\n onBlur={scheduleClose}\r\n >\r\n {trigger}\r\n </div>\r\n\r\n {/* CARD */}\r\n {open && pos && (\r\n <Portal>\r\n <div\r\n ref={cardRef}\r\n className={`ui-hovercard ${className}`}\r\n style={{ top: pos.top, left: pos.left }}\r\n role=\"dialog\"\r\n aria-hidden={!open}\r\n onMouseEnter={() => {\r\n clearTimers();\r\n setOpen(true);\r\n }}\r\n onMouseLeave={scheduleClose}\r\n >\r\n {children}\r\n </div>\r\n </Portal>\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"names":["HoverCard","trigger","children","openDelay","closeDelay","className","open","setOpen","useState","triggerRef","useRef","cardRef","openTimer","closeTimer","clearTimers","scheduleOpen","scheduleClose","useEffect","handler","e","onClickOutside","pos","setPos","updatePosition","useCallback","triggerEl","rect","jsxs","jsx","Portal"],"mappings":";;;;;AAyBO,SAASA,EAAU;AAAA,EACxB,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,YAAAC,IAAa;AAAA,EACb,WAAAC,IAAY;AACd,GAAmB;AACjB,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAS,EAAK,GAEhCC,IAAaC,EAA8B,IAAI,GAC/CC,IAAUD,EAA8B,IAAI,GAE5CE,IAAYF,EAA8B,IAAI,GAC9CG,IAAaH,EAA8B,IAAI,GAE/CI,IAAc,MAAM;AACxB,IAAIF,EAAU,WAAS,aAAaA,EAAU,OAAO,GACjDC,EAAW,WAAS,aAAaA,EAAW,OAAO;AAAA,EACzD,GAEME,IAAe,MAAM;AACzB,IAAAD,EAAA,GACAF,EAAU,UAAU,WAAW,MAAML,EAAQ,EAAI,GAAGJ,CAAS;AAAA,EAC/D,GAEMa,IAAgB,MAAM;AAC1B,IAAAF,EAAA,GACAD,EAAW,UAAU,WAAW,MAAMN,EAAQ,EAAK,GAAGH,CAAU;AAAA,EAClE;AAGA,EAAAa,EAAU,MAAM;AACd,QAAI,CAACX,EAAM;AACX,UAAMY,IAAU,CAACC,MAAqB;AACpC,MAAIA,EAAE,QAAQ,YAAUZ,EAAQ,EAAK;AAAA,IACvC;AACA,oBAAS,iBAAiB,WAAWW,CAAO,GACrC,MAAM,SAAS,oBAAoB,WAAWA,CAAO;AAAA,EAC9D,GAAG,CAACZ,CAAI,CAAC,GAGTW,EAAU,MAAM;AACd,QAAKX;AACL,aAAOc,EAAeT,GAAS,MAAMJ,EAAQ,EAAK,CAAC;AAAA,EACrD,GAAG,CAACD,CAAI,CAAC;AAGT,QAAM,CAACe,GAAKC,CAAM,IAAId,EAA+C,IAAI,GAEnEe,IAAiBC,EAAY,MAAM;AACvC,UAAMC,IAAYhB,EAAW;AAC7B,QAAI,CAACgB,EAAW;AAEhB,UAAMC,IAAOD,EAAU,sBAAA;AACvB,IAAAH,EAAO;AAAA,MACL,KAAKI,EAAK,SAAS;AAAA;AAAA,MACnB,MAAMA,EAAK;AAAA,IAAA,CACZ;AAAA,EACH,GAAG,CAAA,CAAE;AAEL,SAAAT,EAAU,MAAM;AACd,QAAKX;AACL,aAAAiB,EAAA,GACA,OAAO,iBAAiB,UAAUA,CAAc,GAChD,OAAO,iBAAiB,UAAUA,GAAgB,EAAI,GAC/C,MAAM;AACX,eAAO,oBAAoB,UAAUA,CAAc,GACnD,OAAO,oBAAoB,UAAUA,GAAgB,EAAI;AAAA,MAC3D;AAAA,EACF,GAAG,CAACjB,GAAMiB,CAAc,CAAC,GAGvB,gBAAAI,EAAC,OAAA,EAAI,WAAU,qBAEb,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKnB;AAAA,QACL,WAAU;AAAA,QACV,cAAcM;AAAA,QACd,cAAcC;AAAA,QACd,SAASD;AAAA,QACT,QAAQC;AAAA,QAEP,UAAAf;AAAA,MAAA;AAAA,IAAA;AAAA,IAIFK,KAAQe,KACP,gBAAAO,EAACC,GAAA,EACC,UAAA,gBAAAD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKjB;AAAA,QACL,WAAW,gBAAgBN,CAAS;AAAA,QACpC,OAAO,EAAE,KAAKgB,EAAI,KAAK,MAAMA,EAAI,KAAA;AAAA,QACjC,MAAK;AAAA,QACL,eAAa,CAACf;AAAA,QACd,cAAc,MAAM;AAClB,UAAAQ,EAAA,GACAP,EAAQ,EAAI;AAAA,QACd;AAAA,QACA,cAAcS;AAAA,QAEb,UAAAd;AAAA,MAAA;AAAA,IAAA,EACH,CACF;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),o=require("react");;/* empty css */function p({label:t,description:s,error:i,inputSize:u="md",className:r="",id:a,...d}){const c=o.useId(),e=a??c,l=i?`${e}-error`:s?`${e}-description`:void 0;return n.jsxs("div",{className:`ui-input-wrapper ${r}`,children:[t&&n.jsxs("label",{htmlFor:e,className:"ui-input-label",children:[t,d.required&&" *"]}),n.jsx("input",{id:e,className:["ui-input",u==="sm"&&"ui-input--sm",u==="lg"&&"ui-input--lg",i&&"ui-input--error"].filter(Boolean).join(" "),"aria-invalid":!!i,"aria-describedby":l,...d}),s&&!i&&n.jsx("div",{id:`${e}-description`,className:"ui-input-description",children:s}),i&&n.jsx("div",{id:`${e}-error`,className:"ui-input-error",children:i})]})}exports.Input=p;
2
+ //# sourceMappingURL=Input.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.cjs","sources":["../../../../src/components/input/Input.tsx"],"sourcesContent":["/**\r\n * Input.tsx\r\n * ---------\r\n * Single-component fully accessible input field.\r\n * Includes:\r\n * - label\r\n * - description\r\n * - error message\r\n * - size variants\r\n * - required + disabled states\r\n * - WCAG-compliant focus handling\r\n */\r\n\r\nimport React from 'react';\r\nimport './Input.css';\r\n\r\nexport interface InputProps\r\n extends React.InputHTMLAttributes<HTMLInputElement> {\r\n /** Label for the input */\r\n label?: string;\r\n\r\n /** Helper text */\r\n description?: string;\r\n\r\n /** Error message */\r\n error?: string;\r\n\r\n /** Size variant (avoid HTML size conflict) */\r\n inputSize?: 'sm' | 'md' | 'lg';\r\n\r\n /** Custom wrapper class */\r\n className?: string;\r\n}\r\n\r\nexport function Input({\r\n label,\r\n description,\r\n error,\r\n inputSize = 'md',\r\n className = '',\r\n id,\r\n ...props\r\n}: InputProps) {\r\n // Always call hook\r\n const reactId = React.useId();\r\n\r\n // Final ID (prop overrides auto)\r\n const inputId = id ?? reactId;\r\n\r\n const describedBy = error\r\n ? `${inputId}-error`\r\n : description\r\n ? `${inputId}-description`\r\n : undefined;\r\n\r\n return (\r\n <div className={`ui-input-wrapper ${className}`}>\r\n {label && (\r\n <label htmlFor={inputId} className=\"ui-input-label\">\r\n {label}\r\n {props.required && ' *'}\r\n </label>\r\n )}\r\n\r\n <input\r\n id={inputId}\r\n className={[\r\n 'ui-input',\r\n inputSize === 'sm' && 'ui-input--sm',\r\n inputSize === 'lg' && 'ui-input--lg',\r\n error && 'ui-input--error',\r\n ]\r\n .filter(Boolean)\r\n .join(' ')}\r\n aria-invalid={!!error}\r\n aria-describedby={describedBy}\r\n {...props}\r\n />\r\n\r\n {/* Description (only when not error) */}\r\n {description && !error && (\r\n <div id={`${inputId}-description`} className=\"ui-input-description\">\r\n {description}\r\n </div>\r\n )}\r\n\r\n {/* Error message */}\r\n {error && (\r\n <div id={`${inputId}-error`} className=\"ui-input-error\">\r\n {error}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"names":["Input","label","description","error","inputSize","className","id","props","reactId","React","inputId","describedBy","jsxs","jsx"],"mappings":"mKAkCO,SAASA,EAAM,CACpB,MAAAC,EACA,YAAAC,EACA,MAAAC,EACA,UAAAC,EAAY,KACZ,UAAAC,EAAY,GACZ,GAAAC,EACA,GAAGC,CACL,EAAe,CAEb,MAAMC,EAAUC,EAAM,MAAA,EAGhBC,EAAUJ,GAAME,EAEhBG,EAAcR,EAChB,GAAGO,CAAO,SACVR,EACA,GAAGQ,CAAO,eACV,OAEJ,OACEE,EAAAA,KAAC,MAAA,CAAI,UAAW,oBAAoBP,CAAS,GAC1C,SAAA,CAAAJ,GACCW,EAAAA,KAAC,QAAA,CAAM,QAASF,EAAS,UAAU,iBAChC,SAAA,CAAAT,EACAM,EAAM,UAAY,IAAA,EACrB,EAGFM,EAAAA,IAAC,QAAA,CACC,GAAIH,EACJ,UAAW,CACT,WACAN,IAAc,MAAQ,eACtBA,IAAc,MAAQ,eACtBD,GAAS,iBAAA,EAER,OAAO,OAAO,EACd,KAAK,GAAG,EACX,eAAc,CAAC,CAACA,EAChB,mBAAkBQ,EACjB,GAAGJ,CAAA,CAAA,EAILL,GAAe,CAACC,GACfU,EAAAA,IAAC,MAAA,CAAI,GAAI,GAAGH,CAAO,eAAgB,UAAU,uBAC1C,SAAAR,CAAA,CACH,EAIDC,SACE,MAAA,CAAI,GAAI,GAAGO,CAAO,SAAU,UAAU,iBACpC,SAAAP,CAAA,CACH,CAAA,EAEJ,CAEJ"}
@@ -0,0 +1,41 @@
1
+ import { jsxs as a, jsx as e } from "react/jsx-runtime";
2
+ import m from "react";
3
+ /* empty css */
4
+ function N({
5
+ label: d,
6
+ description: t,
7
+ error: i,
8
+ inputSize: u = "md",
9
+ className: r = "",
10
+ id: c,
11
+ ...s
12
+ }) {
13
+ const l = m.useId(), n = c ?? l, p = i ? `${n}-error` : t ? `${n}-description` : void 0;
14
+ return /* @__PURE__ */ a("div", { className: `ui-input-wrapper ${r}`, children: [
15
+ d && /* @__PURE__ */ a("label", { htmlFor: n, className: "ui-input-label", children: [
16
+ d,
17
+ s.required && " *"
18
+ ] }),
19
+ /* @__PURE__ */ e(
20
+ "input",
21
+ {
22
+ id: n,
23
+ className: [
24
+ "ui-input",
25
+ u === "sm" && "ui-input--sm",
26
+ u === "lg" && "ui-input--lg",
27
+ i && "ui-input--error"
28
+ ].filter(Boolean).join(" "),
29
+ "aria-invalid": !!i,
30
+ "aria-describedby": p,
31
+ ...s
32
+ }
33
+ ),
34
+ t && !i && /* @__PURE__ */ e("div", { id: `${n}-description`, className: "ui-input-description", children: t }),
35
+ i && /* @__PURE__ */ e("div", { id: `${n}-error`, className: "ui-input-error", children: i })
36
+ ] });
37
+ }
38
+ export {
39
+ N as Input
40
+ };
41
+ //# sourceMappingURL=Input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.js","sources":["../../../../src/components/input/Input.tsx"],"sourcesContent":["/**\r\n * Input.tsx\r\n * ---------\r\n * Single-component fully accessible input field.\r\n * Includes:\r\n * - label\r\n * - description\r\n * - error message\r\n * - size variants\r\n * - required + disabled states\r\n * - WCAG-compliant focus handling\r\n */\r\n\r\nimport React from 'react';\r\nimport './Input.css';\r\n\r\nexport interface InputProps\r\n extends React.InputHTMLAttributes<HTMLInputElement> {\r\n /** Label for the input */\r\n label?: string;\r\n\r\n /** Helper text */\r\n description?: string;\r\n\r\n /** Error message */\r\n error?: string;\r\n\r\n /** Size variant (avoid HTML size conflict) */\r\n inputSize?: 'sm' | 'md' | 'lg';\r\n\r\n /** Custom wrapper class */\r\n className?: string;\r\n}\r\n\r\nexport function Input({\r\n label,\r\n description,\r\n error,\r\n inputSize = 'md',\r\n className = '',\r\n id,\r\n ...props\r\n}: InputProps) {\r\n // Always call hook\r\n const reactId = React.useId();\r\n\r\n // Final ID (prop overrides auto)\r\n const inputId = id ?? reactId;\r\n\r\n const describedBy = error\r\n ? `${inputId}-error`\r\n : description\r\n ? `${inputId}-description`\r\n : undefined;\r\n\r\n return (\r\n <div className={`ui-input-wrapper ${className}`}>\r\n {label && (\r\n <label htmlFor={inputId} className=\"ui-input-label\">\r\n {label}\r\n {props.required && ' *'}\r\n </label>\r\n )}\r\n\r\n <input\r\n id={inputId}\r\n className={[\r\n 'ui-input',\r\n inputSize === 'sm' && 'ui-input--sm',\r\n inputSize === 'lg' && 'ui-input--lg',\r\n error && 'ui-input--error',\r\n ]\r\n .filter(Boolean)\r\n .join(' ')}\r\n aria-invalid={!!error}\r\n aria-describedby={describedBy}\r\n {...props}\r\n />\r\n\r\n {/* Description (only when not error) */}\r\n {description && !error && (\r\n <div id={`${inputId}-description`} className=\"ui-input-description\">\r\n {description}\r\n </div>\r\n )}\r\n\r\n {/* Error message */}\r\n {error && (\r\n <div id={`${inputId}-error`} className=\"ui-input-error\">\r\n {error}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"names":["Input","label","description","error","inputSize","className","id","props","reactId","React","inputId","describedBy","jsxs","jsx"],"mappings":";;;AAkCO,SAASA,EAAM;AAAA,EACpB,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,WAAAC,IAAY;AAAA,EACZ,IAAAC;AAAA,EACA,GAAGC;AACL,GAAe;AAEb,QAAMC,IAAUC,EAAM,MAAA,GAGhBC,IAAUJ,KAAME,GAEhBG,IAAcR,IAChB,GAAGO,CAAO,WACVR,IACA,GAAGQ,CAAO,iBACV;AAEJ,SACE,gBAAAE,EAAC,OAAA,EAAI,WAAW,oBAAoBP,CAAS,IAC1C,UAAA;AAAA,IAAAJ,KACC,gBAAAW,EAAC,SAAA,EAAM,SAASF,GAAS,WAAU,kBAChC,UAAA;AAAA,MAAAT;AAAA,MACAM,EAAM,YAAY;AAAA,IAAA,GACrB;AAAA,IAGF,gBAAAM;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAIH;AAAA,QACJ,WAAW;AAAA,UACT;AAAA,UACAN,MAAc,QAAQ;AAAA,UACtBA,MAAc,QAAQ;AAAA,UACtBD,KAAS;AAAA,QAAA,EAER,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,QACX,gBAAc,CAAC,CAACA;AAAA,QAChB,oBAAkBQ;AAAA,QACjB,GAAGJ;AAAA,MAAA;AAAA,IAAA;AAAA,IAILL,KAAe,CAACC,KACf,gBAAAU,EAAC,OAAA,EAAI,IAAI,GAAGH,CAAO,gBAAgB,WAAU,wBAC1C,UAAAR,EAAA,CACH;AAAA,IAIDC,uBACE,OAAA,EAAI,IAAI,GAAGO,CAAO,UAAU,WAAU,kBACpC,UAAAP,EAAA,CACH;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),o={sm:"640px",md:"768px",lg:"1024px",xl:"1280px",full:"100%"};function s({size:t="lg",style:e,children:i,...n}){return r.jsx("div",{style:{width:"100%",maxWidth:o[t],margin:"0 auto",padding:"0 16px",...e},...n,children:i})}exports.Container=s;
2
+ //# sourceMappingURL=Container.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Container.cjs","sources":["../../../../src/components/layout/Container.tsx"],"sourcesContent":["import React from 'react';\r\n\r\ninterface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\r\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst sizes: Record<Required<ContainerProps>['size'], string> = {\r\n sm: '640px',\r\n md: '768px',\r\n lg: '1024px',\r\n xl: '1280px',\r\n full: '100%',\r\n};\r\n\r\nexport function Container({\r\n size = 'lg',\r\n style,\r\n children,\r\n ...rest\r\n}: ContainerProps) {\r\n return (\r\n <div\r\n style={{\r\n width: '100%',\r\n maxWidth: sizes[size],\r\n margin: '0 auto',\r\n padding: '0 16px',\r\n ...style,\r\n }}\r\n {...rest}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n"],"names":["sizes","Container","size","style","children","rest","jsx"],"mappings":"qHAOMA,EAA0D,CAC9D,GAAI,QACJ,GAAI,QACJ,GAAI,SACJ,GAAI,SACJ,KAAM,MACR,EAEO,SAASC,EAAU,CACxB,KAAAC,EAAO,KACP,MAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAAmB,CACjB,OACEC,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,MAAO,OACP,SAAUN,EAAME,CAAI,EACpB,OAAQ,SACR,QAAS,SACT,GAAGC,CAAA,EAEJ,GAAGE,EAEH,SAAAD,CAAA,CAAA,CAGP"}
@@ -0,0 +1,33 @@
1
+ import { jsx as p } from "react/jsx-runtime";
2
+ const o = {
3
+ sm: "640px",
4
+ md: "768px",
5
+ lg: "1024px",
6
+ xl: "1280px",
7
+ full: "100%"
8
+ };
9
+ function d({
10
+ size: t = "lg",
11
+ style: i,
12
+ children: x,
13
+ ...n
14
+ }) {
15
+ return /* @__PURE__ */ p(
16
+ "div",
17
+ {
18
+ style: {
19
+ width: "100%",
20
+ maxWidth: o[t],
21
+ margin: "0 auto",
22
+ padding: "0 16px",
23
+ ...i
24
+ },
25
+ ...n,
26
+ children: x
27
+ }
28
+ );
29
+ }
30
+ export {
31
+ d as Container
32
+ };
33
+ //# sourceMappingURL=Container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Container.js","sources":["../../../../src/components/layout/Container.tsx"],"sourcesContent":["import React from 'react';\r\n\r\ninterface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\r\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst sizes: Record<Required<ContainerProps>['size'], string> = {\r\n sm: '640px',\r\n md: '768px',\r\n lg: '1024px',\r\n xl: '1280px',\r\n full: '100%',\r\n};\r\n\r\nexport function Container({\r\n size = 'lg',\r\n style,\r\n children,\r\n ...rest\r\n}: ContainerProps) {\r\n return (\r\n <div\r\n style={{\r\n width: '100%',\r\n maxWidth: sizes[size],\r\n margin: '0 auto',\r\n padding: '0 16px',\r\n ...style,\r\n }}\r\n {...rest}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n"],"names":["sizes","Container","size","style","children","rest","jsx"],"mappings":";AAOA,MAAMA,IAA0D;AAAA,EAC9D,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM;AACR;AAEO,SAASC,EAAU;AAAA,EACxB,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GAAmB;AACjB,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,UAAUN,EAAME,CAAI;AAAA,QACpB,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,GAAGC;AAAA,MAAA;AAAA,MAEJ,GAAGE;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime");function u({direction:t="row",align:n="stretch",justify:e="start",wrap:r="nowrap",gap:s=0,style:o,children:l,...a}){const c={display:"flex",flexDirection:t,alignItems:n,justifyContent:e==="between"?"space-between":e==="around"?"space-around":e==="evenly"?"space-evenly":e,flexWrap:r,gap:s,...o};return i.jsx("div",{style:c,...a,children:l})}exports.Flex=u;
2
+ //# sourceMappingURL=Flex.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Flex.cjs","sources":["../../../../src/components/layout/Flex.tsx"],"sourcesContent":["import React from 'react';\r\n\r\ntype Justify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\r\n\r\ntype Align = 'start' | 'center' | 'end' | 'stretch';\r\n\r\ninterface FlexProps extends React.HTMLAttributes<HTMLDivElement> {\r\n direction?: 'row' | 'column';\r\n align?: Align;\r\n justify?: Justify;\r\n wrap?: 'wrap' | 'nowrap';\r\n gap?: number | string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport function Flex({\r\n direction = 'row',\r\n align = 'stretch',\r\n justify = 'start',\r\n wrap = 'nowrap',\r\n gap = 0,\r\n style,\r\n children,\r\n ...rest\r\n}: FlexProps) {\r\n const justifyContent =\r\n justify === 'between'\r\n ? 'space-between'\r\n : justify === 'around'\r\n ? 'space-around'\r\n : justify === 'evenly'\r\n ? 'space-evenly'\r\n : justify;\r\n\r\n const styles: React.CSSProperties = {\r\n display: 'flex',\r\n flexDirection: direction,\r\n alignItems: align,\r\n justifyContent,\r\n flexWrap: wrap,\r\n gap,\r\n ...style,\r\n };\r\n\r\n return (\r\n <div style={styles} {...rest}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n"],"names":["Flex","direction","align","justify","wrap","gap","style","children","rest","styles"],"mappings":"qHAeO,SAASA,EAAK,CACnB,UAAAC,EAAY,MACZ,MAAAC,EAAQ,UACR,QAAAC,EAAU,QACV,KAAAC,EAAO,SACP,IAAAC,EAAM,EACN,MAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAAc,CAUZ,MAAMC,EAA8B,CAClC,QAAS,OACT,cAAeR,EACf,WAAYC,EACZ,eAZAC,IAAY,UACR,gBACAA,IAAY,SACZ,eACAA,IAAY,SACZ,eACAA,EAOJ,SAAUC,EACV,IAAAC,EACA,GAAGC,CAAA,EAGL,aACG,MAAA,CAAI,MAAOG,EAAS,GAAGD,EACrB,SAAAD,EACH,CAEJ"}
@@ -0,0 +1,26 @@
1
+ import { jsx as p } from "react/jsx-runtime";
2
+ function d({
3
+ direction: t = "row",
4
+ align: n = "stretch",
5
+ justify: e = "start",
6
+ wrap: o = "nowrap",
7
+ gap: r = 0,
8
+ style: s,
9
+ children: a,
10
+ ...l
11
+ }) {
12
+ const c = {
13
+ display: "flex",
14
+ flexDirection: t,
15
+ alignItems: n,
16
+ justifyContent: e === "between" ? "space-between" : e === "around" ? "space-around" : e === "evenly" ? "space-evenly" : e,
17
+ flexWrap: o,
18
+ gap: r,
19
+ ...s
20
+ };
21
+ return /* @__PURE__ */ p("div", { style: c, ...l, children: a });
22
+ }
23
+ export {
24
+ d as Flex
25
+ };
26
+ //# sourceMappingURL=Flex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Flex.js","sources":["../../../../src/components/layout/Flex.tsx"],"sourcesContent":["import React from 'react';\r\n\r\ntype Justify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\r\n\r\ntype Align = 'start' | 'center' | 'end' | 'stretch';\r\n\r\ninterface FlexProps extends React.HTMLAttributes<HTMLDivElement> {\r\n direction?: 'row' | 'column';\r\n align?: Align;\r\n justify?: Justify;\r\n wrap?: 'wrap' | 'nowrap';\r\n gap?: number | string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport function Flex({\r\n direction = 'row',\r\n align = 'stretch',\r\n justify = 'start',\r\n wrap = 'nowrap',\r\n gap = 0,\r\n style,\r\n children,\r\n ...rest\r\n}: FlexProps) {\r\n const justifyContent =\r\n justify === 'between'\r\n ? 'space-between'\r\n : justify === 'around'\r\n ? 'space-around'\r\n : justify === 'evenly'\r\n ? 'space-evenly'\r\n : justify;\r\n\r\n const styles: React.CSSProperties = {\r\n display: 'flex',\r\n flexDirection: direction,\r\n alignItems: align,\r\n justifyContent,\r\n flexWrap: wrap,\r\n gap,\r\n ...style,\r\n };\r\n\r\n return (\r\n <div style={styles} {...rest}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n"],"names":["Flex","direction","align","justify","wrap","gap","style","children","rest","styles"],"mappings":";AAeO,SAASA,EAAK;AAAA,EACnB,WAAAC,IAAY;AAAA,EACZ,OAAAC,IAAQ;AAAA,EACR,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,KAAAC,IAAM;AAAA,EACN,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GAAc;AAUZ,QAAMC,IAA8B;AAAA,IAClC,SAAS;AAAA,IACT,eAAeR;AAAA,IACf,YAAYC;AAAA,IACZ,gBAZAC,MAAY,YACR,kBACAA,MAAY,WACZ,iBACAA,MAAY,WACZ,iBACAA;AAAA,IAOJ,UAAUC;AAAA,IACV,KAAAC;AAAA,IACA,GAAGC;AAAA,EAAA;AAGL,2BACG,OAAA,EAAI,OAAOG,GAAS,GAAGD,GACrB,UAAAD,GACH;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime");function p({columns:e="auto-fit",gap:t=16,minColWidth:r="200px",style:i,children:n,...s}){const a=typeof e=="number"?`repeat(${e}, 1fr)`:`repeat(${e}, minmax(${r}, 1fr))`,o={display:"grid",gap:t,gridTemplateColumns:a,...i};return d.jsx("div",{style:o,...s,children:n})}exports.Grid=p;
2
+ //# sourceMappingURL=Grid.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.cjs","sources":["../../../../src/components/layout/Grid.tsx"],"sourcesContent":["import React from 'react';\r\n\r\ninterface GridProps extends React.HTMLAttributes<HTMLDivElement> {\r\n columns?: number | string; // number = fixed count; \"auto-fit\" = responsive\r\n gap?: number | string;\r\n minColWidth?: string; // used when columns = \"auto-fit\"\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport function Grid({\r\n columns = 'auto-fit',\r\n gap = 16,\r\n minColWidth = '200px',\r\n style,\r\n children,\r\n ...rest\r\n}: GridProps) {\r\n const template =\r\n typeof columns === 'number'\r\n ? `repeat(${columns}, 1fr)`\r\n : `repeat(${columns}, minmax(${minColWidth}, 1fr))`;\r\n\r\n const styles: React.CSSProperties = {\r\n display: 'grid',\r\n gap,\r\n gridTemplateColumns: template,\r\n ...style,\r\n };\r\n\r\n return (\r\n <div style={styles} {...rest}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n"],"names":["Grid","columns","gap","minColWidth","style","children","rest","template","styles"],"mappings":"qHASO,SAASA,EAAK,CACnB,QAAAC,EAAU,WACV,IAAAC,EAAM,GACN,YAAAC,EAAc,QACd,MAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAAc,CACZ,MAAMC,EACJ,OAAON,GAAY,SACf,UAAUA,CAAO,SACjB,UAAUA,CAAO,YAAYE,CAAW,UAExCK,EAA8B,CAClC,QAAS,OACT,IAAAN,EACA,oBAAqBK,EACrB,GAAGH,CAAA,EAGL,aACG,MAAA,CAAI,MAAOI,EAAS,GAAGF,EACrB,SAAAD,EACH,CAEJ"}
@@ -0,0 +1,21 @@
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ function s({
3
+ columns: t = "auto-fit",
4
+ gap: e = 16,
5
+ minColWidth: r = "200px",
6
+ style: i,
7
+ children: p,
8
+ ...a
9
+ }) {
10
+ const o = typeof t == "number" ? `repeat(${t}, 1fr)` : `repeat(${t}, minmax(${r}, 1fr))`, f = {
11
+ display: "grid",
12
+ gap: e,
13
+ gridTemplateColumns: o,
14
+ ...i
15
+ };
16
+ return /* @__PURE__ */ m("div", { style: f, ...a, children: p });
17
+ }
18
+ export {
19
+ s as Grid
20
+ };
21
+ //# sourceMappingURL=Grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.js","sources":["../../../../src/components/layout/Grid.tsx"],"sourcesContent":["import React from 'react';\r\n\r\ninterface GridProps extends React.HTMLAttributes<HTMLDivElement> {\r\n columns?: number | string; // number = fixed count; \"auto-fit\" = responsive\r\n gap?: number | string;\r\n minColWidth?: string; // used when columns = \"auto-fit\"\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport function Grid({\r\n columns = 'auto-fit',\r\n gap = 16,\r\n minColWidth = '200px',\r\n style,\r\n children,\r\n ...rest\r\n}: GridProps) {\r\n const template =\r\n typeof columns === 'number'\r\n ? `repeat(${columns}, 1fr)`\r\n : `repeat(${columns}, minmax(${minColWidth}, 1fr))`;\r\n\r\n const styles: React.CSSProperties = {\r\n display: 'grid',\r\n gap,\r\n gridTemplateColumns: template,\r\n ...style,\r\n };\r\n\r\n return (\r\n <div style={styles} {...rest}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n"],"names":["Grid","columns","gap","minColWidth","style","children","rest","template","styles"],"mappings":";AASO,SAASA,EAAK;AAAA,EACnB,SAAAC,IAAU;AAAA,EACV,KAAAC,IAAM;AAAA,EACN,aAAAC,IAAc;AAAA,EACd,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GAAc;AACZ,QAAMC,IACJ,OAAON,KAAY,WACf,UAAUA,CAAO,WACjB,UAAUA,CAAO,YAAYE,CAAW,WAExCK,IAA8B;AAAA,IAClC,SAAS;AAAA,IACT,KAAAN;AAAA,IACA,qBAAqBK;AAAA,IACrB,GAAGH;AAAA,EAAA;AAGL,2BACG,OAAA,EAAI,OAAOI,GAAS,GAAGF,GACrB,UAAAD,GACH;AAEJ;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HStack.cjs","sources":["../../../../src/components/layout/HStack.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Flex } from './Flex';\r\n\r\ninterface HStackProps extends React.HTMLAttributes<HTMLDivElement> {\r\n gap?: number | string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport function HStack({ gap = 8, children, ...rest }: HStackProps) {\r\n return (\r\n <Flex direction=\"row\" gap={gap} {...rest}>\r\n {children}\r\n </Flex>\r\n );\r\n}\r\n"],"names":["HStack","gap","children","rest","Flex"],"mappings":"6IAQO,SAASA,EAAO,CAAE,IAAAC,EAAM,EAAG,SAAAC,EAAU,GAAGC,GAAqB,CAClE,aACGC,EAAAA,KAAA,CAAK,UAAU,MAAM,IAAAH,EAAW,GAAGE,EACjC,SAAAD,EACH,CAEJ"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HStack.js","sources":["../../../../src/components/layout/HStack.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Flex } from './Flex';\r\n\r\ninterface HStackProps extends React.HTMLAttributes<HTMLDivElement> {\r\n gap?: number | string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport function HStack({ gap = 8, children, ...rest }: HStackProps) {\r\n return (\r\n <Flex direction=\"row\" gap={gap} {...rest}>\r\n {children}\r\n </Flex>\r\n );\r\n}\r\n"],"names":["HStack","gap","children","rest","Flex"],"mappings":";;AAQO,SAASA,EAAO,EAAE,KAAAC,IAAM,GAAG,UAAAC,GAAU,GAAGC,KAAqB;AAClE,2BACGC,GAAA,EAAK,WAAU,OAAM,KAAAH,GAAW,GAAGE,GACjC,UAAAD,GACH;AAEJ;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stack.cjs","sources":["../../../../src/components/layout/Stack.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Flex } from './Flex';\r\n\r\ninterface StackProps extends React.HTMLAttributes<HTMLDivElement> {\r\n gap?: number | string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport function Stack({ gap = 8, children, ...rest }: StackProps) {\r\n return (\r\n <Flex direction=\"column\" gap={gap} {...rest}>\r\n {children}\r\n </Flex>\r\n );\r\n}\r\n"],"names":["Stack","gap","children","rest","Flex"],"mappings":"6IAQO,SAASA,EAAM,CAAE,IAAAC,EAAM,EAAG,SAAAC,EAAU,GAAGC,GAAoB,CAChE,aACGC,EAAAA,KAAA,CAAK,UAAU,SAAS,IAAAH,EAAW,GAAGE,EACpC,SAAAD,EACH,CAEJ"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stack.js","sources":["../../../../src/components/layout/Stack.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Flex } from './Flex';\r\n\r\ninterface StackProps extends React.HTMLAttributes<HTMLDivElement> {\r\n gap?: number | string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport function Stack({ gap = 8, children, ...rest }: StackProps) {\r\n return (\r\n <Flex direction=\"column\" gap={gap} {...rest}>\r\n {children}\r\n </Flex>\r\n );\r\n}\r\n"],"names":["Stack","gap","children","rest","Flex"],"mappings":";;AAQO,SAASA,EAAM,EAAE,KAAAC,IAAM,GAAG,UAAAC,GAAU,GAAGC,KAAoB;AAChE,2BACGC,GAAA,EAAK,WAAU,UAAS,KAAAH,GAAW,GAAGE,GACpC,UAAAD,GACH;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),s=require("react");;/* empty css */function l({label:c,items:m}){const[r,u]=s.useState(!1),t=s.useRef(null),a=s.useRef(null);return s.useEffect(()=>{if(!r)return;const e=i=>{t.current&&!t.current.contains(i.target)&&a.current&&!a.current.contains(i.target)&&u(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[r]),n.jsxs("div",{className:"ui-megamenu",children:[n.jsxs("button",{ref:a,className:"ui-megamenu-trigger","aria-expanded":r,onClick:()=>u(e=>!e),children:[c," ▾"]}),n.jsx("div",{ref:t,className:`ui-megamenu-panel ${r?"ui-megamenu-panel--open":""}`,role:"menu",children:n.jsx("div",{className:"ui-megamenu-grid",children:m.map(e=>n.jsxs("a",{href:e.href,className:"ui-megamenu-item",children:[n.jsx("span",{className:"ui-megamenu-item-title",children:e.title}),e.description&&n.jsx("span",{className:"ui-megamenu-item-desc",children:e.description})]},e.href))})})]})}exports.MegaMenu=l;
2
+ //# sourceMappingURL=MegaMenu.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenu.cjs","sources":["../../../../src/components/megamenu/MegaMenu.tsx"],"sourcesContent":["/**\r\n * MegaMenu.tsx\r\n * ------------\r\n * Accessible mega-menu dropdown for Navbar.\r\n */\r\n\r\nimport { useState, useRef, useEffect } from 'react';\r\nimport './MegaMenu.css';\r\n\r\nexport interface MegaMenuItem {\r\n title: string;\r\n description?: string;\r\n href: string;\r\n}\r\n\r\ninterface MegaMenuProps {\r\n label: string;\r\n items: MegaMenuItem[];\r\n}\r\n\r\nexport function MegaMenu({ label, items }: MegaMenuProps) {\r\n const [open, setOpen] = useState(false);\r\n const panelRef = useRef<HTMLDivElement | null>(null);\r\n const triggerRef = useRef<HTMLButtonElement | null>(null);\r\n\r\n // Close on outside click\r\n useEffect(() => {\r\n if (!open) return;\r\n const handler = (e: MouseEvent) => {\r\n if (\r\n panelRef.current &&\r\n !panelRef.current.contains(e.target as Node) &&\r\n triggerRef.current &&\r\n !triggerRef.current.contains(e.target as Node)\r\n ) {\r\n setOpen(false);\r\n }\r\n };\r\n document.addEventListener('mousedown', handler);\r\n return () => document.removeEventListener('mousedown', handler);\r\n }, [open]);\r\n\r\n return (\r\n <div className=\"ui-megamenu\">\r\n <button\r\n ref={triggerRef}\r\n className=\"ui-megamenu-trigger\"\r\n aria-expanded={open}\r\n onClick={() => setOpen((o) => !o)}\r\n >\r\n {label} ▾\r\n </button>\r\n\r\n <div\r\n ref={panelRef}\r\n className={`ui-megamenu-panel ${open ? 'ui-megamenu-panel--open' : ''}`}\r\n role=\"menu\"\r\n >\r\n <div className=\"ui-megamenu-grid\">\r\n {items.map((it) => (\r\n <a href={it.href} key={it.href} className=\"ui-megamenu-item\">\r\n <span className=\"ui-megamenu-item-title\">{it.title}</span>\r\n {it.description && (\r\n <span className=\"ui-megamenu-item-desc\">{it.description}</span>\r\n )}\r\n </a>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["MegaMenu","label","items","open","setOpen","useState","panelRef","useRef","triggerRef","useEffect","handler","e","jsxs","o","jsx","it"],"mappings":"sKAoBO,SAASA,EAAS,CAAE,MAAAC,EAAO,MAAAC,GAAwB,CACxD,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAAS,EAAK,EAChCC,EAAWC,EAAAA,OAA8B,IAAI,EAC7CC,EAAaD,EAAAA,OAAiC,IAAI,EAGxDE,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACN,EAAM,OACX,MAAMO,EAAWC,GAAkB,CAE/BL,EAAS,SACT,CAACA,EAAS,QAAQ,SAASK,EAAE,MAAc,GAC3CH,EAAW,SACX,CAACA,EAAW,QAAQ,SAASG,EAAE,MAAc,GAE7CP,EAAQ,EAAK,CAEjB,EACA,gBAAS,iBAAiB,YAAaM,CAAO,EACvC,IAAM,SAAS,oBAAoB,YAAaA,CAAO,CAChE,EAAG,CAACP,CAAI,CAAC,EAGPS,EAAAA,KAAC,MAAA,CAAI,UAAU,cACb,SAAA,CAAAA,EAAAA,KAAC,SAAA,CACC,IAAKJ,EACL,UAAU,sBACV,gBAAeL,EACf,QAAS,IAAMC,EAASS,GAAM,CAACA,CAAC,EAE/B,SAAA,CAAAZ,EAAM,IAAA,CAAA,CAAA,EAGTa,EAAAA,IAAC,MAAA,CACC,IAAKR,EACL,UAAW,qBAAqBH,EAAO,0BAA4B,EAAE,GACrE,KAAK,OAEL,SAAAW,EAAAA,IAAC,MAAA,CAAI,UAAU,mBACZ,WAAM,IAAKC,GACVH,OAAC,IAAA,CAAE,KAAMG,EAAG,KAAoB,UAAU,mBACxC,SAAA,CAAAD,EAAAA,IAAC,OAAA,CAAK,UAAU,yBAA0B,SAAAC,EAAG,MAAM,EAClDA,EAAG,aACFD,EAAAA,IAAC,QAAK,UAAU,wBAAyB,WAAG,WAAA,CAAY,CAAA,GAHrCC,EAAG,IAK1B,CACD,CAAA,CACH,CAAA,CAAA,CACF,EACF,CAEJ"}
@@ -0,0 +1,43 @@
1
+ import { jsxs as i, jsx as r } from "react/jsx-runtime";
2
+ import { useState as o, useRef as u, useEffect as d } from "react";
3
+ /* empty css */
4
+ function h({ label: c, items: l }) {
5
+ const [n, m] = o(!1), a = u(null), t = u(null);
6
+ return d(() => {
7
+ if (!n) return;
8
+ const e = (s) => {
9
+ a.current && !a.current.contains(s.target) && t.current && !t.current.contains(s.target) && m(!1);
10
+ };
11
+ return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
12
+ }, [n]), /* @__PURE__ */ i("div", { className: "ui-megamenu", children: [
13
+ /* @__PURE__ */ i(
14
+ "button",
15
+ {
16
+ ref: t,
17
+ className: "ui-megamenu-trigger",
18
+ "aria-expanded": n,
19
+ onClick: () => m((e) => !e),
20
+ children: [
21
+ c,
22
+ " ▾"
23
+ ]
24
+ }
25
+ ),
26
+ /* @__PURE__ */ r(
27
+ "div",
28
+ {
29
+ ref: a,
30
+ className: `ui-megamenu-panel ${n ? "ui-megamenu-panel--open" : ""}`,
31
+ role: "menu",
32
+ children: /* @__PURE__ */ r("div", { className: "ui-megamenu-grid", children: l.map((e) => /* @__PURE__ */ i("a", { href: e.href, className: "ui-megamenu-item", children: [
33
+ /* @__PURE__ */ r("span", { className: "ui-megamenu-item-title", children: e.title }),
34
+ e.description && /* @__PURE__ */ r("span", { className: "ui-megamenu-item-desc", children: e.description })
35
+ ] }, e.href)) })
36
+ }
37
+ )
38
+ ] });
39
+ }
40
+ export {
41
+ h as MegaMenu
42
+ };
43
+ //# sourceMappingURL=MegaMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenu.js","sources":["../../../../src/components/megamenu/MegaMenu.tsx"],"sourcesContent":["/**\r\n * MegaMenu.tsx\r\n * ------------\r\n * Accessible mega-menu dropdown for Navbar.\r\n */\r\n\r\nimport { useState, useRef, useEffect } from 'react';\r\nimport './MegaMenu.css';\r\n\r\nexport interface MegaMenuItem {\r\n title: string;\r\n description?: string;\r\n href: string;\r\n}\r\n\r\ninterface MegaMenuProps {\r\n label: string;\r\n items: MegaMenuItem[];\r\n}\r\n\r\nexport function MegaMenu({ label, items }: MegaMenuProps) {\r\n const [open, setOpen] = useState(false);\r\n const panelRef = useRef<HTMLDivElement | null>(null);\r\n const triggerRef = useRef<HTMLButtonElement | null>(null);\r\n\r\n // Close on outside click\r\n useEffect(() => {\r\n if (!open) return;\r\n const handler = (e: MouseEvent) => {\r\n if (\r\n panelRef.current &&\r\n !panelRef.current.contains(e.target as Node) &&\r\n triggerRef.current &&\r\n !triggerRef.current.contains(e.target as Node)\r\n ) {\r\n setOpen(false);\r\n }\r\n };\r\n document.addEventListener('mousedown', handler);\r\n return () => document.removeEventListener('mousedown', handler);\r\n }, [open]);\r\n\r\n return (\r\n <div className=\"ui-megamenu\">\r\n <button\r\n ref={triggerRef}\r\n className=\"ui-megamenu-trigger\"\r\n aria-expanded={open}\r\n onClick={() => setOpen((o) => !o)}\r\n >\r\n {label} ▾\r\n </button>\r\n\r\n <div\r\n ref={panelRef}\r\n className={`ui-megamenu-panel ${open ? 'ui-megamenu-panel--open' : ''}`}\r\n role=\"menu\"\r\n >\r\n <div className=\"ui-megamenu-grid\">\r\n {items.map((it) => (\r\n <a href={it.href} key={it.href} className=\"ui-megamenu-item\">\r\n <span className=\"ui-megamenu-item-title\">{it.title}</span>\r\n {it.description && (\r\n <span className=\"ui-megamenu-item-desc\">{it.description}</span>\r\n )}\r\n </a>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["MegaMenu","label","items","open","setOpen","useState","panelRef","useRef","triggerRef","useEffect","handler","e","jsxs","o","jsx","it"],"mappings":";;;AAoBO,SAASA,EAAS,EAAE,OAAAC,GAAO,OAAAC,KAAwB;AACxD,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAS,EAAK,GAChCC,IAAWC,EAA8B,IAAI,GAC7CC,IAAaD,EAAiC,IAAI;AAGxD,SAAAE,EAAU,MAAM;AACd,QAAI,CAACN,EAAM;AACX,UAAMO,IAAU,CAACC,MAAkB;AACjC,MACEL,EAAS,WACT,CAACA,EAAS,QAAQ,SAASK,EAAE,MAAc,KAC3CH,EAAW,WACX,CAACA,EAAW,QAAQ,SAASG,EAAE,MAAc,KAE7CP,EAAQ,EAAK;AAAA,IAEjB;AACA,oBAAS,iBAAiB,aAAaM,CAAO,GACvC,MAAM,SAAS,oBAAoB,aAAaA,CAAO;AAAA,EAChE,GAAG,CAACP,CAAI,CAAC,GAGP,gBAAAS,EAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,IAAA,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKJ;AAAA,QACL,WAAU;AAAA,QACV,iBAAeL;AAAA,QACf,SAAS,MAAMC,EAAQ,CAACS,MAAM,CAACA,CAAC;AAAA,QAE/B,UAAA;AAAA,UAAAZ;AAAA,UAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGT,gBAAAa;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKR;AAAA,QACL,WAAW,qBAAqBH,IAAO,4BAA4B,EAAE;AAAA,QACrE,MAAK;AAAA,QAEL,UAAA,gBAAAW,EAAC,OAAA,EAAI,WAAU,oBACZ,YAAM,IAAI,CAACC,MACV,gBAAAH,EAAC,KAAA,EAAE,MAAMG,EAAG,MAAoB,WAAU,oBACxC,UAAA;AAAA,UAAA,gBAAAD,EAAC,QAAA,EAAK,WAAU,0BAA0B,UAAAC,EAAG,OAAM;AAAA,UAClDA,EAAG,eACF,gBAAAD,EAAC,UAAK,WAAU,yBAAyB,YAAG,YAAA,CAAY;AAAA,QAAA,KAHrCC,EAAG,IAK1B,CACD,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),r=require("react");;/* empty css */const x=require("../../utils/scrolllock/scrollLock.cjs"),g=require("../../utils/inertmanager/inertManager.cjs"),E=require("../../utils/trapfocus/trapFocus.cjs"),L=require("../../utils/onclickoutside/onClickOutside.cjs"),M=require("../../utils/restorefocus/restoreFocus.cjs"),S=require("../../utils/portal/portal.cjs");let h=0;const j=t=>(h+=1,`${t}-${h}`);function T({open:t,onClose:m,title:a,description:u,labelledById:p,describedById:q,disableClickOutside:i=!1,disableEsc:f=!1,initialFocusRef:l,className:I="",children:C}){const d=r.useRef(null),n=r.useRef(null),v=r.useRef(null),N=r.useRef(p||(a?j("modal-title"):void 0)),R=r.useRef(q||(u?j("modal-desc"):void 0)),y=N.current,k=R.current,o=r.useCallback(()=>{m()},[m]);return r.useEffect(()=>{if(!t||f)return;const c=s=>{s.key==="Escape"&&(s.preventDefault(),o())};return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[t,f,o]),r.useEffect(()=>{if(!t)return;v.current=document.activeElement,x.scrollLock.lock();const c=d.current?g.applyInertToSiblings(d.current):[];l?.current&&n.current?.contains(l.current)&&l.current.focus();const s=n.current?E.trapFocus(n.current):void 0;let b;return!i&&n.current&&(b=L.onClickOutside(n,o)),()=>{b?.(),s?.(),x.scrollLock.unlock(),g.removeInertFromSiblings(c),M.restoreFocus(v.current)}},[t,i,o,l]),t?e.jsx(S.Portal,{children:e.jsxs("div",{ref:d,className:"ui-modal-overlay","aria-hidden":"false",children:[e.jsxs("div",{ref:n,className:`ui-modal-container ${I}`,role:"dialog","aria-modal":"true","aria-labelledby":y,"aria-describedby":k,tabIndex:-1,onClick:c=>c.stopPropagation(),children:[a&&e.jsx("div",{id:y,className:"ui-modal-title",children:a}),u&&e.jsx("div",{id:k,className:"ui-modal-description",children:u}),e.jsx("div",{className:"ui-modal-content",children:C}),e.jsx("button",{type:"button","aria-label":"Close dialog",className:"ui-modal-close",onClick:o,children:"×"})]}),!i&&e.jsx("button",{"aria-hidden":"true",className:"ui-modal-overlay-catcher",onClick:o,tabIndex:-1})]})}):null}exports.Modal=T;
2
+ //# sourceMappingURL=Modal.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.cjs","sources":["../../../../src/components/modal/Modal.tsx"],"sourcesContent":["/**\r\n * Modal.tsx\r\n * ----------\r\n * Fully accessible, WCAG-compliant modal/dialog component.\r\n *\r\n * Features:\r\n * - Role-based WAI-ARIA dialog semantics\r\n * - aria-modal, aria-labelledby, aria-describedby\r\n * - Portal rendering into <body>\r\n * - ESC-to-close (optional)\r\n * - Click-outside-to-close (optional)\r\n * - Focus trap (Tab / Shift+Tab)\r\n * - Focus restore on close\r\n * - Scroll locking on open\r\n * - INERT background content (full compliance)\r\n * - prefers-reduced-motion support\r\n * - initial focus element support\r\n *\r\n * Zero dependencies — all logic is pure React.\r\n */\r\n\r\n/**\r\n * Modal.tsx (Lint Clean Version)\r\n * ------------------------------\r\n * All ESLint issues fixed:\r\n * - No missing dependencies\r\n * - No inline re-created functions\r\n * - No non-null assertions\r\n * - No unused values\r\n */\r\n\r\nimport React, { useEffect, useRef, useCallback } from 'react';\r\nimport './Modal.css';\r\n\r\nimport { trapFocus, onClickOutside, restoreFocus, scrollLock, Portal, applyInertToSiblings,\r\n removeInertFromSiblings } from '../../utils/index';\r\n\r\nexport interface ModalProps {\r\n open: boolean;\r\n onClose: () => void;\r\n\r\n title?: string;\r\n description?: string;\r\n\r\n labelledById?: string;\r\n describedById?: string;\r\n\r\n disableClickOutside?: boolean;\r\n disableEsc?: boolean;\r\n\r\n initialFocusRef?: React.RefObject<HTMLElement>;\r\n\r\n className?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nlet idCounter = 0;\r\nconst nextId = (prefix: string) => {\r\n idCounter += 1;\r\n return `${prefix}-${idCounter}`;\r\n};\r\n\r\nexport function Modal({\r\n open,\r\n onClose,\r\n title,\r\n description,\r\n labelledById,\r\n describedById,\r\n disableClickOutside = false,\r\n disableEsc = false,\r\n initialFocusRef,\r\n className = '',\r\n children,\r\n}: ModalProps) {\r\n const overlayRef = useRef<HTMLDivElement | null>(null);\r\n const dialogRef = useRef<HTMLDivElement | null>(null);\r\n\r\n const previouslyFocusedElementRef = useRef<HTMLElement | null>(null);\r\n\r\n // Stable IDs (do NOT regenerate each render)\r\n const internalTitleId = useRef(\r\n labelledById || (title ? nextId('modal-title') : undefined)\r\n );\r\n\r\n const internalDescId = useRef(\r\n describedById || (description ? nextId('modal-desc') : undefined)\r\n );\r\n\r\n const titleId = internalTitleId.current;\r\n const descId = internalDescId.current;\r\n\r\n /**\r\n * Make onClose stable using useCallback\r\n */\r\n const handleClose = useCallback(() => {\r\n onClose();\r\n }, [onClose]);\r\n\r\n /**\r\n * ESC close handling\r\n */\r\n useEffect(() => {\r\n if (!open || disableEsc) return;\r\n\r\n const onKey = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') {\r\n e.preventDefault();\r\n handleClose();\r\n }\r\n };\r\n\r\n document.addEventListener('keydown', onKey);\r\n return () => document.removeEventListener('keydown', onKey);\r\n }, [open, disableEsc, handleClose]);\r\n\r\n /**\r\n * Main open/close lifecycle\r\n */\r\n useEffect(() => {\r\n if (!open) return;\r\n\r\n // Save previously focused element\r\n previouslyFocusedElementRef.current = document.activeElement as HTMLElement;\r\n\r\n // Lock scroll\r\n scrollLock.lock();\r\n\r\n // Make background inert\r\n const inertTargets = overlayRef.current\r\n ? applyInertToSiblings(overlayRef.current)\r\n : [];\r\n\r\n // Initial focus\r\n if (\r\n initialFocusRef?.current &&\r\n dialogRef.current?.contains(initialFocusRef.current)\r\n ) {\r\n initialFocusRef.current.focus();\r\n }\r\n\r\n // Focus trap\r\n const trapCleanup = dialogRef.current\r\n ? trapFocus(dialogRef.current)\r\n : undefined;\r\n\r\n // Click outside\r\n let clickOutsideCleanup: (() => void) | undefined;\r\n if (!disableClickOutside && dialogRef.current) {\r\n clickOutsideCleanup = onClickOutside(dialogRef, handleClose);\r\n }\r\n\r\n return () => {\r\n clickOutsideCleanup?.();\r\n trapCleanup?.();\r\n scrollLock.unlock();\r\n removeInertFromSiblings(inertTargets);\r\n restoreFocus(previouslyFocusedElementRef.current);\r\n };\r\n }, [open, disableClickOutside, handleClose, initialFocusRef]);\r\n\r\n if (!open) return null;\r\n\r\n return (\r\n <Portal>\r\n <div ref={overlayRef} className=\"ui-modal-overlay\" aria-hidden=\"false\">\r\n <div\r\n ref={dialogRef}\r\n className={`ui-modal-container ${className}`}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={titleId}\r\n aria-describedby={descId}\r\n tabIndex={-1}\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n {title && (\r\n <div id={titleId} className=\"ui-modal-title\">\r\n {title}\r\n </div>\r\n )}\r\n\r\n {description && (\r\n <div id={descId} className=\"ui-modal-description\">\r\n {description}\r\n </div>\r\n )}\r\n\r\n <div className=\"ui-modal-content\">{children}</div>\r\n\r\n <button\r\n type=\"button\"\r\n aria-label=\"Close dialog\"\r\n className=\"ui-modal-close\"\r\n onClick={handleClose}\r\n >\r\n ×\r\n </button>\r\n </div>\r\n\r\n {!disableClickOutside && (\r\n <button\r\n aria-hidden=\"true\"\r\n className=\"ui-modal-overlay-catcher\"\r\n onClick={handleClose}\r\n tabIndex={-1}\r\n />\r\n )}\r\n </div>\r\n </Portal>\r\n );\r\n}\r\n"],"names":["idCounter","nextId","prefix","Modal","open","onClose","title","description","labelledById","describedById","disableClickOutside","disableEsc","initialFocusRef","className","children","overlayRef","useRef","dialogRef","previouslyFocusedElementRef","internalTitleId","internalDescId","titleId","descId","handleClose","useCallback","useEffect","onKey","e","scrollLock","inertTargets","applyInertToSiblings","trapCleanup","trapFocus","clickOutsideCleanup","onClickOutside","removeInertFromSiblings","restoreFocus","jsx","Portal","jsxs"],"mappings":"ieAwDA,IAAIA,EAAY,EAChB,MAAMC,EAAUC,IACdF,GAAa,EACN,GAAGE,CAAM,IAAIF,CAAS,IAGxB,SAASG,EAAM,CACpB,KAAAC,EACA,QAAAC,EACA,MAAAC,EACA,YAAAC,EACA,aAAAC,EACA,cAAAC,EACA,oBAAAC,EAAsB,GACtB,WAAAC,EAAa,GACb,gBAAAC,EACA,UAAAC,EAAY,GACZ,SAAAC,CACF,EAAe,CACb,MAAMC,EAAaC,EAAAA,OAA8B,IAAI,EAC/CC,EAAYD,EAAAA,OAA8B,IAAI,EAE9CE,EAA8BF,EAAAA,OAA2B,IAAI,EAG7DG,EAAkBH,EAAAA,OACtBR,IAAiBF,EAAQL,EAAO,aAAa,EAAI,OAAA,EAG7CmB,EAAiBJ,EAAAA,OACrBP,IAAkBF,EAAcN,EAAO,YAAY,EAAI,OAAA,EAGnDoB,EAAUF,EAAgB,QAC1BG,EAASF,EAAe,QAKxBG,EAAcC,EAAAA,YAAY,IAAM,CACpCnB,EAAA,CACF,EAAG,CAACA,CAAO,CAAC,EAgEZ,OA3DAoB,EAAAA,UAAU,IAAM,CACd,GAAI,CAACrB,GAAQO,EAAY,OAEzB,MAAMe,EAASC,GAAqB,CAC9BA,EAAE,MAAQ,WACZA,EAAE,eAAA,EACFJ,EAAA,EAEJ,EAEA,gBAAS,iBAAiB,UAAWG,CAAK,EACnC,IAAM,SAAS,oBAAoB,UAAWA,CAAK,CAC5D,EAAG,CAACtB,EAAMO,EAAYY,CAAW,CAAC,EAKlCE,EAAAA,UAAU,IAAM,CACd,GAAI,CAACrB,EAAM,OAGXc,EAA4B,QAAU,SAAS,cAG/CU,EAAAA,WAAW,KAAA,EAGX,MAAMC,EAAed,EAAW,QAC5Be,EAAAA,qBAAqBf,EAAW,OAAO,EACvC,CAAA,EAIFH,GAAiB,SACjBK,EAAU,SAAS,SAASL,EAAgB,OAAO,GAEnDA,EAAgB,QAAQ,MAAA,EAI1B,MAAMmB,EAAcd,EAAU,QAC1Be,EAAAA,UAAUf,EAAU,OAAO,EAC3B,OAGJ,IAAIgB,EACJ,MAAI,CAACvB,GAAuBO,EAAU,UACpCgB,EAAsBC,EAAAA,eAAejB,EAAWM,CAAW,GAGtD,IAAM,CACXU,IAAA,EACAF,IAAA,EACAH,EAAAA,WAAW,OAAA,EACXO,EAAAA,wBAAwBN,CAAY,EACpCO,EAAAA,aAAalB,EAA4B,OAAO,CAClD,CACF,EAAG,CAACd,EAAMM,EAAqBa,EAAaX,CAAe,CAAC,EAEvDR,EAGHiC,EAAAA,IAACC,EAAAA,QACC,SAAAC,EAAAA,KAAC,MAAA,CAAI,IAAKxB,EAAY,UAAU,mBAAmB,cAAY,QAC7D,SAAA,CAAAwB,EAAAA,KAAC,MAAA,CACC,IAAKtB,EACL,UAAW,sBAAsBJ,CAAS,GAC1C,KAAK,SACL,aAAW,OACX,kBAAiBQ,EACjB,mBAAkBC,EAClB,SAAU,GACV,QAAUK,GAAMA,EAAE,gBAAA,EAEjB,SAAA,CAAArB,SACE,MAAA,CAAI,GAAIe,EAAS,UAAU,iBACzB,SAAAf,EACH,EAGDC,GACC8B,EAAAA,IAAC,MAAA,CAAI,GAAIf,EAAQ,UAAU,uBACxB,SAAAf,EACH,EAGF8B,EAAAA,IAAC,MAAA,CAAI,UAAU,mBAAoB,SAAAvB,CAAA,CAAS,EAE5CuB,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,aAAW,eACX,UAAU,iBACV,QAASd,EACV,SAAA,GAAA,CAAA,CAED,CAAA,CAAA,EAGD,CAACb,GACA2B,EAAAA,IAAC,SAAA,CACC,cAAY,OACZ,UAAU,2BACV,QAASd,EACT,SAAU,EAAA,CAAA,CACZ,CAAA,CAEJ,CAAA,CACF,EAhDgB,IAkDpB"}