@beautinique/frontend-components 1.0.7 → 1.0.9

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 (472) hide show
  1. package/README.md +389 -14
  2. package/dist/auth/AuthBottomInstructions.d.cts +42 -0
  3. package/dist/auth/AuthBottomInstructions.d.cts.map +1 -0
  4. package/dist/auth/AuthBottomInstructions.d.ts +42 -0
  5. package/dist/auth/AuthBottomInstructions.d.ts.map +1 -0
  6. package/dist/auth/SocialAuth.d.cts +33 -0
  7. package/dist/auth/SocialAuth.d.cts.map +1 -0
  8. package/dist/auth/SocialAuth.d.ts +33 -0
  9. package/dist/auth/SocialAuth.d.ts.map +1 -0
  10. package/dist/auth/index.cjs +84 -0
  11. package/dist/auth/index.cjs.map +1 -0
  12. package/dist/auth/index.d.cts +3 -0
  13. package/dist/auth/index.d.cts.map +1 -0
  14. package/dist/auth/index.d.ts +3 -0
  15. package/dist/auth/index.d.ts.map +1 -0
  16. package/dist/auth/index.js +81 -0
  17. package/dist/auth/index.js.map +1 -0
  18. package/dist/breadcrumb/Breadcrumb.d.cts +34 -0
  19. package/dist/breadcrumb/Breadcrumb.d.cts.map +1 -0
  20. package/dist/breadcrumb/Breadcrumb.d.ts +34 -0
  21. package/dist/breadcrumb/Breadcrumb.d.ts.map +1 -0
  22. package/dist/breadcrumb/breadcrumb-icons.d.cts +6 -0
  23. package/dist/breadcrumb/breadcrumb-icons.d.cts.map +1 -0
  24. package/dist/breadcrumb/breadcrumb-icons.d.ts +6 -0
  25. package/dist/breadcrumb/breadcrumb-icons.d.ts.map +1 -0
  26. package/dist/breadcrumb/getBreadcrumbItems.d.cts +16 -0
  27. package/dist/breadcrumb/getBreadcrumbItems.d.cts.map +1 -0
  28. package/dist/breadcrumb/getBreadcrumbItems.d.ts +16 -0
  29. package/dist/breadcrumb/getBreadcrumbItems.d.ts.map +1 -0
  30. package/dist/breadcrumb/index.cjs +110 -0
  31. package/dist/breadcrumb/index.cjs.map +1 -0
  32. package/dist/breadcrumb/index.d.cts +3 -0
  33. package/dist/breadcrumb/index.d.cts.map +1 -0
  34. package/dist/breadcrumb/index.d.ts +3 -0
  35. package/dist/breadcrumb/index.d.ts.map +1 -0
  36. package/dist/breadcrumb/index.js +107 -0
  37. package/dist/breadcrumb/index.js.map +1 -0
  38. package/dist/color-input/ColorInput.d.cts +33 -0
  39. package/dist/color-input/ColorInput.d.cts.map +1 -0
  40. package/dist/color-input/ColorInput.d.ts +33 -0
  41. package/dist/color-input/ColorInput.d.ts.map +1 -0
  42. package/dist/color-input/color-input-icons.d.cts +6 -0
  43. package/dist/color-input/color-input-icons.d.cts.map +1 -0
  44. package/dist/color-input/color-input-icons.d.ts +6 -0
  45. package/dist/color-input/color-input-icons.d.ts.map +1 -0
  46. package/dist/color-input/color.d.cts +10 -0
  47. package/dist/color-input/color.d.cts.map +1 -0
  48. package/dist/color-input/color.d.ts +10 -0
  49. package/dist/color-input/color.d.ts.map +1 -0
  50. package/dist/color-input/index.cjs +375 -0
  51. package/dist/color-input/index.cjs.map +1 -0
  52. package/dist/color-input/index.d.cts +2 -0
  53. package/dist/color-input/index.d.cts.map +1 -0
  54. package/dist/color-input/index.d.ts +2 -0
  55. package/dist/color-input/index.d.ts.map +1 -0
  56. package/dist/color-input/index.js +373 -0
  57. package/dist/color-input/index.js.map +1 -0
  58. package/dist/file-input/FileInput.d.cts +53 -0
  59. package/dist/file-input/FileInput.d.cts.map +1 -0
  60. package/dist/file-input/FileInput.d.ts +53 -0
  61. package/dist/file-input/FileInput.d.ts.map +1 -0
  62. package/dist/file-input/file-input-icons.d.cts +6 -0
  63. package/dist/file-input/file-input-icons.d.cts.map +1 -0
  64. package/dist/file-input/file-input-icons.d.ts +6 -0
  65. package/dist/file-input/file-input-icons.d.ts.map +1 -0
  66. package/dist/file-input/index.cjs +259 -0
  67. package/dist/file-input/index.cjs.map +1 -0
  68. package/dist/file-input/index.d.cts +3 -0
  69. package/dist/file-input/index.d.cts.map +1 -0
  70. package/dist/file-input/index.d.ts +3 -0
  71. package/dist/file-input/index.d.ts.map +1 -0
  72. package/dist/file-input/index.js +256 -0
  73. package/dist/file-input/index.js.map +1 -0
  74. package/dist/file-input/media-type.d.cts +8 -0
  75. package/dist/file-input/media-type.d.cts.map +1 -0
  76. package/dist/file-input/media-type.d.ts +8 -0
  77. package/dist/file-input/media-type.d.ts.map +1 -0
  78. package/dist/file-input/useObjectUrls.d.cts +10 -0
  79. package/dist/file-input/useObjectUrls.d.cts.map +1 -0
  80. package/dist/file-input/useObjectUrls.d.ts +10 -0
  81. package/dist/file-input/useObjectUrls.d.ts.map +1 -0
  82. package/dist/hierarchy-select/HierarchySelect.d.cts +58 -0
  83. package/dist/hierarchy-select/HierarchySelect.d.cts.map +1 -0
  84. package/dist/hierarchy-select/HierarchySelect.d.ts +58 -0
  85. package/dist/hierarchy-select/HierarchySelect.d.ts.map +1 -0
  86. package/dist/hierarchy-select/hierarchy-select-icons.d.cts +6 -0
  87. package/dist/hierarchy-select/hierarchy-select-icons.d.cts.map +1 -0
  88. package/dist/hierarchy-select/hierarchy-select-icons.d.ts +6 -0
  89. package/dist/hierarchy-select/hierarchy-select-icons.d.ts.map +1 -0
  90. package/dist/hierarchy-select/index.cjs +596 -0
  91. package/dist/hierarchy-select/index.cjs.map +1 -0
  92. package/dist/hierarchy-select/index.d.cts +2 -0
  93. package/dist/hierarchy-select/index.d.cts.map +1 -0
  94. package/dist/hierarchy-select/index.d.ts +2 -0
  95. package/dist/hierarchy-select/index.d.ts.map +1 -0
  96. package/dist/hierarchy-select/index.js +594 -0
  97. package/dist/hierarchy-select/index.js.map +1 -0
  98. package/dist/hierarchy-select/tree.d.cts +38 -0
  99. package/dist/hierarchy-select/tree.d.cts.map +1 -0
  100. package/dist/hierarchy-select/tree.d.ts +38 -0
  101. package/dist/hierarchy-select/tree.d.ts.map +1 -0
  102. package/dist/index.cjs +21 -0
  103. package/dist/index.d.cts +3 -0
  104. package/dist/index.d.cts.map +1 -1
  105. package/dist/index.d.ts +3 -0
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +3 -0
  108. package/dist/inputs/Checkbox.d.cts +21 -0
  109. package/dist/inputs/Checkbox.d.cts.map +1 -0
  110. package/dist/inputs/Checkbox.d.ts +21 -0
  111. package/dist/inputs/Checkbox.d.ts.map +1 -0
  112. package/dist/inputs/Input.d.cts +26 -0
  113. package/dist/inputs/Input.d.cts.map +1 -0
  114. package/dist/inputs/Input.d.ts +26 -0
  115. package/dist/inputs/Input.d.ts.map +1 -0
  116. package/dist/inputs/InputError.d.cts +11 -0
  117. package/dist/inputs/InputError.d.cts.map +1 -0
  118. package/dist/inputs/InputError.d.ts +11 -0
  119. package/dist/inputs/InputError.d.ts.map +1 -0
  120. package/dist/inputs/InputIcon.d.cts +9 -0
  121. package/dist/inputs/InputIcon.d.cts.map +1 -0
  122. package/dist/inputs/InputIcon.d.ts +9 -0
  123. package/dist/inputs/InputIcon.d.ts.map +1 -0
  124. package/dist/inputs/InputLabel.d.cts +8 -0
  125. package/dist/inputs/InputLabel.d.cts.map +1 -0
  126. package/dist/inputs/InputLabel.d.ts +8 -0
  127. package/dist/inputs/InputLabel.d.ts.map +1 -0
  128. package/dist/inputs/Radio.d.cts +25 -0
  129. package/dist/inputs/Radio.d.cts.map +1 -0
  130. package/dist/inputs/Radio.d.ts +25 -0
  131. package/dist/inputs/Radio.d.ts.map +1 -0
  132. package/dist/inputs/Select.d.cts +53 -0
  133. package/dist/inputs/Select.d.cts.map +1 -0
  134. package/dist/inputs/Select.d.ts +53 -0
  135. package/dist/inputs/Select.d.ts.map +1 -0
  136. package/dist/inputs/Textarea.d.cts +19 -0
  137. package/dist/inputs/Textarea.d.cts.map +1 -0
  138. package/dist/inputs/Textarea.d.ts +19 -0
  139. package/dist/inputs/Textarea.d.ts.map +1 -0
  140. package/dist/inputs/index.cjs +746 -0
  141. package/dist/inputs/index.cjs.map +1 -0
  142. package/dist/inputs/index.d.cts +10 -0
  143. package/dist/inputs/index.d.cts.map +1 -0
  144. package/dist/inputs/index.d.ts +10 -0
  145. package/dist/inputs/index.d.ts.map +1 -0
  146. package/dist/inputs/index.js +737 -0
  147. package/dist/inputs/index.js.map +1 -0
  148. package/dist/inputs/inputs-icons.d.cts +6 -0
  149. package/dist/inputs/inputs-icons.d.cts.map +1 -0
  150. package/dist/inputs/inputs-icons.d.ts +6 -0
  151. package/dist/inputs/inputs-icons.d.ts.map +1 -0
  152. package/dist/inputs/types.d.cts +48 -0
  153. package/dist/inputs/types.d.cts.map +1 -0
  154. package/dist/inputs/types.d.ts +48 -0
  155. package/dist/inputs/types.d.ts.map +1 -0
  156. package/dist/inputs/useFieldIds.d.cts +24 -0
  157. package/dist/inputs/useFieldIds.d.cts.map +1 -0
  158. package/dist/inputs/useFieldIds.d.ts +24 -0
  159. package/dist/inputs/useFieldIds.d.ts.map +1 -0
  160. package/dist/layout/ApiStatus.d.cts +20 -0
  161. package/dist/layout/ApiStatus.d.cts.map +1 -0
  162. package/dist/layout/ApiStatus.d.ts +20 -0
  163. package/dist/layout/ApiStatus.d.ts.map +1 -0
  164. package/dist/layout/BorderGradient.d.cts +11 -0
  165. package/dist/layout/BorderGradient.d.cts.map +1 -0
  166. package/dist/layout/BorderGradient.d.ts +11 -0
  167. package/dist/layout/BorderGradient.d.ts.map +1 -0
  168. package/dist/layout/ConfirmModal.d.cts +44 -0
  169. package/dist/layout/ConfirmModal.d.cts.map +1 -0
  170. package/dist/layout/ConfirmModal.d.ts +44 -0
  171. package/dist/layout/ConfirmModal.d.ts.map +1 -0
  172. package/dist/layout/Dropdown.d.cts +33 -0
  173. package/dist/layout/Dropdown.d.cts.map +1 -0
  174. package/dist/layout/Dropdown.d.ts +33 -0
  175. package/dist/layout/Dropdown.d.ts.map +1 -0
  176. package/dist/layout/LoadingPage.d.cts +11 -0
  177. package/dist/layout/LoadingPage.d.cts.map +1 -0
  178. package/dist/layout/LoadingPage.d.ts +11 -0
  179. package/dist/layout/LoadingPage.d.ts.map +1 -0
  180. package/dist/layout/LoadingRings.d.cts +12 -0
  181. package/dist/layout/LoadingRings.d.cts.map +1 -0
  182. package/dist/layout/LoadingRings.d.ts +12 -0
  183. package/dist/layout/LoadingRings.d.ts.map +1 -0
  184. package/dist/layout/LoadingText.d.cts +13 -0
  185. package/dist/layout/LoadingText.d.cts.map +1 -0
  186. package/dist/layout/LoadingText.d.ts +13 -0
  187. package/dist/layout/LoadingText.d.ts.map +1 -0
  188. package/dist/layout/ModalWrapper.d.cts +48 -0
  189. package/dist/layout/ModalWrapper.d.cts.map +1 -0
  190. package/dist/layout/ModalWrapper.d.ts +48 -0
  191. package/dist/layout/ModalWrapper.d.ts.map +1 -0
  192. package/dist/layout/NetworkStatusToaster.d.cts +39 -0
  193. package/dist/layout/NetworkStatusToaster.d.cts.map +1 -0
  194. package/dist/layout/NetworkStatusToaster.d.ts +39 -0
  195. package/dist/layout/NetworkStatusToaster.d.ts.map +1 -0
  196. package/dist/layout/ScrollToTop.d.cts +36 -0
  197. package/dist/layout/ScrollToTop.d.cts.map +1 -0
  198. package/dist/layout/ScrollToTop.d.ts +36 -0
  199. package/dist/layout/ScrollToTop.d.ts.map +1 -0
  200. package/dist/layout/ScrollableGradientContainer.d.cts +28 -0
  201. package/dist/layout/ScrollableGradientContainer.d.cts.map +1 -0
  202. package/dist/layout/ScrollableGradientContainer.d.ts +28 -0
  203. package/dist/layout/ScrollableGradientContainer.d.ts.map +1 -0
  204. package/dist/layout/Skeleton.d.cts +9 -0
  205. package/dist/layout/Skeleton.d.cts.map +1 -0
  206. package/dist/layout/Skeleton.d.ts +9 -0
  207. package/dist/layout/Skeleton.d.ts.map +1 -0
  208. package/dist/layout/Table.d.cts +9 -0
  209. package/dist/layout/Table.d.cts.map +1 -0
  210. package/dist/layout/Table.d.ts +9 -0
  211. package/dist/layout/Table.d.ts.map +1 -0
  212. package/dist/layout/index.cjs +773 -0
  213. package/dist/layout/index.cjs.map +1 -0
  214. package/dist/layout/index.d.cts +14 -0
  215. package/dist/layout/index.d.cts.map +1 -0
  216. package/dist/layout/index.d.ts +14 -0
  217. package/dist/layout/index.d.ts.map +1 -0
  218. package/dist/layout/index.js +753 -0
  219. package/dist/layout/index.js.map +1 -0
  220. package/dist/layout/layout-icons.d.cts +6 -0
  221. package/dist/layout/layout-icons.d.cts.map +1 -0
  222. package/dist/layout/layout-icons.d.ts +6 -0
  223. package/dist/layout/layout-icons.d.ts.map +1 -0
  224. package/dist/lib/content.d.cts +7 -0
  225. package/dist/lib/content.d.cts.map +1 -0
  226. package/dist/lib/content.d.ts +7 -0
  227. package/dist/lib/content.d.ts.map +1 -0
  228. package/dist/lib/countdown.d.cts +13 -0
  229. package/dist/lib/countdown.d.cts.map +1 -0
  230. package/dist/lib/countdown.d.ts +13 -0
  231. package/dist/lib/countdown.d.ts.map +1 -0
  232. package/dist/lib/dropdown-position.d.cts +33 -0
  233. package/dist/lib/dropdown-position.d.cts.map +1 -0
  234. package/dist/lib/dropdown-position.d.ts +33 -0
  235. package/dist/lib/dropdown-position.d.ts.map +1 -0
  236. package/dist/lib/focus.d.cts +3 -0
  237. package/dist/lib/focus.d.cts.map +1 -0
  238. package/dist/lib/focus.d.ts +3 -0
  239. package/dist/lib/focus.d.ts.map +1 -0
  240. package/dist/lib/icon-registry.d.cts +14 -0
  241. package/dist/lib/icon-registry.d.cts.map +1 -0
  242. package/dist/lib/icon-registry.d.ts +14 -0
  243. package/dist/lib/icon-registry.d.ts.map +1 -0
  244. package/dist/lib/mergeRefs.d.cts +10 -0
  245. package/dist/lib/mergeRefs.d.cts.map +1 -0
  246. package/dist/lib/mergeRefs.d.ts +10 -0
  247. package/dist/lib/mergeRefs.d.ts.map +1 -0
  248. package/dist/lib/scrollRowIntoView.d.cts +7 -0
  249. package/dist/lib/scrollRowIntoView.d.cts.map +1 -0
  250. package/dist/lib/scrollRowIntoView.d.ts +7 -0
  251. package/dist/lib/scrollRowIntoView.d.ts.map +1 -0
  252. package/dist/lib/stepper.d.cts +9 -0
  253. package/dist/lib/stepper.d.cts.map +1 -0
  254. package/dist/lib/stepper.d.ts +9 -0
  255. package/dist/lib/stepper.d.ts.map +1 -0
  256. package/dist/lib/typeahead.d.cts +21 -0
  257. package/dist/lib/typeahead.d.cts.map +1 -0
  258. package/dist/lib/typeahead.d.ts +21 -0
  259. package/dist/lib/typeahead.d.ts.map +1 -0
  260. package/dist/lib/useAnchoredBox.d.cts +26 -0
  261. package/dist/lib/useAnchoredBox.d.cts.map +1 -0
  262. package/dist/lib/useAnchoredBox.d.ts +26 -0
  263. package/dist/lib/useAnchoredBox.d.ts.map +1 -0
  264. package/dist/lib/useDismiss.d.cts +34 -0
  265. package/dist/lib/useDismiss.d.cts.map +1 -0
  266. package/dist/lib/useDismiss.d.ts +34 -0
  267. package/dist/lib/useDismiss.d.ts.map +1 -0
  268. package/dist/lib/useFocusTrap.d.cts +24 -0
  269. package/dist/lib/useFocusTrap.d.cts.map +1 -0
  270. package/dist/lib/useFocusTrap.d.ts +24 -0
  271. package/dist/lib/useFocusTrap.d.ts.map +1 -0
  272. package/dist/lib/useIsClient.d.cts +7 -0
  273. package/dist/lib/useIsClient.d.cts.map +1 -0
  274. package/dist/lib/useIsClient.d.ts +7 -0
  275. package/dist/lib/useIsClient.d.ts.map +1 -0
  276. package/dist/lib/usePrefersReducedMotion.d.cts +7 -0
  277. package/dist/lib/usePrefersReducedMotion.d.cts.map +1 -0
  278. package/dist/lib/usePrefersReducedMotion.d.ts +7 -0
  279. package/dist/lib/usePrefersReducedMotion.d.ts.map +1 -0
  280. package/dist/lib/useScrollLock.d.cts +7 -0
  281. package/dist/lib/useScrollLock.d.cts.map +1 -0
  282. package/dist/lib/useScrollLock.d.ts +7 -0
  283. package/dist/lib/useScrollLock.d.ts.map +1 -0
  284. package/dist/lib/useScrollable.d.cts +17 -0
  285. package/dist/lib/useScrollable.d.cts.map +1 -0
  286. package/dist/lib/useScrollable.d.ts +17 -0
  287. package/dist/lib/useScrollable.d.ts.map +1 -0
  288. package/dist/linear-gradient/LinearGradient.d.cts +13 -0
  289. package/dist/linear-gradient/LinearGradient.d.cts.map +1 -0
  290. package/dist/linear-gradient/LinearGradient.d.ts +13 -0
  291. package/dist/linear-gradient/LinearGradient.d.ts.map +1 -0
  292. package/dist/linear-gradient/index.cjs +25 -0
  293. package/dist/linear-gradient/index.cjs.map +1 -0
  294. package/dist/linear-gradient/index.d.cts +2 -0
  295. package/dist/linear-gradient/index.d.cts.map +1 -0
  296. package/dist/linear-gradient/index.d.ts +2 -0
  297. package/dist/linear-gradient/index.d.ts.map +1 -0
  298. package/dist/linear-gradient/index.js +23 -0
  299. package/dist/linear-gradient/index.js.map +1 -0
  300. package/dist/loading-screen/LoadingScreen.d.cts +21 -0
  301. package/dist/loading-screen/LoadingScreen.d.cts.map +1 -0
  302. package/dist/loading-screen/LoadingScreen.d.ts +21 -0
  303. package/dist/loading-screen/LoadingScreen.d.ts.map +1 -0
  304. package/dist/loading-screen/Teddy.d.cts +10 -0
  305. package/dist/loading-screen/Teddy.d.cts.map +1 -0
  306. package/dist/loading-screen/Teddy.d.ts +10 -0
  307. package/dist/loading-screen/Teddy.d.ts.map +1 -0
  308. package/dist/loading-screen/WakeUpProgress.d.cts +16 -0
  309. package/dist/loading-screen/WakeUpProgress.d.cts.map +1 -0
  310. package/dist/loading-screen/WakeUpProgress.d.ts +16 -0
  311. package/dist/loading-screen/WakeUpProgress.d.ts.map +1 -0
  312. package/dist/loading-screen/beauty-facts.d.cts +4 -0
  313. package/dist/loading-screen/beauty-facts.d.cts.map +1 -0
  314. package/dist/loading-screen/beauty-facts.d.ts +4 -0
  315. package/dist/loading-screen/beauty-facts.d.ts.map +1 -0
  316. package/dist/loading-screen/index.cjs +405 -0
  317. package/dist/loading-screen/index.cjs.map +1 -0
  318. package/dist/loading-screen/index.d.cts +5 -0
  319. package/dist/loading-screen/index.d.cts.map +1 -0
  320. package/dist/loading-screen/index.d.ts +5 -0
  321. package/dist/loading-screen/index.d.ts.map +1 -0
  322. package/dist/loading-screen/index.js +400 -0
  323. package/dist/loading-screen/index.js.map +1 -0
  324. package/dist/loading-screen/loading-screen-icons.d.cts +6 -0
  325. package/dist/loading-screen/loading-screen-icons.d.cts.map +1 -0
  326. package/dist/loading-screen/loading-screen-icons.d.ts +6 -0
  327. package/dist/loading-screen/loading-screen-icons.d.ts.map +1 -0
  328. package/dist/media/MediaCarousel.d.cts +30 -0
  329. package/dist/media/MediaCarousel.d.cts.map +1 -0
  330. package/dist/media/MediaCarousel.d.ts +30 -0
  331. package/dist/media/MediaCarousel.d.ts.map +1 -0
  332. package/dist/media/MediaCarouselWithModal.d.cts +17 -0
  333. package/dist/media/MediaCarouselWithModal.d.cts.map +1 -0
  334. package/dist/media/MediaCarouselWithModal.d.ts +17 -0
  335. package/dist/media/MediaCarouselWithModal.d.ts.map +1 -0
  336. package/dist/media/MediaCarouselWithParentMedia.d.cts +30 -0
  337. package/dist/media/MediaCarouselWithParentMedia.d.cts.map +1 -0
  338. package/dist/media/MediaCarouselWithParentMedia.d.ts +30 -0
  339. package/dist/media/MediaCarouselWithParentMedia.d.ts.map +1 -0
  340. package/dist/media/MediaModal.d.cts +27 -0
  341. package/dist/media/MediaModal.d.cts.map +1 -0
  342. package/dist/media/MediaModal.d.ts +27 -0
  343. package/dist/media/MediaModal.d.ts.map +1 -0
  344. package/dist/media/VideoPlayer.d.cts +37 -0
  345. package/dist/media/VideoPlayer.d.cts.map +1 -0
  346. package/dist/media/VideoPlayer.d.ts +37 -0
  347. package/dist/media/VideoPlayer.d.ts.map +1 -0
  348. package/dist/media/captureVideoPoster.d.cts +20 -0
  349. package/dist/media/captureVideoPoster.d.cts.map +1 -0
  350. package/dist/media/captureVideoPoster.d.ts +20 -0
  351. package/dist/media/captureVideoPoster.d.ts.map +1 -0
  352. package/dist/media/index.cjs +613 -0
  353. package/dist/media/index.cjs.map +1 -0
  354. package/dist/media/index.d.cts +8 -0
  355. package/dist/media/index.d.cts.map +1 -0
  356. package/dist/media/index.d.ts +8 -0
  357. package/dist/media/index.d.ts.map +1 -0
  358. package/dist/media/index.js +605 -0
  359. package/dist/media/index.js.map +1 -0
  360. package/dist/media/labels.d.cts +33 -0
  361. package/dist/media/labels.d.cts.map +1 -0
  362. package/dist/media/labels.d.ts +33 -0
  363. package/dist/media/labels.d.ts.map +1 -0
  364. package/dist/media/media-icons.d.cts +6 -0
  365. package/dist/media/media-icons.d.cts.map +1 -0
  366. package/dist/media/media-icons.d.ts +6 -0
  367. package/dist/media/media-icons.d.ts.map +1 -0
  368. package/dist/media/streaming.d.cts +18 -0
  369. package/dist/media/streaming.d.cts.map +1 -0
  370. package/dist/media/streaming.d.ts +18 -0
  371. package/dist/media/streaming.d.ts.map +1 -0
  372. package/dist/resend/Resend.d.cts +37 -0
  373. package/dist/resend/Resend.d.cts.map +1 -0
  374. package/dist/resend/Resend.d.ts +37 -0
  375. package/dist/resend/Resend.d.ts.map +1 -0
  376. package/dist/resend/index.cjs +115 -0
  377. package/dist/resend/index.cjs.map +1 -0
  378. package/dist/resend/index.d.cts +2 -0
  379. package/dist/resend/index.d.cts.map +1 -0
  380. package/dist/resend/index.d.ts +2 -0
  381. package/dist/resend/index.d.ts.map +1 -0
  382. package/dist/resend/index.js +113 -0
  383. package/dist/resend/index.js.map +1 -0
  384. package/dist/static-page/StaticPage.d.cts +91 -0
  385. package/dist/static-page/StaticPage.d.cts.map +1 -0
  386. package/dist/static-page/StaticPage.d.ts +91 -0
  387. package/dist/static-page/StaticPage.d.ts.map +1 -0
  388. package/dist/static-page/index.cjs +247 -0
  389. package/dist/static-page/index.cjs.map +1 -0
  390. package/dist/static-page/index.d.cts +2 -0
  391. package/dist/static-page/index.d.cts.map +1 -0
  392. package/dist/static-page/index.d.ts +2 -0
  393. package/dist/static-page/index.d.ts.map +1 -0
  394. package/dist/static-page/index.js +235 -0
  395. package/dist/static-page/index.js.map +1 -0
  396. package/dist/static-page/static-page-icons.d.cts +6 -0
  397. package/dist/static-page/static-page-icons.d.cts.map +1 -0
  398. package/dist/static-page/static-page-icons.d.ts +6 -0
  399. package/dist/static-page/static-page-icons.d.ts.map +1 -0
  400. package/dist/stepper/Stepper.d.cts +35 -0
  401. package/dist/stepper/Stepper.d.cts.map +1 -0
  402. package/dist/stepper/Stepper.d.ts +35 -0
  403. package/dist/stepper/Stepper.d.ts.map +1 -0
  404. package/dist/stepper/index.cjs +149 -0
  405. package/dist/stepper/index.cjs.map +1 -0
  406. package/dist/stepper/index.d.cts +2 -0
  407. package/dist/stepper/index.d.cts.map +1 -0
  408. package/dist/stepper/index.d.ts +2 -0
  409. package/dist/stepper/index.d.ts.map +1 -0
  410. package/dist/stepper/index.js +147 -0
  411. package/dist/stepper/index.js.map +1 -0
  412. package/dist/stepper/stepper-icons.d.cts +10 -0
  413. package/dist/stepper/stepper-icons.d.cts.map +1 -0
  414. package/dist/stepper/stepper-icons.d.ts +10 -0
  415. package/dist/stepper/stepper-icons.d.ts.map +1 -0
  416. package/dist/testimonials/TestimonialCarousel.d.cts +40 -0
  417. package/dist/testimonials/TestimonialCarousel.d.cts.map +1 -0
  418. package/dist/testimonials/TestimonialCarousel.d.ts +40 -0
  419. package/dist/testimonials/TestimonialCarousel.d.ts.map +1 -0
  420. package/dist/testimonials/index.cjs +246 -0
  421. package/dist/testimonials/index.cjs.map +1 -0
  422. package/dist/testimonials/index.d.cts +2 -0
  423. package/dist/testimonials/index.d.cts.map +1 -0
  424. package/dist/testimonials/index.d.ts +2 -0
  425. package/dist/testimonials/index.d.ts.map +1 -0
  426. package/dist/testimonials/index.js +244 -0
  427. package/dist/testimonials/index.js.map +1 -0
  428. package/dist/testimonials/testimonials-icons.d.cts +6 -0
  429. package/dist/testimonials/testimonials-icons.d.cts.map +1 -0
  430. package/dist/testimonials/testimonials-icons.d.ts +6 -0
  431. package/dist/testimonials/testimonials-icons.d.ts.map +1 -0
  432. package/dist/theme/Theme.d.cts +23 -0
  433. package/dist/theme/Theme.d.cts.map +1 -0
  434. package/dist/theme/Theme.d.ts +23 -0
  435. package/dist/theme/Theme.d.ts.map +1 -0
  436. package/dist/theme/index.cjs +76 -0
  437. package/dist/theme/index.cjs.map +1 -0
  438. package/dist/theme/index.d.cts +2 -0
  439. package/dist/theme/index.d.cts.map +1 -0
  440. package/dist/theme/index.d.ts +2 -0
  441. package/dist/theme/index.d.ts.map +1 -0
  442. package/dist/theme/index.js +74 -0
  443. package/dist/theme/index.js.map +1 -0
  444. package/dist/theme/theme-icons.d.cts +21 -0
  445. package/dist/theme/theme-icons.d.cts.map +1 -0
  446. package/dist/theme/theme-icons.d.ts +21 -0
  447. package/dist/theme/theme-icons.d.ts.map +1 -0
  448. package/dist/toast/index.cjs +2 -38
  449. package/dist/toast/index.cjs.map +1 -1
  450. package/dist/toast/index.js +1 -37
  451. package/dist/toast/index.js.map +1 -1
  452. package/dist/ui/Badge.d.cts +12 -0
  453. package/dist/ui/Badge.d.cts.map +1 -0
  454. package/dist/ui/Badge.d.ts +12 -0
  455. package/dist/ui/Badge.d.ts.map +1 -0
  456. package/dist/ui/Divider.d.cts +12 -0
  457. package/dist/ui/Divider.d.cts.map +1 -0
  458. package/dist/ui/Divider.d.ts +12 -0
  459. package/dist/ui/Divider.d.ts.map +1 -0
  460. package/dist/ui/GradientText.d.cts +30 -0
  461. package/dist/ui/GradientText.d.cts.map +1 -0
  462. package/dist/ui/GradientText.d.ts +30 -0
  463. package/dist/ui/GradientText.d.ts.map +1 -0
  464. package/dist/ui/index.cjs +37 -3
  465. package/dist/ui/index.cjs.map +1 -1
  466. package/dist/ui/index.d.cts +3 -0
  467. package/dist/ui/index.d.cts.map +1 -1
  468. package/dist/ui/index.d.ts +3 -0
  469. package/dist/ui/index.d.ts.map +1 -1
  470. package/dist/ui/index.js +35 -4
  471. package/dist/ui/index.js.map +1 -1
  472. package/package.json +108 -6
