@nofinite/nui 1.1.2 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/README.md +61 -48
  2. package/dist/components/accordion/Accordion.cjs +1 -1
  3. package/dist/components/accordion/Accordion.cjs.map +1 -1
  4. package/dist/components/accordion/Accordion.js +64 -43
  5. package/dist/components/accordion/Accordion.js.map +1 -1
  6. package/dist/components/alert/Alert.cjs +1 -1
  7. package/dist/components/alert/Alert.cjs.map +1 -1
  8. package/dist/components/alert/Alert.js +39 -25
  9. package/dist/components/alert/Alert.js.map +1 -1
  10. package/dist/components/avatar/Avatar.cjs +1 -1
  11. package/dist/components/avatar/Avatar.cjs.map +1 -1
  12. package/dist/components/avatar/Avatar.js +58 -44
  13. package/dist/components/avatar/Avatar.js.map +1 -1
  14. package/dist/components/avatar/AvatarGroup.cjs +1 -1
  15. package/dist/components/avatar/AvatarGroup.cjs.map +1 -1
  16. package/dist/components/avatar/AvatarGroup.js +34 -25
  17. package/dist/components/avatar/AvatarGroup.js.map +1 -1
  18. package/dist/components/badge/Badge.cjs +1 -1
  19. package/dist/components/badge/Badge.cjs.map +1 -1
  20. package/dist/components/badge/Badge.js +43 -68
  21. package/dist/components/badge/Badge.js.map +1 -1
  22. package/dist/components/badge/BadgeGroup.cjs +1 -1
  23. package/dist/components/badge/BadgeGroup.cjs.map +1 -1
  24. package/dist/components/badge/BadgeGroup.js +20 -10
  25. package/dist/components/badge/BadgeGroup.js.map +1 -1
  26. package/dist/components/breadcrumbs/Breadcrumbs.cjs +1 -1
  27. package/dist/components/breadcrumbs/Breadcrumbs.cjs.map +1 -1
  28. package/dist/components/breadcrumbs/Breadcrumbs.js +59 -39
  29. package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -1
  30. package/dist/components/button/Button.cjs +1 -1
  31. package/dist/components/button/Button.cjs.map +1 -1
  32. package/dist/components/button/Button.js +52 -17
  33. package/dist/components/button/Button.js.map +1 -1
  34. package/dist/components/card/Card.cjs +1 -1
  35. package/dist/components/card/Card.cjs.map +1 -1
  36. package/dist/components/card/Card.js +44 -41
  37. package/dist/components/card/Card.js.map +1 -1
  38. package/dist/components/checkbox/Checkbox.cjs +1 -1
  39. package/dist/components/checkbox/Checkbox.cjs.map +1 -1
  40. package/dist/components/checkbox/Checkbox.js +59 -40
  41. package/dist/components/checkbox/Checkbox.js.map +1 -1
  42. package/dist/components/chip/Chip.cjs +1 -1
  43. package/dist/components/chip/Chip.cjs.map +1 -1
  44. package/dist/components/chip/Chip.js +67 -47
  45. package/dist/components/chip/Chip.js.map +1 -1
  46. package/dist/components/combobox/Combobox.cjs +1 -1
  47. package/dist/components/combobox/Combobox.cjs.map +1 -1
  48. package/dist/components/combobox/Combobox.js +123 -108
  49. package/dist/components/combobox/Combobox.js.map +1 -1
  50. package/dist/components/commandpalette/CommandPalette.cjs +1 -1
  51. package/dist/components/commandpalette/CommandPalette.cjs.map +1 -1
  52. package/dist/components/commandpalette/CommandPalette.js +96 -73
  53. package/dist/components/commandpalette/CommandPalette.js.map +1 -1
  54. package/dist/components/contextmenu/ContextMenu.cjs +1 -1
  55. package/dist/components/contextmenu/ContextMenu.cjs.map +1 -1
  56. package/dist/components/contextmenu/ContextMenu.js +79 -58
  57. package/dist/components/contextmenu/ContextMenu.js.map +1 -1
  58. package/dist/components/datagrid/DataGrid.cjs +1 -1
  59. package/dist/components/datagrid/DataGrid.cjs.map +1 -1
  60. package/dist/components/datagrid/DataGrid.js +184 -202
  61. package/dist/components/datagrid/DataGrid.js.map +1 -1
  62. package/dist/components/datepicker/DatePicker.cjs +1 -1
  63. package/dist/components/datepicker/DatePicker.cjs.map +1 -1
  64. package/dist/components/datepicker/DatePicker.js +197 -164
  65. package/dist/components/datepicker/DatePicker.js.map +1 -1
  66. package/dist/components/daterangepicker/DateRangePicker.cjs +1 -1
  67. package/dist/components/daterangepicker/DateRangePicker.cjs.map +1 -1
  68. package/dist/components/daterangepicker/DateRangePicker.js +254 -213
  69. package/dist/components/daterangepicker/DateRangePicker.js.map +1 -1
  70. package/dist/components/dialog/DialogProvider.cjs +2 -0
  71. package/dist/components/dialog/DialogProvider.cjs.map +1 -0
  72. package/dist/components/dialog/DialogProvider.js +71 -0
  73. package/dist/components/dialog/DialogProvider.js.map +1 -0
  74. package/dist/components/dialog/dialogStore.cjs +2 -0
  75. package/dist/components/dialog/dialogStore.cjs.map +1 -0
  76. package/dist/components/dialog/dialogStore.js +60 -0
  77. package/dist/components/dialog/dialogStore.js.map +1 -0
  78. package/dist/components/drawer/Drawer.cjs +1 -1
  79. package/dist/components/drawer/Drawer.cjs.map +1 -1
  80. package/dist/components/drawer/Drawer.js +69 -47
  81. package/dist/components/drawer/Drawer.js.map +1 -1
  82. package/dist/components/dropdown/Dropdown.cjs +1 -1
  83. package/dist/components/dropdown/Dropdown.cjs.map +1 -1
  84. package/dist/components/dropdown/Dropdown.js +134 -108
  85. package/dist/components/dropdown/Dropdown.js.map +1 -1
  86. package/dist/components/fileuploader/FileUploader.cjs +1 -1
  87. package/dist/components/fileuploader/FileUploader.cjs.map +1 -1
  88. package/dist/components/fileuploader/FileUploader.js +96 -61
  89. package/dist/components/fileuploader/FileUploader.js.map +1 -1
  90. package/dist/components/hovercard/HoverCard.cjs +1 -1
  91. package/dist/components/hovercard/HoverCard.cjs.map +1 -1
  92. package/dist/components/hovercard/HoverCard.js +124 -69
  93. package/dist/components/hovercard/HoverCard.js.map +1 -1
  94. package/dist/components/input/Input.cjs +1 -1
  95. package/dist/components/input/Input.cjs.map +1 -1
  96. package/dist/components/input/Input.js +62 -37
  97. package/dist/components/input/Input.js.map +1 -1
  98. package/dist/components/layout/Container.cjs +1 -1
  99. package/dist/components/layout/Container.cjs.map +1 -1
  100. package/dist/components/layout/Container.js +21 -30
  101. package/dist/components/layout/Container.js.map +1 -1
  102. package/dist/components/layout/Flex.cjs +1 -1
  103. package/dist/components/layout/Flex.cjs.map +1 -1
  104. package/dist/components/layout/Flex.js +36 -19
  105. package/dist/components/layout/Flex.js.map +1 -1
  106. package/dist/components/layout/Grid.cjs +1 -1
  107. package/dist/components/layout/Grid.cjs.map +1 -1
  108. package/dist/components/layout/Grid.js +30 -18
  109. package/dist/components/layout/Grid.js.map +1 -1
  110. package/dist/components/link/Link.cjs +2 -0
  111. package/dist/components/link/Link.cjs.map +1 -0
  112. package/dist/components/link/Link.js +41 -0
  113. package/dist/components/link/Link.js.map +1 -0
  114. package/dist/components/megamenu/MegaMenu.cjs +1 -1
  115. package/dist/components/megamenu/MegaMenu.cjs.map +1 -1
  116. package/dist/components/megamenu/MegaMenu.js +107 -38
  117. package/dist/components/megamenu/MegaMenu.js.map +1 -1
  118. package/dist/components/modal/Modal.cjs +1 -1
  119. package/dist/components/modal/Modal.cjs.map +1 -1
  120. package/dist/components/modal/Modal.js +91 -83
  121. package/dist/components/modal/Modal.js.map +1 -1
  122. package/dist/components/multiselect/MultiSelect.cjs +2 -0
  123. package/dist/components/multiselect/MultiSelect.cjs.map +1 -0
  124. package/dist/components/multiselect/MultiSelect.js +176 -0
  125. package/dist/components/multiselect/MultiSelect.js.map +1 -0
  126. package/dist/components/nuiprovider/NUIProvider.cjs +2 -0
  127. package/dist/components/nuiprovider/NUIProvider.cjs.map +1 -0
  128. package/dist/components/nuiprovider/NUIProvider.js +36 -0
  129. package/dist/components/nuiprovider/NUIProvider.js.map +1 -0
  130. package/dist/components/pagination/Pagination.cjs +1 -1
  131. package/dist/components/pagination/Pagination.cjs.map +1 -1
  132. package/dist/components/pagination/Pagination.js +74 -41
  133. package/dist/components/pagination/Pagination.js.map +1 -1
  134. package/dist/components/popover/Popover.cjs +1 -1
  135. package/dist/components/popover/Popover.cjs.map +1 -1
  136. package/dist/components/popover/Popover.js +99 -100
  137. package/dist/components/popover/Popover.js.map +1 -1
  138. package/dist/components/progress/Progress.cjs +1 -1
  139. package/dist/components/progress/Progress.cjs.map +1 -1
  140. package/dist/components/progress/Progress.js +44 -22
  141. package/dist/components/progress/Progress.js.map +1 -1
  142. package/dist/components/radiogroup/RadioGroup.cjs +1 -1
  143. package/dist/components/radiogroup/RadioGroup.cjs.map +1 -1
  144. package/dist/components/radiogroup/RadioGroup.js +69 -74
  145. package/dist/components/radiogroup/RadioGroup.js.map +1 -1
  146. package/dist/components/rating/Rating.cjs +1 -1
  147. package/dist/components/rating/Rating.cjs.map +1 -1
  148. package/dist/components/rating/Rating.js +72 -33
  149. package/dist/components/rating/Rating.js.map +1 -1
  150. package/dist/components/resizable/Resizable.cjs +2 -0
  151. package/dist/components/resizable/Resizable.cjs.map +1 -0
  152. package/dist/components/resizable/Resizable.js +134 -0
  153. package/dist/components/resizable/Resizable.js.map +1 -0
  154. package/dist/components/select/Select.cjs +1 -1
  155. package/dist/components/select/Select.cjs.map +1 -1
  156. package/dist/components/select/Select.js +114 -113
  157. package/dist/components/select/Select.js.map +1 -1
  158. package/dist/components/skeleton/Skeleton.cjs +1 -1
  159. package/dist/components/skeleton/Skeleton.cjs.map +1 -1
  160. package/dist/components/skeleton/Skeleton.js +90 -67
  161. package/dist/components/skeleton/Skeleton.js.map +1 -1
  162. package/dist/components/slider/Slider.cjs +1 -1
  163. package/dist/components/slider/Slider.cjs.map +1 -1
  164. package/dist/components/slider/Slider.js +85 -82
  165. package/dist/components/slider/Slider.js.map +1 -1
  166. package/dist/components/spinner/Spinner.cjs +1 -1
  167. package/dist/components/spinner/Spinner.cjs.map +1 -1
  168. package/dist/components/spinner/Spinner.js +60 -17
  169. package/dist/components/spinner/Spinner.js.map +1 -1
  170. package/dist/components/stepper/Stepper.cjs +1 -5
  171. package/dist/components/stepper/Stepper.cjs.map +1 -1
  172. package/dist/components/stepper/Stepper.js +65 -39
  173. package/dist/components/stepper/Stepper.js.map +1 -1
  174. package/dist/components/switch/Switch.cjs +1 -1
  175. package/dist/components/switch/Switch.cjs.map +1 -1
  176. package/dist/components/switch/Switch.js +89 -62
  177. package/dist/components/switch/Switch.js.map +1 -1
  178. package/dist/components/table/Table.cjs +1 -1
  179. package/dist/components/table/Table.cjs.map +1 -1
  180. package/dist/components/table/Table.js +62 -35
  181. package/dist/components/table/Table.js.map +1 -1
  182. package/dist/components/tabs/Tabs.cjs +1 -1
  183. package/dist/components/tabs/Tabs.cjs.map +1 -1
  184. package/dist/components/tabs/Tabs.js +110 -50
  185. package/dist/components/tabs/Tabs.js.map +1 -1
  186. package/dist/components/textarea/Textarea.cjs +1 -1
  187. package/dist/components/textarea/Textarea.cjs.map +1 -1
  188. package/dist/components/textarea/Textarea.js +63 -58
  189. package/dist/components/textarea/Textarea.js.map +1 -1
  190. package/dist/components/timepicker/TimePicker.cjs +2 -0
  191. package/dist/components/timepicker/TimePicker.cjs.map +1 -0
  192. package/dist/components/timepicker/TimePicker.js +159 -0
  193. package/dist/components/timepicker/TimePicker.js.map +1 -0
  194. package/dist/components/timerangepicker/TimeRangePicker.cjs +2 -0
  195. package/dist/components/timerangepicker/TimeRangePicker.cjs.map +1 -0
  196. package/dist/components/timerangepicker/TimeRangePicker.js +208 -0
  197. package/dist/components/timerangepicker/TimeRangePicker.js.map +1 -0
  198. package/dist/components/toast/Toast.cjs +1 -1
  199. package/dist/components/toast/Toast.cjs.map +1 -1
  200. package/dist/components/toast/Toast.js +91 -38
  201. package/dist/components/toast/Toast.js.map +1 -1
  202. package/dist/components/tooltip/Tooltip.cjs +1 -1
  203. package/dist/components/tooltip/Tooltip.cjs.map +1 -1
  204. package/dist/components/tooltip/Tooltip.js +72 -56
  205. package/dist/components/tooltip/Tooltip.js.map +1 -1
  206. package/dist/components/treeview/TreeView.cjs +1 -1
  207. package/dist/components/treeview/TreeView.cjs.map +1 -1
  208. package/dist/components/treeview/TreeView.js +120 -90
  209. package/dist/components/treeview/TreeView.js.map +1 -1
  210. package/dist/components/virtuallist/VirtualList.cjs +1 -1
  211. package/dist/components/virtuallist/VirtualList.cjs.map +1 -1
  212. package/dist/components/virtuallist/VirtualList.js +52 -34
  213. package/dist/components/virtuallist/VirtualList.js.map +1 -1
  214. package/dist/index.cjs +1 -1
  215. package/dist/index.css +1 -0
  216. package/dist/index.js +120 -106
  217. package/dist/index.js.map +1 -1
  218. package/dist/package.json +49 -6
  219. package/dist/types/components/accordion/Accordion.d.ts +7 -3
  220. package/dist/types/components/accordion/Accordion.d.ts.map +1 -1
  221. package/dist/types/components/alert/Alert.d.ts +18 -5
  222. package/dist/types/components/alert/Alert.d.ts.map +1 -1
  223. package/dist/types/components/avatar/Avatar.d.ts +12 -8
  224. package/dist/types/components/avatar/Avatar.d.ts.map +1 -1
  225. package/dist/types/components/avatar/AvatarGroup.d.ts +11 -4
  226. package/dist/types/components/avatar/AvatarGroup.d.ts.map +1 -1
  227. package/dist/types/components/badge/Badge.d.ts +19 -11
  228. package/dist/types/components/badge/Badge.d.ts.map +1 -1
  229. package/dist/types/components/badge/BadgeGroup.d.ts +7 -4
  230. package/dist/types/components/badge/BadgeGroup.d.ts.map +1 -1
  231. package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +14 -6
  232. package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  233. package/dist/types/components/button/Button.d.ts +25 -10
  234. package/dist/types/components/button/Button.d.ts.map +1 -1
  235. package/dist/types/components/card/Card.d.ts +12 -21
  236. package/dist/types/components/card/Card.d.ts.map +1 -1
  237. package/dist/types/components/checkbox/Checkbox.d.ts +12 -7
  238. package/dist/types/components/checkbox/Checkbox.d.ts.map +1 -1
  239. package/dist/types/components/chip/Chip.d.ts +14 -11
  240. package/dist/types/components/chip/Chip.d.ts.map +1 -1
  241. package/dist/types/components/combobox/Combobox.d.ts +15 -4
  242. package/dist/types/components/combobox/Combobox.d.ts.map +1 -1
  243. package/dist/types/components/commandpalette/CommandPalette.d.ts +12 -3
  244. package/dist/types/components/commandpalette/CommandPalette.d.ts.map +1 -1
  245. package/dist/types/components/contextmenu/ContextMenu.d.ts +14 -6
  246. package/dist/types/components/contextmenu/ContextMenu.d.ts.map +1 -1
  247. package/dist/types/components/datagrid/DataGrid.d.ts +16 -4
  248. package/dist/types/components/datagrid/DataGrid.d.ts.map +1 -1
  249. package/dist/types/components/datepicker/DatePicker.d.ts +13 -1
  250. package/dist/types/components/datepicker/DatePicker.d.ts.map +1 -1
  251. package/dist/types/components/daterangepicker/DateRangePicker.d.ts +3 -1
  252. package/dist/types/components/daterangepicker/DateRangePicker.d.ts.map +1 -1
  253. package/dist/types/components/dialog/DialogProvider.d.ts +2 -0
  254. package/dist/types/components/dialog/DialogProvider.d.ts.map +1 -0
  255. package/dist/types/components/dialog/dialogStore.d.ts +42 -0
  256. package/dist/types/components/dialog/dialogStore.d.ts.map +1 -0
  257. package/dist/types/components/drawer/Drawer.d.ts +18 -4
  258. package/dist/types/components/drawer/Drawer.d.ts.map +1 -1
  259. package/dist/types/components/dropdown/Dropdown.d.ts +21 -16
  260. package/dist/types/components/dropdown/Dropdown.d.ts.map +1 -1
  261. package/dist/types/components/fileuploader/FileUploader.d.ts +22 -3
  262. package/dist/types/components/fileuploader/FileUploader.d.ts.map +1 -1
  263. package/dist/types/components/hovercard/HoverCard.d.ts +45 -5
  264. package/dist/types/components/hovercard/HoverCard.d.ts.map +1 -1
  265. package/dist/types/components/input/Input.d.ts +20 -10
  266. package/dist/types/components/input/Input.d.ts.map +1 -1
  267. package/dist/types/components/layout/Container.d.ts +8 -4
  268. package/dist/types/components/layout/Container.d.ts.map +1 -1
  269. package/dist/types/components/layout/Flex.d.ts +27 -10
  270. package/dist/types/components/layout/Flex.d.ts.map +1 -1
  271. package/dist/types/components/layout/Grid.d.ts +11 -5
  272. package/dist/types/components/layout/Grid.d.ts.map +1 -1
  273. package/dist/types/components/link/Link.d.ts +22 -0
  274. package/dist/types/components/link/Link.d.ts.map +1 -0
  275. package/dist/types/components/megamenu/MegaMenu.d.ts +8 -11
  276. package/dist/types/components/megamenu/MegaMenu.d.ts.map +1 -1
  277. package/dist/types/components/modal/Modal.d.ts +8 -7
  278. package/dist/types/components/modal/Modal.d.ts.map +1 -1
  279. package/dist/types/components/multiselect/MultiSelect.d.ts +33 -0
  280. package/dist/types/components/multiselect/MultiSelect.d.ts.map +1 -0
  281. package/dist/types/components/nuiprovider/NUIProvider.d.ts +29 -0
  282. package/dist/types/components/nuiprovider/NUIProvider.d.ts.map +1 -0
  283. package/dist/types/components/pagination/Pagination.d.ts +17 -3
  284. package/dist/types/components/pagination/Pagination.d.ts.map +1 -1
  285. package/dist/types/components/popover/Popover.d.ts +54 -16
  286. package/dist/types/components/popover/Popover.d.ts.map +1 -1
  287. package/dist/types/components/progress/Progress.d.ts +17 -7
  288. package/dist/types/components/progress/Progress.d.ts.map +1 -1
  289. package/dist/types/components/radiogroup/RadioGroup.d.ts +15 -10
  290. package/dist/types/components/radiogroup/RadioGroup.d.ts.map +1 -1
  291. package/dist/types/components/rating/Rating.d.ts +24 -10
  292. package/dist/types/components/rating/Rating.d.ts.map +1 -1
  293. package/dist/types/components/resizable/Resizable.d.ts +24 -0
  294. package/dist/types/components/resizable/Resizable.d.ts.map +1 -0
  295. package/dist/types/components/select/Select.d.ts +17 -8
  296. package/dist/types/components/select/Select.d.ts.map +1 -1
  297. package/dist/types/components/skeleton/Skeleton.d.ts +37 -36
  298. package/dist/types/components/skeleton/Skeleton.d.ts.map +1 -1
  299. package/dist/types/components/slider/Slider.d.ts +15 -4
  300. package/dist/types/components/slider/Slider.d.ts.map +1 -1
  301. package/dist/types/components/spinner/Spinner.d.ts +14 -4
  302. package/dist/types/components/spinner/Spinner.d.ts.map +1 -1
  303. package/dist/types/components/stepper/Stepper.d.ts +17 -3
  304. package/dist/types/components/stepper/Stepper.d.ts.map +1 -1
  305. package/dist/types/components/switch/Switch.d.ts +20 -5
  306. package/dist/types/components/switch/Switch.d.ts.map +1 -1
  307. package/dist/types/components/table/Table.d.ts +24 -4
  308. package/dist/types/components/table/Table.d.ts.map +1 -1
  309. package/dist/types/components/tabs/Tabs.d.ts +25 -12
  310. package/dist/types/components/tabs/Tabs.d.ts.map +1 -1
  311. package/dist/types/components/textarea/Textarea.d.ts +8 -5
  312. package/dist/types/components/textarea/Textarea.d.ts.map +1 -1
  313. package/dist/types/components/timepicker/TimePicker.d.ts +26 -0
  314. package/dist/types/components/timepicker/TimePicker.d.ts.map +1 -0
  315. package/dist/types/components/timerangepicker/TimeRangePicker.d.ts +32 -0
  316. package/dist/types/components/timerangepicker/TimeRangePicker.d.ts.map +1 -0
  317. package/dist/types/components/toast/Toast.d.ts +23 -7
  318. package/dist/types/components/toast/Toast.d.ts.map +1 -1
  319. package/dist/types/components/tooltip/Tooltip.d.ts +13 -2
  320. package/dist/types/components/tooltip/Tooltip.d.ts.map +1 -1
  321. package/dist/types/components/treeview/TreeView.d.ts +20 -6
  322. package/dist/types/components/treeview/TreeView.d.ts.map +1 -1
  323. package/dist/types/components/virtuallist/VirtualList.d.ts +12 -16
  324. package/dist/types/components/virtuallist/VirtualList.d.ts.map +1 -1
  325. package/dist/types/index.d.ts +8 -4
  326. package/dist/types/index.d.ts.map +1 -1
  327. package/dist/types/utils/cn/cn.d.ts +19 -0
  328. package/dist/types/utils/cn/cn.d.ts.map +1 -0
  329. package/dist/types/utils/generateid/generateId.d.ts +7 -0
  330. package/dist/types/utils/generateid/generateId.d.ts.map +1 -1
  331. package/dist/types/utils/index.d.ts +2 -0
  332. package/dist/types/utils/index.d.ts.map +1 -1
  333. package/dist/types/utils/inertmanager/inertManager.d.ts +13 -0
  334. package/dist/types/utils/inertmanager/inertManager.d.ts.map +1 -1
  335. package/dist/types/utils/keyboardnav/keyboardNav.d.ts +17 -6
  336. package/dist/types/utils/keyboardnav/keyboardNav.d.ts.map +1 -1
  337. package/dist/types/utils/onclickoutside/onClickOutside.d.ts +9 -1
  338. package/dist/types/utils/onclickoutside/onClickOutside.d.ts.map +1 -1
  339. package/dist/types/utils/portal/portal.d.ts +14 -1
  340. package/dist/types/utils/portal/portal.d.ts.map +1 -1
  341. package/dist/types/utils/restorefocus/restoreFocus.d.ts +8 -4
  342. package/dist/types/utils/restorefocus/restoreFocus.d.ts.map +1 -1
  343. package/dist/types/utils/scrolllock/scrollLock.d.ts +10 -2
  344. package/dist/types/utils/scrolllock/scrollLock.d.ts.map +1 -1
  345. package/dist/types/utils/slot/slot.d.ts +12 -0
  346. package/dist/types/utils/slot/slot.d.ts.map +1 -0
  347. package/dist/types/utils/trapfocus/trapFocus.d.ts +6 -2
  348. package/dist/types/utils/trapfocus/trapFocus.d.ts.map +1 -1
  349. package/dist/utils/cn/cn.cjs +2 -0
  350. package/dist/utils/cn/cn.cjs.map +1 -0
  351. package/dist/utils/cn/cn.js +21 -0
  352. package/dist/utils/cn/cn.js.map +1 -0
  353. package/dist/utils/inertmanager/inertManager.cjs.map +1 -1
  354. package/dist/utils/inertmanager/inertManager.js.map +1 -1
  355. package/dist/utils/onclickoutside/onClickOutside.cjs +1 -1
  356. package/dist/utils/onclickoutside/onClickOutside.cjs.map +1 -1
  357. package/dist/utils/onclickoutside/onClickOutside.js +10 -6
  358. package/dist/utils/onclickoutside/onClickOutside.js.map +1 -1
  359. package/dist/utils/portal/portal.cjs.map +1 -1
  360. package/dist/utils/portal/portal.js.map +1 -1
  361. package/dist/utils/restorefocus/restoreFocus.cjs.map +1 -1
  362. package/dist/utils/restorefocus/restoreFocus.js.map +1 -1
  363. package/dist/utils/scrolllock/scrollLock.cjs.map +1 -1
  364. package/dist/utils/scrolllock/scrollLock.js +7 -0
  365. package/dist/utils/scrolllock/scrollLock.js.map +1 -1
  366. package/dist/utils/slot/slot.cjs +2 -0
  367. package/dist/utils/slot/slot.cjs.map +1 -0
  368. package/dist/utils/slot/slot.js +57 -0
  369. package/dist/utils/slot/slot.js.map +1 -0
  370. package/dist/utils/trapfocus/trapFocus.cjs.map +1 -1
  371. package/dist/utils/trapfocus/trapFocus.js.map +1 -1
  372. package/package.json +49 -6
  373. package/dist/components/layout/HStack.cjs +0 -2
  374. package/dist/components/layout/HStack.cjs.map +0 -1
  375. package/dist/components/layout/HStack.js +0 -9
  376. package/dist/components/layout/HStack.js.map +0 -1
  377. package/dist/components/layout/Stack.cjs +0 -2
  378. package/dist/components/layout/Stack.cjs.map +0 -1
  379. package/dist/components/layout/Stack.js +0 -9
  380. package/dist/components/layout/Stack.js.map +0 -1
  381. package/dist/styles/nui.css +0 -1
  382. package/dist/theme/NUIProvider.cjs +0 -2
  383. package/dist/theme/NUIProvider.cjs.map +0 -1
  384. package/dist/theme/NUIProvider.js +0 -34
  385. package/dist/theme/NUIProvider.js.map +0 -1
  386. package/dist/theme/useTheme.cjs +0 -2
  387. package/dist/theme/useTheme.cjs.map +0 -1
  388. package/dist/theme/useTheme.js +0 -9
  389. package/dist/theme/useTheme.js.map +0 -1
  390. package/dist/types/components/layout/HStack.d.ts +0 -8
  391. package/dist/types/components/layout/HStack.d.ts.map +0 -1
  392. package/dist/types/components/layout/Stack.d.ts +0 -8
  393. package/dist/types/components/layout/Stack.d.ts.map +0 -1
  394. package/dist/types/theme/NUIProvider.d.ts +0 -14
  395. package/dist/types/theme/NUIProvider.d.ts.map +0 -1
  396. package/dist/types/theme/useTheme.d.ts +0 -11
  397. package/dist/types/theme/useTheme.d.ts.map +0 -1
  398. package/dist/utils/generateid/generateId.cjs +0 -2
  399. package/dist/utils/generateid/generateId.cjs.map +0 -1
  400. package/dist/utils/generateid/generateId.js +0 -7
  401. package/dist/utils/generateid/generateId.js.map +0 -1
  402. package/dist/utils/keyboardnav/keyboardNav.cjs +0 -2
  403. package/dist/utils/keyboardnav/keyboardNav.cjs.map +0 -1
  404. package/dist/utils/keyboardnav/keyboardNav.js +0 -10
  405. package/dist/utils/keyboardnav/keyboardNav.js.map +0 -1
