@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,746 @@
1
+ 'use strict';
2
+
3
+ var react$1 = require('react');
4
+ var ui = require('@beautinique/frontend-components/ui');
5
+ var react = require('@iconify/react');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var reactDom = require('react-dom');
8
+
9
+ var __defProp = Object.defineProperty;
10
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
11
+
12
+ // src/lib/content.ts
13
+ var hasContent = /* @__PURE__ */ __name((content) => content !== null && content !== void 0 && content !== false && content !== true && content !== "", "hasContent");
14
+
15
+ // src/lib/mergeRefs.ts
16
+ var assign = /* @__PURE__ */ __name((ref, node) => {
17
+ if (typeof ref === "function") return ref(node);
18
+ if (ref) ref.current = node;
19
+ return void 0;
20
+ }, "assign");
21
+ var mergeRefs = /* @__PURE__ */ __name((...refs) => (node) => {
22
+ const cleanups = refs.map((ref) => assign(ref, node));
23
+ return () => {
24
+ refs.forEach((ref, index) => {
25
+ const cleanup = cleanups[index];
26
+ if (typeof cleanup === "function") cleanup();
27
+ else assign(ref, null);
28
+ });
29
+ };
30
+ }, "mergeRefs");
31
+ var createIconRegistry = /* @__PURE__ */ __name((sets) => {
32
+ let registered = false;
33
+ return {
34
+ register: /* @__PURE__ */ __name(() => {
35
+ if (registered) return;
36
+ for (const set of sets) react.addCollection(set);
37
+ registered = true;
38
+ }, "register"),
39
+ names: sets.flatMap(
40
+ ({ prefix, icons, aliases }) => [...Object.keys(icons), ...Object.keys(aliases ?? {})].map((name) => `${prefix}:${name}`)
41
+ )
42
+ };
43
+ }, "createIconRegistry");
44
+
45
+ // src/inputs/inputs-icons.ts
46
+ var ICON_SETS = [
47
+ {
48
+ prefix: "solar",
49
+ width: 24,
50
+ height: 24,
51
+ icons: {
52
+ "info-circle-linear": {
53
+ body: '<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><circle cx="12" cy="12" r="10"/><path d="M12 17V11"/><path stroke-linejoin="round" d="M12 8H12.0001"/></g>'
54
+ },
55
+ "alt-arrow-down-linear": {
56
+ body: '<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19 9L12 15L5 9"/>'
57
+ },
58
+ "unread-linear": {
59
+ 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"/>'
60
+ }
61
+ }
62
+ }
63
+ ];
64
+ var { register: registerInputIcons, names: INPUT_ICON_NAMES } = createIconRegistry(ICON_SETS);
65
+ var InputError = /* @__PURE__ */ __name(({ error = "", className = "", ...pProps }) => {
66
+ registerInputIcons();
67
+ if (!error) return null;
68
+ return /* @__PURE__ */ jsxRuntime.jsxs(
69
+ "p",
70
+ {
71
+ role: "alert",
72
+ ...pProps,
73
+ className: `text-red-c flex w-full items-center gap-1 text-start text-[11px] ${className}`,
74
+ children: [
75
+ /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "solar:info-circle-linear", className: "mb-0.5 shrink-0" }),
76
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "line-clamp-2 leading-3 whitespace-pre-line first-letter:uppercase", children: error })
77
+ ]
78
+ }
79
+ );
80
+ }, "InputError");
81
+ var useFieldIds = /* @__PURE__ */ __name(({ id, name, error, describedBy }) => {
82
+ const generated = react$1.useId();
83
+ const fieldId = id ?? name ?? generated;
84
+ const errorId = `${fieldId}-error`;
85
+ return {
86
+ id: fieldId,
87
+ errorId,
88
+ "aria-invalid": error ? true : void 0,
89
+ "aria-describedby": [describedBy, error ? errorId : void 0].filter(Boolean).join(" ") || void 0
90
+ };
91
+ }, "useFieldIds");
92
+ var Checkbox = /* @__PURE__ */ __name(({
93
+ register,
94
+ className = "",
95
+ content,
96
+ checkboxProps,
97
+ containerClassName = "",
98
+ error = "",
99
+ tooltip,
100
+ ref
101
+ }) => {
102
+ const { id, errorId, ...aria } = useFieldIds({
103
+ id: checkboxProps.id,
104
+ name: checkboxProps.name ?? register?.name,
105
+ error,
106
+ describedBy: checkboxProps["aria-describedby"]
107
+ });
108
+ const mergedRef = react$1.useMemo(
109
+ () => mergeRefs(register?.ref, ref),
110
+ [register?.ref, ref]
111
+ );
112
+ const handleChange = /* @__PURE__ */ __name((event) => {
113
+ if (checkboxProps.disabled) return;
114
+ void register?.onChange(event);
115
+ checkboxProps.onChange?.(event);
116
+ }, "handleChange");
117
+ const handleBlur = /* @__PURE__ */ __name((event) => {
118
+ checkboxProps.onBlur?.(event);
119
+ void register?.onBlur(event);
120
+ }, "handleBlur");
121
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex max-w-full min-w-0 flex-col gap-1.5 ${containerClassName}`, children: [
122
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 sm:gap-3", children: [
123
+ /* @__PURE__ */ jsxRuntime.jsx(
124
+ ui.Tooltip,
125
+ {
126
+ title: tooltip?.title,
127
+ description: tooltip?.description,
128
+ placement: tooltip?.placement,
129
+ required: tooltip?.required ?? false,
130
+ children: /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "relative inline-block h-6 w-12 shrink-0", children: [
131
+ /* @__PURE__ */ jsxRuntime.jsx(
132
+ "input",
133
+ {
134
+ ...register,
135
+ ...checkboxProps,
136
+ ...aria,
137
+ type: "checkbox",
138
+ role: "switch",
139
+ ref: mergedRef,
140
+ id,
141
+ onChange: handleChange,
142
+ onBlur: handleBlur,
143
+ className: "peer sr-only"
144
+ }
145
+ ),
146
+ /* @__PURE__ */ jsxRuntime.jsx(
147
+ "span",
148
+ {
149
+ "aria-hidden": "true",
150
+ className: `border-primary/10 bg-tertiary-invert peer-checked:border-blue-crayola-c before:bg-silver-duo peer-checked:before:bg-accent-duo absolute inset-0 cursor-pointer rounded-full border transition-all duration-400 ease-[cubic-bezier(0.175,0.885,0.32,1.275)] peer-checked:shadow-[0_0_10px_rgba(var(--blue-crayola-c-rgb),0.8)] peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-blue-crayola-c peer-disabled:cursor-not-allowed peer-disabled:opacity-60 motion-reduce:transition-none before:absolute before:top-1/2 before:left-1 before:aspect-square before:h-[70%] before:-translate-y-1/2 before:rounded-full before:transition-all before:duration-400 before:ease-[cubic-bezier(0.23,1,0.32,1)] before:content-[''] motion-reduce:before:transition-none peer-checked:before:translate-x-[calc(150%)] ${className}`
151
+ }
152
+ )
153
+ ] })
154
+ }
155
+ ),
156
+ hasContent(content) && /* @__PURE__ */ jsxRuntime.jsx(
157
+ "label",
158
+ {
159
+ htmlFor: id,
160
+ className: "text-primary/50 cursor-pointer text-xs font-medium whitespace-break-spaces sm:text-[13px] md:text-sm",
161
+ children: content
162
+ }
163
+ )
164
+ ] }),
165
+ /* @__PURE__ */ jsxRuntime.jsx(InputError, { id: errorId, error })
166
+ ] });
167
+ }, "Checkbox");
168
+ var BUTTON_CSS = "flex shrink-0 cursor-pointer items-center rounded-sm focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-crayola-c disabled:cursor-not-allowed disabled:opacity-60";
169
+ var InputIcon = /* @__PURE__ */ __name(({ icon }) => {
170
+ if (!icon) return null;
171
+ if (react$1.isValidElement(icon)) return icon;
172
+ if (icon.onClick) {
173
+ const { onClick, label, disabled, className: className2 = "", ...iconProps2 } = icon;
174
+ return /* @__PURE__ */ jsxRuntime.jsx(
175
+ "button",
176
+ {
177
+ type: "button",
178
+ "aria-label": label,
179
+ disabled,
180
+ onClick,
181
+ className: BUTTON_CSS,
182
+ children: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { ...iconProps2, className: className2 })
183
+ }
184
+ );
185
+ }
186
+ const { className = "", ...iconProps } = icon;
187
+ return /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { ...iconProps, className: `shrink-0 ${className}` });
188
+ }, "InputIcon");
189
+ var InputLabel = /* @__PURE__ */ __name(({
190
+ children,
191
+ className = "",
192
+ htmlFor,
193
+ ...labelProps
194
+ }) => hasContent(children) ? /* @__PURE__ */ jsxRuntime.jsx(
195
+ "label",
196
+ {
197
+ ...labelProps,
198
+ htmlFor,
199
+ className: `text-primary/50 border-primary/10 bg-smoke-eerie absolute top-0 left-3 -translate-y-1/2 transform rounded-sm border px-1 py-0.5 pt-1 text-[10px] leading-none md:px-2 ${htmlFor ? "cursor-pointer" : "cursor-default"} ${className}`,
200
+ children
201
+ }
202
+ ) : null, "InputLabel");
203
+ var Input = /* @__PURE__ */ __name(({
204
+ label = "",
205
+ register,
206
+ className = "",
207
+ error = "",
208
+ containerClassName = "",
209
+ icons,
210
+ inputProps,
211
+ needRef = false,
212
+ ref
213
+ }) => {
214
+ const inputRef = react$1.useRef(null);
215
+ const { id, errorId, ...aria } = useFieldIds({
216
+ id: inputProps.id,
217
+ name: inputProps.name ?? register?.name,
218
+ error,
219
+ describedBy: inputProps["aria-describedby"]
220
+ });
221
+ const mergedRef = react$1.useMemo(
222
+ () => mergeRefs(register?.ref, ref, inputRef),
223
+ [register?.ref, ref]
224
+ );
225
+ react$1.useEffect(() => {
226
+ if (needRef) inputRef.current?.focus();
227
+ }, [needRef]);
228
+ const handleChange = /* @__PURE__ */ __name((event) => {
229
+ if (inputProps.disabled) return;
230
+ inputProps.onChange?.(event);
231
+ void register?.onChange(event);
232
+ }, "handleChange");
233
+ const handleBlur = /* @__PURE__ */ __name((event) => {
234
+ inputProps.onBlur?.(event);
235
+ void register?.onBlur(event);
236
+ }, "handleBlur");
237
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex max-w-full min-w-0 flex-col gap-1.5 ${containerClassName}`, children: [
238
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
239
+ /* @__PURE__ */ jsxRuntime.jsx(InputLabel, { htmlFor: id, children: label }),
240
+ /* @__PURE__ */ jsxRuntime.jsxs(
241
+ "div",
242
+ {
243
+ "data-invalid": error ? "" : void 0,
244
+ 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}`,
245
+ children: [
246
+ /* @__PURE__ */ jsxRuntime.jsx(InputIcon, { icon: icons?.left }),
247
+ /* @__PURE__ */ jsxRuntime.jsx(
248
+ "input",
249
+ {
250
+ ...register,
251
+ ...inputProps,
252
+ ...aria,
253
+ ref: mergedRef,
254
+ id,
255
+ onChange: handleChange,
256
+ onBlur: handleBlur,
257
+ onWheel: (event) => {
258
+ inputProps.onWheel?.(event);
259
+ if (inputProps.type === "number") event.currentTarget.blur();
260
+ },
261
+ className: `text-primary placeholder:text-primary/30 autofill-effect min-w-0 flex-1 border-none bg-transparent py-2 text-[13px] leading-normal outline-hidden placeholder:text-[13px] focus:border-none focus:outline-hidden disabled:cursor-not-allowed xl:py-3 ${inputProps.className ?? ""}`
262
+ }
263
+ ),
264
+ /* @__PURE__ */ jsxRuntime.jsx(InputIcon, { icon: icons?.right })
265
+ ]
266
+ }
267
+ )
268
+ ] }),
269
+ /* @__PURE__ */ jsxRuntime.jsx(InputError, { id: errorId, error })
270
+ ] });
271
+ }, "Input");
272
+ var Radio = /* @__PURE__ */ __name(({
273
+ value,
274
+ onChange,
275
+ options,
276
+ className = "",
277
+ containerClassName = "",
278
+ error = "",
279
+ label,
280
+ name,
281
+ disabled = false
282
+ }) => {
283
+ const generated = react$1.useId();
284
+ const groupName = name ?? generated;
285
+ const errorId = `${groupName}-error`;
286
+ const index = options.findIndex((option) => option.value === value);
287
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex max-w-full min-w-0 flex-col gap-1.5 ${containerClassName}`, children: [
288
+ /* @__PURE__ */ jsxRuntime.jsx(
289
+ "div",
290
+ {
291
+ role: "radiogroup",
292
+ "aria-label": label,
293
+ "aria-invalid": error ? true : void 0,
294
+ "aria-describedby": error ? errorId : void 0,
295
+ className: `border-battleship-davys-gray mx-auto flex w-full items-center justify-center gap-4 overflow-hidden rounded-full border ${className}`,
296
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-smoke-eerie shadow-primary-btn hover:shadow-primary-btn-hover relative flex h-9 w-full items-center justify-between rounded-full transition-shadow duration-300", children: [
297
+ index >= 0 && /* @__PURE__ */ jsxRuntime.jsx(
298
+ "div",
299
+ {
300
+ "aria-hidden": "true",
301
+ className: "bg-accent-duo absolute h-full transform rounded-full shadow-lg transition-transform duration-300 ease-in-out motion-reduce:transition-none",
302
+ style: {
303
+ width: `${String(100 / options.length)}%`,
304
+ transform: `translateX(${String(index * 100)}%)`
305
+ }
306
+ }
307
+ ),
308
+ options.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
309
+ "label",
310
+ {
311
+ className: `has-focus-visible:outline-blue-crayola-c relative z-1 inline-block flex-1 rounded-full text-center text-sm has-focus-visible:outline-2 has-focus-visible:outline-offset-2 ${disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"} ${value === option.value ? "font-semibold text-white/90" : "text-primary/50 font-medium"}`,
312
+ children: [
313
+ /* @__PURE__ */ jsxRuntime.jsx(
314
+ "input",
315
+ {
316
+ type: "radio",
317
+ name: groupName,
318
+ value: option.value,
319
+ checked: value === option.value,
320
+ disabled,
321
+ onChange: () => {
322
+ onChange(option.value);
323
+ },
324
+ className: "sr-only"
325
+ }
326
+ ),
327
+ option.label
328
+ ]
329
+ },
330
+ option.value
331
+ ))
332
+ ] })
333
+ }
334
+ ),
335
+ /* @__PURE__ */ jsxRuntime.jsx(InputError, { id: errorId, error })
336
+ ] });
337
+ }, "Radio");
338
+
339
+ // src/lib/dropdown-position.ts
340
+ var DROPDOWN_GAP = 8;
341
+ var getDropdownPlacement = /* @__PURE__ */ __name(({
342
+ rect,
343
+ viewportHeight,
344
+ desired,
345
+ needed
346
+ }) => {
347
+ const below = viewportHeight - rect.bottom - DROPDOWN_GAP;
348
+ const above = rect.top - DROPDOWN_GAP;
349
+ const room = desired === "bottom" ? below : above;
350
+ const other = desired === "bottom" ? above : below;
351
+ if (room >= needed || other <= room) return desired;
352
+ return desired === "bottom" ? "top" : "bottom";
353
+ }, "getDropdownPlacement");
354
+ var getDropdownStyle = /* @__PURE__ */ __name((rect, placement, viewportHeight) => ({
355
+ left: rect.left,
356
+ width: rect.width,
357
+ ...placement === "top" ? { bottom: viewportHeight - rect.top + DROPDOWN_GAP } : { top: rect.bottom + DROPDOWN_GAP }
358
+ }), "getDropdownStyle");
359
+
360
+ // src/lib/scrollRowIntoView.ts
361
+ var scrollRowIntoView = /* @__PURE__ */ __name((list, row) => {
362
+ const top = row.offsetTop;
363
+ const bottom = top + row.offsetHeight;
364
+ if (top < list.scrollTop) list.scrollTop = top;
365
+ else if (bottom > list.scrollTop + list.clientHeight) list.scrollTop = bottom - list.clientHeight;
366
+ }, "scrollRowIntoView");
367
+
368
+ // src/lib/typeahead.ts
369
+ var findTypeaheadMatch = /* @__PURE__ */ __name((options, typed, fromIndex) => {
370
+ const text = typed.toLowerCase();
371
+ if (!text || options.length === 0) return -1;
372
+ const isRepeat = text.length > 1 && new Set(text).size === 1;
373
+ const query = isRepeat ? text.slice(0, 1) : text;
374
+ const start = isRepeat ? fromIndex + 1 : fromIndex;
375
+ for (let step = 0; step < options.length; step += 1) {
376
+ const index = ((start + step) % options.length + options.length) % options.length;
377
+ const option = options.at(index);
378
+ if (option && !option.disabled && option.label.toLowerCase().startsWith(query)) return index;
379
+ }
380
+ return -1;
381
+ }, "findTypeaheadMatch");
382
+ var findEnabledIndex = /* @__PURE__ */ __name((options, from, step) => {
383
+ for (let index = from + step; index >= 0 && index < options.length; index += step) {
384
+ if (!options[index]?.disabled) return index;
385
+ }
386
+ return -1;
387
+ }, "findEnabledIndex");
388
+ var openStack = [];
389
+ var useDismiss = /* @__PURE__ */ __name((onDismiss, { enabled = true, ignore, outside = true, escape = true } = {}) => {
390
+ const ref = react$1.useRef(null);
391
+ const onDismissRef = react$1.useRef(onDismiss);
392
+ const ignoreRef = react$1.useRef(ignore);
393
+ react$1.useLayoutEffect(() => {
394
+ onDismissRef.current = onDismiss;
395
+ ignoreRef.current = ignore;
396
+ });
397
+ react$1.useEffect(() => {
398
+ if (!enabled) return;
399
+ const token = /* @__PURE__ */ Symbol("dismissable");
400
+ if (escape) openStack.push(token);
401
+ const handlePress = /* @__PURE__ */ __name((event) => {
402
+ const element = ref.current;
403
+ if (!outside || !element) return;
404
+ const path = event.composedPath();
405
+ const isInside = path.includes(element) || (ignoreRef.current ?? []).some(({ current }) => current !== null && path.includes(current));
406
+ if (!isInside) onDismissRef.current("outside", event);
407
+ }, "handlePress");
408
+ const handleKey = /* @__PURE__ */ __name((event) => {
409
+ if (!escape || event.key !== "Escape" || event.defaultPrevented) return;
410
+ if (openStack.at(-1) !== token) return;
411
+ onDismissRef.current("escape", event);
412
+ }, "handleKey");
413
+ document.addEventListener("pointerdown", handlePress, true);
414
+ document.addEventListener("keydown", handleKey);
415
+ return () => {
416
+ document.removeEventListener("pointerdown", handlePress, true);
417
+ document.removeEventListener("keydown", handleKey);
418
+ const index = openStack.indexOf(token);
419
+ if (index !== -1) openStack.splice(index, 1);
420
+ };
421
+ }, [enabled, outside, escape]);
422
+ return ref;
423
+ }, "useDismiss");
424
+ var LIST_MAX_HEIGHT = 240 + 10;
425
+ var TYPEAHEAD_RESET_MS = 700;
426
+ var labelTextOf = /* @__PURE__ */ __name((option) => option.searchLabel ?? (typeof option.label === "string" ? option.label : String(option.value)), "labelTextOf");
427
+ var Select = /* @__PURE__ */ __name(({
428
+ label = "",
429
+ className = "",
430
+ error = "",
431
+ containerClassName = "",
432
+ optionsClassName = "",
433
+ icons,
434
+ selectProps,
435
+ options,
436
+ position = "bottom",
437
+ clearable = true
438
+ }) => {
439
+ registerInputIcons();
440
+ const baseId = react$1.useId();
441
+ const triggerId = selectProps.id ?? `${baseId}-field`;
442
+ const listId = `${baseId}-list`;
443
+ const errorId = `${baseId}-error`;
444
+ const optionId = /* @__PURE__ */ __name((index) => `${baseId}-option-${String(index)}`, "optionId");
445
+ const [isOpenState, setIsOpen] = react$1.useState(false);
446
+ const [activeIndex, setActiveIndex] = react$1.useState(-1);
447
+ const [list, setList] = react$1.useState(null);
448
+ const triggerBoxRef = react$1.useRef(null);
449
+ const listRef = react$1.useRef(null);
450
+ const activeOptionRef = react$1.useRef(null);
451
+ const listboxRef = react$1.useRef(null);
452
+ const typedRef = react$1.useRef({ text: "", timer: 0 });
453
+ const selectedIndex = options.findIndex((option) => option.value === selectProps.value);
454
+ const optionAt = /* @__PURE__ */ __name((index) => index >= 0 && index < options.length ? options[index] : void 0, "optionAt");
455
+ const selected = optionAt(selectedIndex);
456
+ const hasValue = selected !== void 0 && selected.value !== "";
457
+ const canOpen = options.length > 0;
458
+ const isOpen = isOpenState && !selectProps.disabled;
459
+ const containerRef = useDismiss(
460
+ () => {
461
+ setIsOpen(false);
462
+ },
463
+ { enabled: isOpen, ignore: [listRef] }
464
+ );
465
+ const open = /* @__PURE__ */ __name((at) => {
466
+ if (!canOpen) return;
467
+ setActiveIndex(at);
468
+ setIsOpen(true);
469
+ }, "open");
470
+ const close = /* @__PURE__ */ __name(() => {
471
+ setIsOpen(false);
472
+ }, "close");
473
+ const choose = /* @__PURE__ */ __name((index) => {
474
+ const option = optionAt(index);
475
+ if (!option || option.disabled || selectProps.disabled) return;
476
+ selectProps.onChange(clearable && index === selectedIndex ? "" : option.value);
477
+ close();
478
+ }, "choose");
479
+ react$1.useLayoutEffect(() => {
480
+ if (!isOpen) return;
481
+ const update = /* @__PURE__ */ __name(() => {
482
+ const box = triggerBoxRef.current;
483
+ if (!box) return;
484
+ const rect = box.getBoundingClientRect();
485
+ const placement = getDropdownPlacement({
486
+ rect,
487
+ viewportHeight: window.innerHeight,
488
+ desired: position,
489
+ needed: Math.min(options.length * 32 + 8, LIST_MAX_HEIGHT)
490
+ });
491
+ setList({ rect, placement });
492
+ }, "update");
493
+ update();
494
+ window.addEventListener("scroll", update, true);
495
+ window.addEventListener("resize", update);
496
+ return () => {
497
+ window.removeEventListener("scroll", update, true);
498
+ window.removeEventListener("resize", update);
499
+ };
500
+ }, [isOpen, position, options.length]);
501
+ react$1.useEffect(() => {
502
+ const row = activeOptionRef.current;
503
+ const scroller = listboxRef.current;
504
+ if (isOpen && scroller && row) scrollRowIntoView(scroller, row);
505
+ }, [isOpen, activeIndex, list]);
506
+ react$1.useEffect(() => {
507
+ const typed = typedRef.current;
508
+ return () => {
509
+ window.clearTimeout(typed.timer);
510
+ };
511
+ }, []);
512
+ const typeAhead = /* @__PURE__ */ __name((character) => {
513
+ const typed = typedRef.current;
514
+ window.clearTimeout(typed.timer);
515
+ typed.text += character;
516
+ typed.timer = window.setTimeout(() => {
517
+ typed.text = "";
518
+ }, TYPEAHEAD_RESET_MS);
519
+ const match = findTypeaheadMatch(
520
+ options.map((option) => ({ label: labelTextOf(option), disabled: option.disabled })),
521
+ typed.text,
522
+ isOpen ? activeIndex : selectedIndex
523
+ );
524
+ if (match === -1) return;
525
+ if (isOpen) setActiveIndex(match);
526
+ else open(match);
527
+ }, "typeAhead");
528
+ const handleKeyDown = /* @__PURE__ */ __name((event) => {
529
+ if (selectProps.disabled || event.altKey || event.ctrlKey || event.metaKey) return;
530
+ const first = findEnabledIndex(options, -1, 1);
531
+ const last = findEnabledIndex(options, options.length, -1);
532
+ switch (event.key) {
533
+ case "ArrowDown":
534
+ case "ArrowUp": {
535
+ event.preventDefault();
536
+ if (!isOpen) {
537
+ open(selectedIndex !== -1 ? selectedIndex : event.key === "ArrowDown" ? first : last);
538
+ return;
539
+ }
540
+ const next = findEnabledIndex(options, activeIndex, event.key === "ArrowDown" ? 1 : -1);
541
+ if (next !== -1) setActiveIndex(next);
542
+ return;
543
+ }
544
+ case "Home":
545
+ case "End":
546
+ event.preventDefault();
547
+ if (isOpen) setActiveIndex(event.key === "Home" ? first : last);
548
+ else open(event.key === "Home" ? first : last);
549
+ return;
550
+ case "Enter":
551
+ case " ":
552
+ event.preventDefault();
553
+ if (isOpen) choose(activeIndex);
554
+ else open(selectedIndex !== -1 ? selectedIndex : first);
555
+ return;
556
+ case "Tab":
557
+ close();
558
+ return;
559
+ default:
560
+ if (event.key.length === 1) {
561
+ event.preventDefault();
562
+ typeAhead(event.key);
563
+ }
564
+ }
565
+ }, "handleKeyDown");
566
+ return /* @__PURE__ */ jsxRuntime.jsxs(
567
+ "div",
568
+ {
569
+ ref: containerRef,
570
+ className: `flex max-w-full min-w-0 flex-col gap-1.5 ${containerClassName}`,
571
+ children: [
572
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", ref: triggerBoxRef, children: [
573
+ /* @__PURE__ */ jsxRuntime.jsx(InputLabel, { htmlFor: triggerId, className: "z-2", children: label }),
574
+ /* @__PURE__ */ jsxRuntime.jsxs(
575
+ "div",
576
+ {
577
+ "data-invalid": error ? "" : void 0,
578
+ 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}`,
579
+ children: [
580
+ /* @__PURE__ */ jsxRuntime.jsx(InputIcon, { icon: icons?.left }),
581
+ /* @__PURE__ */ jsxRuntime.jsxs(
582
+ "button",
583
+ {
584
+ id: triggerId,
585
+ type: "button",
586
+ role: "combobox",
587
+ "aria-haspopup": "listbox",
588
+ "aria-expanded": isOpen,
589
+ "aria-controls": isOpen ? listId : void 0,
590
+ "aria-activedescendant": isOpen && activeIndex !== -1 ? optionId(activeIndex) : void 0,
591
+ "aria-invalid": error ? true : void 0,
592
+ "aria-describedby": error ? errorId : void 0,
593
+ disabled: selectProps.disabled,
594
+ onClick: () => {
595
+ if (isOpen) close();
596
+ else open(selectedIndex);
597
+ },
598
+ onKeyDown: handleKeyDown,
599
+ 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"}`,
600
+ children: [
601
+ /* @__PURE__ */ jsxRuntime.jsx(
602
+ "span",
603
+ {
604
+ className: `flex-1 truncate py-2 first-letter:capitalize xl:py-3 ${hasValue ? "" : "text-primary/30"}`,
605
+ children: selected?.label ?? selectProps.placeholder
606
+ }
607
+ ),
608
+ /* @__PURE__ */ jsxRuntime.jsx(
609
+ react.Icon,
610
+ {
611
+ icon: "solar:alt-arrow-down-linear",
612
+ className: `size-4 transition-transform motion-reduce:transition-none md:size-5 ${isOpen ? "rotate-180" : ""} ${hasValue ? "text-primary" : "text-primary/30"}`
613
+ }
614
+ )
615
+ ]
616
+ }
617
+ ),
618
+ /* @__PURE__ */ jsxRuntime.jsx(InputIcon, { icon: icons?.right })
619
+ ]
620
+ }
621
+ )
622
+ ] }),
623
+ /* @__PURE__ */ jsxRuntime.jsx(InputError, { id: errorId, error }),
624
+ isOpen && list && reactDom.createPortal(
625
+ /* @__PURE__ */ jsxRuntime.jsx(
626
+ "div",
627
+ {
628
+ ref: listRef,
629
+ className: `border-primary/10 bg-smoke-eerie fixed z-3 overflow-hidden rounded-lg border shadow-md ${optionsClassName}`,
630
+ style: getDropdownStyle(list.rect, list.placement, window.innerHeight),
631
+ children: /* @__PURE__ */ jsxRuntime.jsx(
632
+ "ul",
633
+ {
634
+ id: listId,
635
+ ref: listboxRef,
636
+ role: "listbox",
637
+ "aria-label": label || void 0,
638
+ className: "relative flex max-h-60 flex-col gap-0.5 overflow-auto p-1",
639
+ children: options.map((option, index) => {
640
+ const isSelected = index === selectedIndex;
641
+ const isActive = index === activeIndex;
642
+ return /* @__PURE__ */ jsxRuntime.jsxs(
643
+ "li",
644
+ {
645
+ id: optionId(index),
646
+ ref: isActive ? activeOptionRef : null,
647
+ role: "option",
648
+ "aria-selected": isSelected,
649
+ "aria-disabled": option.disabled ? true : void 0,
650
+ className: `text-tertiary flex items-center justify-between gap-2 rounded-sm px-2 py-1.5 text-[13px] ${option.disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer"} ${isActive ? "bg-primary/5" : ""} ${isSelected ? "bg-primary/8" : ""}`,
651
+ onMouseMove: () => {
652
+ if (!option.disabled && !isActive) setActiveIndex(index);
653
+ },
654
+ onClick: () => {
655
+ choose(index);
656
+ },
657
+ children: [
658
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 text-left text-[13px] first-letter:capitalize", children: option.label }),
659
+ isSelected && /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "solar:unread-linear", className: "text-primary size-4 md:size-5" })
660
+ ]
661
+ },
662
+ option.value
663
+ );
664
+ })
665
+ }
666
+ )
667
+ }
668
+ ),
669
+ document.body
670
+ )
671
+ ]
672
+ }
673
+ );
674
+ }, "Select");
675
+ var Textarea = /* @__PURE__ */ __name(({
676
+ label = "",
677
+ register,
678
+ className = "",
679
+ error = "",
680
+ containerClassName = "",
681
+ textAreaProps,
682
+ needRef = false,
683
+ ref
684
+ }) => {
685
+ const textareaRef = react$1.useRef(null);
686
+ const { id, errorId, ...aria } = useFieldIds({
687
+ id: textAreaProps.id,
688
+ name: textAreaProps.name ?? register?.name,
689
+ error,
690
+ describedBy: textAreaProps["aria-describedby"]
691
+ });
692
+ const mergedRef = react$1.useMemo(
693
+ () => mergeRefs(register?.ref, ref, textareaRef),
694
+ [register?.ref, ref]
695
+ );
696
+ react$1.useEffect(() => {
697
+ if (needRef) textareaRef.current?.focus();
698
+ }, [needRef]);
699
+ const handleChange = /* @__PURE__ */ __name((event) => {
700
+ if (textAreaProps.disabled) return;
701
+ textAreaProps.onChange?.(event);
702
+ void register?.onChange(event);
703
+ }, "handleChange");
704
+ const handleBlur = /* @__PURE__ */ __name((event) => {
705
+ textAreaProps.onBlur?.(event);
706
+ void register?.onBlur(event);
707
+ }, "handleBlur");
708
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex max-w-full min-w-0 flex-col gap-1.5 ${containerClassName}`, children: [
709
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
710
+ /* @__PURE__ */ jsxRuntime.jsx(InputLabel, { htmlFor: id, children: label }),
711
+ /* @__PURE__ */ jsxRuntime.jsx(
712
+ "div",
713
+ {
714
+ "data-invalid": error ? "" : void 0,
715
+ className: `border-primary/10 bg-smoke-eerie focus-within:border-blue-crayola-c data-invalid:border-red-c overflow-hidden rounded-lg border ${className}`,
716
+ children: /* @__PURE__ */ jsxRuntime.jsx(
717
+ "textarea",
718
+ {
719
+ ...register,
720
+ ...textAreaProps,
721
+ ...aria,
722
+ ref: mergedRef,
723
+ id,
724
+ rows: textAreaProps.rows ?? 5,
725
+ onChange: handleChange,
726
+ onBlur: handleBlur,
727
+ className: `text-primary placeholder:text-primary/30 autofill-effect block w-full resize-y border-none bg-transparent px-3 py-2 text-[13px] leading-normal outline-hidden placeholder:text-[13px] focus:border-none focus:outline-hidden disabled:cursor-not-allowed xl:py-3 ${textAreaProps.className ?? ""}`
728
+ }
729
+ )
730
+ }
731
+ )
732
+ ] }),
733
+ /* @__PURE__ */ jsxRuntime.jsx(InputError, { id: errorId, error })
734
+ ] });
735
+ }, "Textarea");
736
+
737
+ exports.Checkbox = Checkbox;
738
+ exports.Input = Input;
739
+ exports.InputError = InputError;
740
+ exports.InputIcon = InputIcon;
741
+ exports.InputLabel = InputLabel;
742
+ exports.Radio = Radio;
743
+ exports.Select = Select;
744
+ exports.Textarea = Textarea;
745
+ //# sourceMappingURL=index.cjs.map
746
+ //# sourceMappingURL=index.cjs.map