@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,84 @@
1
+ 'use strict';
2
+
3
+ var ui = require('@beautinique/frontend-components/ui');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react = require('@iconify/react');
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+ var defaultMessage = /* @__PURE__ */ __name(({ terms, privacy }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10
+ "By continuing, you agree to our ",
11
+ terms,
12
+ " and ",
13
+ privacy,
14
+ "."
15
+ ] }), "defaultMessage");
16
+ var LINK_CSS = "font-medium";
17
+ var AuthBottomInstructions = /* @__PURE__ */ __name(({
18
+ as,
19
+ terms,
20
+ privacy,
21
+ termsLabel = "Terms & Conditions",
22
+ privacyLabel = "Privacy Policy",
23
+ message = defaultMessage,
24
+ className = "",
25
+ ...pProps
26
+ }) => {
27
+ const Link = as ?? "a";
28
+ return /* @__PURE__ */ jsxRuntime.jsx("p", { ...pProps, className: `text-tertiary text-xs ${className}`, children: message({
29
+ terms: /* @__PURE__ */ jsxRuntime.jsx(
30
+ ui.GradientText,
31
+ {
32
+ ...terms,
33
+ as: Link,
34
+ type: "accent",
35
+ text: termsLabel,
36
+ className: LINK_CSS
37
+ }
38
+ ),
39
+ privacy: /* @__PURE__ */ jsxRuntime.jsx(
40
+ ui.GradientText,
41
+ {
42
+ ...privacy,
43
+ as: Link,
44
+ type: "accent",
45
+ text: privacyLabel,
46
+ className: LINK_CSS
47
+ }
48
+ )
49
+ }) });
50
+ }, "AuthBottomInstructions");
51
+ var defaultGetLabel = /* @__PURE__ */ __name((provider) => `Continue with ${provider.name}`, "defaultGetLabel");
52
+ var SocialAuth = /* @__PURE__ */ __name(({
53
+ providers,
54
+ onProviderClick,
55
+ getLabel = defaultGetLabel,
56
+ label = "Sign in with",
57
+ className = ""
58
+ }) => {
59
+ if (providers.length === 0) return null;
60
+ return /* @__PURE__ */ jsxRuntime.jsx("ul", { "aria-label": label, className: `flex items-center justify-center gap-4 ${className}`, children: providers.map((provider) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
61
+ "a",
62
+ {
63
+ href: provider.href,
64
+ "aria-label": getLabel(provider),
65
+ className: "block rounded-xl focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-crayola-c",
66
+ onClick: (event) => {
67
+ onProviderClick?.(provider, event);
68
+ },
69
+ children: typeof provider.icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
70
+ react.Icon,
71
+ {
72
+ "aria-hidden": "true",
73
+ icon: provider.icon,
74
+ className: "border-primary/40 shadow-primary/50 h-12 w-12 shrink-0 rounded-xl border bg-white/90 p-2.5 shadow-sm backdrop-blur-sm transition-transform duration-500 hover:scale-110 motion-reduce:transition-none"
75
+ }
76
+ ) : provider.icon
77
+ }
78
+ ) }, provider.name)) });
79
+ }, "SocialAuth");
80
+
81
+ exports.AuthBottomInstructions = AuthBottomInstructions;
82
+ exports.SocialAuth = SocialAuth;
83
+ //# sourceMappingURL=index.cjs.map
84
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/auth/AuthBottomInstructions.tsx","../../src/auth/SocialAuth.tsx"],"names":["jsxs","Fragment","jsx","GradientText","Icon"],"mappings":";;;;;;;;AA6CA,IAAM,iCAAiB,MAAA,CAAA,CAAC,EAAE,KAAA,EAAO,OAAA,uBAC/BA,eAAA,CAAAC,mBAAA,EAAA,EAAE,QAAA,EAAA;AAAA,EAAA,kCAAA;AAAA,EACiC,KAAA;AAAA,EAAM,OAAA;AAAA,EAAM,OAAA;AAAA,EAAQ;AAAA,CAAA,EACvD,CAAA,EAHqB,gBAAA,CAAA;AAMvB,IAAM,QAAA,GAAW,aAAA;AAMV,IAAM,yCAAyB,MAAA,CAAA,CAAgC;AAAA,EACpE,EAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA,GAAa,oBAAA;AAAA,EACb,YAAA,GAAe,gBAAA;AAAA,EACf,OAAA,GAAU,cAAA;AAAA,EACV,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,KAAoC;AAClC,EAAA,MAAM,OAAoB,EAAA,IAAM,GAAA;AAEhC,EAAA,uBACEC,cAAA,CAAC,OAAG,GAAG,MAAA,EAAQ,WAAW,CAAA,sBAAA,EAAyB,SAAS,IACzD,QAAA,EAAA,OAAA,CAAQ;AAAA,IACP,KAAA,kBACEA,cAAA;AAAA,MAACC,eAAA;AAAA,MAAA;AAAA,QACE,GAAI,KAAA;AAAA,QACL,EAAA,EAAI,IAAA;AAAA,QACJ,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAM,UAAA;AAAA,QACN,SAAA,EAAW;AAAA;AAAA,KACb;AAAA,IAEF,OAAA,kBACED,cAAA;AAAA,MAACC,eAAA;AAAA,MAAA;AAAA,QACE,GAAI,OAAA;AAAA,QACL,EAAA,EAAI,IAAA;AAAA,QACJ,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAM,YAAA;AAAA,QACN,SAAA,EAAW;AAAA;AAAA;AACb,GAEH,CAAA,EACH,CAAA;AAEJ,CAAA,EApCsC,wBAAA;AC7BtC,IAAM,kCAAkB,MAAA,CAAA,CAAC,QAAA,KAA8B,CAAA,cAAA,EAAiB,QAAA,CAAS,IAAI,CAAA,CAAA,EAA7D,iBAAA,CAAA;AAUjB,IAAM,6BAAa,MAAA,CAAA,CAAC;AAAA,EACzB,SAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA,GAAW,eAAA;AAAA,EACX,KAAA,GAAQ,cAAA;AAAA,EACR,SAAA,GAAY;AACd,CAAA,KAAmB;AACjB,EAAA,IAAI,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAEnC,EAAA,uBACED,cAAAA,CAAC,IAAA,EAAA,EAAG,YAAA,EAAY,KAAA,EAAO,WAAW,CAAA,uCAAA,EAA0C,SAAS,CAAA,CAAA,EAClF,QAAA,EAAA,SAAA,CAAU,IAAI,CAAC,QAAA,qBACdA,cAAAA,CAAC,QACC,QAAA,kBAAAA,cAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,MAAM,QAAA,CAAS,IAAA;AAAA,MACf,YAAA,EAAY,SAAS,QAAQ,CAAA;AAAA,MAC7B,SAAA,EAAU,8GAAA;AAAA,MACV,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,QAAA,eAAA,GAAkB,UAAU,KAAK,CAAA;AAAA,MACnC,CAAA;AAAA,MAEC,QAAA,EAAA,OAAO,QAAA,CAAS,IAAA,KAAS,QAAA,mBACxBA,cAAAA;AAAA,QAACE,UAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAY,MAAA;AAAA,UACZ,MAAM,QAAA,CAAS,IAAA;AAAA,UACf,SAAA,EAAU;AAAA;AAAA,UAGZ,QAAA,CAAS;AAAA;AAAA,GAEb,EAAA,EAlBO,QAAA,CAAS,IAmBlB,CACD,CAAA,EACH,CAAA;AAEJ,CAAA,EAnC0B,YAAA","file":"index.cjs","sourcesContent":["import type { ComponentProps, ComponentPropsWithRef, ElementType, ReactNode } from 'react';\n\nimport { GradientText } from '../ui/index.js';\n\n/**\n * What the link to a page needs, as the component that makes the link asks for it: `{ to: '/terms' }`\n * for the `Link` of a router, `{ href: '/terms' }` for a plain `<a>` (which has to have one).\n */\nexport type TAuthLinkProps<TAs extends ElementType> = Omit<\n ComponentPropsWithRef<TAs>,\n 'children' | 'className' | 'text' | 'type'\n> &\n (TAs extends 'a' ? { href: string } : unknown);\n\n/** The two links of the sentence, ready to be put in it. */\nexport interface IAuthLinks {\n terms: ReactNode;\n privacy: ReactNode;\n}\n\ninterface IAuthBottomInstructionsOwnProps<TAs extends ElementType> {\n /**\n * What makes the links: `'a'`, or the `Link` of the router of the app. The router is the app's,\n * not this package's.\n * @default 'a'\n */\n as?: TAs;\n /** The link to the terms and conditions, in the props of `as`. */\n terms: TAuthLinkProps<TAs>;\n /** The link to the privacy policy, in the props of `as`. */\n privacy: TAuthLinkProps<TAs>;\n /** @default 'Terms & Conditions' */\n termsLabel?: string;\n /** @default 'Privacy Policy' */\n privacyLabel?: string;\n /**\n * The sentence around the two links, for another wording or another language.\n * @default ({ terms, privacy }) => <>By continuing, you agree to our {terms} and {privacy}.</>\n */\n message?: (links: IAuthLinks) => ReactNode;\n}\n\nexport type IAuthBottomInstructions<TAs extends ElementType = 'a'> =\n IAuthBottomInstructionsOwnProps<TAs> & Omit<ComponentProps<'p'>, 'children'>;\n\nconst defaultMessage = ({ terms, privacy }: IAuthLinks) => (\n <>\n By continuing, you agree to our {terms} and {privacy}.\n </>\n);\n\nconst LINK_CSS = 'font-medium';\n\n/**\n * The small print under a sign-in or sign-up form: that going on means accepting the terms and the\n * privacy policy, with a link to each.\n */\nexport const AuthBottomInstructions = <TAs extends ElementType = 'a'>({\n as,\n terms,\n privacy,\n termsLabel = 'Terms & Conditions',\n privacyLabel = 'Privacy Policy',\n message = defaultMessage,\n className = '',\n ...pProps\n}: IAuthBottomInstructions<TAs>) => {\n const Link: ElementType = as ?? 'a';\n\n return (\n <p {...pProps} className={`text-tertiary text-xs ${className}`}>\n {message({\n terms: (\n <GradientText\n {...(terms as object)}\n as={Link}\n type=\"accent\"\n text={termsLabel}\n className={LINK_CSS}\n />\n ),\n privacy: (\n <GradientText\n {...(privacy as object)}\n as={Link}\n type=\"accent\"\n text={privacyLabel}\n className={LINK_CSS}\n />\n ),\n })}\n </p>\n );\n};\n","import { Icon } from '@iconify/react';\nimport type { MouseEvent, ReactElement } from 'react';\n\nimport type { IClassName } from '../types/component.js';\n\n/** A service the person can sign in with. */\nexport interface ISocialProvider {\n /** The name of the service (\"Google\"): the link says \"Continue with Google\". */\n name: string;\n /** An icon of Iconify (`'logos:google-icon'`) or any element. */\n icon: string | ReactElement;\n /** Where the sign in starts. */\n href: string;\n}\n\nexport interface ISocialAuth extends IClassName {\n providers: readonly ISocialProvider[];\n /**\n * Called when a provider is pressed, before the browser goes to its address: the place to remember\n * where the person was, to bring them back after the sign in.\n */\n onProviderClick?: (provider: ISocialProvider, event: MouseEvent<HTMLAnchorElement>) => void;\n /** What a link says to assistive technology. @default `Continue with ${provider.name}` */\n getLabel?: (provider: ISocialProvider) => string;\n /** The name of the group of links. @default 'Sign in with' */\n label?: string;\n}\n\nconst defaultGetLabel = (provider: ISocialProvider) => `Continue with ${provider.name}`;\n\n/**\n * A row of icons, each a link that starts a sign in with a service (Google, GitHub...). They are plain\n * links, because signing in with a service leaves the app for the page of the service: an\n * `<a href>`, named \"Continue with Google\", that also works when opened in a new tab.\n *\n * The icons that are given by name come from the Iconify API unless the app has them registered\n * (`addIcon()`), which also makes them show without a network.\n */\nexport const SocialAuth = ({\n providers,\n onProviderClick,\n getLabel = defaultGetLabel,\n label = 'Sign in with',\n className = '',\n}: ISocialAuth) => {\n if (providers.length === 0) return null;\n\n return (\n <ul aria-label={label} className={`flex items-center justify-center gap-4 ${className}`}>\n {providers.map((provider) => (\n <li key={provider.name}>\n <a\n href={provider.href}\n aria-label={getLabel(provider)}\n className=\"block rounded-xl focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-crayola-c\"\n onClick={(event) => {\n onProviderClick?.(provider, event);\n }}\n >\n {typeof provider.icon === 'string' ? (\n <Icon\n aria-hidden=\"true\"\n icon={provider.icon}\n className=\"border-primary/40 shadow-primary/50 h-12 w-12 shrink-0 rounded-xl border bg-white/90 p-2.5 shadow-sm backdrop-blur-sm transition-transform duration-500 hover:scale-110 motion-reduce:transition-none\"\n />\n ) : (\n provider.icon\n )}\n </a>\n </li>\n ))}\n </ul>\n );\n};\n"]}
@@ -0,0 +1,3 @@
1
+ export { AuthBottomInstructions, type IAuthBottomInstructions, type IAuthLinks, type TAuthLinkProps, } from './AuthBottomInstructions.js';
2
+ export { type ISocialAuth, type ISocialProvider, SocialAuth } from './SocialAuth.js';
3
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,UAAU,EACf,KAAK,cAAc,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { AuthBottomInstructions, type IAuthBottomInstructions, type IAuthLinks, type TAuthLinkProps, } from './AuthBottomInstructions.js';
2
+ export { type ISocialAuth, type ISocialProvider, SocialAuth } from './SocialAuth.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,UAAU,EACf,KAAK,cAAc,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { GradientText } from '@beautinique/frontend-components/ui';
2
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
+ import { Icon } from '@iconify/react';
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var defaultMessage = /* @__PURE__ */ __name(({ terms, privacy }) => /* @__PURE__ */ jsxs(Fragment, { children: [
8
+ "By continuing, you agree to our ",
9
+ terms,
10
+ " and ",
11
+ privacy,
12
+ "."
13
+ ] }), "defaultMessage");
14
+ var LINK_CSS = "font-medium";
15
+ var AuthBottomInstructions = /* @__PURE__ */ __name(({
16
+ as,
17
+ terms,
18
+ privacy,
19
+ termsLabel = "Terms & Conditions",
20
+ privacyLabel = "Privacy Policy",
21
+ message = defaultMessage,
22
+ className = "",
23
+ ...pProps
24
+ }) => {
25
+ const Link = as ?? "a";
26
+ return /* @__PURE__ */ jsx("p", { ...pProps, className: `text-tertiary text-xs ${className}`, children: message({
27
+ terms: /* @__PURE__ */ jsx(
28
+ GradientText,
29
+ {
30
+ ...terms,
31
+ as: Link,
32
+ type: "accent",
33
+ text: termsLabel,
34
+ className: LINK_CSS
35
+ }
36
+ ),
37
+ privacy: /* @__PURE__ */ jsx(
38
+ GradientText,
39
+ {
40
+ ...privacy,
41
+ as: Link,
42
+ type: "accent",
43
+ text: privacyLabel,
44
+ className: LINK_CSS
45
+ }
46
+ )
47
+ }) });
48
+ }, "AuthBottomInstructions");
49
+ var defaultGetLabel = /* @__PURE__ */ __name((provider) => `Continue with ${provider.name}`, "defaultGetLabel");
50
+ var SocialAuth = /* @__PURE__ */ __name(({
51
+ providers,
52
+ onProviderClick,
53
+ getLabel = defaultGetLabel,
54
+ label = "Sign in with",
55
+ className = ""
56
+ }) => {
57
+ if (providers.length === 0) return null;
58
+ return /* @__PURE__ */ jsx("ul", { "aria-label": label, className: `flex items-center justify-center gap-4 ${className}`, children: providers.map((provider) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
59
+ "a",
60
+ {
61
+ href: provider.href,
62
+ "aria-label": getLabel(provider),
63
+ className: "block rounded-xl focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-crayola-c",
64
+ onClick: (event) => {
65
+ onProviderClick?.(provider, event);
66
+ },
67
+ children: typeof provider.icon === "string" ? /* @__PURE__ */ jsx(
68
+ Icon,
69
+ {
70
+ "aria-hidden": "true",
71
+ icon: provider.icon,
72
+ className: "border-primary/40 shadow-primary/50 h-12 w-12 shrink-0 rounded-xl border bg-white/90 p-2.5 shadow-sm backdrop-blur-sm transition-transform duration-500 hover:scale-110 motion-reduce:transition-none"
73
+ }
74
+ ) : provider.icon
75
+ }
76
+ ) }, provider.name)) });
77
+ }, "SocialAuth");
78
+
79
+ export { AuthBottomInstructions, SocialAuth };
80
+ //# sourceMappingURL=index.js.map
81
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/auth/AuthBottomInstructions.tsx","../../src/auth/SocialAuth.tsx"],"names":["jsx"],"mappings":";;;;;;AA6CA,IAAM,iCAAiB,MAAA,CAAA,CAAC,EAAE,KAAA,EAAO,OAAA,uBAC/B,IAAA,CAAA,QAAA,EAAA,EAAE,QAAA,EAAA;AAAA,EAAA,kCAAA;AAAA,EACiC,KAAA;AAAA,EAAM,OAAA;AAAA,EAAM,OAAA;AAAA,EAAQ;AAAA,CAAA,EACvD,CAAA,EAHqB,gBAAA,CAAA;AAMvB,IAAM,QAAA,GAAW,aAAA;AAMV,IAAM,yCAAyB,MAAA,CAAA,CAAgC;AAAA,EACpE,EAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA,GAAa,oBAAA;AAAA,EACb,YAAA,GAAe,gBAAA;AAAA,EACf,OAAA,GAAU,cAAA;AAAA,EACV,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,KAAoC;AAClC,EAAA,MAAM,OAAoB,EAAA,IAAM,GAAA;AAEhC,EAAA,uBACE,GAAA,CAAC,OAAG,GAAG,MAAA,EAAQ,WAAW,CAAA,sBAAA,EAAyB,SAAS,IACzD,QAAA,EAAA,OAAA,CAAQ;AAAA,IACP,KAAA,kBACE,GAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACE,GAAI,KAAA;AAAA,QACL,EAAA,EAAI,IAAA;AAAA,QACJ,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAM,UAAA;AAAA,QACN,SAAA,EAAW;AAAA;AAAA,KACb;AAAA,IAEF,OAAA,kBACE,GAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACE,GAAI,OAAA;AAAA,QACL,EAAA,EAAI,IAAA;AAAA,QACJ,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAM,YAAA;AAAA,QACN,SAAA,EAAW;AAAA;AAAA;AACb,GAEH,CAAA,EACH,CAAA;AAEJ,CAAA,EApCsC,wBAAA;AC7BtC,IAAM,kCAAkB,MAAA,CAAA,CAAC,QAAA,KAA8B,CAAA,cAAA,EAAiB,QAAA,CAAS,IAAI,CAAA,CAAA,EAA7D,iBAAA,CAAA;AAUjB,IAAM,6BAAa,MAAA,CAAA,CAAC;AAAA,EACzB,SAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA,GAAW,eAAA;AAAA,EACX,KAAA,GAAQ,cAAA;AAAA,EACR,SAAA,GAAY;AACd,CAAA,KAAmB;AACjB,EAAA,IAAI,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAEnC,EAAA,uBACEA,GAAAA,CAAC,IAAA,EAAA,EAAG,YAAA,EAAY,KAAA,EAAO,WAAW,CAAA,uCAAA,EAA0C,SAAS,CAAA,CAAA,EAClF,QAAA,EAAA,SAAA,CAAU,IAAI,CAAC,QAAA,qBACdA,GAAAA,CAAC,QACC,QAAA,kBAAAA,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,MAAM,QAAA,CAAS,IAAA;AAAA,MACf,YAAA,EAAY,SAAS,QAAQ,CAAA;AAAA,MAC7B,SAAA,EAAU,8GAAA;AAAA,MACV,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,QAAA,eAAA,GAAkB,UAAU,KAAK,CAAA;AAAA,MACnC,CAAA;AAAA,MAEC,QAAA,EAAA,OAAO,QAAA,CAAS,IAAA,KAAS,QAAA,mBACxBA,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAY,MAAA;AAAA,UACZ,MAAM,QAAA,CAAS,IAAA;AAAA,UACf,SAAA,EAAU;AAAA;AAAA,UAGZ,QAAA,CAAS;AAAA;AAAA,GAEb,EAAA,EAlBO,QAAA,CAAS,IAmBlB,CACD,CAAA,EACH,CAAA;AAEJ,CAAA,EAnC0B,YAAA","file":"index.js","sourcesContent":["import type { ComponentProps, ComponentPropsWithRef, ElementType, ReactNode } from 'react';\n\nimport { GradientText } from '../ui/index.js';\n\n/**\n * What the link to a page needs, as the component that makes the link asks for it: `{ to: '/terms' }`\n * for the `Link` of a router, `{ href: '/terms' }` for a plain `<a>` (which has to have one).\n */\nexport type TAuthLinkProps<TAs extends ElementType> = Omit<\n ComponentPropsWithRef<TAs>,\n 'children' | 'className' | 'text' | 'type'\n> &\n (TAs extends 'a' ? { href: string } : unknown);\n\n/** The two links of the sentence, ready to be put in it. */\nexport interface IAuthLinks {\n terms: ReactNode;\n privacy: ReactNode;\n}\n\ninterface IAuthBottomInstructionsOwnProps<TAs extends ElementType> {\n /**\n * What makes the links: `'a'`, or the `Link` of the router of the app. The router is the app's,\n * not this package's.\n * @default 'a'\n */\n as?: TAs;\n /** The link to the terms and conditions, in the props of `as`. */\n terms: TAuthLinkProps<TAs>;\n /** The link to the privacy policy, in the props of `as`. */\n privacy: TAuthLinkProps<TAs>;\n /** @default 'Terms & Conditions' */\n termsLabel?: string;\n /** @default 'Privacy Policy' */\n privacyLabel?: string;\n /**\n * The sentence around the two links, for another wording or another language.\n * @default ({ terms, privacy }) => <>By continuing, you agree to our {terms} and {privacy}.</>\n */\n message?: (links: IAuthLinks) => ReactNode;\n}\n\nexport type IAuthBottomInstructions<TAs extends ElementType = 'a'> =\n IAuthBottomInstructionsOwnProps<TAs> & Omit<ComponentProps<'p'>, 'children'>;\n\nconst defaultMessage = ({ terms, privacy }: IAuthLinks) => (\n <>\n By continuing, you agree to our {terms} and {privacy}.\n </>\n);\n\nconst LINK_CSS = 'font-medium';\n\n/**\n * The small print under a sign-in or sign-up form: that going on means accepting the terms and the\n * privacy policy, with a link to each.\n */\nexport const AuthBottomInstructions = <TAs extends ElementType = 'a'>({\n as,\n terms,\n privacy,\n termsLabel = 'Terms & Conditions',\n privacyLabel = 'Privacy Policy',\n message = defaultMessage,\n className = '',\n ...pProps\n}: IAuthBottomInstructions<TAs>) => {\n const Link: ElementType = as ?? 'a';\n\n return (\n <p {...pProps} className={`text-tertiary text-xs ${className}`}>\n {message({\n terms: (\n <GradientText\n {...(terms as object)}\n as={Link}\n type=\"accent\"\n text={termsLabel}\n className={LINK_CSS}\n />\n ),\n privacy: (\n <GradientText\n {...(privacy as object)}\n as={Link}\n type=\"accent\"\n text={privacyLabel}\n className={LINK_CSS}\n />\n ),\n })}\n </p>\n );\n};\n","import { Icon } from '@iconify/react';\nimport type { MouseEvent, ReactElement } from 'react';\n\nimport type { IClassName } from '../types/component.js';\n\n/** A service the person can sign in with. */\nexport interface ISocialProvider {\n /** The name of the service (\"Google\"): the link says \"Continue with Google\". */\n name: string;\n /** An icon of Iconify (`'logos:google-icon'`) or any element. */\n icon: string | ReactElement;\n /** Where the sign in starts. */\n href: string;\n}\n\nexport interface ISocialAuth extends IClassName {\n providers: readonly ISocialProvider[];\n /**\n * Called when a provider is pressed, before the browser goes to its address: the place to remember\n * where the person was, to bring them back after the sign in.\n */\n onProviderClick?: (provider: ISocialProvider, event: MouseEvent<HTMLAnchorElement>) => void;\n /** What a link says to assistive technology. @default `Continue with ${provider.name}` */\n getLabel?: (provider: ISocialProvider) => string;\n /** The name of the group of links. @default 'Sign in with' */\n label?: string;\n}\n\nconst defaultGetLabel = (provider: ISocialProvider) => `Continue with ${provider.name}`;\n\n/**\n * A row of icons, each a link that starts a sign in with a service (Google, GitHub...). They are plain\n * links, because signing in with a service leaves the app for the page of the service: an\n * `<a href>`, named \"Continue with Google\", that also works when opened in a new tab.\n *\n * The icons that are given by name come from the Iconify API unless the app has them registered\n * (`addIcon()`), which also makes them show without a network.\n */\nexport const SocialAuth = ({\n providers,\n onProviderClick,\n getLabel = defaultGetLabel,\n label = 'Sign in with',\n className = '',\n}: ISocialAuth) => {\n if (providers.length === 0) return null;\n\n return (\n <ul aria-label={label} className={`flex items-center justify-center gap-4 ${className}`}>\n {providers.map((provider) => (\n <li key={provider.name}>\n <a\n href={provider.href}\n aria-label={getLabel(provider)}\n className=\"block rounded-xl focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-crayola-c\"\n onClick={(event) => {\n onProviderClick?.(provider, event);\n }}\n >\n {typeof provider.icon === 'string' ? (\n <Icon\n aria-hidden=\"true\"\n icon={provider.icon}\n className=\"border-primary/40 shadow-primary/50 h-12 w-12 shrink-0 rounded-xl border bg-white/90 p-2.5 shadow-sm backdrop-blur-sm transition-transform duration-500 hover:scale-110 motion-reduce:transition-none\"\n />\n ) : (\n provider.icon\n )}\n </a>\n </li>\n ))}\n </ul>\n );\n};\n"]}
@@ -0,0 +1,34 @@
1
+ import type { MouseEvent, ReactNode } from 'react';
2
+ import type { IClassName } from '../types/component.js';
3
+ export interface IBreadcrumbItem {
4
+ /** What is written for the item. */
5
+ label: ReactNode;
6
+ /**
7
+ * Where the item goes. Without one it is plain text. The last item is the page the person is on: it
8
+ * is never a link, whatever it has.
9
+ */
10
+ href?: string;
11
+ }
12
+ export interface IBreadcrumb extends IClassName {
13
+ /** The path to the page, from the top: the last one is the page itself. */
14
+ items: readonly IBreadcrumbItem[];
15
+ /**
16
+ * Called when an item is pressed with a plain click, in place of the browser going to the address:
17
+ * the app goes there itself, with its router, without loading the page. A click with a modifier
18
+ * (new tab, new window) and a middle click are left to the browser, so the links keep working as
19
+ * links. Without it the links are plain links.
20
+ */
21
+ onNavigate?: (href: string, event: MouseEvent<HTMLAnchorElement>) => void;
22
+ /** The name of the navigation, for assistive technology. @default 'Breadcrumb' */
23
+ label?: string;
24
+ }
25
+ /**
26
+ * Where the person is in the site (Home › Products › Face), each step but the last a link to the page
27
+ * above it. It is a list in a `nav`, the last item is marked as the current page, and the arrows
28
+ * between the items are not read out. A path that is too long for the width scrolls, with a fade.
29
+ *
30
+ * The router is the app's: the links are plain `<a href>`; give `onNavigate` to go there without
31
+ * loading the page. `getBreadcrumbItems()` makes the items from a path.
32
+ */
33
+ export declare const Breadcrumb: ({ items, onNavigate, label, className, }: IBreadcrumb) => import("react").JSX.Element | null;
34
+ //# sourceMappingURL=Breadcrumb.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Breadcrumb.d.cts","sourceRoot":"","sources":["../../src/breadcrumb/Breadcrumb.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,KAAK,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,2EAA2E;IAC3E,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAClC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC1E,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAWD;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,0CAKxB,WAAW,uCAkDb,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { MouseEvent, ReactNode } from 'react';
2
+ import type { IClassName } from '../types/component.js';
3
+ export interface IBreadcrumbItem {
4
+ /** What is written for the item. */
5
+ label: ReactNode;
6
+ /**
7
+ * Where the item goes. Without one it is plain text. The last item is the page the person is on: it
8
+ * is never a link, whatever it has.
9
+ */
10
+ href?: string;
11
+ }
12
+ export interface IBreadcrumb extends IClassName {
13
+ /** The path to the page, from the top: the last one is the page itself. */
14
+ items: readonly IBreadcrumbItem[];
15
+ /**
16
+ * Called when an item is pressed with a plain click, in place of the browser going to the address:
17
+ * the app goes there itself, with its router, without loading the page. A click with a modifier
18
+ * (new tab, new window) and a middle click are left to the browser, so the links keep working as
19
+ * links. Without it the links are plain links.
20
+ */
21
+ onNavigate?: (href: string, event: MouseEvent<HTMLAnchorElement>) => void;
22
+ /** The name of the navigation, for assistive technology. @default 'Breadcrumb' */
23
+ label?: string;
24
+ }
25
+ /**
26
+ * Where the person is in the site (Home › Products › Face), each step but the last a link to the page
27
+ * above it. It is a list in a `nav`, the last item is marked as the current page, and the arrows
28
+ * between the items are not read out. A path that is too long for the width scrolls, with a fade.
29
+ *
30
+ * The router is the app's: the links are plain `<a href>`; give `onNavigate` to go there without
31
+ * loading the page. `getBreadcrumbItems()` makes the items from a path.
32
+ */
33
+ export declare const Breadcrumb: ({ items, onNavigate, label, className, }: IBreadcrumb) => import("react").JSX.Element | null;
34
+ //# sourceMappingURL=Breadcrumb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Breadcrumb.d.ts","sourceRoot":"","sources":["../../src/breadcrumb/Breadcrumb.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,KAAK,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,2EAA2E;IAC3E,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAClC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC1E,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAWD;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,0CAKxB,WAAW,uCAkDb,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Registers the icons above with Iconify; the components of this entry call it when they render
3
+ * (calling it again is harmless).
4
+ */
5
+ export declare const registerBreadcrumbIcons: () => void, BREADCRUMB_ICON_NAMES: string[];
6
+ //# sourceMappingURL=breadcrumb-icons.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumb-icons.d.cts","sourceRoot":"","sources":["../../src/breadcrumb/breadcrumb-icons.ts"],"names":[],"mappings":"AAsBA;;;GAGG;AACH,eAAO,MAAkB,uBAAuB,cAAS,qBAAqB,UAC/C,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Registers the icons above with Iconify; the components of this entry call it when they render
3
+ * (calling it again is harmless).
4
+ */
5
+ export declare const registerBreadcrumbIcons: () => void, BREADCRUMB_ICON_NAMES: string[];
6
+ //# sourceMappingURL=breadcrumb-icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumb-icons.d.ts","sourceRoot":"","sources":["../../src/breadcrumb/breadcrumb-icons.ts"],"names":[],"mappings":"AAsBA;;;GAGG;AACH,eAAO,MAAkB,uBAAuB,cAAS,qBAAqB,UAC/C,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { IBreadcrumbItem } from './Breadcrumb.js';
2
+ export interface IBreadcrumbPathOptions {
3
+ /** What the first item says. @default 'Home' */
4
+ homeLabel?: string;
5
+ /** Where the first item goes. @default '/' */
6
+ homeHref?: string;
7
+ /** Makes the text of a step from its part of the path. The default turns `skin-care` into `skin care`. */
8
+ formatSegment?: (segment: string) => string;
9
+ }
10
+ /**
11
+ * The items of a breadcrumb for an address: `/products/skin-care/serum` is Home, products, skin care
12
+ * and serum, each with the address of the page it goes to. The query string and the hash are left out,
13
+ * and so are empty parts (`//`, a slash at the end).
14
+ */
15
+ export declare const getBreadcrumbItems: (pathname: string, { homeLabel, homeHref, formatSegment, }?: IBreadcrumbPathOptions) => IBreadcrumbItem[];
16
+ //# sourceMappingURL=getBreadcrumbItems.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBreadcrumbItems.d.cts","sourceRoot":"","sources":["../../src/breadcrumb/getBreadcrumbItems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0GAA0G;IAC1G,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;CAC7C;AAcD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,MAAM,EAChB,0CAIG,sBAA2B,KAC7B,eAAe,EAWjB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { IBreadcrumbItem } from './Breadcrumb.js';
2
+ export interface IBreadcrumbPathOptions {
3
+ /** What the first item says. @default 'Home' */
4
+ homeLabel?: string;
5
+ /** Where the first item goes. @default '/' */
6
+ homeHref?: string;
7
+ /** Makes the text of a step from its part of the path. The default turns `skin-care` into `skin care`. */
8
+ formatSegment?: (segment: string) => string;
9
+ }
10
+ /**
11
+ * The items of a breadcrumb for an address: `/products/skin-care/serum` is Home, products, skin care
12
+ * and serum, each with the address of the page it goes to. The query string and the hash are left out,
13
+ * and so are empty parts (`//`, a slash at the end).
14
+ */
15
+ export declare const getBreadcrumbItems: (pathname: string, { homeLabel, homeHref, formatSegment, }?: IBreadcrumbPathOptions) => IBreadcrumbItem[];
16
+ //# sourceMappingURL=getBreadcrumbItems.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBreadcrumbItems.d.ts","sourceRoot":"","sources":["../../src/breadcrumb/getBreadcrumbItems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0GAA0G;IAC1G,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;CAC7C;AAcD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,MAAM,EAChB,0CAIG,sBAA2B,KAC7B,eAAe,EAWjB,CAAC"}
@@ -0,0 +1,110 @@
1
+ 'use strict';
2
+
3
+ var react = require('@iconify/react');
4
+ var layout = require('@beautinique/frontend-components/layout');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+ var createIconRegistry = /* @__PURE__ */ __name((sets) => {
10
+ let registered = false;
11
+ return {
12
+ register: /* @__PURE__ */ __name(() => {
13
+ if (registered) return;
14
+ for (const set of sets) react.addCollection(set);
15
+ registered = true;
16
+ }, "register"),
17
+ names: sets.flatMap(
18
+ ({ prefix, icons, aliases }) => [...Object.keys(icons), ...Object.keys(aliases ?? {})].map((name) => `${prefix}:${name}`)
19
+ )
20
+ };
21
+ }, "createIconRegistry");
22
+
23
+ // src/breadcrumb/breadcrumb-icons.ts
24
+ var ICON_SETS = [
25
+ {
26
+ prefix: "solar",
27
+ width: 24,
28
+ height: 24,
29
+ icons: {
30
+ "alt-arrow-right-linear": {
31
+ body: '<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 5L15 12L9 19"/>'
32
+ }
33
+ }
34
+ }
35
+ ];
36
+ var { register: registerBreadcrumbIcons, names: BREADCRUMB_ICON_NAMES } = createIconRegistry(ICON_SETS);
37
+ var isPlainClick = /* @__PURE__ */ __name((event) => event.button === 0 && !event.defaultPrevented && !event.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey && (event.currentTarget.target === "" || event.currentTarget.target === "_self"), "isPlainClick");
38
+ var Breadcrumb = /* @__PURE__ */ __name(({
39
+ items,
40
+ onNavigate,
41
+ label = "Breadcrumb",
42
+ className = ""
43
+ }) => {
44
+ registerBreadcrumbIcons();
45
+ if (items.length === 0) return null;
46
+ return /* @__PURE__ */ jsxRuntime.jsx(layout.ScrollableGradientContainer, { direction: "horizontal", className: "[&>div]:justify-start", children: /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": label, className: `text-secondary ${className}`, children: /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "flex items-center gap-2", children: items.map((item, index) => {
47
+ const isLast = index === items.length - 1;
48
+ const href = isLast ? void 0 : item.href;
49
+ return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-center gap-2 truncate", children: [
50
+ href === void 0 ? /* @__PURE__ */ jsxRuntime.jsx(
51
+ "span",
52
+ {
53
+ "aria-current": isLast ? "page" : void 0,
54
+ className: `truncate capitalize ${isLast ? "opacity-80" : ""}`,
55
+ children: item.label
56
+ }
57
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
58
+ "a",
59
+ {
60
+ href,
61
+ className: "cursor-pointer truncate capitalize focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-crayola-c",
62
+ onClick: (event) => {
63
+ if (!onNavigate || !isPlainClick(event)) return;
64
+ event.preventDefault();
65
+ onNavigate(href, event);
66
+ },
67
+ children: item.label
68
+ }
69
+ ),
70
+ !isLast && /* @__PURE__ */ jsxRuntime.jsx(
71
+ react.Icon,
72
+ {
73
+ "aria-hidden": "true",
74
+ icon: "solar:alt-arrow-right-linear",
75
+ className: "shrink-0"
76
+ }
77
+ )
78
+ ] }, index);
79
+ }) }) }) });
80
+ }, "Breadcrumb");
81
+
82
+ // src/breadcrumb/getBreadcrumbItems.ts
83
+ var safeDecode = /* @__PURE__ */ __name((segment) => {
84
+ try {
85
+ return decodeURIComponent(segment);
86
+ } catch {
87
+ return segment;
88
+ }
89
+ }, "safeDecode");
90
+ var defaultFormat = /* @__PURE__ */ __name((segment) => safeDecode(segment).replaceAll(/[-_]+/g, " "), "defaultFormat");
91
+ var getBreadcrumbItems = /* @__PURE__ */ __name((pathname, {
92
+ homeLabel = "Home",
93
+ homeHref = "/",
94
+ formatSegment = defaultFormat
95
+ } = {}) => {
96
+ const path = pathname.split(/[?#]/, 1).at(0) ?? "";
97
+ const segments = path.split("/").filter(Boolean);
98
+ return [
99
+ { label: homeLabel, href: homeHref },
100
+ ...segments.map((segment, index) => ({
101
+ label: formatSegment(segment),
102
+ href: `/${segments.slice(0, index + 1).join("/")}`
103
+ }))
104
+ ];
105
+ }, "getBreadcrumbItems");
106
+
107
+ exports.Breadcrumb = Breadcrumb;
108
+ exports.getBreadcrumbItems = getBreadcrumbItems;
109
+ //# sourceMappingURL=index.cjs.map
110
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/icon-registry.ts","../../src/breadcrumb/breadcrumb-icons.ts","../../src/breadcrumb/Breadcrumb.tsx","../../src/breadcrumb/getBreadcrumbItems.ts"],"names":["addCollection","jsx","ScrollableGradientContainer","jsxs","Icon"],"mappings":"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","file":"index.cjs","sourcesContent":["import { addCollection, type IconifyJSON } from '@iconify/react';\n\n/**\n * Makes the registration of a bundled icon set: `register` puts the sets in Iconify (once, calling it\n * again does nothing) and `names` lists every icon, e.g. `solar:info-circle-linear`.\n *\n * A component calls `register` when it renders, not when its file is imported: an app that never\n * renders the component never runs it, and nothing depends on the bundler keeping an import that is\n * only there for its effect (the build says \"ignored-bare-import\" for those).\n */\nexport const createIconRegistry = (sets: readonly IconifyJSON[]) => {\n let registered = false;\n\n return {\n register: () => {\n if (registered) return;\n\n for (const set of sets) addCollection(set);\n registered = true;\n },\n names: sets.flatMap(({ prefix, icons, aliases }) =>\n [...Object.keys(icons), ...Object.keys(aliases ?? {})].map((name) => `${prefix}:${name}`),\n ),\n };\n};\n","import type { IconifyJSON } from '@iconify/react';\n\nimport { createIconRegistry } from '../lib/icon-registry.js';\n\n/*\n * The icons of the separator of the breadcrumb, bundled so they show without a network and without waiting for the\n * Iconify API (see `toast/toast-icons.ts`). The data is what\n * `https://api.iconify.design/<prefix>.json?icons=<name>` answers.\n */\nconst ICON_SETS: IconifyJSON[] = [\n {\n prefix: 'solar',\n width: 24,\n height: 24,\n icons: {\n 'alt-arrow-right-linear': {\n body: '<path fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M9 5L15 12L9 19\"/>',\n },\n },\n },\n];\n\n/**\n * Registers the icons above with Iconify; the components of this entry call it when they render\n * (calling it again is harmless).\n */\nexport const { register: registerBreadcrumbIcons, names: BREADCRUMB_ICON_NAMES } =\n createIconRegistry(ICON_SETS);\n","import { Icon } from '@iconify/react';\nimport type { MouseEvent, ReactNode } from 'react';\n\nimport { ScrollableGradientContainer } from '../layout/index.js';\nimport type { IClassName } from '../types/component.js';\nimport { registerBreadcrumbIcons } from './breadcrumb-icons.js';\n\nexport interface IBreadcrumbItem {\n /** What is written for the item. */\n label: ReactNode;\n /**\n * Where the item goes. Without one it is plain text. The last item is the page the person is on: it\n * is never a link, whatever it has.\n */\n href?: string;\n}\n\nexport interface IBreadcrumb extends IClassName {\n /** The path to the page, from the top: the last one is the page itself. */\n items: readonly IBreadcrumbItem[];\n /**\n * Called when an item is pressed with a plain click, in place of the browser going to the address:\n * the app goes there itself, with its router, without loading the page. A click with a modifier\n * (new tab, new window) and a middle click are left to the browser, so the links keep working as\n * links. Without it the links are plain links.\n */\n onNavigate?: (href: string, event: MouseEvent<HTMLAnchorElement>) => void;\n /** The name of the navigation, for assistive technology. @default 'Breadcrumb' */\n label?: string;\n}\n\nconst isPlainClick = (event: MouseEvent<HTMLAnchorElement>) =>\n event.button === 0 &&\n !event.defaultPrevented &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.shiftKey &&\n !event.altKey &&\n (event.currentTarget.target === '' || event.currentTarget.target === '_self');\n\n/**\n * Where the person is in the site (Home › Products › Face), each step but the last a link to the page\n * above it. It is a list in a `nav`, the last item is marked as the current page, and the arrows\n * between the items are not read out. A path that is too long for the width scrolls, with a fade.\n *\n * The router is the app's: the links are plain `<a href>`; give `onNavigate` to go there without\n * loading the page. `getBreadcrumbItems()` makes the items from a path.\n */\nexport const Breadcrumb = ({\n items,\n onNavigate,\n label = 'Breadcrumb',\n className = '',\n}: IBreadcrumb) => {\n registerBreadcrumbIcons();\n\n if (items.length === 0) return null;\n\n return (\n <ScrollableGradientContainer direction=\"horizontal\" className=\"[&>div]:justify-start\">\n <nav aria-label={label} className={`text-secondary ${className}`}>\n <ol className=\"flex items-center gap-2\">\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n const href = isLast ? undefined : item.href;\n\n return (\n <li key={index} className=\"flex items-center gap-2 truncate\">\n {href === undefined ? (\n <span\n aria-current={isLast ? 'page' : undefined}\n className={`truncate capitalize ${isLast ? 'opacity-80' : ''}`}\n >\n {item.label}\n </span>\n ) : (\n <a\n href={href}\n className=\"cursor-pointer truncate capitalize focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-crayola-c\"\n onClick={(event) => {\n if (!onNavigate || !isPlainClick(event)) return;\n\n event.preventDefault();\n onNavigate(href, event);\n }}\n >\n {item.label}\n </a>\n )}\n {!isLast && (\n <Icon\n aria-hidden=\"true\"\n icon=\"solar:alt-arrow-right-linear\"\n className=\"shrink-0\"\n />\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n </ScrollableGradientContainer>\n );\n};\n","import type { IBreadcrumbItem } from './Breadcrumb.js';\n\nexport interface IBreadcrumbPathOptions {\n /** What the first item says. @default 'Home' */\n homeLabel?: string;\n /** Where the first item goes. @default '/' */\n homeHref?: string;\n /** Makes the text of a step from its part of the path. The default turns `skin-care` into `skin care`. */\n formatSegment?: (segment: string) => string;\n}\n\nconst safeDecode = (segment: string) => {\n try {\n return decodeURIComponent(segment);\n } catch {\n // a `%` that is not an escape: the text as it is\n return segment;\n }\n};\n\n/** `skin-care` and `skin_care` read `skin care`; `%20` is a space. */\nconst defaultFormat = (segment: string) => safeDecode(segment).replaceAll(/[-_]+/g, ' ');\n\n/**\n * The items of a breadcrumb for an address: `/products/skin-care/serum` is Home, products, skin care\n * and serum, each with the address of the page it goes to. The query string and the hash are left out,\n * and so are empty parts (`//`, a slash at the end).\n */\nexport const getBreadcrumbItems = (\n pathname: string,\n {\n homeLabel = 'Home',\n homeHref = '/',\n formatSegment = defaultFormat,\n }: IBreadcrumbPathOptions = {},\n): IBreadcrumbItem[] => {\n const path = pathname.split(/[?#]/, 1).at(0) ?? '';\n const segments = path.split('/').filter(Boolean);\n\n return [\n { label: homeLabel, href: homeHref },\n ...segments.map((segment, index) => ({\n label: formatSegment(segment),\n href: `/${segments.slice(0, index + 1).join('/')}`,\n })),\n ];\n};\n"]}
@@ -0,0 +1,3 @@
1
+ export { Breadcrumb, type IBreadcrumb, type IBreadcrumbItem } from './Breadcrumb.js';
2
+ export { getBreadcrumbItems, type IBreadcrumbPathOptions } from './getBreadcrumbItems.js';
3
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/breadcrumb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Breadcrumb, type IBreadcrumb, type IBreadcrumbItem } from './Breadcrumb.js';
2
+ export { getBreadcrumbItems, type IBreadcrumbPathOptions } from './getBreadcrumbItems.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/breadcrumb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,107 @@
1
+ import { addCollection, Icon } from '@iconify/react';
2
+ import { ScrollableGradientContainer } from '@beautinique/frontend-components/layout';
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var createIconRegistry = /* @__PURE__ */ __name((sets) => {
8
+ let registered = false;
9
+ return {
10
+ register: /* @__PURE__ */ __name(() => {
11
+ if (registered) return;
12
+ for (const set of sets) addCollection(set);
13
+ registered = true;
14
+ }, "register"),
15
+ names: sets.flatMap(
16
+ ({ prefix, icons, aliases }) => [...Object.keys(icons), ...Object.keys(aliases ?? {})].map((name) => `${prefix}:${name}`)
17
+ )
18
+ };
19
+ }, "createIconRegistry");
20
+
21
+ // src/breadcrumb/breadcrumb-icons.ts
22
+ var ICON_SETS = [
23
+ {
24
+ prefix: "solar",
25
+ width: 24,
26
+ height: 24,
27
+ icons: {
28
+ "alt-arrow-right-linear": {
29
+ body: '<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 5L15 12L9 19"/>'
30
+ }
31
+ }
32
+ }
33
+ ];
34
+ var { register: registerBreadcrumbIcons, names: BREADCRUMB_ICON_NAMES } = createIconRegistry(ICON_SETS);
35
+ var isPlainClick = /* @__PURE__ */ __name((event) => event.button === 0 && !event.defaultPrevented && !event.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey && (event.currentTarget.target === "" || event.currentTarget.target === "_self"), "isPlainClick");
36
+ var Breadcrumb = /* @__PURE__ */ __name(({
37
+ items,
38
+ onNavigate,
39
+ label = "Breadcrumb",
40
+ className = ""
41
+ }) => {
42
+ registerBreadcrumbIcons();
43
+ if (items.length === 0) return null;
44
+ return /* @__PURE__ */ jsx(ScrollableGradientContainer, { direction: "horizontal", className: "[&>div]:justify-start", children: /* @__PURE__ */ jsx("nav", { "aria-label": label, className: `text-secondary ${className}`, children: /* @__PURE__ */ jsx("ol", { className: "flex items-center gap-2", children: items.map((item, index) => {
45
+ const isLast = index === items.length - 1;
46
+ const href = isLast ? void 0 : item.href;
47
+ return /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 truncate", children: [
48
+ href === void 0 ? /* @__PURE__ */ jsx(
49
+ "span",
50
+ {
51
+ "aria-current": isLast ? "page" : void 0,
52
+ className: `truncate capitalize ${isLast ? "opacity-80" : ""}`,
53
+ children: item.label
54
+ }
55
+ ) : /* @__PURE__ */ jsx(
56
+ "a",
57
+ {
58
+ href,
59
+ className: "cursor-pointer truncate capitalize focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-crayola-c",
60
+ onClick: (event) => {
61
+ if (!onNavigate || !isPlainClick(event)) return;
62
+ event.preventDefault();
63
+ onNavigate(href, event);
64
+ },
65
+ children: item.label
66
+ }
67
+ ),
68
+ !isLast && /* @__PURE__ */ jsx(
69
+ Icon,
70
+ {
71
+ "aria-hidden": "true",
72
+ icon: "solar:alt-arrow-right-linear",
73
+ className: "shrink-0"
74
+ }
75
+ )
76
+ ] }, index);
77
+ }) }) }) });
78
+ }, "Breadcrumb");
79
+
80
+ // src/breadcrumb/getBreadcrumbItems.ts
81
+ var safeDecode = /* @__PURE__ */ __name((segment) => {
82
+ try {
83
+ return decodeURIComponent(segment);
84
+ } catch {
85
+ return segment;
86
+ }
87
+ }, "safeDecode");
88
+ var defaultFormat = /* @__PURE__ */ __name((segment) => safeDecode(segment).replaceAll(/[-_]+/g, " "), "defaultFormat");
89
+ var getBreadcrumbItems = /* @__PURE__ */ __name((pathname, {
90
+ homeLabel = "Home",
91
+ homeHref = "/",
92
+ formatSegment = defaultFormat
93
+ } = {}) => {
94
+ const path = pathname.split(/[?#]/, 1).at(0) ?? "";
95
+ const segments = path.split("/").filter(Boolean);
96
+ return [
97
+ { label: homeLabel, href: homeHref },
98
+ ...segments.map((segment, index) => ({
99
+ label: formatSegment(segment),
100
+ href: `/${segments.slice(0, index + 1).join("/")}`
101
+ }))
102
+ ];
103
+ }, "getBreadcrumbItems");
104
+
105
+ export { Breadcrumb, getBreadcrumbItems };
106
+ //# sourceMappingURL=index.js.map
107
+ //# sourceMappingURL=index.js.map