@@ -1 +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"}
1
+ {"version":3,"file":"Input.cjs","sources":["../../../src/components/input/Input.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { forwardRef, useId } from 'react';\nimport { cn } from '../../utils';\nimport './Input.css';\n\n/* -------------------------------------------------------------------------- */\n/* Props */\n/* -------------------------------------------------------------------------- */\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /** The text label associated with the input field. */\n label?: React.ReactNode;\n /** Auxiliary text displayed below the input to provide additional context. */\n description?: React.ReactNode;\n /** Error message. Replaces the description text and applies error styling when present. */\n error?: React.ReactNode;\n /** Size variant of the input field. Defaults to 'md'. */\n inputSize?: 'sm' | 'md' | 'lg';\n /** An icon element rendered on the left side (leading edge) inside the input. */\n leftIcon?: React.ReactNode;\n /** An icon element rendered on the right side (trailing edge) inside the input. */\n rightIcon?: React.ReactNode;\n /** Custom CSS class applied to the outermost wrapper element. */\n wrapperClassName?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Input Component\n * * A fundamental form element for capturing user data.\n * * Automatically generates stable IDs for strict WAI-ARIA compliance, \n * linking the input to its label, description, and error messages.\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n label,\n description,\n error,\n inputSize = 'md',\n leftIcon,\n rightIcon,\n className,\n wrapperClassName,\n id,\n required,\n disabled,\n ...props\n },\n ref\n ) => {\n // Stable ID generation for WAI-ARIA linkage\n const reactId = useId();\n const inputId = id ?? reactId;\n const errorId = `${inputId}-error`;\n const descriptionId = `${inputId}-description`;\n\n // ARIA connections: Error takes precedence over description\n const describedBy = error ? errorId : description ? descriptionId : undefined;\n\n return (\n <div className={cn(\"nui-input-wrapper\", wrapperClassName)}>\n \n {/* LABEL */}\n {label && (\n <label \n htmlFor={inputId} \n className={cn(\"nui-input__label\", disabled && \"nui-input__label--disabled\")}\n >\n {label}\n {required && <span className=\"nui-input__required\" aria-hidden=\"true\"> *</span>}\n </label>\n )}\n\n {/* INPUT CONTAINER (For Icon Positioning) */}\n <div className=\"nui-input__container\">\n {leftIcon && <span className=\"nui-input__icon -left\">{leftIcon}</span>}\n \n <input\n ref={ref}\n id={inputId}\n required={required}\n disabled={disabled}\n className={cn(\n \"nui-input\",\n `nui-input--${inputSize}`,\n !!error && \"nui-input--error\",\n !!leftIcon && \"nui-input--has-left\",\n !!rightIcon && \"nui-input--has-right\",\n className\n )}\n aria-invalid={!!error}\n aria-describedby={describedBy}\n {...props}\n />\n\n {rightIcon && <span className=\"nui-input__icon -right\">{rightIcon}</span>}\n </div>\n\n {/* DESCRIPTION */}\n {description && !error && (\n <div id={descriptionId} className=\"nui-input__description\">\n {description}\n </div>\n )}\n\n {/* ERROR MESSAGE */}\n {error && (\n <div id={errorId} className=\"nui-input__error\" aria-live=\"polite\">\n {error}\n </div>\n )}\n \n </div>\n );\n }\n);\n\nInput.displayName = 'Input';"],"names":["Input","forwardRef","label","description","error","inputSize","leftIcon","rightIcon","className","wrapperClassName","id","required","disabled","props","ref","reactId","useId","inputId","errorId","descriptionId","describedBy","cn","jsxs","jsx"],"mappings":"4MAqCaA,EAAQC,EAAAA,WACnB,CACE,CACE,MAAAC,EACA,YAAAC,EACA,MAAAC,EACA,UAAAC,EAAY,KACZ,SAAAC,EACA,UAAAC,EACA,UAAAC,EACA,iBAAAC,EACA,GAAAC,EACA,SAAAC,EACA,SAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CAEH,MAAMC,EAAUC,EAAAA,MAAA,EACVC,EAAUP,GAAMK,EAChBG,EAAU,GAAGD,CAAO,SACpBE,EAAgB,GAAGF,CAAO,eAG1BG,EAAchB,EAAQc,EAAUf,EAAcgB,EAAgB,OAEpE,cACG,MAAA,CAAI,UAAWE,EAAAA,GAAG,oBAAqBZ,CAAgB,EAGrD,SAAA,CAAAP,GACCoB,EAAAA,KAAC,QAAA,CACC,QAASL,EACT,UAAWI,EAAAA,GAAG,mBAAoBT,GAAY,4BAA4B,EAEzE,SAAA,CAAAV,EACAS,GAAYY,EAAAA,IAAC,OAAA,CAAK,UAAU,sBAAsB,cAAY,OAAO,SAAA,IAAA,CAAE,CAAA,CAAA,CAAA,EAK5ED,EAAAA,KAAC,MAAA,CAAI,UAAU,uBACZ,SAAA,CAAAhB,GAAYiB,EAAAA,IAAC,OAAA,CAAK,UAAU,wBAAyB,SAAAjB,EAAS,EAE/DiB,EAAAA,IAAC,QAAA,CACC,IAAAT,EACA,GAAIG,EACJ,SAAAN,EACA,SAAAC,EACA,UAAWS,EAAAA,GACT,YACA,cAAchB,CAAS,GACvB,CAAC,CAACD,GAAS,mBACX,CAAC,CAACE,GAAY,sBACd,CAAC,CAACC,GAAa,uBACfC,CAAA,EAEF,eAAc,CAAC,CAACJ,EAChB,mBAAkBgB,EACjB,GAAGP,CAAA,CAAA,EAGLN,GAAagB,EAAAA,IAAC,OAAA,CAAK,UAAU,yBAA0B,SAAAhB,CAAA,CAAU,CAAA,EACpE,EAGCJ,GAAe,CAACC,GACfmB,EAAAA,IAAC,OAAI,GAAIJ,EAAe,UAAU,yBAC/B,SAAAhB,CAAA,CACH,EAIDC,SACE,MAAA,CAAI,GAAIc,EAAS,UAAU,mBAAmB,YAAU,SACtD,SAAAd,CAAA,CACH,CAAA,EAGJ,CAEJ,CACF,EAEAJ,EAAM,YAAc"}
@@ -1,41 +1,66 @@
1
- import { jsxs as a, jsx as e } from "react/jsx-runtime";
2
- import m from "react";
1
+ import { jsxs as u, jsx as n } from "react/jsx-runtime";
2
+ import { forwardRef as y, useId as I } from "react";
3
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
- }
4
+ import { cn as d } from "../../utils/cn/cn.js";
5
+ const $ = y(
6
+ ({
7
+ label: p,
8
+ description: s,
9
+ error: i,
10
+ inputSize: o = "md",
11
+ leftIcon: t,
12
+ rightIcon: e,
13
+ className: _,
14
+ wrapperClassName: h,
15
+ id: N,
16
+ required: r,
17
+ disabled: c,
18
+ ...v
19
+ }, b) => {
20
+ const f = I(), a = N ?? f, l = `${a}-error`, m = `${a}-description`, x = i ? l : s ? m : void 0;
21
+ return /* @__PURE__ */ u("div", { className: d("nui-input-wrapper", h), children: [
22
+ p && /* @__PURE__ */ u(
23
+ "label",
24
+ {
25
+ htmlFor: a,
26
+ className: d("nui-input__label", c && "nui-input__label--disabled"),
27
+ children: [
28
+ p,
29
+ r && /* @__PURE__ */ n("span", { className: "nui-input__required", "aria-hidden": "true", children: " *" })
30
+ ]
31
+ }
32
+ ),
33
+ /* @__PURE__ */ u("div", { className: "nui-input__container", children: [
34
+ t && /* @__PURE__ */ n("span", { className: "nui-input__icon -left", children: t }),
35
+ /* @__PURE__ */ n(
36
+ "input",
37
+ {
38
+ ref: b,
39
+ id: a,
40
+ required: r,
41
+ disabled: c,
42
+ className: d(
43
+ "nui-input",
44
+ `nui-input--${o}`,
45
+ !!i && "nui-input--error",
46
+ !!t && "nui-input--has-left",
47
+ !!e && "nui-input--has-right",
48
+ _
49
+ ),
50
+ "aria-invalid": !!i,
51
+ "aria-describedby": x,
52
+ ...v
53
+ }
54
+ ),
55
+ e && /* @__PURE__ */ n("span", { className: "nui-input__icon -right", children: e })
56
+ ] }),
57
+ s && !i && /* @__PURE__ */ n("div", { id: m, className: "nui-input__description", children: s }),
58
+ i && /* @__PURE__ */ n("div", { id: l, className: "nui-input__error", "aria-live": "polite", children: i })
59
+ ] });
60
+ }
61
+ );
62
+ $.displayName = "Input";
38
63
  export {
39
- N as Input
64
+ $ as Input
40
65
  };
