asheeui 0.6.15 → 1.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.
Files changed (389) hide show
  1. package/dist/AsheeUIProvider.d.ts.map +1 -1
  2. package/dist/AsheeUIProvider.js +29 -24
  3. package/dist/components/accordion/Accordion.d.ts.map +1 -1
  4. package/dist/components/accordion/Accordion.js +81 -173
  5. package/dist/components/accordion/accordion-config.js +12 -13
  6. package/dist/components/accordion/accordion-styles.js +21 -24
  7. package/dist/components/alert/Alert.d.ts +88 -0
  8. package/dist/components/alert/Alert.d.ts.map +1 -0
  9. package/dist/components/alert/Alert.js +61 -0
  10. package/dist/components/alert/alert-config.d.ts +56 -0
  11. package/dist/components/alert/alert-config.d.ts.map +1 -0
  12. package/dist/components/alert/alert-config.js +14 -0
  13. package/dist/components/alert/alert-styles.d.ts +32 -0
  14. package/dist/components/alert/alert-styles.d.ts.map +1 -0
  15. package/dist/components/alert/alert-styles.js +20 -0
  16. package/dist/components/alert/index.d.ts +3 -0
  17. package/dist/components/alert/index.d.ts.map +1 -0
  18. package/dist/components/alert/index.js +3 -0
  19. package/dist/components/autocomplete/Autocomplete.d.ts +6 -6
  20. package/dist/components/autocomplete/Autocomplete.d.ts.map +1 -1
  21. package/dist/components/autocomplete/Autocomplete.js +114 -136
  22. package/dist/components/autocomplete/autocomplete-config.d.ts +1 -1
  23. package/dist/components/autocomplete/autocomplete-config.d.ts.map +1 -1
  24. package/dist/components/autocomplete/autocomplete-config.js +7 -12
  25. package/dist/components/avatar/Avatar.d.ts +87 -0
  26. package/dist/components/avatar/Avatar.d.ts.map +1 -0
  27. package/dist/components/avatar/Avatar.js +43 -0
  28. package/dist/components/avatar/avatar-config.d.ts +48 -0
  29. package/dist/components/avatar/avatar-config.d.ts.map +1 -0
  30. package/dist/components/avatar/avatar-config.js +14 -0
  31. package/dist/components/avatar/avatar-styles.d.ts +21 -0
  32. package/dist/components/avatar/avatar-styles.d.ts.map +1 -0
  33. package/dist/components/avatar/avatar-styles.js +13 -0
  34. package/dist/components/avatar/avatar.helpers.d.ts +19 -0
  35. package/dist/components/avatar/avatar.helpers.d.ts.map +1 -0
  36. package/dist/components/avatar/avatar.helpers.js +11 -0
  37. package/dist/components/avatar/index.d.ts +3 -0
  38. package/dist/components/avatar/index.d.ts.map +1 -0
  39. package/dist/components/avatar/index.js +4 -0
  40. package/dist/components/badge/Badge.d.ts +69 -0
  41. package/dist/components/badge/Badge.d.ts.map +1 -0
  42. package/dist/components/badge/Badge.js +39 -0
  43. package/dist/components/badge/badge-config.d.ts +63 -0
  44. package/dist/components/badge/badge-config.d.ts.map +1 -0
  45. package/dist/components/badge/badge-config.js +15 -0
  46. package/dist/components/badge/badge-styles.d.ts +27 -0
  47. package/dist/components/badge/badge-styles.d.ts.map +1 -0
  48. package/dist/components/badge/badge-styles.js +25 -0
  49. package/dist/components/badge/index.d.ts +3 -0
  50. package/dist/components/badge/index.d.ts.map +1 -0
  51. package/dist/components/badge/index.js +3 -0
  52. package/dist/components/breadcrumb/Breadcrumb.d.ts +106 -0
  53. package/dist/components/breadcrumb/Breadcrumb.d.ts.map +1 -0
  54. package/dist/components/breadcrumb/Breadcrumb.js +52 -0
  55. package/dist/components/breadcrumb/breadcrumb-config.d.ts +41 -0
  56. package/dist/components/breadcrumb/breadcrumb-config.d.ts.map +1 -0
  57. package/dist/components/breadcrumb/breadcrumb-config.js +10 -0
  58. package/dist/components/breadcrumb/breadcrumb-styles.d.ts +28 -0
  59. package/dist/components/breadcrumb/breadcrumb-styles.d.ts.map +1 -0
  60. package/dist/components/breadcrumb/breadcrumb-styles.js +17 -0
  61. package/dist/components/breadcrumb/index.d.ts +3 -0
  62. package/dist/components/breadcrumb/index.d.ts.map +1 -0
  63. package/dist/components/breadcrumb/index.js +3 -0
  64. package/dist/components/button/Button.d.ts +29 -1
  65. package/dist/components/button/Button.d.ts.map +1 -1
  66. package/dist/components/button/Button.js +50 -108
  67. package/dist/components/button/button-config.js +16 -17
  68. package/dist/components/button/button-styles.js +10 -11
  69. package/dist/components/{date-picker/DatePicker.d.ts → calendar/Calendar.d.ts} +22 -22
  70. package/dist/components/calendar/Calendar.d.ts.map +1 -0
  71. package/dist/components/calendar/Calendar.js +123 -0
  72. package/dist/components/{date-picker/Calendar.d.ts → calendar/DateGrid.d.ts} +7 -7
  73. package/dist/components/calendar/DateGrid.d.ts.map +1 -0
  74. package/dist/components/calendar/DateGrid.js +194 -0
  75. package/dist/components/calendar/TimeSpinner.d.ts.map +1 -0
  76. package/dist/components/calendar/TimeSpinner.js +60 -0
  77. package/dist/components/{date-picker/date-picker-config.d.ts → calendar/calendar-config.d.ts} +17 -17
  78. package/dist/components/calendar/calendar-config.d.ts.map +1 -0
  79. package/dist/components/calendar/calendar-config.js +15 -0
  80. package/dist/components/{date-picker/date-picker-styles.d.ts → calendar/calendar-styles.d.ts} +1 -1
  81. package/dist/components/calendar/calendar-styles.d.ts.map +1 -0
  82. package/dist/components/calendar/calendar-styles.js +46 -0
  83. package/dist/components/{date-picker/date-picker.helpers.d.ts → calendar/calendar.helpers.d.ts} +9 -9
  84. package/dist/components/calendar/calendar.helpers.d.ts.map +1 -0
  85. package/dist/components/calendar/calendar.helpers.js +82 -0
  86. package/dist/components/calendar/index.d.ts +3 -0
  87. package/dist/components/calendar/index.d.ts.map +1 -0
  88. package/dist/components/calendar/index.js +6 -0
  89. package/dist/components/card/Card.d.ts +36 -16
  90. package/dist/components/card/Card.d.ts.map +1 -1
  91. package/dist/components/card/Card.js +115 -205
  92. package/dist/components/card/card-config.js +24 -21
  93. package/dist/components/card/card-styles.js +19 -22
  94. package/dist/components/carousel/Carousel.d.ts.map +1 -1
  95. package/dist/components/carousel/Carousel.js +125 -248
  96. package/dist/components/carousel/carousel-config.js +24 -25
  97. package/dist/components/carousel/carousel-styles.d.ts +1 -20
  98. package/dist/components/carousel/carousel-styles.d.ts.map +1 -1
  99. package/dist/components/carousel/carousel-styles.js +14 -16
  100. package/dist/components/chip/Chip.js +84 -191
  101. package/dist/components/chip/chip-config.js +13 -14
  102. package/dist/components/chip/chip-styles.js +22 -26
  103. package/dist/components/drawer/Drawer.d.ts +33 -11
  104. package/dist/components/drawer/Drawer.d.ts.map +1 -1
  105. package/dist/components/drawer/Drawer.js +70 -131
  106. package/dist/components/drawer/drawer-config.js +14 -15
  107. package/dist/components/drawer/drawer-styles.js +38 -42
  108. package/dist/components/{select/Select.d.ts → dropmenu/Dropmenu.d.ts} +22 -21
  109. package/dist/components/dropmenu/Dropmenu.d.ts.map +1 -0
  110. package/dist/components/dropmenu/Dropmenu.js +102 -0
  111. package/dist/components/{select/select-config.d.ts → dropmenu/dropmenu-config.d.ts} +8 -8
  112. package/dist/components/dropmenu/dropmenu-config.d.ts.map +1 -0
  113. package/dist/components/dropmenu/dropmenu-config.js +9 -0
  114. package/dist/components/{select/select-styles.d.ts → dropmenu/dropmenu-styles.d.ts} +1 -1
  115. package/dist/components/dropmenu/dropmenu-styles.d.ts.map +1 -0
  116. package/dist/components/dropmenu/dropmenu-styles.js +6 -0
  117. package/dist/components/dropmenu/index.d.ts +3 -0
  118. package/dist/components/dropmenu/index.d.ts.map +1 -0
  119. package/dist/components/dropmenu/index.js +3 -0
  120. package/dist/components/field/FieldShell.d.ts +13 -1
  121. package/dist/components/field/FieldShell.d.ts.map +1 -1
  122. package/dist/components/field/FieldShell.js +50 -56
  123. package/dist/components/field/field-config.js +17 -18
  124. package/dist/components/field/field-styles.js +8 -8
  125. package/dist/components/form/Form.d.ts +109 -0
  126. package/dist/components/form/Form.d.ts.map +1 -0
  127. package/dist/components/form/Form.js +42 -0
  128. package/dist/components/form/form-config.d.ts +57 -0
  129. package/dist/components/form/form-config.d.ts.map +1 -0
  130. package/dist/components/form/form-config.js +12 -0
  131. package/dist/components/form/form-styles.d.ts +27 -0
  132. package/dist/components/form/form-styles.d.ts.map +1 -0
  133. package/dist/components/form/form-styles.js +5 -0
  134. package/dist/components/form/index.d.ts +3 -0
  135. package/dist/components/form/index.d.ts.map +1 -0
  136. package/dist/components/form/index.js +3 -0
  137. package/dist/components/image/Image.d.ts +8 -9
  138. package/dist/components/image/Image.d.ts.map +1 -1
  139. package/dist/components/image/Image.js +65 -132
  140. package/dist/components/image/image-config.js +17 -18
  141. package/dist/components/image/image-styles.js +14 -15
  142. package/dist/components/input/Input.js +65 -150
  143. package/dist/components/input/PasswordInput.js +30 -49
  144. package/dist/components/input/input-config.js +7 -7
  145. package/dist/components/input/input-styles.js +9 -10
  146. package/dist/components/keyboard/KeyboardContext.js +10 -11
  147. package/dist/components/keyboard/KeyboardProvider.js +100 -181
  148. package/dist/components/keyboard/OnScreenKeyboard.d.ts.map +1 -1
  149. package/dist/components/keyboard/OnScreenKeyboard.js +159 -166
  150. package/dist/components/keyboard/keyboard-config.js +59 -57
  151. package/dist/components/keyboard/keyboard-styles.js +10 -11
  152. package/dist/components/keyboard/use-keyboard-field.js +29 -21
  153. package/dist/components/link/Link.d.ts +12 -10
  154. package/dist/components/link/Link.d.ts.map +1 -1
  155. package/dist/components/link/Link.js +47 -137
  156. package/dist/components/link/link-config.js +14 -15
  157. package/dist/components/link/link-styles.js +25 -29
  158. package/dist/components/marquee/Marquee.d.ts.map +1 -1
  159. package/dist/components/marquee/Marquee.js +58 -144
  160. package/dist/components/marquee/marquee-config.js +18 -19
  161. package/dist/components/marquee/marquee-styles.js +13 -15
  162. package/dist/components/{select-menu/SelectMenu.d.ts → menu/Menu.d.ts} +52 -19
  163. package/dist/components/menu/Menu.d.ts.map +1 -0
  164. package/dist/components/menu/Menu.js +161 -0
  165. package/dist/components/menu/index.d.ts +5 -0
  166. package/dist/components/menu/index.d.ts.map +1 -0
  167. package/dist/components/menu/index.js +4 -0
  168. package/dist/components/{select-menu/select-menu-config.d.ts → menu/menu-config.d.ts} +5 -5
  169. package/dist/components/menu/menu-config.d.ts.map +1 -0
  170. package/dist/components/menu/menu-config.js +14 -0
  171. package/dist/components/menu/menu-navigation.d.ts +38 -0
  172. package/dist/components/menu/menu-navigation.d.ts.map +1 -0
  173. package/dist/components/menu/menu-navigation.js +20 -0
  174. package/dist/components/{select-menu/use-select-floating.d.ts → menu/use-menu-floating.d.ts} +20 -10
  175. package/dist/components/menu/use-menu-floating.d.ts.map +1 -0
  176. package/dist/components/menu/use-menu-floating.js +43 -0
  177. package/dist/components/modal/Modal.d.ts +32 -11
  178. package/dist/components/modal/Modal.d.ts.map +1 -1
  179. package/dist/components/modal/Modal.js +74 -137
  180. package/dist/components/modal/modal-config.js +15 -16
  181. package/dist/components/modal/modal-styles.js +13 -14
  182. package/dist/components/multi-select/MultiSelect.d.ts +29 -12
  183. package/dist/components/multi-select/MultiSelect.d.ts.map +1 -1
  184. package/dist/components/multi-select/MultiSelect.js +162 -283
  185. package/dist/components/multi-select/multi-select-config.d.ts +24 -19
  186. package/dist/components/multi-select/multi-select-config.d.ts.map +1 -1
  187. package/dist/components/multi-select/multi-select-config.js +18 -21
  188. package/dist/components/multi-select/multi-select-styles.js +17 -20
  189. package/dist/components/pagination/Pagination.d.ts +91 -0
  190. package/dist/components/pagination/Pagination.d.ts.map +1 -0
  191. package/dist/components/pagination/Pagination.js +66 -0
  192. package/dist/components/pagination/index.d.ts +3 -0
  193. package/dist/components/pagination/index.d.ts.map +1 -0
  194. package/dist/components/pagination/index.js +4 -0
  195. package/dist/components/pagination/pagination-config.d.ts +66 -0
  196. package/dist/components/pagination/pagination-config.d.ts.map +1 -0
  197. package/dist/components/pagination/pagination-config.js +19 -0
  198. package/dist/components/pagination/pagination-styles.d.ts +19 -0
  199. package/dist/components/pagination/pagination-styles.d.ts.map +1 -0
  200. package/dist/components/pagination/pagination-styles.js +5 -0
  201. package/dist/components/pagination/pagination.helpers.d.ts +26 -0
  202. package/dist/components/pagination/pagination.helpers.d.ts.map +1 -0
  203. package/dist/components/pagination/pagination.helpers.js +12 -0
  204. package/dist/components/radio/Radio.d.ts +53 -107
  205. package/dist/components/radio/Radio.d.ts.map +1 -1
  206. package/dist/components/radio/Radio.js +56 -79
  207. package/dist/components/radio/RadioGroup.d.ts +107 -53
  208. package/dist/components/radio/RadioGroup.d.ts.map +1 -1
  209. package/dist/components/radio/RadioGroup.js +51 -155
  210. package/dist/components/radio/index.d.ts +0 -1
  211. package/dist/components/radio/index.d.ts.map +1 -1
  212. package/dist/components/radio/radio-config.js +15 -16
  213. package/dist/components/radio/radio-context.js +6 -6
  214. package/dist/components/radio/radio-styles.js +55 -60
  215. package/dist/components/resizable-screen/ResizableScreen.d.ts +4 -4
  216. package/dist/components/resizable-screen/ResizableScreen.js +87 -177
  217. package/dist/components/resizable-screen/resizable-screen-config.js +16 -17
  218. package/dist/components/scrollbar/index.js +1 -0
  219. package/dist/components/scrollbar/scrollbar-config.js +13 -0
  220. package/dist/components/sidebar/Sidebar.d.ts +43 -22
  221. package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
  222. package/dist/components/sidebar/Sidebar.js +148 -331
  223. package/dist/components/sidebar/sidebar-config.d.ts +98 -31
  224. package/dist/components/sidebar/sidebar-config.d.ts.map +1 -1
  225. package/dist/components/sidebar/sidebar-config.js +47 -33
  226. package/dist/components/sidebar/sidebar-styles.js +27 -32
  227. package/dist/components/skeleton/Skeleton.d.ts +65 -0
  228. package/dist/components/skeleton/Skeleton.d.ts.map +1 -0
  229. package/dist/components/skeleton/Skeleton.js +29 -0
  230. package/dist/components/skeleton/index.d.ts +3 -0
  231. package/dist/components/skeleton/index.d.ts.map +1 -0
  232. package/dist/components/skeleton/index.js +3 -0
  233. package/dist/components/skeleton/skeleton-config.d.ts +40 -0
  234. package/dist/components/skeleton/skeleton-config.d.ts.map +1 -0
  235. package/dist/components/skeleton/skeleton-config.js +13 -0
  236. package/dist/components/skeleton/skeleton-styles.d.ts +19 -0
  237. package/dist/components/skeleton/skeleton-styles.d.ts.map +1 -0
  238. package/dist/components/skeleton/skeleton-styles.js +5 -0
  239. package/dist/components/spinner/spinner-config.js +12 -13
  240. package/dist/components/spinner/spinner-styles.js +13 -14
  241. package/dist/components/spinner/spinner.js +39 -82
  242. package/dist/components/switch/Switch.d.ts.map +1 -1
  243. package/dist/components/switch/Switch.js +64 -154
  244. package/dist/components/switch/switch-config.js +11 -12
  245. package/dist/components/switch/switch-styles.js +14 -16
  246. package/dist/components/table/Table.js +64 -186
  247. package/dist/components/table/table-config.js +17 -18
  248. package/dist/components/table/table-styles.js +48 -52
  249. package/dist/components/tabs/Tabs.d.ts +16 -8
  250. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  251. package/dist/components/tabs/Tabs.js +93 -208
  252. package/dist/components/tabs/tabs-config.d.ts +42 -20
  253. package/dist/components/tabs/tabs-config.d.ts.map +1 -1
  254. package/dist/components/tabs/tabs-config.js +26 -18
  255. package/dist/components/tabs/tabs-styles.js +15 -17
  256. package/dist/components/textarea/Textarea.d.ts +10 -10
  257. package/dist/components/textarea/Textarea.js +52 -138
  258. package/dist/components/textarea/textarea-config.d.ts +2 -2
  259. package/dist/components/textarea/textarea-config.js +10 -11
  260. package/dist/components/textarea/textarea-styles.js +9 -10
  261. package/dist/components/toast/ToastContext.js +22 -26
  262. package/dist/components/toast/ToastItem.d.ts.map +1 -1
  263. package/dist/components/toast/ToastItem.js +83 -144
  264. package/dist/components/toast/ToastProvider.d.ts.map +1 -1
  265. package/dist/components/toast/ToastProvider.js +128 -190
  266. package/dist/components/toast/toast-config.js +23 -24
  267. package/dist/components/toast/toast-styles.js +50 -55
  268. package/dist/components/toast/use-pausable-timeout.js +17 -13
  269. package/dist/components/tooltip/Tooltip.d.ts +5 -0
  270. package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
  271. package/dist/components/tooltip/Tooltip.js +68 -158
  272. package/dist/components/tooltip/tooltip-config.d.ts +25 -0
  273. package/dist/components/tooltip/tooltip-config.d.ts.map +1 -1
  274. package/dist/components/tooltip/tooltip-config.js +26 -22
  275. package/dist/components/tooltip/tooltip-styles.js +15 -17
  276. package/dist/components/typography/Typography.d.ts +60 -0
  277. package/dist/components/typography/Typography.d.ts.map +1 -0
  278. package/dist/components/typography/Typography.js +28 -0
  279. package/dist/components/typography/index.d.ts +3 -0
  280. package/dist/components/typography/index.d.ts.map +1 -0
  281. package/dist/components/typography/index.js +3 -0
  282. package/dist/components/typography/typography-config.d.ts +54 -0
  283. package/dist/components/typography/typography-config.d.ts.map +1 -0
  284. package/dist/components/typography/typography-config.js +12 -0
  285. package/dist/components/typography/typography-styles.d.ts +21 -0
  286. package/dist/components/typography/typography-styles.d.ts.map +1 -0
  287. package/dist/components/typography/typography-styles.js +19 -0
  288. package/dist/config/default-config.d.ts.map +1 -1
  289. package/dist/config/default-config.js +11 -34
  290. package/dist/config/index.js +1 -0
  291. package/dist/config/resolve-color.js +23 -23
  292. package/dist/config/resolve-config.d.ts.map +1 -1
  293. package/dist/config/resolve-config.js +14 -12
  294. package/dist/config/validate-config.d.ts +34 -0
  295. package/dist/config/validate-config.d.ts.map +1 -0
  296. package/dist/config/validate-config.js +190 -0
  297. package/dist/icons/ArrowLeftIcon.js +16 -19
  298. package/dist/icons/CalendarIcon.js +43 -24
  299. package/dist/icons/CheckIcon.js +16 -19
  300. package/dist/icons/ChevronDownIcon.js +15 -21
  301. package/dist/icons/ChevronLeftIcon.js +16 -19
  302. package/dist/icons/ChevronRightIcon.js +16 -19
  303. package/dist/icons/ChevronUpIcon.js +16 -19
  304. package/dist/icons/ClearIcon.js +26 -22
  305. package/dist/icons/ClockIcon.js +20 -22
  306. package/dist/icons/CloseIcon.js +26 -22
  307. package/dist/icons/ErrorIcon.js +16 -19
  308. package/dist/icons/ExternalLinkIcon.js +25 -23
  309. package/dist/icons/EyeIcon.js +20 -22
  310. package/dist/icons/EyeOffIcon.js +21 -22
  311. package/dist/icons/InfoIcon.js +16 -19
  312. package/dist/icons/SearchIcon.js +25 -22
  313. package/dist/icons/WarningIcon.js +16 -19
  314. package/dist/index.d.ts +15 -17
  315. package/dist/index.d.ts.map +1 -1
  316. package/dist/index.js +79 -163
  317. package/dist/libs/context.js +10 -13
  318. package/dist/libs/index.js +4 -0
  319. package/dist/libs/registry.js +10 -12
  320. package/dist/libs/use-body-scroll-lock.d.ts +21 -0
  321. package/dist/libs/use-body-scroll-lock.d.ts.map +1 -0
  322. package/dist/libs/use-body-scroll-lock.js +27 -0
  323. package/dist/libs/use-dialog-overlay.d.ts +21 -0
  324. package/dist/libs/use-dialog-overlay.d.ts.map +1 -0
  325. package/dist/libs/use-dialog-overlay.js +21 -0
  326. package/dist/libs/use-floating-z-index.d.ts +32 -0
  327. package/dist/libs/use-floating-z-index.d.ts.map +1 -0
  328. package/dist/libs/use-floating-z-index.js +16 -0
  329. package/dist/libs/use-isomorphic-layout-effect.js +5 -5
  330. package/dist/libs/use-prefers-reduced-motion.d.ts +23 -0
  331. package/dist/libs/use-prefers-reduced-motion.d.ts.map +1 -0
  332. package/dist/libs/use-prefers-reduced-motion.js +19 -0
  333. package/dist/scripts/AsheeThemeScript.js +70 -44
  334. package/dist/shared/index.d.ts +1 -0
  335. package/dist/shared/index.d.ts.map +1 -1
  336. package/dist/shared/radius.d.ts.map +1 -1
  337. package/dist/shared/radius.js +12 -13
  338. package/dist/shared/typography.d.ts +81 -0
  339. package/dist/shared/typography.d.ts.map +1 -0
  340. package/dist/shared/typography.js +137 -0
  341. package/dist/shared/variant.js +46 -134
  342. package/dist/theme/color.js +28 -28
  343. package/dist/theme/controller.d.ts.map +1 -1
  344. package/dist/theme/controller.js +65 -178
  345. package/dist/theme/useTheme.js +13 -44
  346. package/dist/utils/cn.js +7 -7
  347. package/dist/utils/index.d.ts +1 -0
  348. package/dist/utils/index.d.ts.map +1 -1
  349. package/dist/utils/index.js +1 -0
  350. package/dist/utils/merge-object.js +13 -14
  351. package/dist/utils/resolve-token.js +11 -14
  352. package/dist/utils/stacking.d.ts +76 -0
  353. package/dist/utils/stacking.d.ts.map +1 -0
  354. package/dist/utils/stacking.js +34 -0
  355. package/package.json +22 -14
  356. package/dist/components/date-picker/Calendar.d.ts.map +0 -1
  357. package/dist/components/date-picker/Calendar.js +0 -224
  358. package/dist/components/date-picker/DatePicker.d.ts.map +0 -1
  359. package/dist/components/date-picker/DatePicker.js +0 -221
  360. package/dist/components/date-picker/TimeSpinner.d.ts.map +0 -1
  361. package/dist/components/date-picker/TimeSpinner.js +0 -84
  362. package/dist/components/date-picker/date-picker-config.d.ts.map +0 -1
  363. package/dist/components/date-picker/date-picker-config.js +0 -16
  364. package/dist/components/date-picker/date-picker-styles.d.ts.map +0 -1
  365. package/dist/components/date-picker/date-picker-styles.js +0 -47
  366. package/dist/components/date-picker/date-picker.helpers.d.ts.map +0 -1
  367. package/dist/components/date-picker/date-picker.helpers.js +0 -110
  368. package/dist/components/date-picker/index.d.ts +0 -3
  369. package/dist/components/date-picker/index.d.ts.map +0 -1
  370. package/dist/components/date-picker/index.js +0 -6
  371. package/dist/components/select/Select.d.ts.map +0 -1
  372. package/dist/components/select/Select.js +0 -196
  373. package/dist/components/select/index.d.ts +0 -3
  374. package/dist/components/select/index.d.ts.map +0 -1
  375. package/dist/components/select/index.js +0 -3
  376. package/dist/components/select/select-config.d.ts.map +0 -1
  377. package/dist/components/select/select-config.js +0 -10
  378. package/dist/components/select/select-styles.d.ts.map +0 -1
  379. package/dist/components/select/select-styles.js +0 -6
  380. package/dist/components/select-menu/SelectMenu.d.ts.map +0 -1
  381. package/dist/components/select-menu/SelectMenu.js +0 -198
  382. package/dist/components/select-menu/index.d.ts +0 -4
  383. package/dist/components/select-menu/index.d.ts.map +0 -1
  384. package/dist/components/select-menu/index.js +0 -3
  385. package/dist/components/select-menu/select-menu-config.d.ts.map +0 -1
  386. package/dist/components/select-menu/select-menu-config.js +0 -14
  387. package/dist/components/select-menu/use-select-floating.d.ts.map +0 -1
  388. package/dist/components/select-menu/use-select-floating.js +0 -50
  389. /package/dist/components/{date-picker → calendar}/TimeSpinner.d.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  import { FloatingContext } from '@floating-ui/react';
