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