41
66
  //# sourceMappingURL=Input.js.map
@@ -1 +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;"}
1
+ {"version":3,"file":"Input.js","sources":["../../../src/components/input/Input.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { forwardRef, useId } from 'react';\nimport { cn } from '../../utils';\nimport './Input.css';\n\n/* -------------------------------------------------------------------------- */\n/* Props */\n/* -------------------------------------------------------------------------- */\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /** The text label associated with the input field. */\n label?: React.ReactNode;\n /** Auxiliary text displayed below the input to provide additional context. */\n description?: React.ReactNode;\n /** Error message. Replaces the description text and applies error styling when present. */\n error?: React.ReactNode;\n /** Size variant of the input field. Defaults to 'md'. */\n inputSize?: 'sm' | 'md' | 'lg';\n /** An icon element rendered on the left side (leading edge) inside the input. */\n leftIcon?: React.ReactNode;\n /** An icon element rendered on the right side (trailing edge) inside the input. */\n rightIcon?: React.ReactNode;\n /** Custom CSS class applied to the outermost wrapper element. */\n wrapperClassName?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Input Component\n * * A fundamental form element for capturing user data.\n * * Automatically generates stable IDs for strict WAI-ARIA compliance, \n * linking the input to its label, description, and error messages.\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n label,\n description,\n error,\n inputSize = 'md',\n leftIcon,\n rightIcon,\n className,\n wrapperClassName,\n id,\n required,\n disabled,\n ...props\n },\n ref\n ) => {\n // Stable ID generation for WAI-ARIA linkage\n const reactId = useId();\n const inputId = id ?? reactId;\n const errorId = `${inputId}-error`;\n const descriptionId = `${inputId}-description`;\n\n // ARIA connections: Error takes precedence over description\n const describedBy = error ? errorId : description ? descriptionId : undefined;\n\n return (\n <div className={cn(\"nui-input-wrapper\", wrapperClassName)}>\n \n {/* LABEL */}\n {label && (\n <label \n htmlFor={inputId} \n className={cn(\"nui-input__label\", disabled && \"nui-input__label--disabled\")}\n >\n {label}\n {required && <span className=\"nui-input__required\" aria-hidden=\"true\"> *</span>}\n </label>\n )}\n\n {/* INPUT CONTAINER (For Icon Positioning) */}\n <div className=\"nui-input__container\">\n {leftIcon && <span className=\"nui-input__icon -left\">{leftIcon}</span>}\n \n <input\n ref={ref}\n id={inputId}\n required={required}\n disabled={disabled}\n className={cn(\n \"nui-input\",\n `nui-input--${inputSize}`,\n !!error && \"nui-input--error\",\n !!leftIcon && \"nui-input--has-left\",\n !!rightIcon && \"nui-input--has-right\",\n className\n )}\n aria-invalid={!!error}\n aria-describedby={describedBy}\n {...props}\n />\n\n {rightIcon && <span className=\"nui-input__icon -right\">{rightIcon}</span>}\n </div>\n\n {/* DESCRIPTION */}\n {description && !error && (\n <div id={descriptionId} className=\"nui-input__description\">\n {description}\n </div>\n )}\n\n {/* ERROR MESSAGE */}\n {error && (\n <div id={errorId} className=\"nui-input__error\" aria-live=\"polite\">\n {error}\n </div>\n )}\n \n </div>\n );\n }\n);\n\nInput.displayName = 'Input';"],"names":["Input","forwardRef","label","description","error","inputSize","leftIcon","rightIcon","className","wrapperClassName","id","required","disabled","props","ref","reactId","useId","inputId","errorId","descriptionId","describedBy","cn","jsxs","jsx"],"mappings":";;;;AAqCO,MAAMA,IAAQC;AAAA,EACnB,CACE;AAAA,IACE,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,OAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,WAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,IAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AAEH,UAAMC,IAAUC,EAAA,GACVC,IAAUP,KAAMK,GAChBG,IAAU,GAAGD,CAAO,UACpBE,IAAgB,GAAGF,CAAO,gBAG1BG,IAAchB,IAAQc,IAAUf,IAAcgB,IAAgB;AAEpE,6BACG,OAAA,EAAI,WAAWE,EAAG,qBAAqBZ,CAAgB,GAGrD,UAAA;AAAA,MAAAP,KACC,gBAAAoB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAASL;AAAA,UACT,WAAWI,EAAG,oBAAoBT,KAAY,4BAA4B;AAAA,UAEzE,UAAA;AAAA,YAAAV;AAAA,YACAS,KAAY,gBAAAY,EAAC,QAAA,EAAK,WAAU,uBAAsB,eAAY,QAAO,UAAA,KAAA,CAAE;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAK5E,gBAAAD,EAAC,OAAA,EAAI,WAAU,wBACZ,UAAA;AAAA,QAAAhB,KAAY,gBAAAiB,EAAC,QAAA,EAAK,WAAU,yBAAyB,UAAAjB,GAAS;AAAA,QAE/D,gBAAAiB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAAT;AAAA,YACA,IAAIG;AAAA,YACJ,UAAAN;AAAA,YACA,UAAAC;AAAA,YACA,WAAWS;AAAA,cACT;AAAA,cACA,cAAchB,CAAS;AAAA,cACvB,CAAC,CAACD,KAAS;AAAA,cACX,CAAC,CAACE,KAAY;AAAA,cACd,CAAC,CAACC,KAAa;AAAA,cACfC;AAAA,YAAA;AAAA,YAEF,gBAAc,CAAC,CAACJ;AAAA,YAChB,oBAAkBgB;AAAA,YACjB,GAAGP;AAAA,UAAA;AAAA,QAAA;AAAA,QAGLN,KAAa,gBAAAgB,EAAC,QAAA,EAAK,WAAU,0BAA0B,UAAAhB,EAAA,CAAU;AAAA,MAAA,GACpE;AAAA,MAGCJ,KAAe,CAACC,KACf,gBAAAmB,EAAC,SAAI,IAAIJ,GAAe,WAAU,0BAC/B,UAAAhB,EAAA,CACH;AAAA,MAIDC,uBACE,OAAA,EAAI,IAAIc,GAAS,WAAU,oBAAmB,aAAU,UACtD,UAAAd,EAAA,CACH;AAAA,IAAA,GAGJ;AAAA,EAEJ;AACF;AAEAJ,EAAM,cAAc;"}
@@ -1,2 +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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),s=require("react");;/* empty css */const c=require("../../utils/cn/cn.cjs"),e=s.forwardRef(({size:r="lg",className:n,children:t,...i},a)=>o.jsx("div",{ref:a,className:c.cn("nui-container",n),"data-size":r,...i,children:t}));e.displayName="Container";exports.Container=e;
2
2
  //# sourceMappingURL=Container.cjs.map
