@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,56 @@
1
+ "use client";
2
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
3
+ import { useState as l } from "react";
4
+ import { cn as c } from "../../utils/cn.js";
5
+ import { Plus as f } from "../../icons.js";
6
+ function b(e, t) {
7
+ const [o, s] = l(
8
+ () => new Set(e ? t : t.slice(0, 1))
9
+ );
10
+ return { openSet: o, toggle: (r) => {
11
+ s((u) => {
12
+ const n = new Set(u);
13
+ return n.has(r) ? n.delete(r) : (e || n.clear(), n.add(r)), n;
14
+ });
15
+ }, isOpen: (r) => o.has(r) };
16
+ }
17
+ function h({
18
+ item: e,
19
+ open: t,
20
+ onToggle: o,
21
+ style: s
22
+ }) {
23
+ return /* @__PURE__ */ a("div", { children: [
24
+ /* @__PURE__ */ i("h3", { children: /* @__PURE__ */ a(
25
+ "button",
26
+ {
27
+ type: "button",
28
+ "aria-expanded": t,
29
+ onClick: o,
30
+ className: s === "boxed" ? "flex w-full cursor-pointer items-center justify-between gap-4 px-6 py-5 text-left text-[15px] font-medium text-foreground transition-colors duration-150 hover:bg-surface-strong/60 focus-visible:outline-none" : "flex w-full cursor-pointer items-center justify-between gap-4 py-5 text-left text-base font-semibold text-foreground transition-colors duration-150 focus-visible:outline-none",
31
+ children: [
32
+ e.question,
33
+ /* @__PURE__ */ i(
34
+ f,
35
+ {
36
+ className: c(
37
+ "h-4.5 w-4.5 shrink-0 text-foreground/45 transition-transform duration-200 sm:h-5 sm:w-5",
38
+ t && "rotate-45 text-primary"
39
+ )
40
+ }
41
+ )
42
+ ]
43
+ }
44
+ ) }),
45
+ t ? /* @__PURE__ */ i("p", { className: s === "boxed" ? "px-6 pb-6 text-sm leading-7 text-muted-foreground" : "pb-6 text-sm leading-7 text-muted-foreground", children: e.answer }) : null
46
+ ] });
47
+ }
48
+ function w({ label: e }) {
49
+ return /* @__PURE__ */ i("p", { className: "text-xs font-semibold uppercase tracking-[0.18em] text-primary", children: e });
50
+ }
51
+ export {
52
+ w as FaqEyebrow,
53
+ h as FaqItemRow,
54
+ b as useFaqState
55
+ };
56
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sources":["../../../../src/components/FAQ/parts.tsx"],"sourcesContent":["\"use client\";\nimport { useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Plus } from \"../../icons\";\nimport type { FaqItem } from \"./types\";\n\nexport function useFaqState(allowMultiple: boolean, defaultOpen: number[]) {\n const [openSet, setOpenSet] = useState<Set<number>>(\n () => new Set(allowMultiple ? defaultOpen : defaultOpen.slice(0, 1)),\n );\n\n const toggle = (index: number) => {\n setOpenSet((prev) => {\n const next = new Set(prev);\n if (next.has(index)) {\n next.delete(index);\n } else {\n if (!allowMultiple) next.clear();\n next.add(index);\n }\n return next;\n });\n };\n\n return { openSet, toggle, isOpen: (i: number) => openSet.has(i) };\n}\n\nexport function FaqItemRow({\n item,\n open,\n onToggle,\n style,\n}: {\n item: FaqItem;\n open: boolean;\n onToggle: () => void;\n style: \"boxed\" | \"bare\";\n}) {\n return (\n <div>\n <h3>\n <button\n type=\"button\"\n aria-expanded={open}\n onClick={onToggle}\n className={\n style === \"boxed\"\n ? \"flex w-full cursor-pointer items-center justify-between gap-4 px-6 py-5 text-left text-[15px] font-medium text-foreground transition-colors duration-150 hover:bg-surface-strong/60 focus-visible:outline-none\"\n : \"flex w-full cursor-pointer items-center justify-between gap-4 py-5 text-left text-base font-semibold text-foreground transition-colors duration-150 focus-visible:outline-none\"\n }\n >\n {item.question}\n <Plus\n className={cn(\n \"h-4.5 w-4.5 shrink-0 text-foreground/45 transition-transform duration-200 sm:h-5 sm:w-5\",\n open && \"rotate-45 text-primary\",\n )}\n />\n </button>\n </h3>\n {open ? (\n <p className={style === \"boxed\" ? \"px-6 pb-6 text-sm leading-7 text-muted-foreground\" : \"pb-6 text-sm leading-7 text-muted-foreground\"}>\n {item.answer}\n </p>\n ) : null}\n </div>\n );\n}\n\nexport function FaqEyebrow({ label }: { label: string }) {\n return (\n <p className=\"text-xs font-semibold uppercase tracking-[0.18em] text-primary\">{label}</p>\n );\n}"],"names":["useFaqState","allowMultiple","defaultOpen","openSet","setOpenSet","useState","index","prev","next","i","FaqItemRow","item","open","onToggle","style","jsx","jsxs","Plus","cn","FaqEyebrow","label"],"mappings":";;;;AAMO,SAASA,EAAYC,GAAwBC,GAAuB;AACzE,QAAM,CAACC,GAASC,CAAU,IAAIC;AAAA,IAC5B,MAAM,IAAI,IAAIJ,IAAgBC,IAAcA,EAAY,MAAM,GAAG,CAAC,CAAC;AAAA,EAAA;AAgBrE,SAAO,EAAE,SAAAC,GAAS,QAbH,CAACG,MAAkB;AAChC,IAAAF,EAAW,CAACG,MAAS;AACnB,YAAMC,IAAO,IAAI,IAAID,CAAI;AACzB,aAAIC,EAAK,IAAIF,CAAK,IAChBE,EAAK,OAAOF,CAAK,KAEZL,KAAeO,EAAK,MAAA,GACzBA,EAAK,IAAIF,CAAK,IAETE;AAAA,IACT,CAAC;AAAA,EACH,GAE0B,QAAQ,CAACC,MAAcN,EAAQ,IAAIM,CAAC,EAAA;AAChE;AAEO,SAASC,EAAW;AAAA,EACzB,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AACF,GAKG;AACD,2BACG,OAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAAC,MAAA,EACC,UAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,iBAAeJ;AAAA,QACf,SAASC;AAAA,QACT,WACEC,MAAU,UACN,mNACA;AAAA,QAGL,UAAA;AAAA,UAAAH,EAAK;AAAA,UACN,gBAAAI;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,WAAWC;AAAA,gBACT;AAAA,gBACAN,KAAQ;AAAA,cAAA;AAAA,YACV;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,IACCA,IACC,gBAAAG,EAAC,KAAA,EAAE,WAAWD,MAAU,UAAU,sDAAsD,gDACrF,UAAAH,EAAK,OAAA,CACR,IACE;AAAA,EAAA,GACN;AAEJ;AAEO,SAASQ,EAAW,EAAE,OAAAC,KAA4B;AACvD,SACE,gBAAAL,EAAC,KAAA,EAAE,WAAU,kEAAkE,UAAAK,GAAM;AAEzF;"}
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ import { jsx as d } from "react/jsx-runtime";
3
+ import { cn as p } from "../../../utils/cn.js";
4
+ import { useFaqState as m, FaqItemRow as b } from "../parts.js";
5
+ const f = ({
6
+ className: i,
7
+ items: t,
8
+ allowMultiple: s = !1,
9
+ defaultOpen: a = [],
10
+ bare: o = !1,
11
+ option: g,
12
+ title: q,
13
+ eyebrow: u,
14
+ description: y,
15
+ ...n
16
+ }) => {
17
+ const { isOpen: c, toggle: l } = m(s, a);
18
+ return /* @__PURE__ */ d(
19
+ "div",
20
+ {
21
+ className: p(
22
+ !o && "divide-y divide-border rounded-2xl border border-border bg-surface",
23
+ i
24
+ ),
25
+ ...n,
26
+ children: t.map((e, r) => /* @__PURE__ */ d(
27
+ b,
28
+ {
29
+ item: e,
30
+ open: c(r),
31
+ onToggle: () => l(r),
32
+ style: o ? "bare" : "boxed"
33
+ },
34
+ e.question
35
+ ))
36
+ }
37
+ );
38
+ };
39
+ f.displayName = "FaqAccordion";
40
+ export {
41
+ f as FaqAccordion
42
+ };
43
+ //# sourceMappingURL=Accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Accordion.js","sources":["../../../../../src/components/FAQ/variants/Accordion.tsx"],"sourcesContent":["\"use client\";\nimport { cn } from \"../../../utils/cn\";\nimport { useFaqState, FaqItemRow } from \"../parts\";\nimport type { FAQProps } from \"../types\";\n\ninterface AccordionProps extends FAQProps {\n allowMultiple?: boolean;\n defaultOpen?: number[];\n bare?: boolean;\n}\n\nexport const FaqAccordion = ({\n className,\n items,\n allowMultiple = false,\n defaultOpen = [],\n bare = false,\n option,\n title,\n eyebrow,\n description,\n ...props\n}: AccordionProps) => {\n const { isOpen, toggle } = useFaqState(allowMultiple, defaultOpen);\n\n return (\n <div\n className={cn(\n !bare && \"divide-y divide-border rounded-2xl border border-border bg-surface\",\n className,\n )}\n {...props}\n >\n {items.map((item, index) => (\n <FaqItemRow\n key={item.question}\n item={item}\n open={isOpen(index)}\n onToggle={() => toggle(index)}\n style={bare ? \"bare\" : \"boxed\"}\n />\n ))}\n </div>\n );\n};\nFaqAccordion.displayName = \"FaqAccordion\";"],"names":["FaqAccordion","className","items","allowMultiple","defaultOpen","bare","option","title","eyebrow","description","props","isOpen","toggle","useFaqState","jsx","cn","item","index","FaqItemRow"],"mappings":";;;AAWO,MAAMA,IAAe,CAAC;AAAA,EAC3B,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,aAAAC,IAAc,CAAA;AAAA,EACd,MAAAC,IAAO;AAAA,EACP,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC;AAAA,EACA,GAAGC;AACL,MAAsB;AACpB,QAAM,EAAE,QAAAC,GAAQ,QAAAC,EAAA,IAAWC,EAAYV,GAAeC,CAAW;AAEjE,SACE,gBAAAU;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT,CAACV,KAAQ;AAAA,QACTJ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEH,UAAAR,EAAM,IAAI,CAACc,GAAMC,MAChB,gBAAAH;AAAA,QAACI;AAAA,QAAA;AAAA,UAEC,MAAAF;AAAA,UACA,MAAML,EAAOM,CAAK;AAAA,UAClB,UAAU,MAAML,EAAOK,CAAK;AAAA,UAC5B,OAAOZ,IAAO,SAAS;AAAA,QAAA;AAAA,QAJlBW,EAAK;AAAA,MAAA,CAMb;AAAA,IAAA;AAAA,EAAA;AAGP;AACAhB,EAAa,cAAc;"}
@@ -0,0 +1,33 @@
1
+ import { jsxs as s, jsx as e } from "react/jsx-runtime";
2
+ import { cn as o } from "../../../utils/cn.js";
3
+ import { FaqEyebrow as n } from "../parts.js";
4
+ const c = ({
5
+ className: d,
6
+ items: l,
7
+ eyebrow: a,
8
+ title: m,
9
+ description: p,
10
+ option: f,
11
+ ...t
12
+ }) => /* @__PURE__ */ s("div", { className: o("w-full", d), ...t, children: [
13
+ a ? /* @__PURE__ */ e("div", { className: "mb-10", children: /* @__PURE__ */ e(n, { label: String(a) }) }) : null,
14
+ /* @__PURE__ */ e("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: l.map((r, i) => /* @__PURE__ */ s(
15
+ "div",
16
+ {
17
+ className: "flex flex-col rounded-xl border border-border bg-surface p-7",
18
+ children: [
19
+ /* @__PURE__ */ s("div", { className: "flex items-baseline gap-4", children: [
20
+ /* @__PURE__ */ e("span", { className: "font-display text-sm font-semibold tabular-nums text-foreground/35", children: String(i + 1).padStart(2, "0") }),
21
+ /* @__PURE__ */ e("h3", { className: "font-display text-lg font-semibold tracking-tight text-foreground", children: r.question })
22
+ ] }),
23
+ /* @__PURE__ */ e("p", { className: "mt-4 border-t border-border pt-4 text-sm leading-6 text-muted-foreground", children: r.answer })
24
+ ]
25
+ },
26
+ r.question
27
+ )) })
28
+ ] });
29
+ c.displayName = "FaqCards";
30
+ export {
31
+ c as FaqCards
32
+ };
33
+ //# sourceMappingURL=Cards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cards.js","sources":["../../../../../src/components/FAQ/variants/Cards.tsx"],"sourcesContent":["import { cn } from \"../../../utils/cn\";\nimport { FaqEyebrow } from \"../parts\";\nimport type { FAQProps } from \"../types\";\n\ninterface CardsProps extends FAQProps {}\n\nexport const FaqCards = ({\n className,\n items,\n eyebrow,\n title,\n description,\n option,\n ...props\n}: CardsProps) => (\n <div className={cn(\"w-full\", className)} {...props}>\n {eyebrow ? <div className=\"mb-10\"><FaqEyebrow label={String(eyebrow)} /></div> : null}\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2\">\n {items.map((item, i) => (\n <div\n key={item.question}\n className=\"flex flex-col rounded-xl border border-border bg-surface p-7\"\n >\n <div className=\"flex items-baseline gap-4\">\n <span className=\"font-display text-sm font-semibold tabular-nums text-foreground/35\">\n {String(i + 1).padStart(2, \"0\")}\n </span>\n <h3 className=\"font-display text-lg font-semibold tracking-tight text-foreground\">\n {item.question}\n </h3>\n </div>\n <p className=\"mt-4 border-t border-border pt-4 text-sm leading-6 text-muted-foreground\">\n {item.answer}\n </p>\n </div>\n ))}\n </div>\n </div>\n);\nFaqCards.displayName = \"FaqCards\";"],"names":["FaqCards","className","items","eyebrow","title","description","option","props","jsxs","cn","jsx","FaqEyebrow","item"],"mappings":";;;AAMO,MAAMA,IAAW,CAAC;AAAA,EACvB,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,QAAAC;AAAA,EACA,GAAGC;AACL,MACE,gBAAAC,EAAC,SAAI,WAAWC,EAAG,UAAUR,CAAS,GAAI,GAAGM,GAC1C,UAAA;AAAA,EAAAJ,IAAU,gBAAAO,EAAC,OAAA,EAAI,WAAU,SAAQ,UAAA,gBAAAA,EAACC,GAAA,EAAW,OAAO,OAAOR,CAAO,EAAA,CAAG,EAAA,CAAE,IAAS;AAAA,EACjF,gBAAAO,EAAC,SAAI,WAAU,yCACZ,YAAM,IAAI,CAACE,GAAM,MAChB,gBAAAJ;AAAA,IAAC;AAAA,IAAA;AAAA,MAEC,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,UAAA,gBAAAE,EAAC,QAAA,EAAK,WAAU,sEACb,UAAA,OAAO,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,EAAA,CAChC;AAAA,UACA,gBAAAA,EAAC,MAAA,EAAG,WAAU,qEACX,YAAK,SAAA,CACR;AAAA,QAAA,GACF;AAAA,QACA,gBAAAA,EAAC,KAAA,EAAE,WAAU,4EACV,YAAK,OAAA,CACR;AAAA,MAAA;AAAA,IAAA;AAAA,IAbKE,EAAK;AAAA,EAAA,CAeb,EAAA,CACH;AAAA,EAAA,CACF;AAEFZ,EAAS,cAAc;"}
@@ -0,0 +1,35 @@
1
+ import { jsxs as i, jsx as l } from "react/jsx-runtime";
2
+ import { cn as n } from "../../../utils/cn.js";
3
+ import { FaqEyebrow as c } from "../parts.js";
4
+ import { FaqAccordion as g } from "./Accordion.js";
5
+ const p = ({
6
+ className: a,
7
+ items: d,
8
+ allowMultiple: o = !1,
9
+ defaultOpen: s = [],
10
+ eyebrow: t,
11
+ title: e,
12
+ description: r,
13
+ option: f,
14
+ ...m
15
+ }) => /* @__PURE__ */ i("div", { className: n("grid w-full gap-10 lg:grid-cols-[0.9fr_1.1fr] lg:gap-20", a), ...m, children: [
16
+ /* @__PURE__ */ i("div", { className: "lg:sticky lg:top-24 lg:self-start", children: [
17
+ t ? /* @__PURE__ */ l(c, { label: String(t) }) : null,
18
+ e ? /* @__PURE__ */ l("h2", { className: "mt-4 font-display text-3xl font-semibold leading-[1.08] tracking-tight text-foreground sm:text-4xl", children: e }) : null,
19
+ r ? /* @__PURE__ */ l("p", { className: "mt-4 text-pretty text-base leading-7 text-muted-foreground", children: r }) : null
20
+ ] }),
21
+ /* @__PURE__ */ l("div", { className: "divide-y divide-border", children: /* @__PURE__ */ l(
22
+ g,
23
+ {
24
+ items: d,
25
+ allowMultiple: o,
26
+ defaultOpen: s,
27
+ bare: !0
28
+ }
29
+ ) })
30
+ ] });
31
+ p.displayName = "FaqSplit";
32
+ export {
33
+ p as FaqSplit
34
+ };
35
+ //# sourceMappingURL=Split.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Split.js","sources":["../../../../../src/components/FAQ/variants/Split.tsx"],"sourcesContent":["import { cn } from \"../../../utils/cn\";\nimport { FaqEyebrow } from \"../parts\";\nimport { FaqAccordion } from \"./Accordion\";\nimport type { FAQProps } from \"../types\";\n\ninterface SplitProps extends FAQProps {\n allowMultiple?: boolean;\n defaultOpen?: number[];\n}\n\nexport const FaqSplit = ({\n className,\n items,\n allowMultiple = false,\n defaultOpen = [],\n eyebrow,\n title,\n description,\n option,\n ...props\n}: SplitProps) => (\n <div className={cn(\"grid w-full gap-10 lg:grid-cols-[0.9fr_1.1fr] lg:gap-20\", className)} {...props}>\n <div className=\"lg:sticky lg:top-24 lg:self-start\">\n {eyebrow ? <FaqEyebrow label={String(eyebrow)} /> : null}\n {title ? (\n <h2 className=\"mt-4 font-display text-3xl font-semibold leading-[1.08] tracking-tight text-foreground sm:text-4xl\">\n {title}\n </h2>\n ) : null}\n {description ? (\n <p className=\"mt-4 text-pretty text-base leading-7 text-muted-foreground\">{description}</p>\n ) : null}\n </div>\n <div className=\"divide-y divide-border\">\n <FaqAccordion\n items={items}\n allowMultiple={allowMultiple}\n defaultOpen={defaultOpen}\n bare\n />\n </div>\n </div>\n);\nFaqSplit.displayName = \"FaqSplit\";"],"names":["FaqSplit","className","items","allowMultiple","defaultOpen","eyebrow","title","description","option","props","jsxs","cn","FaqEyebrow","jsx","FaqAccordion"],"mappings":";;;;AAUO,MAAMA,IAAW,CAAC;AAAA,EACvB,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,aAAAC,IAAc,CAAA;AAAA,EACd,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,QAAAC;AAAA,EACA,GAAGC;AACL,MACE,gBAAAC,EAAC,SAAI,WAAWC,EAAG,2DAA2DV,CAAS,GAAI,GAAGQ,GAC5F,UAAA;AAAA,EAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,qCACZ,UAAA;AAAA,IAAAL,sBAAWO,GAAA,EAAW,OAAO,OAAOP,CAAO,GAAG,IAAK;AAAA,IACnDC,IACC,gBAAAO,EAAC,MAAA,EAAG,WAAU,sGACX,aACH,IACE;AAAA,IACHN,IACC,gBAAAM,EAAC,KAAA,EAAE,WAAU,8DAA8D,aAAY,IACrF;AAAA,EAAA,GACN;AAAA,EACA,gBAAAA,EAAC,OAAA,EAAI,WAAU,0BACb,UAAA,gBAAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAAZ;AAAA,MACA,eAAAC;AAAA,MACA,aAAAC;AAAA,MACA,MAAI;AAAA,IAAA;AAAA,EAAA,EACN,CACF;AAAA,EAAA,CACF;AAEFJ,EAAS,cAAc;"}
@@ -0,0 +1,40 @@
1
+ import { jsxs as m, jsx as t } from "react/jsx-runtime";
2
+ import { forwardRef as x } from "react";
3
+ import { cn as e } from "../../utils/cn.js";
4
+ import { getContrastText as u } from "../../utils/contrast.js";
5
+ const p = x(
6
+ ({ className: f, icon: o, title: i, description: l, accent: r, large: d = !1, ...s }, a) => {
7
+ const n = r ? { backgroundColor: r, color: u(r, "#111111", "#ffffff") } : void 0;
8
+ return /* @__PURE__ */ m(
9
+ "div",
10
+ {
11
+ ref: a,
12
+ className: e(
13
+ "group relative flex h-full flex-col rounded-xl border border-border bg-surface p-7 transition-colors duration-200 hover:border-foreground/15",
14
+ f
15
+ ),
16
+ ...s,
17
+ children: [
18
+ o ? /* @__PURE__ */ t(
19
+ "div",
20
+ {
21
+ className: e(
22
+ "mb-5 inline-flex h-10 w-10 items-center justify-center rounded-lg text-[1.05rem]",
23
+ !r && "bg-primary-soft text-primary"
24
+ ),
25
+ style: n,
26
+ children: o
27
+ }
28
+ ) : null,
29
+ /* @__PURE__ */ t("h3", { className: e("font-display font-semibold tracking-tight text-foreground", d ? "text-2xl" : "text-lg"), children: i }),
30
+ l ? /* @__PURE__ */ t("p", { className: e("mt-2.5 text-pretty leading-relaxed text-muted-foreground", d ? "text-[15px]" : "text-sm"), children: l }) : null
31
+ ]
32
+ }
33
+ );
34
+ }
35
+ );
36
+ p.displayName = "FeatureCard";
37
+ export {
38
+ p as FeatureCard
39
+ };
40
+ //# sourceMappingURL=FeatureCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureCard.js","sources":["../../../../src/components/Features/FeatureCard.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { getContrastText } from \"../../utils/contrast\";\nimport type { FeatureCardProps } from \"./types\";\n\nexport const FeatureCard = forwardRef<HTMLDivElement, FeatureCardProps>(\n ({ className, icon, title, description, accent, large = false, ...props }, ref) => {\n const chipStyle = accent\n ? { backgroundColor: accent, color: getContrastText(accent, \"#111111\", \"#ffffff\") }\n : undefined;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"group relative flex h-full flex-col rounded-xl border border-border bg-surface p-7 transition-colors duration-200 hover:border-foreground/15\",\n className,\n )}\n {...props}\n >\n {icon ? (\n <div\n className={cn(\n \"mb-5 inline-flex h-10 w-10 items-center justify-center rounded-lg text-[1.05rem]\",\n !accent && \"bg-primary-soft text-primary\",\n )}\n style={chipStyle}\n >\n {icon}\n </div>\n ) : null}\n <h3 className={cn(\"font-display font-semibold tracking-tight text-foreground\", large ? \"text-2xl\" : \"text-lg\")}>\n {title}\n </h3>\n {description ? (\n <p className={cn(\"mt-2.5 text-pretty leading-relaxed text-muted-foreground\", large ? \"text-[15px]\" : \"text-sm\")}>\n {description}\n </p>\n ) : null}\n </div>\n );\n },\n);\nFeatureCard.displayName = \"FeatureCard\";"],"names":["FeatureCard","forwardRef","className","icon","title","description","accent","large","props","ref","chipStyle","getContrastText","jsxs","cn","jsx"],"mappings":";;;;AAKO,MAAMA,IAAcC;AAAA,EACzB,CAAC,EAAE,WAAAC,GAAW,MAAAC,GAAM,OAAAC,GAAO,aAAAC,GAAa,QAAAC,GAAQ,OAAAC,IAAQ,IAAO,GAAGC,EAAA,GAASC,MAAQ;AACjF,UAAMC,IAAYJ,IACd,EAAE,iBAAiBA,GAAQ,OAAOK,EAAgBL,GAAQ,WAAW,SAAS,EAAA,IAC9E;AAEJ,WACE,gBAAAM;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAH;AAAA,QACA,WAAWI;AAAA,UACT;AAAA,UACAX;AAAA,QAAA;AAAA,QAED,GAAGM;AAAA,QAEH,UAAA;AAAA,UAAAL,IACC,gBAAAW;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWD;AAAA,gBACT;AAAA,gBACA,CAACP,KAAU;AAAA,cAAA;AAAA,cAEb,OAAOI;AAAA,cAEN,UAAAP;AAAA,YAAA;AAAA,UAAA,IAED;AAAA,UACJ,gBAAAW,EAAC,QAAG,WAAWD,EAAG,6DAA6DN,IAAQ,aAAa,SAAS,GAC1G,UAAAH,EAAA,CACH;AAAA,UACCC,IACC,gBAAAS,EAAC,KAAA,EAAE,WAAWD,EAAG,4DAA4DN,IAAQ,gBAAgB,SAAS,GAC3G,UAAAF,EAAA,CACH,IACE;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AACAL,EAAY,cAAc;"}
@@ -0,0 +1,13 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { forwardRef as m } from "react";
3
+ import { FeatureColumns as a } from "./variants/Columns.js";
4
+ import { FeatureBento as u } from "./variants/Bento.js";
5
+ import { FeatureEditorialRows as f } from "./variants/EditorialRows.js";
6
+ const n = m(
7
+ ({ option: o = "columns", columns: i = 3, ...r }, t) => o === "editorialRows" ? /* @__PURE__ */ e(f, { ref: t, ...r }) : o === "bento" ? /* @__PURE__ */ e(u, { ref: t, ...r }) : /* @__PURE__ */ e(a, { ref: t, columns: i, ...r })
8
+ );
9
+ n.displayName = "FeatureGrid";
10
+ export {
11
+ n as FeatureGrid
12
+ };
13
+ //# sourceMappingURL=FeatureGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureGrid.js","sources":["../../../../src/components/Features/FeatureGrid.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { FeatureGridProps } from \"./types\";\nimport { FeatureColumns } from \"./variants/Columns\";\nimport { FeatureBento } from \"./variants/Bento\";\nimport { FeatureEditorialRows } from \"./variants/EditorialRows\";\n\nexport const FeatureGrid = forwardRef<HTMLDivElement, FeatureGridProps>(\n ({ option = \"columns\", columns = 3, ...props }, ref) => {\n if (option === \"editorialRows\") return <FeatureEditorialRows ref={ref} {...props} />;\n if (option === \"bento\") return <FeatureBento ref={ref} {...props} />;\n return <FeatureColumns ref={ref} columns={columns} {...props} />;\n },\n);\nFeatureGrid.displayName = \"FeatureGrid\";"],"names":["FeatureGrid","forwardRef","option","columns","props","ref","FeatureEditorialRows","FeatureBento","jsx","FeatureColumns"],"mappings":";;;;;AAMO,MAAMA,IAAcC;AAAA,EACzB,CAAC,EAAE,QAAAC,IAAS,WAAW,SAAAC,IAAU,GAAG,GAAGC,EAAA,GAASC,MAC1CH,MAAW,oCAAyBI,GAAA,EAAqB,KAAAD,GAAW,GAAGD,GAAO,IAC9EF,MAAW,4BAAiBK,GAAA,EAAa,KAAAF,GAAW,GAAGD,GAAO,IAC3D,gBAAAI,EAACC,GAAA,EAAe,KAAAJ,GAAU,SAAAF,GAAmB,GAAGC,GAAO;AAElE;AACAJ,EAAY,cAAc;"}
@@ -0,0 +1,17 @@
1
+ const s = {
2
+ 2: "sm:grid-cols-2",
3
+ 3: "sm:grid-cols-2 lg:grid-cols-3",
4
+ 4: "sm:grid-cols-2 lg:grid-cols-4"
5
+ }, l = [
6
+ "sm:col-span-2 lg:row-span-2",
7
+ "",
8
+ "",
9
+ "lg:col-span-2",
10
+ "",
11
+ "lg:col-span-2"
12
+ ];
13
+ export {
14
+ l as bentoSpans,
15
+ s as gridCols
16
+ };
17
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sources":["../../../../src/components/Features/parts.ts"],"sourcesContent":["export const gridCols: Record<2 | 3 | 4, string> = {\n 2: \"sm:grid-cols-2\",\n 3: \"sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"sm:grid-cols-2 lg:grid-cols-4\",\n};\n\n/** Asymmetric bento layout for up to 6 features. */\nexport const bentoSpans: string[] = [\n \"sm:col-span-2 lg:row-span-2\",\n \"\",\n \"\",\n \"lg:col-span-2\",\n \"\",\n \"lg:col-span-2\",\n];"],"names":["gridCols","bentoSpans"],"mappings":"AAAO,MAAMA,IAAsC;AAAA,EACjD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL,GAGaC,IAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;"}
@@ -0,0 +1,27 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { forwardRef as d } from "react";
3
+ import { cn as l } from "../../../utils/cn.js";
4
+ import { FeatureCard as n } from "../FeatureCard.js";
5
+ import { bentoSpans as m } from "../parts.js";
6
+ const c = d(
7
+ ({ className: e, features: s, ...t }, i) => /* @__PURE__ */ o(
8
+ "div",
9
+ {
10
+ ref: i,
11
+ className: l(
12
+ "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4 lg:auto-rows-[minmax(9rem,auto)]",
13
+ "w-full",
14
+ e
15
+ ),
16
+ ...t,
17
+ children: s.map(
18
+ (a, r) => a ? /* @__PURE__ */ o("div", { className: l(r < m.length && m[r]), children: /* @__PURE__ */ o(n, { ...a, large: r === 0, className: "h-full" }) }, r) : null
19
+ )
20
+ }
21
+ )
22
+ );
23
+ c.displayName = "FeatureBento";
24
+ export {
25
+ c as FeatureBento
26
+ };
27
+ //# sourceMappingURL=Bento.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bento.js","sources":["../../../../../src/components/Features/variants/Bento.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { FeatureCard } from \"../FeatureCard\";\nimport { bentoSpans } from \"../parts\";\nimport type { FeatureItem } from \"../types\";\n\ninterface BentoProps extends HTMLAttributes<HTMLDivElement> {\n features: FeatureItem[];\n}\n\nexport const FeatureBento = forwardRef<HTMLDivElement, BentoProps>(\n ({ className, features, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4 lg:auto-rows-[minmax(9rem,auto)]\",\n \"w-full\",\n className,\n )}\n {...props}\n >\n {features.map((feature, i) =>\n feature ? (\n <div key={i} className={cn(i < bentoSpans.length && bentoSpans[i])}>\n <FeatureCard {...feature} large={i === 0} className=\"h-full\" />\n </div>\n ) : null,\n )}\n </div>\n ),\n);\nFeatureBento.displayName = \"FeatureBento\";"],"names":["FeatureBento","forwardRef","className","features","props","ref","jsx","cn","feature","i","bentoSpans","FeatureCard"],"mappings":";;;;;AAUO,MAAMA,IAAeC;AAAA,EAC1B,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAClC,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAWE;AAAA,QACT;AAAA,QACA;AAAA,QACAL;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,MAEH,UAAAD,EAAS;AAAA,QAAI,CAACK,GAASC,MACtBD,IACE,gBAAAF,EAAC,OAAA,EAAY,WAAWC,EAAGE,IAAIC,EAAW,UAAUA,EAAWD,CAAC,CAAC,GAC/D,UAAA,gBAAAH,EAACK,GAAA,EAAa,GAAGH,GAAS,OAAOC,MAAM,GAAG,WAAU,SAAA,CAAS,EAAA,GADrDA,CAEV,IACE;AAAA,MAAA;AAAA,IACN;AAAA,EAAA;AAGN;AACAT,EAAa,cAAc;"}
@@ -0,0 +1,13 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import { forwardRef as t } from "react";
3
+ import { cn as f } from "../../../utils/cn.js";
4
+ import { FeatureCard as p } from "../FeatureCard.js";
5
+ import { gridCols as d } from "../parts.js";
6
+ const u = t(
7
+ ({ className: o, features: m, columns: a, ...e }, l) => /* @__PURE__ */ r("div", { ref: l, className: f("grid w-full grid-cols-1 gap-4", d[a], o), ...e, children: m.map((i, s) => /* @__PURE__ */ r(p, { ...i, className: "h-full" }, s)) })
8
+ );
9
+ u.displayName = "FeatureColumns";
10
+ export {
11
+ u as FeatureColumns
12
+ };
13
+ //# sourceMappingURL=Columns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Columns.js","sources":["../../../../../src/components/Features/variants/Columns.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { FeatureCard } from \"../FeatureCard\";\nimport { gridCols } from \"../parts\";\nimport type { FeatureItem } from \"../types\";\n\ninterface ColumnsProps extends HTMLAttributes<HTMLDivElement> {\n features: FeatureItem[];\n columns: 2 | 3 | 4;\n}\n\nexport const FeatureColumns = forwardRef<HTMLDivElement, ColumnsProps>(\n ({ className, features, columns, ...props }, ref) => (\n <div ref={ref} className={cn(\"grid w-full grid-cols-1 gap-4\", gridCols[columns], className)} {...props}>\n {features.map((feature, i) => (\n <FeatureCard key={i} {...feature} className=\"h-full\" />\n ))}\n </div>\n ),\n);\nFeatureColumns.displayName = \"FeatureColumns\";"],"names":["FeatureColumns","forwardRef","className","features","columns","props","ref","cn","gridCols","feature","i","jsx","FeatureCard"],"mappings":";;;;;AAWO,MAAMA,IAAiBC;AAAA,EAC5B,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,SAAAC,GAAS,GAAGC,EAAA,GAASC,wBAC1C,OAAA,EAAI,KAAAA,GAAU,WAAWC,EAAG,iCAAiCC,EAASJ,CAAO,GAAGF,CAAS,GAAI,GAAGG,GAC9F,UAAAF,EAAS,IAAI,CAACM,GAASC,MACtB,gBAAAC,EAACC,GAAA,EAAqB,GAAGH,GAAS,WAAU,SAAA,GAA1BC,CAAmC,CACtD,EAAA,CACH;AAEJ;AACAV,EAAe,cAAc;"}
@@ -0,0 +1,25 @@
1
+ import { jsx as e, jsxs as r } from "react/jsx-runtime";
2
+ import { forwardRef as o } from "react";
3
+ import { cn as a } from "../../../utils/cn.js";
4
+ const n = o(
5
+ ({ className: t, features: d, ...l }, m) => /* @__PURE__ */ e("div", { ref: m, className: a("w-full", t), ...l, children: /* @__PURE__ */ e("div", { className: "divide-y divide-border border-t border-b border-border", children: d.map((s, i) => /* @__PURE__ */ r(
6
+ "div",
7
+ {
8
+ className: "group flex flex-col gap-3 py-6 transition-colors duration-200 sm:flex-row sm:items-baseline sm:gap-10",
9
+ children: [
10
+ /* @__PURE__ */ e("span", { className: "text-sm font-medium tabular-nums text-muted-foreground/60 sm:w-12", children: String(i + 1).padStart(2, "0") }),
11
+ /* @__PURE__ */ r("div", { className: "flex-1 sm:flex sm:items-baseline sm:justify-between sm:gap-10", children: [
12
+ /* @__PURE__ */ e("h3", { className: "font-display text-xl font-semibold tracking-tight text-foreground sm:w-2/5", children: s.title }),
13
+ /* @__PURE__ */ e("p", { className: "mt-1.5 text-sm leading-7 text-muted-foreground sm:mt-0 sm:w-1/2", children: s.description })
14
+ ] }),
15
+ s.icon ? /* @__PURE__ */ e("span", { className: "hidden text-foreground/30 sm:inline-flex", children: s.icon }) : null
16
+ ]
17
+ },
18
+ i
19
+ )) }) })
20
+ );
21
+ n.displayName = "FeatureEditorialRows";
22
+ export {
23
+ n as FeatureEditorialRows
24
+ };
25
+ //# sourceMappingURL=EditorialRows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorialRows.js","sources":["../../../../../src/components/Features/variants/EditorialRows.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport type { FeatureItem } from \"../types\";\n\ninterface EditorialRowsProps extends HTMLAttributes<HTMLDivElement> {\n features: FeatureItem[];\n}\n\nexport const FeatureEditorialRows = forwardRef<HTMLDivElement, EditorialRowsProps>(\n ({ className, features, ...props }, ref) => (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n <div className=\"divide-y divide-border border-t border-b border-border\">\n {features.map((feature, i) => (\n <div\n key={i}\n className=\"group flex flex-col gap-3 py-6 transition-colors duration-200 sm:flex-row sm:items-baseline sm:gap-10\"\n >\n <span className=\"text-sm font-medium tabular-nums text-muted-foreground/60 sm:w-12\">\n {String(i + 1).padStart(2, \"0\")}\n </span>\n <div className=\"flex-1 sm:flex sm:items-baseline sm:justify-between sm:gap-10\">\n <h3 className=\"font-display text-xl font-semibold tracking-tight text-foreground sm:w-2/5\">\n {feature.title}\n </h3>\n <p className=\"mt-1.5 text-sm leading-7 text-muted-foreground sm:mt-0 sm:w-1/2\">\n {feature.description}\n </p>\n </div>\n {feature.icon ? (\n <span className=\"hidden text-foreground/30 sm:inline-flex\">{feature.icon}</span>\n ) : null}\n </div>\n ))}\n </div>\n </div>\n ),\n);\nFeatureEditorialRows.displayName = \"FeatureEditorialRows\";"],"names":["FeatureEditorialRows","forwardRef","className","features","props","ref","jsx","cn","feature","jsxs"],"mappings":";;;AAQO,MAAMA,IAAuBC;AAAA,EAClC,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAClC,gBAAAC,EAAC,OAAA,EAAI,KAAAD,GAAU,WAAWE,EAAG,UAAUL,CAAS,GAAI,GAAGE,GACrD,UAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,0DACZ,UAAAH,EAAS,IAAI,CAACK,GAAS,MACtB,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MAEC,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA,gBAAAH,EAAC,QAAA,EAAK,WAAU,qEACb,UAAA,OAAO,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,EAAA,CAChC;AAAA,QACA,gBAAAG,EAAC,OAAA,EAAI,WAAU,iEACb,UAAA;AAAA,UAAA,gBAAAH,EAAC,MAAA,EAAG,WAAU,8EACX,UAAAE,EAAQ,OACX;AAAA,UACA,gBAAAF,EAAC,KAAA,EAAE,WAAU,mEACV,YAAQ,YAAA,CACX;AAAA,QAAA,GACF;AAAA,QACCE,EAAQ,OACP,gBAAAF,EAAC,QAAA,EAAK,WAAU,4CAA4C,UAAAE,EAAQ,MAAK,IACvE;AAAA,MAAA;AAAA,IAAA;AAAA,IAhBC;AAAA,EAAA,CAkBR,GACH,EAAA,CACF;AAEJ;AACAR,EAAqB,cAAc;"}
@@ -0,0 +1,10 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { FooterClassic as t } from "./variants/Classic.js";
3
+ import { FooterMinimal as m } from "./variants/Minimal.js";
4
+ import { FooterEditorial as e } from "./variants/Editorial.js";
5
+ const a = ({ option: i = "classic", ...r }) => i === "minimal" ? /* @__PURE__ */ o(m, { ...r }) : i === "editorial" ? /* @__PURE__ */ o(e, { ...r }) : /* @__PURE__ */ o(t, { ...r });
6
+ a.displayName = "Footer";
7
+ export {
8
+ a as Footer
9
+ };
10
+ //# sourceMappingURL=Footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Footer.js","sources":["../../../../src/components/Footer/Footer.tsx"],"sourcesContent":["import type { FooterProps } from \"./types\";\nimport { FooterClassic } from \"./variants/Classic\";\nimport { FooterMinimal } from \"./variants/Minimal\";\nimport { FooterEditorial } from \"./variants/Editorial\";\n\nexport const Footer = ({ option = \"classic\", ...props }: FooterProps) => {\n if (option === \"minimal\") return <FooterMinimal {...props} />;\n if (option === \"editorial\") return <FooterEditorial {...props} />;\n return <FooterClassic {...props} />;\n};\nFooter.displayName = \"Footer\";"],"names":["Footer","option","props","jsx","FooterMinimal","FooterEditorial","FooterClassic"],"mappings":";;;;AAKO,MAAMA,IAAS,CAAC,EAAE,QAAAC,IAAS,WAAW,GAAGC,QAC1CD,MAAW,YAAkB,gBAAAE,EAACC,GAAA,EAAe,GAAGF,GAAO,IACvDD,MAAW,cAAoB,gBAAAE,EAACE,GAAA,EAAiB,GAAGH,GAAO,IACxD,gBAAAC,EAACG,GAAA,EAAe,GAAGJ,EAAA,CAAO;AAEnCF,EAAO,cAAc;"}
@@ -0,0 +1,65 @@
1
+ import { jsx as r, jsxs as s } from "react/jsx-runtime";
2
+ import { cn as a } from "../../utils/cn.js";
3
+ function m({
4
+ logo: e,
5
+ logoSrc: n,
6
+ logoAlt: i,
7
+ logoClassName: l,
8
+ brand: t,
9
+ imageClassName: o = "h-7 w-auto"
10
+ }) {
11
+ return e || (n ? /* @__PURE__ */ r(
12
+ "img",
13
+ {
14
+ src: n,
15
+ alt: i ?? (typeof t == "string" ? t : "Logo"),
16
+ className: a(o, l)
17
+ }
18
+ ) : null);
19
+ }
20
+ function u({ brand: e }) {
21
+ return /* @__PURE__ */ s("span", { className: "flex items-center gap-2 font-display text-lg font-bold tracking-tight", children: [
22
+ /* @__PURE__ */ r("span", { "aria-hidden": !0, className: "inline-block h-2.5 w-2.5 rounded-sm bg-current" }),
23
+ e
24
+ ] });
25
+ }
26
+ function f({ brand: e }) {
27
+ return /* @__PURE__ */ r("span", { className: "font-display text-5xl font-bold tracking-[-0.03em] text-foreground sm:text-7xl", children: e });
28
+ }
29
+ function h({
30
+ columns: e,
31
+ Link: n,
32
+ linkClassName: i
33
+ }) {
34
+ return /* @__PURE__ */ r("div", { className: "grid grid-cols-2 gap-8 md:grid-cols-4", children: e.map((l) => /* @__PURE__ */ s("div", { children: [
35
+ /* @__PURE__ */ r("h3", { className: "text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground", children: l.title }),
36
+ /* @__PURE__ */ r("ul", { className: "mt-4 space-y-2.5", children: l.links.map((t) => /* @__PURE__ */ r("li", { children: /* @__PURE__ */ r(n, { href: t.href, className: i, children: t.label }) }, t.href)) })
37
+ ] }, l.title)) });
38
+ }
39
+ function p({
40
+ bottom: e,
41
+ languageSwitcher: n,
42
+ brand: i,
43
+ wrapperClassName: l,
44
+ textClassName: t
45
+ }) {
46
+ return /* @__PURE__ */ s("div", { className: l, children: [
47
+ /* @__PURE__ */ r("span", { className: a(t), children: e }),
48
+ n ? /* @__PURE__ */ r("div", { children: n }) : null,
49
+ /* @__PURE__ */ s("span", { className: a(t), children: [
50
+ "© ",
51
+ (/* @__PURE__ */ new Date()).getFullYear(),
52
+ " ",
53
+ i,
54
+ ". All rights reserved."
55
+ ] })
56
+ ] });
57
+ }
58
+ export {
59
+ p as FooterBottomBar,
60
+ h as FooterColumnsBlock,
61
+ f as FooterEditorialWordmark,
62
+ m as FooterLogoNode,
63
+ u as FooterWordmark
64
+ };
65
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sources":["../../../../src/components/Footer/parts.tsx"],"sourcesContent":["import type { ElementType, ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { FooterColumn } from \"./types\";\n\nexport function FooterLogoNode({\n logo,\n logoSrc,\n logoAlt,\n logoClassName,\n brand,\n imageClassName = \"h-7 w-auto\",\n}: {\n logo?: ReactNode;\n logoSrc?: string;\n logoAlt?: string;\n logoClassName?: string;\n brand?: ReactNode;\n imageClassName?: string;\n}) {\n if (logo) return logo;\n if (logoSrc) {\n return (\n <img\n src={logoSrc}\n alt={logoAlt ?? (typeof brand === \"string\" ? brand : \"Logo\")}\n className={cn(imageClassName, logoClassName)}\n />\n );\n }\n return null;\n}\n\nexport function FooterWordmark({ brand }: { brand?: ReactNode }) {\n return (\n <span className=\"flex items-center gap-2 font-display text-lg font-bold tracking-tight\">\n <span aria-hidden className=\"inline-block h-2.5 w-2.5 rounded-sm bg-current\" />\n {brand}\n </span>\n );\n}\n\nexport function FooterEditorialWordmark({ brand }: { brand?: ReactNode }) {\n return (\n <span className=\"font-display text-5xl font-bold tracking-[-0.03em] text-foreground sm:text-7xl\">\n {brand}\n </span>\n );\n}\n\nexport function FooterColumnsBlock({\n columns,\n Link,\n linkClassName,\n}: {\n columns: FooterColumn[];\n Link: ElementType;\n linkClassName: string;\n}) {\n return (\n <div className=\"grid grid-cols-2 gap-8 md:grid-cols-4\">\n {columns.map((column) => (\n <div key={column.title}>\n <h3 className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n {column.title}\n </h3>\n <ul className=\"mt-4 space-y-2.5\">\n {column.links.map((link) => (\n <li key={link.href}>\n <Link href={link.href} className={linkClassName}>\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n );\n}\n\nexport function FooterBottomBar({\n bottom,\n languageSwitcher,\n brand,\n wrapperClassName,\n textClassName,\n}: {\n bottom?: ReactNode;\n languageSwitcher?: ReactNode;\n brand?: ReactNode;\n wrapperClassName: string;\n textClassName: string;\n}) {\n return (\n <div className={wrapperClassName}>\n <span className={cn(textClassName)}>{bottom}</span>\n {languageSwitcher ? <div>{languageSwitcher}</div> : null}\n <span className={cn(textClassName)}>© {new Date().getFullYear()} {brand}. All rights reserved.</span>\n </div>\n );\n}"],"names":["FooterLogoNode","logo","logoSrc","logoAlt","logoClassName","brand","imageClassName","jsx","cn","FooterWordmark","jsxs","FooterEditorialWordmark","FooterColumnsBlock","columns","Link","linkClassName","column","link","FooterBottomBar","bottom","languageSwitcher","wrapperClassName","textClassName"],"mappings":";;AAIO,SAASA,EAAe;AAAA,EAC7B,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC;AAAA,EACA,OAAAC;AAAA,EACA,gBAAAC,IAAiB;AACnB,GAOG;AACD,SAAIL,MACAC,IAEA,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKL;AAAA,MACL,KAAKC,MAAY,OAAOE,KAAU,WAAWA,IAAQ;AAAA,MACrD,WAAWG,EAAGF,GAAgBF,CAAa;AAAA,IAAA;AAAA,EAAA,IAI1C;AACT;AAEO,SAASK,EAAe,EAAE,OAAAJ,KAAgC;AAC/D,SACE,gBAAAK,EAAC,QAAA,EAAK,WAAU,yEACd,UAAA;AAAA,IAAA,gBAAAH,EAAC,QAAA,EAAK,eAAW,IAAC,WAAU,kDAAiD;AAAA,IAC5EF;AAAA,EAAA,GACH;AAEJ;AAEO,SAASM,EAAwB,EAAE,OAAAN,KAAgC;AACxE,SACE,gBAAAE,EAAC,QAAA,EAAK,WAAU,kFACb,UAAAF,GACH;AAEJ;AAEO,SAASO,EAAmB;AAAA,EACjC,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,eAAAC;AACF,GAIG;AACD,SACE,gBAAAR,EAAC,SAAI,WAAU,yCACZ,YAAQ,IAAI,CAACS,MACZ,gBAAAN,EAAC,OAAA,EACC,UAAA;AAAA,IAAA,gBAAAH,EAAC,MAAA,EAAG,WAAU,2EACX,UAAAS,EAAO,OACV;AAAA,IACA,gBAAAT,EAAC,MAAA,EAAG,WAAU,oBACX,UAAAS,EAAO,MAAM,IAAI,CAACC,MACjB,gBAAAV,EAAC,MAAA,EACC,UAAA,gBAAAA,EAACO,KAAK,MAAMG,EAAK,MAAM,WAAWF,GAC/B,UAAAE,EAAK,OACR,EAAA,GAHOA,EAAK,IAId,CACD,EAAA,CACH;AAAA,EAAA,EAAA,GAZQD,EAAO,KAajB,CACD,GACH;AAEJ;AAEO,SAASE,EAAgB;AAAA,EAC9B,QAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,OAAAf;AAAA,EACA,kBAAAgB;AAAA,EACA,eAAAC;AACF,GAMG;AACD,SACE,gBAAAZ,EAAC,OAAA,EAAI,WAAWW,GACd,UAAA;AAAA,IAAA,gBAAAd,EAAC,QAAA,EAAK,WAAWC,EAAGc,CAAa,GAAI,UAAAH,GAAO;AAAA,IAC3CC,IAAmB,gBAAAb,EAAC,OAAA,EAAK,UAAAa,EAAA,CAAiB,IAAS;AAAA,IACpD,gBAAAV,EAAC,QAAA,EAAK,WAAWF,EAAGc,CAAa,GAAG,UAAA;AAAA,MAAA;AAAA,OAAG,oBAAI,KAAA,GAAO,YAAA;AAAA,MAAc;AAAA,MAAEjB;AAAA,MAAM;AAAA,IAAA,EAAA,CAAsB;AAAA,EAAA,GAChG;AAEJ;"}
@@ -0,0 +1,43 @@
1
+ import { jsx as e, jsxs as r } from "react/jsx-runtime";
2
+ import { cn as v } from "../../../utils/cn.js";
3
+ import { Container as w } from "../../Container.js";
4
+ import { FooterLogoNode as b, FooterWordmark as C, FooterBottomBar as F } from "../parts.js";
5
+ function j({ className: n, brand: t, logo: i, logoSrc: m, logoAlt: d, logoClassName: x, description: a, columns: p, socials: l, bottom: h, languageSwitcher: f, badge: c, LinkComponent: N, ...y }) {
6
+ const g = N ?? "a", u = b({ logo: i, logoSrc: m, logoAlt: d, logoClassName: x, brand: t }) ?? /* @__PURE__ */ e(C, { brand: t });
7
+ return /* @__PURE__ */ e("footer", { className: v("w-full bg-secondary text-on-secondary", n), ...y, children: /* @__PURE__ */ r(w, { className: "py-16", children: [
8
+ /* @__PURE__ */ r("div", { className: "grid grid-cols-2 gap-10 md:grid-cols-4 lg:grid-cols-6", children: [
9
+ /* @__PURE__ */ r("div", { className: "col-span-2", children: [
10
+ /* @__PURE__ */ e("span", { style: { color: "rgb(var(--color-on-secondary))" }, children: u }),
11
+ a ? /* @__PURE__ */ e("p", { className: "mt-4 max-w-xs text-sm leading-6 text-on-secondary/60", children: a }) : null,
12
+ l ? /* @__PURE__ */ e("div", { className: "mt-6 flex items-center gap-3", children: l }) : null,
13
+ c ? /* @__PURE__ */ e("div", { className: "mt-6", children: c }) : null
14
+ ] }),
15
+ p.map((o) => /* @__PURE__ */ r("div", { children: [
16
+ /* @__PURE__ */ e("h3", { className: "text-xs font-semibold uppercase tracking-[0.16em] text-on-secondary/50", children: o.title }),
17
+ /* @__PURE__ */ e("ul", { className: "mt-4 space-y-2.5", children: o.links.map((s) => /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(
18
+ g,
19
+ {
20
+ href: s.href,
21
+ className: "text-sm text-on-secondary/70 transition-colors duration-150 hover:text-on-secondary",
22
+ children: s.label
23
+ }
24
+ ) }, s.href)) })
25
+ ] }, o.title))
26
+ ] }),
27
+ /* @__PURE__ */ e(
28
+ F,
29
+ {
30
+ bottom: h,
31
+ languageSwitcher: f,
32
+ brand: t,
33
+ wrapperClassName: "mt-14 flex flex-col items-center justify-between gap-4 border-t border-white/10 pt-8 text-sm text-on-secondary/50 sm:flex-row",
34
+ textClassName: ""
35
+ }
36
+ )
37
+ ] }) });
38
+ }
39
+ j.displayName = "FooterClassic";
40
+ export {
41
+ j as FooterClassic
42
+ };
43
+ //# sourceMappingURL=Classic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Classic.js","sources":["../../../../../src/components/Footer/variants/Classic.tsx"],"sourcesContent":["import { cn } from \"../../../utils/cn\";\nimport { Container } from \"../../Container\";\nimport type { FooterProps } from \"../types\";\nimport {\n FooterWordmark,\n FooterLogoNode,\n FooterBottomBar,\n} from \"../parts\";\n\ninterface ClassicProps extends FooterProps {}\n\nexport function FooterClassic({ className, brand, logo, logoSrc, logoAlt, logoClassName, description, columns, socials, bottom, languageSwitcher, badge, LinkComponent, ...props }: ClassicProps) {\n const Link = LinkComponent ?? \"a\";\n const brandNode = FooterLogoNode({ logo, logoSrc, logoAlt, logoClassName, brand }) ?? <FooterWordmark brand={brand} />;\n\n return (\n <footer className={cn(\"w-full bg-secondary text-on-secondary\", className)} {...props}>\n <Container className=\"py-16\">\n <div className=\"grid grid-cols-2 gap-10 md:grid-cols-4 lg:grid-cols-6\">\n <div className=\"col-span-2\">\n <span style={{ color: \"rgb(var(--color-on-secondary))\" }}>{brandNode}</span>\n {description ? (\n <p className=\"mt-4 max-w-xs text-sm leading-6 text-on-secondary/60\">{description}</p>\n ) : null}\n {socials ? <div className=\"mt-6 flex items-center gap-3\">{socials}</div> : null}\n {badge ? <div className=\"mt-6\">{badge}</div> : null}\n </div>\n {columns.map((column) => (\n <div key={column.title}>\n <h3 className=\"text-xs font-semibold uppercase tracking-[0.16em] text-on-secondary/50\">\n {column.title}\n </h3>\n <ul className=\"mt-4 space-y-2.5\">\n {column.links.map((link) => (\n <li key={link.href}>\n <Link\n href={link.href}\n className=\"text-sm text-on-secondary/70 transition-colors duration-150 hover:text-on-secondary\"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n <FooterBottomBar\n bottom={bottom}\n languageSwitcher={languageSwitcher}\n brand={brand}\n wrapperClassName=\"mt-14 flex flex-col items-center justify-between gap-4 border-t border-white/10 pt-8 text-sm text-on-secondary/50 sm:flex-row\"\n textClassName=\"\"\n />\n </Container>\n </footer>\n );\n}\nFooterClassic.displayName = \"FooterClassic\";"],"names":["FooterClassic","className","brand","logo","logoSrc","logoAlt","logoClassName","description","columns","socials","bottom","languageSwitcher","badge","LinkComponent","props","Link","brandNode","FooterLogoNode","jsx","FooterWordmark","cn","jsxs","Container","column","link","FooterBottomBar"],"mappings":";;;;AAWO,SAASA,EAAc,EAAE,WAAAC,GAAW,OAAAC,GAAO,MAAAC,GAAM,SAAAC,GAAS,SAAAC,GAAS,eAAAC,GAAe,aAAAC,GAAa,SAAAC,GAAS,SAAAC,GAAS,QAAAC,GAAQ,kBAAAC,GAAkB,OAAAC,GAAO,eAAAC,GAAe,GAAGC,KAAuB;AAChM,QAAMC,IAAOF,KAAiB,KACxBG,IAAYC,EAAe,EAAE,MAAAd,GAAM,SAAAC,GAAS,SAAAC,GAAS,eAAAC,GAAe,OAAAJ,EAAA,CAAO,KAAK,gBAAAgB,EAACC,GAAA,EAAe,OAAAjB,EAAA,CAAc;AAEpH,SACE,gBAAAgB,EAAC,UAAA,EAAO,WAAWE,EAAG,yCAAyCnB,CAAS,GAAI,GAAGa,GAC7E,UAAA,gBAAAO,EAACC,GAAA,EAAU,WAAU,SACnB,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,yDACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,cACb,UAAA;AAAA,QAAA,gBAAAH,EAAC,UAAK,OAAO,EAAE,OAAO,iCAAA,GAAqC,UAAAF,GAAU;AAAA,QACpET,IACC,gBAAAW,EAAC,KAAA,EAAE,WAAU,wDAAwD,aAAY,IAC/E;AAAA,QACHT,IAAU,gBAAAS,EAAC,OAAA,EAAI,WAAU,gCAAgC,aAAQ,IAAS;AAAA,QAC1EN,IAAQ,gBAAAM,EAAC,OAAA,EAAI,WAAU,QAAQ,aAAM,IAAS;AAAA,MAAA,GACjD;AAAA,MACCV,EAAQ,IAAI,CAACe,wBACX,OAAA,EACC,UAAA;AAAA,QAAA,gBAAAL,EAAC,MAAA,EAAG,WAAU,0EACX,UAAAK,EAAO,OACV;AAAA,QACA,gBAAAL,EAAC,MAAA,EAAG,WAAU,oBACX,UAAAK,EAAO,MAAM,IAAI,CAACC,MACjB,gBAAAN,EAAC,MAAA,EACC,UAAA,gBAAAA;AAAA,UAACH;AAAA,UAAA;AAAA,YACC,MAAMS,EAAK;AAAA,YACX,WAAU;AAAA,YAET,UAAAA,EAAK;AAAA,UAAA;AAAA,QAAA,KALDA,EAAK,IAOd,CACD,EAAA,CACH;AAAA,MAAA,EAAA,GAfQD,EAAO,KAgBjB,CACD;AAAA,IAAA,GACH;AAAA,IACA,gBAAAL;AAAA,MAACO;AAAA,MAAA;AAAA,QACC,QAAAf;AAAA,QACA,kBAAAC;AAAA,QACA,OAAAT;AAAA,QACA,kBAAiB;AAAA,QACjB,eAAc;AAAA,MAAA;AAAA,IAAA;AAAA,EAChB,EAAA,CACF,EAAA,CACF;AAEJ;AACAF,EAAc,cAAc;"}
@@ -0,0 +1,39 @@
1
+ import { jsx as e, jsxs as o } from "react/jsx-runtime";
2
+ import { cn as N } from "../../../utils/cn.js";
3
+ import { Container as g } from "../../Container.js";
4
+ import { FooterLogoNode as h, FooterEditorialWordmark as w, FooterColumnsBlock as C, FooterBottomBar as F } from "../parts.js";
5
+ function k({ className: m, brand: r, logo: a, logoSrc: s, logoAlt: d, logoClassName: i, description: t, columns: n, socials: l, bottom: c, languageSwitcher: f, LinkComponent: x, ...u }) {
6
+ const p = x ?? "a", b = h({ logo: a, logoSrc: s, logoAlt: d, logoClassName: i, brand: r, imageClassName: "h-12 w-auto" }) ?? /* @__PURE__ */ e(w, { brand: r });
7
+ return /* @__PURE__ */ e("footer", { className: N("w-full border-t border-border bg-background", m), ...u, children: /* @__PURE__ */ o(g, { className: "py-16 sm:py-20", children: [
8
+ /* @__PURE__ */ o("div", { className: "mb-14 flex flex-col justify-between gap-8 sm:flex-row sm:items-end", children: [
9
+ /* @__PURE__ */ o("div", { children: [
10
+ b,
11
+ t ? /* @__PURE__ */ e("p", { className: "mt-3 max-w-sm text-sm leading-6 text-muted-foreground", children: t }) : null
12
+ ] }),
13
+ l ? /* @__PURE__ */ e("div", { className: "flex items-center gap-3", children: l }) : null
14
+ ] }),
15
+ /* @__PURE__ */ e("div", { className: "border-t border-border pt-12", children: /* @__PURE__ */ e(
16
+ C,
17
+ {
18
+ columns: n,
19
+ Link: p,
20
+ linkClassName: "text-[15px] text-foreground/80 transition-colors duration-150 hover:text-foreground"
21
+ }
22
+ ) }),
23
+ /* @__PURE__ */ e(
24
+ F,
25
+ {
26
+ bottom: c,
27
+ languageSwitcher: f,
28
+ brand: r,
29
+ wrapperClassName: "mt-12 flex flex-col items-center justify-between gap-4 border-t border-border pt-8 text-sm text-muted-foreground sm:flex-row",
30
+ textClassName: ""
31
+ }
32
+ )
33
+ ] }) });
34
+ }
35
+ k.displayName = "FooterEditorial";
36
+ export {
37
+ k as FooterEditorial
38
+ };
39
+ //# sourceMappingURL=Editorial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Editorial.js","sources":["../../../../../src/components/Footer/variants/Editorial.tsx"],"sourcesContent":["import { cn } from \"../../../utils/cn\";\nimport { Container } from \"../../Container\";\nimport type { FooterProps } from \"../types\";\nimport {\n FooterColumnsBlock,\n FooterEditorialWordmark,\n FooterLogoNode,\n FooterBottomBar,\n} from \"../parts\";\n\ninterface EditorialProps extends FooterProps {}\n\nexport function FooterEditorial({ className, brand, logo, logoSrc, logoAlt, logoClassName, description, columns, socials, bottom, languageSwitcher, LinkComponent, ...props }: EditorialProps) {\n const Link = LinkComponent ?? \"a\";\n const brandNode = FooterLogoNode({ logo, logoSrc, logoAlt, logoClassName, brand, imageClassName: \"h-12 w-auto\" }) ?? <FooterEditorialWordmark brand={brand} />;\n\n return (\n <footer className={cn(\"w-full border-t border-border bg-background\", className)} {...props}>\n <Container className=\"py-16 sm:py-20\">\n <div className=\"mb-14 flex flex-col justify-between gap-8 sm:flex-row sm:items-end\">\n <div>\n {brandNode}\n {description ? (\n <p className=\"mt-3 max-w-sm text-sm leading-6 text-muted-foreground\">{description}</p>\n ) : null}\n </div>\n {socials ? <div className=\"flex items-center gap-3\">{socials}</div> : null}\n </div>\n <div className=\"border-t border-border pt-12\">\n <FooterColumnsBlock\n columns={columns}\n Link={Link}\n linkClassName=\"text-[15px] text-foreground/80 transition-colors duration-150 hover:text-foreground\"\n />\n </div>\n <FooterBottomBar\n bottom={bottom}\n languageSwitcher={languageSwitcher}\n brand={brand}\n wrapperClassName=\"mt-12 flex flex-col items-center justify-between gap-4 border-t border-border pt-8 text-sm text-muted-foreground sm:flex-row\"\n textClassName=\"\"\n />\n </Container>\n </footer>\n );\n}\nFooterEditorial.displayName = \"FooterEditorial\";"],"names":["FooterEditorial","className","brand","logo","logoSrc","logoAlt","logoClassName","description","columns","socials","bottom","languageSwitcher","LinkComponent","props","Link","brandNode","FooterLogoNode","jsx","FooterEditorialWordmark","cn","jsxs","Container","FooterColumnsBlock","FooterBottomBar"],"mappings":";;;;AAYO,SAASA,EAAgB,EAAE,WAAAC,GAAW,OAAAC,GAAO,MAAAC,GAAM,SAAAC,GAAS,SAAAC,GAAS,eAAAC,GAAe,aAAAC,GAAa,SAAAC,GAAS,SAAAC,GAAS,QAAAC,GAAQ,kBAAAC,GAAkB,eAAAC,GAAe,GAAGC,KAAyB;AAC7L,QAAMC,IAAOF,KAAiB,KACxBG,IAAYC,EAAe,EAAE,MAAAb,GAAM,SAAAC,GAAS,SAAAC,GAAS,eAAAC,GAAe,OAAAJ,GAAO,gBAAgB,cAAA,CAAe,KAAK,gBAAAe,EAACC,KAAwB,OAAAhB,GAAc;AAE5J,SACE,gBAAAe,EAAC,UAAA,EAAO,WAAWE,EAAG,+CAA+ClB,CAAS,GAAI,GAAGY,GACnF,UAAA,gBAAAO,EAACC,GAAA,EAAU,WAAU,kBACnB,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,sEACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EACE,UAAA;AAAA,QAAAL;AAAA,QACAR,IACC,gBAAAU,EAAC,KAAA,EAAE,WAAU,yDAAyD,aAAY,IAChF;AAAA,MAAA,GACN;AAAA,MACCR,IAAU,gBAAAQ,EAAC,OAAA,EAAI,WAAU,2BAA2B,aAAQ,IAAS;AAAA,IAAA,GACxE;AAAA,IACA,gBAAAA,EAAC,OAAA,EAAI,WAAU,gCACb,UAAA,gBAAAA;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,SAAAd;AAAA,QACA,MAAAM;AAAA,QACA,eAAc;AAAA,MAAA;AAAA,IAAA,GAElB;AAAA,IACA,gBAAAG;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,QAAAb;AAAA,QACA,kBAAAC;AAAA,QACA,OAAAT;AAAA,QACA,kBAAiB;AAAA,QACjB,eAAc;AAAA,MAAA;AAAA,IAAA;AAAA,EAChB,EAAA,CACF,EAAA,CACF;AAEJ;AACAF,EAAgB,cAAc;"}
@@ -0,0 +1,20 @@
1
+ import { jsx as e, jsxs as l } from "react/jsx-runtime";
2
+ import { cn as h } from "../../../utils/cn.js";
3
+ import { Container as N } from "../../Container.js";
4
+ import { FooterLogoNode as g, FooterWordmark as b } from "../parts.js";
5
+ function y({ className: i, brand: o, logo: n, logoSrc: s, logoAlt: a, logoClassName: m, columns: c, languageSwitcher: t, bottom: d, LinkComponent: f, ...x }) {
6
+ const p = f ?? "a", u = g({ logo: n, logoSrc: s, logoAlt: a, logoClassName: m, brand: o }) ?? /* @__PURE__ */ e(b, { brand: o });
7
+ return /* @__PURE__ */ e("footer", { className: h("w-full border-t border-border bg-background", i), ...x, children: /* @__PURE__ */ l(N, { className: "flex flex-col items-center justify-between gap-6 py-10 sm:flex-row", children: [
8
+ u,
9
+ /* @__PURE__ */ e("ul", { className: "flex flex-wrap items-center justify-center gap-x-8 gap-y-3", children: c.flatMap((r) => r.links).slice(0, 6).map((r) => /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(p, { href: r.href, className: "text-sm text-muted-foreground transition-colors duration-150 hover:text-foreground", children: r.label }) }, r.href)) }),
10
+ /* @__PURE__ */ l("div", { className: "flex flex-col items-center gap-3", children: [
11
+ t ? /* @__PURE__ */ e("div", { children: t }) : null,
12
+ /* @__PURE__ */ e("div", { className: "text-sm text-muted-foreground", children: d })
13
+ ] })
14
+ ] }) });
15
+ }
16
+ y.displayName = "FooterMinimal";
17
+ export {
18
+ y as FooterMinimal
19
+ };
20
+ //# sourceMappingURL=Minimal.js.map