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