@@ -1 +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"}
1
+ {"version":3,"file":"Container.cjs","sources":["../../../src/components/layout/Container.tsx"],"sourcesContent":["/* src/components/layout/Container.tsx */\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils';\nimport './Layout.css';\n\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** The maximum width bounds for the container. Defaults to 'lg'. */\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n}\n\n/**\n * Container Component\n * * A structural primitive used to constrain content width to the current breakpoint.\n * * Centers content horizontally and provides standard gutter padding.\n */\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(({\n size = 'lg',\n className,\n children,\n ...props\n}, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"nui-container\", className)}\n data-size={size}\n {...props}\n >\n {children}\n </div>\n );\n});\n\nContainer.displayName = 'Container';"],"names":["Container","forwardRef","size","className","children","props","ref","jsx","cn"],"mappings":"6MAeaA,EAAYC,EAAAA,WAA2C,CAAC,CACnE,KAAAC,EAAO,KACP,UAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAAGC,IAECC,EAAAA,IAAC,MAAA,CACC,IAAAD,EACA,UAAWE,EAAAA,GAAG,gBAAiBL,CAAS,EACxC,YAAWD,EACV,GAAGG,EAEH,SAAAD,CAAA,CAAA,CAGN,EAEDJ,EAAU,YAAc"}
@@ -1,33 +1,24 @@
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
- }
1
+ import { jsx as n } from "react/jsx-runtime";
2
+ import { forwardRef as e } from "react";
3
+ /* empty css */
4
+ import { cn as m } from "../../utils/cn/cn.js";
5
+ const p = e(({
6
+ size: r = "lg",
7
+ className: o,
8
+ children: i,
9
+ ...t
10
+ }, a) => /* @__PURE__ */ n(
11
+ "div",
12
+ {
13
+ ref: a,
14
+ className: m("nui-container", o),
15
+ "data-size": r,
16
+ ...t,
17
+ children: i
18
+ }
19
+ ));
20
+ p.displayName = "Container";
30
21
  export {
31
- d as Container
22
+ p as Container
32
23
  };
