@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,753 @@
1
+ import { addCollection, Icon } from '@iconify/react';
2
+ import { GradientText, Divider, Button } from '@beautinique/frontend-components/ui';
3
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
4
+ import { useMemo, useId, useRef, useState, useEffect, useSyncExternalStore, useLayoutEffect } from 'react';
5
+ import { createPortal } from 'react-dom';
6
+ import { LinearGradient } from '@beautinique/frontend-components/linear-gradient';
7
+ import { InputIcon } from '@beautinique/frontend-components/inputs';
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
+ var createIconRegistry = /* @__PURE__ */ __name((sets) => {
15
+ let registered = false;
16
+ return {
17
+ register: /* @__PURE__ */ __name(() => {
18
+ if (registered) return;
19
+ for (const set of sets) addCollection(set);
20
+ registered = true;
21
+ }, "register"),
22
+ names: sets.flatMap(
23
+ ({ prefix, icons, aliases }) => [...Object.keys(icons), ...Object.keys(aliases ?? {})].map((name) => `${prefix}:${name}`)
24
+ )
25
+ };
26
+ }, "createIconRegistry");
27
+
28
+ // src/layout/layout-icons.ts
29
+ var ICON_SETS = [
30
+ {
31
+ prefix: "solar",
32
+ width: 24,
33
+ height: 24,
34
+ icons: {
35
+ "danger-triangle-linear": {
36
+ body: '<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><path d="M5.31171 10.7615C8.23007 5.58716 9.68925 3 12 3C14.3107 3 15.7699 5.58716 18.6883 10.7615L19.0519 11.4063C21.4771 15.7061 22.6897 17.856 21.5937 19.428C20.4978 21 17.7864 21 12.3637 21H11.6363C6.21356 21 3.50217 21 2.40626 19.428C1.31034 17.856 2.52291 15.7061 4.94805 11.4063L5.31171 10.7615Z"/><path d="M12 8V13"/><path stroke-linejoin="round" d="M12 16H12.0001"/></g>'
37
+ },
38
+ "check-circle-linear": {
39
+ body: '<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><circle cx="12" cy="12" r="10"/><path stroke-linejoin="round" d="M8.5 12.5L10.5 14.5L15.5 9.5"/></g>'
40
+ },
41
+ "folder-error-linear": {
42
+ body: '<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><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"/><path d="M10.5 15L13.5 12M13.5 15L10.5 12"/></g>'
43
+ },
44
+ "info-circle-outline": {
45
+ body: '<g fill="currentColor"><path d="M12 17.75C12.4142 17.75 12.75 17.4142 12.75 17V11C12.75 10.5858 12.4142 10.25 12 10.25C11.5858 10.25 11.25 10.5858 11.25 11V17C11.25 17.4142 11.5858 17.75 12 17.75Z"/><path d="M12 7C12.5523 7 13 7.44772 13 8C13 8.55228 12.5523 9 12 9C11.4477 9 11 8.55228 11 8C11 7.44772 11.4477 7 12 7Z"/><path fill-rule="evenodd" d="M1.25 12C1.25 6.06294 6.06294 1.25 12 1.25C17.9371 1.25 22.75 6.06294 22.75 12C22.75 17.9371 17.9371 22.75 12 22.75C6.06294 22.75 1.25 17.9371 1.25 12ZM12 2.75C6.89137 2.75 2.75 6.89137 2.75 12C2.75 17.1086 6.89137 21.25 12 21.25C17.1086 21.25 21.25 17.1086 21.25 12C21.25 6.89137 17.1086 2.75 12 2.75Z" clip-rule="evenodd"/></g>'
46
+ },
47
+ "alt-arrow-down-linear": {
48
+ body: '<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19 9L12 15L5 9"/>'
49
+ }
50
+ }
51
+ },
52
+ {
53
+ prefix: "lucide",
54
+ width: 24,
55
+ height: 24,
56
+ icons: {
57
+ x: {
58
+ body: '<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18 6L6 18M6 6l12 12"/>'
59
+ }
60
+ }
61
+ }
62
+ ];
63
+ var { register: registerLayoutIcons, names: LAYOUT_ICON_NAMES } = createIconRegistry(ICON_SETS);
64
+ var LoadingText = /* @__PURE__ */ __name(({ text = "Loading", className = "" }) => /* @__PURE__ */ jsxs("div", { role: "status", className: `w-fit ${className}`, children: [
65
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: text }),
66
+ /* @__PURE__ */ jsx(
67
+ "div",
68
+ {
69
+ "aria-hidden": "true",
70
+ "data-text": text,
71
+ className: "loading-text after:text-primary/0 w-fit font-mono text-[3.5vmin] font-extrabold after:content-[attr(data-text)]",
72
+ style: {
73
+ "--loading-text-duration": `${String(Math.max(1, text.length * 0.08))}s`
74
+ }
75
+ }
76
+ )
77
+ ] }), "LoadingText");
78
+ var RINGS = [
79
+ { side: "borderBottomWidth", color: "red", rx: 45, ry: -45, z: 0 },
80
+ { side: "borderRightWidth", color: "green", rx: 55, ry: 15, z: 90 },
81
+ { side: "borderTopWidth", color: "blue", rx: 40, ry: 65, z: 180 }
82
+ ];
83
+ var LoadingRings = /* @__PURE__ */ __name(({ className = "", text = "Loading" }) => /* @__PURE__ */ jsx("div", { className: `flex h-full w-full items-center justify-center ${className}`, children: /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col items-center", children: [
84
+ /* @__PURE__ */ jsx("div", { "aria-hidden": "true", className: "relative h-[20vmin] w-[20vmin]", children: RINGS.map((ring, index) => /* @__PURE__ */ jsx(
85
+ "div",
86
+ {
87
+ className: "absolute inset-0 animate-[ring-spin_2s_linear_infinite] rounded-full border-solid shadow-[0_0_10px_rgb(var(--primary-rgb),0.15)] motion-reduce:animate-none",
88
+ style: {
89
+ "--rx": `${String(ring.rx)}deg`,
90
+ "--ry": `${String(ring.ry)}deg`,
91
+ "--z": `${String(ring.z)}deg`,
92
+ borderColor: ring.color,
93
+ [ring.side]: "0.6vmin",
94
+ animationDelay: `${String(index * -0.5)}s`
95
+ }
96
+ },
97
+ ring.side
98
+ )) }),
99
+ /* @__PURE__ */ jsx(LoadingText, { text, className: "mt-[2vmin]" })
100
+ ] }) }), "LoadingRings");
101
+ var STATUS_ICON = {
102
+ error: "solar:danger-triangle-linear",
103
+ success: "solar:check-circle-linear",
104
+ empty: "solar:folder-error-linear"
105
+ };
106
+ var ApiStatus = /* @__PURE__ */ __name(({ className = "", ...props }) => {
107
+ registerLayoutIcons();
108
+ return /* @__PURE__ */ jsx(
109
+ "div",
110
+ {
111
+ className: `m-auto flex h-full min-h-60 w-full flex-col items-center justify-center gap-2 p-4 ${className}`,
112
+ children: props.status === "loading" ? /* @__PURE__ */ jsx(LoadingRings, { text: props.text ?? "Loading...." }) : /* @__PURE__ */ jsxs(
113
+ "div",
114
+ {
115
+ role: props.status === "error" ? "alert" : "status",
116
+ className: "flex flex-col items-center justify-center gap-2",
117
+ children: [
118
+ /* @__PURE__ */ jsx("div", { className: "bg-primary/5 grid size-8 place-items-center rounded-full p-2 md:size-10", children: /* @__PURE__ */ jsx(Icon, { icon: STATUS_ICON[props.status], className: "text-silver-jet size-full shrink-0" }) }),
119
+ hasContent(props.title) && /* @__PURE__ */ jsx(GradientText, { type: "silver", className: "text-sm text-shadow-sm sm:text-base md:text-lg", children: props.title }),
120
+ hasContent(props.description) && /* @__PURE__ */ jsx("div", { className: "text-silver-jet text-center text-xs leading-6 font-normal sm:text-sm", children: props.description }),
121
+ props.divider === true && /* @__PURE__ */ jsx(Divider, { className: "mt-1" })
122
+ ]
123
+ }
124
+ )
125
+ }
126
+ );
127
+ }, "ApiStatus");
128
+ var BorderGradient = /* @__PURE__ */ __name(({
129
+ children,
130
+ className = "",
131
+ containerClassName = "",
132
+ ...divProps
133
+ }) => /* @__PURE__ */ jsx("div", { className: `bg-border-gradient mx-auto w-full rounded-3xl p-px ${containerClassName}`, children: /* @__PURE__ */ jsx(
134
+ "div",
135
+ {
136
+ ...divProps,
137
+ className: `shadow-light-dark-soft bg-platinum-black base:p-6 rounded-[23px] p-4 ${className}`,
138
+ children
139
+ }
140
+ ) }), "BorderGradient");
141
+ var openStack = [];
142
+ var useDismiss = /* @__PURE__ */ __name((onDismiss, { enabled = true, ignore, outside = true, escape = true } = {}) => {
143
+ const ref = useRef(null);
144
+ const onDismissRef = useRef(onDismiss);
145
+ const ignoreRef = useRef(ignore);
146
+ useLayoutEffect(() => {
147
+ onDismissRef.current = onDismiss;
148
+ ignoreRef.current = ignore;
149
+ });
150
+ useEffect(() => {
151
+ if (!enabled) return;
152
+ const token = /* @__PURE__ */ Symbol("dismissable");
153
+ if (escape) openStack.push(token);
154
+ const handlePress = /* @__PURE__ */ __name((event) => {
155
+ const element = ref.current;
156
+ if (!outside || !element) return;
157
+ const path = event.composedPath();
158
+ const isInside = path.includes(element) || (ignoreRef.current ?? []).some(({ current }) => current !== null && path.includes(current));
159
+ if (!isInside) onDismissRef.current("outside", event);
160
+ }, "handlePress");
161
+ const handleKey = /* @__PURE__ */ __name((event) => {
162
+ if (!escape || event.key !== "Escape" || event.defaultPrevented) return;
163
+ if (openStack.at(-1) !== token) return;
164
+ onDismissRef.current("escape", event);
165
+ }, "handleKey");
166
+ document.addEventListener("pointerdown", handlePress, true);
167
+ document.addEventListener("keydown", handleKey);
168
+ return () => {
169
+ document.removeEventListener("pointerdown", handlePress, true);
170
+ document.removeEventListener("keydown", handleKey);
171
+ const index = openStack.indexOf(token);
172
+ if (index !== -1) openStack.splice(index, 1);
173
+ };
174
+ }, [enabled, outside, escape]);
175
+ return ref;
176
+ }, "useDismiss");
177
+
178
+ // src/lib/focus.ts
179
+ var TABBABLE = [
180
+ "a[href]",
181
+ "area[href]",
182
+ "button:not([disabled])",
183
+ 'input:not([disabled]):not([type="hidden"])',
184
+ "select:not([disabled])",
185
+ "textarea:not([disabled])",
186
+ "summary",
187
+ "audio[controls]",
188
+ "video[controls]",
189
+ '[contenteditable]:not([contenteditable="false"])',
190
+ "[tabindex]"
191
+ ].join(",");
192
+ var isTabbable = /* @__PURE__ */ __name((element) => {
193
+ if (element.tabIndex < 0) return false;
194
+ return !element.closest("[hidden], [inert]");
195
+ }, "isTabbable");
196
+ var getTabbable = /* @__PURE__ */ __name((root) => [...root.querySelectorAll(TABBABLE)].filter(isTabbable), "getTabbable");
197
+
198
+ // src/lib/useFocusTrap.ts
199
+ var activeTraps = [];
200
+ var useFocusTrap = /* @__PURE__ */ __name(({
201
+ enabled,
202
+ initialFocus,
203
+ returnFocus = true
204
+ }) => {
205
+ const ref = useRef(null);
206
+ const initialFocusRef = useRef(initialFocus);
207
+ useEffect(() => {
208
+ initialFocusRef.current = initialFocus;
209
+ });
210
+ useEffect(() => {
211
+ const dialog = ref.current;
212
+ if (!enabled || !dialog) return;
213
+ const token = /* @__PURE__ */ Symbol("trap");
214
+ const previous = document.activeElement instanceof HTMLElement ? document.activeElement : null;
215
+ activeTraps.push(token);
216
+ (initialFocusRef.current?.current ?? getTabbable(dialog).at(0) ?? dialog).focus();
217
+ const handleKey = /* @__PURE__ */ __name((event) => {
218
+ if (event.key !== "Tab" || activeTraps.at(-1) !== token) return;
219
+ const tabbable = getTabbable(dialog);
220
+ const first = tabbable.at(0);
221
+ const last = tabbable.at(-1);
222
+ const current = document.activeElement;
223
+ if (!first || !last) {
224
+ event.preventDefault();
225
+ dialog.focus();
226
+ return;
227
+ }
228
+ if (!(current instanceof Node) || !dialog.contains(current) || current === dialog) {
229
+ event.preventDefault();
230
+ (event.shiftKey ? last : first).focus();
231
+ } else if (event.shiftKey && current === first) {
232
+ event.preventDefault();
233
+ last.focus();
234
+ } else if (!event.shiftKey && current === last) {
235
+ event.preventDefault();
236
+ first.focus();
237
+ }
238
+ }, "handleKey");
239
+ document.addEventListener("keydown", handleKey);
240
+ return () => {
241
+ document.removeEventListener("keydown", handleKey);
242
+ const index = activeTraps.indexOf(token);
243
+ if (index !== -1) activeTraps.splice(index, 1);
244
+ if (returnFocus && previous?.isConnected) previous.focus();
245
+ };
246
+ }, [enabled, returnFocus]);
247
+ return ref;
248
+ }, "useFocusTrap");
249
+ var subscribe = /* @__PURE__ */ __name(() => () => void 0, "subscribe");
250
+ var useIsClient = /* @__PURE__ */ __name(() => useSyncExternalStore(
251
+ subscribe,
252
+ () => true,
253
+ () => false
254
+ ), "useIsClient");
255
+ var holders = 0;
256
+ var saved = null;
257
+ var lock = /* @__PURE__ */ __name(() => {
258
+ holders += 1;
259
+ if (holders > 1) return;
260
+ const { body, documentElement } = document;
261
+ const scrollbar = window.innerWidth - documentElement.clientWidth;
262
+ saved = { overflow: body.style.overflow, paddingRight: body.style.paddingRight };
263
+ body.style.overflow = "hidden";
264
+ if (scrollbar > 0) {
265
+ body.style.paddingRight = `${String(parseFloat(getComputedStyle(body).paddingRight) + scrollbar)}px`;
266
+ }
267
+ }, "lock");
268
+ var unlock = /* @__PURE__ */ __name(() => {
269
+ holders = Math.max(0, holders - 1);
270
+ if (holders > 0 || !saved) return;
271
+ document.body.style.overflow = saved.overflow;
272
+ document.body.style.paddingRight = saved.paddingRight;
273
+ saved = null;
274
+ }, "unlock");
275
+ var useScrollLock = /* @__PURE__ */ __name((enabled) => {
276
+ useEffect(() => {
277
+ if (!enabled) return;
278
+ lock();
279
+ return unlock;
280
+ }, [enabled]);
281
+ }, "useScrollLock");
282
+
283
+ // src/lib/mergeRefs.ts
284
+ var assign = /* @__PURE__ */ __name((ref, node) => {
285
+ if (typeof ref === "function") return ref(node);
286
+ if (ref) ref.current = node;
287
+ return void 0;
288
+ }, "assign");
289
+ var mergeRefs = /* @__PURE__ */ __name((...refs) => (node) => {
290
+ const cleanups = refs.map((ref) => assign(ref, node));
291
+ return () => {
292
+ refs.forEach((ref, index) => {
293
+ const cleanup = cleanups[index];
294
+ if (typeof cleanup === "function") cleanup();
295
+ else assign(ref, null);
296
+ });
297
+ };
298
+ }, "mergeRefs");
299
+ var SCROLL_EPSILON = 4;
300
+ var useScrollable = /* @__PURE__ */ __name((direction) => {
301
+ const ref = useRef(null);
302
+ const [edges, setEdges] = useState({});
303
+ useEffect(() => {
304
+ const element = ref.current;
305
+ if (!element) return;
306
+ const check = /* @__PURE__ */ __name(() => {
307
+ const isHorizontal = direction === "horizontal";
308
+ const size = isHorizontal ? element.clientWidth : element.clientHeight;
309
+ const total = isHorizontal ? element.scrollWidth : element.scrollHeight;
310
+ const position = isHorizontal ? element.scrollLeft : element.scrollTop;
311
+ const hasScroll = total - size > SCROLL_EPSILON;
312
+ const hasBefore = hasScroll && position > SCROLL_EPSILON;
313
+ const hasAfter = hasScroll && total - (position + size) > SCROLL_EPSILON;
314
+ const next = isHorizontal ? { ...hasBefore && { left: true }, ...hasAfter && { right: true } } : { ...hasBefore && { top: true }, ...hasAfter && { bottom: true } };
315
+ setEdges(
316
+ (current) => current.top === next.top && current.bottom === next.bottom && current.left === next.left && current.right === next.right ? current : next
317
+ );
318
+ }, "check");
319
+ check();
320
+ element.addEventListener("scroll", check, { passive: true });
321
+ const observer = new ResizeObserver(check);
322
+ observer.observe(element);
323
+ if (element.firstElementChild) observer.observe(element.firstElementChild);
324
+ return () => {
325
+ element.removeEventListener("scroll", check);
326
+ observer.disconnect();
327
+ };
328
+ }, [direction]);
329
+ return { ref, edges };
330
+ }, "useScrollable");
331
+ var EDGES = ["top", "bottom", "left", "right"];
332
+ var NO_GRADIENT_CLASSES = {};
333
+ var ScrollableGradientContainer = /* @__PURE__ */ __name(({
334
+ direction,
335
+ gradientClassNames = NO_GRADIENT_CLASSES,
336
+ className = "",
337
+ containerClassName = "",
338
+ label,
339
+ scrollerRef,
340
+ children
341
+ }) => {
342
+ const { ref, edges } = useScrollable(direction);
343
+ const mergedRef = useMemo(() => mergeRefs(ref, scrollerRef), [ref, scrollerRef]);
344
+ const isVertical = direction === "vertical";
345
+ const isScrollable = EDGES.some((edge) => edges[edge]);
346
+ return /* @__PURE__ */ jsxs(
347
+ "div",
348
+ {
349
+ className: `relative flex overflow-hidden ${isVertical ? "h-full w-full flex-col" : "h-fit w-full flex-row"} ${containerClassName}`,
350
+ children: [
351
+ EDGES.filter((edge) => edges[edge]).map((edge) => /* @__PURE__ */ jsx(LinearGradient, { position: edge, className: gradientClassNames[edge] }, edge)),
352
+ /* @__PURE__ */ jsx(
353
+ "div",
354
+ {
355
+ ref: mergedRef,
356
+ tabIndex: isScrollable ? 0 : void 0,
357
+ role: isScrollable && label ? "region" : void 0,
358
+ "aria-label": isScrollable ? label : void 0,
359
+ className: `relative scroll-smooth outline-none focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-blue-crayola-c motion-reduce:scroll-auto ${isVertical ? "flex-1 overflow-y-auto" : "grow overflow-x-auto"} ${className}`,
360
+ children: /* @__PURE__ */ jsx(
361
+ "div",
362
+ {
363
+ className: `flex h-full w-full gap-2 ${isVertical ? "min-h-full flex-col" : "min-w-full flex-row"} ${isScrollable ? "items-start justify-start" : "items-center justify-center"}`,
364
+ children
365
+ }
366
+ )
367
+ }
368
+ )
369
+ ]
370
+ }
371
+ );
372
+ }, "ScrollableGradientContainer");
373
+ var ModalWrapper = /* @__PURE__ */ __name(({
374
+ isOpen,
375
+ onClose,
376
+ children,
377
+ containerProps,
378
+ className = "",
379
+ header,
380
+ closeOnOutsideClick = true,
381
+ style,
382
+ label,
383
+ labelledBy,
384
+ describedBy,
385
+ role = "dialog",
386
+ initialFocus,
387
+ closeLabel = "Close"
388
+ }) => {
389
+ registerLayoutIcons();
390
+ const titleId = useId();
391
+ const isClient = useIsClient();
392
+ const isShown = isOpen && isClient;
393
+ const pressedBackdropRef = useRef(false);
394
+ const dialogRef = useFocusTrap({ enabled: isShown, initialFocus });
395
+ useScrollLock(isShown);
396
+ useDismiss(
397
+ () => {
398
+ onClose();
399
+ },
400
+ { enabled: isShown, outside: false }
401
+ );
402
+ if (!isShown) return null;
403
+ const hasTitle = !!header?.title;
404
+ const hasHeader = hasTitle || !!header?.showCloseIcon;
405
+ const closeButton = /* @__PURE__ */ jsx(
406
+ "button",
407
+ {
408
+ type: "button",
409
+ "aria-label": closeLabel,
410
+ className: "group cursor-pointer p-3 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-blue-crayola-c",
411
+ onClick: onClose,
412
+ children: /* @__PURE__ */ jsx(
413
+ Icon,
414
+ {
415
+ icon: "lucide:x",
416
+ className: "text-tertiary group-hover:text-primary size-4 transition-all duration-300 group-hover:scale-110 motion-reduce:transition-none sm:size-5"
417
+ }
418
+ )
419
+ }
420
+ );
421
+ return createPortal(
422
+ /* @__PURE__ */ jsx(
423
+ "div",
424
+ {
425
+ ...containerProps,
426
+ onPointerDown: (event) => {
427
+ pressedBackdropRef.current = event.target === event.currentTarget;
428
+ containerProps?.onPointerDown?.(event);
429
+ },
430
+ onClick: (event) => {
431
+ containerProps?.onClick?.(event);
432
+ if (closeOnOutsideClick && pressedBackdropRef.current && event.target === event.currentTarget) {
433
+ onClose();
434
+ }
435
+ pressedBackdropRef.current = false;
436
+ },
437
+ className: `bg-primary-invert/50 fixed inset-0 z-100 flex items-center justify-center p-8 backdrop-blur-xs ${containerProps?.className ?? ""}`,
438
+ children: /* @__PURE__ */ jsxs(
439
+ "div",
440
+ {
441
+ ref: dialogRef,
442
+ role,
443
+ "aria-modal": "true",
444
+ "aria-label": labelledBy || hasTitle ? void 0 : label,
445
+ "aria-labelledby": labelledBy ?? (hasTitle ? titleId : void 0),
446
+ "aria-describedby": describedBy,
447
+ tabIndex: -1,
448
+ className: `bg-primary-invert border-primary/20 relative flex max-h-[90dvh] w-full max-w-md flex-col overflow-hidden rounded-xl border shadow-lg outline-none ${className}`,
449
+ style,
450
+ children: [
451
+ hasHeader && /* @__PURE__ */ jsxs(
452
+ "div",
453
+ {
454
+ className: `bg-primary-invert z-20 flex max-h-16 items-center ${hasTitle ? "border-b-primary/50 sticky inset-x-0 top-0 justify-between border-b px-6 py-4" : "border-primary/20 shadow-primary/20 absolute top-0 right-0 justify-center rounded-bl-xl border-b border-l shadow-lg"}`,
455
+ children: [
456
+ hasTitle && /* @__PURE__ */ jsx("h2", { id: titleId, className: "flex-1 text-center text-lg font-semibold", children: /* @__PURE__ */ jsx(GradientText, { text: header.title ?? "", type: "silver" }) }),
457
+ header.showCloseIcon && closeButton
458
+ ]
459
+ }
460
+ ),
461
+ /* @__PURE__ */ jsx(
462
+ ScrollableGradientContainer,
463
+ {
464
+ direction: "vertical",
465
+ containerClassName: "flex-1",
466
+ className: "overscroll-contain p-4",
467
+ gradientClassNames: { top: "h-8!", bottom: "h-8!" },
468
+ children
469
+ }
470
+ )
471
+ ]
472
+ }
473
+ )
474
+ }
475
+ ),
476
+ document.body
477
+ );
478
+ }, "ModalWrapper");
479
+ var TYPE_LOOK = {
480
+ success: { icon: "solar:check-circle-linear", rgb: "var(--primary-green-rgb)" },
481
+ error: { icon: "solar:danger-triangle-linear", rgb: "var(--primary-red-rgb)" },
482
+ warning: { icon: "solar:danger-triangle-linear", rgb: "var(--primary-yellow-rgb)" },
483
+ default: { icon: "solar:info-circle-outline", rgb: "var(--primary-rgb)" }
484
+ };
485
+ var ConfirmModal = /* @__PURE__ */ __name(({
486
+ type,
487
+ buttons,
488
+ children,
489
+ description,
490
+ modalProps,
491
+ title
492
+ }) => {
493
+ registerLayoutIcons();
494
+ const baseId = useId();
495
+ const titleId = `${baseId}-title`;
496
+ const descriptionId = `${baseId}-description`;
497
+ const look = TYPE_LOOK[type === "custom" ? "default" : type];
498
+ return /* @__PURE__ */ jsx(
499
+ ModalWrapper,
500
+ {
501
+ ...modalProps,
502
+ role: "alertdialog",
503
+ closeOnOutsideClick: false,
504
+ labelledBy: type === "custom" ? modalProps.labelledBy : titleId,
505
+ describedBy: type === "custom" || !description ? modalProps.describedBy : descriptionId,
506
+ className: `max-w-sm border-2 ${modalProps.className ?? ""}`,
507
+ containerProps: {
508
+ ...modalProps.containerProps,
509
+ className: `p-6! ${modalProps.containerProps?.className ?? ""}`
510
+ },
511
+ style: {
512
+ ...modalProps.style,
513
+ borderColor: `rgba(${look.rgb}, 0.4)`,
514
+ boxShadow: `0 10px 10px 0px rgba(${look.rgb}, 0.1)`
515
+ },
516
+ children: /* @__PURE__ */ jsxs("div", { className: "grid w-full place-items-center gap-6", children: [
517
+ type === "custom" ? children : /* @__PURE__ */ jsxs(Fragment, { children: [
518
+ /* @__PURE__ */ jsx(
519
+ "div",
520
+ {
521
+ className: "grid size-10 shrink-0 place-items-center rounded-full border p-2 md:size-12 lg:size-14",
522
+ style: {
523
+ borderColor: `rgba(${look.rgb}, 0.8)`,
524
+ background: `radial-gradient(circle, rgba(${look.rgb}, 0.25) 25%, rgba(${look.rgb}, 0.5) 50%, rgba(${look.rgb}, 0.75) 75%, rgba(${look.rgb}, 1) 100%)`,
525
+ boxShadow: `0 0 0 1px rgba(${look.rgb}, 0.08), 0 0 12px rgba(${look.rgb}, 0.18), 0 8px 24px rgba(${look.rgb}, 0.22)`
526
+ },
527
+ children: /* @__PURE__ */ jsx(Icon, { icon: look.icon, className: "size-full" })
528
+ }
529
+ ),
530
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2 text-center", children: [
531
+ /* @__PURE__ */ jsx("h2", { id: titleId, children: /* @__PURE__ */ jsx(
532
+ GradientText,
533
+ {
534
+ text: title,
535
+ type: "silver",
536
+ className: "block font-semibold text-shadow-lg md:text-lg lg:text-xl"
537
+ }
538
+ ) }),
539
+ description && /* @__PURE__ */ jsx("p", { id: descriptionId, className: "text-tertiary text-xs font-light lg:text-sm", children: description })
540
+ ] })
541
+ ] }),
542
+ buttons && /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-center gap-4", children: [
543
+ buttons.left && /* @__PURE__ */ jsx(
544
+ Button,
545
+ {
546
+ pattern: "secondary",
547
+ ...buttons.left,
548
+ className: `max-h-10 rounded-md! ${buttons.left.className ?? ""}`,
549
+ buttonProps: {
550
+ ...buttons.left.buttonProps,
551
+ onClick: /* @__PURE__ */ __name((event) => {
552
+ buttons.left?.buttonProps?.onClick?.(event);
553
+ modalProps.onClose();
554
+ }, "onClick")
555
+ }
556
+ }
557
+ ),
558
+ buttons.right && /* @__PURE__ */ jsx(
559
+ Button,
560
+ {
561
+ pattern: "primary",
562
+ ...buttons.right,
563
+ className: `max-h-10 rounded-md! ${buttons.right.className ?? ""}`,
564
+ buttonProps: {
565
+ ...buttons.right.buttonProps,
566
+ onClick: /* @__PURE__ */ __name((event) => {
567
+ if (buttons.right?.buttonProps?.onClick)
568
+ buttons.right.buttonProps.onClick(event);
569
+ else modalProps.onClose();
570
+ }, "onClick")
571
+ }
572
+ }
573
+ )
574
+ ] })
575
+ ] })
576
+ }
577
+ );
578
+ }, "ConfirmModal");
579
+ var Dropdown = /* @__PURE__ */ __name(({
580
+ title,
581
+ icons,
582
+ children,
583
+ className = "",
584
+ defaultOpen = false,
585
+ closeOnOutsideClick = false,
586
+ closeOnEscape = false,
587
+ isAbsolute = false,
588
+ showShadow = false,
589
+ isRounded = false
590
+ }) => {
591
+ registerLayoutIcons();
592
+ const baseId = useId();
593
+ const panelId = `${baseId}-panel`;
594
+ const [isOpen, setIsOpen] = useState(defaultOpen);
595
+ const ref = useDismiss(
596
+ () => {
597
+ setIsOpen(false);
598
+ },
599
+ { enabled: isOpen, outside: closeOnOutsideClick, escape: closeOnEscape }
600
+ );
601
+ const close = /* @__PURE__ */ __name(() => {
602
+ setIsOpen(false);
603
+ }, "close");
604
+ return /* @__PURE__ */ jsxs(
605
+ "div",
606
+ {
607
+ ref,
608
+ className: `flex w-full flex-col items-start ${isAbsolute ? "relative" : "static"} ${className}`,
609
+ children: [
610
+ /* @__PURE__ */ jsxs(
611
+ "button",
612
+ {
613
+ type: "button",
614
+ "aria-expanded": isOpen,
615
+ "aria-controls": panelId,
616
+ className: "bg-primary-invert group flex w-full cursor-pointer items-center justify-between gap-2 px-3 py-2 text-left transition-colors duration-300 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-blue-crayola-c xl:py-3",
617
+ onClick: () => {
618
+ setIsOpen((current) => !current);
619
+ },
620
+ children: [
621
+ /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-3", children: [
622
+ /* @__PURE__ */ jsx(InputIcon, { icon: icons?.left }),
623
+ /* @__PURE__ */ jsx("span", { className: "text-primary text-sm font-medium whitespace-nowrap", children: title }),
624
+ /* @__PURE__ */ jsx(InputIcon, { icon: icons?.right })
625
+ ] }),
626
+ /* @__PURE__ */ jsx(
627
+ Icon,
628
+ {
629
+ icon: "solar:alt-arrow-down-linear",
630
+ className: `text-primary size-4 transition-transform duration-300 ease-in-out motion-reduce:transition-none md:size-5 ${isOpen ? "rotate-180" : "rotate-0"}`
631
+ }
632
+ )
633
+ ]
634
+ }
635
+ ),
636
+ /* @__PURE__ */ jsx(
637
+ "div",
638
+ {
639
+ id: panelId,
640
+ inert: !isOpen,
641
+ className: `bg-primary-invert grid w-full transition-[grid-template-rows,opacity] duration-500 ease-in-out motion-reduce:transition-none ${isOpen ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"} ${isAbsolute ? "absolute inset-x-0 top-full z-10 mt-2" : ""} ${showShadow ? "shadow-[rgba(var(--primary-rgb),0.08)_0px_4px_16px,rgba(var(--primary-rgb),0.1)_0px_8px_32px]" : ""} ${isRounded ? "rounded-lg" : ""}`,
642
+ children: /* @__PURE__ */ jsx("div", { className: "min-h-0 overflow-hidden *:px-3 *:py-2", children: typeof children === "function" ? children({ close }) : children })
643
+ }
644
+ )
645
+ ]
646
+ }
647
+ );
648
+ }, "Dropdown");
649
+ var LoadingPage = /* @__PURE__ */ __name(({ text, className = "" }) => /* @__PURE__ */ jsx(
650
+ "div",
651
+ {
652
+ className: `bg-primary-invert/50 fixed inset-0 z-100 flex h-full w-full items-center justify-center ${className}`,
653
+ children: /* @__PURE__ */ jsx(LoadingRings, { text })
654
+ }
655
+ ), "LoadingPage");
656
+ var BACK_ONLINE_TOAST_MS = 3e3;
657
+ var NetworkStatusToaster = /* @__PURE__ */ __name(({ status, toaster }) => {
658
+ const hadTroubleRef = useRef(false);
659
+ const toasterRef = useRef(toaster);
660
+ useEffect(() => {
661
+ toasterRef.current = toaster;
662
+ });
663
+ useEffect(() => {
664
+ const current = toasterRef.current;
665
+ if (status === "online") {
666
+ if (!hadTroubleRef.current) return;
667
+ const toastId2 = current.success({
668
+ title: "Back online",
669
+ description: "You're connected to the internet again.",
670
+ closeTimer: BACK_ONLINE_TOAST_MS
671
+ });
672
+ const timer = window.setTimeout(() => {
673
+ hadTroubleRef.current = false;
674
+ }, BACK_ONLINE_TOAST_MS);
675
+ return () => {
676
+ window.clearTimeout(timer);
677
+ current.remove(toastId2);
678
+ };
679
+ }
680
+ hadTroubleRef.current = true;
681
+ const toastId = status === "offline" ? current.warning({
682
+ title: "You're offline",
683
+ description: "Check your internet connection. We'll reconnect when it's back.",
684
+ autoClose: false,
685
+ isClosable: false
686
+ }) : current.loading({
687
+ title: "Connecting to internet...",
688
+ description: "Hang tight, we're getting you back online."
689
+ });
690
+ return () => {
691
+ current.remove(toastId);
692
+ };
693
+ }, [status]);
694
+ return null;
695
+ }, "NetworkStatusToaster");
696
+ var ScrollToTop = /* @__PURE__ */ __name(({
697
+ pathname,
698
+ id = "main",
699
+ behavior = "auto",
700
+ block = "start",
701
+ inline = "nearest",
702
+ skipInitial = false
703
+ }) => {
704
+ const scrolledPath = useRef(skipInitial ? pathname : void 0);
705
+ useEffect(() => {
706
+ if (scrolledPath.current === pathname) return;
707
+ scrolledPath.current = pathname;
708
+ const element = document.getElementById(id);
709
+ if (!element) return;
710
+ const reduceMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
711
+ element.scrollIntoView({
712
+ behavior: behavior === "smooth" && reduceMotion ? "auto" : behavior,
713
+ block,
714
+ inline
715
+ });
716
+ }, [pathname, id, behavior, block, inline]);
717
+ return null;
718
+ }, "ScrollToTop");
719
+ var Skeleton = /* @__PURE__ */ __name(({ className = "", ...divProps }) => /* @__PURE__ */ jsx(
720
+ "div",
721
+ {
722
+ "aria-hidden": "true",
723
+ ...divProps,
724
+ className: `bg-primary/50 size-full animate-pulse rounded-xs motion-reduce:animate-none ${className}`
725
+ }
726
+ ), "Skeleton");
727
+ var Table = /* @__PURE__ */ __name(({ className = "", ...props }) => /* @__PURE__ */ jsx("table", { ...props, className: `w-full table-auto ${className}` }), "Table");
728
+ var TableHead = /* @__PURE__ */ __name(({ className = "", ...props }) => /* @__PURE__ */ jsx("thead", { ...props, className: `border-y-primary/10 bg-primary/2 border-y ${className}` }), "TableHead");
729
+ var TableBody = /* @__PURE__ */ __name((props) => /* @__PURE__ */ jsx("tbody", { ...props }), "TableBody");
730
+ var TableRow = /* @__PURE__ */ __name(({ className = "", ...props }) => /* @__PURE__ */ jsx("tr", { ...props, className: `transition-colors duration-100 ${className}` }), "TableRow");
731
+ var TableHeadCell = /* @__PURE__ */ __name(({
732
+ className = "",
733
+ scope = "col",
734
+ ...props
735
+ }) => /* @__PURE__ */ jsx(
736
+ "th",
737
+ {
738
+ ...props,
739
+ scope,
740
+ className: `text-primary/55 w-auto px-4 py-3 text-center text-xs font-semibold whitespace-nowrap uppercase transition-colors duration-100 ${className}`
741
+ }
742
+ ), "TableHeadCell");
743
+ var TableRowCell = /* @__PURE__ */ __name(({ className = "", ...props }) => /* @__PURE__ */ jsx(
744
+ "td",
745
+ {
746
+ ...props,
747
+ className: `w-auto px-4 py-3 text-center align-middle text-sm whitespace-nowrap ${className}`
748
+ }
749
+ ), "TableRowCell");
750
+
751
+ export { ApiStatus, BACK_ONLINE_TOAST_MS, BorderGradient, ConfirmModal, Dropdown, LoadingPage, LoadingRings, LoadingText, ModalWrapper, NetworkStatusToaster, ScrollToTop, ScrollableGradientContainer, Skeleton, Table, TableBody, TableHead, TableHeadCell, TableRow, TableRowCell };
752
+ //# sourceMappingURL=index.js.map
753
+ //# sourceMappingURL=index.js.map