@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,30 @@
1
+ "use client";
2
+ import { cn } from "../../utils/cn.mjs";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { Slot, Slottable } from "@radix-ui/react-slot";
5
+ import { cva } from "class-variance-authority";
6
+ //#region src/ui/components/Badge/Badge.tsx
7
+ const badgeVariants = cva("inline-flex items-center font-semibold whitespace-nowrap transition-colors", {
8
+ variants: { variant: {
9
+ active: "cursor-pointer rounded-full bg-accent px-4 py-2 text-sm text-accent-foreground",
10
+ inactive: "cursor-pointer rounded-full border border-border bg-card px-4 py-2 text-sm text-secondary hover:text-foreground",
11
+ status: "h-[18px] shrink-0 gap-1.5 rounded-full bg-success/12 px-2 text-xs leading-none text-success uppercase"
12
+ } },
13
+ defaultVariants: { variant: "inactive" }
14
+ });
15
+ function Badge({ className, variant, asChild = false, dot = false, children, ...props }) {
16
+ return /* @__PURE__ */ jsxs(asChild ? Slot : "span", {
17
+ "data-slot": "badge",
18
+ "data-variant": variant,
19
+ className: cn(badgeVariants({ variant }), className),
20
+ ...props,
21
+ children: [dot ? /* @__PURE__ */ jsx("span", {
22
+ "aria-hidden": true,
23
+ className: "size-[5px] shrink-0 rounded-[2.5px] bg-success"
24
+ }) : null, /* @__PURE__ */ jsx(Slottable, { children })]
25
+ });
26
+ }
27
+ //#endregion
28
+ export { Badge, badgeVariants };
29
+
30
+ //# sourceMappingURL=Badge.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Badge.mjs","names":[],"sources":["../../../../src/ui/components/Badge/Badge.tsx"],"sourcesContent":["'use client'\n\nimport { Slot, Slottable } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../../utils/cn.js'\n\nimport type { HTMLAttributes } from 'react'\n\nconst badgeVariants = cva(\n 'inline-flex items-center font-semibold whitespace-nowrap transition-colors',\n {\n variants: {\n variant: {\n active: 'cursor-pointer rounded-full bg-accent px-4 py-2 text-sm text-accent-foreground',\n inactive:\n 'cursor-pointer rounded-full border border-border bg-card px-4 py-2 text-sm text-secondary hover:text-foreground',\n status:\n 'h-[18px] shrink-0 gap-1.5 rounded-full bg-success/12 px-2 text-xs leading-none text-success uppercase',\n },\n },\n defaultVariants: {\n variant: 'inactive',\n },\n }\n)\n\nexport type BadgeProps = HTMLAttributes<HTMLSpanElement> &\n VariantProps<typeof badgeVariants> & {\n asChild?: boolean\n dot?: boolean\n }\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n dot = false,\n children,\n ...props\n}: BadgeProps) {\n const Comp = asChild ? Slot : 'span'\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n >\n {dot ? <span aria-hidden className=\"size-[5px] shrink-0 rounded-[2.5px] bg-success\" /> : null}\n <Slottable>{children}</Slottable>\n </Comp>\n )\n}\n\nexport { Badge, badgeVariants }\n"],"mappings":";;;;;;AASA,MAAM,gBAAgB,IACpB,8EACA;CACE,UAAU,EACR,SAAS;EACP,QAAQ;EACR,UACE;EACF,QACE;CACJ,EACF;CACA,iBAAiB,EACf,SAAS,WACX;AACF,CACF;AAQA,SAAS,MAAM,EACb,WACA,SACA,UAAU,OACV,MAAM,OACN,UACA,GAAG,SACU;CAGb,OACE,qBAHW,UAAU,OAAO,QAG5B;EACE,aAAU;EACV,gBAAc;EACd,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;EACnD,GAAI;EAJN,UAAA,CAMG,MAAM,oBAAC,QAAD;GAAM,eAAA;GAAY,WAAU;EAAkD,CAAA,IAAI,MACzF,oBAAC,WAAD,EAAY,SAAoB,CAAA,CAC5B;;AAEV"}
@@ -0,0 +1,2 @@
1
+ import { Badge, BadgeProps, badgeVariants } from "./Badge.mjs";
2
+ export { Badge, type BadgeProps, badgeVariants };
@@ -0,0 +1,2 @@
1
+ import { Badge, badgeVariants } from "./Badge.mjs";
2
+ export { Badge, badgeVariants };
@@ -0,0 +1,24 @@
1
+ import { ComponentType, HTMLAttributes, SVGProps } from "react";
2
+ //#region src/ui/components/BadgeVersion/BadgeVersion.d.ts
3
+ type ReleaseType = 'major' | 'minor' | 'patch';
4
+ type ReleaseTypeStyle = {
5
+ badgeClassName: string;
6
+ textClassName: string;
7
+ Icon: ComponentType<SVGProps<SVGSVGElement> & {
8
+ size?: number;
9
+ }>;
10
+ };
11
+ declare function coerceBadgeReleaseType(raw: unknown): ReleaseType;
12
+ declare const BADGE_VERSION_RELEASE_TYPE_STYLES: Record<ReleaseType, ReleaseTypeStyle>;
13
+ type BadgeVersionProps = Omit<HTMLAttributes<HTMLSpanElement>, 'children'> & {
14
+ version: string;
15
+ type?: ReleaseType | string | null;
16
+ showReleaseType?: boolean;
17
+ /** Apps own i18n — required when `showReleaseType` is true. */
18
+ releaseTypeLabel?: string;
19
+ wrapperClassName?: string;
20
+ };
21
+ declare function BadgeVersion({ version, type, showReleaseType, releaseTypeLabel, className, wrapperClassName, 'aria-label': ariaLabelProp, ...rest }: BadgeVersionProps): import("react").JSX.Element;
22
+ //#endregion
23
+ export { BADGE_VERSION_RELEASE_TYPE_STYLES, BadgeVersion, BadgeVersionProps, ReleaseType, coerceBadgeReleaseType };
24
+ //# sourceMappingURL=BadgeVersion.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BadgeVersion.d.mts","names":[],"sources":["../../../../src/ui/components/BadgeVersion/BadgeVersion.tsx"],"mappings":";;KAMY;KAEP;EACH;EACA;EACA,MAAM,cAAc,SAAS;IAAmB;;;iBAKlC,uBAAuB,eAAe;cAOzC,mCAAmC,OAAO,aAAa;KAkBxD,oBAAoB,KAAK,eAAe;EAClD;EACA,OAAO;EACP;;EAEA;EACA;;iBAGO,eACP,SACA,MACA,iBACA,kBACA,WACA,gCACc,kBACX,QACF,oCAAiB,IAAA"}
@@ -0,0 +1,66 @@
1
+ import { cn } from "../../utils/cn.mjs";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { MdAddCircleOutline, MdCheck, MdWarning } from "react-icons/md";
4
+ //#region src/ui/components/BadgeVersion/BadgeVersion.tsx
5
+ const RELEASE_TYPES = /* @__PURE__ */ new Set([
6
+ "major",
7
+ "minor",
8
+ "patch"
9
+ ]);
10
+ function coerceBadgeReleaseType(raw) {
11
+ if (typeof raw === "string" && RELEASE_TYPES.has(raw)) return raw;
12
+ return "patch";
13
+ }
14
+ const BADGE_VERSION_RELEASE_TYPE_STYLES = {
15
+ major: {
16
+ badgeClassName: "bg-destructive/20 text-destructive",
17
+ textClassName: "text-destructive",
18
+ Icon: MdWarning
19
+ },
20
+ minor: {
21
+ badgeClassName: "bg-accent/20 text-accent",
22
+ textClassName: "text-accent",
23
+ Icon: MdAddCircleOutline
24
+ },
25
+ patch: {
26
+ badgeClassName: "bg-warning/20 text-warning",
27
+ textClassName: "text-warning",
28
+ Icon: MdCheck
29
+ }
30
+ };
31
+ function BadgeVersion({ version, type, showReleaseType = false, releaseTypeLabel, className, wrapperClassName, "aria-label": ariaLabelProp, ...rest }) {
32
+ const releaseType = coerceBadgeReleaseType(type);
33
+ const styles = BADGE_VERSION_RELEASE_TYPE_STYLES[releaseType];
34
+ const typeLabel = showReleaseType ? releaseTypeLabel : null;
35
+ const defaultGroupAriaLabel = showReleaseType && typeLabel && !ariaLabelProp ? `${version} ${typeLabel}` : void 0;
36
+ if (!showReleaseType) return /* @__PURE__ */ jsx("span", {
37
+ "data-slot": "badge-version",
38
+ "data-release-type": releaseType,
39
+ className: cn("inline-flex items-center rounded-btn px-2 py-[3px] text-body-xs font-bold", styles.badgeClassName, className),
40
+ "aria-label": ariaLabelProp,
41
+ ...rest,
42
+ children: version
43
+ });
44
+ const Icon = styles.Icon;
45
+ return /* @__PURE__ */ jsxs("span", {
46
+ className: cn("inline-flex flex-wrap items-center gap-2", wrapperClassName),
47
+ "aria-label": ariaLabelProp ?? defaultGroupAriaLabel,
48
+ ...rest,
49
+ children: [/* @__PURE__ */ jsx("span", {
50
+ "data-slot": "badge-version",
51
+ "data-release-type": releaseType,
52
+ className: cn("inline-flex items-center rounded-btn px-2 py-[3px] text-body-xs font-bold", styles.badgeClassName, className),
53
+ children: version
54
+ }), typeLabel ? /* @__PURE__ */ jsxs("span", {
55
+ className: cn("inline-flex items-center gap-1 text-btn font-semibold", styles.textClassName),
56
+ children: [/* @__PURE__ */ jsx(Icon, {
57
+ size: 14,
58
+ "aria-hidden": true
59
+ }), typeLabel]
60
+ }) : null]
61
+ });
62
+ }
63
+ //#endregion
64
+ export { BADGE_VERSION_RELEASE_TYPE_STYLES, BadgeVersion, coerceBadgeReleaseType };
65
+
66
+ //# sourceMappingURL=BadgeVersion.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BadgeVersion.mjs","names":[],"sources":["../../../../src/ui/components/BadgeVersion/BadgeVersion.tsx"],"sourcesContent":["import { MdAddCircleOutline, MdCheck, MdWarning } from 'react-icons/md'\n\nimport { cn } from '../../utils/cn.js'\n\nimport type { ComponentType, HTMLAttributes, SVGProps } from 'react'\n\nexport type ReleaseType = 'major' | 'minor' | 'patch'\n\ntype ReleaseTypeStyle = {\n badgeClassName: string\n textClassName: string\n Icon: ComponentType<SVGProps<SVGSVGElement> & { size?: number }>\n}\n\nconst RELEASE_TYPES = new Set<ReleaseType>(['major', 'minor', 'patch'])\n\nexport function coerceBadgeReleaseType(raw: unknown): ReleaseType {\n if (typeof raw === 'string' && RELEASE_TYPES.has(raw as ReleaseType)) {\n return raw as ReleaseType\n }\n return 'patch'\n}\n\nexport const BADGE_VERSION_RELEASE_TYPE_STYLES: Record<ReleaseType, ReleaseTypeStyle> = {\n major: {\n badgeClassName: 'bg-destructive/20 text-destructive',\n textClassName: 'text-destructive',\n Icon: MdWarning,\n },\n minor: {\n badgeClassName: 'bg-accent/20 text-accent',\n textClassName: 'text-accent',\n Icon: MdAddCircleOutline,\n },\n patch: {\n badgeClassName: 'bg-warning/20 text-warning',\n textClassName: 'text-warning',\n Icon: MdCheck,\n },\n}\n\nexport type BadgeVersionProps = Omit<HTMLAttributes<HTMLSpanElement>, 'children'> & {\n version: string\n type?: ReleaseType | string | null\n showReleaseType?: boolean\n /** Apps own i18n — required when `showReleaseType` is true. */\n releaseTypeLabel?: string\n wrapperClassName?: string\n}\n\nfunction BadgeVersion({\n version,\n type,\n showReleaseType = false,\n releaseTypeLabel,\n className,\n wrapperClassName,\n 'aria-label': ariaLabelProp,\n ...rest\n}: BadgeVersionProps) {\n const releaseType = coerceBadgeReleaseType(type)\n const styles = BADGE_VERSION_RELEASE_TYPE_STYLES[releaseType]\n const typeLabel = showReleaseType ? releaseTypeLabel : null\n const defaultGroupAriaLabel =\n showReleaseType && typeLabel && !ariaLabelProp ? `${version} ${typeLabel}` : undefined\n\n if (!showReleaseType) {\n return (\n <span\n data-slot=\"badge-version\"\n data-release-type={releaseType}\n className={cn(\n 'inline-flex items-center rounded-btn px-2 py-[3px] text-body-xs font-bold',\n styles.badgeClassName,\n className\n )}\n aria-label={ariaLabelProp}\n {...rest}\n >\n {version}\n </span>\n )\n }\n\n const Icon = styles.Icon\n\n return (\n <span\n className={cn('inline-flex flex-wrap items-center gap-2', wrapperClassName)}\n aria-label={ariaLabelProp ?? defaultGroupAriaLabel}\n {...rest}\n >\n <span\n data-slot=\"badge-version\"\n data-release-type={releaseType}\n className={cn(\n 'inline-flex items-center rounded-btn px-2 py-[3px] text-body-xs font-bold',\n styles.badgeClassName,\n className\n )}\n >\n {version}\n </span>\n {typeLabel ? (\n <span\n className={cn(\n 'inline-flex items-center gap-1 text-btn font-semibold',\n styles.textClassName\n )}\n >\n <Icon size={14} aria-hidden />\n {typeLabel}\n </span>\n ) : null}\n </span>\n )\n}\n\nexport { BadgeVersion }\n"],"mappings":";;;;AAcA,MAAM,gCAAgB,IAAI,IAAiB;CAAC;CAAS;CAAS;AAAO,CAAC;AAEtE,SAAgB,uBAAuB,KAA2B;CAChE,IAAI,OAAO,QAAQ,YAAY,cAAc,IAAI,GAAkB,GACjE,OAAO;CAET,OAAO;AACT;AAEA,MAAa,oCAA2E;CACtF,OAAO;EACL,gBAAgB;EAChB,eAAe;EACf,MAAM;CACR;CACA,OAAO;EACL,gBAAgB;EAChB,eAAe;EACf,MAAM;CACR;CACA,OAAO;EACL,gBAAgB;EAChB,eAAe;EACf,MAAM;CACR;AACF;AAWA,SAAS,aAAa,EACpB,SACA,MACA,kBAAkB,OAClB,kBACA,WACA,kBACA,cAAc,eACd,GAAG,QACiB;CACpB,MAAM,cAAc,uBAAuB,IAAI;CAC/C,MAAM,SAAS,kCAAkC;CACjD,MAAM,YAAY,kBAAkB,mBAAmB;CACvD,MAAM,wBACJ,mBAAmB,aAAa,CAAC,gBAAgB,GAAG,QAAQ,GAAG,cAAc;CAE/E,IAAI,CAAC,iBACH,OACE,oBAAC,QAAD;EACE,aAAU;EACV,qBAAmB;EACnB,WAAW,GACT,6EACA,OAAO,gBACP,SACF;EACA,cAAY;EACZ,GAAI;EAEH,UAAA;CACG,CAAA;CAIV,MAAM,OAAO,OAAO;CAEpB,OACE,qBAAC,QAAD;EACE,WAAW,GAAG,4CAA4C,gBAAgB;EAC1E,cAAY,iBAAiB;EAC7B,GAAI;EAHN,UAAA,CAKE,oBAAC,QAAD;GACE,aAAU;GACV,qBAAmB;GACnB,WAAW,GACT,6EACA,OAAO,gBACP,SACF;GAEC,UAAA;EACG,CAAA,GACL,YACC,qBAAC,QAAD;GACE,WAAW,GACT,yDACA,OAAO,aACT;GAJF,UAAA,CAME,oBAAC,MAAD;IAAM,MAAM;IAAI,eAAA;GAAa,CAAA,GAC5B,SACG;EACJ,CAAA,IAAA,IACA;;AAEV"}
@@ -0,0 +1,2 @@
1
+ import { BADGE_VERSION_RELEASE_TYPE_STYLES, BadgeVersion, BadgeVersionProps, ReleaseType, coerceBadgeReleaseType } from "./BadgeVersion.mjs";
2
+ export { BADGE_VERSION_RELEASE_TYPE_STYLES, BadgeVersion, type BadgeVersionProps, type ReleaseType, coerceBadgeReleaseType };
@@ -0,0 +1,2 @@
1
+ import { BADGE_VERSION_RELEASE_TYPE_STYLES, BadgeVersion, coerceBadgeReleaseType } from "./BadgeVersion.mjs";
2
+ export { BADGE_VERSION_RELEASE_TYPE_STYLES, BadgeVersion, coerceBadgeReleaseType };
@@ -0,0 +1,14 @@
1
+ import { ComponentProps } from "react";
2
+ import { VariantProps } from "class-variance-authority";
3
+ //#region src/ui/components/Button/Button.d.ts
4
+ declare const buttonVariants: (props?: ({
5
+ variant?: "solid" | "outline" | "ghost" | "secondary" | "social" | "action" | "elevated-outline" | "link" | null | undefined;
6
+ size?: "social" | "default" | "sm" | "cta" | "icon" | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ type ButtonProps = ComponentProps<'button'> & VariantProps<typeof buttonVariants> & {
9
+ asChild?: boolean;
10
+ };
11
+ declare function Button({ className, variant, size, asChild, ...props }: ButtonProps): import("react").JSX.Element;
12
+ //#endregion
13
+ export { Button, ButtonProps, buttonVariants };
14
+ //# sourceMappingURL=Button.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.mts","names":[],"sources":["../../../../src/ui/components/Button/Button.tsx"],"mappings":";;;cAUM,iBAAc;;;6CAmCnB;KAEW,cAAc,2BACxB,oBAAoB;EAClB;;iBAGK,SACP,WACA,SACA,MACA,YACG,SACF,8BAAW,IAAA"}
@@ -0,0 +1,48 @@
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 { cva } from "class-variance-authority";
7
+ //#region src/ui/components/Button/Button.tsx
8
+ const buttonVariants = cva(cn("inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap font-semibold transition-colors outline-none select-none disabled:pointer-events-none disabled:opacity-50", focusRingClassName), {
9
+ variants: {
10
+ variant: {
11
+ "solid": "rounded-btn bg-accent text-accent-foreground hover:opacity-90",
12
+ "outline": "rounded-btn border border-accent bg-transparent text-foreground hover:bg-foreground/5",
13
+ "ghost": "rounded-btn bg-transparent text-accent hover:bg-foreground/5",
14
+ "secondary": "rounded-btn border border-foreground/20 bg-foreground/5 text-foreground hover:bg-foreground/10",
15
+ "social": "rounded-btn border border-foreground/10 bg-card-elevated text-secondary hover:border-foreground/20 hover:text-foreground",
16
+ "action": "rounded-btn border-0 bg-foreground text-background hover:opacity-90 no-underline",
17
+ "elevated-outline": "rounded-btn border border-foreground bg-surface-elevated text-foreground hover:bg-surface-elevated/80",
18
+ "link": "bg-transparent p-0 text-accent underline-offset-4 hover:underline"
19
+ },
20
+ size: {
21
+ default: "h-btn px-btn text-sm",
22
+ sm: "h-btn-sm px-btn-sm text-xs",
23
+ cta: "h-auto rounded-control px-4 py-3 text-sm font-medium",
24
+ icon: "size-9 rounded-btn p-0",
25
+ social: "h-[42px] gap-2 px-btn"
26
+ }
27
+ },
28
+ defaultVariants: {
29
+ variant: "solid",
30
+ size: "default"
31
+ }
32
+ });
33
+ function Button({ className, variant = "solid", size = "default", asChild = false, ...props }) {
34
+ return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
35
+ "data-slot": "button",
36
+ "data-variant": variant,
37
+ "data-size": size,
38
+ className: cn(buttonVariants({
39
+ variant,
40
+ size
41
+ }), className),
42
+ ...props
43
+ });
44
+ }
45
+ //#endregion
46
+ export { Button, buttonVariants };
47
+
48
+ //# sourceMappingURL=Button.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.mjs","names":[],"sources":["../../../../src/ui/components/Button/Button.tsx"],"sourcesContent":["'use client'\n\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { focusRingClassName } from '../../a11y/focus.js'\nimport { cn } from '../../utils/cn.js'\n\nimport type { ComponentProps } from 'react'\n\nconst buttonVariants = cva(\n cn(\n 'inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap font-semibold transition-colors outline-none select-none disabled:pointer-events-none disabled:opacity-50',\n focusRingClassName\n ),\n {\n variants: {\n variant: {\n 'solid': 'rounded-btn bg-accent text-accent-foreground hover:opacity-90',\n 'outline':\n 'rounded-btn border border-accent bg-transparent text-foreground hover:bg-foreground/5',\n 'ghost': 'rounded-btn bg-transparent text-accent hover:bg-foreground/5',\n 'secondary':\n 'rounded-btn border border-foreground/20 bg-foreground/5 text-foreground hover:bg-foreground/10',\n 'social':\n 'rounded-btn border border-foreground/10 bg-card-elevated text-secondary hover:border-foreground/20 hover:text-foreground',\n 'action':\n 'rounded-btn border-0 bg-foreground text-background hover:opacity-90 no-underline',\n 'elevated-outline':\n 'rounded-btn border border-foreground bg-surface-elevated text-foreground hover:bg-surface-elevated/80',\n 'link': 'bg-transparent p-0 text-accent underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-btn px-btn text-sm',\n sm: 'h-btn-sm px-btn-sm text-xs',\n cta: 'h-auto rounded-control px-4 py-3 text-sm font-medium',\n icon: 'size-9 rounded-btn p-0',\n social: 'h-[42px] gap-2 px-btn',\n },\n },\n defaultVariants: {\n variant: 'solid',\n size: 'default',\n },\n }\n)\n\nexport type ButtonProps = ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }\n\nfunction Button({\n className,\n variant = 'solid',\n size = 'default',\n asChild = false,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size }), className)}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n"],"mappings":";;;;;;;AAUA,MAAM,iBAAiB,IACrB,GACE,4LACA,kBACF,GACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,WACE;GACF,SAAS;GACT,aACE;GACF,UACE;GACF,UACE;GACF,oBACE;GACF,QAAQ;EACV;EACA,MAAM;GACJ,SAAS;GACT,IAAI;GACJ,KAAK;GACL,MAAM;GACN,QAAQ;EACV;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF;AAOA,SAAS,OAAO,EACd,WACA,UAAU,SACV,OAAO,WACP,UAAU,OACV,GAAG,SACW;CAGd,OACE,oBAHW,UAAU,OAAO,UAG5B;EACE,aAAU;EACV,gBAAc;EACd,aAAW;EACX,WAAW,GAAG,eAAe;GAAE;GAAS;EAAK,CAAC,GAAG,SAAS;EAC1D,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,2 @@
1
+ import { Button, ButtonProps, buttonVariants } from "./Button.mjs";
2
+ export { Button, type ButtonProps, buttonVariants };
@@ -0,0 +1,2 @@
1
+ import { Button, buttonVariants } from "./Button.mjs";
2
+ export { Button, buttonVariants };
@@ -0,0 +1,14 @@
1
+ import { HTMLAttributes } from "react";
2
+ import { VariantProps } from "class-variance-authority";
3
+ //#region src/ui/components/Card/Card.d.ts
4
+ declare const cardVariants: (props?: ({
5
+ variant?: "surface" | "card" | "elevated" | null | undefined;
6
+ padding?: "sm" | "none" | "md" | "lg" | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ type CardProps = HTMLAttributes<HTMLDivElement> & VariantProps<typeof cardVariants> & {
9
+ asChild?: boolean;
10
+ };
11
+ declare function Card({ className, variant, padding, asChild, ...props }: CardProps): import("react").JSX.Element;
12
+ //#endregion
13
+ export { Card, CardProps, cardVariants };
14
+ //# sourceMappingURL=Card.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.d.mts","names":[],"sources":["../../../../src/ui/components/Card/Card.tsx"],"mappings":";;;cASM,eAAY;;;6CAkBhB;KAEU,YAAY,eAAe,kBACrC,oBAAoB;EAClB;;iBAGK,OAAO,WAAW,SAAS,SAAS,YAAoB,SAAS,4BAAS,IAAA"}
@@ -0,0 +1,40 @@
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
+ import { cva } from "class-variance-authority";
6
+ //#region src/ui/components/Card/Card.tsx
7
+ const cardVariants = cva("rounded-card border", {
8
+ variants: {
9
+ variant: {
10
+ surface: "border-border bg-surface",
11
+ card: "border-border-subtle bg-card",
12
+ elevated: "border-border bg-card-elevated"
13
+ },
14
+ padding: {
15
+ none: "",
16
+ sm: "p-5",
17
+ md: "p-6",
18
+ lg: "p-6 sm:p-8"
19
+ }
20
+ },
21
+ defaultVariants: {
22
+ variant: "surface",
23
+ padding: "md"
24
+ }
25
+ });
26
+ function Card({ className, variant, padding, asChild = false, ...props }) {
27
+ return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
28
+ "data-slot": "card",
29
+ "data-variant": variant,
30
+ className: cn(cardVariants({
31
+ variant,
32
+ padding
33
+ }), className),
34
+ ...props
35
+ });
36
+ }
37
+ //#endregion
38
+ export { Card, cardVariants };
39
+
40
+ //# sourceMappingURL=Card.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.mjs","names":[],"sources":["../../../../src/ui/components/Card/Card.tsx"],"sourcesContent":["'use client'\n\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../../utils/cn.js'\n\nimport type { HTMLAttributes } from 'react'\n\nconst cardVariants = cva('rounded-card border', {\n variants: {\n variant: {\n surface: 'border-border bg-surface',\n card: 'border-border-subtle bg-card',\n elevated: 'border-border bg-card-elevated',\n },\n padding: {\n none: '',\n sm: 'p-5',\n md: 'p-6',\n lg: 'p-6 sm:p-8',\n },\n },\n defaultVariants: {\n variant: 'surface',\n padding: 'md',\n },\n})\n\nexport type CardProps = HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof cardVariants> & {\n asChild?: boolean\n }\n\nfunction Card({ className, variant, padding, asChild = false, ...props }: CardProps) {\n const Comp = asChild ? Slot : 'div'\n return (\n <Comp\n data-slot=\"card\"\n data-variant={variant}\n className={cn(cardVariants({ variant, padding }), className)}\n {...props}\n />\n )\n}\n\nexport { Card, cardVariants }\n"],"mappings":";;;;;;AASA,MAAM,eAAe,IAAI,uBAAuB;CAC9C,UAAU;EACR,SAAS;GACP,SAAS;GACT,MAAM;GACN,UAAU;EACZ;EACA,SAAS;GACP,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,SAAS;CACX;AACF,CAAC;AAOD,SAAS,KAAK,EAAE,WAAW,SAAS,SAAS,UAAU,OAAO,GAAG,SAAoB;CAEnF,OACE,oBAFW,UAAU,OAAO,OAE5B;EACE,aAAU;EACV,gBAAc;EACd,WAAW,GAAG,aAAa;GAAE;GAAS;EAAQ,CAAC,GAAG,SAAS;EAC3D,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,2 @@
1
+ import { Card, CardProps, cardVariants } from "./Card.mjs";
2
+ export { Card, type CardProps, cardVariants };
@@ -0,0 +1,2 @@
1
+ import { Card, cardVariants } from "./Card.mjs";
2
+ export { Card, cardVariants };
@@ -0,0 +1,42 @@
1
+ import { HTMLAttributes, ReactNode } from "react";
2
+ import { UseEmblaCarouselType } from "embla-carousel-react";
3
+ import { EmblaOptionsType } from "embla-carousel";
4
+ //#region src/ui/components/Carousel/Carousel.d.ts
5
+ type EmblaCarouselType = UseEmblaCarouselType[1];
6
+ type CarouselApi = {
7
+ selectedIndex: number;
8
+ scrollSnaps: number[];
9
+ canScrollPrev: boolean;
10
+ canScrollNext: boolean;
11
+ scrollTo: (index: number) => void;
12
+ scrollPrev: () => void;
13
+ scrollNext: () => void;
14
+ viewportRef: (node: HTMLElement | null) => void;
15
+ emblaApi: EmblaCarouselType | undefined;
16
+ };
17
+ declare function useCarousel(): CarouselApi;
18
+ type CarouselProps = HTMLAttributes<HTMLDivElement> & {
19
+ options?: EmblaOptionsType;
20
+ /** Accessible name for the carousel region. Apps own i18n. */
21
+ label: string;
22
+ children: ReactNode;
23
+ };
24
+ declare function Carousel({ options, label, className, children, ...props }: CarouselProps): import("react").JSX.Element;
25
+ declare function CarouselViewport({ className, children, ...props }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
26
+ declare function CarouselContainer({ className, children, ...props }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
27
+ declare function CarouselSlide({ className, children, ...props }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
28
+ type CarouselControlsProps = {
29
+ className?: string;
30
+ prevLabel: string;
31
+ nextLabel: string;
32
+ };
33
+ declare function CarouselControls({ className, prevLabel, nextLabel }: CarouselControlsProps): import("react").JSX.Element;
34
+ type CarouselPaginationProps = {
35
+ className?: string;
36
+ paginationLabel: string;
37
+ slideLabel: (slide: number) => string;
38
+ };
39
+ declare function CarouselPagination({ className, paginationLabel, slideLabel }: CarouselPaginationProps): import("react").JSX.Element | null;
40
+ //#endregion
41
+ export { Carousel, CarouselApi, CarouselContainer, CarouselControls, CarouselControlsProps, CarouselPagination, CarouselPaginationProps, CarouselProps, CarouselSlide, CarouselViewport, useCarousel };
42
+ //# sourceMappingURL=Carousel.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Carousel.d.mts","names":[],"sources":["../../../../src/ui/components/Carousel/Carousel.tsx"],"mappings":";;;;KAkBK,oBAAoB;KAEb;EACV;EACA;EACA;EACA;EACA,WAAW;EACX;EACA;EACA,cAAc,MAAM;EACpB,UAAU;;iBAKI,eAAW;KAQf,gBAAgB,eAAe;EACzC,UAAU;;EAEV;EACA,UAAU;;iBAGH,WAAW,SAAS,OAAO,WAAW,aAAa,SAAS,gCAAa,IAAA;iBAkDzE,mBAAmB,WAAW,aAAa,SAAS,eAAe,kCAAe,IAAA;iBASlF,oBAAoB,WAAW,aAAa,SAAS,eAAe,kCAAe,IAAA;iBAQnF,gBAAgB,WAAW,aAAa,SAAS,eAAe,kCAAe,IAAA;KAa5E;EACV;EACA;EACA;;iBA+BO,mBAAmB,WAAW,WAAW,aAAa,wCAAqB,IAAA;KA6BxE;EACV;EACA;EACA,aAAa;;iBAGN,qBAAqB,WAAW,iBAAiB,cAAc,0CAAuB,IAAA"}
@@ -0,0 +1,164 @@
1
+ "use client";
2
+ import { cn } from "../../utils/cn.mjs";
3
+ import { focusRingClassName } from "../../a11y/focus.mjs";
4
+ import { Button } from "../Button/Button.mjs";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { createContext, useContext, useEffect, useState } from "react";
7
+ import useEmblaCarousel from "embla-carousel-react";
8
+ //#region src/ui/components/Carousel/Carousel.tsx
9
+ const CarouselContext = createContext(null);
10
+ function useCarousel() {
11
+ const context = useContext(CarouselContext);
12
+ if (!context) throw new Error("Carousel components must be used within <Carousel>");
13
+ return context;
14
+ }
15
+ function Carousel({ options, label, className, children, ...props }) {
16
+ const [viewportRef, emblaApi] = useEmblaCarousel(options);
17
+ const [selectedIndex, setSelectedIndex] = useState(0);
18
+ const [scrollSnaps, setScrollSnaps] = useState([]);
19
+ const [canScrollPrev, setCanScrollPrev] = useState(false);
20
+ const [canScrollNext, setCanScrollNext] = useState(false);
21
+ useEffect(() => {
22
+ if (!emblaApi) return;
23
+ function onSelect(api) {
24
+ setSelectedIndex(api.selectedScrollSnap());
25
+ setCanScrollPrev(api.canScrollPrev());
26
+ setCanScrollNext(api.canScrollNext());
27
+ }
28
+ setScrollSnaps(emblaApi.scrollSnapList());
29
+ onSelect(emblaApi);
30
+ emblaApi.on("reInit", onSelect);
31
+ emblaApi.on("select", onSelect);
32
+ return () => {
33
+ emblaApi.off("reInit", onSelect);
34
+ emblaApi.off("select", onSelect);
35
+ };
36
+ }, [emblaApi]);
37
+ const value = {
38
+ viewportRef,
39
+ emblaApi,
40
+ selectedIndex,
41
+ scrollSnaps,
42
+ canScrollPrev,
43
+ canScrollNext,
44
+ scrollTo: (index) => emblaApi?.scrollTo(index),
45
+ scrollPrev: () => emblaApi?.scrollPrev(),
46
+ scrollNext: () => emblaApi?.scrollNext()
47
+ };
48
+ return /* @__PURE__ */ jsx(CarouselContext.Provider, {
49
+ value,
50
+ children: /* @__PURE__ */ jsx("div", {
51
+ className: cn("flex flex-col", className),
52
+ ...props,
53
+ children: /* @__PURE__ */ jsx("div", {
54
+ "aria-label": label,
55
+ "aria-roledescription": "carousel",
56
+ children
57
+ })
58
+ })
59
+ });
60
+ }
61
+ function CarouselViewport({ className, children, ...props }) {
62
+ const { viewportRef } = useCarousel();
63
+ return /* @__PURE__ */ jsx("div", {
64
+ ref: viewportRef,
65
+ className: cn("overflow-hidden", className),
66
+ ...props,
67
+ children
68
+ });
69
+ }
70
+ function CarouselContainer({ className, children, ...props }) {
71
+ return /* @__PURE__ */ jsx("div", {
72
+ className: cn("flex", className),
73
+ ...props,
74
+ children
75
+ });
76
+ }
77
+ function CarouselSlide({ className, children, ...props }) {
78
+ return /* @__PURE__ */ jsx("div", {
79
+ role: "group",
80
+ "aria-roledescription": "slide",
81
+ className: cn("min-w-0 shrink-0 grow-0 basis-full", className),
82
+ ...props,
83
+ children
84
+ });
85
+ }
86
+ function ChevronLeft() {
87
+ return /* @__PURE__ */ jsx("svg", {
88
+ "aria-hidden": "true",
89
+ viewBox: "0 0 20 20",
90
+ width: "20",
91
+ height: "20",
92
+ fill: "none",
93
+ children: /* @__PURE__ */ jsx("path", {
94
+ d: "M12.5 4.5 7 10l5.5 5.5",
95
+ stroke: "currentColor",
96
+ strokeWidth: "1.5",
97
+ strokeLinecap: "round",
98
+ strokeLinejoin: "round"
99
+ })
100
+ });
101
+ }
102
+ function ChevronRight() {
103
+ return /* @__PURE__ */ jsx("svg", {
104
+ "aria-hidden": "true",
105
+ viewBox: "0 0 20 20",
106
+ width: "20",
107
+ height: "20",
108
+ fill: "none",
109
+ children: /* @__PURE__ */ jsx("path", {
110
+ d: "M7.5 4.5 13 10l-5.5 5.5",
111
+ stroke: "currentColor",
112
+ strokeWidth: "1.5",
113
+ strokeLinecap: "round",
114
+ strokeLinejoin: "round"
115
+ })
116
+ });
117
+ }
118
+ function CarouselControls({ className, prevLabel, nextLabel }) {
119
+ const { canScrollPrev, canScrollNext, scrollPrev, scrollNext } = useCarousel();
120
+ return /* @__PURE__ */ jsxs("div", {
121
+ className: cn("flex items-center gap-2", className),
122
+ children: [/* @__PURE__ */ jsx(Button, {
123
+ type: "button",
124
+ variant: "secondary",
125
+ size: "icon",
126
+ "aria-label": prevLabel,
127
+ disabled: !canScrollPrev,
128
+ onClick: scrollPrev,
129
+ children: /* @__PURE__ */ jsx(ChevronLeft, {})
130
+ }), /* @__PURE__ */ jsx(Button, {
131
+ type: "button",
132
+ variant: "secondary",
133
+ size: "icon",
134
+ "aria-label": nextLabel,
135
+ disabled: !canScrollNext,
136
+ onClick: scrollNext,
137
+ children: /* @__PURE__ */ jsx(ChevronRight, {})
138
+ })]
139
+ });
140
+ }
141
+ function CarouselPagination({ className, paginationLabel, slideLabel }) {
142
+ const { scrollSnaps, selectedIndex, scrollTo } = useCarousel();
143
+ if (scrollSnaps.length <= 1) return null;
144
+ return /* @__PURE__ */ jsx("div", {
145
+ role: "tablist",
146
+ "aria-label": paginationLabel,
147
+ className: cn("flex items-center justify-center gap-2", className),
148
+ children: scrollSnaps.map((_, index) => {
149
+ const isActive = index === selectedIndex;
150
+ return /* @__PURE__ */ jsx("button", {
151
+ type: "button",
152
+ role: "tab",
153
+ "aria-label": slideLabel(index + 1),
154
+ "aria-selected": isActive,
155
+ onClick: () => scrollTo(index),
156
+ className: cn("size-2 cursor-pointer rounded-full transition-colors", focusRingClassName, isActive ? "bg-accent" : "bg-foreground/25 hover:bg-foreground/40")
157
+ }, index);
158
+ })
159
+ });
160
+ }
161
+ //#endregion
162
+ export { Carousel, CarouselContainer, CarouselControls, CarouselPagination, CarouselSlide, CarouselViewport, useCarousel };
163
+
164
+ //# sourceMappingURL=Carousel.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Carousel.mjs","names":[],"sources":["../../../../src/ui/components/Carousel/Carousel.tsx"],"sourcesContent":["'use client'\n\nimport useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react'\nimport {\n createContext,\n useContext,\n useEffect,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\n\nimport { Button } from '../Button/Button.js'\nimport { focusRingClassName } from '../../a11y/focus.js'\nimport { cn } from '../../utils/cn.js'\n\nimport type { EmblaOptionsType } from 'embla-carousel'\n\ntype EmblaCarouselType = UseEmblaCarouselType[1]\n\nexport type CarouselApi = {\n selectedIndex: number\n scrollSnaps: number[]\n canScrollPrev: boolean\n canScrollNext: boolean\n scrollTo: (index: number) => void\n scrollPrev: () => void\n scrollNext: () => void\n viewportRef: (node: HTMLElement | null) => void\n emblaApi: EmblaCarouselType | undefined\n}\n\nconst CarouselContext = createContext<CarouselApi | null>(null)\n\nexport function useCarousel() {\n const context = useContext(CarouselContext)\n if (!context) {\n throw new Error('Carousel components must be used within <Carousel>')\n }\n return context\n}\n\nexport type CarouselProps = HTMLAttributes<HTMLDivElement> & {\n options?: EmblaOptionsType\n /** Accessible name for the carousel region. Apps own i18n. */\n label: string\n children: ReactNode\n}\n\nfunction Carousel({ options, label, className, children, ...props }: CarouselProps) {\n const [viewportRef, emblaApi] = useEmblaCarousel(options)\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState<number[]>([])\n const [canScrollPrev, setCanScrollPrev] = useState(false)\n const [canScrollNext, setCanScrollNext] = useState(false)\n\n useEffect(() => {\n if (!emblaApi) return\n\n function onSelect(api: NonNullable<typeof emblaApi>) {\n setSelectedIndex(api.selectedScrollSnap())\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }\n\n setScrollSnaps(emblaApi.scrollSnapList())\n onSelect(emblaApi)\n emblaApi.on('reInit', onSelect)\n emblaApi.on('select', onSelect)\n\n return () => {\n emblaApi.off('reInit', onSelect)\n emblaApi.off('select', onSelect)\n }\n }, [emblaApi])\n\n const value: CarouselApi = {\n viewportRef,\n emblaApi,\n selectedIndex,\n scrollSnaps,\n canScrollPrev,\n canScrollNext,\n scrollTo: (index) => emblaApi?.scrollTo(index),\n scrollPrev: () => emblaApi?.scrollPrev(),\n scrollNext: () => emblaApi?.scrollNext(),\n }\n\n return (\n <CarouselContext.Provider value={value}>\n <div className={cn('flex flex-col', className)} {...props}>\n <div aria-label={label} aria-roledescription=\"carousel\">\n {children}\n </div>\n </div>\n </CarouselContext.Provider>\n )\n}\n\nfunction CarouselViewport({ className, children, ...props }: HTMLAttributes<HTMLDivElement>) {\n const { viewportRef } = useCarousel()\n return (\n <div ref={viewportRef} className={cn('overflow-hidden', className)} {...props}>\n {children}\n </div>\n )\n}\n\nfunction CarouselContainer({ className, children, ...props }: HTMLAttributes<HTMLDivElement>) {\n return (\n <div className={cn('flex', className)} {...props}>\n {children}\n </div>\n )\n}\n\nfunction CarouselSlide({ className, children, ...props }: HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn('min-w-0 shrink-0 grow-0 basis-full', className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport type CarouselControlsProps = {\n className?: string\n prevLabel: string\n nextLabel: string\n}\n\nfunction ChevronLeft() {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 20 20\" width=\"20\" height=\"20\" fill=\"none\">\n <path\n d=\"M12.5 4.5 7 10l5.5 5.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n\nfunction ChevronRight() {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 20 20\" width=\"20\" height=\"20\" fill=\"none\">\n <path\n d=\"M7.5 4.5 13 10l-5.5 5.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n\nfunction CarouselControls({ className, prevLabel, nextLabel }: CarouselControlsProps) {\n const { canScrollPrev, canScrollNext, scrollPrev, scrollNext } = useCarousel()\n\n return (\n <div className={cn('flex items-center gap-2', className)}>\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"icon\"\n aria-label={prevLabel}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n >\n <ChevronLeft />\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"icon\"\n aria-label={nextLabel}\n disabled={!canScrollNext}\n onClick={scrollNext}\n >\n <ChevronRight />\n </Button>\n </div>\n )\n}\n\nexport type CarouselPaginationProps = {\n className?: string\n paginationLabel: string\n slideLabel: (slide: number) => string\n}\n\nfunction CarouselPagination({ className, paginationLabel, slideLabel }: CarouselPaginationProps) {\n const { scrollSnaps, selectedIndex, scrollTo } = useCarousel()\n\n if (scrollSnaps.length <= 1) return null\n\n return (\n <div\n role=\"tablist\"\n aria-label={paginationLabel}\n className={cn('flex items-center justify-center gap-2', className)}\n >\n {scrollSnaps.map((_, index) => {\n const isActive = index === selectedIndex\n return (\n <button\n key={index}\n type=\"button\"\n role=\"tab\"\n aria-label={slideLabel(index + 1)}\n aria-selected={isActive}\n onClick={() => scrollTo(index)}\n className={cn(\n 'size-2 cursor-pointer rounded-full transition-colors',\n focusRingClassName,\n isActive ? 'bg-accent' : 'bg-foreground/25 hover:bg-foreground/40'\n )}\n />\n )\n })}\n </div>\n )\n}\n\nexport {\n Carousel,\n CarouselViewport,\n CarouselContainer,\n CarouselSlide,\n CarouselControls,\n CarouselPagination,\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Carousel, CarouselApi, CarouselContainer, CarouselControls, CarouselControlsProps, CarouselPagination, CarouselPaginationProps, CarouselProps, CarouselSlide, CarouselViewport, useCarousel } from "./Carousel.mjs";
2
+ export { Carousel, type CarouselApi, CarouselContainer, CarouselControls, type CarouselControlsProps, CarouselPagination, type CarouselPaginationProps, type CarouselProps, CarouselSlide, CarouselViewport, useCarousel };
@@ -0,0 +1,2 @@
1
+ import { Carousel, CarouselContainer, CarouselControls, CarouselPagination, CarouselSlide, CarouselViewport, useCarousel } from "./Carousel.mjs";
2
+ export { Carousel, CarouselContainer, CarouselControls, CarouselPagination, CarouselSlide, CarouselViewport, useCarousel };
@@ -0,0 +1,8 @@
1
+ import { ComponentProps } from "react";
2
+ import { Primitive } from "@radix-ui/react-primitive";
3
+ //#region src/ui/components/Checkbox/Checkbox.d.ts
4
+ type CheckboxProps = Omit<ComponentProps<typeof Primitive.input>, 'type'>;
5
+ declare function Checkbox({ className, ref, ...props }: CheckboxProps): import("react").JSX.Element;
6
+ //#endregion
7
+ export { Checkbox, CheckboxProps };
8
+ //# sourceMappingURL=Checkbox.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.d.mts","names":[],"sources":["../../../../src/ui/components/Checkbox/Checkbox.tsx"],"mappings":";;;KASY,gBAAgB,KAAK,sBAAsB,UAAU;iBAuBxD,WAAW,WAAW,QAAQ,SAAS,gCAAa,IAAA"}
@@ -0,0 +1,39 @@
1
+ "use client";
2
+ import { cn } from "../../utils/cn.mjs";
3
+ import { focusRingClassName } from "../../a11y/focus.mjs";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { Primitive } from "@radix-ui/react-primitive";
6
+ //#region src/ui/components/Checkbox/Checkbox.tsx
7
+ function CheckIcon({ className }) {
8
+ return /* @__PURE__ */ jsx("svg", {
9
+ "aria-hidden": "true",
10
+ viewBox: "0 0 14 14",
11
+ width: "14",
12
+ height: "14",
13
+ fill: "none",
14
+ className,
15
+ children: /* @__PURE__ */ jsx("path", {
16
+ d: "M2.5 7.2 5.4 10l6.1-6.5",
17
+ stroke: "currentColor",
18
+ strokeWidth: "1.75",
19
+ strokeLinecap: "round",
20
+ strokeLinejoin: "round"
21
+ })
22
+ });
23
+ }
24
+ function Checkbox({ className, ref, ...props }) {
25
+ return /* @__PURE__ */ jsxs("span", {
26
+ className: "relative inline-flex shrink-0 items-center justify-center",
27
+ children: [/* @__PURE__ */ jsx(Primitive.input, {
28
+ type: "checkbox",
29
+ ref,
30
+ "data-slot": "checkbox",
31
+ className: cn("peer size-5 shrink-0 appearance-none rounded-sm border border-border bg-surface", "cursor-pointer transition-colors", "hover:border-accent", "checked:border-accent checked:bg-accent", "disabled:cursor-not-allowed disabled:opacity-50", focusRingClassName, className),
32
+ ...props
33
+ }), /* @__PURE__ */ jsx(CheckIcon, { className: "pointer-events-none absolute text-accent-foreground opacity-0 transition-opacity peer-checked:opacity-100" })]
34
+ });
35
+ }
36
+ //#endregion
37
+ export { Checkbox };
38
+
39
+ //# sourceMappingURL=Checkbox.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.mjs","names":[],"sources":["../../../../src/ui/components/Checkbox/Checkbox.tsx"],"sourcesContent":["'use client'\n\nimport { Primitive } from '@radix-ui/react-primitive'\n\nimport { focusRingClassName } from '../../a11y/focus.js'\nimport { cn } from '../../utils/cn.js'\n\nimport type { ComponentProps } from 'react'\n\nexport type CheckboxProps = Omit<ComponentProps<typeof Primitive.input>, 'type'>\n\nfunction CheckIcon({ className }: { className?: string }) {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 14 14\"\n width=\"14\"\n height=\"14\"\n fill=\"none\"\n className={className}\n >\n <path\n d=\"M2.5 7.2 5.4 10l6.1-6.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n\nfunction Checkbox({ className, ref, ...props }: CheckboxProps) {\n return (\n <span className=\"relative inline-flex shrink-0 items-center justify-center\">\n <Primitive.input\n type=\"checkbox\"\n ref={ref}\n data-slot=\"checkbox\"\n className={cn(\n 'peer size-5 shrink-0 appearance-none rounded-sm border border-border bg-surface',\n 'cursor-pointer transition-colors',\n 'hover:border-accent',\n 'checked:border-accent checked:bg-accent',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n focusRingClassName,\n className\n )}\n {...props}\n />\n <CheckIcon className=\"pointer-events-none absolute text-accent-foreground opacity-0 transition-opacity peer-checked:opacity-100\" />\n </span>\n )\n}\n\nexport { Checkbox }\n"],"mappings":";;;;;;AAWA,SAAS,UAAU,EAAE,aAAqC;CACxD,OACE,oBAAC,OAAD;EACE,eAAY;EACZ,SAAQ;EACR,OAAM;EACN,QAAO;EACP,MAAK;EACM;EAEX,UAAA,oBAAC,QAAD;GACE,GAAE;GACF,QAAO;GACP,aAAY;GACZ,eAAc;GACd,gBAAe;EAChB,CAAA;CACE,CAAA;AAET;AAEA,SAAS,SAAS,EAAE,WAAW,KAAK,GAAG,SAAwB;CAC7D,OACE,qBAAC,QAAD;EAAM,WAAU;EAAhB,UAAA,CACE,oBAAC,UAAU,OAAX;GACE,MAAK;GACA;GACL,aAAU;GACV,WAAW,GACT,mFACA,oCACA,uBACA,2CACA,mDACA,oBACA,SACF;GACA,GAAI;EACL,CAAA,GACD,oBAAC,WAAD,EAAW,WAAU,4GAA6G,CAAA,CAC9H;;AAEV"}
@@ -0,0 +1,2 @@
1
+ import { Checkbox, CheckboxProps } from "./Checkbox.mjs";
2
+ export { Checkbox, type CheckboxProps };