2
2
  import { ReactNode } from 'react';
3
- import { MenuConfig, SelectMenuOption } from './select-menu-config';
3
+ import { MenuConfig, MenuOption } from './menu-config';
4
4
  /**
5
5
  * Menu props that extend MenuConfig with className.
6
6
  * Used for menu configuration overrides.
@@ -12,9 +12,9 @@ export type MenuProps = MenuConfig & {
12
12
  className?: string;
13
13
  };
14
14
  /**
15
- * Props for the SelectMenu component.
15
+ * Props for the Menu component.
16
16
  */
17
- export interface SelectMenuProps {
17
+ export interface MenuComponentProps {
18
18
  /**
19
19
  * Whether the menu is open.
20
20
  */
@@ -49,7 +49,7 @@ export interface SelectMenuProps {
49
49
  /**
50
50
  * Available options to display in the menu.
51
51
  */
52
- options: SelectMenuOption[];
52
+ options: MenuOption[];
53
53
  /**
54
54
  * Currently selected values.
55
55
  * Used to highlight selected options with a checkmark.
@@ -59,7 +59,7 @@ export interface SelectMenuProps {
59
59
  * Callback fired when an option is selected.
60
60
  * Receives the selected option object.
61
61
  */
62
- onSelectMenuOption: (option: SelectMenuOption) => void;
62
+ onOptionSelect: (option: MenuOption) => void;
63
63
  /**
64
64
  * Whether search input is shown in the menu.
65
65
  * @default true
@@ -72,7 +72,7 @@ export interface SelectMenuProps {
72
72
  searchPlaceholder?: string;
73
73
  /**
74
74
  * Name attribute for the search input.
75
- * @default "select-menu-search"
75
+ * @default "menu-search"
76
76
  */
77
77
  searchInputName?: string;
78
78
  /**
@@ -100,7 +100,7 @@ export interface SelectMenuProps {
100
100
  * Custom render function for each option.
101
101
  * Receives the option and a boolean indicating if it's selected.
102
102
  */
103
- renderOption?: (option: SelectMenuOption, isSelected: boolean) => ReactNode;
103
+ renderOption?: (option: MenuOption, isSelected: boolean) => ReactNode;
104
104
  /**
105
105
  * Initial focus target for the FloatingFocusManager.
106
106
  */
@@ -110,13 +110,43 @@ export interface SelectMenuProps {
110
110
  * @default false
111
111
  */
112
112
  returnFocus?: boolean;
113
+ /**
114
+ * Index of the option that keyboard navigation treats as current.
115
+ * When omitted, the menu tracks the current option itself.
116
+ */
117
+ activeIndex?: number | null;
118
+ /**
119
+ * Called when the current option changes through keyboard navigation.
120
+ * A consumer that keeps focus in its own trigger uses this to mirror the
121
+ * current option in `aria-activedescendant`.
122
+ */
123
+ onActiveIndexChange?: (index: number | null) => void;
124
+ /**
125
+ * Whether the listbox accepts more than one selection.
126
+ * Exposed as `aria-multiselectable` on the option list.
127
+ *
128
+ * @default false
129
+ */
130
+ isMultiSelectable?: boolean;
113
131
  }
132
+ /**
133
+ * Identifier of one option inside a menu listbox.
134
+ *
135
+ * The listbox id comes from the floating element, so the identifier a consumer
136
+ * publishes through `aria-activedescendant` and the identifier the option
137
+ * carries are built the same way from the same id.
138
+ *
139
+ * @param listboxId - Id of the option list container.
140
+ * @param index - Position of the option in the rendered list.
141
+ * @returns The option id, or `undefined` when the list has no id yet.
142
+ */
143
+ export declare function menuOptionId(listboxId: string | undefined, index: number): string | undefined;
114
144
  /**
115
145
  * A reusable dropdown menu for selecting options from a list.
116
146
  *
117
- * SelectMenu renders a floating dropdown with search, option list, and
147
+ * Menu renders a floating dropdown with search, option list, and
118
148
  * selection state management. It is designed to be used as the dropdown
119
- * implementation for Select, MultiSelect, and Autocomplete components.
149
+ * implementation for Dropmenu, MultiSelect, and Autocomplete components.
120
150
  *
121
151
  * The component uses Floating UI for positioning and accessibility, and
122
152
  * supports custom option rendering, search filtering, and configurable
@@ -128,7 +158,7 @@ export interface SelectMenuProps {
128
158
  * the `menuProps.portal` prop if the menu needs to stay within a specific
129
159
  * parent container. This is typically controlled by the parent component.
130
160
  *
131
- * @param props - SelectMenu configuration options.
161
+ * @param props - Menu configuration options.
132
162
  * @param props.isOpen - Whether the menu is open.
133
163
  * @param props.context - Floating UI context.
134
164
  * @param props.getFloatingProps - Props getter for the floating element.
@@ -136,10 +166,10 @@ export interface SelectMenuProps {
136
166
  * @param props.isPositioned - Whether the floating element has been positioned by Floating UI. Defaults to true.
137
167
  * @param props.options - Available options to display.
138
168
  * @param props.selectedValues - Currently selected values.
139
- * @param props.onSelectMenuOption - Callback fired when an option is selected.
169
+ * @param props.onOptionSelect - Callback fired when an option is selected.
140
170
  * @param props.isSearch - Whether search is enabled. Defaults to true.
141
171
  * @param props.searchPlaceholder - Search placeholder. Defaults to "Search...".
142
- * @param props.searchInputName - Name attribute for the search input. Defaults to "select-menu-search".
172
+ * @param props.searchInputName - Name attribute for the search input. Defaults to "menu-search".
143
173
  * @param props.searchQuery - Controlled search query value.
144
174
  * @param props.onSearchChange - Callback fired when the search query changes.
145
175
  * @param props.belowList - Content below the options list.
@@ -148,33 +178,36 @@ export interface SelectMenuProps {
148
178
  * @param props.renderOption - Custom render function for options.
149
179
  * @param props.initialFocus - Initial focus target for the FloatingFocusManager.
150
180
  * @param props.returnFocus - Whether to return focus to the trigger after closing. Defaults to false.
181
+ * @param props.activeIndex - Index the menu treats as the current option. Defaults to the menu tracking it itself.
182
+ * @param props.onActiveIndexChange - Called when the current option changes through keyboard navigation.
183
+ * @param props.isMultiSelectable - Whether the option list accepts more than one selection. Defaults to false.
151
184
  *
152
185
  * @example
153
186
  * ```tsx
154
187
  * const { refs, context } = useFloating(...);
155
188
  *
156
- * <SelectMenu
189
+ * <Menu
157
190
  * isOpen={isOpen}
158
191
  * context={context}
159
192
  * getFloatingProps={getFloatingProps}
160
193
  * setFloatingRef={refs.setFloating}
161
194
  * options={options}
162
195
  * selectedValues={selectedValues}
163
- * onSelectMenuOption={handleSelect}
196
+ * onOptionSelect={handleSelect}
164
197
  * />
165
198
  * ```
166
199
  *
167
200
  * @example
168
201
  * ```tsx
169
202
  * // With custom menu configuration
170
- * <SelectMenu
203
+ * <Menu
171
204
  * isOpen={isOpen}
172
205
  * context={context}
173
206
  * getFloatingProps={getFloatingProps}
174
207
  * setFloatingRef={refs.setFloating}
175
208
  * options={options}
176
209
  * selectedValues={selectedValues}
177
- * onSelectMenuOption={handleSelect}
210
+ * onOptionSelect={handleSelect}
178
211
  * menuProps={{
179
212
  * className: "custom-dropdown",
180
213
  * portal: false,
@@ -187,8 +220,8 @@ export interface SelectMenuProps {
187
220
  * @see MenuConfig - The configuration type for menu items.
188
221
  * @see Button - The button component used for menu items.
189
222
  */
190
- export declare const SelectMenu: {
191
- ({ isOpen, floatingStyles, context, getFloatingProps, setFloatingRef, isPositioned, options, selectedValues, onSelectMenuOption, isSearch, searchPlaceholder, searchInputName, searchQuery, onSearchChange, belowList, menuConfig, menuProps, renderOption, initialFocus, returnFocus, }: SelectMenuProps): import("react").JSX.Element | null;
223
+ export declare const Menu: {
224
+ ({ isOpen, floatingStyles, context, getFloatingProps, setFloatingRef, isPositioned, options, selectedValues, onOptionSelect, isSearch, searchPlaceholder, searchInputName, searchQuery, onSearchChange, belowList, menuConfig, menuProps, renderOption, initialFocus, returnFocus, activeIndex: activeIndexProp, onActiveIndexChange, isMultiSelectable, }: MenuComponentProps): import("react").JSX.Element | null;
192
225
  displayName: string;
193
226
  };
194
- //# sourceMappingURL=SelectMenu.d.ts.map
227
+ //# sourceMappingURL=Menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../src/components/menu/Menu.tsx"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAKL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAUf,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AAOvB;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG;IACnC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IAEpC;;OAEG;IACH,OAAO,EAAE,eAAe,CAAC;IAEzB;;OAEG;IACH,gBAAgB,EAAE,CAChB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7B;;OAEG;IACH,cAAc,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAEnD;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,UAAU,EAAE,CAAC;IAEtB;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAErC;;;OAGG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAE7C;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC;IAEtE;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAErD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAErD;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAwBD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,SAAS,CAEpB;AA0ED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AACH,eAAO,MAAM,IAAI;gWAwBd,kBAAkB;;CAyXpB,CAAC"}
@@ -0,0 +1,161 @@
1
+ "use client";
2
+ "use client";
3
+ import { cn as e } from "../../utils/cn.js";
4
+ import { useAsheeConfig as t } from "../../libs/context.js";
5
+ import { resolveCascade as n, resolveRadiusKey as r } from "../../utils/resolve-token.js";
6
+ import { CheckIcon as i } from "../../icons/CheckIcon.js";
7
+ import { Button as a } from "../button/Button.js";
8
+ import { Input as o } from "../input/Input.js";
9
+ import { SearchIcon as s } from "../../icons/SearchIcon.js";
10
+ import { useBodyScrollLock as c } from "../../libs/use-body-scroll-lock.js";
11
+ import { FALLBACK_MENU_CONFIG as l } from "./menu-config.js";
12
+ import { edgeOptionIndex as u, matchingOptionIndex as d, nextOptionIndex as f } from "./menu-navigation.js";
13
+ import { memo as p, useCallback as m, useEffect as h, useMemo as g, useRef as _, useState as v } from "react";
14
+ import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
15
+ import { FloatingFocusManager as S, FloatingPortal as C } from "@floating-ui/react";
16
+ //#region src/components/menu/Menu.tsx
17
+ function w(e, t) {
18
+ return e ? `${e}-option-${t}` : void 0;
19
+ }
20
+ var ee = p(function({ filteredOptions: e, selectedValues: t, onOptionSelect: n, renderOption: r, itemVariant: o, itemColor: s, activeItemVariant: c, activeItemColor: l, radius: u, size: d, optionRefs: f, listboxId: p, onOptionFocus: m }) {
21
+ let h = (e) => t.includes(e);
22
+ return e.length === 0 ? /* @__PURE__ */ b("div", {
23
+ role: "status",
24
+ className: "px-3 py-4 text-xs text-foreground/70 text-center",
25
+ children: "No options found"
26
+ }) : /* @__PURE__ */ b(y, { children: e.map((e, t) => {
27
+ let g = h(e.value);
28
+ return r ? r(e, g) : /* @__PURE__ */ x(a, {
29
+ ref: (e) => {
30
+ f.current[t] = e;
31
+ },
32
+ id: w(p, t),
33
+ role: "option",
34
+ "aria-selected": g,
35
+ "aria-disabled": e.disabled ? !0 : void 0,
36
+ onFocus: () => m(t),
37
+ variant: g ? c : o,
38
+ color: g ? l : s,
39
+ radius: u,
40
+ size: d,
41
+ isDisabled: e.disabled,
42
+ onClick: () => n(e),
43
+ className: "w-full justify-between font-normal text-left transition-colors truncate",
44
+ children: [/* @__PURE__ */ b("span", { children: e.label }), g && /* @__PURE__ */ b(i, { className: "w-3.5 h-3.5 shrink-0 ml-2" })]
45
+ }, String(e.value));
46
+ }) });
47
+ }), T = ({ isOpen: i, floatingStyles: a, context: p, getFloatingProps: y, setFloatingRef: w, isPositioned: T = !0, options: E = [], selectedValues: te = [], onOptionSelect: ne, isSearch: D = !0, searchPlaceholder: re = "Search...", searchInputName: ie = "menu-search", searchQuery: ae, onSearchChange: O, belowList: k, menuConfig: A, menuProps: j = {}, renderOption: oe, initialFocus: se, returnFocus: ce, activeIndex: M, onActiveIndexChange: N, isMultiSelectable: le = !1 }) => {
48
+ let P = t(), [ue, de] = v(""), F = ae ?? ue, fe = (e) => {
49
+ O ? O(e) : de(e);
50
+ }, pe = n(j?.lockScroll, A?.lockScroll, void 0, l.lockScroll), me = n(j?.portal, A?.portal, void 0, l.portal), he = n(j?.portalTarget, A?.portalTarget, void 0, typeof document < "u" ? document.body : null);
51
+ c(i && pe);
52
+ let I = g(() => !D || !F.trim() ? E : E.filter((e) => e.label.toLowerCase().includes(F.toLowerCase())), [
53
+ E,
54
+ D,
55
+ F
56
+ ]), L = _([]), R = _(null), z = _(""), B = _(null), [ge, _e] = v(null), ve = m((e) => {
57
+ R.current = e, w(e);
58
+ }, [w]), V = M === void 0 ? ge : M, H = V !== null && V >= 0 && V < I.length ? V : null, U = m((e) => {
59
+ _e(e), N?.(e);
60
+ }, [N]), ye = m((e) => {
61
+ U(e);
62
+ }, [U]), W = m((e) => {
63
+ let t = L.current[e];
64
+ t && R.current?.contains(document.activeElement) && t.focus();
65
+ }, []), G = m((e) => {
66
+ e !== null && (U(e), W(e));
67
+ }, [W, U]), K = m((e) => {
68
+ G(f(I, H, e));
69
+ }, [
70
+ G,
71
+ H,
72
+ I
73
+ ]), q = m((e) => {
74
+ G(u(I, e));
75
+ }, [G, I]), be = m((e) => {
76
+ z.current += e, G(d(I, z.current)), B.current && clearTimeout(B.current), B.current = setTimeout(() => {
77
+ z.current = "";
78
+ }, 500);
79
+ }, [G, I]);
80
+ h(() => () => {
81
+ B.current && clearTimeout(B.current);
82
+ }, []);
83
+ let xe = (e) => {
84
+ let t = e.target, n = t.tagName === "INPUT" || t.tagName === "TEXTAREA";
85
+ if (!(n && e.key !== "ArrowDown" && e.key !== "ArrowUp")) switch (e.key) {
86
+ case "ArrowDown":
87
+ e.preventDefault(), K(1);
88
+ return;
89
+ case "ArrowUp":
90
+ e.preventDefault(), K(-1);
91
+ return;
92
+ case "Home":
93
+ e.preventDefault(), q("first");
94
+ return;
95
+ case "End":
96
+ e.preventDefault(), q("last");
97
+ return;
98
+ default: !n && e.key.length === 1 && !e.metaKey && !e.ctrlKey && !e.altKey && be(e.key);
99
+ }
100
+ }, J = n(j?.itemVariant, A?.itemVariant, void 0, l.itemVariant), Y = n(j?.itemColor, A?.itemColor, P.defaultColor, l.itemColor), Se = n(j?.activeItemVariant, A?.activeItemVariant, P.defaultVariant, l.activeItemVariant), Ce = n(j?.activeItemColor, A?.activeItemColor, P.defaultColor, l.activeItemColor), X = r(j?.radius, A?.radius, P.defaultRadius, l.radius), Z = n(j?.size, A?.size, void 0, l.size), Q = y({ onKeyDown: xe }), we = typeof Q.id == "string" ? Q.id : void 0;
101
+ if (!i) return null;
102
+ let $ = /* @__PURE__ */ b(S, {
103
+ context: p,
104
+ modal: !1,
105
+ initialFocus: se,
106
+ returnFocus: ce,
107
+ children: /* @__PURE__ */ x("div", {
108
+ ref: ve,
109
+ style: { ...a },
110
+ className: e("w-full outline-none max-h-60 shadow-xl bg-background border border-border p-1 flex flex-col gap-0.5 overflow-y-auto scrollable-hidden", "transition-none", T ? "animate-in fade-in-0 zoom-in-95 slide-in-from-top-1 duration-150 ease-out" : "invisible opacity-0 pointer-events-none", j?.className),
111
+ role: "listbox",
112
+ "aria-multiselectable": le ? !0 : void 0,
113
+ ...Q,
114
+ children: [
115
+ D && /* @__PURE__ */ b("div", {
116
+ className: "w-full p-1 mb-1 sticky top-0 z-10 border-b border-border",
117
+ children: /* @__PURE__ */ b(o, {
118
+ name: ie,
119
+ type: "text",
120
+ variant: "bordered",
121
+ radius: X,
122
+ color: Y,
123
+ size: Z,
124
+ value: F,
125
+ onChange: (e) => fe(e.target.value),
126
+ startContent: /* @__PURE__ */ b(s, { className: "w-3.5 h-3.5 text-foreground/70" }),
127
+ placeholder: re,
128
+ autoFocus: !0,
129
+ className: "w-full pl-8 h-8 text-xs bg-secondary/30 border-none focus-visible:ring-0"
130
+ })
131
+ }),
132
+ /* @__PURE__ */ b(ee, {
133
+ filteredOptions: I,
134
+ selectedValues: te,
135
+ onOptionSelect: ne,
136
+ renderOption: oe,
137
+ itemVariant: J,
138
+ itemColor: Y,
139
+ activeItemVariant: Se,
140
+ activeItemColor: Ce,
141
+ radius: X,
142
+ size: Z,
143
+ optionRefs: L,
144
+ listboxId: we,
145
+ onOptionFocus: ye
146
+ }),
147
+ k && /* @__PURE__ */ b("div", {
148
+ className: "border-t border-border pt-1 mt-1",
149
+ children: k
150
+ })
151
+ ]
152
+ })
153
+ });
154
+ return me ? /* @__PURE__ */ b(C, {
155
+ root: he,
156
+ children: $
157
+ }) : $;
158
+ };
159
+ T.displayName = "Menu";
160
+ //#endregion
161
+ export { T as Menu, w as menuOptionId };
@@ -0,0 +1,5 @@
1
+ export * from './Menu';
2
+ export * from './menu-config';
3
+ export * from './menu-navigation';
4
+ export * from './use-menu-floating';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/menu/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./Menu.js";
2
+ export * from "./menu-config.js";
3
+ export * from "./menu-navigation.js";
4
+ export * from "./use-menu-floating.js";
@@ -3,7 +3,7 @@ import { Color, Radius, Size, Variant } from '../../shared';
3
3
  * A single option in the select menu.
4
4
  * Each option must have a label and a unique value.
5
5
  */
6
- export interface SelectMenuOption {
6
+ export interface MenuOption {
7
7
  /**
8
8
  * Text displayed in the input and in the options list.
9
9
  */
@@ -26,7 +26,7 @@ export interface SelectMenuOption {
26
26
  [key: string]: unknown;
27
27
  }
28
28
  /**
29
- * Theme configuration options for the SelectMenu component.
29
+ * Theme configuration options for the Menu component.
30
30
  * Controls the visual appearance of the dropdown menu and its items.
31
31
  */
32
32
  export interface MenuConfig {
@@ -86,7 +86,7 @@ export interface MenuConfig {
86
86
  * Whether to render the menu through Floating UI's `FloatingPortal`.
87
87
  * When true, the menu is rendered at the document body level.
88
88
  * Defaults to true. This is typically controlled by the parent
89
- * component (Select, MultiSelect, Autocomplete) via their own
89
+ * component (Dropmenu, MultiSelect, Autocomplete) via their own
90
90
  * config or props.
91
91
  *
92
92
  * @see FloatingPortal - https://floating-ui.com/docs/FloatingPortal
@@ -104,7 +104,7 @@ export interface MenuConfig {
104
104
  * These values are used when instance props, component config,
105
105
  * and global defaults are all undefined.
106
106
  */
107
- export declare const FALLBACK_SELECT_MENU_CONFIG: {
107
+ export declare const FALLBACK_MENU_CONFIG: {
108
108
  radius: Radius;
109
109
  size: Size;
110
110
  itemVariant: Variant;
@@ -114,4 +114,4 @@ export declare const FALLBACK_SELECT_MENU_CONFIG: {
114
114
  lockScroll: boolean;
115
115
  portal: boolean;
116
116
  };
117
- //# sourceMappingURL=select-menu-config.d.ts.map
117
+ //# sourceMappingURL=menu-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-config.d.ts","sourceRoot":"","sources":["../../../src/components/menu/menu-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC;IAElB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;IAExB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CACnC;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;YACf,MAAM;UACR,IAAI;iBACM,OAAO;eACP,KAAK;uBACC,OAAO;qBACP,KAAK;;;CAGpC,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use client";
2
+ //#region src/components/menu/menu-config.ts
3
+ var e = {
4
+ radius: "md",
5
+ size: "md",
6
+ itemVariant: "ghost",
7
+ itemColor: "primary",
8
+ activeItemVariant: "faded",
9
+ activeItemColor: "primary",
10
+ lockScroll: !0,
11
+ portal: !0
12
+ };
13
+ //#endregion
14
+ export { e as FALLBACK_MENU_CONFIG };
@@ -0,0 +1,38 @@
1
+ import { MenuOption } from './menu-config';
2
+ /**
3
+ * Positions of the options that can be reached by keyboard navigation.
4
+ *
5
+ * @param options - The rendered option list, in display order.
6
+ * @returns The indexes of the options that are not disabled.
7
+ */
8
+ export declare function enabledOptionIndexes(options: MenuOption[]): number[];
9
+ /**
10
+ * Resolves the option that a movement key lands on.
11
+ *
12
+ * Movement starts at the first option when nothing is current yet: forward
13
+ * movement lands on the first enabled option and backward movement on the last
14
+ * one. Once an option is current, movement wraps around the ends of the list.
15
+ *
16
+ * @param options - The rendered option list, in display order.
17
+ * @param currentIndex - The current option, or `null` when none is current.
18
+ * @param delta - Movement direction: `1` forward, `-1` backward.
19
+ * @returns The index to make current, or `null` when no option is reachable.
20
+ */
21
+ export declare function nextOptionIndex(options: MenuOption[], currentIndex: number | null, delta: number): number | null;
22
+ /**
23
+ * Resolves the first or last reachable option.
24
+ *
25
+ * @param options - The rendered option list, in display order.
26
+ * @param edge - Which end of the list to resolve.
27
+ * @returns The index to make current, or `null` when no option is reachable.
28
+ */
29
+ export declare function edgeOptionIndex(options: MenuOption[], edge: "first" | "last"): number | null;
30
+ /**
31
+ * Resolves the first reachable option whose label starts with `prefix`.
32
+ *
33
+ * @param options - The rendered option list, in display order.
34
+ * @param prefix - Characters typed so far, matched case insensitively.
35
+ * @returns The index to make current, or `null` when nothing matches.
36
+ */
37
+ export declare function matchingOptionIndex(options: MenuOption[], prefix: string): number | null;
38
+ //# sourceMappingURL=menu-navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-navigation.d.ts","sourceRoot":"","sources":["../../../src/components/menu/menu-navigation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAKpE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,UAAU,EAAE,EACrB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,IAAI,CAaf;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,UAAU,EAAE,EACrB,IAAI,EAAE,OAAO,GAAG,MAAM,GACrB,MAAM,GAAG,IAAI,CAKf;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,UAAU,EAAE,EACrB,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAMf"}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ //#region src/components/menu/menu-navigation.ts
3
+ function e(e) {
4
+ return e.reduce((e, t, n) => (t.disabled || e.push(n), e), []);
5
+ }
6
+ function t(t, n, r) {
7
+ let i = e(t);
8
+ if (i.length === 0) return null;
9
+ let a = n === null ? -1 : i.indexOf(n);
10
+ return i[a === -1 ? r > 0 ? 0 : i.length - 1 : (a + r + i.length) % i.length];
11
+ }
12
+ function n(t, n) {
13
+ let r = e(t);
14
+ return r.length === 0 ? null : n === "first" ? r[0] : r[r.length - 1];
15
+ }
16
+ function r(t, n) {
17
+ return e(t).find((e) => t[e].label.toLowerCase().startsWith(n.toLowerCase())) ?? null;
18
+ }
19
+ //#endregion
20
+ export { n as edgeOptionIndex, e as enabledOptionIndexes, r as matchingOptionIndex, t as nextOptionIndex };
@@ -1,10 +1,10 @@
1
1
  import { UseInteractionsReturn, Placement, useFloating } from '@floating-ui/react';
2
2
  /**
3
- * Configuration options for the useSelectFloating hook.
3
+ * Configuration options for the useMenuFloating hook.
4
4
  * Controls the floating element's behavior, positioning, size, and
5
5
  * interaction wiring (click-to-open, dismiss, and ARIA role).
6
6
  */
7
- export interface UseSelectFloatingProps {
7
+ export interface UseMenuFloatingProps {
8
8
  /**
9
9
  * Whether the floating element is open.
10
10
  * Controls visibility and triggers positioning calculations.
@@ -52,19 +52,28 @@ export interface UseSelectFloatingProps {
52
52
  matchReferenceWidth?: boolean;
53
53
  /**
54
54
  * ARIA role applied to the floating element via useRole.
55
- * "listbox" fits Select/MultiSelect/Autocomplete; a component like
56
- * DatePicker reusing this hook can pass "dialog" instead.
55
+ * "listbox" fits Dropmenu/MultiSelect/Autocomplete; a component like
56
+ * Calendar reusing this hook can pass "dialog" instead.
57
57
  *
58
58
  * @default "listbox"
59
59
  */
60
60
  role?: "listbox" | "menu" | "dialog" | "tooltip" | "grid" | "tree";
61
+ /**
62
+ * Layer delta added to the trigger's detected stacking-context z-index to
63
+ * resolve the floating element's final `z-index`. Keeps anchored popups
64
+ * above their own container (for example a navbar) while staying underneath
65
+ * unrelated app chrome.
66
+ *
67
+ * @default ASHEE_LAYER.dropdown
68
+ */
69
+ zIndex?: number;
61
70
  }
62
71
  /**
63
- * Return value of useSelectFloating. Combines Floating UI's positioning
72
+ * Return value of useMenuFloating. Combines Floating UI's positioning
64
73
  * context with the resolved interaction prop-getters, so consumers don't
65
74
  * need to wire useClick/useDismiss/useRole/useInteractions themselves.
66
75
  */
67
- export interface UseSelectFloatingReturn<T extends HTMLElement> {
76
+ export interface UseMenuFloatingReturn<T extends HTMLElement> {
68
77
  refs: ReturnType<typeof useFloating<T>>["refs"];
69
78
  context: ReturnType<typeof useFloating<T>>["context"];
70
79
  floatingStyles: React.CSSProperties;
@@ -93,13 +102,14 @@ export interface UseSelectFloatingReturn<T extends HTMLElement> {
93
102
  * @param props.padding - Viewport padding for shift middleware. Defaults to 8.
94
103
  * @param props.matchReferenceWidth - Whether to match reference width. Defaults to true.
95
104
  * @param props.role - ARIA role for the floating element. Defaults to "listbox".
105
+ * @param props.zIndex - Layer delta for the floating element. Defaults to `ASHEE_LAYER.dropdown`.
96
106
  * @returns Floating UI refs/context/styles plus `isPositioned` and the
97
107
  * resolved `getReferenceProps`/`getFloatingProps` prop-getters.
98
108
  *
99
109
  * @example
100
110
  * ```tsx
101
111
  * const { refs, context, floatingStyles, getReferenceProps, getFloatingProps } =
102
- * useSelectFloating({
112
+ * useMenuFloating({
103
113
  * isOpen,
104
114
  * onOpenChange: setIsOpen,
105
115
  * disabled: props.disabled,
@@ -118,7 +128,7 @@ export interface UseSelectFloatingReturn<T extends HTMLElement> {
118
128
  * ```
119
129
  *
120
130
  * @see useFloating - The underlying Floating UI hook.
121
- * @see Select - The select component that uses this hook.
131
+ * @see Dropmenu - The select component that uses this hook.
122
132
  */
123
- export declare function useSelectFloating<T extends HTMLElement = HTMLElement>({ isOpen, onOpenChange, disabled, placement, offsetDistance, padding, matchReferenceWidth, role, }: UseSelectFloatingProps): UseSelectFloatingReturn<T>;
124
- //# sourceMappingURL=use-select-floating.d.ts.map
133
+ export declare function useMenuFloating<T extends HTMLElement = HTMLElement>({ isOpen, onOpenChange, disabled, placement, offsetDistance, padding, matchReferenceWidth, role, zIndex, }: UseMenuFloatingProps): UseMenuFloatingReturn<T>;
134
+ //# sourceMappingURL=use-menu-floating.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-menu-floating.d.ts","sourceRoot":"","sources":["../../../src/components/menu/use-menu-floating.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAIL,KAAK,SAAS,EAKd,WAAW,EAGZ,MAAM,oBAAoB,CAAC;AAI5B;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAEtC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAEnE;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,WAAW;IAC1D,IAAI,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtD,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;IAC9D,gBAAgB,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;CAC7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,EACnE,MAAM,EACN,YAAY,EACZ,QAAgB,EAChB,SAA0B,EAC1B,cAAkB,EAClB,OAAW,EACX,mBAA0B,EAC1B,IAAgB,EAChB,MAA6B,GAC9B,EAAE,oBAAoB,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAmDjD"}
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ "use client";
3
+ import { ASHEE_LAYER as e } from "../../utils/stacking.js";
4
+ import { useFloatingZIndex as t } from "../../libs/use-floating-z-index.js";
5
+ import { autoUpdate as n, flip as r, offset as i, shift as a, size as o, useClick as s, useDismiss as c, useFloating as l, useInteractions as u, useRole as d } from "@floating-ui/react";
6
+ //#region src/components/menu/use-menu-floating.ts
7
+ function f({ isOpen: f, onOpenChange: p, disabled: m = !1, placement: h = "bottom-start", offsetDistance: g = 4, padding: _ = 8, matchReferenceWidth: v = !0, role: y = "listbox", zIndex: b = e.dropdown }) {
8
+ let x = l({
9
+ open: f,
10
+ onOpenChange: (e) => !m && p(e),
11
+ placement: h,
12
+ strategy: "fixed",
13
+ whileElementsMounted: n,
14
+ middleware: [
15
+ i(g),
16
+ r(),
17
+ a({ padding: _ }),
18
+ o({ apply({ availableHeight: e, elements: t }) {
19
+ Object.assign(t.floating.style, {
20
+ maxHeight: `${e}px`,
21
+ ...v && { width: `${t.reference.getBoundingClientRect().width}px` }
22
+ });
23
+ } })
24
+ ]
25
+ }), S = t(x.refs.reference, f, b), { context: C } = x, w = s(C, { enabled: !m }), T = c(C), E = d(C, { role: y }), { getReferenceProps: D, getFloatingProps: O } = u([
26
+ w,
27
+ T,
28
+ E
29
+ ]);
30
+ return {
31
+ refs: x.refs,
32
+ context: C,
33
+ floatingStyles: {
34
+ ...x.floatingStyles,
35
+ zIndex: S
36
+ },
37
+ isPositioned: x.isPositioned,
38
+ getReferenceProps: D,
39
+ getFloatingProps: O
40
+ };
41
+ }
42
+ //#endregion
43
+ export { f as useMenuFloating };