@tetherto/dev-websites-core 0.2.1 → 0.3.1

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 (314) hide show
  1. package/README.md +81 -9
  2. package/dist/analytics/GtmLoader.d.mts +14 -0
  3. package/dist/analytics/GtmLoader.d.mts.map +1 -0
  4. package/dist/analytics/GtmLoader.mjs +30 -0
  5. package/dist/analytics/GtmLoader.mjs.map +1 -0
  6. package/dist/analytics/createTrackedLink.d.mts +46 -0
  7. package/dist/analytics/createTrackedLink.d.mts.map +1 -0
  8. package/dist/analytics/createTrackedLink.mjs +36 -0
  9. package/dist/analytics/createTrackedLink.mjs.map +1 -0
  10. package/dist/analytics/index.d.mts +3 -0
  11. package/dist/analytics/index.mjs +3 -0
  12. package/dist/cms/index.d.mts +2 -2
  13. package/dist/cms/index.mjs +2 -2
  14. package/dist/{cms-5bS91IRZ.mjs → cms.mjs} +2 -2
  15. package/dist/cms.mjs.map +1 -0
  16. package/dist/i18n/index.d.mts +1 -1
  17. package/dist/i18n/index.mjs +1 -1
  18. package/dist/{i18n-Dy3VrbBw.mjs → i18n.mjs} +1 -1
  19. package/dist/i18n.mjs.map +1 -0
  20. package/dist/index.d.mts +214 -6
  21. package/dist/index.d.mts.map +1 -0
  22. package/dist/index.mjs +6 -6
  23. package/dist/{index-D36IEwUg.d.mts → index2.d.mts} +1 -1
  24. package/dist/index2.d.mts.map +1 -0
  25. package/dist/{index-tTs9h9BS.d.mts → index3.d.mts} +2 -2
  26. package/dist/index3.d.mts.map +1 -0
  27. package/dist/{index-Dyi7DDoO.d.mts → index4.d.mts} +1 -1
  28. package/dist/index4.d.mts.map +1 -0
  29. package/dist/index5.d.mts +6 -0
  30. package/dist/{logger-BPURnavq.mjs → logger.mjs} +1 -1
  31. package/dist/logger.mjs.map +1 -0
  32. package/dist/{readMediaBuffer-1C3QTpkO.d.mts → readMediaBuffer.d.mts} +1 -1
  33. package/dist/readMediaBuffer.d.mts.map +1 -0
  34. package/dist/{readMediaBuffer-DWkTbYVn.mjs → readMediaBuffer.mjs} +2 -2
  35. package/dist/readMediaBuffer.mjs.map +1 -0
  36. package/dist/seo/index.d.mts +1 -1
  37. package/dist/seo/index.mjs +1 -1
  38. package/dist/{seo-e5XjgQ7l.mjs → seo.mjs} +3 -3
  39. package/dist/seo.mjs.map +1 -0
  40. package/dist/ui/a11y/focus.d.mts +6 -0
  41. package/dist/ui/a11y/focus.d.mts.map +1 -0
  42. package/dist/ui/a11y/focus.mjs +7 -0
  43. package/dist/ui/a11y/focus.mjs.map +1 -0
  44. package/dist/ui/a11y/index.d.mts +4 -0
  45. package/dist/ui/a11y/index.mjs +4 -0
  46. package/dist/ui/carousel/index.d.mts +3 -0
  47. package/dist/ui/carousel/index.mjs +3 -0
  48. package/dist/ui/components/Accordion/Accordion.d.mts +16 -0
  49. package/dist/ui/components/Accordion/Accordion.d.mts.map +1 -0
  50. package/dist/ui/components/Accordion/Accordion.mjs +51 -0
  51. package/dist/ui/components/Accordion/Accordion.mjs.map +1 -0
  52. package/dist/ui/components/Accordion/index.d.mts +2 -0
  53. package/dist/ui/components/Accordion/index.mjs +2 -0
  54. package/dist/ui/components/Avatar/Avatar.d.mts +9 -0
  55. package/dist/ui/components/Avatar/Avatar.d.mts.map +1 -0
  56. package/dist/ui/components/Avatar/Avatar.mjs +15 -0
  57. package/dist/ui/components/Avatar/Avatar.mjs.map +1 -0
  58. package/dist/ui/components/Avatar/index.d.mts +2 -0
  59. package/dist/ui/components/Avatar/index.mjs +2 -0
  60. package/dist/ui/components/Badge/Badge.d.mts +14 -0
  61. package/dist/ui/components/Badge/Badge.d.mts.map +1 -0
  62. package/dist/ui/components/Badge/Badge.mjs +30 -0
  63. package/dist/ui/components/Badge/Badge.mjs.map +1 -0
  64. package/dist/ui/components/Badge/index.d.mts +2 -0
  65. package/dist/ui/components/Badge/index.mjs +2 -0
  66. package/dist/ui/components/BadgeVersion/BadgeVersion.d.mts +24 -0
  67. package/dist/ui/components/BadgeVersion/BadgeVersion.d.mts.map +1 -0
  68. package/dist/ui/components/BadgeVersion/BadgeVersion.mjs +66 -0
  69. package/dist/ui/components/BadgeVersion/BadgeVersion.mjs.map +1 -0
  70. package/dist/ui/components/BadgeVersion/index.d.mts +2 -0
  71. package/dist/ui/components/BadgeVersion/index.mjs +2 -0
  72. package/dist/ui/components/Button/Button.d.mts +14 -0
  73. package/dist/ui/components/Button/Button.d.mts.map +1 -0
  74. package/dist/ui/components/Button/Button.mjs +48 -0
  75. package/dist/ui/components/Button/Button.mjs.map +1 -0
  76. package/dist/ui/components/Button/index.d.mts +2 -0
  77. package/dist/ui/components/Button/index.mjs +2 -0
  78. package/dist/ui/components/Card/Card.d.mts +14 -0
  79. package/dist/ui/components/Card/Card.d.mts.map +1 -0
  80. package/dist/ui/components/Card/Card.mjs +40 -0
  81. package/dist/ui/components/Card/Card.mjs.map +1 -0
  82. package/dist/ui/components/Card/index.d.mts +2 -0
  83. package/dist/ui/components/Card/index.mjs +2 -0
  84. package/dist/ui/components/Carousel/Carousel.d.mts +42 -0
  85. package/dist/ui/components/Carousel/Carousel.d.mts.map +1 -0
  86. package/dist/ui/components/Carousel/Carousel.mjs +164 -0
  87. package/dist/ui/components/Carousel/Carousel.mjs.map +1 -0
  88. package/dist/ui/components/Carousel/index.d.mts +2 -0
  89. package/dist/ui/components/Carousel/index.mjs +2 -0
  90. package/dist/ui/components/Checkbox/Checkbox.d.mts +8 -0
  91. package/dist/ui/components/Checkbox/Checkbox.d.mts.map +1 -0
  92. package/dist/ui/components/Checkbox/Checkbox.mjs +39 -0
  93. package/dist/ui/components/Checkbox/Checkbox.mjs.map +1 -0
  94. package/dist/ui/components/Checkbox/index.d.mts +2 -0
  95. package/dist/ui/components/Checkbox/index.mjs +2 -0
  96. package/dist/ui/components/CodeBlock/CodeBlock.d.mts +22 -0
  97. package/dist/ui/components/CodeBlock/CodeBlock.d.mts.map +1 -0
  98. package/dist/ui/components/CodeBlock/CodeBlock.mjs +66 -0
  99. package/dist/ui/components/CodeBlock/CodeBlock.mjs.map +1 -0
  100. package/dist/ui/components/CodeBlock/index.d.mts +2 -0
  101. package/dist/ui/components/CodeBlock/index.mjs +2 -0
  102. package/dist/ui/components/CodeBlockTabs/CodeBlockTabs.d.mts +19 -0
  103. package/dist/ui/components/CodeBlockTabs/CodeBlockTabs.d.mts.map +1 -0
  104. package/dist/ui/components/CodeBlockTabs/CodeBlockTabs.mjs +59 -0
  105. package/dist/ui/components/CodeBlockTabs/CodeBlockTabs.mjs.map +1 -0
  106. package/dist/ui/components/CodeBlockTabs/index.d.mts +2 -0
  107. package/dist/ui/components/CodeBlockTabs/index.mjs +2 -0
  108. package/dist/ui/components/CollapsibleSection/CollapsibleSection.d.mts +13 -0
  109. package/dist/ui/components/CollapsibleSection/CollapsibleSection.d.mts.map +1 -0
  110. package/dist/ui/components/CollapsibleSection/CollapsibleSection.mjs +55 -0
  111. package/dist/ui/components/CollapsibleSection/CollapsibleSection.mjs.map +1 -0
  112. package/dist/ui/components/CollapsibleSection/index.d.mts +2 -0
  113. package/dist/ui/components/CollapsibleSection/index.mjs +2 -0
  114. package/dist/ui/components/CopyButton/CopyButton.d.mts +12 -0
  115. package/dist/ui/components/CopyButton/CopyButton.d.mts.map +1 -0
  116. package/dist/ui/components/CopyButton/CopyButton.mjs +45 -0
  117. package/dist/ui/components/CopyButton/CopyButton.mjs.map +1 -0
  118. package/dist/ui/components/CopyButton/index.d.mts +2 -0
  119. package/dist/ui/components/CopyButton/index.mjs +2 -0
  120. package/dist/ui/components/Dialog/Dialog.d.mts +26 -0
  121. package/dist/ui/components/Dialog/Dialog.d.mts.map +1 -0
  122. package/dist/ui/components/Dialog/Dialog.mjs +79 -0
  123. package/dist/ui/components/Dialog/Dialog.mjs.map +1 -0
  124. package/dist/ui/components/Dialog/index.d.mts +2 -0
  125. package/dist/ui/components/Dialog/index.mjs +2 -0
  126. package/dist/ui/components/EmptyState/EmptyState.d.mts +18 -0
  127. package/dist/ui/components/EmptyState/EmptyState.d.mts.map +1 -0
  128. package/dist/ui/components/EmptyState/EmptyState.mjs +36 -0
  129. package/dist/ui/components/EmptyState/EmptyState.mjs.map +1 -0
  130. package/dist/ui/components/EmptyState/index.d.mts +2 -0
  131. package/dist/ui/components/EmptyState/index.mjs +2 -0
  132. package/dist/ui/components/FieldError/FieldError.d.mts +14 -0
  133. package/dist/ui/components/FieldError/FieldError.d.mts.map +1 -0
  134. package/dist/ui/components/FieldError/FieldError.mjs +19 -0
  135. package/dist/ui/components/FieldError/FieldError.mjs.map +1 -0
  136. package/dist/ui/components/FieldError/index.d.mts +2 -0
  137. package/dist/ui/components/FieldError/index.mjs +2 -0
  138. package/dist/ui/components/FormattedDate/FormattedDate.d.mts +15 -0
  139. package/dist/ui/components/FormattedDate/FormattedDate.d.mts.map +1 -0
  140. package/dist/ui/components/FormattedDate/FormattedDate.mjs +23 -0
  141. package/dist/ui/components/FormattedDate/FormattedDate.mjs.map +1 -0
  142. package/dist/ui/components/FormattedDate/index.d.mts +2 -0
  143. package/dist/ui/components/FormattedDate/index.mjs +2 -0
  144. package/dist/ui/components/IconButton/IconButton.d.mts +10 -0
  145. package/dist/ui/components/IconButton/IconButton.d.mts.map +1 -0
  146. package/dist/ui/components/IconButton/IconButton.mjs +19 -0
  147. package/dist/ui/components/IconButton/IconButton.mjs.map +1 -0
  148. package/dist/ui/components/IconButton/index.d.mts +2 -0
  149. package/dist/ui/components/IconButton/index.mjs +2 -0
  150. package/dist/ui/components/Input/Input.d.mts +12 -0
  151. package/dist/ui/components/Input/Input.d.mts.map +1 -0
  152. package/dist/ui/components/Input/Input.mjs +43 -0
  153. package/dist/ui/components/Input/Input.mjs.map +1 -0
  154. package/dist/ui/components/Input/index.d.mts +2 -0
  155. package/dist/ui/components/Input/index.mjs +2 -0
  156. package/dist/ui/components/Label/Label.d.mts +11 -0
  157. package/dist/ui/components/Label/Label.d.mts.map +1 -0
  158. package/dist/ui/components/Label/Label.mjs +18 -0
  159. package/dist/ui/components/Label/Label.mjs.map +1 -0
  160. package/dist/ui/components/Label/index.d.mts +2 -0
  161. package/dist/ui/components/Label/index.mjs +2 -0
  162. package/dist/ui/components/LazyVideo/LazyVideo.d.mts +23 -0
  163. package/dist/ui/components/LazyVideo/LazyVideo.d.mts.map +1 -0
  164. package/dist/ui/components/LazyVideo/LazyVideo.mjs +57 -0
  165. package/dist/ui/components/LazyVideo/LazyVideo.mjs.map +1 -0
  166. package/dist/ui/components/LazyVideo/index.d.mts +2 -0
  167. package/dist/ui/components/LazyVideo/index.mjs +2 -0
  168. package/dist/ui/components/Pagination/Pagination.d.mts +38 -0
  169. package/dist/ui/components/Pagination/Pagination.d.mts.map +1 -0
  170. package/dist/ui/components/Pagination/Pagination.mjs +110 -0
  171. package/dist/ui/components/Pagination/Pagination.mjs.map +1 -0
  172. package/dist/ui/components/Pagination/index.d.mts +2 -0
  173. package/dist/ui/components/Pagination/index.mjs +2 -0
  174. package/dist/ui/components/PaginationItem/PaginationItem.d.mts +15 -0
  175. package/dist/ui/components/PaginationItem/PaginationItem.d.mts.map +1 -0
  176. package/dist/ui/components/PaginationItem/PaginationItem.mjs +34 -0
  177. package/dist/ui/components/PaginationItem/PaginationItem.mjs.map +1 -0
  178. package/dist/ui/components/PaginationItem/index.d.mts +2 -0
  179. package/dist/ui/components/PaginationItem/index.mjs +2 -0
  180. package/dist/ui/components/PasswordInput/PasswordInput.d.mts +10 -0
  181. package/dist/ui/components/PasswordInput/PasswordInput.d.mts.map +1 -0
  182. package/dist/ui/components/PasswordInput/PasswordInput.mjs +39 -0
  183. package/dist/ui/components/PasswordInput/PasswordInput.mjs.map +1 -0
  184. package/dist/ui/components/PasswordInput/index.d.mts +2 -0
  185. package/dist/ui/components/PasswordInput/index.mjs +2 -0
  186. package/dist/ui/components/ProgressStepper/ProgressStepper.d.mts +20 -0
  187. package/dist/ui/components/ProgressStepper/ProgressStepper.d.mts.map +1 -0
  188. package/dist/ui/components/ProgressStepper/ProgressStepper.mjs +39 -0
  189. package/dist/ui/components/ProgressStepper/ProgressStepper.mjs.map +1 -0
  190. package/dist/ui/components/ProgressStepper/index.d.mts +2 -0
  191. package/dist/ui/components/ProgressStepper/index.mjs +2 -0
  192. package/dist/ui/components/Prose/Prose.d.mts +10 -0
  193. package/dist/ui/components/Prose/Prose.d.mts.map +1 -0
  194. package/dist/ui/components/Prose/Prose.mjs +19 -0
  195. package/dist/ui/components/Prose/Prose.mjs.map +1 -0
  196. package/dist/ui/components/Prose/index.d.mts +2 -0
  197. package/dist/ui/components/Prose/index.mjs +2 -0
  198. package/dist/ui/components/Radio/Radio.d.mts +8 -0
  199. package/dist/ui/components/Radio/Radio.d.mts.map +1 -0
  200. package/dist/ui/components/Radio/Radio.mjs +25 -0
  201. package/dist/ui/components/Radio/Radio.mjs.map +1 -0
  202. package/dist/ui/components/Radio/index.d.mts +2 -0
  203. package/dist/ui/components/Radio/index.mjs +2 -0
  204. package/dist/ui/components/Reveal/Reveal.d.mts +10 -0
  205. package/dist/ui/components/Reveal/Reveal.d.mts.map +1 -0
  206. package/dist/ui/components/Reveal/Reveal.mjs +18 -0
  207. package/dist/ui/components/Reveal/Reveal.mjs.map +1 -0
  208. package/dist/ui/components/Reveal/index.d.mts +2 -0
  209. package/dist/ui/components/Reveal/index.mjs +2 -0
  210. package/dist/ui/components/SearchInput/SearchInput.d.mts +15 -0
  211. package/dist/ui/components/SearchInput/SearchInput.d.mts.map +1 -0
  212. package/dist/ui/components/SearchInput/SearchInput.mjs +28 -0
  213. package/dist/ui/components/SearchInput/SearchInput.mjs.map +1 -0
  214. package/dist/ui/components/SearchInput/index.d.mts +2 -0
  215. package/dist/ui/components/SearchInput/index.mjs +2 -0
  216. package/dist/ui/components/Select/Select.d.mts +34 -0
  217. package/dist/ui/components/Select/Select.d.mts.map +1 -0
  218. package/dist/ui/components/Select/Select.mjs +167 -0
  219. package/dist/ui/components/Select/Select.mjs.map +1 -0
  220. package/dist/ui/components/Select/index.d.mts +2 -0
  221. package/dist/ui/components/Select/index.mjs +2 -0
  222. package/dist/ui/components/Sheet/Sheet.d.mts +19 -0
  223. package/dist/ui/components/Sheet/Sheet.d.mts.map +1 -0
  224. package/dist/ui/components/Sheet/Sheet.mjs +59 -0
  225. package/dist/ui/components/Sheet/Sheet.mjs.map +1 -0
  226. package/dist/ui/components/Sheet/index.d.mts +2 -0
  227. package/dist/ui/components/Sheet/index.mjs +2 -0
  228. package/dist/ui/components/StaggerReveal/StaggerReveal.d.mts +10 -0
  229. package/dist/ui/components/StaggerReveal/StaggerReveal.d.mts.map +1 -0
  230. package/dist/ui/components/StaggerReveal/StaggerReveal.mjs +31 -0
  231. package/dist/ui/components/StaggerReveal/StaggerReveal.mjs.map +1 -0
  232. package/dist/ui/components/StaggerReveal/index.d.mts +2 -0
  233. package/dist/ui/components/StaggerReveal/index.mjs +2 -0
  234. package/dist/ui/components/Stepper/Stepper.d.mts +15 -0
  235. package/dist/ui/components/Stepper/Stepper.d.mts.map +1 -0
  236. package/dist/ui/components/Stepper/Stepper.mjs +38 -0
  237. package/dist/ui/components/Stepper/Stepper.mjs.map +1 -0
  238. package/dist/ui/components/Stepper/index.d.mts +2 -0
  239. package/dist/ui/components/Stepper/index.mjs +2 -0
  240. package/dist/ui/components/Switch/Switch.d.mts +12 -0
  241. package/dist/ui/components/Switch/Switch.d.mts.map +1 -0
  242. package/dist/ui/components/Switch/Switch.mjs +34 -0
  243. package/dist/ui/components/Switch/Switch.mjs.map +1 -0
  244. package/dist/ui/components/Switch/index.d.mts +2 -0
  245. package/dist/ui/components/Switch/index.mjs +2 -0
  246. package/dist/ui/components/TextButton/TextButton.d.mts +9 -0
  247. package/dist/ui/components/TextButton/TextButton.d.mts.map +1 -0
  248. package/dist/ui/components/TextButton/TextButton.mjs +16 -0
  249. package/dist/ui/components/TextButton/TextButton.mjs.map +1 -0
  250. package/dist/ui/components/TextButton/index.d.mts +2 -0
  251. package/dist/ui/components/TextButton/index.mjs +2 -0
  252. package/dist/ui/components/Textarea/Textarea.d.mts +9 -0
  253. package/dist/ui/components/Textarea/Textarea.d.mts.map +1 -0
  254. package/dist/ui/components/Textarea/Textarea.mjs +27 -0
  255. package/dist/ui/components/Textarea/Textarea.mjs.map +1 -0
  256. package/dist/ui/components/Textarea/index.d.mts +2 -0
  257. package/dist/ui/components/Textarea/index.mjs +2 -0
  258. package/dist/ui/components/Toast/Toast.d.mts +20 -0
  259. package/dist/ui/components/Toast/Toast.d.mts.map +1 -0
  260. package/dist/ui/components/Toast/Toast.mjs +128 -0
  261. package/dist/ui/components/Toast/Toast.mjs.map +1 -0
  262. package/dist/ui/components/Toast/index.d.mts +2 -0
  263. package/dist/ui/components/Toast/index.mjs +2 -0
  264. package/dist/ui/components/Tooltip/Tooltip.d.mts +11 -0
  265. package/dist/ui/components/Tooltip/Tooltip.d.mts.map +1 -0
  266. package/dist/ui/components/Tooltip/Tooltip.mjs +20 -0
  267. package/dist/ui/components/Tooltip/Tooltip.mjs.map +1 -0
  268. package/dist/ui/components/Tooltip/index.d.mts +2 -0
  269. package/dist/ui/components/Tooltip/index.mjs +2 -0
  270. package/dist/ui/components/VisuallyHidden/VisuallyHidden.d.mts +7 -0
  271. package/dist/ui/components/VisuallyHidden/VisuallyHidden.d.mts.map +1 -0
  272. package/dist/ui/components/VisuallyHidden/VisuallyHidden.mjs +13 -0
  273. package/dist/ui/components/VisuallyHidden/VisuallyHidden.mjs.map +1 -0
  274. package/dist/ui/components/VisuallyHidden/index.d.mts +2 -0
  275. package/dist/ui/components/VisuallyHidden/index.mjs +2 -0
  276. package/dist/ui/hooks/index.d.mts +2 -0
  277. package/dist/ui/hooks/index.mjs +2 -0
  278. package/dist/ui/hooks/useInView.d.mts +13 -0
  279. package/dist/ui/hooks/useInView.d.mts.map +1 -0
  280. package/dist/ui/hooks/useInView.mjs +37 -0
  281. package/dist/ui/hooks/useInView.mjs.map +1 -0
  282. package/dist/ui/index.d.mts +81 -0
  283. package/dist/ui/index.mjs +40 -0
  284. package/dist/ui/theme/preset.d.mts +170 -0
  285. package/dist/ui/theme/preset.d.mts.map +1 -0
  286. package/dist/ui/theme/preset.mjs +143 -0
  287. package/dist/ui/theme/preset.mjs.map +1 -0
  288. package/dist/ui/utils/cn.d.mts +6 -0
  289. package/dist/ui/utils/cn.d.mts.map +1 -0
  290. package/dist/ui/utils/cn.mjs +42 -0
  291. package/dist/ui/utils/cn.mjs.map +1 -0
  292. package/dist/ui/utils/index.d.mts +2 -0
  293. package/dist/ui/utils/index.mjs +2 -0
  294. package/dist/utils/index.d.mts +1 -1
  295. package/dist/utils/index.mjs +2 -2
  296. package/dist/{utils-CVVQQltg.mjs → utils.mjs} +1 -1
  297. package/dist/utils.mjs.map +1 -0
  298. package/package.json +76 -7
  299. package/src/ui/theme/preset.css +53 -0
  300. package/src/ui/theme/preset.ts +131 -0
  301. package/src/ui/theme/theme.css +12 -0
  302. package/src/ui/theme/tokens.css +57 -0
  303. package/dist/cms-5bS91IRZ.mjs.map +0 -1
  304. package/dist/i18n-Dy3VrbBw.mjs.map +0 -1
  305. package/dist/index-9B8SfwdR.d.mts +0 -214
  306. package/dist/index-9B8SfwdR.d.mts.map +0 -1
  307. package/dist/index-D36IEwUg.d.mts.map +0 -1
  308. package/dist/index-Dyi7DDoO.d.mts.map +0 -1
  309. package/dist/index-tTs9h9BS.d.mts.map +0 -1
  310. package/dist/logger-BPURnavq.mjs.map +0 -1
  311. package/dist/readMediaBuffer-1C3QTpkO.d.mts.map +0 -1
  312. package/dist/readMediaBuffer-DWkTbYVn.mjs.map +0 -1
  313. package/dist/seo-e5XjgQ7l.mjs.map +0 -1
  314. package/dist/utils-CVVQQltg.mjs.map +0 -1