33
24
  //# sourceMappingURL=Container.js.map
@@ -1 +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;"}
1
+ {"version":3,"file":"Container.js","sources":["../../../src/components/layout/Container.tsx"],"sourcesContent":["/* src/components/layout/Container.tsx */\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils';\nimport './Layout.css';\n\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** The maximum width bounds for the container. Defaults to 'lg'. */\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n}\n\n/**\n * Container Component\n * * A structural primitive used to constrain content width to the current breakpoint.\n * * Centers content horizontally and provides standard gutter padding.\n */\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(({\n size = 'lg',\n className,\n children,\n ...props\n}, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"nui-container\", className)}\n data-size={size}\n {...props}\n >\n {children}\n </div>\n );\n});\n\nContainer.displayName = 'Container';"],"names":["Container","forwardRef","size","className","children","props","ref","jsx","cn"],"mappings":";;;;AAeO,MAAMA,IAAYC,EAA2C,CAAC;AAAA,EACnE,MAAAC,IAAO;AAAA,EACP,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,MAEC,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,iBAAiBL,CAAS;AAAA,IACxC,aAAWD;AAAA,IACV,GAAGG;AAAA,IAEH,UAAAD;AAAA,EAAA;AAAA,CAGN;AAEDJ,EAAU,cAAc;"}
@@ -1,2 +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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),i=require("react");;/* empty css */const y=require("../../utils/cn/cn.cjs"),a=i.forwardRef(({direction:e="row",align:t="stretch",justify:s="start",wrap:d="nowrap",gap:r=0,className:l,style:u,children:f,...x},m)=>c.jsx("div",{ref:m,className:y.cn("nui-flex",l),"data-direction":e,"data-align":t,"data-justify":s,"data-wrap":d,style:{"--nui-flex-gap":typeof r=="number"?`${r}px`:r,...u},...x,children:f}));a.displayName="Flex";const n=i.forwardRef((e,t)=>c.jsx(a,{ref:t,direction:"column",...e}));n.displayName="Stack";const o=i.forwardRef((e,t)=>c.jsx(a,{ref:t,direction:"row",align:"center",...e}));o.displayName="HStack";exports.Flex=a;exports.HStack=o;exports.Stack=n;
2
2
  //# sourceMappingURL=Flex.cjs.map
