@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,605 @@
1
+ import { addCollection, Icon } from '@iconify/react';
2
+ import { useRef, useState, useEffect, useMemo } from 'react';
3
+ import { ScrollableGradientContainer, ModalWrapper } from '@beautinique/frontend-components/layout';
4
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
+ import { Divider } from '@beautinique/frontend-components/ui';
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+
10
+ // src/media/captureVideoPoster.ts
11
+ var MIN_TIME = 0.05;
12
+ var captureVideoPoster = /* @__PURE__ */ __name((src, { time = 0, maxWidth = 640, timeout = 1e4, signal } = {}) => new Promise((resolve) => {
13
+ if (signal?.aborted) {
14
+ resolve(void 0);
15
+ return;
16
+ }
17
+ const video = document.createElement("video");
18
+ let isDone = false;
19
+ const finish = /* @__PURE__ */ __name((poster) => {
20
+ if (isDone) return;
21
+ isDone = true;
22
+ window.clearTimeout(timer);
23
+ signal?.removeEventListener("abort", abort);
24
+ video.removeAttribute("src");
25
+ video.load();
26
+ resolve(poster);
27
+ }, "finish");
28
+ const abort = /* @__PURE__ */ __name(() => {
29
+ finish();
30
+ }, "abort");
31
+ const timer = window.setTimeout(abort, timeout);
32
+ video.muted = true;
33
+ video.playsInline = true;
34
+ video.preload = "auto";
35
+ video.crossOrigin = "anonymous";
36
+ video.addEventListener(
37
+ "loadeddata",
38
+ () => {
39
+ video.currentTime = Math.max(time, MIN_TIME);
40
+ },
41
+ { once: true }
42
+ );
43
+ video.addEventListener(
44
+ "seeked",
45
+ () => {
46
+ if (isDone) return;
47
+ try {
48
+ if (video.videoWidth === 0 || video.videoHeight === 0) {
49
+ finish();
50
+ return;
51
+ }
52
+ const scale = Math.min(1, maxWidth / video.videoWidth);
53
+ const canvas = document.createElement("canvas");
54
+ canvas.width = Math.round(video.videoWidth * scale);
55
+ canvas.height = Math.round(video.videoHeight * scale);
56
+ const context = canvas.getContext("2d");
57
+ if (!context) {
58
+ finish();
59
+ return;
60
+ }
61
+ context.drawImage(video, 0, 0, canvas.width, canvas.height);
62
+ finish(canvas.toDataURL("image/jpeg", 0.8));
63
+ } catch {
64
+ finish();
65
+ }
66
+ },
67
+ { once: true }
68
+ );
69
+ video.addEventListener("error", abort, { once: true });
70
+ signal?.addEventListener("abort", abort, { once: true });
71
+ video.src = src;
72
+ }), "captureVideoPoster");
73
+
74
+ // src/media/labels.ts
75
+ var position = /* @__PURE__ */ __name((index, total) => `${String(index + 1)} of ${String(total)}`, "position");
76
+ var KIND = { image: "Image", video: "Video" };
77
+ var MEDIA_LABELS = {
78
+ gallery: "Media gallery",
79
+ thumbnails: "Thumbnails",
80
+ select: /* @__PURE__ */ __name((item, index, total) => `Show ${item.type} ${position(index, total)}`, "select"),
81
+ preview: /* @__PURE__ */ __name((item, index, total) => `${KIND[item.type]} ${position(index, total)}`, "preview"),
82
+ remove: /* @__PURE__ */ __name((item, index) => `Remove ${item.type} ${String(index + 1)}`, "remove"),
83
+ previous: "Previous",
84
+ next: "Next",
85
+ close: "Close",
86
+ counter: position
87
+ };
88
+ var resolveLabels = /* @__PURE__ */ __name((labels) => ({
89
+ gallery: labels?.gallery ?? MEDIA_LABELS.gallery,
90
+ thumbnails: labels?.thumbnails ?? MEDIA_LABELS.thumbnails,
91
+ select: labels?.select ?? MEDIA_LABELS.select,
92
+ preview: labels?.preview ?? MEDIA_LABELS.preview,
93
+ remove: labels?.remove ?? MEDIA_LABELS.remove,
94
+ previous: labels?.previous ?? MEDIA_LABELS.previous,
95
+ next: labels?.next ?? MEDIA_LABELS.next,
96
+ close: labels?.close ?? MEDIA_LABELS.close,
97
+ counter: labels?.counter ?? MEDIA_LABELS.counter
98
+ }), "resolveLabels");
99
+ var createIconRegistry = /* @__PURE__ */ __name((sets) => {
100
+ let registered = false;
101
+ return {
102
+ register: /* @__PURE__ */ __name(() => {
103
+ if (registered) return;
104
+ for (const set of sets) addCollection(set);
105
+ registered = true;
106
+ }, "register"),
107
+ names: sets.flatMap(
108
+ ({ prefix, icons, aliases }) => [...Object.keys(icons), ...Object.keys(aliases ?? {})].map((name) => `${prefix}:${name}`)
109
+ )
110
+ };
111
+ }, "createIconRegistry");
112
+
113
+ // src/media/media-icons.ts
114
+ var ICON_SETS = [
115
+ {
116
+ prefix: "solar",
117
+ width: 24,
118
+ height: 24,
119
+ icons: {
120
+ "play-linear": {
121
+ body: '<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.5" d="M20.4086 9.35258C22.5305 10.5065 22.5305 13.4935 20.4086 14.6474L7.59662 21.6145C5.53435 22.736 3 21.2763 3 18.9671L3 5.0329C3 2.72368 5.53435 1.26402 7.59661 2.38548L20.4086 9.35258Z"/>'
122
+ },
123
+ "alt-arrow-left-linear": {
124
+ body: '<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15 5L9 12L15 19"/>'
125
+ }
126
+ }
127
+ },
128
+ {
129
+ prefix: "lucide",
130
+ width: 24,
131
+ height: 24,
132
+ icons: {
133
+ x: {
134
+ body: '<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18 6L6 18M6 6l12 12"/>'
135
+ }
136
+ }
137
+ }
138
+ ];
139
+ var { register: registerMediaIcons, names: MEDIA_ICON_NAMES } = createIconRegistry(ICON_SETS);
140
+
141
+ // src/lib/mergeRefs.ts
142
+ var assign = /* @__PURE__ */ __name((ref, node) => {
143
+ if (typeof ref === "function") return ref(node);
144
+ if (ref) ref.current = node;
145
+ return void 0;
146
+ }, "assign");
147
+ var mergeRefs = /* @__PURE__ */ __name((...refs) => (node) => {
148
+ const cleanups = refs.map((ref) => assign(ref, node));
149
+ return () => {
150
+ refs.forEach((ref, index) => {
151
+ const cleanup = cleanups[index];
152
+ if (typeof cleanup === "function") cleanup();
153
+ else assign(ref, null);
154
+ });
155
+ };
156
+ }, "mergeRefs");
157
+
158
+ // src/media/streaming.ts
159
+ var HLS_MIME = "application/vnd.apple.mpegurl";
160
+ var MAX_RECOVERIES = 3;
161
+ var isHlsSource = /* @__PURE__ */ __name((src) => /\.m3u8(?:$|[?#])/i.test(src), "isHlsSource");
162
+ var attachStream = /* @__PURE__ */ __name((video, src, { autoPlay, onError }) => {
163
+ let isCancelled = false;
164
+ let destroyPlayer;
165
+ const play = /* @__PURE__ */ __name(() => {
166
+ if (autoPlay) video.play().catch(() => void 0);
167
+ }, "play");
168
+ if (video.canPlayType(HLS_MIME) !== "") {
169
+ video.src = src;
170
+ video.addEventListener("loadedmetadata", play, { once: true });
171
+ return () => {
172
+ video.removeEventListener("loadedmetadata", play);
173
+ };
174
+ }
175
+ import('hls.js').then(({ default: Hls }) => {
176
+ if (isCancelled) return;
177
+ if (!Hls.isSupported()) {
178
+ onError?.(new Error("This browser cannot play HLS video."));
179
+ return;
180
+ }
181
+ const player = new Hls();
182
+ let recoveries = 0;
183
+ destroyPlayer = /* @__PURE__ */ __name(() => {
184
+ player.destroy();
185
+ }, "destroyPlayer");
186
+ player.on(Hls.Events.MANIFEST_PARSED, play);
187
+ player.on(Hls.Events.ERROR, (_event, data) => {
188
+ if (!data.fatal) return;
189
+ if (recoveries < MAX_RECOVERIES && data.type === Hls.ErrorTypes.NETWORK_ERROR) {
190
+ recoveries += 1;
191
+ player.startLoad();
192
+ } else if (recoveries < MAX_RECOVERIES && data.type === Hls.ErrorTypes.MEDIA_ERROR) {
193
+ recoveries += 1;
194
+ player.recoverMediaError();
195
+ } else {
196
+ player.destroy();
197
+ destroyPlayer = void 0;
198
+ onError?.(data);
199
+ }
200
+ });
201
+ player.loadSource(src);
202
+ player.attachMedia(video);
203
+ }).catch((error) => {
204
+ if (!isCancelled) onError?.(error);
205
+ });
206
+ return () => {
207
+ isCancelled = true;
208
+ destroyPlayer?.();
209
+ };
210
+ }, "attachStream");
211
+ var PLACEHOLDER = `data:image/svg+xml,${encodeURIComponent(
212
+ '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 9"><rect width="16" height="9" fill="#9ca3af"/><path d="M6.5 3v3l3-1.5z" fill="#fff"/></svg>'
213
+ )}`;
214
+ var defaultGetPoster = /* @__PURE__ */ __name((src, signal) => isHlsSource(src) ? void 0 : captureVideoPoster(src, { signal }), "defaultGetPoster");
215
+ var VideoPlayer = /* @__PURE__ */ __name(({
216
+ className = "",
217
+ videoProps,
218
+ ref,
219
+ showPosterOnly = false,
220
+ getPoster,
221
+ placeholder = PLACEHOLDER,
222
+ posterAlt = "",
223
+ onStreamError
224
+ }) => {
225
+ const { src, poster: givenPoster, autoPlay = true } = videoProps;
226
+ const videoRef = useRef(null);
227
+ const getPosterRef = useRef(getPoster);
228
+ const onStreamErrorRef = useRef(onStreamError);
229
+ const [made, setMade] = useState(null);
230
+ useEffect(() => {
231
+ getPosterRef.current = getPoster;
232
+ onStreamErrorRef.current = onStreamError;
233
+ });
234
+ const mergedRef = useMemo(() => mergeRefs(videoRef, ref), [ref]);
235
+ const needsPoster = showPosterOnly && !!src && !givenPoster;
236
+ const isHls = !!src && isHlsSource(src);
237
+ useEffect(() => {
238
+ if (!needsPoster || !src) return;
239
+ const controller = new AbortController();
240
+ Promise.resolve((getPosterRef.current ?? defaultGetPoster)(src, controller.signal)).then((poster2) => {
241
+ if (poster2 && !controller.signal.aborted) setMade({ src, poster: poster2 });
242
+ }).catch(() => void 0);
243
+ return () => {
244
+ controller.abort();
245
+ };
246
+ }, [needsPoster, src]);
247
+ useEffect(() => {
248
+ const video = videoRef.current;
249
+ if (showPosterOnly || !isHls || !video || !src) return;
250
+ return attachStream(video, src, {
251
+ autoPlay,
252
+ onError: /* @__PURE__ */ __name((error) => {
253
+ onStreamErrorRef.current?.(error);
254
+ }, "onError")
255
+ });
256
+ }, [showPosterOnly, isHls, src, autoPlay]);
257
+ const poster = givenPoster ?? (made !== null && made.src === src ? made.poster : void 0);
258
+ const mediaClassName = `aspect-auto h-full w-full object-cover ${videoProps.className ?? ""}`;
259
+ return /* @__PURE__ */ jsx("div", { className: `h-full w-full ${className}`, children: showPosterOnly ? /* @__PURE__ */ jsx("img", { src: poster ?? placeholder, alt: posterAlt, className: mediaClassName }) : /* @__PURE__ */ jsx(
260
+ "video",
261
+ {
262
+ ref: mergedRef,
263
+ ...videoProps,
264
+ src: isHls ? void 0 : src,
265
+ playsInline: videoProps.playsInline ?? true,
266
+ autoPlay,
267
+ muted: videoProps.muted ?? true,
268
+ loop: videoProps.loop ?? false,
269
+ controls: videoProps.controls ?? false,
270
+ className: mediaClassName
271
+ },
272
+ src
273
+ ) });
274
+ }, "VideoPlayer");
275
+ var keysOf = /* @__PURE__ */ __name((media) => {
276
+ const seen = /* @__PURE__ */ new Map();
277
+ return media.map(({ url }) => {
278
+ const count = seen.get(url) ?? 0;
279
+ seen.set(url, count + 1);
280
+ return `${url}#${String(count)}`;
281
+ });
282
+ }, "keysOf");
283
+ var MediaCarousel = /* @__PURE__ */ __name(({
284
+ className = "",
285
+ media,
286
+ selected,
287
+ onClick,
288
+ handleRemove,
289
+ gradientClassNames,
290
+ invalid,
291
+ listClassName = "p-2",
292
+ labels,
293
+ playerProps
294
+ }) => {
295
+ registerMediaIcons();
296
+ const text = resolveLabels(labels);
297
+ const scrollerRef = useRef(null);
298
+ useEffect(() => {
299
+ const scroller = scrollerRef.current;
300
+ if (!scroller || selected === null || selected === void 0) return;
301
+ const thumbnail = scroller.querySelector(
302
+ `[data-media-index="${String(selected)}"]`
303
+ );
304
+ if (!thumbnail) return;
305
+ scroller.scrollLeft = thumbnail.offsetLeft - (scroller.clientWidth - thumbnail.offsetWidth) / 2;
306
+ }, [selected]);
307
+ if (media.length === 0) return null;
308
+ const keys = keysOf(media);
309
+ return /* @__PURE__ */ jsx(
310
+ ScrollableGradientContainer,
311
+ {
312
+ direction: "horizontal",
313
+ label: text.thumbnails,
314
+ scrollerRef,
315
+ className: `w-full [&>div]:justify-start ${className}`,
316
+ gradientClassNames,
317
+ children: /* @__PURE__ */ jsx("ul", { className: `media-carousel flex items-center gap-2 ${listClassName}`, children: media.map((item, index) => {
318
+ const isSelected = index === selected;
319
+ return /* @__PURE__ */ jsxs(
320
+ "li",
321
+ {
322
+ "data-media-index": index,
323
+ "data-invalid": invalid?.at(index) ? "" : void 0,
324
+ className: `relative size-14 shrink-0 overflow-hidden rounded-md border shadow-xs transition-colors duration-300 hover:opacity-100 md:size-16 lg:size-20 data-invalid:border-red-c! ${isSelected ? "border-tertiary opacity-100" : "border-primary/30 opacity-90"}`,
325
+ children: [
326
+ /* @__PURE__ */ jsx(
327
+ "button",
328
+ {
329
+ type: "button",
330
+ "aria-label": text.select(item, index, media.length),
331
+ "aria-current": isSelected ? "true" : void 0,
332
+ onClick: () => {
333
+ onClick(index);
334
+ },
335
+ className: "group relative block size-full cursor-pointer focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-blue-crayola-c",
336
+ children: item.type === "video" ? /* @__PURE__ */ jsxs(Fragment, { children: [
337
+ !isSelected && /* @__PURE__ */ jsx(
338
+ "span",
339
+ {
340
+ "aria-hidden": "true",
341
+ className: "pointer-events-none absolute inset-0 z-1 grid place-items-center bg-black/50",
342
+ children: /* @__PURE__ */ jsx(
343
+ Icon,
344
+ {
345
+ icon: "solar:play-linear",
346
+ className: "text-white opacity-90 group-hover:opacity-100"
347
+ }
348
+ )
349
+ }
350
+ ),
351
+ /* @__PURE__ */ jsx(
352
+ VideoPlayer,
353
+ {
354
+ showPosterOnly: true,
355
+ videoProps: { src: item.url, autoPlay: false },
356
+ className: "aspect-square",
357
+ ...playerProps
358
+ }
359
+ )
360
+ ] }) : /* @__PURE__ */ jsx(
361
+ "img",
362
+ {
363
+ src: item.url,
364
+ alt: "",
365
+ draggable: false,
366
+ loading: "lazy",
367
+ className: "aspect-square size-full object-cover"
368
+ }
369
+ )
370
+ }
371
+ ),
372
+ handleRemove && /* @__PURE__ */ jsx(
373
+ "button",
374
+ {
375
+ type: "button",
376
+ "aria-label": text.remove(item, index),
377
+ className: "group absolute top-0 right-0 z-2 grid size-6 cursor-pointer place-items-center focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-blue-crayola-c",
378
+ onClick: () => {
379
+ handleRemove(index);
380
+ },
381
+ children: /* @__PURE__ */ jsx("span", { className: "bg-tertiary/80 group-hover:bg-tertiary grid size-4 place-items-center rounded-full", children: /* @__PURE__ */ jsx(Icon, { icon: "lucide:x", className: "text-primary-invert size-full shrink-0" }) })
382
+ }
383
+ )
384
+ ]
385
+ },
386
+ keys[index]
387
+ );
388
+ }) })
389
+ }
390
+ );
391
+ }, "MediaCarousel");
392
+ var ChevronButton = /* @__PURE__ */ __name(({
393
+ onClick,
394
+ label,
395
+ className = ""
396
+ }) => /* @__PURE__ */ jsx(
397
+ "button",
398
+ {
399
+ type: "button",
400
+ "aria-label": label,
401
+ onClick,
402
+ className: `border-primary/50 bg-primary-invert/50 cursor-pointer rounded-md border p-1.25 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-crayola-c ${className}`,
403
+ children: /* @__PURE__ */ jsx(Icon, { icon: "solar:alt-arrow-left-linear", className: "text-primary" })
404
+ }
405
+ ), "ChevronButton");
406
+ var isTypingTarget = /* @__PURE__ */ __name((target) => target instanceof HTMLVideoElement || target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement || target instanceof HTMLElement && target.isContentEditable, "isTypingTarget");
407
+ var MediaCarouselWithParentMedia = /* @__PURE__ */ __name(({
408
+ className = "",
409
+ media,
410
+ selected,
411
+ needButtonControls = true,
412
+ videoProps,
413
+ handleRemove,
414
+ labels,
415
+ playerProps
416
+ }) => {
417
+ registerMediaIcons();
418
+ const text = resolveLabels(labels);
419
+ const [current, setCurrent] = useState(selected ?? 0);
420
+ const [previousSelected, setPreviousSelected] = useState(selected);
421
+ if (selected !== previousSelected) {
422
+ setPreviousSelected(selected);
423
+ if (selected !== null && selected !== void 0) setCurrent(selected);
424
+ }
425
+ const count = media.length;
426
+ const index = Math.min(current, count - 1);
427
+ const item = media.at(index);
428
+ if (!item) return null;
429
+ const hasControls = needButtonControls && count > 1;
430
+ const go = /* @__PURE__ */ __name((step) => {
431
+ setCurrent((value) => (Math.min(value, count - 1) + step + count) % count);
432
+ }, "go");
433
+ const handleKeyDown = /* @__PURE__ */ __name((event) => {
434
+ if (!hasControls || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;
435
+ if (event.key !== "ArrowLeft" && event.key !== "ArrowRight") return;
436
+ if (isTypingTarget(event.target)) return;
437
+ event.preventDefault();
438
+ go(event.key === "ArrowLeft" ? -1 : 1);
439
+ }, "handleKeyDown");
440
+ return /* @__PURE__ */ jsxs(
441
+ "div",
442
+ {
443
+ role: "group",
444
+ "aria-roledescription": "carousel",
445
+ "aria-label": text.gallery,
446
+ onKeyDown: handleKeyDown,
447
+ className: `bg-primary-invert flex w-full flex-col gap-4 overflow-hidden rounded-lg ${className}`,
448
+ children: [
449
+ /* @__PURE__ */ jsxs("div", { className: "relative flex h-100 items-center justify-center lg:h-105 xl:h-125", children: [
450
+ /* @__PURE__ */ jsx("div", { className: "flex h-full w-full items-center justify-center rounded-lg", children: item.type === "video" ? /* @__PURE__ */ jsx(
451
+ VideoPlayer,
452
+ {
453
+ videoProps: {
454
+ "aria-label": text.preview(item, index, count),
455
+ ...videoProps,
456
+ src: item.url
457
+ },
458
+ className: "mx-auto flex max-h-full items-center justify-center",
459
+ ...playerProps
460
+ },
461
+ item.url
462
+ ) : /* @__PURE__ */ jsx(
463
+ "img",
464
+ {
465
+ src: item.url,
466
+ alt: text.preview(item, index, count),
467
+ className: "mx-auto h-full max-h-full w-full object-contain"
468
+ }
469
+ ) }),
470
+ hasControls && /* @__PURE__ */ jsxs("div", { className: "absolute bottom-0 flex w-full items-center justify-center gap-5 py-2 text-center text-sm", children: [
471
+ /* @__PURE__ */ jsx(
472
+ ChevronButton,
473
+ {
474
+ label: text.previous,
475
+ onClick: () => {
476
+ go(-1);
477
+ }
478
+ }
479
+ ),
480
+ /* @__PURE__ */ jsx(
481
+ "span",
482
+ {
483
+ "aria-live": "polite",
484
+ "aria-atomic": "true",
485
+ className: "border-primary/50 bg-primary-invert/50 text-primary min-h-full w-24 content-center rounded-md border px-4 py-2 leading-none",
486
+ children: text.counter(index, count)
487
+ }
488
+ ),
489
+ /* @__PURE__ */ jsx(
490
+ ChevronButton,
491
+ {
492
+ label: text.next,
493
+ onClick: () => {
494
+ go(1);
495
+ },
496
+ className: "[&>svg]:rotate-180"
497
+ }
498
+ )
499
+ ] })
500
+ ] }),
501
+ count > 1 && /* @__PURE__ */ jsxs(Fragment, { children: [
502
+ /* @__PURE__ */ jsx(Divider, {}),
503
+ /* @__PURE__ */ jsx(
504
+ MediaCarousel,
505
+ {
506
+ media,
507
+ selected: index,
508
+ onClick: setCurrent,
509
+ handleRemove,
510
+ labels,
511
+ playerProps
512
+ }
513
+ )
514
+ ] })
515
+ ]
516
+ }
517
+ );
518
+ }, "MediaCarouselWithParentMedia");
519
+ var MediaModal = /* @__PURE__ */ __name(({
520
+ media,
521
+ isOpen,
522
+ onClose,
523
+ selected,
524
+ className = "",
525
+ videoProps,
526
+ handleRemove,
527
+ labels,
528
+ playerProps
529
+ }) => {
530
+ const text = resolveLabels(labels);
531
+ return /* @__PURE__ */ jsx(
532
+ ModalWrapper,
533
+ {
534
+ className: "max-w-xl",
535
+ isOpen: isOpen && media.length > 0,
536
+ onClose,
537
+ containerProps: { className },
538
+ header: { showCloseIcon: true },
539
+ closeLabel: text.close,
540
+ label: text.gallery,
541
+ children: /* @__PURE__ */ jsx(
542
+ MediaCarouselWithParentMedia,
543
+ {
544
+ media,
545
+ selected,
546
+ handleRemove,
547
+ labels,
548
+ playerProps,
549
+ videoProps: {
550
+ ...videoProps,
551
+ autoPlay: videoProps?.autoPlay ?? true,
552
+ muted: videoProps?.muted ?? true,
553
+ loop: videoProps?.loop ?? true,
554
+ controls: videoProps?.controls ?? true,
555
+ className: `object-contain! bg-primary/10 backdrop-blur-xs rounded-lg ${videoProps?.className ?? ""}`
556
+ }
557
+ }
558
+ )
559
+ }
560
+ );
561
+ }, "MediaModal");
562
+ var MediaCarouselWithModal = /* @__PURE__ */ __name(({
563
+ media,
564
+ videoProps,
565
+ className = "",
566
+ gradientClassNames,
567
+ labels,
568
+ playerProps
569
+ }) => {
570
+ const [openIndex, setOpenIndex] = useState(null);
571
+ if (openIndex !== null && openIndex >= media.length) setOpenIndex(null);
572
+ if (media.length === 0) return null;
573
+ return /* @__PURE__ */ jsxs("div", { className: `max-w-full min-w-0 overflow-hidden rounded-md ${className}`, children: [
574
+ /* @__PURE__ */ jsx(
575
+ MediaCarousel,
576
+ {
577
+ media,
578
+ selected: openIndex,
579
+ onClick: setOpenIndex,
580
+ gradientClassNames,
581
+ listClassName: "p-0",
582
+ labels,
583
+ playerProps
584
+ }
585
+ ),
586
+ /* @__PURE__ */ jsx(
587
+ MediaModal,
588
+ {
589
+ media,
590
+ selected: openIndex,
591
+ isOpen: openIndex !== null,
592
+ onClose: () => {
593
+ setOpenIndex(null);
594
+ },
595
+ videoProps,
596
+ labels,
597
+ playerProps
598
+ }
599
+ )
600
+ ] });
601
+ }, "MediaCarouselWithModal");
602
+
603
+ export { MEDIA_LABELS, MediaCarousel, MediaCarouselWithModal, MediaCarouselWithParentMedia, MediaModal, VideoPlayer, captureVideoPoster };
604
+ //# sourceMappingURL=index.js.map
605
+ //# sourceMappingURL=index.js.map