@@ -0,0 +1,594 @@
1
+ import { addCollection, Icon } from '@iconify/react';
2
+ import { useId, useState, useRef, useMemo, useEffect, useLayoutEffect } from 'react';
3
+ import { createPortal } from 'react-dom';
4
+ import { InputLabel, InputIcon, InputError, Input } from '@beautinique/frontend-components/inputs';
5
+ import { ApiStatus } from '@beautinique/frontend-components/layout';
6
+ import { jsxs, jsx } from 'react/jsx-runtime';
7
+
8
+ var __defProp = Object.defineProperty;
9
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
10
+
11
+ // src/lib/dropdown-position.ts
12
+ var DROPDOWN_GAP = 8;
13
+ var getDropdownPlacement = /* @__PURE__ */ __name(({
14
+ rect,
15
+ viewportHeight,
16
+ desired,
17
+ needed
18
+ }) => {
19
+ const below = viewportHeight - rect.bottom - DROPDOWN_GAP;
20
+ const above = rect.top - DROPDOWN_GAP;
21
+ const room = desired === "bottom" ? below : above;
22
+ const other = desired === "bottom" ? above : below;
23
+ if (room >= needed || other <= room) return desired;
24
+ return desired === "bottom" ? "top" : "bottom";
25
+ }, "getDropdownPlacement");
26
+ var getDropdownStyle = /* @__PURE__ */ __name((rect, placement, viewportHeight) => ({
27
+ left: rect.left,
28
+ width: rect.width,
29
+ ...placement === "top" ? { bottom: viewportHeight - rect.top + DROPDOWN_GAP } : { top: rect.bottom + DROPDOWN_GAP }
30
+ }), "getDropdownStyle");
31
+
32
+ // src/lib/scrollRowIntoView.ts
33
+ var scrollRowIntoView = /* @__PURE__ */ __name((list, row) => {
34
+ const top = row.offsetTop;
35
+ const bottom = top + row.offsetHeight;
36
+ if (top < list.scrollTop) list.scrollTop = top;
37
+ else if (bottom > list.scrollTop + list.clientHeight) list.scrollTop = bottom - list.clientHeight;
38
+ }, "scrollRowIntoView");
39
+
40
+ // src/lib/typeahead.ts
41
+ var findEnabledIndex = /* @__PURE__ */ __name((options, from, step) => {
42
+ for (let index = from + step; index >= 0 && index < options.length; index += step) {
43
+ if (!options[index]?.disabled) return index;
44
+ }
45
+ return -1;
46
+ }, "findEnabledIndex");
47
+ var useAnchoredBox = /* @__PURE__ */ __name(({
48
+ isOpen,
49
+ anchorRef,
50
+ position,
51
+ needed
52
+ }) => {
53
+ const [box, setBox] = useState(null);
54
+ useLayoutEffect(() => {
55
+ if (!isOpen) return;
56
+ const update = /* @__PURE__ */ __name(() => {
57
+ const anchor = anchorRef.current;
58
+ if (!anchor) return;
59
+ const rect = anchor.getBoundingClientRect();
60
+ setBox({
61
+ rect,
62
+ placement: getDropdownPlacement({
63
+ rect,
64
+ viewportHeight: window.innerHeight,
65
+ desired: position,
66
+ needed
67
+ })
68
+ });
69
+ }, "update");
70
+ update();
71
+ window.addEventListener("scroll", update, true);
72
+ window.addEventListener("resize", update);
73
+ return () => {
74
+ window.removeEventListener("scroll", update, true);
75
+ window.removeEventListener("resize", update);
76
+ };
77
+ }, [isOpen, anchorRef, position, needed]);
78
+ return box;
79
+ }, "useAnchoredBox");
80
+ var openStack = [];
81
+ var useDismiss = /* @__PURE__ */ __name((onDismiss, { enabled = true, ignore, outside = true, escape = true } = {}) => {
82
+ const ref = useRef(null);
83
+ const onDismissRef = useRef(onDismiss);
84
+ const ignoreRef = useRef(ignore);
85
+ useLayoutEffect(() => {
86
+ onDismissRef.current = onDismiss;
87
+ ignoreRef.current = ignore;
88
+ });
89
+ useEffect(() => {
90
+ if (!enabled) return;
91
+ const token = /* @__PURE__ */ Symbol("dismissable");
92
+ if (escape) openStack.push(token);
93
+ const handlePress = /* @__PURE__ */ __name((event) => {
94
+ const element = ref.current;
95
+ if (!outside || !element) return;
96
+ const path = event.composedPath();
97
+ const isInside = path.includes(element) || (ignoreRef.current ?? []).some(({ current }) => current !== null && path.includes(current));
98
+ if (!isInside) onDismissRef.current("outside", event);
99
+ }, "handlePress");
100
+ const handleKey = /* @__PURE__ */ __name((event) => {
101
+ if (!escape || event.key !== "Escape" || event.defaultPrevented) return;
102
+ if (openStack.at(-1) !== token) return;
103
+ onDismissRef.current("escape", event);
104
+ }, "handleKey");
105
+ document.addEventListener("pointerdown", handlePress, true);
106
+ document.addEventListener("keydown", handleKey);
107
+ return () => {
108
+ document.removeEventListener("pointerdown", handlePress, true);
109
+ document.removeEventListener("keydown", handleKey);
110
+ const index = openStack.indexOf(token);
111
+ if (index !== -1) openStack.splice(index, 1);
112
+ };
113
+ }, [enabled, outside, escape]);
114
+ return ref;
115
+ }, "useDismiss");
116
+ var createIconRegistry = /* @__PURE__ */ __name((sets) => {
117
+ let registered = false;
118
+ return {
119
+ register: /* @__PURE__ */ __name(() => {
120
+ if (registered) return;
121
+ for (const set of sets) addCollection(set);
122
+ registered = true;
123
+ }, "register"),
124
+ names: sets.flatMap(
125
+ ({ prefix, icons, aliases }) => [...Object.keys(icons), ...Object.keys(aliases ?? {})].map((name) => `${prefix}:${name}`)
126
+ )
127
+ };
128
+ }, "createIconRegistry");
129
+
130
+ // src/hierarchy-select/hierarchy-select-icons.ts
131
+ var ICON_SETS = [
132
+ {
133
+ prefix: "solar",
134
+ width: 24,
135
+ height: 24,
136
+ icons: {
137
+ "alt-arrow-down-linear": {
138
+ body: '<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19 9L12 15L5 9"/>'
139
+ },
140
+ "alt-arrow-right-linear": {
141
+ body: '<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 5L15 12L9 19"/>'
142
+ },
143
+ "folder-open-linear": {
144
+ body: '<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><path d="M4 11.5V5.71231C4 5.05041 4 4.71946 4.05548 4.44379C4.29971 3.23023 5.31225 2.28098 6.60671 2.05201C6.90076 2 7.25377 2 7.9598 2C8.26914 2 8.42381 2 8.57246 2.01303C9.21332 2.06921 9.82122 2.30528 10.3168 2.69039C10.4317 2.77971 10.5411 2.88224 10.7598 3.08731L11.2 3.5C11.8526 4.11183 12.1789 4.41775 12.5697 4.62157C12.7844 4.73353 13.012 4.82195 13.2483 4.88508C13.6783 5 14.1398 5 15.0627 5H15.3617C17.4676 5 18.5205 5 19.2049 5.5771C19.2679 5.63018 19.3278 5.68635 19.3844 5.74537C20 6.38701 20 7.37415 20 9.34843V11.5"/><path d="M10 17H14"/><path d="M3.47674 17.4839C2.99958 14.7678 2.761 13.4097 3.33908 12.433C3.4866 12.1838 3.66852 11.9582 3.87908 11.7634C4.7042 11 6.0379 11 8.7053 11H15.2947C17.9621 11 19.2958 11 20.1209 11.7634C20.3315 11.9582 20.5134 12.1838 20.6609 12.433C21.239 13.4097 21.0004 14.7678 20.5233 17.4839C20.1798 19.4391 20.008 20.4167 19.4129 21.0655C19.2585 21.2338 19.0858 21.383 18.8982 21.5101C18.175 22 17.2149 22 15.2947 22H8.70531C6.7851 22 5.825 22 5.10183 21.5101C4.9142 21.383 4.74145 21.2338 4.58706 21.0655C3.99198 20.4167 3.82024 19.4391 3.47674 17.4839Z"/></g>'
145
+ },
146
+ "folder-linear": {
147
+ body: '<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><path d="M18 10L13 10"/><path d="M2 6.94975C2 6.06722 2 5.62595 2.06935 5.25839C2.37464 3.64031 3.64031 2.37464 5.25839 2.06935C5.62595 2 6.06722 2 6.94975 2C7.33642 2 7.52976 2 7.71557 2.01738C8.51665 2.09229 9.27652 2.40704 9.89594 2.92051C10.0396 3.03961 10.1763 3.17633 10.4497 3.44975L11 4C11.8158 4.81578 12.2237 5.22367 12.7121 5.49543C12.9804 5.64471 13.2651 5.7626 13.5604 5.84678C14.0979 6 14.6747 6 15.8284 6H16.2021C18.8345 6 20.1506 6 21.0062 6.76946C21.0849 6.84024 21.1598 6.91514 21.2305 6.99383C22 7.84935 22 9.16554 22 11.7979V14C22 17.7712 22 19.6569 20.8284 20.8284C19.6569 22 17.7712 22 14 22H10C6.22876 22 4.34315 22 3.17157 20.8284C2 19.6569 2 17.7712 2 14V6.94975Z"/></g>'
148
+ },
149
+ "file-linear": {
150
+ body: '<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><path d="M13 2.2627V5.0003C13 7.35732 13 8.53583 13.7322 9.26806C14.4645 10.0003 15.643 10.0003 18 10.0003H21.58"/><path stroke-linejoin="round" d="M3.17139 3.17157C4.34296 2 6.23851 2 10.0296 2C11.5546 2 12.3173 2.00011 13.0093 2.26562C13.7012 2.53114 14.2651 3.03857 15.3929 4.05365L19.3516 7.61621C20.6558 8.78998 21.3078 9.3774 21.6538 10.1543C21.9998 10.9312 22 11.8079 22 13.5625V14C22 17.7712 22 19.6566 20.8284 20.8281C19.6569 21.9997 17.7712 22 14 22L9.9969 21.9997C6.22761 21.9997 4.34284 21.9997 3.17157 20.8284C2 19.6569 2 17.7712 2 14V9.9982C2 6.22817 2 4.34296 3.17139 3.17157Z"/></g>'
151
+ },
152
+ "unread-linear": {
153
+ body: '<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M7 12.9L10.1429 16.5L18 7.5"/>'
154
+ },
155
+ "magnifier-linear": {
156
+ body: '<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><circle cx="11.5" cy="11.5" r="9.5"/><path d="M18.2173 18.2178L21.9999 22.0004"/></g>'
157
+ }
158
+ },
159
+ aliases: {
160
+ "magnifer-linear": { parent: "magnifier-linear" }
161
+ }
162
+ },
163
+ {
164
+ prefix: "lucide",
165
+ width: 24,
166
+ height: 24,
167
+ icons: {
168
+ x: {
169
+ body: '<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18 6L6 18M6 6l12 12"/>'
170
+ }
171
+ }
172
+ }
173
+ ];
174
+ var { register: registerHierarchySelectIcons, names: HIERARCHY_SELECT_ICON_NAMES } = createIconRegistry(ICON_SETS);
175
+
176
+ // src/hierarchy-select/tree.ts
177
+ var searchTextOf = /* @__PURE__ */ __name((node) => node.searchLabel ?? (typeof node.label === "string" ? node.label : String(node.value)), "searchTextOf");
178
+ var filterTree = /* @__PURE__ */ __name((nodes, keyword) => {
179
+ const text = keyword.trim().toLowerCase();
180
+ if (!text) return nodes;
181
+ return nodes.flatMap((node) => {
182
+ if (searchTextOf(node).toLowerCase().includes(text)) return [node];
183
+ const children = node.children ? filterTree(node.children, keyword) : [];
184
+ return children.length > 0 ? [{ ...node, children }] : [];
185
+ });
186
+ }, "filterTree");
187
+ var buildRows = /* @__PURE__ */ __name((nodes, expanded, forceExpanded, level = 1, parent) => nodes.flatMap((node, index) => {
188
+ const isBranch = !!node.children?.length;
189
+ const isExpanded = isBranch && (forceExpanded || expanded.includes(node.value));
190
+ const row = {
191
+ node,
192
+ level,
193
+ position: index + 1,
194
+ size: nodes.length,
195
+ isBranch,
196
+ isExpanded,
197
+ parent
198
+ };
199
+ return isExpanded ? [row, ...buildRows(node.children ?? [], expanded, forceExpanded, level + 1, node.value)] : [row];
200
+ }), "buildRows");
201
+ var findNode = /* @__PURE__ */ __name((nodes, value) => {
202
+ for (const node of nodes) {
203
+ if (node.value === value) return node;
204
+ const found = node.children ? findNode(node.children, value) : void 0;
205
+ if (found) return found;
206
+ }
207
+ return void 0;
208
+ }, "findNode");
209
+ var ancestorsOf = /* @__PURE__ */ __name((nodes, value, path = []) => {
210
+ for (const node of nodes) {
211
+ if (node.value === value) return path;
212
+ const found = node.children ? ancestorsOf(node.children, value, [...path, node.value]) : [];
213
+ if (found.length > 0) return found;
214
+ }
215
+ return [];
216
+ }, "ancestorsOf");
217
+ var LABELS = {
218
+ tree: "Options",
219
+ search: "Search options",
220
+ searchPlaceholder: "Search here...",
221
+ clearSearch: "Clear search",
222
+ noResultsTitle: "No matching options found",
223
+ noResultsDescription: "Try searching with a different keyword or clear the search.",
224
+ results: /* @__PURE__ */ __name((count) => `${String(count)} ${count === 1 ? "option" : "options"} found`, "results")
225
+ };
226
+ var POPUP_MAX_HEIGHT = 330;
227
+ var HierarchySelect = /* @__PURE__ */ __name(({
228
+ label = "",
229
+ className = "",
230
+ error = "",
231
+ containerClassName = "",
232
+ optionsClassName = "",
233
+ icons,
234
+ selectProps,
235
+ options,
236
+ position = "bottom",
237
+ inputProps,
238
+ labels
239
+ }) => {
240
+ registerHierarchySelectIcons();
241
+ const text = {
242
+ tree: labels?.tree ?? LABELS.tree,
243
+ search: labels?.search ?? LABELS.search,
244
+ searchPlaceholder: labels?.searchPlaceholder ?? LABELS.searchPlaceholder,
245
+ clearSearch: labels?.clearSearch ?? LABELS.clearSearch,
246
+ noResultsTitle: labels?.noResultsTitle ?? LABELS.noResultsTitle,
247
+ noResultsDescription: labels?.noResultsDescription ?? LABELS.noResultsDescription,
248
+ results: labels?.results ?? LABELS.results
249
+ };
250
+ const baseId = useId();
251
+ const triggerId = selectProps.id ?? `${baseId}-field`;
252
+ const popupId = `${baseId}-popup`;
253
+ const treeId = `${baseId}-tree`;
254
+ const errorId = `${baseId}-error`;
255
+ const rowId = /* @__PURE__ */ __name((index) => `${baseId}-row-${String(index)}`, "rowId");
256
+ const [isOpenState, setIsOpen] = useState(false);
257
+ const [ownSearch, setOwnSearch] = useState("");
258
+ const [expanded, setExpanded] = useState([]);
259
+ const [activeValue, setActiveValue] = useState(void 0);
260
+ const fieldBoxRef = useRef(null);
261
+ const triggerRef = useRef(null);
262
+ const popupRef = useRef(null);
263
+ const listRef = useRef(null);
264
+ const searchRef = useRef(null);
265
+ const activeRowRef = useRef(null);
266
+ const isSearchControlled = typeof inputProps?.value === "string";
267
+ const search = typeof inputProps?.value === "string" ? inputProps.value : ownSearch;
268
+ const isSearching = search.trim() !== "";
269
+ const canOpen = options.length > 0 && !selectProps.disabled;
270
+ if (isOpenState && !canOpen) setIsOpen(false);
271
+ const isOpen = isOpenState && canOpen;
272
+ const selected = findNode(options, selectProps.value);
273
+ const hasValue = selected !== void 0 && selected.value !== "";
274
+ const shown = useMemo(() => filterTree(options, search), [options, search]);
275
+ const rows = useMemo(
276
+ () => buildRows(shown, expanded, isSearching),
277
+ [shown, expanded, isSearching]
278
+ );
279
+ const navigable = rows.map((row) => ({ disabled: row.node.disabled }));
280
+ const foundIndex = rows.findIndex((row) => row.node.value === activeValue);
281
+ const firstChoosable = rows.findIndex((row) => !row.isBranch && !row.node.disabled);
282
+ const activeIndex = foundIndex === -1 && isSearching ? firstChoosable : foundIndex;
283
+ const activeRow = activeIndex === -1 ? void 0 : rows.at(activeIndex);
284
+ const popup = useAnchoredBox({
285
+ isOpen,
286
+ anchorRef: fieldBoxRef,
287
+ position,
288
+ needed: POPUP_MAX_HEIGHT
289
+ });
290
+ const close = /* @__PURE__ */ __name((returnFocus) => {
291
+ setIsOpen(false);
292
+ if (!isSearchControlled) setOwnSearch("");
293
+ if (returnFocus) triggerRef.current?.focus();
294
+ }, "close");
295
+ const containerRef = useDismiss(
296
+ (reason) => {
297
+ close(reason === "escape");
298
+ },
299
+ { enabled: isOpen, ignore: [popupRef] }
300
+ );
301
+ const open = /* @__PURE__ */ __name(() => {
302
+ if (!canOpen) return;
303
+ setExpanded(selected ? ancestorsOf(options, selected.value) : []);
304
+ setActiveValue(selected && !selected.disabled ? selected.value : void 0);
305
+ setIsOpen(true);
306
+ }, "open");
307
+ const toggle = /* @__PURE__ */ __name((value) => {
308
+ setExpanded(
309
+ (current) => current.includes(value) ? current.filter((item) => item !== value) : [...current, value]
310
+ );
311
+ }, "toggle");
312
+ const activate = /* @__PURE__ */ __name((row) => {
313
+ if (row.node.disabled) return;
314
+ setActiveValue(row.node.value);
315
+ if (row.isBranch) {
316
+ if (!isSearching) toggle(row.node.value);
317
+ return;
318
+ }
319
+ selectProps.onChange(row.node.value);
320
+ close(true);
321
+ }, "activate");
322
+ useEffect(() => {
323
+ const list = listRef.current;
324
+ const row = activeRowRef.current;
325
+ if (isOpen && list && row) scrollRowIntoView(list, row);
326
+ }, [isOpen, activeIndex, popup]);
327
+ const handleSearch = /* @__PURE__ */ __name((event) => {
328
+ inputProps?.onChange?.(event);
329
+ if (!isSearchControlled) setOwnSearch(event.target.value);
330
+ }, "handleSearch");
331
+ const clearSearch = /* @__PURE__ */ __name(() => {
332
+ const input = searchRef.current;
333
+ if (!input) return;
334
+ Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, "value")?.set?.call(input, "");
335
+ input.dispatchEvent(new Event("input", { bubbles: true }));
336
+ input.focus();
337
+ }, "clearSearch");
338
+ const handleSearchKeyDown = /* @__PURE__ */ __name((event) => {
339
+ inputProps?.onKeyDown?.(event);
340
+ if (event.defaultPrevented || event.altKey || event.ctrlKey || event.metaKey) return;
341
+ switch (event.key) {
342
+ case "ArrowDown":
343
+ case "ArrowUp": {
344
+ event.preventDefault();
345
+ const next = activeIndex === -1 && event.key === "ArrowUp" ? findEnabledIndex(navigable, rows.length, -1) : findEnabledIndex(navigable, activeIndex, event.key === "ArrowDown" ? 1 : -1);
346
+ const target = next === -1 ? void 0 : rows.at(next);
347
+ if (target) setActiveValue(target.node.value);
348
+ return;
349
+ }
350
+ // Right and Left move the cursor in the text while there is a search: there is nothing to open
351
+ // or close then, because every branch is open
352
+ case "ArrowRight": {
353
+ if (isSearching || !activeRow?.isBranch) return;
354
+ event.preventDefault();
355
+ const firstChild = rows.at(activeIndex + 1);
356
+ if (!activeRow.isExpanded) toggle(activeRow.node.value);
357
+ else if (firstChild && !firstChild.node.disabled) setActiveValue(firstChild.node.value);
358
+ return;
359
+ }
360
+ case "ArrowLeft": {
361
+ if (isSearching || !activeRow) return;
362
+ if (activeRow.isExpanded) {
363
+ event.preventDefault();
364
+ toggle(activeRow.node.value);
365
+ } else if (activeRow.parent !== void 0) {
366
+ event.preventDefault();
367
+ setActiveValue(activeRow.parent);
368
+ }
369
+ return;
370
+ }
371
+ case "Enter":
372
+ event.preventDefault();
373
+ if (activeRow) activate(activeRow);
374
+ return;
375
+ case "Tab":
376
+ close(true);
377
+ return;
378
+ }
379
+ }, "handleSearchKeyDown");
380
+ const handleTriggerKeyDown = /* @__PURE__ */ __name((event) => {
381
+ if (isOpen || event.altKey || event.ctrlKey || event.metaKey) return;
382
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") {
383
+ event.preventDefault();
384
+ open();
385
+ }
386
+ }, "handleTriggerKeyDown");
387
+ return /* @__PURE__ */ jsxs(
388
+ "div",
389
+ {
390
+ ref: containerRef,
391
+ className: `flex max-w-full min-w-0 flex-col gap-1.5 ${containerClassName}`,
392
+ children: [
393
+ /* @__PURE__ */ jsxs("div", { className: "relative", ref: fieldBoxRef, children: [
394
+ /* @__PURE__ */ jsx(InputLabel, { htmlFor: triggerId, className: "z-2", children: label }),
395
+ /* @__PURE__ */ jsxs(
396
+ "div",
397
+ {
398
+ "data-invalid": error ? "" : void 0,
399
+ className: `border-primary/10 bg-smoke-eerie focus-within:border-blue-crayola-c data-invalid:border-red-c flex items-center gap-3 overflow-hidden rounded-lg border px-3 ${className}`,
400
+ children: [
401
+ /* @__PURE__ */ jsx(InputIcon, { icon: icons?.left }),
402
+ /* @__PURE__ */ jsxs(
403
+ "button",
404
+ {
405
+ id: triggerId,
406
+ ref: triggerRef,
407
+ type: "button",
408
+ "aria-haspopup": "dialog",
409
+ "aria-expanded": isOpen,
410
+ "aria-controls": isOpen ? popupId : void 0,
411
+ "aria-invalid": error ? true : void 0,
412
+ "aria-describedby": error ? errorId : void 0,
413
+ disabled: selectProps.disabled,
414
+ onClick: () => {
415
+ if (isOpen) close(false);
416
+ else open();
417
+ },
418
+ onKeyDown: handleTriggerKeyDown,
419
+ className: `text-primary flex min-w-0 flex-1 items-center justify-between gap-0.5 truncate border-none bg-transparent text-left text-[13px] outline-hidden ${selectProps.disabled ? "cursor-no-drop" : "cursor-pointer"}`,
420
+ children: [
421
+ /* @__PURE__ */ jsx(
422
+ "span",
423
+ {
424
+ className: `flex-1 truncate py-2 first-letter:capitalize xl:py-3 ${hasValue ? "" : "text-primary/30"}`,
425
+ children: selected?.label ?? selectProps.placeholder
426
+ }
427
+ ),
428
+ /* @__PURE__ */ jsx(
429
+ Icon,
430
+ {
431
+ icon: "solar:alt-arrow-down-linear",
432
+ className: `size-4 transition-transform motion-reduce:transition-none md:size-5 ${isOpen ? "rotate-180" : ""} ${hasValue ? "text-primary" : "text-primary/30"}`
433
+ }
434
+ )
435
+ ]
436
+ }
437
+ ),
438
+ /* @__PURE__ */ jsx(InputIcon, { icon: icons?.right })
439
+ ]
440
+ }
441
+ )
442
+ ] }),
443
+ /* @__PURE__ */ jsx(InputError, { id: errorId, error }),
444
+ isOpen && popup && createPortal(
445
+ /* @__PURE__ */ jsxs(
446
+ "div",
447
+ {
448
+ ref: popupRef,
449
+ id: popupId,
450
+ role: "dialog",
451
+ "aria-label": label || text.tree,
452
+ className: `border-primary/10 bg-smoke-eerie fixed z-3 overflow-hidden rounded-lg border shadow-md ${optionsClassName}`,
453
+ style: getDropdownStyle(popup.rect, popup.placement, window.innerHeight),
454
+ children: [
455
+ /* @__PURE__ */ jsx(
456
+ Input,
457
+ {
458
+ needRef: true,
459
+ ref: searchRef,
460
+ inputProps: {
461
+ ...inputProps,
462
+ value: search,
463
+ onChange: handleSearch,
464
+ onKeyDown: handleSearchKeyDown,
465
+ placeholder: inputProps?.placeholder ?? text.searchPlaceholder,
466
+ role: "combobox",
467
+ "aria-label": inputProps?.["aria-label"] ?? text.search,
468
+ "aria-expanded": true,
469
+ "aria-controls": rows.length > 0 ? treeId : void 0,
470
+ "aria-activedescendant": activeIndex === -1 ? void 0 : rowId(activeIndex),
471
+ "aria-autocomplete": "list",
472
+ autoComplete: "off",
473
+ className: `py-2! ${inputProps?.className ?? ""}`
474
+ },
475
+ icons: {
476
+ right: search ? {
477
+ icon: "lucide:x",
478
+ label: text.clearSearch,
479
+ className: "size-4 text-primary",
480
+ onClick: clearSearch
481
+ } : { icon: "solar:magnifer-linear", className: "size-4 text-primary opacity-30" }
482
+ },
483
+ containerClassName: "p-2 border-b border-b-primary/20",
484
+ className: "bg-silver-jet/8!"
485
+ }
486
+ ),
487
+ /* @__PURE__ */ jsx("div", { role: "status", className: "sr-only", children: isSearching && rows.length > 0 ? text.results(rows.length) : "" }),
488
+ rows.length > 0 ? /* @__PURE__ */ jsx(
489
+ "ul",
490
+ {
491
+ ref: listRef,
492
+ id: treeId,
493
+ role: "tree",
494
+ "aria-label": label || text.tree,
495
+ onMouseDown: (event) => {
496
+ event.preventDefault();
497
+ },
498
+ className: "relative flex max-h-60 flex-col gap-0.5 overflow-auto p-1",
499
+ children: rows.map((row, index) => {
500
+ const isSelected = !row.isBranch && row.node.value === selectProps.value;
501
+ const isActive = index === activeIndex;
502
+ const isDisabled = !!row.node.disabled;
503
+ return /* @__PURE__ */ jsxs(
504
+ "li",
505
+ {
506
+ id: rowId(index),
507
+ ref: isActive ? activeRowRef : null,
508
+ role: "treeitem",
509
+ "aria-level": row.level,
510
+ "aria-posinset": row.position,
511
+ "aria-setsize": row.size,
512
+ "aria-expanded": row.isBranch ? row.isExpanded : void 0,
513
+ "aria-selected": isSelected,
514
+ "aria-disabled": isDisabled ? true : void 0,
515
+ style: { paddingLeft: `${String(8 + (row.level - 1) * 12)}px` },
516
+ className: `text-tertiary flex items-center gap-2 rounded-sm py-1.5 pr-2 text-[13px] ${isDisabled ? "cursor-not-allowed opacity-50" : "cursor-pointer"} ${isActive ? "bg-primary/5" : ""} ${isSelected ? "bg-primary/8" : ""}`,
517
+ onMouseMove: () => {
518
+ if (!isDisabled && !isActive) setActiveValue(row.node.value);
519
+ },
520
+ onClick: () => {
521
+ activate(row);
522
+ },
523
+ children: [
524
+ /* @__PURE__ */ jsx(
525
+ "span",
526
+ {
527
+ "aria-hidden": "true",
528
+ className: "flex size-5 shrink-0 items-center justify-center",
529
+ children: row.isBranch && /* @__PURE__ */ jsx(
530
+ Icon,
531
+ {
532
+ icon: row.isExpanded ? "solar:alt-arrow-down-linear" : "solar:alt-arrow-right-linear",
533
+ className: "size-4"
534
+ }
535
+ )
536
+ }
537
+ ),
538
+ /* @__PURE__ */ jsx(
539
+ "span",
540
+ {
541
+ "aria-hidden": "true",
542
+ className: "flex size-5 shrink-0 items-center justify-center",
543
+ children: /* @__PURE__ */ jsx(
544
+ Icon,
545
+ {
546
+ icon: row.isBranch ? row.isExpanded ? "solar:folder-open-linear" : "solar:folder-linear" : "solar:file-linear",
547
+ className: "size-4"
548
+ }
549
+ )
550
+ }
551
+ ),
552
+ /* @__PURE__ */ jsx("span", { className: "flex-1 text-left text-[13px] first-letter:capitalize", children: row.node.label }),
553
+ isSelected && /* @__PURE__ */ jsx(
554
+ "span",
555
+ {
556
+ "aria-hidden": "true",
557
+ className: "flex size-5 shrink-0 items-center justify-center",
558
+ children: /* @__PURE__ */ jsx(
559
+ Icon,
560
+ {
561
+ icon: "solar:unread-linear",
562
+ className: "text-primary size-4 md:size-5"
563
+ }
564
+ )
565
+ }
566
+ )
567
+ ]
568
+ },
569
+ String(row.node.value)
570
+ );
571
+ })
572
+ }
573
+ ) : /* @__PURE__ */ jsx(
574
+ ApiStatus,
575
+ {
576
+ status: "empty",
577
+ title: text.noResultsTitle,
578
+ description: text.noResultsDescription,
579
+ className: "min-h-30!"
580
+ }
581
+ )
582
+ ]
583
+ }
584
+ ),
585
+ document.body
586
+ )
587
+ ]
588
+ }
589
+ );
590
+ }, "HierarchySelect");
591
+
592
+ export { HierarchySelect };
593
+ //# sourceMappingURL=index.js.map
594
+ //# sourceMappingURL=index.js.map