@@ -1 +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"}
1
+ {"version":3,"file":"Flex.cjs","sources":["../../../src/components/layout/Flex.tsx"],"sourcesContent":["/* src/components/layout/Flex.tsx */\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils';\nimport './Layout.css';\n\nexport interface FlexProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Defines the flex-direction. Defaults to 'row'. */\n direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';\n /** Defines the align-items cross-axis behavior. Defaults to 'stretch'. */\n align?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';\n /** Defines the justify-content main-axis behavior. Defaults to 'start'. */\n justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n /** Defines the flex-wrap behavior. Defaults to 'nowrap'. */\n wrap?: 'wrap' | 'nowrap' | 'wrap-reverse';\n /** The gap between flex items. Accepts numbers (px) or valid CSS strings. Defaults to 0. */\n gap?: number | string;\n}\n\n/**\n * Flex Component\n * * A highly configurable Flexbox container.\n * * Uses data-attributes for standard flex properties and inline CSS variables \n * to securely pass dynamic values (like gap) to the stylesheet without recalculating classes.\n */\nexport const Flex = forwardRef<HTMLDivElement, FlexProps>(({\n direction = 'row',\n align = 'stretch',\n justify = 'start',\n wrap = 'nowrap',\n gap = 0,\n className,\n style,\n children,\n ...props\n}, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"nui-flex\", className)}\n data-direction={direction}\n data-align={align}\n data-justify={justify}\n data-wrap={wrap}\n style={{\n // We only use an inline style for the exact dynamic gap value\n '--nui-flex-gap': typeof gap === 'number' ? `${gap}px` : gap,\n ...style,\n } as React.CSSProperties}\n {...props}\n >\n {children}\n </div>\n );\n});\n\nFlex.displayName = 'Flex';\n\n/* -----------------------------------------------------------------\n * Syntactic Sugar Layouts\n * ----------------------------------------------------------------- */\n\n/**\n * Stack Component\n * * Syntactic sugar for a vertical Flex container.\n */\nexport const Stack = forwardRef<HTMLDivElement, Omit<FlexProps, 'direction'>>((props, ref) => (\n <Flex ref={ref} direction=\"column\" {...props} />\n));\nStack.displayName = 'Stack';\n\n/**\n * HStack Component\n * * Syntactic sugar for a horizontal Flex container with vertically centered items.\n */\nexport const HStack = forwardRef<HTMLDivElement, Omit<FlexProps, 'direction'>>((props, ref) => (\n <Flex ref={ref} direction=\"row\" align=\"center\" {...props} />\n));\nHStack.displayName = 'HStack';"],"names":["Flex","forwardRef","direction","align","justify","wrap","gap","className","style","children","props","ref","jsx","cn","Stack","HStack"],"mappings":"6MAwBaA,EAAOC,EAAAA,WAAsC,CAAC,CACzD,UAAAC,EAAY,MACZ,MAAAC,EAAQ,UACR,QAAAC,EAAU,QACV,KAAAC,EAAO,SACP,IAAAC,EAAM,EACN,UAAAC,EACA,MAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAAGC,IAECC,EAAAA,IAAC,MAAA,CACC,IAAAD,EACA,UAAWE,EAAAA,GAAG,WAAYN,CAAS,EACnC,iBAAgBL,EAChB,aAAYC,EACZ,eAAcC,EACd,YAAWC,EACX,MAAO,CAEL,iBAAkB,OAAOC,GAAQ,SAAW,GAAGA,CAAG,KAAOA,EACzD,GAAGE,CAAA,EAEJ,GAAGE,EAEH,SAAAD,CAAA,CAAA,CAGN,EAEDT,EAAK,YAAc,OAUZ,MAAMc,EAAQb,EAAAA,WAAyD,CAACS,EAAOC,IACpFC,EAAAA,IAACZ,EAAA,CAAK,IAAAW,EAAU,UAAU,SAAU,GAAGD,CAAA,CAAO,CAC/C,EACDI,EAAM,YAAc,QAMb,MAAMC,EAASd,EAAAA,WAAyD,CAACS,EAAOC,IACrFC,EAAAA,IAACZ,EAAA,CAAK,IAAAW,EAAU,UAAU,MAAM,MAAM,SAAU,GAAGD,EAAO,CAC3D,EACDK,EAAO,YAAc"}
@@ -1,26 +1,43 @@
1
- import { jsx as p } from "react/jsx-runtime";
2
- function d({
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { forwardRef as o } from "react";
3
+ /* empty css */
4
+ import { cn as f } from "../../utils/cn/cn.js";
5
+ const i = o(({
3
6
  direction: t = "row",
4
- align: n = "stretch",
5
- justify: e = "start",
6
- wrap: o = "nowrap",
7
+ align: a = "stretch",
8
+ justify: n = "start",
9
+ wrap: c = "nowrap",
7
10
  gap: r = 0,
11
+ className: m,
8
12
  style: s,
9
- children: a,
13
+ children: d,
10
14
  ...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
- }
15
+ }, p) => /* @__PURE__ */ e(
16
+ "div",
17
+ {
18
+ ref: p,
19
+ className: f("nui-flex", m),
20
+ "data-direction": t,
21
+ "data-align": a,
22
+ "data-justify": n,
23
+ "data-wrap": c,
24
+ style: {
25
+ // We only use an inline style for the exact dynamic gap value
26
+ "--nui-flex-gap": typeof r == "number" ? `${r}px` : r,
27
+ ...s
28
+ },
29
+ ...l,
30
+ children: d
31
+ }
32
+ ));
33
+ i.displayName = "Flex";
34
+ const x = o((t, a) => /* @__PURE__ */ e(i, { ref: a, direction: "column", ...t }));
35
+ x.displayName = "Stack";
36
+ const u = o((t, a) => /* @__PURE__ */ e(i, { ref: a, direction: "row", align: "center", ...t }));
37
+ u.displayName = "HStack";
23
38
  export {
24
- d as Flex
39
+ i as Flex,
40
+ u as HStack,
41
+ x as Stack
25
42
  };
26
43
  //# sourceMappingURL=Flex.js.map
@@ -1 +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;"}
1
+ {"version":3,"file":"Flex.js","sources":["../../../src/components/layout/Flex.tsx"],"sourcesContent":["/* src/components/layout/Flex.tsx */\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils';\nimport './Layout.css';\n\nexport interface FlexProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Defines the flex-direction. Defaults to 'row'. */\n direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';\n /** Defines the align-items cross-axis behavior. Defaults to 'stretch'. */\n align?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';\n /** Defines the justify-content main-axis behavior. Defaults to 'start'. */\n justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n /** Defines the flex-wrap behavior. Defaults to 'nowrap'. */\n wrap?: 'wrap' | 'nowrap' | 'wrap-reverse';\n /** The gap between flex items. Accepts numbers (px) or valid CSS strings. Defaults to 0. */\n gap?: number | string;\n}\n\n/**\n * Flex Component\n * * A highly configurable Flexbox container.\n * * Uses data-attributes for standard flex properties and inline CSS variables \n * to securely pass dynamic values (like gap) to the stylesheet without recalculating classes.\n */\nexport const Flex = forwardRef<HTMLDivElement, FlexProps>(({\n direction = 'row',\n align = 'stretch',\n justify = 'start',\n wrap = 'nowrap',\n gap = 0,\n className,\n style,\n children,\n ...props\n}, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"nui-flex\", className)}\n data-direction={direction}\n data-align={align}\n data-justify={justify}\n data-wrap={wrap}\n style={{\n // We only use an inline style for the exact dynamic gap value\n '--nui-flex-gap': typeof gap === 'number' ? `${gap}px` : gap,\n ...style,\n } as React.CSSProperties}\n {...props}\n >\n {children}\n </div>\n );\n});\n\nFlex.displayName = 'Flex';\n\n/* -----------------------------------------------------------------\n * Syntactic Sugar Layouts\n * ----------------------------------------------------------------- */\n\n/**\n * Stack Component\n * * Syntactic sugar for a vertical Flex container.\n */\nexport const Stack = forwardRef<HTMLDivElement, Omit<FlexProps, 'direction'>>((props, ref) => (\n <Flex ref={ref} direction=\"column\" {...props} />\n));\nStack.displayName = 'Stack';\n\n/**\n * HStack Component\n * * Syntactic sugar for a horizontal Flex container with vertically centered items.\n */\nexport const HStack = forwardRef<HTMLDivElement, Omit<FlexProps, 'direction'>>((props, ref) => (\n <Flex ref={ref} direction=\"row\" align=\"center\" {...props} />\n));\nHStack.displayName = 'HStack';"],"names":["Flex","forwardRef","direction","align","justify","wrap","gap","className","style","children","props","ref","jsx","cn","Stack","HStack"],"mappings":";;;;AAwBO,MAAMA,IAAOC,EAAsC,CAAC;AAAA,EACzD,WAAAC,IAAY;AAAA,EACZ,OAAAC,IAAQ;AAAA,EACR,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,KAAAC,IAAM;AAAA,EACN,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,MAEC,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,YAAYN,CAAS;AAAA,IACnC,kBAAgBL;AAAA,IAChB,cAAYC;AAAA,IACZ,gBAAcC;AAAA,IACd,aAAWC;AAAA,IACX,OAAO;AAAA;AAAA,MAEL,kBAAkB,OAAOC,KAAQ,WAAW,GAAGA,CAAG,OAAOA;AAAA,MACzD,GAAGE;AAAA,IAAA;AAAA,IAEJ,GAAGE;AAAA,IAEH,UAAAD;AAAA,EAAA;AAAA,CAGN;AAEDT,EAAK,cAAc;AAUZ,MAAMc,IAAQb,EAAyD,CAACS,GAAOC,MACpF,gBAAAC,EAACZ,GAAA,EAAK,KAAAW,GAAU,WAAU,UAAU,GAAGD,EAAA,CAAO,CAC/C;AACDI,EAAM,cAAc;AAMb,MAAMC,IAASd,EAAyD,CAACS,GAAOC,MACrF,gBAAAC,EAACZ,GAAA,EAAK,KAAAW,GAAU,WAAU,OAAM,OAAM,UAAU,GAAGD,GAAO,CAC3D;AACDK,EAAO,cAAc;"}
@@ -1,2 +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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),c=require("react");;/* empty css */const f=require("../../utils/cn/cn.cjs"),r=c.forwardRef(({columns:e="auto-fit",gap:i=16,minColWidth:t="250px",className:d,style:n,children:u,...o},s)=>a.jsx("div",{ref:s,className:f.cn("nui-grid",d),"data-cols":typeof e=="number"?"fixed":e,style:{"--nui-grid-gap":typeof i=="number"?`${i}px`:i,"--nui-grid-min-width":t,"--nui-grid-cols-fixed":typeof e=="number"?e:void 0,...n},...o,children:u}));r.displayName="Grid";exports.Grid=r;
2
2
  //# sourceMappingURL=Grid.cjs.map