@@ -0,0 +1,14 @@
1
+ import { ReactNode } from "react";
2
+ //#region src/ui/components/FieldError/FieldError.d.ts
3
+ type FieldErrorProps = {
4
+ id?: string;
5
+ children?: ReactNode;
6
+ className?: string;
7
+ };
8
+ /**
9
+ * Presentational field error. Apps wire react-hook-form (or other) and pass the message.
10
+ */
11
+ declare function FieldError({ id, children, className }: FieldErrorProps): import("react").JSX.Element | null;
12
+ //#endregion
13
+ export { FieldError, FieldErrorProps };
14
+ //# sourceMappingURL=FieldError.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldError.d.mts","names":[],"sources":["../../../../src/ui/components/FieldError/FieldError.tsx"],"mappings":";;KAIY;EACV;EACA,WAAW;EACX;;;;;iBAMO,aAAa,IAAI,UAAU,aAAa,kCAAe,IAAA"}
@@ -0,0 +1,19 @@
1
+ import { cn } from "../../utils/cn.mjs";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/ui/components/FieldError/FieldError.tsx
4
+ /**
5
+ * Presentational field error. Apps wire react-hook-form (or other) and pass the message.
6
+ */
7
+ function FieldError({ id, children, className }) {
8
+ if (!children) return null;
9
+ return /* @__PURE__ */ jsx("p", {
10
+ id,
11
+ "data-slot": "field-error",
12
+ className: cn("text-xs text-destructive", className),
13
+ children
14
+ });
15
+ }
16
+ //#endregion
17
+ export { FieldError };
18
+
19
+ //# sourceMappingURL=FieldError.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldError.mjs","names":[],"sources":["../../../../src/ui/components/FieldError/FieldError.tsx"],"sourcesContent":["import { cn } from '../../utils/cn.js'\n\nimport type { ReactNode } from 'react'\n\nexport type FieldErrorProps = {\n id?: string\n children?: ReactNode\n className?: string\n}\n\n/**\n * Presentational field error. Apps wire react-hook-form (or other) and pass the message.\n */\nfunction FieldError({ id, children, className }: FieldErrorProps) {\n if (!children) return null\n\n return (\n <p id={id} data-slot=\"field-error\" className={cn('text-xs text-destructive', className)}>\n {children}\n </p>\n )\n}\n\nexport { FieldError }\n"],"mappings":";;;;;;AAaA,SAAS,WAAW,EAAE,IAAI,UAAU,aAA8B;CAChE,IAAI,CAAC,UAAU,OAAO;CAEtB,OACE,oBAAC,KAAD;EAAO;EAAI,aAAU;EAAc,WAAW,GAAG,4BAA4B,SAAS;EACnF;CACA,CAAA;AAEP"}
@@ -0,0 +1,2 @@
1
+ import { FieldError, FieldErrorProps } from "./FieldError.mjs";
2
+ export { FieldError, type FieldErrorProps };
@@ -0,0 +1,2 @@
1
+ import { FieldError } from "./FieldError.mjs";
2
+ export { FieldError };
@@ -0,0 +1,15 @@
1
+ //#region src/ui/components/FormattedDate/FormattedDate.d.ts
2
+ type FormatDateOptions = {
3
+ month?: 'short' | 'long';
4
+ };
5
+ type FormattedDateProps = {
6
+ iso: string | null | undefined;
7
+ locale: string;
8
+ className?: string;
9
+ month?: FormatDateOptions['month'];
10
+ };
11
+ declare function formatDate(iso: string | null | undefined, locale: string, options?: FormatDateOptions): string;
12
+ declare function FormattedDate({ iso, locale, className, month }: FormattedDateProps): import("react").JSX.Element | null;
13
+ //#endregion
14
+ export { FormatDateOptions, FormattedDate, FormattedDateProps, formatDate };
15
+ //# sourceMappingURL=FormattedDate.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormattedDate.d.mts","names":[],"sources":["../../../../src/ui/components/FormattedDate/FormattedDate.tsx"],"mappings":";KAEY;EACV;;KAGU;EACV;EACA;EACA;EACA,QAAQ;;iBAGD,WACP,gCACA,gBACA,UAAU;iBAUH,gBAAgB,KAAK,QAAQ,WAAW,SAAS,qCAAkB,IAAA"}
@@ -0,0 +1,23 @@
1
+ import { cn } from "../../utils/cn.mjs";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/ui/components/FormattedDate/FormattedDate.tsx
4
+ function formatDate(iso, locale, options) {
5
+ if (!iso) return "";
6
+ return new Date(iso).toLocaleDateString(locale, {
7
+ year: "numeric",
8
+ month: options?.month ?? "long",
9
+ day: "numeric"
10
+ });
11
+ }
12
+ function FormattedDate({ iso, locale, className, month }) {
13
+ if (!iso) return null;
14
+ return /* @__PURE__ */ jsx("time", {
15
+ dateTime: iso,
16
+ className: cn(className),
17
+ children: formatDate(iso, locale, { month })
18
+ });
19
+ }
20
+ //#endregion
21
+ export { FormattedDate, formatDate };
22
+
23
+ //# sourceMappingURL=FormattedDate.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormattedDate.mjs","names":[],"sources":["../../../../src/ui/components/FormattedDate/FormattedDate.tsx"],"sourcesContent":["import { cn } from '../../utils/cn.js'\n\nexport type FormatDateOptions = {\n month?: 'short' | 'long'\n}\n\nexport type FormattedDateProps = {\n iso: string | null | undefined\n locale: string\n className?: string\n month?: FormatDateOptions['month']\n}\n\nfunction formatDate(\n iso: string | null | undefined,\n locale: string,\n options?: FormatDateOptions\n): string {\n if (!iso) return ''\n return new Date(iso).toLocaleDateString(locale, {\n year: 'numeric',\n month: options?.month ?? 'long',\n day: 'numeric',\n })\n}\n\nfunction FormattedDate({ iso, locale, className, month }: FormattedDateProps) {\n if (!iso) return null\n\n return (\n <time dateTime={iso} className={cn(className)}>\n {formatDate(iso, locale, { month })}\n </time>\n )\n}\n\nexport { FormattedDate, formatDate }\n"],"mappings":";;;AAaA,SAAS,WACP,KACA,QACA,SACQ;CACR,IAAI,CAAC,KAAK,OAAO;CACjB,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,mBAAmB,QAAQ;EAC9C,MAAM;EACN,OAAO,SAAS,SAAS;EACzB,KAAK;CACP,CAAC;AACH;AAEA,SAAS,cAAc,EAAE,KAAK,QAAQ,WAAW,SAA6B;CAC5E,IAAI,CAAC,KAAK,OAAO;CAEjB,OACE,oBAAC,QAAD;EAAM,UAAU;EAAK,WAAW,GAAG,SAAS;EACzC,UAAA,WAAW,KAAK,QAAQ,EAAE,MAAM,CAAC;CAC9B,CAAA;AAEV"}
@@ -0,0 +1,2 @@
1
+ import { FormatDateOptions, FormattedDate, FormattedDateProps, formatDate } from "./FormattedDate.mjs";
2
+ export { type FormatDateOptions, FormattedDate, type FormattedDateProps, formatDate };
@@ -0,0 +1,2 @@
1
+ import { FormattedDate, formatDate } from "./FormattedDate.mjs";
2
+ export { FormattedDate, formatDate };
@@ -0,0 +1,10 @@
1
+ import { ComponentProps } from "react";
2
+ import { Primitive } from "@radix-ui/react-primitive";
3
+ //#region src/ui/components/IconButton/IconButton.d.ts
4
+ type IconButtonProps = ComponentProps<typeof Primitive.button> & {
5
+ asChild?: boolean;
6
+ };
7
+ declare function IconButton({ className, asChild, ...props }: IconButtonProps): import("react").JSX.Element;
8
+ //#endregion
9
+ export { IconButton, IconButtonProps };
10
+ //# sourceMappingURL=IconButton.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconButton.d.mts","names":[],"sources":["../../../../src/ui/components/IconButton/IconButton.tsx"],"mappings":";;;KAUY,kBAAkB,sBAAsB,UAAU;EAC5D;;iBAGO,aAAa,WAAW,YAAoB,SAAS,kCAAe,IAAA"}
@@ -0,0 +1,19 @@
1
+ "use client";
2
+ import { cn } from "../../utils/cn.mjs";
3
+ import { focusRingClassName } from "../../a11y/focus.mjs";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { Slot } from "@radix-ui/react-slot";
6
+ import { Primitive } from "@radix-ui/react-primitive";
7
+ //#region src/ui/components/IconButton/IconButton.tsx
8
+ function IconButton({ className, asChild = false, ...props }) {
9
+ const Comp = asChild ? Slot : Primitive.button;
10
+ return /* @__PURE__ */ jsx(Comp, {
11
+ "data-slot": "icon-button",
12
+ className: cn("inline-flex h-10 w-10 items-center justify-center rounded-btn text-foreground transition-colors outline-none hover:bg-foreground/5 focus:bg-foreground/5 disabled:pointer-events-none disabled:opacity-50", focusRingClassName, className),
13
+ ...props
14
+ });
15
+ }
16
+ //#endregion
17
+ export { IconButton };
18
+
19
+ //# sourceMappingURL=IconButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconButton.mjs","names":[],"sources":["../../../../src/ui/components/IconButton/IconButton.tsx"],"sourcesContent":["'use client'\n\nimport { Primitive } from '@radix-ui/react-primitive'\nimport { Slot } from '@radix-ui/react-slot'\n\nimport { focusRingClassName } from '../../a11y/focus.js'\nimport { cn } from '../../utils/cn.js'\n\nimport type { ComponentProps } from 'react'\n\nexport type IconButtonProps = ComponentProps<typeof Primitive.button> & {\n asChild?: boolean\n}\n\nfunction IconButton({ className, asChild = false, ...props }: IconButtonProps) {\n const Comp = asChild ? Slot : Primitive.button\n\n return (\n <Comp\n data-slot=\"icon-button\"\n className={cn(\n 'inline-flex h-10 w-10 items-center justify-center rounded-btn text-foreground transition-colors outline-none hover:bg-foreground/5 focus:bg-foreground/5 disabled:pointer-events-none disabled:opacity-50',\n focusRingClassName,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { IconButton }\n"],"mappings":";;;;;;;AAcA,SAAS,WAAW,EAAE,WAAW,UAAU,OAAO,GAAG,SAA0B;CAC7E,MAAM,OAAO,UAAU,OAAO,UAAU;CAExC,OACE,oBAAC,MAAD;EACE,aAAU;EACV,WAAW,GACT,6MACA,oBACA,SACF;EACA,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,2 @@
1
+ import { IconButton, IconButtonProps } from "./IconButton.mjs";
2
+ export { IconButton, type IconButtonProps };
@@ -0,0 +1,2 @@
1
+ import { IconButton } from "./IconButton.mjs";
2
+ export { IconButton };
@@ -0,0 +1,12 @@
1
+ import { ComponentProps, ReactNode } from "react";
2
+ import { Primitive } from "@radix-ui/react-primitive";
3
+ //#region src/ui/components/Input/Input.d.ts
4
+ type InputProps = Omit<ComponentProps<typeof Primitive.input>, 'children'> & {
5
+ error?: boolean | string;
6
+ leftIcon?: ReactNode;
7
+ rightIcon?: ReactNode;
8
+ };
9
+ declare function Input({ className, error, leftIcon, rightIcon, id, ref, ...props }: InputProps): import("react").JSX.Element;
10
+ //#endregion
11
+ export { Input, InputProps };
12
+ //# sourceMappingURL=Input.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.d.mts","names":[],"sources":["../../../../src/ui/components/Input/Input.tsx"],"mappings":";;;KAQY,aAAa,KAAK,sBAAsB,UAAU;EAC5D;EACA,WAAW;EACX,YAAY;;iBAGL,QAAQ,WAAW,OAAO,UAAU,WAAW,IAAI,QAAQ,SAAS,6BAAU,IAAA"}
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ import { cn } from "../../utils/cn.mjs";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { Primitive } from "@radix-ui/react-primitive";
5
+ //#region src/ui/components/Input/Input.tsx
6
+ function Input({ className, error, leftIcon, rightIcon, id, ref, ...props }) {
7
+ const errorId = id ? `${id}-error` : void 0;
8
+ const hasError = Boolean(error);
9
+ return /* @__PURE__ */ jsxs("div", {
10
+ className: "flex w-full flex-col gap-1",
11
+ children: [/* @__PURE__ */ jsxs("div", {
12
+ className: "relative flex items-center",
13
+ children: [
14
+ leftIcon ? /* @__PURE__ */ jsx("span", {
15
+ "aria-hidden": "true",
16
+ className: "pointer-events-none absolute left-4 flex items-center",
17
+ children: leftIcon
18
+ }) : null,
19
+ /* @__PURE__ */ jsx(Primitive.input, {
20
+ ref,
21
+ id,
22
+ "data-slot": "input",
23
+ "aria-invalid": hasError || void 0,
24
+ "aria-describedby": hasError && errorId ? errorId : void 0,
25
+ className: cn("h-11 w-full rounded-btn border border-border-subtle bg-background px-3.5 text-sm text-foreground", "placeholder:text-muted", "transition-colors hover:border-border", "focus-visible:border-accent focus-visible:outline-none", "disabled:cursor-not-allowed disabled:opacity-50", hasError && "border-destructive focus-visible:border-destructive", leftIcon && "pl-11", rightIcon && "pr-11", className),
26
+ ...props
27
+ }),
28
+ rightIcon ? /* @__PURE__ */ jsx("span", {
29
+ className: "absolute right-3.5 flex items-center",
30
+ children: rightIcon
31
+ }) : null
32
+ ]
33
+ }), typeof error === "string" ? /* @__PURE__ */ jsx("p", {
34
+ id: errorId,
35
+ className: "text-xs text-destructive",
36
+ children: error
37
+ }) : null]
38
+ });
39
+ }
40
+ //#endregion
41
+ export { Input };
42
+
43
+ //# sourceMappingURL=Input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.mjs","names":[],"sources":["../../../../src/ui/components/Input/Input.tsx"],"sourcesContent":["'use client'\n\nimport { Primitive } from '@radix-ui/react-primitive'\n\nimport { cn } from '../../utils/cn.js'\n\nimport type { ComponentProps, ReactNode } from 'react'\n\nexport type InputProps = Omit<ComponentProps<typeof Primitive.input>, 'children'> & {\n error?: boolean | string\n leftIcon?: ReactNode\n rightIcon?: ReactNode\n}\n\nfunction Input({ className, error, leftIcon, rightIcon, id, ref, ...props }: InputProps) {\n const errorId = id ? `${id}-error` : undefined\n const hasError = Boolean(error)\n\n return (\n <div className=\"flex w-full flex-col gap-1\">\n <div className=\"relative flex items-center\">\n {leftIcon ? (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute left-4 flex items-center\"\n >\n {leftIcon}\n </span>\n ) : null}\n\n <Primitive.input\n ref={ref}\n id={id}\n data-slot=\"input\"\n aria-invalid={hasError || undefined}\n aria-describedby={hasError && errorId ? errorId : undefined}\n className={cn(\n 'h-11 w-full rounded-btn border border-border-subtle bg-background px-3.5 text-sm text-foreground',\n 'placeholder:text-muted',\n 'transition-colors hover:border-border',\n 'focus-visible:border-accent focus-visible:outline-none',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n hasError && 'border-destructive focus-visible:border-destructive',\n leftIcon && 'pl-11',\n rightIcon && 'pr-11',\n className\n )}\n {...props}\n />\n\n {rightIcon ? (\n <span className=\"absolute right-3.5 flex items-center\">{rightIcon}</span>\n ) : null}\n </div>\n\n {typeof error === 'string' ? (\n <p id={errorId} className=\"text-xs text-destructive\">\n {error}\n </p>\n ) : null}\n </div>\n )\n}\n\nexport { Input }\n"],"mappings":";;;;;AAcA,SAAS,MAAM,EAAE,WAAW,OAAO,UAAU,WAAW,IAAI,KAAK,GAAG,SAAqB;CACvF,MAAM,UAAU,KAAK,GAAG,GAAG,UAAU;CACrC,MAAM,WAAW,QAAQ,KAAK;CAE9B,OACE,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACE,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACG,WACC,oBAAC,QAAD;KACE,eAAY;KACZ,WAAU;KAET,UAAA;IACG,CAAA,IACJ;IAEJ,oBAAC,UAAU,OAAX;KACO;KACD;KACJ,aAAU;KACV,gBAAc,YAAY;KAC1B,oBAAkB,YAAY,UAAU,UAAU;KAClD,WAAW,GACT,oGACA,0BACA,yCACA,0DACA,mDACA,YAAY,uDACZ,YAAY,SACZ,aAAa,SACb,SACF;KACA,GAAI;IACL,CAAA;IAEA,YACC,oBAAC,QAAD;KAAM,WAAU;KAAwC,UAAA;IAAgB,CAAA,IACtE;GACD;EAEJ,CAAA,GAAA,OAAO,UAAU,WAChB,oBAAC,KAAD;GAAG,IAAI;GAAS,WAAU;GACvB,UAAA;EACA,CAAA,IACD,IACD;;AAET"}
@@ -0,0 +1,2 @@
1
+ import { Input, InputProps } from "./Input.mjs";
2
+ export { Input, type InputProps };
@@ -0,0 +1,2 @@
1
+ import { Input } from "./Input.mjs";
2
+ export { Input };
@@ -0,0 +1,11 @@
1
+ import { ComponentPropsWithoutRef } from "react";
2
+ import { Primitive } from "@radix-ui/react-primitive";
3
+ //#region src/ui/components/Label/Label.d.ts
4
+ type LabelProps = ComponentPropsWithoutRef<typeof Primitive.label> & {
5
+ disabled?: boolean;
6
+ error?: boolean;
7
+ };
8
+ declare function Label({ className, disabled, error, ...props }: LabelProps): import("react").JSX.Element;
9
+ //#endregion
10
+ export { Label, LabelProps };
11
+ //# sourceMappingURL=Label.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Label.d.mts","names":[],"sources":["../../../../src/ui/components/Label/Label.tsx"],"mappings":";;;KAQY,aAAa,gCAAgC,UAAU;EACjE;EACA;;iBAGO,QAAQ,WAAW,UAAU,UAAU,SAAS,6BAAU,IAAA"}
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ import { cn } from "../../utils/cn.mjs";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { Primitive } from "@radix-ui/react-primitive";
5
+ //#region src/ui/components/Label/Label.tsx
6
+ function Label({ className, disabled, error, ...props }) {
7
+ return /* @__PURE__ */ jsx(Primitive.label, {
8
+ "data-slot": "label",
9
+ "data-disabled": disabled || void 0,
10
+ "data-error": error || void 0,
11
+ className: cn("inline-block text-sm font-normal text-secondary transition-colors", "data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50", "data-[error]:text-destructive", className),
12
+ ...props
13
+ });
14
+ }
15
+ //#endregion
16
+ export { Label };
17
+
18
+ //# sourceMappingURL=Label.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Label.mjs","names":[],"sources":["../../../../src/ui/components/Label/Label.tsx"],"sourcesContent":["'use client'\n\nimport { Primitive } from '@radix-ui/react-primitive'\n\nimport { cn } from '../../utils/cn.js'\n\nimport type { ComponentPropsWithoutRef } from 'react'\n\nexport type LabelProps = ComponentPropsWithoutRef<typeof Primitive.label> & {\n disabled?: boolean\n error?: boolean\n}\n\nfunction Label({ className, disabled, error, ...props }: LabelProps) {\n return (\n <Primitive.label\n data-slot=\"label\"\n data-disabled={disabled || undefined}\n data-error={error || undefined}\n className={cn(\n 'inline-block text-sm font-normal text-secondary transition-colors',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n 'data-[error]:text-destructive',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n"],"mappings":";;;;;AAaA,SAAS,MAAM,EAAE,WAAW,UAAU,OAAO,GAAG,SAAqB;CACnE,OACE,oBAAC,UAAU,OAAX;EACE,aAAU;EACV,iBAAe,YAAY;EAC3B,cAAY,SAAS;EACrB,WAAW,GACT,qEACA,iEACA,iCACA,SACF;EACA,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,2 @@
1
+ import { Label, LabelProps } from "./Label.mjs";
2
+ export { Label, type LabelProps };
@@ -0,0 +1,2 @@
1
+ import { Label } from "./Label.mjs";
2
+ export { Label };
@@ -0,0 +1,23 @@
1
+ import { CSSProperties, ReactNode, Ref } from "react";
2
+ //#region src/ui/components/LazyVideo/LazyVideo.d.ts
3
+ type LazyVideoProps = {
4
+ 'src': string;
5
+ 'type'?: string;
6
+ 'className'?: string;
7
+ 'style'?: CSSProperties;
8
+ 'poster'?: string;
9
+ 'autoPlay'?: boolean;
10
+ 'loop'?: boolean;
11
+ 'muted'?: boolean;
12
+ 'playsInline'?: boolean;
13
+ 'controls'?: boolean;
14
+ 'preload'?: 'none' | 'metadata' | 'auto';
15
+ 'rootMargin'?: string;
16
+ 'children'?: ReactNode;
17
+ 'aria-label'?: string;
18
+ 'ref'?: Ref<HTMLVideoElement>;
19
+ };
20
+ declare function LazyVideo({ src, type, rootMargin, autoPlay, loop, muted, playsInline, controls, preload, poster, className, style, children, 'aria-label': ariaLabel, ref }: LazyVideoProps): import("react").JSX.Element;
21
+ //#endregion
22
+ export { LazyVideo, LazyVideoProps };
23
+ //# sourceMappingURL=LazyVideo.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LazyVideo.d.mts","names":[],"sources":["../../../../src/ui/components/LazyVideo/LazyVideo.tsx"],"mappings":";;KAQY;EACV;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aAAa;EACb;EACA,QAAQ,IAAI;;iBAGL,YACP,KACA,MACA,YACA,UACA,MACA,OACA,aACA,UACA,SACA,QACA,WACA,OACA,wBACc,WACd,OACC,iCAAc,IAAA"}
@@ -0,0 +1,57 @@
1
+ "use client";
2
+ import { cn } from "../../utils/cn.mjs";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { useEffect, useRef, useState } from "react";
5
+ //#region src/ui/components/LazyVideo/LazyVideo.tsx
6
+ function LazyVideo({ src, type = "video/webm", rootMargin = "0px", autoPlay, loop, muted, playsInline, controls, preload = "none", poster, className, style, children, "aria-label": ariaLabel, ref }) {
7
+ const localRef = useRef(null);
8
+ const [shouldLoad, setShouldLoad] = useState(false);
9
+ useEffect(() => {
10
+ if (shouldLoad) return;
11
+ const el = localRef.current;
12
+ if (!el) return;
13
+ const observer = new IntersectionObserver((entries) => {
14
+ if (entries.some((entry) => entry.isIntersecting)) {
15
+ setShouldLoad(true);
16
+ observer.disconnect();
17
+ }
18
+ }, { rootMargin });
19
+ observer.observe(el);
20
+ return () => observer.disconnect();
21
+ }, [shouldLoad, rootMargin]);
22
+ useEffect(() => {
23
+ if (!shouldLoad) return;
24
+ const el = localRef.current;
25
+ if (!el) return;
26
+ el.load();
27
+ if (!autoPlay) return;
28
+ const playback = el.play();
29
+ if (playback && typeof playback.catch === "function") playback.catch(() => void 0);
30
+ }, [shouldLoad, autoPlay]);
31
+ const setRefs = (node) => {
32
+ localRef.current = node;
33
+ if (typeof ref === "function") ref(node);
34
+ else if (ref) ref.current = node;
35
+ };
36
+ return /* @__PURE__ */ jsxs("video", {
37
+ ref: setRefs,
38
+ autoPlay,
39
+ loop,
40
+ muted,
41
+ playsInline,
42
+ controls,
43
+ poster,
44
+ preload,
45
+ className: cn(className),
46
+ style,
47
+ "aria-label": ariaLabel,
48
+ children: [shouldLoad ? /* @__PURE__ */ jsx("source", {
49
+ src,
50
+ type
51
+ }) : null, children]
52
+ });
53
+ }
54
+ //#endregion
55
+ export { LazyVideo };
56
+
57
+ //# sourceMappingURL=LazyVideo.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LazyVideo.mjs","names":[],"sources":["../../../../src/ui/components/LazyVideo/LazyVideo.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect, useRef, useState } from 'react'\n\nimport { cn } from '../../utils/cn.js'\n\nimport type { CSSProperties, ReactNode, Ref } from 'react'\n\nexport type LazyVideoProps = {\n 'src': string\n 'type'?: string\n 'className'?: string\n 'style'?: CSSProperties\n 'poster'?: string\n 'autoPlay'?: boolean\n 'loop'?: boolean\n 'muted'?: boolean\n 'playsInline'?: boolean\n 'controls'?: boolean\n 'preload'?: 'none' | 'metadata' | 'auto'\n 'rootMargin'?: string\n 'children'?: ReactNode\n 'aria-label'?: string\n 'ref'?: Ref<HTMLVideoElement>\n}\n\nfunction LazyVideo({\n src,\n type = 'video/webm',\n rootMargin = '0px',\n autoPlay,\n loop,\n muted,\n playsInline,\n controls,\n preload = 'none',\n poster,\n className,\n style,\n children,\n 'aria-label': ariaLabel,\n ref,\n}: LazyVideoProps) {\n const localRef = useRef<HTMLVideoElement | null>(null)\n const [shouldLoad, setShouldLoad] = useState(false)\n\n useEffect(() => {\n if (shouldLoad) return\n const el = localRef.current\n if (!el) return\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries.some((entry) => entry.isIntersecting)) {\n setShouldLoad(true)\n observer.disconnect()\n }\n },\n { rootMargin }\n )\n observer.observe(el)\n return () => observer.disconnect()\n }, [shouldLoad, rootMargin])\n\n useEffect(() => {\n if (!shouldLoad) return\n const el = localRef.current\n if (!el) return\n el.load()\n if (!autoPlay) return\n const playback = el.play()\n if (playback && typeof playback.catch === 'function') {\n playback.catch(() => undefined)\n }\n }, [shouldLoad, autoPlay])\n\n const setRefs = (node: HTMLVideoElement | null) => {\n localRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) ref.current = node\n }\n\n return (\n <video\n ref={setRefs}\n autoPlay={autoPlay}\n loop={loop}\n muted={muted}\n playsInline={playsInline}\n controls={controls}\n poster={poster}\n preload={preload}\n className={cn(className)}\n style={style}\n aria-label={ariaLabel}\n >\n {shouldLoad ? <source src={src} type={type} /> : null}\n {children}\n </video>\n )\n}\n\nexport { LazyVideo }\n"],"mappings":";;;;;AA0BA,SAAS,UAAU,EACjB,KACA,OAAO,cACP,aAAa,OACb,UACA,MACA,OACA,aACA,UACA,UAAU,QACV,QACA,WACA,OACA,UACA,cAAc,WACd,OACiB;CACjB,MAAM,WAAW,OAAgC,IAAI;CACrD,MAAM,CAAC,YAAY,iBAAiB,SAAS,KAAK;CAElD,gBAAgB;EACd,IAAI,YAAY;EAChB,MAAM,KAAK,SAAS;EACpB,IAAI,CAAC,IAAI;EAET,MAAM,WAAW,IAAI,sBAClB,YAAY;GACX,IAAI,QAAQ,MAAM,UAAU,MAAM,cAAc,GAAG;IACjD,cAAc,IAAI;IAClB,SAAS,WAAW;GACtB;EACF,GACA,EAAE,WAAW,CACf;EACA,SAAS,QAAQ,EAAE;EACnB,aAAa,SAAS,WAAW;CACnC,GAAG,CAAC,YAAY,UAAU,CAAC;CAE3B,gBAAgB;EACd,IAAI,CAAC,YAAY;EACjB,MAAM,KAAK,SAAS;EACpB,IAAI,CAAC,IAAI;EACT,GAAG,KAAK;EACR,IAAI,CAAC,UAAU;EACf,MAAM,WAAW,GAAG,KAAK;EACzB,IAAI,YAAY,OAAO,SAAS,UAAU,YACxC,SAAS,YAAY,MAAS;CAElC,GAAG,CAAC,YAAY,QAAQ,CAAC;CAEzB,MAAM,WAAW,SAAkC;EACjD,SAAS,UAAU;EACnB,IAAI,OAAO,QAAQ,YAAY,IAAI,IAAI;OAClC,IAAI,KAAK,IAAI,UAAU;CAC9B;CAEA,OACE,qBAAC,SAAD;EACE,KAAK;EACK;EACJ;EACC;EACM;EACH;EACF;EACC;EACT,WAAW,GAAG,SAAS;EAChB;EACP,cAAY;EAXd,UAAA,CAaG,aAAa,oBAAC,UAAD;GAAa;GAAW;EAAO,CAAA,IAAI,MAChD,QACI;;AAEX"}
@@ -0,0 +1,2 @@
1
+ import { LazyVideo, LazyVideoProps } from "./LazyVideo.mjs";
2
+ export { LazyVideo, type LazyVideoProps };
@@ -0,0 +1,2 @@
1
+ import { LazyVideo } from "./LazyVideo.mjs";
2
+ export { LazyVideo };
@@ -0,0 +1,38 @@
1
+ import { ReactNode } from "react";
2
+ //#region src/ui/components/Pagination/Pagination.d.ts
3
+ type PaginationLabels = {
4
+ nav: string;
5
+ previous: string;
6
+ next: string;
7
+ pageLabel: (page: number) => string;
8
+ };
9
+ type PaginationProps = {
10
+ page: number;
11
+ totalPages: number;
12
+ getPageHref: (page: number) => string;
13
+ labels: PaginationLabels;
14
+ siblingCount?: number;
15
+ className?: string;
16
+ /** Defaults to chevron SVGs. Override for branded icons. */
17
+ previousIcon?: ReactNode;
18
+ nextIcon?: ReactNode;
19
+ /**
20
+ * When true, page links render via Slot onto a single child you provide
21
+ * through a custom render — prefer wrapping with next/link in the app
22
+ * by mapping items yourself, or pass `renderItem`.
23
+ */
24
+ renderItem?: (props: {
25
+ href: string;
26
+ active: boolean;
27
+ ariaLabel: string;
28
+ rel?: 'prev' | 'next';
29
+ children: ReactNode;
30
+ }) => ReactNode;
31
+ };
32
+ declare const ELLIPSIS = "…";
33
+ type PageItem = number | typeof ELLIPSIS;
34
+ declare function buildPageItems(current: number, total: number, siblingCount: number): PageItem[];
35
+ declare function Pagination({ page, totalPages, getPageHref, labels, siblingCount, className, previousIcon, nextIcon, renderItem }: PaginationProps): import("react").JSX.Element | null;
36
+ //#endregion
37
+ export { Pagination, PaginationLabels, PaginationProps, buildPageItems };
38
+ //# sourceMappingURL=Pagination.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pagination.d.mts","names":[],"sources":["../../../../src/ui/components/Pagination/Pagination.tsx"],"mappings":";;KAKY;EACV;EACA;EACA;EACA,YAAY;;KAGF;EACV;EACA;EACA,cAAc;EACd,QAAQ;EACR;EACA;;EAEA,eAAe;EACf,WAAW;;;;;;EAMX,cAAc;IACZ;IACA;IACA;IACA;IACA,UAAU;QACN;;cAGF;KACD,2BAA2B;iBAEvB,eAAe,iBAAiB,eAAe,uBAAuB;iBA8CtE,aACP,MACA,YACA,aACA,QACA,cACA,WACA,cACA,UACA,cACC,kCAAe,IAAA"}
@@ -0,0 +1,110 @@
1
+ import { cn } from "../../utils/cn.mjs";
2
+ import { PaginationItem } from "../PaginationItem/PaginationItem.mjs";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ //#region src/ui/components/Pagination/Pagination.tsx
5
+ const ELLIPSIS = "…";
6
+ function buildPageItems(current, total, siblingCount) {
7
+ if (total <= 1) return [1];
8
+ const pages = /* @__PURE__ */ new Set([
9
+ 1,
10
+ total,
11
+ current
12
+ ]);
13
+ for (let i = 1; i <= siblingCount; i++) {
14
+ if (current - i > 1) pages.add(current - i);
15
+ if (current + i < total) pages.add(current + i);
16
+ }
17
+ const ordered = [...pages].sort((a, b) => a - b);
18
+ const items = [];
19
+ ordered.forEach((page, index) => {
20
+ if (index > 0 && page - ordered[index - 1] > 1) items.push(ELLIPSIS);
21
+ items.push(page);
22
+ });
23
+ return items;
24
+ }
25
+ function ChevronLeftIcon() {
26
+ return /* @__PURE__ */ jsx("svg", {
27
+ "aria-hidden": "true",
28
+ viewBox: "0 0 14 14",
29
+ width: "14",
30
+ height: "14",
31
+ fill: "none",
32
+ children: /* @__PURE__ */ jsx("path", {
33
+ d: "M8.5 2.5 4 7l4.5 4.5",
34
+ stroke: "currentColor",
35
+ strokeWidth: "1.5",
36
+ strokeLinecap: "round",
37
+ strokeLinejoin: "round"
38
+ })
39
+ });
40
+ }
41
+ function ChevronRightIcon() {
42
+ return /* @__PURE__ */ jsx("svg", {
43
+ "aria-hidden": "true",
44
+ viewBox: "0 0 14 14",
45
+ width: "14",
46
+ height: "14",
47
+ fill: "none",
48
+ children: /* @__PURE__ */ jsx("path", {
49
+ d: "M5.5 2.5 10 7l-4.5 4.5",
50
+ stroke: "currentColor",
51
+ strokeWidth: "1.5",
52
+ strokeLinecap: "round",
53
+ strokeLinejoin: "round"
54
+ })
55
+ });
56
+ }
57
+ function Pagination({ page, totalPages, getPageHref, labels, siblingCount = 1, className, previousIcon, nextIcon, renderItem }) {
58
+ if (totalPages <= 1) return null;
59
+ const items = buildPageItems(page, totalPages, siblingCount);
60
+ const isFirst = page <= 1;
61
+ const isLast = page >= totalPages;
62
+ const renderNavItem = ({ href, active, ariaLabel, rel, children }) => {
63
+ if (href && renderItem) return renderItem({
64
+ href,
65
+ active: Boolean(active),
66
+ ariaLabel,
67
+ rel,
68
+ children
69
+ });
70
+ return /* @__PURE__ */ jsx(PaginationItem, {
71
+ href,
72
+ active,
73
+ ariaLabel,
74
+ rel,
75
+ children
76
+ });
77
+ };
78
+ return /* @__PURE__ */ jsxs("nav", {
79
+ "aria-label": labels.nav,
80
+ className: cn("flex items-center gap-2", className),
81
+ children: [
82
+ renderNavItem({
83
+ href: isFirst ? void 0 : getPageHref(page - 1),
84
+ ariaLabel: labels.previous,
85
+ rel: "prev",
86
+ children: previousIcon ?? /* @__PURE__ */ jsx(ChevronLeftIcon, {})
87
+ }),
88
+ items.map((item, idx) => item === ELLIPSIS ? /* @__PURE__ */ jsx("span", {
89
+ className: "flex size-9 items-center justify-center text-btn font-semibold text-secondary",
90
+ "aria-hidden": "true",
91
+ children: ELLIPSIS
92
+ }, `ellipsis-${idx}`) : /* @__PURE__ */ jsx("span", { children: renderNavItem({
93
+ href: getPageHref(item),
94
+ active: item === page,
95
+ ariaLabel: labels.pageLabel(item),
96
+ children: item
97
+ }) }, item)),
98
+ renderNavItem({
99
+ href: isLast ? void 0 : getPageHref(page + 1),
100
+ ariaLabel: labels.next,
101
+ rel: "next",
102
+ children: nextIcon ?? /* @__PURE__ */ jsx(ChevronRightIcon, {})
103
+ })
104
+ ]
105
+ });
106
+ }
107
+ //#endregion
108
+ export { Pagination, buildPageItems };
109
+
110
+ //# sourceMappingURL=Pagination.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pagination.mjs","names":[],"sources":["../../../../src/ui/components/Pagination/Pagination.tsx"],"sourcesContent":["import { PaginationItem } from '../PaginationItem/PaginationItem.js'\nimport { cn } from '../../utils/cn.js'\n\nimport type { ReactNode } from 'react'\n\nexport type PaginationLabels = {\n nav: string\n previous: string\n next: string\n pageLabel: (page: number) => string\n}\n\nexport type PaginationProps = {\n page: number\n totalPages: number\n getPageHref: (page: number) => string\n labels: PaginationLabels\n siblingCount?: number\n className?: string\n /** Defaults to chevron SVGs. Override for branded icons. */\n previousIcon?: ReactNode\n nextIcon?: ReactNode\n /**\n * When true, page links render via Slot onto a single child you provide\n * through a custom render — prefer wrapping with next/link in the app\n * by mapping items yourself, or pass `renderItem`.\n */\n renderItem?: (props: {\n href: string\n active: boolean\n ariaLabel: string\n rel?: 'prev' | 'next'\n children: ReactNode\n }) => ReactNode\n}\n\nconst ELLIPSIS = '…'\ntype PageItem = number | typeof ELLIPSIS\n\nfunction buildPageItems(current: number, total: number, siblingCount: number): PageItem[] {\n if (total <= 1) return [1]\n\n const pages = new Set<number>([1, total, current])\n for (let i = 1; i <= siblingCount; i++) {\n if (current - i > 1) pages.add(current - i)\n if (current + i < total) pages.add(current + i)\n }\n\n const ordered = [...pages].sort((a, b) => a - b)\n const items: PageItem[] = []\n ordered.forEach((page, index) => {\n if (index > 0 && page - ordered[index - 1]! > 1) items.push(ELLIPSIS)\n items.push(page)\n })\n return items\n}\n\nfunction ChevronLeftIcon() {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 14 14\" width=\"14\" height=\"14\" fill=\"none\">\n <path\n d=\"M8.5 2.5 4 7l4.5 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n\nfunction ChevronRightIcon() {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 14 14\" width=\"14\" height=\"14\" fill=\"none\">\n <path\n d=\"M5.5 2.5 10 7l-4.5 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n\nfunction Pagination({\n page,\n totalPages,\n getPageHref,\n labels,\n siblingCount = 1,\n className,\n previousIcon,\n nextIcon,\n renderItem,\n}: PaginationProps) {\n if (totalPages <= 1) return null\n\n const items = buildPageItems(page, totalPages, siblingCount)\n const isFirst = page <= 1\n const isLast = page >= totalPages\n\n const renderNavItem = ({\n href,\n active,\n ariaLabel,\n rel,\n children,\n }: {\n href?: string\n active?: boolean\n ariaLabel: string\n rel?: 'prev' | 'next'\n children: ReactNode\n }) => {\n if (href && renderItem) {\n return renderItem({\n href,\n active: Boolean(active),\n ariaLabel,\n rel,\n children,\n })\n }\n\n return (\n <PaginationItem href={href} active={active} ariaLabel={ariaLabel} rel={rel}>\n {children}\n </PaginationItem>\n )\n }\n\n return (\n <nav aria-label={labels.nav} className={cn('flex items-center gap-2', className)}>\n {renderNavItem({\n href: isFirst ? undefined : getPageHref(page - 1),\n ariaLabel: labels.previous,\n rel: 'prev',\n children: previousIcon ?? <ChevronLeftIcon />,\n })}\n\n {items.map((item, idx) =>\n item === ELLIPSIS ? (\n <span\n key={`ellipsis-${idx}`}\n className=\"flex size-9 items-center justify-center text-btn font-semibold text-secondary\"\n aria-hidden=\"true\"\n >\n {ELLIPSIS}\n </span>\n ) : (\n <span key={item}>\n {renderNavItem({\n href: getPageHref(item),\n active: item === page,\n ariaLabel: labels.pageLabel(item),\n children: item,\n })}\n </span>\n )\n )}\n\n {renderNavItem({\n href: isLast ? undefined : getPageHref(page + 1),\n ariaLabel: labels.next,\n rel: 'next',\n children: nextIcon ?? <ChevronRightIcon />,\n })}\n </nav>\n )\n}\n\nexport { Pagination, buildPageItems }\n"],"mappings":";;;;AAoCA,MAAM,WAAW;AAGjB,SAAS,eAAe,SAAiB,OAAe,cAAkC;CACxF,IAAI,SAAS,GAAG,OAAO,CAAC,CAAC;CAEzB,MAAM,wBAAQ,IAAI,IAAY;EAAC;EAAG;EAAO;CAAO,CAAC;CACjD,KAAK,IAAI,IAAI,GAAG,KAAK,cAAc,KAAK;EACtC,IAAI,UAAU,IAAI,GAAG,MAAM,IAAI,UAAU,CAAC;EAC1C,IAAI,UAAU,IAAI,OAAO,MAAM,IAAI,UAAU,CAAC;CAChD;CAEA,MAAM,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC;CAC/C,MAAM,QAAoB,CAAC;CAC3B,QAAQ,SAAS,MAAM,UAAU;EAC/B,IAAI,QAAQ,KAAK,OAAO,QAAQ,QAAQ,KAAM,GAAG,MAAM,KAAK,QAAQ;EACpE,MAAM,KAAK,IAAI;CACjB,CAAC;CACD,OAAO;AACT;AAEA,SAAS,kBAAkB;CACzB,OACE,oBAAC,OAAD;EAAK,eAAY;EAAO,SAAQ;EAAY,OAAM;EAAK,QAAO;EAAK,MAAK;EACtE,UAAA,oBAAC,QAAD;GACE,GAAE;GACF,QAAO;GACP,aAAY;GACZ,eAAc;GACd,gBAAe;EAChB,CAAA;CACE,CAAA;AAET;AAEA,SAAS,mBAAmB;CAC1B,OACE,oBAAC,OAAD;EAAK,eAAY;EAAO,SAAQ;EAAY,OAAM;EAAK,QAAO;EAAK,MAAK;EACtE,UAAA,oBAAC,QAAD;GACE,GAAE;GACF,QAAO;GACP,aAAY;GACZ,eAAc;GACd,gBAAe;EAChB,CAAA;CACE,CAAA;AAET;AAEA,SAAS,WAAW,EAClB,MACA,YACA,aACA,QACA,eAAe,GACf,WACA,cACA,UACA,cACkB;CAClB,IAAI,cAAc,GAAG,OAAO;CAE5B,MAAM,QAAQ,eAAe,MAAM,YAAY,YAAY;CAC3D,MAAM,UAAU,QAAQ;CACxB,MAAM,SAAS,QAAQ;CAEvB,MAAM,iBAAiB,EACrB,MACA,QACA,WACA,KACA,eAOI;EACJ,IAAI,QAAQ,YACV,OAAO,WAAW;GAChB;GACA,QAAQ,QAAQ,MAAM;GACtB;GACA;GACA;EACF,CAAC;EAGH,OACE,oBAAC,gBAAD;GAAsB;GAAc;GAAmB;GAAgB;GACpE;EACa,CAAA;CAEpB;CAEA,OACE,qBAAC,OAAD;EAAK,cAAY,OAAO;EAAK,WAAW,GAAG,2BAA2B,SAAS;EAA/E,UAAA;GACG,cAAc;IACb,MAAM,UAAU,SAAY,YAAY,OAAO,CAAC;IAChD,WAAW,OAAO;IAClB,KAAK;IACL,UAAU,gBAAgB,oBAAC,iBAAD,CAAkB,CAAA;GAC9C,CAAC;GAEA,MAAM,KAAK,MAAM,QAChB,SAAS,WACP,oBAAC,QAAD;IAEE,WAAU;IACV,eAAY;IAEX,UAAA;GACG,GALC,YAAY,KAKb,IAEN,oBAAC,QAAD,EAAA,UACG,cAAc;IACb,MAAM,YAAY,IAAI;IACtB,QAAQ,SAAS;IACjB,WAAW,OAAO,UAAU,IAAI;IAChC,UAAU;GACZ,CAAC,EACG,GAPK,IAOL,CAEV;GAEC,cAAc;IACb,MAAM,SAAS,SAAY,YAAY,OAAO,CAAC;IAC/C,WAAW,OAAO;IAClB,KAAK;IACL,UAAU,YAAY,oBAAC,kBAAD,CAAmB,CAAA;GAC3C,CAAC;EACE;;AAET"}
@@ -0,0 +1,2 @@
1
+ import { Pagination, PaginationLabels, PaginationProps, buildPageItems } from "./Pagination.mjs";
2
+ export { Pagination, type PaginationLabels, type PaginationProps, buildPageItems };
@@ -0,0 +1,2 @@
1
+ import { Pagination, buildPageItems } from "./Pagination.mjs";
2
+ export { Pagination, buildPageItems };
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from "react";
2
+ //#region src/ui/components/PaginationItem/PaginationItem.d.ts
3
+ type PaginationItemProps = {
4
+ href?: string;
5
+ active?: boolean;
6
+ ariaLabel: string;
7
+ rel?: 'prev' | 'next';
8
+ asChild?: boolean;
9
+ className?: string;
10
+ children: ReactNode;
11
+ };
12
+ declare function PaginationItem({ href, active, ariaLabel, rel, asChild, className, children }: PaginationItemProps): import("react").JSX.Element;
13
+ //#endregion
14
+ export { PaginationItem, PaginationItemProps };
15
+ //# sourceMappingURL=PaginationItem.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaginationItem.d.mts","names":[],"sources":["../../../../src/ui/components/PaginationItem/PaginationItem.tsx"],"mappings":";;KAQY;EACV;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;;iBAGH,iBACP,MACA,QACA,WACA,KACA,SACA,WACA,YACC,sCAAmB,IAAA"}
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ import { cn } from "../../utils/cn.mjs";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { Slot } from "@radix-ui/react-slot";
5
+ //#region src/ui/components/PaginationItem/PaginationItem.tsx
6
+ function PaginationItem({ href, active = false, ariaLabel, rel, asChild = false, className, children }) {
7
+ const cls = cn("flex size-9 items-center justify-center rounded-btn text-btn font-semibold transition-colors", active ? "bg-accent text-accent-foreground" : "border border-border bg-card text-secondary", href ? "cursor-pointer hover:text-foreground" : "cursor-not-allowed opacity-40", className);
8
+ if (!href) return /* @__PURE__ */ jsx("button", {
9
+ type: "button",
10
+ disabled: true,
11
+ className: cls,
12
+ "aria-label": ariaLabel,
13
+ children
14
+ });
15
+ if (asChild) return /* @__PURE__ */ jsx(Slot, {
16
+ className: cls,
17
+ "aria-label": ariaLabel,
18
+ "aria-current": active ? "page" : void 0,
19
+ rel,
20
+ children
21
+ });
22
+ return /* @__PURE__ */ jsx("a", {
23
+ href,
24
+ "aria-label": ariaLabel,
25
+ "aria-current": active ? "page" : void 0,
26
+ rel,
27
+ className: cls,
28
+ children
29
+ });
30
+ }
31
+ //#endregion
32
+ export { PaginationItem };
33
+
34
+ //# sourceMappingURL=PaginationItem.mjs.map