@ugurdemirel/landcraft 0.1.9 → 0.1.11

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 (333) hide show
  1. package/dist/cjs/components/Badge.cjs +2 -0
  2. package/dist/cjs/components/Badge.cjs.map +1 -0
  3. package/dist/cjs/components/Blog/BlogCard.cjs +2 -0
  4. package/dist/cjs/components/Blog/BlogCard.cjs.map +1 -0
  5. package/dist/cjs/components/Blog/BlogSection.cjs +2 -0
  6. package/dist/cjs/components/Blog/BlogSection.cjs.map +1 -0
  7. package/dist/cjs/components/Blog/parts.cjs +2 -0
  8. package/dist/cjs/components/Blog/parts.cjs.map +1 -0
  9. package/dist/cjs/components/Blog/variants/Card.cjs +2 -0
  10. package/dist/cjs/components/Blog/variants/Card.cjs.map +1 -0
  11. package/dist/cjs/components/Blog/variants/Row.cjs +2 -0
  12. package/dist/cjs/components/Blog/variants/Row.cjs.map +1 -0
  13. package/dist/cjs/components/Button.cjs +2 -0
  14. package/dist/cjs/components/Button.cjs.map +1 -0
  15. package/dist/cjs/components/CTA/CTA.cjs +2 -0
  16. package/dist/cjs/components/CTA/CTA.cjs.map +1 -0
  17. package/dist/cjs/components/CTA/parts.cjs +2 -0
  18. package/dist/cjs/components/CTA/parts.cjs.map +1 -0
  19. package/dist/cjs/components/CTA/variants/Inverse.cjs +3 -0
  20. package/dist/cjs/components/CTA/variants/Inverse.cjs.map +1 -0
  21. package/dist/cjs/components/CTA/variants/Panel.cjs +3 -0
  22. package/dist/cjs/components/CTA/variants/Panel.cjs.map +1 -0
  23. package/dist/cjs/components/CTA/variants/Surface.cjs +2 -0
  24. package/dist/cjs/components/CTA/variants/Surface.cjs.map +1 -0
  25. package/dist/cjs/components/Card.cjs +2 -0
  26. package/dist/cjs/components/Card.cjs.map +1 -0
  27. package/dist/cjs/components/Container.cjs +2 -0
  28. package/dist/cjs/components/Container.cjs.map +1 -0
  29. package/dist/cjs/components/FAQ/FAQ.cjs +2 -0
  30. package/dist/cjs/components/FAQ/FAQ.cjs.map +1 -0
  31. package/dist/cjs/components/FAQ/parts.cjs +3 -0
  32. package/dist/cjs/components/FAQ/parts.cjs.map +1 -0
  33. package/dist/cjs/components/FAQ/variants/Accordion.cjs +3 -0
  34. package/dist/cjs/components/FAQ/variants/Accordion.cjs.map +1 -0
  35. package/dist/cjs/components/FAQ/variants/Cards.cjs +2 -0
  36. package/dist/cjs/components/FAQ/variants/Cards.cjs.map +1 -0
  37. package/dist/cjs/components/FAQ/variants/Split.cjs +2 -0
  38. package/dist/cjs/components/FAQ/variants/Split.cjs.map +1 -0
  39. package/dist/cjs/components/Features/FeatureCard.cjs +2 -0
  40. package/dist/cjs/components/Features/FeatureCard.cjs.map +1 -0
  41. package/dist/cjs/components/Features/FeatureGrid.cjs +2 -0
  42. package/dist/cjs/components/Features/FeatureGrid.cjs.map +1 -0
  43. package/dist/cjs/components/Features/parts.cjs +2 -0
  44. package/dist/cjs/components/Features/parts.cjs.map +1 -0
  45. package/dist/cjs/components/Features/variants/Bento.cjs +2 -0
  46. package/dist/cjs/components/Features/variants/Bento.cjs.map +1 -0
  47. package/dist/cjs/components/Features/variants/Columns.cjs +2 -0
  48. package/dist/cjs/components/Features/variants/Columns.cjs.map +1 -0
  49. package/dist/cjs/components/Features/variants/EditorialRows.cjs +2 -0
  50. package/dist/cjs/components/Features/variants/EditorialRows.cjs.map +1 -0
  51. package/dist/cjs/components/Footer/Footer.cjs +2 -0
  52. package/dist/cjs/components/Footer/Footer.cjs.map +1 -0
  53. package/dist/cjs/components/Footer/parts.cjs +2 -0
  54. package/dist/cjs/components/Footer/parts.cjs.map +1 -0
  55. package/dist/cjs/components/Footer/variants/Classic.cjs +2 -0
  56. package/dist/cjs/components/Footer/variants/Classic.cjs.map +1 -0
  57. package/dist/cjs/components/Footer/variants/Editorial.cjs +2 -0
  58. package/dist/cjs/components/Footer/variants/Editorial.cjs.map +1 -0
  59. package/dist/cjs/components/Footer/variants/Minimal.cjs +2 -0
  60. package/dist/cjs/components/Footer/variants/Minimal.cjs.map +1 -0
  61. package/dist/cjs/components/Hero/Hero.cjs +2 -0
  62. package/dist/cjs/components/Hero/Hero.cjs.map +1 -0
  63. package/dist/cjs/components/Hero/parts.cjs +2 -0
  64. package/dist/cjs/components/Hero/parts.cjs.map +1 -0
  65. package/dist/cjs/components/Hero/variants/Centered.cjs +2 -0
  66. package/dist/cjs/components/Hero/variants/Centered.cjs.map +1 -0
  67. package/dist/cjs/components/Hero/variants/Split.cjs +2 -0
  68. package/dist/cjs/components/Hero/variants/Split.cjs.map +1 -0
  69. package/dist/cjs/components/Hero/variants/Statement.cjs +3 -0
  70. package/dist/cjs/components/Hero/variants/Statement.cjs.map +1 -0
  71. package/dist/cjs/components/LanguageSwitcher/LanguageSwitcher.cjs +3 -0
  72. package/dist/cjs/components/LanguageSwitcher/LanguageSwitcher.cjs.map +1 -0
  73. package/dist/cjs/components/LanguageSwitcher/parts.cjs +3 -0
  74. package/dist/cjs/components/LanguageSwitcher/parts.cjs.map +1 -0
  75. package/dist/cjs/components/LanguageSwitcher/useLanguageSwitcher.cjs +3 -0
  76. package/dist/cjs/components/LanguageSwitcher/useLanguageSwitcher.cjs.map +1 -0
  77. package/dist/cjs/components/LanguageSwitcher/variants/Dropdown.cjs +3 -0
  78. package/dist/cjs/components/LanguageSwitcher/variants/Dropdown.cjs.map +1 -0
  79. package/dist/cjs/components/LanguageSwitcher/variants/Modal.cjs +3 -0
  80. package/dist/cjs/components/LanguageSwitcher/variants/Modal.cjs.map +1 -0
  81. package/dist/cjs/components/LogoCloud/LogoCloud.cjs +2 -0
  82. package/dist/cjs/components/LogoCloud/LogoCloud.cjs.map +1 -0
  83. package/dist/cjs/components/LogoCloud/parts.cjs +2 -0
  84. package/dist/cjs/components/LogoCloud/parts.cjs.map +1 -0
  85. package/dist/cjs/components/LogoCloud/variants/Marquee.cjs +2 -0
  86. package/dist/cjs/components/LogoCloud/variants/Marquee.cjs.map +1 -0
  87. package/dist/cjs/components/LogoCloud/variants/Quiet.cjs +2 -0
  88. package/dist/cjs/components/LogoCloud/variants/Quiet.cjs.map +1 -0
  89. package/dist/cjs/components/LogoCloud/variants/Strip.cjs +2 -0
  90. package/dist/cjs/components/LogoCloud/variants/Strip.cjs.map +1 -0
  91. package/dist/cjs/components/MegaMenu/MegaMenu.cjs +3 -0
  92. package/dist/cjs/components/MegaMenu/MegaMenu.cjs.map +1 -0
  93. package/dist/cjs/components/Modal.cjs +3 -0
  94. package/dist/cjs/components/Modal.cjs.map +1 -0
  95. package/dist/cjs/components/Navbar/Navbar.cjs +3 -0
  96. package/dist/cjs/components/Navbar/Navbar.cjs.map +1 -0
  97. package/dist/cjs/components/Newsletter/Newsletter.cjs +2 -0
  98. package/dist/cjs/components/Newsletter/Newsletter.cjs.map +1 -0
  99. package/dist/cjs/components/Newsletter/parts.cjs +2 -0
  100. package/dist/cjs/components/Newsletter/parts.cjs.map +1 -0
  101. package/dist/cjs/components/Newsletter/useNewsletterForm.cjs +3 -0
  102. package/dist/cjs/components/Newsletter/useNewsletterForm.cjs.map +1 -0
  103. package/dist/cjs/components/Newsletter/variants/Card.cjs +3 -0
  104. package/dist/cjs/components/Newsletter/variants/Card.cjs.map +1 -0
  105. package/dist/cjs/components/Newsletter/variants/Inline.cjs +3 -0
  106. package/dist/cjs/components/Newsletter/variants/Inline.cjs.map +1 -0
  107. package/dist/cjs/components/Newsletter/variants/Underline.cjs +3 -0
  108. package/dist/cjs/components/Newsletter/variants/Underline.cjs.map +1 -0
  109. package/dist/cjs/components/Pricing/Pricing.cjs +3 -0
  110. package/dist/cjs/components/Pricing/Pricing.cjs.map +1 -0
  111. package/dist/cjs/components/Pricing/parts.cjs +3 -0
  112. package/dist/cjs/components/Pricing/parts.cjs.map +1 -0
  113. package/dist/cjs/components/Pricing/variants/Bento.cjs +2 -0
  114. package/dist/cjs/components/Pricing/variants/Bento.cjs.map +1 -0
  115. package/dist/cjs/components/Pricing/variants/Cards.cjs +2 -0
  116. package/dist/cjs/components/Pricing/variants/Cards.cjs.map +1 -0
  117. package/dist/cjs/components/Pricing/variants/Compact.cjs +2 -0
  118. package/dist/cjs/components/Pricing/variants/Compact.cjs.map +1 -0
  119. package/dist/cjs/components/Prose.cjs +2 -0
  120. package/dist/cjs/components/Prose.cjs.map +1 -0
  121. package/dist/cjs/components/Section.cjs +2 -0
  122. package/dist/cjs/components/Section.cjs.map +1 -0
  123. package/dist/cjs/components/Slot.cjs +2 -0
  124. package/dist/cjs/components/Slot.cjs.map +1 -0
  125. package/dist/cjs/components/Stats/Stats.cjs +2 -0
  126. package/dist/cjs/components/Stats/Stats.cjs.map +1 -0
  127. package/dist/cjs/components/Stats/parts.cjs +2 -0
  128. package/dist/cjs/components/Stats/parts.cjs.map +1 -0
  129. package/dist/cjs/components/Stats/variants/Cells.cjs +2 -0
  130. package/dist/cjs/components/Stats/variants/Cells.cjs.map +1 -0
  131. package/dist/cjs/components/Stats/variants/Editorial.cjs +2 -0
  132. package/dist/cjs/components/Stats/variants/Editorial.cjs.map +1 -0
  133. package/dist/cjs/components/Stats/variants/Hairline.cjs +2 -0
  134. package/dist/cjs/components/Stats/variants/Hairline.cjs.map +1 -0
  135. package/dist/cjs/components/Stats/variants/Ticker.cjs +2 -0
  136. package/dist/cjs/components/Stats/variants/Ticker.cjs.map +1 -0
  137. package/dist/cjs/components/Testimonials/TestimonialCard.cjs +2 -0
  138. package/dist/cjs/components/Testimonials/TestimonialCard.cjs.map +1 -0
  139. package/dist/cjs/components/Testimonials/Testimonials.cjs +2 -0
  140. package/dist/cjs/components/Testimonials/Testimonials.cjs.map +1 -0
  141. package/dist/cjs/components/Testimonials/parts.cjs +2 -0
  142. package/dist/cjs/components/Testimonials/parts.cjs.map +1 -0
  143. package/dist/cjs/components/Testimonials/variants/Carousel.cjs +3 -0
  144. package/dist/cjs/components/Testimonials/variants/Carousel.cjs.map +1 -0
  145. package/dist/cjs/components/Testimonials/variants/Grid.cjs +2 -0
  146. package/dist/cjs/components/Testimonials/variants/Grid.cjs.map +1 -0
  147. package/dist/cjs/components/Testimonials/variants/Marquee.cjs +2 -0
  148. package/dist/cjs/components/Testimonials/variants/Marquee.cjs.map +1 -0
  149. package/dist/cjs/icons.cjs +2 -0
  150. package/dist/cjs/icons.cjs.map +1 -0
  151. package/dist/cjs/index.cjs +2 -0
  152. package/dist/cjs/index.cjs.map +1 -0
  153. package/dist/cjs/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.cjs +2 -0
  154. package/dist/cjs/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.cjs.map +1 -0
  155. package/dist/cjs/node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/dist/bundle-mjs.cjs +2 -0
  156. package/dist/cjs/node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/dist/bundle-mjs.cjs.map +1 -0
  157. package/dist/cjs/utils/cn.cjs +2 -0
  158. package/dist/cjs/utils/cn.cjs.map +1 -0
  159. package/dist/cjs/utils/contrast.cjs +2 -0
  160. package/dist/cjs/utils/contrast.cjs.map +1 -0
  161. package/dist/cjs/utils/iso2Flag.cjs +8 -0
  162. package/dist/cjs/utils/iso2Flag.cjs.map +1 -0
  163. package/dist/cjs/utils/useTokenForeground.cjs +3 -0
  164. package/dist/cjs/utils/useTokenForeground.cjs.map +1 -0
  165. package/dist/es/components/Badge.js +51 -0
  166. package/dist/es/components/Badge.js.map +1 -0
  167. package/dist/es/components/Blog/BlogCard.js +12 -0
  168. package/dist/es/components/Blog/BlogCard.js.map +1 -0
  169. package/dist/es/components/Blog/BlogSection.js +65 -0
  170. package/dist/es/components/Blog/BlogSection.js.map +1 -0
  171. package/dist/es/components/Blog/parts.js +29 -0
  172. package/dist/es/components/Blog/parts.js.map +1 -0
  173. package/dist/es/components/Blog/variants/Card.js +46 -0
  174. package/dist/es/components/Blog/variants/Card.js.map +1 -0
  175. package/dist/es/components/Blog/variants/Row.js +33 -0
  176. package/dist/es/components/Blog/variants/Row.js.map +1 -0
  177. package/dist/es/components/Button.js +73 -0
  178. package/dist/es/components/Button.js.map +1 -0
  179. package/dist/es/components/CTA/CTA.js +11 -0
  180. package/dist/es/components/CTA/CTA.js.map +1 -0
  181. package/dist/es/components/CTA/parts.js +26 -0
  182. package/dist/es/components/CTA/parts.js.map +1 -0
  183. package/dist/es/components/CTA/variants/Inverse.js +47 -0
  184. package/dist/es/components/CTA/variants/Inverse.js.map +1 -0
  185. package/dist/es/components/CTA/variants/Panel.js +63 -0
  186. package/dist/es/components/CTA/variants/Panel.js.map +1 -0
  187. package/dist/es/components/CTA/variants/Surface.js +28 -0
  188. package/dist/es/components/CTA/variants/Surface.js.map +1 -0
  189. package/dist/es/components/Card.js +63 -0
  190. package/dist/es/components/Card.js.map +1 -0
  191. package/dist/es/components/Container.js +58 -0
  192. package/dist/es/components/Container.js.map +1 -0
  193. package/dist/es/components/FAQ/FAQ.js +40 -0
  194. package/dist/es/components/FAQ/FAQ.js.map +1 -0
  195. package/dist/es/components/FAQ/parts.js +56 -0
  196. package/dist/es/components/FAQ/parts.js.map +1 -0
  197. package/dist/es/components/FAQ/variants/Accordion.js +43 -0
  198. package/dist/es/components/FAQ/variants/Accordion.js.map +1 -0
  199. package/dist/es/components/FAQ/variants/Cards.js +33 -0
  200. package/dist/es/components/FAQ/variants/Cards.js.map +1 -0
  201. package/dist/es/components/FAQ/variants/Split.js +35 -0
  202. package/dist/es/components/FAQ/variants/Split.js.map +1 -0
  203. package/dist/es/components/Features/FeatureCard.js +40 -0
  204. package/dist/es/components/Features/FeatureCard.js.map +1 -0
  205. package/dist/es/components/Features/FeatureGrid.js +13 -0
  206. package/dist/es/components/Features/FeatureGrid.js.map +1 -0
  207. package/dist/es/components/Features/parts.js +17 -0
  208. package/dist/es/components/Features/parts.js.map +1 -0
  209. package/dist/es/components/Features/variants/Bento.js +27 -0
  210. package/dist/es/components/Features/variants/Bento.js.map +1 -0
  211. package/dist/es/components/Features/variants/Columns.js +13 -0
  212. package/dist/es/components/Features/variants/Columns.js.map +1 -0
  213. package/dist/es/components/Features/variants/EditorialRows.js +25 -0
  214. package/dist/es/components/Features/variants/EditorialRows.js.map +1 -0
  215. package/dist/es/components/Footer/Footer.js +10 -0
  216. package/dist/es/components/Footer/Footer.js.map +1 -0
  217. package/dist/es/components/Footer/parts.js +65 -0
  218. package/dist/es/components/Footer/parts.js.map +1 -0
  219. package/dist/es/components/Footer/variants/Classic.js +43 -0
  220. package/dist/es/components/Footer/variants/Classic.js.map +1 -0
  221. package/dist/es/components/Footer/variants/Editorial.js +39 -0
  222. package/dist/es/components/Footer/variants/Editorial.js.map +1 -0
  223. package/dist/es/components/Footer/variants/Minimal.js +20 -0
  224. package/dist/es/components/Footer/variants/Minimal.js.map +1 -0
  225. package/dist/es/components/Hero/Hero.js +11 -0
  226. package/dist/es/components/Hero/Hero.js.map +1 -0
  227. package/dist/es/components/Hero/parts.js +21 -0
  228. package/dist/es/components/Hero/parts.js.map +1 -0
  229. package/dist/es/components/Hero/variants/Centered.js +41 -0
  230. package/dist/es/components/Hero/variants/Centered.js.map +1 -0
  231. package/dist/es/components/Hero/variants/Split.js +36 -0
  232. package/dist/es/components/Hero/variants/Split.js.map +1 -0
  233. package/dist/es/components/Hero/variants/Statement.js +46 -0
  234. package/dist/es/components/Hero/variants/Statement.js.map +1 -0
  235. package/dist/es/components/LanguageSwitcher/LanguageSwitcher.js +34 -0
  236. package/dist/es/components/LanguageSwitcher/LanguageSwitcher.js.map +1 -0
  237. package/dist/es/components/LanguageSwitcher/parts.js +107 -0
  238. package/dist/es/components/LanguageSwitcher/parts.js.map +1 -0
  239. package/dist/es/components/LanguageSwitcher/useLanguageSwitcher.js +13 -0
  240. package/dist/es/components/LanguageSwitcher/useLanguageSwitcher.js.map +1 -0
  241. package/dist/es/components/LanguageSwitcher/variants/Dropdown.js +87 -0
  242. package/dist/es/components/LanguageSwitcher/variants/Dropdown.js.map +1 -0
  243. package/dist/es/components/LanguageSwitcher/variants/Modal.js +54 -0
  244. package/dist/es/components/LanguageSwitcher/variants/Modal.js.map +1 -0
  245. package/dist/es/components/LogoCloud/LogoCloud.js +13 -0
  246. package/dist/es/components/LogoCloud/LogoCloud.js.map +1 -0
  247. package/dist/es/components/LogoCloud/parts.js +22 -0
  248. package/dist/es/components/LogoCloud/parts.js.map +1 -0
  249. package/dist/es/components/LogoCloud/variants/Marquee.js +18 -0
  250. package/dist/es/components/LogoCloud/variants/Marquee.js.map +1 -0
  251. package/dist/es/components/LogoCloud/variants/Quiet.js +15 -0
  252. package/dist/es/components/LogoCloud/variants/Quiet.js.map +1 -0
  253. package/dist/es/components/LogoCloud/variants/Strip.js +15 -0
  254. package/dist/es/components/LogoCloud/variants/Strip.js.map +1 -0
  255. package/dist/es/components/MegaMenu/MegaMenu.js +371 -0
  256. package/dist/es/components/MegaMenu/MegaMenu.js.map +1 -0
  257. package/dist/es/components/Modal.js +81 -0
  258. package/dist/es/components/Modal.js.map +1 -0
  259. package/dist/es/components/Navbar/Navbar.js +135 -0
  260. package/dist/es/components/Navbar/Navbar.js.map +1 -0
  261. package/dist/es/components/Newsletter/Newsletter.js +13 -0
  262. package/dist/es/components/Newsletter/Newsletter.js.map +1 -0
  263. package/dist/es/components/Newsletter/parts.js +18 -0
  264. package/dist/es/components/Newsletter/parts.js.map +1 -0
  265. package/dist/es/components/Newsletter/useNewsletterForm.js +20 -0
  266. package/dist/es/components/Newsletter/useNewsletterForm.js.map +1 -0
  267. package/dist/es/components/Newsletter/variants/Card.js +55 -0
  268. package/dist/es/components/Newsletter/variants/Card.js.map +1 -0
  269. package/dist/es/components/Newsletter/variants/Inline.js +51 -0
  270. package/dist/es/components/Newsletter/variants/Inline.js.map +1 -0
  271. package/dist/es/components/Newsletter/variants/Underline.js +51 -0
  272. package/dist/es/components/Newsletter/variants/Underline.js.map +1 -0
  273. package/dist/es/components/Pricing/Pricing.js +32 -0
  274. package/dist/es/components/Pricing/Pricing.js.map +1 -0
  275. package/dist/es/components/Pricing/parts.js +119 -0
  276. package/dist/es/components/Pricing/parts.js.map +1 -0
  277. package/dist/es/components/Pricing/variants/Bento.js +47 -0
  278. package/dist/es/components/Pricing/variants/Bento.js.map +1 -0
  279. package/dist/es/components/Pricing/variants/Cards.js +49 -0
  280. package/dist/es/components/Pricing/variants/Cards.js.map +1 -0
  281. package/dist/es/components/Pricing/variants/Compact.js +49 -0
  282. package/dist/es/components/Pricing/variants/Compact.js.map +1 -0
  283. package/dist/es/components/Prose.js +36 -0
  284. package/dist/es/components/Prose.js.map +1 -0
  285. package/dist/es/components/Section.js +69 -0
  286. package/dist/es/components/Section.js.map +1 -0
  287. package/dist/es/components/Slot.js +33 -0
  288. package/dist/es/components/Slot.js.map +1 -0
  289. package/dist/es/components/Stats/Stats.js +14 -0
  290. package/dist/es/components/Stats/Stats.js.map +1 -0
  291. package/dist/es/components/Stats/parts.js +32 -0
  292. package/dist/es/components/Stats/parts.js.map +1 -0
  293. package/dist/es/components/Stats/variants/Cells.js +28 -0
  294. package/dist/es/components/Stats/variants/Cells.js.map +1 -0
  295. package/dist/es/components/Stats/variants/Editorial.js +32 -0
  296. package/dist/es/components/Stats/variants/Editorial.js.map +1 -0
  297. package/dist/es/components/Stats/variants/Hairline.js +25 -0
  298. package/dist/es/components/Stats/variants/Hairline.js.map +1 -0
  299. package/dist/es/components/Stats/variants/Ticker.js +29 -0
  300. package/dist/es/components/Stats/variants/Ticker.js.map +1 -0
  301. package/dist/es/components/Testimonials/TestimonialCard.js +50 -0
  302. package/dist/es/components/Testimonials/TestimonialCard.js.map +1 -0
  303. package/dist/es/components/Testimonials/Testimonials.js +13 -0
  304. package/dist/es/components/Testimonials/Testimonials.js.map +1 -0
  305. package/dist/es/components/Testimonials/parts.js +5 -0
  306. package/dist/es/components/Testimonials/parts.js.map +1 -0
  307. package/dist/es/components/Testimonials/variants/Carousel.js +83 -0
  308. package/dist/es/components/Testimonials/variants/Carousel.js.map +1 -0
  309. package/dist/es/components/Testimonials/variants/Grid.js +12 -0
  310. package/dist/es/components/Testimonials/variants/Grid.js.map +1 -0
  311. package/dist/es/components/Testimonials/variants/Marquee.js +15 -0
  312. package/dist/es/components/Testimonials/variants/Marquee.js.map +1 -0
  313. package/dist/es/icons.js +158 -0
  314. package/dist/es/icons.js.map +1 -0
  315. package/dist/es/index.js +106 -0
  316. package/dist/es/index.js.map +1 -0
  317. package/dist/es/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js +17 -0
  318. package/dist/es/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js.map +1 -0
  319. package/dist/es/node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/dist/bundle-mjs.js +2266 -0
  320. package/dist/es/node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
  321. package/dist/es/utils/cn.js +9 -0
  322. package/dist/es/utils/cn.js.map +1 -0
  323. package/dist/es/utils/contrast.js +48 -0
  324. package/dist/es/utils/contrast.js.map +1 -0
  325. package/dist/es/utils/iso2Flag.js +17 -0
  326. package/dist/es/utils/iso2Flag.js.map +1 -0
  327. package/dist/es/utils/useTokenForeground.js +28 -0
  328. package/dist/es/utils/useTokenForeground.js.map +1 -0
  329. package/package.json +5 -5
  330. package/dist/index.cjs +0 -8
  331. package/dist/index.cjs.map +0 -1
  332. package/dist/index.js +0 -5128
  333. package/dist/index.js.map +0 -1