@@ -1 +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"}
1
+ {"version":3,"file":"Grid.cjs","sources":["../../../src/components/layout/Grid.tsx"],"sourcesContent":["/* src/components/layout/Grid.tsx */\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils';\nimport './Layout.css';\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Number of fixed columns, or responsive auto algorithms. Defaults to 'auto-fit'. */\n columns?: number | 'auto-fit' | 'auto-fill';\n /** The gap between grid items. Accepts numbers (px) or valid CSS strings. Defaults to 16. */\n gap?: number | string;\n /** The minimum width a column can shrink to before wrapping. Used with auto-fit/fill. Defaults to '250px'. */\n minColWidth?: string;\n}\n\n/**\n * Grid Component\n * * A responsive CSS Grid container.\n * * Passes complex grid math to CSS via targeted variables for high performance.\n */\nexport const Grid = forwardRef<HTMLDivElement, GridProps>(({\n columns = 'auto-fit',\n gap = 16,\n minColWidth = '250px',\n className,\n style,\n children,\n ...props\n}, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"nui-grid\", className)}\n data-cols={typeof columns === 'number' ? 'fixed' : columns}\n style={{\n '--nui-grid-gap': typeof gap === 'number' ? `${gap}px` : gap,\n '--nui-grid-min-width': minColWidth,\n '--nui-grid-cols-fixed': typeof columns === 'number' ? columns : undefined,\n ...style,\n } as React.CSSProperties}\n {...props}\n >\n {children}\n </div>\n );\n});\n\nGrid.displayName = 'Grid';"],"names":["Grid","forwardRef","columns","gap","minColWidth","className","style","children","props","ref","jsx","cn"],"mappings":"6MAmBaA,EAAOC,EAAAA,WAAsC,CAAC,CACzD,QAAAC,EAAU,WACV,IAAAC,EAAM,GACN,YAAAC,EAAc,QACd,UAAAC,EACA,MAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAAGC,IAECC,EAAAA,IAAC,MAAA,CACC,IAAAD,EACA,UAAWE,EAAAA,GAAG,WAAYN,CAAS,EACnC,YAAW,OAAOH,GAAY,SAAW,QAAUA,EACnD,MAAO,CACL,iBAAkB,OAAOC,GAAQ,SAAW,GAAGA,CAAG,KAAOA,EACzD,uBAAwBC,EACxB,wBAAyB,OAAOF,GAAY,SAAWA,EAAU,OACjE,GAAGI,CAAA,EAEJ,GAAGE,EAEH,SAAAD,CAAA,CAAA,CAGN,EAEDP,EAAK,YAAc"}
@@ -1,21 +1,33 @@
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
- }
1
+ import { jsx as p } from "react/jsx-runtime";
2
+ import { forwardRef as n } from "react";
3
+ /* empty css */
4
+ import { cn as a } from "../../utils/cn/cn.js";
5
+ const u = n(({
6
+ columns: i = "auto-fit",
7
+ gap: r = 16,
8
+ minColWidth: t = "250px",
9
+ className: d,
10
+ style: e,
11
+ children: o,
12
+ ...f
13
+ }, m) => /* @__PURE__ */ p(
14
+ "div",
15
+ {
16
+ ref: m,
17
+ className: a("nui-grid", d),
18
+ "data-cols": typeof i == "number" ? "fixed" : i,
19
+ style: {
20
+ "--nui-grid-gap": typeof r == "number" ? `${r}px` : r,
21
+ "--nui-grid-min-width": t,
22
+ "--nui-grid-cols-fixed": typeof i == "number" ? i : void 0,
23
+ ...e
24
+ },
25
+ ...f,
26
+ children: o
27
+ }
28
+ ));
29
+ u.displayName = "Grid";
18
30
  export {
19
- s as Grid
31
+ u as Grid
20
32
  };
21
33
  //# sourceMappingURL=Grid.js.map
@@ -1 +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;"}
1
+ {"version":3,"file":"Grid.js","sources":["../../../src/components/layout/Grid.tsx"],"sourcesContent":["/* src/components/layout/Grid.tsx */\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils';\nimport './Layout.css';\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Number of fixed columns, or responsive auto algorithms. Defaults to 'auto-fit'. */\n columns?: number | 'auto-fit' | 'auto-fill';\n /** The gap between grid items. Accepts numbers (px) or valid CSS strings. Defaults to 16. */\n gap?: number | string;\n /** The minimum width a column can shrink to before wrapping. Used with auto-fit/fill. Defaults to '250px'. */\n minColWidth?: string;\n}\n\n/**\n * Grid Component\n * * A responsive CSS Grid container.\n * * Passes complex grid math to CSS via targeted variables for high performance.\n */\nexport const Grid = forwardRef<HTMLDivElement, GridProps>(({\n columns = 'auto-fit',\n gap = 16,\n minColWidth = '250px',\n className,\n style,\n children,\n ...props\n}, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"nui-grid\", className)}\n data-cols={typeof columns === 'number' ? 'fixed' : columns}\n style={{\n '--nui-grid-gap': typeof gap === 'number' ? `${gap}px` : gap,\n '--nui-grid-min-width': minColWidth,\n '--nui-grid-cols-fixed': typeof columns === 'number' ? columns : undefined,\n ...style,\n } as React.CSSProperties}\n {...props}\n >\n {children}\n </div>\n );\n});\n\nGrid.displayName = 'Grid';"],"names":["Grid","forwardRef","columns","gap","minColWidth","className","style","children","props","ref","jsx","cn"],"mappings":";;;;AAmBO,MAAMA,IAAOC,EAAsC,CAAC;AAAA,EACzD,SAAAC,IAAU;AAAA,EACV,KAAAC,IAAM;AAAA,EACN,aAAAC,IAAc;AAAA,EACd,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,MAEC,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,YAAYN,CAAS;AAAA,IACnC,aAAW,OAAOH,KAAY,WAAW,UAAUA;AAAA,IACnD,OAAO;AAAA,MACL,kBAAkB,OAAOC,KAAQ,WAAW,GAAGA,CAAG,OAAOA;AAAA,MACzD,wBAAwBC;AAAA,MACxB,yBAAyB,OAAOF,KAAY,WAAWA,IAAU;AAAA,MACjE,GAAGI;AAAA,IAAA;AAAA,IAEJ,GAAGE;AAAA,IAEH,UAAAD;AAAA,EAAA;AAAA,CAGN;AAEDP,EAAK,cAAc;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("react/jsx-runtime"),k=require("react");;/* empty css */const d=require("../../utils/slot/slot.cjs"),m=require("../../utils/cn/cn.cjs"),e=k.forwardRef(({className:n,variant:r="default",underline:t="hover",isExternal:i=!1,asChild:o=!1,children:s,...l},a)=>{const u=i?{target:"_blank",rel:"noopener noreferrer"}:{},c=o?d.Slot:"a";return f.jsx(c,{ref:a,className:m.cn("nui-link",`nui-link--${r}`,`nui-link--underline-${t}`,n),...u,...l,children:s})});e.displayName="Link";exports.Link=e;
2
+ //# sourceMappingURL=Link.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.cjs","sources":["../../../src/components/link/Link.tsx"],"sourcesContent":["import React from 'react';\nimport { cn, Slot } from '../../utils';\nimport './Link.css';\n\nexport type LinkVariant = 'default' | 'primary' | 'muted' | 'danger';\nexport type LinkUnderline = 'none' | 'hover' | 'always';\n\nexport interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n variant?: LinkVariant;\n underline?: LinkUnderline;\n /** Automatically applies `target=\"_blank\"` and `rel=\"noopener noreferrer\"` for external routing security. */\n isExternal?: boolean;\n /** * Polymorphic Prop: When true, delegates rendering to its child.\n * Crucial for integrating with framework routers like Next.js `<Link>` or React Router.\n */\n asChild?: boolean;\n}\n\n/**\n * Link Component\n * --------------\n * Typographical navigation element designed to blend seamlessly into paragraphs, lists, and breadcrumbs.\n * Architecture Note: For functional Call-to-Action links that require button-like padding and backgrounds, \n * use the `<Button asChild>` component instead.\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n ({ \n className, \n variant = 'default', \n underline = 'hover',\n isExternal = false,\n asChild = false,\n children, \n ...props \n }, ref) => {\n \n // Auto-apply security attributes for external navigation to prevent tabnabbing attacks\n const externalProps = isExternal ? {\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n } : {};\n\n // Determine the root node. If asChild is true, use our zero-dependency Slot to merge props onto the child.\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n ref={ref}\n className={cn(\n \"nui-link\",\n `nui-link--${variant}`,\n `nui-link--underline-${underline}`,\n className\n )}\n {...externalProps}\n {...props}\n >\n {children}\n </Comp>\n );\n }\n);\n\nLink.displayName = \"Link\";"],"names":["Link","React","className","variant","underline","isExternal","asChild","children","props","ref","externalProps","Comp","Slot","jsx","cn"],"mappings":"kPAyBaA,EAAOC,EAAM,WACxB,CAAC,CACC,UAAAC,EACA,QAAAC,EAAU,UACV,UAAAC,EAAY,QACZ,WAAAC,EAAa,GACb,QAAAC,EAAU,GACV,SAAAC,EACA,GAAGC,CAAA,EACFC,IAAQ,CAGT,MAAMC,EAAgBL,EAAa,CACjC,OAAQ,SACR,IAAK,qBAAA,EACH,CAAA,EAGEM,EAAOL,EAAUM,EAAAA,KAAO,IAE9B,OACEC,EAAAA,IAACF,EAAA,CACC,IAAAF,EACA,UAAWK,EAAAA,GACT,WACA,aAAaX,CAAO,GACpB,uBAAuBC,CAAS,GAChCF,CAAA,EAED,GAAGQ,EACH,GAAGF,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEAP,EAAK,YAAc"}
@@ -0,0 +1,41 @@
1
+ import { jsx as p } from "react/jsx-runtime";
2
+ import f from "react";
3
+ /* empty css */
4
+ import { Slot as s } from "../../utils/slot/slot.js";
5
+ import { cn as c } from "../../utils/cn/cn.js";
6
+ const k = f.forwardRef(
7
+ ({
8
+ className: r,
9
+ variant: o = "default",
10
+ underline: e = "hover",
11
+ isExternal: n = !1,
12
+ asChild: t = !1,
13
+ children: i,
14
+ ...a
15
+ }, l) => {
16
+ const m = n ? {
17
+ target: "_blank",
18
+ rel: "noopener noreferrer"
19
+ } : {};
20
+ return /* @__PURE__ */ p(
21
+ t ? s : "a",
22
+ {
23
+ ref: l,
24
+ className: c(
25
+ "nui-link",
26
+ `nui-link--${o}`,
27
+ `nui-link--underline-${e}`,
28
+ r
29
+ ),
30
+ ...m,
31
+ ...a,
32
+ children: i
33
+ }
34
+ );
35
+ }
36
+ );
37
+ k.displayName = "Link";
38
+ export {
39
+ k as Link
40
+ };
41
+ //# sourceMappingURL=Link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.js","sources":["../../../src/components/link/Link.tsx"],"sourcesContent":["import React from 'react';\nimport { cn, Slot } from '../../utils';\nimport './Link.css';\n\nexport type LinkVariant = 'default' | 'primary' | 'muted' | 'danger';\nexport type LinkUnderline = 'none' | 'hover' | 'always';\n\nexport interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n variant?: LinkVariant;\n underline?: LinkUnderline;\n /** Automatically applies `target=\"_blank\"` and `rel=\"noopener noreferrer\"` for external routing security. */\n isExternal?: boolean;\n /** * Polymorphic Prop: When true, delegates rendering to its child.\n * Crucial for integrating with framework routers like Next.js `<Link>` or React Router.\n */\n asChild?: boolean;\n}\n\n/**\n * Link Component\n * --------------\n * Typographical navigation element designed to blend seamlessly into paragraphs, lists, and breadcrumbs.\n * Architecture Note: For functional Call-to-Action links that require button-like padding and backgrounds, \n * use the `<Button asChild>` component instead.\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n ({ \n className, \n variant = 'default', \n underline = 'hover',\n isExternal = false,\n asChild = false,\n children, \n ...props \n }, ref) => {\n \n // Auto-apply security attributes for external navigation to prevent tabnabbing attacks\n const externalProps = isExternal ? {\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n } : {};\n\n // Determine the root node. If asChild is true, use our zero-dependency Slot to merge props onto the child.\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n ref={ref}\n className={cn(\n \"nui-link\",\n `nui-link--${variant}`,\n `nui-link--underline-${underline}`,\n className\n )}\n {...externalProps}\n {...props}\n >\n {children}\n </Comp>\n );\n }\n);\n\nLink.displayName = \"Link\";"],"names":["Link","React","className","variant","underline","isExternal","asChild","children","props","ref","externalProps","jsx","Slot","cn"],"mappings":";;;;;AAyBO,MAAMA,IAAOC,EAAM;AAAA,EACxB,CAAC;AAAA,IACC,WAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,WAAAC,IAAY;AAAA,IACZ,YAAAC,IAAa;AAAA,IACb,SAAAC,IAAU;AAAA,IACV,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GACFC,MAAQ;AAGT,UAAMC,IAAgBL,IAAa;AAAA,MACjC,QAAQ;AAAA,MACR,KAAK;AAAA,IAAA,IACH,CAAA;AAKJ,WACE,gBAAAM;AAAA,MAHWL,IAAUM,IAAO;AAAA,MAG3B;AAAA,QACC,KAAAH;AAAA,QACA,WAAWI;AAAA,UACT;AAAA,UACA,aAAaV,CAAO;AAAA,UACpB,uBAAuBC,CAAS;AAAA,UAChCF;AAAA,QAAA;AAAA,QAED,GAAGQ;AAAA,QACH,GAAGF;AAAA,QAEH,UAAAD;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEAP,EAAK,cAAc;"}
@@ -1,2 +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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),t=require("react");;/* empty css */const f=require("../../utils/cn/cn.cjs"),M=t.createContext(null);function p(){const r=t.useContext(M);if(!r)throw new Error("MegaMenu components must be used within <MegaMenu>");return r}const v=t.forwardRef(({className:r,children:d,...l},s)=>{const[e,u]=t.useState(!1),i=t.useRef(null),c=t.useRef(null),o=`nui-megamenu-content-${t.useId()}`;return t.useEffect(()=>{if(!e)return;const n=g=>{c.current&&!c.current.contains(g.target)&&i.current&&!i.current.contains(g.target)&&u(!1)};return document.addEventListener("mousedown",n),()=>document.removeEventListener("mousedown",n)},[e]),t.useEffect(()=>{if(!e)return;const n=g=>{g.key==="Escape"&&(u(!1),i.current?.focus())};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[e]),a.jsx(M.Provider,{value:{isOpen:e,setIsOpen:u,triggerRef:i,contentId:o},children:a.jsx("div",{ref:n=>{c.current=n,typeof s=="function"?s(n):s&&(s.current=n)},className:f.cn("nui-megamenu",r),...l,children:d})})});v.displayName="MegaMenu";const h=t.forwardRef(({className:r,children:d,onClick:l,...s},e)=>{const{isOpen:u,setIsOpen:i,triggerRef:c,contentId:m}=p();return a.jsxs("button",{ref:o=>{c&&(c.current=o),typeof e=="function"?e(o):e&&(e.current=o)},type:"button",className:f.cn("nui-megamenu__trigger",u&&"active",r),"aria-expanded":u,"aria-controls":m,onClick:o=>{i(n=>!n),l?.(o)},...s,children:[d,a.jsx("svg",{className:"nui-megamenu__chevron",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:a.jsx("polyline",{points:"6 9 12 15 18 9"})})]})});h.displayName="MegaMenu.Trigger";const w=t.forwardRef(({className:r,children:d,...l},s)=>{const{isOpen:e,contentId:u}=p();return e?a.jsx("div",{ref:s,id:u,role:"menu",className:f.cn("nui-megamenu__content",r),...l,children:d}):null});w.displayName="MegaMenu.Content";const x=Object.assign(v,{Trigger:h,Content:w});exports.MegaMenu=x;
2
2
  //# sourceMappingURL=MegaMenu.cjs.map