@@ -0,0 +1,46 @@
1
+ import { jsxs as t, jsx as r } from "react/jsx-runtime";
2
+ import { forwardRef as s } from "react";
3
+ import { cn as m } from "../../../utils/cn.js";
4
+ import { ArrowRight as c } from "../../../icons.js";
5
+ import { Badge as f } from "../../Badge.js";
6
+ import { Cover as u, AuthorMark as x } from "../parts.js";
7
+ const g = s(
8
+ ({ className: o, post: e, LinkComponent: n, ...l }, d) => {
9
+ const i = n ?? "a", a = e.author;
10
+ return /* @__PURE__ */ t(
11
+ i,
12
+ {
13
+ ref: d,
14
+ href: e.href ?? "#",
15
+ className: m(
16
+ "group flex h-full cursor-pointer flex-col overflow-hidden rounded-xl border border-border bg-surface transition-colors duration-200 hover:border-foreground/20",
17
+ o
18
+ ),
19
+ ...l,
20
+ children: [
21
+ /* @__PURE__ */ r("div", { className: "overflow-hidden", children: /* @__PURE__ */ r(u, { post: e }) }),
22
+ /* @__PURE__ */ t("div", { className: "flex flex-1 flex-col p-6", children: [
23
+ /* @__PURE__ */ t("div", { className: "flex items-center justify-between gap-3", children: [
24
+ e.category ? /* @__PURE__ */ r(f, { variant: "soft", size: "sm", children: e.category }) : /* @__PURE__ */ r("span", {}),
25
+ e.readTime ? /* @__PURE__ */ r("span", { className: "text-xs text-muted-foreground", children: e.readTime }) : null
26
+ ] }),
27
+ /* @__PURE__ */ r("h3", { className: "mt-4 font-display text-lg font-semibold leading-snug tracking-tight text-foreground sm:text-xl", children: e.title }),
28
+ e.excerpt ? /* @__PURE__ */ r("p", { className: "mt-2.5 line-clamp-2 text-sm leading-6 text-muted-foreground", children: e.excerpt }) : null,
29
+ /* @__PURE__ */ t("div", { className: "mt-5 flex items-center justify-between gap-3 border-t border-border pt-4", children: [
30
+ a ? /* @__PURE__ */ t("span", { className: "flex min-w-0 items-center gap-2.5", children: [
31
+ /* @__PURE__ */ r(x, { name: a.name, avatar: a.avatar }),
32
+ /* @__PURE__ */ r("span", { className: "truncate text-xs font-medium text-foreground", children: a.name })
33
+ ] }) : /* @__PURE__ */ r("span", { className: "text-xs tabular-nums text-muted-foreground", children: e.date }),
34
+ /* @__PURE__ */ r(c, { className: "h-4 w-4 text-foreground/35 transition-all duration-200 group-hover:translate-x-0.5 group-hover:text-foreground" })
35
+ ] })
36
+ ] })
37
+ ]
38
+ }
39
+ );
40
+ }
41
+ );
42
+ g.displayName = "BlogCardCard";
43
+ export {
44
+ g as BlogCardCard
45
+ };
46
+ //# sourceMappingURL=Card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.js","sources":["../../../../../src/components/Blog/variants/Card.tsx"],"sourcesContent":["import { forwardRef, type ElementType } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { ArrowRight } from \"../../../icons\";\nimport { Badge } from \"../../Badge\";\nimport { AuthorMark, Cover } from \"../parts\";\nimport type { BlogPost } from \"../types\";\n\ninterface BlogCardCardProps {\n post: BlogPost;\n LinkComponent?: ElementType;\n className?: string;\n}\n\nexport const BlogCardCard = forwardRef<HTMLAnchorElement, BlogCardCardProps>(\n ({ className, post, LinkComponent, ...props }, ref) => {\n const Link = LinkComponent ?? \"a\";\n const author = post.author;\n return (\n <Link\n ref={ref}\n href={post.href ?? \"#\"}\n className={cn(\n \"group flex h-full cursor-pointer flex-col overflow-hidden rounded-xl border border-border bg-surface transition-colors duration-200 hover:border-foreground/20\",\n className,\n )}\n {...props}\n >\n <div className=\"overflow-hidden\">\n <Cover post={post} />\n </div>\n <div className=\"flex flex-1 flex-col p-6\">\n <div className=\"flex items-center justify-between gap-3\">\n {post.category ? <Badge variant=\"soft\" size=\"sm\">{post.category}</Badge> : <span />}\n {post.readTime ? (\n <span className=\"text-xs text-muted-foreground\">{post.readTime}</span>\n ) : null}\n </div>\n <h3 className=\"mt-4 font-display text-lg font-semibold leading-snug tracking-tight text-foreground sm:text-xl\">\n {post.title}\n </h3>\n {post.excerpt ? (\n <p className=\"mt-2.5 line-clamp-2 text-sm leading-6 text-muted-foreground\">\n {post.excerpt}\n </p>\n ) : null}\n <div className=\"mt-5 flex items-center justify-between gap-3 border-t border-border pt-4\">\n {author ? (\n <span className=\"flex min-w-0 items-center gap-2.5\">\n <AuthorMark name={author.name} avatar={author.avatar} />\n <span className=\"truncate text-xs font-medium text-foreground\">{author.name}</span>\n </span>\n ) : (\n <span className=\"text-xs tabular-nums text-muted-foreground\">{post.date}</span>\n )}\n <ArrowRight className=\"h-4 w-4 text-foreground/35 transition-all duration-200 group-hover:translate-x-0.5 group-hover:text-foreground\" />\n </div>\n </div>\n </Link>\n );\n },\n);\nBlogCardCard.displayName = \"BlogCardCard\";"],"names":["BlogCardCard","forwardRef","className","post","LinkComponent","props","ref","Link","author","jsxs","cn","jsx","Cover","Badge","AuthorMark","ArrowRight"],"mappings":";;;;;;AAaO,MAAMA,IAAeC;AAAA,EAC1B,CAAC,EAAE,WAAAC,GAAW,MAAAC,GAAM,eAAAC,GAAe,GAAGC,EAAA,GAASC,MAAQ;AACrD,UAAMC,IAAOH,KAAiB,KACxBI,IAASL,EAAK;AACpB,WACE,gBAAAM;AAAA,MAACF;AAAA,MAAA;AAAA,QACC,KAAAD;AAAA,QACA,MAAMH,EAAK,QAAQ;AAAA,QACnB,WAAWO;AAAA,UACT;AAAA,UACAR;AAAA,QAAA;AAAA,QAED,GAAGG;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAM,EAAC,SAAI,WAAU,mBACb,UAAA,gBAAAA,EAACC,GAAA,EAAM,MAAAT,GAAY,GACrB;AAAA,UACA,gBAAAM,EAAC,OAAA,EAAI,WAAU,4BACb,UAAA;AAAA,YAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,2CACZ,UAAA;AAAA,cAAAN,EAAK,WAAW,gBAAAQ,EAACE,GAAA,EAAM,SAAQ,QAAO,MAAK,MAAM,UAAAV,EAAK,SAAA,CAAS,IAAW,gBAAAQ,EAAC,QAAA,EAAK;AAAA,cAChFR,EAAK,WACJ,gBAAAQ,EAAC,QAAA,EAAK,WAAU,iCAAiC,UAAAR,EAAK,UAAS,IAC7D;AAAA,YAAA,GACN;AAAA,YACA,gBAAAQ,EAAC,MAAA,EAAG,WAAU,kGACX,YAAK,OACR;AAAA,YACCR,EAAK,UACJ,gBAAAQ,EAAC,KAAA,EAAE,WAAU,+DACV,UAAAR,EAAK,SACR,IACE;AAAA,YACJ,gBAAAM,EAAC,OAAA,EAAI,WAAU,4EACZ,UAAA;AAAA,cAAAD,IACC,gBAAAC,EAAC,QAAA,EAAK,WAAU,qCACd,UAAA;AAAA,gBAAA,gBAAAE,EAACG,KAAW,MAAMN,EAAO,MAAM,QAAQA,EAAO,QAAQ;AAAA,gBACtD,gBAAAG,EAAC,QAAA,EAAK,WAAU,gDAAgD,YAAO,KAAA,CAAK;AAAA,cAAA,GAC9E,IAEA,gBAAAA,EAAC,QAAA,EAAK,WAAU,8CAA8C,YAAK,MAAK;AAAA,cAE1E,gBAAAA,EAACI,GAAA,EAAW,WAAU,iHAAA,CAAiH;AAAA,YAAA,EAAA,CACzI;AAAA,UAAA,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AACAf,EAAa,cAAc;"}
@@ -0,0 +1,33 @@
1
+ import { jsxs as e, jsx as t } from "react/jsx-runtime";
2
+ import { forwardRef as l } from "react";
3
+ import { cn as s } from "../../../utils/cn.js";
4
+ import { ArrowUpRight as m } from "../../../icons.js";
5
+ const d = l(
6
+ ({ className: a, post: r, LinkComponent: o, ...n }, i) => /* @__PURE__ */ e(
7
+ o ?? "a",
8
+ {
9
+ ref: i,
10
+ href: r.href ?? "#",
11
+ className: s("group flex cursor-pointer items-baseline gap-5 py-6", a),
12
+ ...n,
13
+ children: [
14
+ /* @__PURE__ */ e("div", { className: "min-w-0 flex-1", children: [
15
+ /* @__PURE__ */ e("div", { className: "flex items-center gap-3", children: [
16
+ r.category ? /* @__PURE__ */ t("span", { className: "rounded-full bg-primary-soft px-2.5 py-0.5 text-xs font-semibold text-primary", children: r.category }) : null,
17
+ /* @__PURE__ */ e("span", { className: "text-xs tabular-nums text-muted-foreground", children: [
18
+ r.date,
19
+ r.readTime ? ` · ${r.readTime}` : ""
20
+ ] })
21
+ ] }),
22
+ /* @__PURE__ */ t("h3", { className: "mt-2.5 font-display text-xl font-semibold tracking-tight text-foreground transition-transform duration-200 group-hover:translate-x-1 sm:text-2xl", children: r.title })
23
+ ] }),
24
+ /* @__PURE__ */ t("span", { className: "text-foreground/30 transition-all duration-200 group-hover:translate-x-0.5 group-hover:text-foreground", children: /* @__PURE__ */ t(m, { className: "h-5 w-5" }) })
25
+ ]
26
+ }
27
+ )
28
+ );
29
+ d.displayName = "BlogCardRow";
30
+ export {
31
+ d as BlogCardRow
32
+ };
33
+ //# sourceMappingURL=Row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Row.js","sources":["../../../../../src/components/Blog/variants/Row.tsx"],"sourcesContent":["import { forwardRef, type ElementType } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { ArrowUpRight } from \"../../../icons\";\nimport type { BlogPost } from \"../types\";\n\ninterface BlogCardRowProps {\n post: BlogPost;\n LinkComponent?: ElementType;\n className?: string;\n}\n\nexport const BlogCardRow = forwardRef<HTMLAnchorElement, BlogCardRowProps>(\n ({ className, post, LinkComponent, ...props }, ref) => {\n const Link = LinkComponent ?? \"a\";\n return (\n <Link\n ref={ref}\n href={post.href ?? \"#\"}\n className={cn(\"group flex cursor-pointer items-baseline gap-5 py-6\", className)}\n {...props}\n >\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-3\">\n {post.category ? <span className=\"rounded-full bg-primary-soft px-2.5 py-0.5 text-xs font-semibold text-primary\">{post.category}</span> : null}\n <span className=\"text-xs tabular-nums text-muted-foreground\">\n {post.date}\n {post.readTime ? ` · ${post.readTime}` : \"\"}\n </span>\n </div>\n <h3 className=\"mt-2.5 font-display text-xl font-semibold tracking-tight text-foreground transition-transform duration-200 group-hover:translate-x-1 sm:text-2xl\">\n {post.title}\n </h3>\n </div>\n <span className=\"text-foreground/30 transition-all duration-200 group-hover:translate-x-0.5 group-hover:text-foreground\">\n <ArrowUpRight className=\"h-5 w-5\" />\n </span>\n </Link>\n );\n },\n);\nBlogCardRow.displayName = \"BlogCardRow\";"],"names":["BlogCardRow","forwardRef","className","post","LinkComponent","props","ref","jsxs","cn","jsx","ArrowUpRight"],"mappings":";;;;AAWO,MAAMA,IAAcC;AAAA,EACzB,CAAC,EAAE,WAAAC,GAAW,MAAAC,GAAM,eAAAC,GAAe,GAAGC,EAAA,GAASC,MAG3C,gBAAAC;AAAA,IAFWH,KAAiB;AAAA,IAE3B;AAAA,MACC,KAAAE;AAAA,MACA,MAAMH,EAAK,QAAQ;AAAA,MACnB,WAAWK,EAAG,uDAAuDN,CAAS;AAAA,MAC7E,GAAGG;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,UAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,YAAAJ,EAAK,WAAW,gBAAAM,EAAC,QAAA,EAAK,WAAU,iFAAiF,UAAAN,EAAK,UAAS,IAAU;AAAA,YAC1I,gBAAAI,EAAC,QAAA,EAAK,WAAU,8CACb,UAAA;AAAA,cAAAJ,EAAK;AAAA,cACLA,EAAK,WAAW,MAAMA,EAAK,QAAQ,KAAK;AAAA,YAAA,EAAA,CAC3C;AAAA,UAAA,GACF;AAAA,UACA,gBAAAM,EAAC,MAAA,EAAG,WAAU,oJACX,YAAK,MAAA,CACR;AAAA,QAAA,GACF;AAAA,QACA,gBAAAA,EAAC,UAAK,WAAU,0GACd,4BAACC,GAAA,EAAa,WAAU,WAAU,EAAA,CACpC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;AACAV,EAAY,cAAc;"}
@@ -0,0 +1,73 @@
1
+ import { jsx as o, jsxs as x } from "react/jsx-runtime";
2
+ import { forwardRef as v } from "react";
3
+ import { cn as t } from "../utils/cn.js";
4
+ import { getContrastText as y } from "../utils/contrast.js";
5
+ import { Slot as k } from "./Slot.js";
6
+ const N = {
7
+ primary: "bg-primary text-on-primary hover:bg-primary-hover",
8
+ dark: "bg-secondary text-on-secondary hover:bg-secondary-hover",
9
+ outline: "border border-border bg-transparent text-foreground hover:border-foreground/30 hover:bg-surface",
10
+ ghost: "text-foreground hover:bg-surface",
11
+ link: "px-0 h-auto text-primary hover:text-primary-hover"
12
+ }, j = {
13
+ sm: "h-9 px-4 text-[13px] gap-1.5",
14
+ md: "h-11 px-5 text-sm gap-2",
15
+ lg: "h-12 px-7 text-[15px] gap-2"
16
+ }, w = "group inline-flex select-none items-center justify-center rounded-lg font-medium tracking-tight transition-[background-color,border-color,color,box-shadow] duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 cursor-pointer", B = v(
17
+ ({
18
+ className: g,
19
+ variant: n = "primary",
20
+ size: m = "md",
21
+ iconLeft: s,
22
+ iconRight: i,
23
+ customColor: r,
24
+ fullWidth: b,
25
+ asChild: f,
26
+ style: a,
27
+ type: h = "button",
28
+ children: l,
29
+ ...c
30
+ }, d) => {
31
+ const u = r ? {
32
+ ...a,
33
+ backgroundColor: r,
34
+ color: y(r)
35
+ } : a, e = n === "link", p = t(
36
+ w,
37
+ j[m],
38
+ r ? "hover:brightness-95" : N[n],
39
+ e && "underline-offset-4 hover:underline",
40
+ b && "w-full",
41
+ g
42
+ );
43
+ return f ? /* @__PURE__ */ o(k, { ref: d, style: u, className: p, ...c, children: l }) : /* @__PURE__ */ x(
44
+ "button",
45
+ {
46
+ ref: d,
47
+ type: h,
48
+ style: u,
49
+ className: p,
50
+ ...c,
51
+ children: [
52
+ s ? /* @__PURE__ */ o("span", { className: t("shrink-0", !e && "opacity-70"), children: s }) : null,
53
+ l,
54
+ i ? /* @__PURE__ */ o(
55
+ "span",
56
+ {
57
+ className: t(
58
+ "shrink-0 transition-transform duration-200",
59
+ !e && "opacity-70 group-hover:translate-x-0.5"
60
+ ),
61
+ children: i
62
+ }
63
+ ) : null
64
+ ]
65
+ }
66
+ );
67
+ }
68
+ );
69
+ B.displayName = "Button";
70
+ export {
71
+ B as Button
72
+ };
73
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","sources":["../../../src/components/Button.tsx"],"sourcesContent":["import { forwardRef, type ButtonHTMLAttributes, type CSSProperties, type ReactNode } from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { getContrastText } from \"../utils/contrast\";\nimport { Slot } from \"./Slot\";\n\nexport type ButtonVariant = \"primary\" | \"dark\" | \"outline\" | \"ghost\" | \"link\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n iconLeft?: ReactNode;\n iconRight?: ReactNode;\n /** Paints the button with an arbitrary CSS color; text color is computed for contrast. */\n customColor?: string;\n fullWidth?: boolean;\n /**\n * When `true`, the button styling is applied to a single child element\n * instead of a `<button>`. Use it to render a framework router `<Link>`\n * (Next.js, Remix, React Router…). `iconLeft` / `iconRight` are ignored;\n * pass icons inside the child instead.\n */\n asChild?: boolean;\n}\n\nconst variants: Record<ButtonVariant, string> = {\n primary: \"bg-primary text-on-primary hover:bg-primary-hover\",\n dark: \"bg-secondary text-on-secondary hover:bg-secondary-hover\",\n outline:\n \"border border-border bg-transparent text-foreground hover:border-foreground/30 hover:bg-surface\",\n ghost: \"text-foreground hover:bg-surface\",\n link: \"px-0 h-auto text-primary hover:text-primary-hover\",\n};\n\nconst sizes: Record<ButtonSize, string> = {\n sm: \"h-9 px-4 text-[13px] gap-1.5\",\n md: \"h-11 px-5 text-sm gap-2\",\n lg: \"h-12 px-7 text-[15px] gap-2\",\n};\n\nconst base =\n \"group inline-flex select-none items-center justify-center rounded-lg font-medium tracking-tight transition-[background-color,border-color,color,box-shadow] duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 cursor-pointer\";\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n size = \"md\",\n iconLeft,\n iconRight,\n customColor,\n fullWidth,\n asChild,\n style,\n type = \"button\",\n children,\n ...props\n },\n ref,\n ) => {\n const customStyle: CSSProperties | undefined = customColor\n ? {\n ...style,\n backgroundColor: customColor,\n color: getContrastText(customColor),\n }\n : style;\n\n const isLink = variant === \"link\";\n\n const classes = cn(\n base,\n sizes[size],\n customColor ? \"hover:brightness-95\" : variants[variant],\n isLink && \"underline-offset-4 hover:underline\",\n fullWidth && \"w-full\",\n className,\n );\n\n if (asChild) {\n return (\n <Slot ref={ref} style={customStyle} className={classes} {...props}>\n {children}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n type={type}\n style={customStyle}\n className={classes}\n {...props}\n >\n {iconLeft ? <span className={cn(\"shrink-0\", !isLink && \"opacity-70\")}>{iconLeft}</span> : null}\n {children}\n {iconRight ? (\n <span\n className={cn(\n \"shrink-0 transition-transform duration-200\",\n !isLink && \"opacity-70 group-hover:translate-x-0.5\",\n )}\n >\n {iconRight}\n </span>\n ) : null}\n </button>\n );\n },\n);\nButton.displayName = \"Button\";"],"names":["variants","sizes","base","Button","forwardRef","className","variant","size","iconLeft","iconRight","customColor","fullWidth","asChild","style","type","children","props","ref","customStyle","getContrastText","isLink","classes","cn","jsx","Slot","jsxs"],"mappings":";;;;;AAyBA,MAAMA,IAA0C;AAAA,EAC9C,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SACE;AAAA,EACF,OAAO;AAAA,EACP,MAAM;AACR,GAEMC,IAAoC;AAAA,EACxC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEMC,IACJ,qXAEWC,IAASC;AAAA,EACpB,CACE;AAAA,IACE,WAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,MAAAC,IAAO;AAAA,IACP,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,aAAAC;AAAA,IACA,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAyCR,IAC3C;AAAA,MACE,GAAGG;AAAA,MACH,iBAAiBH;AAAA,MACjB,OAAOS,EAAgBT,CAAW;AAAA,IAAA,IAEpCG,GAEEO,IAASd,MAAY,QAErBe,IAAUC;AAAA,MACdpB;AAAA,MACAD,EAAMM,CAAI;AAAA,MACVG,IAAc,wBAAwBV,EAASM,CAAO;AAAA,MACtDc,KAAU;AAAA,MACVT,KAAa;AAAA,MACbN;AAAA,IAAA;AAGF,WAAIO,IAEA,gBAAAW,EAACC,KAAK,KAAAP,GAAU,OAAOC,GAAa,WAAWG,GAAU,GAAGL,GACzD,UAAAD,EAAA,CACH,IAKF,gBAAAU;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAR;AAAA,QACA,MAAAH;AAAA,QACA,OAAOI;AAAA,QACP,WAAWG;AAAA,QACV,GAAGL;AAAA,QAEH,UAAA;AAAA,UAAAR,IAAW,gBAAAe,EAAC,QAAA,EAAK,WAAWD,EAAG,YAAY,CAACF,KAAU,YAAY,GAAI,UAAAZ,EAAA,CAAS,IAAU;AAAA,UACzFO;AAAA,UACAN,IACC,gBAAAc;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWD;AAAA,gBACT;AAAA,gBACA,CAACF,KAAU;AAAA,cAAA;AAAA,cAGZ,UAAAX;AAAA,YAAA;AAAA,UAAA,IAED;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AACAN,EAAO,cAAc;"}
@@ -0,0 +1,11 @@
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import { forwardRef as o } from "react";
3
+ import { CTAPanel as t } from "./variants/Panel.js";
4
+ import { CTASurface as i } from "./variants/Surface.js";
5
+ import { CTAInverse as a } from "./variants/Inverse.js";
6
+ const n = o(({ option: f = "panel", ...r }, e) => f === "surface" ? /* @__PURE__ */ m(i, { ref: e, ...r }) : f === "inverse" ? /* @__PURE__ */ m(a, { ref: e, ...r }) : /* @__PURE__ */ m(t, { ref: e, ...r }));
7
+ n.displayName = "CTA";
8
+ export {
9
+ n as CTA
10
+ };
11
+ //# sourceMappingURL=CTA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CTA.js","sources":["../../../../src/components/CTA/CTA.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { CTAProps } from \"./types\";\nimport { CTAPanel } from \"./variants/Panel\";\nimport { CTASurface } from \"./variants/Surface\";\nimport { CTAInverse } from \"./variants/Inverse\";\n\nexport const CTA = forwardRef<HTMLElement, CTAProps>(({ option = \"panel\", ...props }, ref) => {\n if (option === \"surface\") return <CTASurface ref={ref} {...props} />;\n if (option === \"inverse\") return <CTAInverse ref={ref} {...props} />;\n return <CTAPanel ref={ref} {...props} />;\n});\nCTA.displayName = \"CTA\";"],"names":["CTA","forwardRef","option","props","ref","CTASurface","CTAInverse","jsx","CTAPanel"],"mappings":";;;;;AAMO,MAAMA,IAAMC,EAAkC,CAAC,EAAE,QAAAC,IAAS,SAAS,GAAGC,EAAA,GAASC,MAChFF,MAAW,8BAAmBG,GAAA,EAAW,KAAAD,GAAW,GAAGD,GAAO,IAC9DD,MAAW,8BAAmBI,GAAA,EAAW,KAAAF,GAAW,GAAGD,GAAO,IAC3D,gBAAAI,EAACC,GAAA,EAAS,KAAAJ,GAAW,GAAGD,EAAA,CAAO,CACvC;AACDH,EAAI,cAAc;"}
@@ -0,0 +1,26 @@
1
+ import { jsxs as c } from "react/jsx-runtime";
2
+ import { cn as i } from "../../utils/cn.js";
3
+ function f({
4
+ action: e,
5
+ secondaryAction: r,
6
+ align: t,
7
+ actionClassName: n = "flex flex-wrap items-center gap-4"
8
+ }) {
9
+ return /* @__PURE__ */ c(
10
+ "div",
11
+ {
12
+ className: i(
13
+ n,
14
+ t === "center" && "justify-center"
15
+ ),
16
+ children: [
17
+ e,
18
+ r
19
+ ]
20
+ }
21
+ );
22
+ }
23
+ export {
24
+ f as CTAActions
25
+ };
26
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sources":["../../../../src/components/CTA/parts.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport function CTAActions({\n action,\n secondaryAction,\n align,\n actionClassName = \"flex flex-wrap items-center gap-4\",\n}: {\n action?: ReactNode;\n secondaryAction?: ReactNode;\n align?: \"left\" | \"center\";\n actionClassName?: string;\n}) {\n return (\n <div\n className={cn(\n actionClassName,\n align === \"center\" && \"justify-center\",\n )}\n >\n {action}\n {secondaryAction}\n </div>\n );\n}"],"names":["CTAActions","action","secondaryAction","align","actionClassName","jsxs","cn"],"mappings":";;AAGO,SAASA,EAAW;AAAA,EACzB,QAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,iBAAAC,IAAkB;AACpB,GAKG;AACD,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACTF;AAAA,QACAD,MAAU,YAAY;AAAA,MAAA;AAAA,MAGvB,UAAA;AAAA,QAAAF;AAAA,QACAC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,47 @@
1
+ "use client";
2
+ import { jsx as e, jsxs as o } from "react/jsx-runtime";
3
+ import { forwardRef as p } from "react";
4
+ import { cn as t } from "../../../utils/cn.js";
5
+ import { Container as f } from "../../Container.js";
6
+ import { useTokenForeground as u } from "../../../utils/useTokenForeground.js";
7
+ import { CTAActions as v } from "../parts.js";
8
+ const y = p(
9
+ ({ className: n, title: s, description: l, action: a, secondaryAction: m, align: r = "left", id: i, ...c }, d) => {
10
+ const x = u("--color-secondary");
11
+ return /* @__PURE__ */ e("section", { ref: d, id: i, className: t("w-full py-6 pb-20", n), ...c, children: /* @__PURE__ */ e(f, { children: /* @__PURE__ */ o(
12
+ "div",
13
+ {
14
+ className: "relative overflow-hidden rounded-[1.75rem] px-7 py-16 sm:px-16 sm:py-20",
15
+ style: {
16
+ backgroundColor: "rgb(var(--color-secondary))",
17
+ color: x
18
+ },
19
+ children: [
20
+ /* @__PURE__ */ e("div", { "aria-hidden": !0, className: "pointer-events-none absolute inset-0 grain opacity-[0.09] mix-blend-overlay" }),
21
+ /* @__PURE__ */ o(
22
+ "div",
23
+ {
24
+ className: t(
25
+ "relative flex flex-col items-start gap-10",
26
+ r === "center" && "items-center text-center",
27
+ "lg:flex-row lg:items-end lg:justify-between"
28
+ ),
29
+ children: [
30
+ /* @__PURE__ */ o("div", { className: t("max-w-3xl", r === "center" && "mx-auto"), children: [
31
+ /* @__PURE__ */ e("h2", { className: "font-display text-balance text-4xl font-semibold leading-[1.02] tracking-[-0.03em] sm:text-6xl", children: s }),
32
+ l ? /* @__PURE__ */ e("p", { className: t("mt-5 max-w-xl text-pretty text-base leading-7 sm:text-lg", r === "center" && "mx-auto"), children: l }) : null
33
+ ] }),
34
+ /* @__PURE__ */ e(v, { action: a, secondaryAction: m, align: r })
35
+ ]
36
+ }
37
+ )
38
+ ]
39
+ }
40
+ ) }) });
41
+ }
42
+ );
43
+ y.displayName = "CTAInverse";
44
+ export {
45
+ y as CTAInverse
46
+ };
47
+ //# sourceMappingURL=Inverse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Inverse.js","sources":["../../../../../src/components/CTA/variants/Inverse.tsx"],"sourcesContent":["\"use client\";\nimport { forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { Container } from \"../../Container\";\nimport { useTokenForeground } from \"../../../utils/useTokenForeground\";\nimport { CTAActions } from \"../parts\";\nimport type { CTAProps } from \"../types\";\n\n/** inverse — ink panel with a wide left-aligned split. */\nexport const CTAInverse = forwardRef<HTMLElement, CTAProps>(\n ({ className, title, description, action, secondaryAction, align = \"left\", id, ...props }, ref) => {\n const fg = useTokenForeground(\"--color-secondary\");\n\n return (\n <section ref={ref} id={id} className={cn(\"w-full py-6 pb-20\", className)} {...props}>\n <Container>\n <div\n className=\"relative overflow-hidden rounded-[1.75rem] px-7 py-16 sm:px-16 sm:py-20\"\n style={{\n backgroundColor: \"rgb(var(--color-secondary))\",\n color: fg,\n }}\n >\n <div aria-hidden className=\"pointer-events-none absolute inset-0 grain opacity-[0.09] mix-blend-overlay\" />\n <div\n className={cn(\n \"relative flex flex-col items-start gap-10\",\n align === \"center\" && \"items-center text-center\",\n \"lg:flex-row lg:items-end lg:justify-between\",\n )}\n >\n <div className={cn(\"max-w-3xl\", align === \"center\" && \"mx-auto\")}>\n <h2 className=\"font-display text-balance text-4xl font-semibold leading-[1.02] tracking-[-0.03em] sm:text-6xl\">\n {title}\n </h2>\n {description ? (\n <p className={cn(\"mt-5 max-w-xl text-pretty text-base leading-7 sm:text-lg\", align === \"center\" && \"mx-auto\")}>\n {description}\n </p>\n ) : null}\n </div>\n <CTAActions action={action} secondaryAction={secondaryAction} align={align} />\n </div>\n </div>\n </Container>\n </section>\n );\n },\n);\nCTAInverse.displayName = \"CTAInverse\";"],"names":["CTAInverse","forwardRef","className","title","description","action","secondaryAction","align","id","props","ref","fg","useTokenForeground","jsx","cn","Container","jsxs","CTAActions"],"mappings":";;;;;;AASO,MAAMA,IAAaC;AAAA,EACxB,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,aAAAC,GAAa,QAAAC,GAAQ,iBAAAC,GAAiB,OAAAC,IAAQ,QAAQ,IAAAC,GAAI,GAAGC,EAAA,GAASC,MAAQ;AACjG,UAAMC,IAAKC,EAAmB,mBAAmB;AAEjD,WACE,gBAAAC,EAAC,WAAA,EAAQ,KAAAH,GAAU,IAAAF,GAAQ,WAAWM,EAAG,qBAAqBZ,CAAS,GAAI,GAAGO,GAC5E,UAAA,gBAAAI,EAACE,GAAA,EACC,UAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO;AAAA,UACL,iBAAiB;AAAA,UACjB,OAAOL;AAAA,QAAA;AAAA,QAGT,UAAA;AAAA,UAAA,gBAAAE,EAAC,OAAA,EAAI,eAAW,IAAC,WAAU,+EAA8E;AAAA,UACzG,gBAAAG;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWF;AAAA,gBACT;AAAA,gBACAP,MAAU,YAAY;AAAA,gBACtB;AAAA,cAAA;AAAA,cAGF,UAAA;AAAA,gBAAA,gBAAAS,EAAC,SAAI,WAAWF,EAAG,aAAaP,MAAU,YAAY,SAAS,GAC7D,UAAA;AAAA,kBAAA,gBAAAM,EAAC,MAAA,EAAG,WAAU,kGACX,UAAAV,GACH;AAAA,kBACCC,IACC,gBAAAS,EAAC,KAAA,EAAE,WAAWC,EAAG,4DAA4DP,MAAU,YAAY,SAAS,GACzG,UAAAH,EAAA,CACH,IACE;AAAA,gBAAA,GACN;AAAA,gBACA,gBAAAS,EAACI,GAAA,EAAW,QAAAZ,GAAgB,iBAAAC,GAAkC,OAAAC,EAAA,CAAc;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAC9E;AAAA,MAAA;AAAA,IAAA,GAEJ,EAAA,CACF;AAAA,EAEJ;AACF;AACAP,EAAW,cAAc;"}
@@ -0,0 +1,63 @@
1
+ "use client";
2
+ import { jsx as e, jsxs as a } from "react/jsx-runtime";
3
+ import { forwardRef as x } from "react";
4
+ import { cn as t } from "../../../utils/cn.js";
5
+ import { Container as f } from "../../Container.js";
6
+ import { useTokenForeground as u } from "../../../utils/useTokenForeground.js";
7
+ import { CTAActions as v } from "../parts.js";
8
+ const y = x(
9
+ ({ className: l, title: n, description: o, action: i, secondaryAction: s, align: r = "left", id: m, ...c }, d) => {
10
+ const p = u("--color-primary");
11
+ return /* @__PURE__ */ e("section", { ref: d, id: m, className: t("w-full py-6 pb-20", l), ...c, children: /* @__PURE__ */ e(f, { children: /* @__PURE__ */ a(
12
+ "div",
13
+ {
14
+ className: "relative overflow-hidden rounded-[1.75rem] px-7 py-14 sm:px-14 sm:py-20",
15
+ style: {
16
+ background: "radial-gradient(120% 160% at 0% 0%, rgb(var(--color-primary)), rgb(var(--color-primary-hover)) 55%, rgb(var(--color-primary) / 0.85))",
17
+ color: p
18
+ },
19
+ children: [
20
+ /* @__PURE__ */ e("div", { "aria-hidden": !0, className: "pointer-events-none absolute inset-0 grain opacity-[0.07] mix-blend-overlay" }),
21
+ /* @__PURE__ */ e(
22
+ "div",
23
+ {
24
+ "aria-hidden": !0,
25
+ className: "pointer-events-none absolute -right-24 -top-24 h-72 w-72 rounded-full",
26
+ style: { background: "rgb(var(--color-accent))", opacity: 0.35, filter: "blur(60px)" }
27
+ }
28
+ ),
29
+ /* @__PURE__ */ a(
30
+ "div",
31
+ {
32
+ className: t(
33
+ "relative flex flex-col gap-9",
34
+ r === "center" ? "items-center text-center" : "items-start"
35
+ ),
36
+ children: [
37
+ /* @__PURE__ */ a("div", { className: t("max-w-2xl", r === "center" && "mx-auto"), children: [
38
+ /* @__PURE__ */ e("h2", { className: "font-display text-balance text-3xl font-semibold leading-[1.06] tracking-[-0.02em] sm:text-5xl", children: n }),
39
+ o ? /* @__PURE__ */ e(
40
+ "p",
41
+ {
42
+ className: t(
43
+ "mt-4 text-pretty text-base leading-7 sm:text-lg",
44
+ r === "center" && "mx-auto max-w-xl"
45
+ ),
46
+ children: o
47
+ }
48
+ ) : null
49
+ ] }),
50
+ /* @__PURE__ */ e(v, { action: i, secondaryAction: s, align: r })
51
+ ]
52
+ }
53
+ )
54
+ ]
55
+ }
56
+ ) }) });
57
+ }
58
+ );
59
+ y.displayName = "CTAPanel";
60
+ export {
61
+ y as CTAPanel
62
+ };
63
+ //# sourceMappingURL=Panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Panel.js","sources":["../../../../../src/components/CTA/variants/Panel.tsx"],"sourcesContent":["\"use client\";\nimport { forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { Container } from \"../../Container\";\nimport { useTokenForeground } from \"../../../utils/useTokenForeground\";\nimport { CTAActions } from \"../parts\";\nimport type { CTAProps } from \"../types\";\n\n/** panel — brand gradient panel, rounded corners. */\nexport const CTAPanel = forwardRef<HTMLElement, CTAProps>(\n ({ className, title, description, action, secondaryAction, align = \"left\", id, ...props }, ref) => {\n const fg = useTokenForeground(\"--color-primary\");\n\n return (\n <section ref={ref} id={id} className={cn(\"w-full py-6 pb-20\", className)} {...props}>\n <Container>\n <div\n className=\"relative overflow-hidden rounded-[1.75rem] px-7 py-14 sm:px-14 sm:py-20\"\n style={{\n background:\n \"radial-gradient(120% 160% at 0% 0%, rgb(var(--color-primary)), rgb(var(--color-primary-hover)) 55%, rgb(var(--color-primary) / 0.85))\",\n color: fg,\n }}\n >\n <div aria-hidden className=\"pointer-events-none absolute inset-0 grain opacity-[0.07] mix-blend-overlay\" />\n <div\n aria-hidden\n className=\"pointer-events-none absolute -right-24 -top-24 h-72 w-72 rounded-full\"\n style={{ background: \"rgb(var(--color-accent))\", opacity: 0.35, filter: \"blur(60px)\" }}\n />\n <div\n className={cn(\n \"relative flex flex-col gap-9\",\n align === \"center\" ? \"items-center text-center\" : \"items-start\",\n )}\n >\n <div className={cn(\"max-w-2xl\", align === \"center\" && \"mx-auto\")}>\n <h2 className=\"font-display text-balance text-3xl font-semibold leading-[1.06] tracking-[-0.02em] sm:text-5xl\">\n {title}\n </h2>\n {description ? (\n <p\n className={cn(\n \"mt-4 text-pretty text-base leading-7 sm:text-lg\",\n align === \"center\" && \"mx-auto max-w-xl\",\n )}\n >\n {description}\n </p>\n ) : null}\n </div>\n <CTAActions action={action} secondaryAction={secondaryAction} align={align} />\n </div>\n </div>\n </Container>\n </section>\n );\n },\n);\nCTAPanel.displayName = \"CTAPanel\";"],"names":["CTAPanel","forwardRef","className","title","description","action","secondaryAction","align","id","props","ref","fg","useTokenForeground","jsx","cn","Container","jsxs","CTAActions"],"mappings":";;;;;;AASO,MAAMA,IAAWC;AAAA,EACtB,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,aAAAC,GAAa,QAAAC,GAAQ,iBAAAC,GAAiB,OAAAC,IAAQ,QAAQ,IAAAC,GAAI,GAAGC,EAAA,GAASC,MAAQ;AACjG,UAAMC,IAAKC,EAAmB,iBAAiB;AAE/C,WACE,gBAAAC,EAAC,WAAA,EAAQ,KAAAH,GAAU,IAAAF,GAAQ,WAAWM,EAAG,qBAAqBZ,CAAS,GAAI,GAAGO,GAC5E,UAAA,gBAAAI,EAACE,GAAA,EACC,UAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO;AAAA,UACL,YACE;AAAA,UACF,OAAOL;AAAA,QAAA;AAAA,QAGT,UAAA;AAAA,UAAA,gBAAAE,EAAC,OAAA,EAAI,eAAW,IAAC,WAAU,+EAA8E;AAAA,UACzG,gBAAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,eAAW;AAAA,cACX,WAAU;AAAA,cACV,OAAO,EAAE,YAAY,4BAA4B,SAAS,MAAM,QAAQ,aAAA;AAAA,YAAa;AAAA,UAAA;AAAA,UAEvF,gBAAAG;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWF;AAAA,gBACT;AAAA,gBACAP,MAAU,WAAW,6BAA6B;AAAA,cAAA;AAAA,cAGpD,UAAA;AAAA,gBAAA,gBAAAS,EAAC,SAAI,WAAWF,EAAG,aAAaP,MAAU,YAAY,SAAS,GAC7D,UAAA;AAAA,kBAAA,gBAAAM,EAAC,MAAA,EAAG,WAAU,kGACX,UAAAV,GACH;AAAA,kBACCC,IACC,gBAAAS;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAWC;AAAA,wBACT;AAAA,wBACAP,MAAU,YAAY;AAAA,sBAAA;AAAA,sBAGvB,UAAAH;AAAA,oBAAA;AAAA,kBAAA,IAED;AAAA,gBAAA,GACN;AAAA,gBACA,gBAAAS,EAACI,GAAA,EAAW,QAAAZ,GAAgB,iBAAAC,GAAkC,OAAAC,EAAA,CAAc;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAC9E;AAAA,MAAA;AAAA,IAAA,GAEJ,EAAA,CACF;AAAA,EAEJ;AACF;AACAP,EAAS,cAAc;"}
@@ -0,0 +1,28 @@
1
+ import { jsx as e, jsxs as s } from "react/jsx-runtime";
2
+ import { forwardRef as d } from "react";
3
+ import { cn as r } from "../../../utils/cn.js";
4
+ import { Container as f } from "../../Container.js";
5
+ import { CTAActions as p } from "../parts.js";
6
+ const u = d(
7
+ ({ className: l, title: o, description: m, action: a, secondaryAction: c, align: t = "left", id: n, ...x }, i) => /* @__PURE__ */ e("section", { ref: i, id: n, className: r("w-full", l), ...x, children: /* @__PURE__ */ e(f, { className: "py-20 sm:py-24", children: /* @__PURE__ */ s(
8
+ "div",
9
+ {
10
+ className: r(
11
+ "flex flex-col gap-10 border-t border-border pt-14 sm:flex-row sm:items-end sm:justify-between sm:pt-16",
12
+ t === "center" && "items-center text-center sm:flex-col sm:items-center"
13
+ ),
14
+ children: [
15
+ /* @__PURE__ */ s("div", { className: r("max-w-3xl", t === "center" && "mx-auto"), children: [
16
+ /* @__PURE__ */ e("h2", { className: "font-display text-4xl font-semibold leading-[1.03] tracking-[-0.03em] text-balance text-foreground sm:text-6xl", children: o }),
17
+ m ? /* @__PURE__ */ e("p", { className: r("mt-5 max-w-xl text-pretty text-base leading-7 text-muted-foreground sm:text-lg", t === "center" && "mx-auto"), children: m }) : null
18
+ ] }),
19
+ /* @__PURE__ */ e(p, { action: a, secondaryAction: c, align: t })
20
+ ]
21
+ }
22
+ ) }) })
23
+ );
24
+ u.displayName = "CTASurface";
25
+ export {
26
+ u as CTASurface
27
+ };
28
+ //# sourceMappingURL=Surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Surface.js","sources":["../../../../../src/components/CTA/variants/Surface.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { Container } from \"../../Container\";\nimport { CTAActions } from \"../parts\";\nimport type { CTAProps } from \"../types\";\n\n/** surface — quiet paper band: hairline rule, big display type, actions right. */\nexport const CTASurface = forwardRef<HTMLElement, CTAProps>(\n ({ className, title, description, action, secondaryAction, align = \"left\", id, ...props }, ref) => (\n <section ref={ref} id={id} className={cn(\"w-full\", className)} {...props}>\n <Container className=\"py-20 sm:py-24\">\n <div\n className={cn(\n \"flex flex-col gap-10 border-t border-border pt-14 sm:flex-row sm:items-end sm:justify-between sm:pt-16\",\n align === \"center\" && \"items-center text-center sm:flex-col sm:items-center\",\n )}\n >\n <div className={cn(\"max-w-3xl\", align === \"center\" && \"mx-auto\")}>\n <h2 className=\"font-display text-4xl font-semibold leading-[1.03] tracking-[-0.03em] text-balance text-foreground sm:text-6xl\">\n {title}\n </h2>\n {description ? (\n <p className={cn(\"mt-5 max-w-xl text-pretty text-base leading-7 text-muted-foreground sm:text-lg\", align === \"center\" && \"mx-auto\")}>\n {description}\n </p>\n ) : null}\n </div>\n <CTAActions action={action} secondaryAction={secondaryAction} align={align} />\n </div>\n </Container>\n </section>\n ),\n);\nCTASurface.displayName = \"CTASurface\";"],"names":["CTASurface","forwardRef","className","title","description","action","secondaryAction","align","id","props","ref","jsx","cn","Container","jsxs","CTAActions"],"mappings":";;;;;AAOO,MAAMA,IAAaC;AAAA,EACxB,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,aAAAC,GAAa,QAAAC,GAAQ,iBAAAC,GAAiB,OAAAC,IAAQ,QAAQ,IAAAC,GAAI,GAAGC,EAAA,GAASC,MACzF,gBAAAC,EAAC,WAAA,EAAQ,KAAAD,GAAU,IAAAF,GAAQ,WAAWI,EAAG,UAAUV,CAAS,GAAI,GAAGO,GACjE,UAAA,gBAAAE,EAACE,GAAA,EAAU,WAAU,kBACnB,UAAA,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWF;AAAA,QACT;AAAA,QACAL,MAAU,YAAY;AAAA,MAAA;AAAA,MAGxB,UAAA;AAAA,QAAA,gBAAAO,EAAC,SAAI,WAAWF,EAAG,aAAaL,MAAU,YAAY,SAAS,GAC7D,UAAA;AAAA,UAAA,gBAAAI,EAAC,MAAA,EAAG,WAAU,kHACX,UAAAR,GACH;AAAA,UACCC,IACC,gBAAAO,EAAC,KAAA,EAAE,WAAWC,EAAG,kFAAkFL,MAAU,YAAY,SAAS,GAC/H,UAAAH,EAAA,CACH,IACE;AAAA,QAAA,GACN;AAAA,QACA,gBAAAO,EAACI,GAAA,EAAW,QAAAV,GAAgB,iBAAAC,GAAkC,OAAAC,EAAA,CAAc;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEhF,EAAA,CACF;AAEJ;AACAP,EAAW,cAAc;"}
@@ -0,0 +1,63 @@
1
+ import { jsx as s, jsxs as n } from "react/jsx-runtime";
2
+ import { forwardRef as a } from "react";
3
+ import { cn as d } from "../utils/cn.js";
4
+ const l = {
5
+ outlined: "border border-border bg-surface",
6
+ elevated: "border border-border bg-surface shadow-soft",
7
+ inset: "bg-surface-strong"
8
+ }, c = a(
9
+ ({ className: e, variant: r = "outlined", interactive: o = !1, ...t }, i) => /* @__PURE__ */ s(
10
+ "div",
11
+ {
12
+ ref: i,
13
+ className: d(
14
+ "rounded-xl transition-[border-color,box-shadow,transform] duration-200",
15
+ l[r],
16
+ o && "cursor-pointer hover:-translate-y-0.5 hover:border-foreground/20 hover:shadow-raised",
17
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
18
+ e
19
+ ),
20
+ ...t
21
+ }
22
+ )
23
+ );
24
+ c.displayName = "Card";
25
+ const f = a(
26
+ ({ className: e, icon: r, children: o, ...t }, i) => /* @__PURE__ */ n("div", { ref: i, className: d("flex flex-col gap-2 p-6 pb-0", e), ...t, children: [
27
+ r ? /* @__PURE__ */ s("div", { className: "mb-1.5", children: r }) : null,
28
+ o
29
+ ] })
30
+ );
31
+ f.displayName = "CardHeader";
32
+ const m = a(
33
+ ({ className: e, ...r }, o) => /* @__PURE__ */ s(
34
+ "h3",
35
+ {
36
+ ref: o,
37
+ className: d("font-display text-lg font-semibold tracking-tight text-foreground", e),
38
+ ...r
39
+ }
40
+ )
41
+ );
42
+ m.displayName = "CardTitle";
43
+ const b = a(
44
+ ({ className: e, ...r }, o) => /* @__PURE__ */ s("p", { ref: o, className: d("text-sm leading-6 text-muted-foreground", e), ...r })
45
+ );
46
+ b.displayName = "CardDescription";
47
+ const p = a(
48
+ ({ className: e, ...r }, o) => /* @__PURE__ */ s("div", { ref: o, className: d("p-6 pt-5", e), ...r })
49
+ );
50
+ p.displayName = "CardContent";
51
+ const u = a(
52
+ ({ className: e, ...r }, o) => /* @__PURE__ */ s("div", { ref: o, className: d("flex items-center gap-3 border-t border-border/70 p-6 pt-5", e), ...r })
53
+ );
54
+ u.displayName = "CardFooter";
55
+ export {
56
+ c as Card,
57
+ p as CardContent,
58
+ b as CardDescription,
59
+ u as CardFooter,
60
+ f as CardHeader,
61
+ m as CardTitle
62
+ };
63
+ //# sourceMappingURL=Card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.js","sources":["../../../src/components/Card.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../utils/cn\";\n\nexport type CardVariant = \"outlined\" | \"elevated\" | \"inset\";\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n variant?: CardVariant;\n /** Softens the whole card with hover lift + border tint. */\n interactive?: boolean;\n}\n\nconst variants: Record<CardVariant, string> = {\n outlined: \"border border-border bg-surface\",\n elevated: \"border border-border bg-surface shadow-soft\",\n inset: \"bg-surface-strong\",\n};\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant = \"outlined\", interactive = false, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl transition-[border-color,box-shadow,transform] duration-200\",\n variants[variant],\n interactive &&\n \"cursor-pointer hover:-translate-y-0.5 hover:border-foreground/20 hover:shadow-raised\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n className,\n )}\n {...props}\n />\n ),\n);\nCard.displayName = \"Card\";\n\nexport interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {\n icon?: ReactNode;\n}\n\nexport const CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, icon, children, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex flex-col gap-2 p-6 pb-0\", className)} {...props}>\n {icon ? <div className=\"mb-1.5\">{icon}</div> : null}\n {children}\n </div>\n ),\n);\nCardHeader.displayName = \"CardHeader\";\n\nexport const CardTitle = forwardRef<HTMLHeadingElement, HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"font-display text-lg font-semibold tracking-tight text-foreground\", className)}\n {...props}\n />\n ),\n);\nCardTitle.displayName = \"CardTitle\";\n\nexport const CardDescription = forwardRef<HTMLParagraphElement, HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm leading-6 text-muted-foreground\", className)} {...props} />\n ),\n);\nCardDescription.displayName = \"CardDescription\";\n\nexport const CardContent = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-5\", className)} {...props} />\n ),\n);\nCardContent.displayName = \"CardContent\";\n\nexport const CardFooter = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center gap-3 border-t border-border/70 p-6 pt-5\", className)} {...props} />\n ),\n);\nCardFooter.displayName = \"CardFooter\";"],"names":["variants","Card","forwardRef","className","variant","interactive","props","ref","jsx","cn","CardHeader","icon","children","jsxs","CardTitle","CardDescription","CardContent","CardFooter"],"mappings":";;;AAWA,MAAMA,IAAwC;AAAA,EAC5C,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AACT,GAEaC,IAAOC;AAAA,EAClB,CAAC,EAAE,WAAAC,GAAW,SAAAC,IAAU,YAAY,aAAAC,IAAc,IAAO,GAAGC,KAASC,MACnE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAWE;AAAA,QACT;AAAA,QACAT,EAASI,CAAO;AAAA,QAChBC,KACE;AAAA,QACF;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGG;AAAA,IAAA;AAAA,EAAA;AAGV;AACAL,EAAK,cAAc;AAMZ,MAAMS,IAAaR;AAAA,EACxB,CAAC,EAAE,WAAAC,GAAW,MAAAQ,GAAM,UAAAC,GAAU,GAAGN,KAASC,MACxC,gBAAAM,EAAC,OAAA,EAAI,KAAAN,GAAU,WAAWE,EAAG,gCAAgCN,CAAS,GAAI,GAAGG,GAC1E,UAAA;AAAA,IAAAK,IAAO,gBAAAH,EAAC,OAAA,EAAI,WAAU,UAAU,aAAK,IAAS;AAAA,IAC9CI;AAAA,EAAA,EAAA,CACH;AAEJ;AACAF,EAAW,cAAc;AAElB,MAAMI,IAAYZ;AAAA,EACvB,CAAC,EAAE,WAAAC,GAAW,GAAGG,EAAA,GAASC,MACxB,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAWE,EAAG,qEAAqEN,CAAS;AAAA,MAC3F,GAAGG;AAAA,IAAA;AAAA,EAAA;AAGV;AACAQ,EAAU,cAAc;AAEjB,MAAMC,IAAkBb;AAAA,EAC7B,CAAC,EAAE,WAAAC,GAAW,GAAGG,EAAA,GAASC,MACxB,gBAAAC,EAAC,KAAA,EAAE,KAAAD,GAAU,WAAWE,EAAG,2CAA2CN,CAAS,GAAI,GAAGG,EAAA,CAAO;AAEjG;AACAS,EAAgB,cAAc;AAEvB,MAAMC,IAAcd;AAAA,EACzB,CAAC,EAAE,WAAAC,GAAW,GAAGG,EAAA,GAASC,MACxB,gBAAAC,EAAC,OAAA,EAAI,KAAAD,GAAU,WAAWE,EAAG,YAAYN,CAAS,GAAI,GAAGG,EAAA,CAAO;AAEpE;AACAU,EAAY,cAAc;AAEnB,MAAMC,IAAaf;AAAA,EACxB,CAAC,EAAE,WAAAC,GAAW,GAAGG,EAAA,GAASC,MACxB,gBAAAC,EAAC,OAAA,EAAI,KAAAD,GAAU,WAAWE,EAAG,8DAA8DN,CAAS,GAAI,GAAGG,EAAA,CAAO;AAEtH;AACAW,EAAW,cAAc;"}
@@ -0,0 +1,58 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { forwardRef as o } from "react";
3
+ import { cn as s } from "../utils/cn.js";
4
+ const r = {
5
+ sm: "max-w-xl",
6
+ md: "max-w-3xl",
7
+ lg: "max-w-5xl",
8
+ xl: "max-w-6xl"
9
+ }, g = o(
10
+ ({ className: p, as: l, size: a = "xl", gutters: m = !0, ...x }, t) => /* @__PURE__ */ e(
11
+ l ?? "div",
12
+ {
13
+ ref: t,
14
+ className: s(
15
+ "mx-auto w-full",
16
+ a !== "full" && r[a],
17
+ m && "px-5 sm:px-8",
18
+ p
19
+ ),
20
+ ...x
21
+ }
22
+ )
23
+ );
24
+ g.displayName = "Container";
25
+ const c = {
26
+ 0: "gap-0",
27
+ 1: "gap-1",
28
+ 2: "gap-2",
29
+ 3: "gap-3",
30
+ 4: "gap-4",
31
+ 5: "gap-5",
32
+ 6: "gap-6",
33
+ 8: "gap-8",
34
+ 10: "gap-10",
35
+ 12: "gap-12",
36
+ 16: "gap-16",
37
+ 20: "gap-20"
38
+ }, f = o(
39
+ ({ className: p, gap: l = 4, horizontal: a = !1, ...m }, x) => /* @__PURE__ */ e(
40
+ "div",
41
+ {
42
+ ref: x,
43
+ className: s(
44
+ "flex",
45
+ a ? "flex-row flex-wrap items-center" : "flex-col",
46
+ c[l],
47
+ p
48
+ ),
49
+ ...m
50
+ }
51
+ )
52
+ );
53
+ f.displayName = "Stack";
54
+ export {
55
+ g as Container,
56
+ f as Stack
57
+ };
58
+ //# sourceMappingURL=Container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Container.js","sources":["../../../src/components/Container.tsx"],"sourcesContent":["import { forwardRef, type ElementType, type HTMLAttributes } from \"react\";\nimport { cn } from \"../utils/cn\";\n\nexport type ContainerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport interface ContainerProps extends HTMLAttributes<HTMLElement> {\n /** Render as a specific element (section, header, …). */\n as?: ElementType;\n /**\n * Maximum content width:\n * `sm` → prose · `md` → reading · `lg` → plans/splits ·\n * `xl` → default marketing page · `full` → edge-to-edge.\n */\n size?: ContainerSize;\n /** Responsive gutters (px-5 / sm:px-8). Disable for flush content. */\n gutters?: boolean;\n}\n\nconst sizes: Record<Exclude<ContainerSize, \"full\">, string> = {\n sm: \"max-w-xl\",\n md: \"max-w-3xl\",\n lg: \"max-w-5xl\",\n xl: \"max-w-6xl\",\n};\n\n/**\n * Shared layout wrapper — the single source of the container + gutter rules\n * used across Section, Footer, CTA, templates…\n */\nexport const Container = forwardRef<HTMLElement, ContainerProps>(\n ({ className, as, size = \"xl\", gutters = true, ...props }, ref) => {\n const Tag = (as ?? \"div\") as ElementType;\n return (\n <Tag\n ref={ref as never}\n className={cn(\n \"mx-auto w-full\",\n size !== \"full\" && sizes[size],\n gutters && \"px-5 sm:px-8\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nContainer.displayName = \"Container\";\n\nexport type StackGap = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20;\n\nconst gaps: Record<StackGap, string> = {\n 0: \"gap-0\",\n 1: \"gap-1\",\n 2: \"gap-2\",\n 3: \"gap-3\",\n 4: \"gap-4\",\n 5: \"gap-5\",\n 6: \"gap-6\",\n 8: \"gap-8\",\n 10: \"gap-10\",\n 12: \"gap-12\",\n 16: \"gap-16\",\n 20: \"gap-20\",\n};\n\nexport interface StackProps extends HTMLAttributes<HTMLDivElement> {\n gap?: StackGap;\n horizontal?: boolean;\n}\n\n/** Vertical (or horizontal) rhythm helper using flex gaps. */\nexport const Stack = forwardRef<HTMLDivElement, StackProps>(\n ({ className, gap = 4, horizontal = false, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex\",\n horizontal ? \"flex-row flex-wrap items-center\" : \"flex-col\",\n gaps[gap],\n className,\n )}\n {...props}\n />\n ),\n);\nStack.displayName = \"Stack\";"],"names":["sizes","Container","forwardRef","className","as","size","gutters","props","ref","jsx","cn","gaps","Stack","gap","horizontal"],"mappings":";;;AAkBA,MAAMA,IAAwD;AAAA,EAC5D,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAMaC,IAAYC;AAAA,EACvB,CAAC,EAAE,WAAAC,GAAW,IAAAC,GAAI,MAAAC,IAAO,MAAM,SAAAC,IAAU,IAAM,GAAGC,EAAA,GAASC,MAGvD,gBAAAC;AAAA,IAFWL,KAAM;AAAA,IAEhB;AAAA,MACC,KAAAI;AAAA,MACA,WAAWE;AAAA,QACT;AAAA,QACAL,MAAS,UAAUL,EAAMK,CAAI;AAAA,QAC7BC,KAAW;AAAA,QACXH;AAAA,MAAA;AAAA,MAED,GAAGI;AAAA,IAAA;AAAA,EAAA;AAIZ;AACAN,EAAU,cAAc;AAIxB,MAAMU,IAAiC;AAAA,EACrC,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAQaC,IAAQV;AAAA,EACnB,CAAC,EAAE,WAAAC,GAAW,KAAAU,IAAM,GAAG,YAAAC,IAAa,IAAO,GAAGP,KAASC,MACrD,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAWE;AAAA,QACT;AAAA,QACAI,IAAa,oCAAoC;AAAA,QACjDH,EAAKE,CAAG;AAAA,QACRV;AAAA,MAAA;AAAA,MAED,GAAGI;AAAA,IAAA;AAAA,EAAA;AAGV;AACAK,EAAM,cAAc;"}
@@ -0,0 +1,40 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import { FaqCards as x } from "./variants/Cards.js";
3
+ import { FaqAccordion as F } from "./variants/Accordion.js";
4
+ import { FaqSplit as p } from "./variants/Split.js";
5
+ const q = ({
6
+ className: o,
7
+ items: i,
8
+ option: m = "accordion",
9
+ allowMultiple: a = !1,
10
+ defaultOpen: f = [],
11
+ eyebrow: t,
12
+ title: d,
13
+ description: n,
14
+ ...c
15
+ }) => m === "cards" ? /* @__PURE__ */ r(x, { className: o, items: i, eyebrow: t, ...c }) : m === "split" ? /* @__PURE__ */ r(
16
+ p,
17
+ {
18
+ className: o,
19
+ items: i,
20
+ allowMultiple: a,
21
+ defaultOpen: f,
22
+ eyebrow: t,
23
+ title: d,
24
+ description: n,
25
+ ...c
26
+ }
27
+ ) : /* @__PURE__ */ r("div", { className: "mx-auto w-full max-w-3xl", children: /* @__PURE__ */ r(
28
+ F,
29
+ {
30
+ className: o,
31
+ items: i,
32
+ allowMultiple: a,
33
+ defaultOpen: f
34
+ }
35
+ ) });
36
+ q.displayName = "FAQ";
37
+ export {
38
+ q as FAQ
39
+ };
40
+ //# sourceMappingURL=FAQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FAQ.js","sources":["../../../../src/components/FAQ/FAQ.tsx"],"sourcesContent":["import type { FAQProps } from \"./types\";\nimport { FaqCards } from \"./variants/Cards\";\nimport { FaqAccordion } from \"./variants/Accordion\";\nimport { FaqSplit } from \"./variants/Split\";\n\nexport const FAQ = ({\n className,\n items,\n option = \"accordion\",\n allowMultiple = false,\n defaultOpen = [],\n eyebrow,\n title,\n description,\n ...props\n}: FAQProps) => {\n if (option === \"cards\") {\n return <FaqCards className={className} items={items} eyebrow={eyebrow} {...props} />;\n }\n\n if (option === \"split\") {\n return (\n <FaqSplit\n className={className}\n items={items}\n allowMultiple={allowMultiple}\n defaultOpen={defaultOpen}\n eyebrow={eyebrow}\n title={title}\n description={description}\n {...props}\n />\n );\n }\n\n // accordion\n return (\n <div className=\"mx-auto w-full max-w-3xl\">\n <FaqAccordion\n className={className}\n items={items}\n allowMultiple={allowMultiple}\n defaultOpen={defaultOpen}\n />\n </div>\n );\n};\nFAQ.displayName = \"FAQ\";"],"names":["FAQ","className","items","option","allowMultiple","defaultOpen","eyebrow","title","description","props","FaqCards","jsx","FaqSplit","FaqAccordion"],"mappings":";;;;AAKO,MAAMA,IAAM,CAAC;AAAA,EAClB,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,eAAAC,IAAgB;AAAA,EAChB,aAAAC,IAAc,CAAA;AAAA,EACd,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,GAAGC;AACL,MACMN,MAAW,4BACLO,GAAA,EAAS,WAAAT,GAAsB,OAAAC,GAAc,SAAAI,GAAmB,GAAGG,GAAO,IAGhFN,MAAW,UAEX,gBAAAQ;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,WAAAX;AAAA,IACA,OAAAC;AAAA,IACA,eAAAE;AAAA,IACA,aAAAC;AAAA,IACA,SAAAC;AAAA,IACA,OAAAC;AAAA,IACA,aAAAC;AAAA,IACC,GAAGC;AAAA,EAAA;AAAA,IAOR,gBAAAE,EAAC,OAAA,EAAI,WAAU,4BACb,UAAA,gBAAAA;AAAA,EAACE;AAAA,EAAA;AAAA,IACC,WAAAZ;AAAA,IACA,OAAAC;AAAA,IACA,eAAAE;AAAA,IACA,aAAAC;AAAA,EAAA;AAAA,GAEJ;AAGJL,EAAI,cAAc;"}