@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 @@
1
+ {"version":3,"file":"Minimal.js","sources":["../../../../../src/components/Footer/variants/Minimal.tsx"],"sourcesContent":["import { cn } from \"../../../utils/cn\";\nimport { Container } from \"../../Container\";\nimport type { FooterProps } from \"../types\";\nimport { FooterWordmark, FooterLogoNode } from \"../parts\";\n\ninterface MinimalProps extends FooterProps {}\n\nexport function FooterMinimal({ className, brand, logo, logoSrc, logoAlt, logoClassName, columns, languageSwitcher, bottom, LinkComponent, ...props }: MinimalProps) {\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 border-t border-border bg-background\", className)} {...props}>\n <Container className=\"flex flex-col items-center justify-between gap-6 py-10 sm:flex-row\">\n {brandNode}\n <ul className=\"flex flex-wrap items-center justify-center gap-x-8 gap-y-3\">\n {columns.flatMap((c) => c.links).slice(0, 6).map((link) => (\n <li key={link.href}>\n <Link href={link.href} className=\"text-sm text-muted-foreground transition-colors duration-150 hover:text-foreground\">\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n <div className=\"flex flex-col items-center gap-3\">\n {languageSwitcher ? <div>{languageSwitcher}</div> : null}\n <div className=\"text-sm text-muted-foreground\">{bottom}</div>\n </div>\n </Container>\n </footer>\n );\n}\nFooterMinimal.displayName = \"FooterMinimal\";"],"names":["FooterMinimal","className","brand","logo","logoSrc","logoAlt","logoClassName","columns","languageSwitcher","bottom","LinkComponent","props","Link","brandNode","FooterLogoNode","jsx","FooterWordmark","cn","jsxs","Container","c","link"],"mappings":";;;;AAOO,SAASA,EAAc,EAAE,WAAAC,GAAW,OAAAC,GAAO,MAAAC,GAAM,SAAAC,GAAS,SAAAC,GAAS,eAAAC,GAAe,SAAAC,GAAS,kBAAAC,GAAkB,QAAAC,GAAQ,eAAAC,GAAe,GAAGC,KAAuB;AACnK,QAAMC,IAAOF,KAAiB,KACxBG,IAAYC,EAAe,EAAE,MAAAX,GAAM,SAAAC,GAAS,SAAAC,GAAS,eAAAC,GAAe,OAAAJ,EAAA,CAAO,KAAK,gBAAAa,EAACC,GAAA,EAAe,OAAAd,EAAA,CAAc;AAEpH,SACE,gBAAAa,EAAC,UAAA,EAAO,WAAWE,EAAG,+CAA+ChB,CAAS,GAAI,GAAGU,GACnF,UAAA,gBAAAO,EAACC,GAAA,EAAU,WAAU,sEAClB,UAAA;AAAA,IAAAN;AAAA,IACD,gBAAAE,EAAC,MAAA,EAAG,WAAU,8DACX,YAAQ,QAAQ,CAACK,MAAMA,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,CAACC,MAChD,gBAAAN,EAAC,MAAA,EACC,UAAA,gBAAAA,EAACH,GAAA,EAAK,MAAMS,EAAK,MAAM,WAAU,sFAC9B,YAAK,MAAA,CACR,EAAA,GAHOA,EAAK,IAId,CACD,GACH;AAAA,IACA,gBAAAH,EAAC,OAAA,EAAI,WAAU,oCACZ,UAAA;AAAA,MAAAV,IAAmB,gBAAAO,EAAC,OAAA,EAAK,UAAAP,EAAA,CAAiB,IAAS;AAAA,MACpD,gBAAAO,EAAC,OAAA,EAAI,WAAU,iCAAiC,UAAAN,EAAA,CAAO;AAAA,IAAA,EAAA,CACzD;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;AACAT,EAAc,cAAc;"}
@@ -0,0 +1,11 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { forwardRef as m } from "react";
3
+ import { HeroSplit as i } from "./variants/Split.js";
4
+ import { HeroCentered as f } from "./variants/Centered.js";
5
+ import { HeroStatement as n } from "./variants/Statement.js";
6
+ const p = m(({ variant: o = "split", ...r }, e) => o === "centered" ? /* @__PURE__ */ t(f, { ref: e, ...r }) : o === "statement" ? /* @__PURE__ */ t(n, { ref: e, ...r }) : /* @__PURE__ */ t(i, { ref: e, ...r }));
7
+ p.displayName = "Hero";
8
+ export {
9
+ p as Hero
10
+ };
11
+ //# sourceMappingURL=Hero.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Hero.js","sources":["../../../../src/components/Hero/Hero.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { HeroProps } from \"./types\";\nimport { HeroSplit } from \"./variants/Split\";\nimport { HeroCentered } from \"./variants/Centered\";\nimport { HeroStatement } from \"./variants/Statement\";\n\nexport const Hero = forwardRef<HTMLElement, HeroProps>(({ variant = \"split\", ...props }, ref) => {\n if (variant === \"centered\") return <HeroCentered ref={ref} {...props} />;\n if (variant === \"statement\") return <HeroStatement ref={ref} {...props} />;\n return <HeroSplit ref={ref} {...props} />;\n});\nHero.displayName = \"Hero\";"],"names":["Hero","forwardRef","variant","props","ref","HeroCentered","HeroStatement","jsx","HeroSplit"],"mappings":";;;;;AAMO,MAAMA,IAAOC,EAAmC,CAAC,EAAE,SAAAC,IAAU,SAAS,GAAGC,EAAA,GAASC,MACnFF,MAAY,+BAAoBG,GAAA,EAAa,KAAAD,GAAW,GAAGD,GAAO,IAClED,MAAY,gCAAqBI,GAAA,EAAc,KAAAF,GAAW,GAAGD,GAAO,IACjE,gBAAAI,EAACC,GAAA,EAAU,KAAAJ,GAAW,GAAGD,EAAA,CAAO,CACxC;AACDH,EAAK,cAAc;"}
@@ -0,0 +1,21 @@
1
+ import { jsx as r, jsxs as n } from "react/jsx-runtime";
2
+ const i = "relative mx-auto flex w-full max-w-6xl flex-col items-center px-5 sm:px-8", s = "font-display font-semibold tracking-[-0.03em] text-balance text-foreground";
3
+ function o({ eyebrow: e }) {
4
+ return typeof e == "string" ? /* @__PURE__ */ r("p", { className: "text-xs font-semibold uppercase tracking-[0.2em] text-primary", children: e }) : e ? /* @__PURE__ */ r("div", { children: e }) : null;
5
+ }
6
+ function x({
7
+ primaryAction: e,
8
+ secondaryAction: t
9
+ }) {
10
+ return !e && !t ? null : /* @__PURE__ */ n("div", { className: "flex flex-wrap items-center gap-4", children: [
11
+ e,
12
+ t
13
+ ] });
14
+ }
15
+ export {
16
+ x as HeroActions,
17
+ o as HeroEyebrow,
18
+ i as heroContainer,
19
+ s as heroTitleBase
20
+ };
21
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sources":["../../../../src/components/Hero/parts.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\n\nexport const heroContainer =\n \"relative mx-auto flex w-full max-w-6xl flex-col items-center px-5 sm:px-8\";\n\nexport const heroTitleBase =\n \"font-display font-semibold tracking-[-0.03em] text-balance text-foreground\";\n\nexport function HeroEyebrow({ eyebrow }: { eyebrow?: ReactNode }) {\n if (typeof eyebrow === \"string\") {\n return (\n <p className=\"text-xs font-semibold uppercase tracking-[0.2em] text-primary\">\n {eyebrow}\n </p>\n );\n }\n return eyebrow ? <div>{eyebrow}</div> : null;\n}\n\nexport function HeroActions({\n primaryAction,\n secondaryAction,\n}: {\n primaryAction?: ReactNode;\n secondaryAction?: ReactNode;\n}) {\n if (!primaryAction && !secondaryAction) return null;\n return <div className=\"flex flex-wrap items-center gap-4\">{primaryAction}{secondaryAction}</div>;\n}"],"names":["heroContainer","heroTitleBase","HeroEyebrow","eyebrow","jsx","HeroActions","primaryAction","secondaryAction","jsxs"],"mappings":";AAEO,MAAMA,IACX,6EAEWC,IACX;AAEK,SAASC,EAAY,EAAE,SAAAC,KAAoC;AAChE,SAAI,OAAOA,KAAY,WAEnB,gBAAAC,EAAC,KAAA,EAAE,WAAU,iEACV,UAAAD,GACH,IAGGA,IAAU,gBAAAC,EAAC,OAAA,EAAK,UAAAD,EAAA,CAAQ,IAAS;AAC1C;AAEO,SAASE,EAAY;AAAA,EAC1B,eAAAC;AAAA,EACA,iBAAAC;AACF,GAGG;AACD,SAAI,CAACD,KAAiB,CAACC,IAAwB,OACxC,gBAAAC,EAAC,OAAA,EAAI,WAAU,qCAAqC,UAAA;AAAA,IAAAF;AAAA,IAAeC;AAAA,EAAA,GAAgB;AAC5F;"}
@@ -0,0 +1,41 @@
1
+ import { jsx as e, jsxs as n } from "react/jsx-runtime";
2
+ import { forwardRef as b } from "react";
3
+ import { cn as r } from "../../../utils/cn.js";
4
+ import { HeroEyebrow as g, heroTitleBase as h, HeroActions as N, heroContainer as w } from "../parts.js";
5
+ const j = b(
6
+ ({ className: d, eyebrow: c, title: x, description: t, primaryAction: s, secondaryAction: a, media: m, meta: o, id: i, ...p }, u) => /* @__PURE__ */ e(
7
+ "section",
8
+ {
9
+ ref: u,
10
+ id: i,
11
+ className: r("relative w-full border-b border-border bg-background", d),
12
+ ...p,
13
+ children: /* @__PURE__ */ n("div", { className: r(w, "pt-24 pb-20 text-center sm:pt-32 sm:pb-24"), children: [
14
+ /* @__PURE__ */ e(g, { eyebrow: c }),
15
+ /* @__PURE__ */ e("h1", { className: r(h, "mt-7 max-w-4xl text-5xl leading-[1.04] sm:text-6xl lg:text-7xl"), children: x }),
16
+ t ? /* @__PURE__ */ e("p", { className: "mx-auto mt-7 max-w-xl text-pretty leading-relaxed text-muted-foreground sm:text-lg", children: t }) : null,
17
+ s || a ? /* @__PURE__ */ e("div", { className: "mt-10 justify-center", children: /* @__PURE__ */ e(N, { primaryAction: s, secondaryAction: a }) }) : null,
18
+ o ? /* @__PURE__ */ e("ul", { className: "mt-14 flex flex-wrap items-center justify-center gap-x-9 gap-y-3", children: o.map((l, f) => /* @__PURE__ */ n(
19
+ "li",
20
+ {
21
+ className: r(
22
+ "flex items-center gap-2 text-sm text-muted-foreground",
23
+ f > 0 && "sm:border-l sm:border-border sm:pl-9"
24
+ ),
25
+ children: [
26
+ l.icon ? /* @__PURE__ */ e("span", { className: "text-foreground/35", children: l.icon }) : null,
27
+ l.label
28
+ ]
29
+ },
30
+ l.label
31
+ )) }) : null,
32
+ m ? /* @__PURE__ */ e("div", { className: "mt-16 w-full", children: m }) : null
33
+ ] })
34
+ }
35
+ )
36
+ );
37
+ j.displayName = "HeroCentered";
38
+ export {
39
+ j as HeroCentered
40
+ };
41
+ //# sourceMappingURL=Centered.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Centered.js","sources":["../../../../../src/components/Hero/variants/Centered.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { HeroActions, HeroEyebrow, heroContainer, heroTitleBase } from \"../parts\";\nimport type { HeroProps } from \"../types\";\n\n/** Centered — understated, one statement, generous white space. */\nexport const HeroCentered = forwardRef<HTMLElement, HeroProps>(\n (\n { className, eyebrow, title, description, primaryAction, secondaryAction, media, meta, id, ...props },\n ref,\n ) => (\n <section\n ref={ref}\n id={id}\n className={cn(\"relative w-full border-b border-border bg-background\", className)}\n {...props}\n >\n <div className={cn(heroContainer, \"pt-24 pb-20 text-center sm:pt-32 sm:pb-24\")}>\n <HeroEyebrow eyebrow={eyebrow} />\n <h1 className={cn(heroTitleBase, \"mt-7 max-w-4xl text-5xl leading-[1.04] sm:text-6xl lg:text-7xl\")}>\n {title}\n </h1>\n {description ? (\n <p className=\"mx-auto mt-7 max-w-xl text-pretty leading-relaxed text-muted-foreground sm:text-lg\">\n {description}\n </p>\n ) : null}\n {primaryAction || secondaryAction ? (\n <div className=\"mt-10 justify-center\">\n <HeroActions primaryAction={primaryAction} secondaryAction={secondaryAction} />\n </div>\n ) : null}\n {meta ? (\n <ul className=\"mt-14 flex flex-wrap items-center justify-center gap-x-9 gap-y-3\">\n {meta.map((m, i) => (\n <li\n key={m.label}\n className={cn(\n \"flex items-center gap-2 text-sm text-muted-foreground\",\n i > 0 && \"sm:border-l sm:border-border sm:pl-9\",\n )}\n >\n {m.icon ? <span className=\"text-foreground/35\">{m.icon}</span> : null}\n {m.label}\n </li>\n ))}\n </ul>\n ) : null}\n {media ? <div className=\"mt-16 w-full\">{media}</div> : null}\n </div>\n </section>\n ),\n);\nHeroCentered.displayName = \"HeroCentered\";"],"names":["HeroCentered","forwardRef","className","eyebrow","title","description","primaryAction","secondaryAction","media","meta","id","props","ref","jsx","cn","heroContainer","HeroEyebrow","heroTitleBase","HeroActions","m","i","jsxs"],"mappings":";;;;AAMO,MAAMA,IAAeC;AAAA,EAC1B,CACE,EAAE,WAAAC,GAAW,SAAAC,GAAS,OAAAC,GAAO,aAAAC,GAAa,eAAAC,GAAe,iBAAAC,GAAiB,OAAAC,GAAO,MAAAC,GAAM,IAAAC,GAAI,GAAGC,EAAA,GAC9FC,MAEA,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,IAAAF;AAAA,MACA,WAAWI,EAAG,wDAAwDZ,CAAS;AAAA,MAC9E,GAAGS;AAAA,MAEJ,4BAAC,OAAA,EAAI,WAAWG,EAAGC,GAAe,2CAA2C,GAC3E,UAAA;AAAA,QAAA,gBAAAF,EAACG,KAAY,SAAAb,GAAkB;AAAA,0BAC9B,MAAA,EAAG,WAAWW,EAAGG,GAAe,gEAAgE,GAC9F,UAAAb,GACH;AAAA,QACCC,IACC,gBAAAQ,EAAC,KAAA,EAAE,WAAU,sFACV,aACH,IACE;AAAA,QACHP,KAAiBC,IAChB,gBAAAM,EAAC,OAAA,EAAI,WAAU,wBACb,UAAA,gBAAAA,EAACK,GAAA,EAAY,eAAAZ,GAA8B,iBAAAC,EAAA,CAAkC,EAAA,CAC/E,IACE;AAAA,QACHE,sBACE,MAAA,EAAG,WAAU,oEACX,UAAAA,EAAK,IAAI,CAACU,GAAGC,MACZ,gBAAAC;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAWP;AAAA,cACT;AAAA,cACAM,IAAI,KAAK;AAAA,YAAA;AAAA,YAGV,UAAA;AAAA,cAAAD,EAAE,OAAO,gBAAAN,EAAC,QAAA,EAAK,WAAU,sBAAsB,UAAAM,EAAE,MAAK,IAAU;AAAA,cAChEA,EAAE;AAAA,YAAA;AAAA,UAAA;AAAA,UAPEA,EAAE;AAAA,QAAA,CASV,GACH,IACE;AAAA,QACHX,IAAQ,gBAAAK,EAAC,OAAA,EAAI,WAAU,gBAAgB,aAAM,IAAS;AAAA,MAAA,EAAA,CACzD;AAAA,IAAA;AAAA,EAAA;AAGN;AACAb,EAAa,cAAc;"}
@@ -0,0 +1,36 @@
1
+ import { jsx as e, jsxs as r } from "react/jsx-runtime";
2
+ import { forwardRef as f } from "react";
3
+ import { cn as t } from "../../../utils/cn.js";
4
+ import { HeroEyebrow as b, heroTitleBase as u, HeroActions as h, heroContainer as N } from "../parts.js";
5
+ const w = f(
6
+ ({ className: i, eyebrow: n, title: c, description: a, primaryAction: s, secondaryAction: o, media: d, meta: m, id: x, ...p }, g) => /* @__PURE__ */ e(
7
+ "section",
8
+ {
9
+ ref: g,
10
+ id: x,
11
+ className: t("relative w-full border-b border-border bg-background", i),
12
+ ...p,
13
+ children: /* @__PURE__ */ r("div", { className: t(
14
+ N,
15
+ "items-start gap-14 pt-20 pb-20 sm:pt-28 sm:pb-28 lg:grid lg:grid-cols-[1.05fr_0.95fr] lg:gap-20"
16
+ ), children: [
17
+ /* @__PURE__ */ r("div", { className: "max-w-xl", children: [
18
+ /* @__PURE__ */ e(b, { eyebrow: n }),
19
+ /* @__PURE__ */ e("h1", { className: t(u, "mt-6 text-5xl leading-[1.03] sm:text-6xl lg:text-7xl"), children: c }),
20
+ a ? /* @__PURE__ */ e("p", { className: "mt-7 max-w-md text-pretty leading-relaxed text-muted-foreground sm:text-lg", children: a }) : null,
21
+ s || o ? /* @__PURE__ */ e("div", { className: "mt-10", children: /* @__PURE__ */ e(h, { primaryAction: s, secondaryAction: o }) }) : null,
22
+ m ? /* @__PURE__ */ e("ul", { className: "mt-14 flex flex-wrap items-center gap-x-8 gap-y-3 border-t border-border pt-6", children: m.map((l) => /* @__PURE__ */ r("li", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
23
+ l.icon ? /* @__PURE__ */ e("span", { className: "text-foreground/35", children: l.icon }) : null,
24
+ l.label
25
+ ] }, l.label)) }) : null
26
+ ] }),
27
+ d ? /* @__PURE__ */ e("div", { className: "w-full self-center", children: d }) : null
28
+ ] })
29
+ }
30
+ )
31
+ );
32
+ w.displayName = "HeroSplit";
33
+ export {
34
+ w as HeroSplit
35
+ };
36
+ //# sourceMappingURL=Split.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Split.js","sources":["../../../../../src/components/Hero/variants/Split.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { HeroActions, HeroEyebrow, heroContainer, heroTitleBase } from \"../parts\";\nimport type { HeroProps } from \"../types\";\n\n/** Split — editorial grid: huge type left, media right, meta rule under. */\nexport const HeroSplit = forwardRef<HTMLElement, HeroProps>(\n (\n { className, eyebrow, title, description, primaryAction, secondaryAction, media, meta, id, ...props },\n ref,\n ) => (\n <section\n ref={ref}\n id={id}\n className={cn(\"relative w-full border-b border-border bg-background\", className)}\n {...props}\n >\n <div className={cn(\n heroContainer,\n \"items-start gap-14 pt-20 pb-20 sm:pt-28 sm:pb-28 lg:grid lg:grid-cols-[1.05fr_0.95fr] lg:gap-20\",\n )}>\n <div className=\"max-w-xl\">\n <HeroEyebrow eyebrow={eyebrow} />\n <h1 className={cn(heroTitleBase, \"mt-6 text-5xl leading-[1.03] sm:text-6xl lg:text-7xl\")}>\n {title}\n </h1>\n {description ? (\n <p className=\"mt-7 max-w-md text-pretty leading-relaxed text-muted-foreground sm:text-lg\">\n {description}\n </p>\n ) : null}\n {primaryAction || secondaryAction ? (\n <div className=\"mt-10\">\n <HeroActions primaryAction={primaryAction} secondaryAction={secondaryAction} />\n </div>\n ) : null}\n {meta ? (\n <ul className=\"mt-14 flex flex-wrap items-center gap-x-8 gap-y-3 border-t border-border pt-6\">\n {meta.map((m) => (\n <li key={m.label} className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n {m.icon ? <span className=\"text-foreground/35\">{m.icon}</span> : null}\n {m.label}\n </li>\n ))}\n </ul>\n ) : null}\n </div>\n {media ? <div className=\"w-full self-center\">{media}</div> : null}\n </div>\n </section>\n ),\n);\nHeroSplit.displayName = \"HeroSplit\";"],"names":["HeroSplit","forwardRef","className","eyebrow","title","description","primaryAction","secondaryAction","media","meta","id","props","ref","jsx","cn","jsxs","heroContainer","HeroEyebrow","heroTitleBase","HeroActions","m"],"mappings":";;;;AAMO,MAAMA,IAAYC;AAAA,EACvB,CACE,EAAE,WAAAC,GAAW,SAAAC,GAAS,OAAAC,GAAO,aAAAC,GAAa,eAAAC,GAAe,iBAAAC,GAAiB,OAAAC,GAAO,MAAAC,GAAM,IAAAC,GAAI,GAAGC,EAAA,GAC9FC,MAEA,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,IAAAF;AAAA,MACA,WAAWI,EAAG,wDAAwDZ,CAAS;AAAA,MAC9E,GAAGS;AAAA,MAEJ,UAAA,gBAAAI,EAAC,SAAI,WAAWD;AAAA,QACdE;AAAA,QACA;AAAA,MAAA,GAEA,UAAA;AAAA,QAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,YACb,UAAA;AAAA,UAAA,gBAAAF,EAACI,KAAY,SAAAd,GAAkB;AAAA,4BAC9B,MAAA,EAAG,WAAWW,EAAGI,GAAe,sDAAsD,GACpF,UAAAd,GACH;AAAA,UACCC,IACC,gBAAAQ,EAAC,KAAA,EAAE,WAAU,8EACV,aACH,IACE;AAAA,UACHP,KAAiBC,IAChB,gBAAAM,EAAC,OAAA,EAAI,WAAU,SACb,UAAA,gBAAAA,EAACM,GAAA,EAAY,eAAAb,GAA8B,iBAAAC,EAAA,CAAkC,EAAA,CAC/E,IACE;AAAA,UACHE,IACC,gBAAAI,EAAC,MAAA,EAAG,WAAU,iFACX,UAAAJ,EAAK,IAAI,CAACW,MACT,gBAAAL,EAAC,MAAA,EAAiB,WAAU,yDACzB,UAAA;AAAA,YAAAK,EAAE,OAAO,gBAAAP,EAAC,QAAA,EAAK,WAAU,sBAAsB,UAAAO,EAAE,MAAK,IAAU;AAAA,YAChEA,EAAE;AAAA,UAAA,EAAA,GAFIA,EAAE,KAGX,CACD,EAAA,CACH,IACE;AAAA,QAAA,GACN;AAAA,QACCZ,IAAQ,gBAAAK,EAAC,OAAA,EAAI,WAAU,sBAAsB,aAAM,IAAS;AAAA,MAAA,EAAA,CAC/D;AAAA,IAAA;AAAA,EAAA;AAGN;AACAb,EAAU,cAAc;"}
@@ -0,0 +1,46 @@
1
+ "use client";
2
+ import { jsxs as a, jsx as e } from "react/jsx-runtime";
3
+ import { forwardRef as f } from "react";
4
+ import { cn as i } from "../../../utils/cn.js";
5
+ import { useTokenForeground as u } from "../../../utils/useTokenForeground.js";
6
+ import { HeroActions as h, heroContainer as y } from "../parts.js";
7
+ const g = f(
8
+ ({ className: m, title: c, description: r, primaryAction: n, secondaryAction: o, media: b, meta: s, id: d, ...x }, p) => {
9
+ const t = u("--color-secondary");
10
+ return /* @__PURE__ */ a(
11
+ "section",
12
+ {
13
+ ref: p,
14
+ id: d,
15
+ className: i("relative w-full overflow-hidden bg-secondary", m),
16
+ style: { color: t },
17
+ ...x,
18
+ children: [
19
+ /* @__PURE__ */ e("div", { "aria-hidden": !0, className: "pointer-events-none absolute inset-0 grain opacity-[0.07] mix-blend-overlay" }),
20
+ /* @__PURE__ */ e("div", { "aria-hidden": !0, className: "pointer-events-none absolute inset-x-0 top-0 h-px bg-white/10" }),
21
+ /* @__PURE__ */ a("div", { className: i(y, "pt-28 pb-24 text-center sm:pt-36 sm:pb-32"), children: [
22
+ /* @__PURE__ */ e(
23
+ "h1",
24
+ {
25
+ className: "max-w-5xl font-display text-[2.9rem] font-semibold leading-[1.02] tracking-[-0.04em] text-balance sm:text-7xl lg:text-8xl",
26
+ style: { color: t },
27
+ children: c
28
+ }
29
+ ),
30
+ r ? /* @__PURE__ */ e("p", { className: "mx-auto mt-8 max-w-xl text-pretty leading-relaxed sm:text-lg", style: { color: t, opacity: 0.72 }, children: r }) : null,
31
+ n || o ? /* @__PURE__ */ e("div", { className: "mt-11 justify-center", children: /* @__PURE__ */ e(h, { primaryAction: n, secondaryAction: o }) }) : null,
32
+ s ? /* @__PURE__ */ e("ul", { className: "mt-16 flex flex-wrap items-center justify-center gap-x-10 gap-y-3", children: s.map((l) => /* @__PURE__ */ a("li", { className: "flex items-center gap-2 text-sm font-medium", style: { color: t, opacity: 0.72 }, children: [
33
+ l.icon ? /* @__PURE__ */ e("span", { children: l.icon }) : null,
34
+ l.label
35
+ ] }, l.label)) }) : null
36
+ ] })
37
+ ]
38
+ }
39
+ );
40
+ }
41
+ );
42
+ g.displayName = "HeroStatement";
43
+ export {
44
+ g as HeroStatement
45
+ };
46
+ //# sourceMappingURL=Statement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Statement.js","sources":["../../../../../src/components/Hero/variants/Statement.tsx"],"sourcesContent":["\"use client\";\nimport { forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useTokenForeground } from \"../../../utils/useTokenForeground\";\nimport { HeroActions, heroContainer } from \"../parts\";\nimport type { HeroProps } from \"../types\";\n\n/** Statement — full-bleed ink band. No eyebrow, pure message. */\nexport const HeroStatement = forwardRef<HTMLElement, HeroProps>(\n (\n { className, title, description, primaryAction, secondaryAction, media, meta, id, ...props },\n ref,\n ) => {\n // Statement paints its own background from --color-secondary, so the\n // readable text color must be derived from THAT token, not the brand.\n const fg = useTokenForeground(\"--color-secondary\");\n\n return (\n <section\n ref={ref}\n id={id}\n className={cn(\"relative w-full overflow-hidden bg-secondary\", className)}\n style={{ color: fg }}\n {...props}\n >\n <div aria-hidden className=\"pointer-events-none absolute inset-0 grain opacity-[0.07] mix-blend-overlay\" />\n <div aria-hidden className=\"pointer-events-none absolute inset-x-0 top-0 h-px bg-white/10\" />\n <div className={cn(heroContainer, \"pt-28 pb-24 text-center sm:pt-36 sm:pb-32\")}>\n <h1\n className=\"max-w-5xl font-display text-[2.9rem] font-semibold leading-[1.02] tracking-[-0.04em] text-balance sm:text-7xl lg:text-8xl\"\n style={{ color: fg }}\n >\n {title}\n </h1>\n {description ? (\n <p className=\"mx-auto mt-8 max-w-xl text-pretty leading-relaxed sm:text-lg\" style={{ color: fg, opacity: 0.72 }}>\n {description}\n </p>\n ) : null}\n {primaryAction || secondaryAction ? (\n <div className=\"mt-11 justify-center\">\n <HeroActions primaryAction={primaryAction} secondaryAction={secondaryAction} />\n </div>\n ) : null}\n {meta ? (\n <ul className=\"mt-16 flex flex-wrap items-center justify-center gap-x-10 gap-y-3\">\n {meta.map((m) => (\n <li key={m.label} className=\"flex items-center gap-2 text-sm font-medium\" style={{ color: fg, opacity: 0.72 }}>\n {m.icon ? <span>{m.icon}</span> : null}\n {m.label}\n </li>\n ))}\n </ul>\n ) : null}\n </div>\n </section>\n );\n },\n);\nHeroStatement.displayName = \"HeroStatement\";"],"names":["HeroStatement","forwardRef","className","title","description","primaryAction","secondaryAction","media","meta","id","props","ref","fg","useTokenForeground","jsxs","cn","jsx","heroContainer","HeroActions","m"],"mappings":";;;;;AAQO,MAAMA,IAAgBC;AAAA,EAC3B,CACE,EAAE,WAAAC,GAAW,OAAAC,GAAO,aAAAC,GAAa,eAAAC,GAAe,iBAAAC,GAAiB,OAAAC,GAAO,MAAAC,GAAM,IAAAC,GAAI,GAAGC,EAAA,GACrFC,MACG;AAGH,UAAMC,IAAKC,EAAmB,mBAAmB;AAEjD,WACE,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAH;AAAA,QACA,IAAAF;AAAA,QACA,WAAWM,EAAG,gDAAgDb,CAAS;AAAA,QACvE,OAAO,EAAE,OAAOU,EAAA;AAAA,QACf,GAAGF;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAM,EAAC,OAAA,EAAI,eAAW,IAAC,WAAU,+EAA8E;AAAA,UACzG,gBAAAA,EAAC,OAAA,EAAI,eAAW,IAAC,WAAU,iEAAgE;AAAA,4BAC1F,OAAA,EAAI,WAAWD,EAAGE,GAAe,2CAA2C,GAC3E,UAAA;AAAA,YAAA,gBAAAD;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,OAAO,EAAE,OAAOJ,EAAA;AAAA,gBAEf,UAAAT;AAAA,cAAA;AAAA,YAAA;AAAA,YAEFC,IACC,gBAAAY,EAAC,KAAA,EAAE,WAAU,gEAA+D,OAAO,EAAE,OAAOJ,GAAI,SAAS,KAAA,GACtG,aACH,IACE;AAAA,YACHP,KAAiBC,IAChB,gBAAAU,EAAC,OAAA,EAAI,WAAU,wBACb,UAAA,gBAAAA,EAACE,GAAA,EAAY,eAAAb,GAA8B,iBAAAC,EAAA,CAAkC,EAAA,CAC/E,IACE;AAAA,YACHE,IACC,gBAAAQ,EAAC,MAAA,EAAG,WAAU,qEACX,UAAAR,EAAK,IAAI,CAACW,wBACR,MAAA,EAAiB,WAAU,+CAA8C,OAAO,EAAE,OAAOP,GAAI,SAAS,QACpG,UAAA;AAAA,cAAAO,EAAE,OAAO,gBAAAH,EAAC,QAAA,EAAM,UAAAG,EAAE,MAAK,IAAU;AAAA,cACjCA,EAAE;AAAA,YAAA,EAAA,GAFIA,EAAE,KAGX,CACD,EAAA,CACH,IACE;AAAA,UAAA,EAAA,CACN;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AACAnB,EAAc,cAAc;"}
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ import { jsx as p } from "react/jsx-runtime";
3
+ import { useLanguageSwitcher as u } from "./useLanguageSwitcher.js";
4
+ import { LanguageSwitcherDropdown as m } from "./variants/Dropdown.js";
5
+ import { LanguageSwitcherModal as g } from "./variants/Modal.js";
6
+ const s = ({
7
+ option: a = "dropdown",
8
+ languages: t,
9
+ value: e,
10
+ defaultValue: n,
11
+ onChange: o,
12
+ ...c
13
+ }) => {
14
+ const r = u(t, e, n, o);
15
+ if (t.length === 0) return null;
16
+ const i = {
17
+ languages: t,
18
+ value: e,
19
+ defaultValue: n,
20
+ onChange: o,
21
+ ...c,
22
+ open: r.open,
23
+ onOpenChange: r.setOpen,
24
+ current: r.current,
25
+ currentLang: r.currentLang,
26
+ setCurrent: r.setCurrent
27
+ };
28
+ return a === "modal" ? /* @__PURE__ */ p(g, { ...i }) : /* @__PURE__ */ p(m, { ...i });
29
+ };
30
+ s.displayName = "LanguageSwitcher";
31
+ export {
32
+ s as LanguageSwitcher
33
+ };
34
+ //# sourceMappingURL=LanguageSwitcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageSwitcher.js","sources":["../../../../src/components/LanguageSwitcher/LanguageSwitcher.tsx"],"sourcesContent":["\"use client\";\nimport type { LanguageSwitcherProps } from \"./types\";\nimport { useLanguageSwitcher } from \"./useLanguageSwitcher\";\nimport { LanguageSwitcherDropdown } from \"./variants/Dropdown\";\nimport { LanguageSwitcherModal } from \"./variants/Modal\";\n\nexport const LanguageSwitcher = ({\n option = \"dropdown\",\n languages,\n value,\n defaultValue,\n onChange,\n ...props\n}: LanguageSwitcherProps) => {\n const state = useLanguageSwitcher(languages, value, defaultValue, onChange);\n\n if (languages.length === 0) return null;\n\n const variantProps = {\n languages,\n value,\n defaultValue,\n onChange,\n ...props,\n open: state.open,\n onOpenChange: state.setOpen,\n current: state.current,\n currentLang: state.currentLang,\n setCurrent: state.setCurrent,\n };\n\n if (option === \"modal\") {\n return <LanguageSwitcherModal {...variantProps} />;\n }\n return <LanguageSwitcherDropdown {...variantProps} />;\n};\nLanguageSwitcher.displayName = \"LanguageSwitcher\";"],"names":["LanguageSwitcher","option","languages","value","defaultValue","onChange","props","state","useLanguageSwitcher","variantProps","jsx","LanguageSwitcherModal","LanguageSwitcherDropdown"],"mappings":";;;;AAMO,MAAMA,IAAmB,CAAC;AAAA,EAC/B,QAAAC,IAAS;AAAA,EACT,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,MAA6B;AAC3B,QAAMC,IAAQC,EAAoBN,GAAWC,GAAOC,GAAcC,CAAQ;AAE1E,MAAIH,EAAU,WAAW,EAAG,QAAO;AAEnC,QAAMO,IAAe;AAAA,IACnB,WAAAP;AAAA,IACA,OAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,IACH,MAAMC,EAAM;AAAA,IACZ,cAAcA,EAAM;AAAA,IACpB,SAASA,EAAM;AAAA,IACf,aAAaA,EAAM;AAAA,IACnB,YAAYA,EAAM;AAAA,EAAA;AAGpB,SAAIN,MAAW,UACN,gBAAAS,EAACC,GAAA,EAAuB,GAAGF,EAAA,CAAc,IAE3C,gBAAAC,EAACE,GAAA,EAA0B,GAAGH,EAAA,CAAc;AACrD;AACAT,EAAiB,cAAc;"}
@@ -0,0 +1,107 @@
1
+ "use client";
2
+ import { jsxs as u, jsx as i } from "react/jsx-runtime";
3
+ import { useEffect as c } from "react";
4
+ import { cn as s } from "../../utils/cn.js";
5
+ import { iso2ToFlagEmoji as m } from "../../utils/iso2Flag.js";
6
+ import { Globe as a, ChevronDown as f, Check as g } from "../../icons.js";
7
+ function y(o, t, r) {
8
+ c(() => {
9
+ if (!o) return;
10
+ const e = (n) => {
11
+ t.current && !t.current.contains(n.target) && r();
12
+ }, d = (n) => {
13
+ n.key === "Escape" && r();
14
+ };
15
+ return document.addEventListener("pointerdown", e), document.addEventListener("keydown", d), () => {
16
+ document.removeEventListener("pointerdown", e), document.removeEventListener("keydown", d);
17
+ };
18
+ }, [o, t, r]);
19
+ }
20
+ function l(o, { size: t = "text-sm", globeClass: r = "text-muted-foreground" } = {}) {
21
+ const e = m(o);
22
+ return e ? /* @__PURE__ */ i("span", { "aria-hidden": !0, className: s(t, "leading-none"), children: e }) : /* @__PURE__ */ i(a, { className: s("h-4 w-4 shrink-0", r) });
23
+ }
24
+ function v({
25
+ inverse: o,
26
+ open: t,
27
+ showFlag: r,
28
+ currentLang: e,
29
+ onClick: d,
30
+ ariaProps: n
31
+ }) {
32
+ return /* @__PURE__ */ u(
33
+ "button",
34
+ {
35
+ type: "button",
36
+ "aria-haspopup": n.haspopup,
37
+ "aria-expanded": n.expanded,
38
+ "aria-controls": n.controls,
39
+ onClick: d,
40
+ className: s(
41
+ "inline-flex h-9 cursor-pointer items-center gap-1.5 rounded-lg border px-3 text-[13px] font-medium transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
42
+ o ? "border-white/10 text-on-secondary hover:bg-white/10" : "border-border text-foreground hover:bg-surface"
43
+ ),
44
+ children: [
45
+ r ? l(e.code, { globeClass: o ? "opacity-70" : "text-muted-foreground" }) : /* @__PURE__ */ i(
46
+ a,
47
+ {
48
+ className: s("h-4 w-4", o ? "opacity-70" : "text-muted-foreground")
49
+ }
50
+ ),
51
+ /* @__PURE__ */ i("span", { className: "tracking-tight", children: e.label }),
52
+ /* @__PURE__ */ i(
53
+ f,
54
+ {
55
+ className: s(
56
+ "h-3.5 w-3.5 transition-transform duration-150",
57
+ t && "rotate-180",
58
+ o ? "opacity-70" : "text-muted-foreground"
59
+ )
60
+ }
61
+ )
62
+ ]
63
+ }
64
+ );
65
+ }
66
+ function N({
67
+ lang: o,
68
+ active: t,
69
+ onSelect: r,
70
+ variant: e,
71
+ showFlag: d
72
+ }) {
73
+ return /* @__PURE__ */ u(
74
+ "button",
75
+ {
76
+ type: "button",
77
+ role: "option",
78
+ "aria-selected": t,
79
+ onClick: r,
80
+ className: e === "modal" ? s(
81
+ "flex w-full cursor-pointer items-center justify-between gap-3 rounded-lg border px-4 py-3 text-left transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
82
+ t ? "border-primary/40 bg-primary-soft text-foreground" : "border-border text-foreground hover:bg-surface-strong"
83
+ ) : s(
84
+ "flex w-full cursor-pointer items-center justify-between gap-3 rounded-md px-3 py-2 text-[13px] font-medium transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
85
+ t ? "bg-surface-strong text-foreground" : "text-muted-foreground hover:bg-surface-strong hover:text-foreground"
86
+ ),
87
+ children: [
88
+ /* @__PURE__ */ u("span", { className: e === "modal" ? "flex items-center gap-3" : "flex items-center gap-2.5", children: [
89
+ d ? l(o.code, e === "modal" ? { size: "text-base" } : {}) : null,
90
+ /* @__PURE__ */ i("span", { className: "text-sm font-medium", children: o.label })
91
+ ] }),
92
+ /* @__PURE__ */ u("span", { className: e === "modal" ? "flex items-center gap-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground" : void 0, children: [
93
+ e === "modal" ? o.code : null,
94
+ t ? /* @__PURE__ */ i(g, { className: e === "modal" ? "h-4 w-4 text-primary" : "h-3.5 w-3.5 text-primary" }) : null
95
+ ] })
96
+ ]
97
+ },
98
+ o.code
99
+ );
100
+ }
101
+ export {
102
+ N as LanguageOptionRow,
103
+ v as LanguageTrigger,
104
+ l as renderFlagOrGlobe,
105
+ y as useOutsideClose
106
+ };
107
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sources":["../../../../src/components/LanguageSwitcher/parts.tsx"],"sourcesContent":["\"use client\";\nimport { useEffect } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { iso2ToFlagEmoji } from \"../../utils/iso2Flag\";\nimport { Check, ChevronDown, Globe } from \"../../icons\";\nimport type { LanguageOption } from \"./types\";\n\nexport function useOutsideClose(\n open: boolean,\n rootRef: { current: HTMLDivElement | null },\n onClose: () => void,\n) {\n useEffect(() => {\n if (!open) return;\n const onPointerDown = (event: PointerEvent) => {\n if (rootRef.current && !rootRef.current.contains(event.target as Node)) {\n onClose();\n }\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") onClose();\n };\n document.addEventListener(\"pointerdown\", onPointerDown);\n document.addEventListener(\"keydown\", onKeyDown);\n return () => {\n document.removeEventListener(\"pointerdown\", onPointerDown);\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [open, rootRef, onClose]);\n}\n\nexport function renderFlagOrGlobe(\n code: string,\n { size = \"text-sm\", globeClass = \"text-muted-foreground\" }: { size?: string; globeClass?: string } = {},\n) {\n const flag = iso2ToFlagEmoji(code);\n return flag ? (\n <span aria-hidden className={cn(size, \"leading-none\")}>\n {flag}\n </span>\n ) : (\n <Globe className={cn(\"h-4 w-4 shrink-0\", globeClass)} />\n );\n}\n\nexport function LanguageTrigger({\n inverse,\n open,\n showFlag,\n currentLang,\n onClick,\n ariaProps,\n}: {\n inverse?: boolean;\n open: boolean;\n showFlag?: boolean;\n currentLang: LanguageOption;\n onClick: () => void;\n ariaProps: {\n haspopup: \"listbox\" | \"dialog\";\n expanded: boolean;\n controls?: string;\n };\n}) {\n return (\n <button\n type=\"button\"\n aria-haspopup={ariaProps.haspopup}\n aria-expanded={ariaProps.expanded}\n aria-controls={ariaProps.controls}\n onClick={onClick}\n className={cn(\n \"inline-flex h-9 cursor-pointer items-center gap-1.5 rounded-lg border px-3 text-[13px] font-medium transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n inverse\n ? \"border-white/10 text-on-secondary hover:bg-white/10\"\n : \"border-border text-foreground hover:bg-surface\",\n )}\n >\n {showFlag ? (\n renderFlagOrGlobe(currentLang.code, { globeClass: inverse ? \"opacity-70\" : \"text-muted-foreground\" })\n ) : (\n <Globe\n className={cn(\"h-4 w-4\", inverse ? \"opacity-70\" : \"text-muted-foreground\")}\n />\n )}\n <span className=\"tracking-tight\">{currentLang.label}</span>\n <ChevronDown\n className={cn(\n \"h-3.5 w-3.5 transition-transform duration-150\",\n open && \"rotate-180\",\n inverse ? \"opacity-70\" : \"text-muted-foreground\",\n )}\n />\n </button>\n );\n}\n\nexport function LanguageOptionRow({\n lang,\n active,\n onSelect,\n variant,\n showFlag,\n}: {\n lang: LanguageOption;\n active: boolean;\n onSelect: () => void;\n variant: \"dropdown\" | \"modal\";\n showFlag?: boolean;\n}) {\n return (\n <button\n key={lang.code}\n type=\"button\"\n role=\"option\"\n aria-selected={active}\n onClick={onSelect}\n className={\n variant === \"modal\"\n ? cn(\n \"flex w-full cursor-pointer items-center justify-between gap-3 rounded-lg border px-4 py-3 text-left transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n active\n ? \"border-primary/40 bg-primary-soft text-foreground\"\n : \"border-border text-foreground hover:bg-surface-strong\",\n )\n : cn(\n \"flex w-full cursor-pointer items-center justify-between gap-3 rounded-md px-3 py-2 text-[13px] font-medium transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n active\n ? \"bg-surface-strong text-foreground\"\n : \"text-muted-foreground hover:bg-surface-strong hover:text-foreground\",\n )\n }\n >\n <span className={variant === \"modal\" ? \"flex items-center gap-3\" : \"flex items-center gap-2.5\"}>\n {showFlag ? renderFlagOrGlobe(lang.code, variant === \"modal\" ? { size: \"text-base\" } : {}) : null}\n <span className=\"text-sm font-medium\">{lang.label}</span>\n </span>\n <span className={variant === \"modal\" ? \"flex items-center gap-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground\" : undefined}>\n {variant === \"modal\" ? lang.code : null}\n {active ? <Check className={variant === \"modal\" ? \"h-4 w-4 text-primary\" : \"h-3.5 w-3.5 text-primary\"} /> : null}\n </span>\n </button>\n );\n}"],"names":["useOutsideClose","open","rootRef","onClose","useEffect","onPointerDown","event","onKeyDown","renderFlagOrGlobe","code","size","globeClass","flag","iso2ToFlagEmoji","jsx","cn","Globe","LanguageTrigger","inverse","showFlag","currentLang","onClick","ariaProps","jsxs","ChevronDown","LanguageOptionRow","lang","active","onSelect","variant","Check"],"mappings":";;;;;AAOO,SAASA,EACdC,GACAC,GACAC,GACA;AACA,EAAAC,EAAU,MAAM;AACd,QAAI,CAACH,EAAM;AACX,UAAMI,IAAgB,CAACC,MAAwB;AAC7C,MAAIJ,EAAQ,WAAW,CAACA,EAAQ,QAAQ,SAASI,EAAM,MAAc,KACnEH,EAAA;AAAA,IAEJ,GACMI,IAAY,CAACD,MAAyB;AAC1C,MAAIA,EAAM,QAAQ,YAAUH,EAAA;AAAA,IAC9B;AACA,oBAAS,iBAAiB,eAAeE,CAAa,GACtD,SAAS,iBAAiB,WAAWE,CAAS,GACvC,MAAM;AACX,eAAS,oBAAoB,eAAeF,CAAa,GACzD,SAAS,oBAAoB,WAAWE,CAAS;AAAA,IACnD;AAAA,EACF,GAAG,CAACN,GAAMC,GAASC,CAAO,CAAC;AAC7B;AAEO,SAASK,EACdC,GACA,EAAE,MAAAC,IAAO,WAAW,YAAAC,IAAa,wBAAA,IAAoE,IACrG;AACA,QAAMC,IAAOC,EAAgBJ,CAAI;AACjC,SAAOG,IACL,gBAAAE,EAAC,QAAA,EAAK,eAAW,IAAC,WAAWC,EAAGL,GAAM,cAAc,GACjD,UAAAE,EAAA,CACH,IAEA,gBAAAE,EAACE,GAAA,EAAM,WAAWD,EAAG,oBAAoBJ,CAAU,GAAG;AAE1D;AAEO,SAASM,EAAgB;AAAA,EAC9B,SAAAC;AAAA,EACA,MAAAjB;AAAA,EACA,UAAAkB;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AACF,GAWG;AACD,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,iBAAeD,EAAU;AAAA,MACzB,iBAAeA,EAAU;AAAA,MACzB,iBAAeA,EAAU;AAAA,MACzB,SAAAD;AAAA,MACA,WAAWN;AAAA,QACT;AAAA,QACAG,IACI,wDACA;AAAA,MAAA;AAAA,MAGL,UAAA;AAAA,QAAAC,IACCX,EAAkBY,EAAY,MAAM,EAAE,YAAYF,IAAU,eAAe,wBAAA,CAAyB,IAEpG,gBAAAJ;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,WAAWD,EAAG,WAAWG,IAAU,eAAe,uBAAuB;AAAA,UAAA;AAAA,QAAA;AAAA,QAG7E,gBAAAJ,EAAC,QAAA,EAAK,WAAU,kBAAkB,YAAY,OAAM;AAAA,QACpD,gBAAAA;AAAA,UAACU;AAAA,UAAA;AAAA,YACC,WAAWT;AAAA,cACT;AAAA,cACAd,KAAQ;AAAA,cACRiB,IAAU,eAAe;AAAA,YAAA;AAAA,UAC3B;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;AAEO,SAASO,EAAkB;AAAA,EAChC,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAV;AACF,GAMG;AACD,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MAEC,MAAK;AAAA,MACL,MAAK;AAAA,MACL,iBAAeI;AAAA,MACf,SAASC;AAAA,MACT,WACEC,MAAY,UACRd;AAAA,QACE;AAAA,QACAY,IACI,sDACA;AAAA,MAAA,IAENZ;AAAA,QACE;AAAA,QACAY,IACI,sCACA;AAAA,MAAA;AAAA,MAIZ,UAAA;AAAA,QAAA,gBAAAJ,EAAC,QAAA,EAAK,WAAWM,MAAY,UAAU,4BAA4B,6BAChE,UAAA;AAAA,UAAAV,IAAWX,EAAkBkB,EAAK,MAAMG,MAAY,UAAU,EAAE,MAAM,gBAAgB,CAAA,CAAE,IAAI;AAAA,UAC7F,gBAAAf,EAAC,QAAA,EAAK,WAAU,uBAAuB,YAAK,MAAA,CAAM;AAAA,QAAA,GACpD;AAAA,0BACC,QAAA,EAAK,WAAWe,MAAY,UAAU,gGAAgG,QACpI,UAAA;AAAA,UAAAA,MAAY,UAAUH,EAAK,OAAO;AAAA,UAClCC,sBAAUG,GAAA,EAAM,WAAWD,MAAY,UAAU,yBAAyB,4BAA4B,IAAK;AAAA,QAAA,EAAA,CAC9G;AAAA,MAAA;AAAA,IAAA;AAAA,IA5BKH,EAAK;AAAA,EAAA;AA+BhB;"}
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ import { useState as o } from "react";
3
+ function S(e, u, f, r) {
4
+ var c;
5
+ const [i, n] = o(!1), [p, d] = o(f ?? ((c = e[0]) == null ? void 0 : c.code) ?? ""), s = u ?? p, l = e.find((t) => t.code === s) ?? e[0];
6
+ return { open: i, setOpen: n, current: s, currentLang: l, setCurrent: (t) => {
7
+ d(t), n(!1), r == null || r(t);
8
+ } };
9
+ }
10
+ export {
11
+ S as useLanguageSwitcher
12
+ };
13
+ //# sourceMappingURL=useLanguageSwitcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLanguageSwitcher.js","sources":["../../../../src/components/LanguageSwitcher/useLanguageSwitcher.ts"],"sourcesContent":["\"use client\";\nimport { useState } from \"react\";\nimport type { LanguageOption } from \"./types\";\n\nexport function useLanguageSwitcher(\n languages: LanguageOption[],\n value?: string,\n defaultValue?: string,\n onChange?: (code: string) => void,\n) {\n const [open, setOpen] = useState(false);\n const [internal, setInternal] = useState(defaultValue ?? languages[0]?.code ?? \"\");\n const current = value ?? internal;\n const currentLang = languages.find((l) => l.code === current) ?? languages[0];\n\n const setCurrent = (code: string) => {\n setInternal(code);\n setOpen(false);\n onChange?.(code);\n };\n\n return { open, setOpen, current, currentLang, setCurrent };\n}"],"names":["useLanguageSwitcher","languages","value","defaultValue","onChange","open","setOpen","useState","internal","setInternal","_a","current","currentLang","l","code"],"mappings":";AAIO,SAASA,EACdC,GACAC,GACAC,GACAC,GACA;;AACA,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAS,EAAK,GAChC,CAACC,GAAUC,CAAW,IAAIF,EAASJ,OAAgBO,IAAAT,EAAU,CAAC,MAAX,gBAAAS,EAAc,SAAQ,EAAE,GAC3EC,IAAUT,KAASM,GACnBI,IAAcX,EAAU,KAAK,CAACY,MAAMA,EAAE,SAASF,CAAO,KAAKV,EAAU,CAAC;AAQ5E,SAAO,EAAE,MAAAI,GAAM,SAAAC,GAAS,SAAAK,GAAS,aAAAC,GAAa,YAN3B,CAACE,MAAiB;AACnC,IAAAL,EAAYK,CAAI,GAChBR,EAAQ,EAAK,GACbF,KAAA,QAAAA,EAAWU;AAAA,EACb,EAE8C;AAChD;"}
@@ -0,0 +1,87 @@
1
+ "use client";
2
+ import { jsxs as g, jsx as o } from "react/jsx-runtime";
3
+ import { useId as v, useRef as x } from "react";
4
+ import { cn as c } from "../../../utils/cn.js";
5
+ import { useOutsideClose as y, LanguageTrigger as w, LanguageOptionRow as L } from "../parts.js";
6
+ function N({
7
+ className: d,
8
+ languages: u,
9
+ open: e,
10
+ onOpenChange: r,
11
+ current: f,
12
+ currentLang: m,
13
+ setCurrent: p,
14
+ align: i = "end",
15
+ showFlag: l = !1,
16
+ inverse: b = !1,
17
+ modalTitle: S,
18
+ value: R,
19
+ defaultValue: j,
20
+ onChange: k,
21
+ ...h
22
+ }) {
23
+ const a = v(), s = `--ls-${a.replace(/:/g, "")}`, n = x(null);
24
+ return y(e, n, () => r(!1)), /* @__PURE__ */ g(
25
+ "div",
26
+ {
27
+ ref: n,
28
+ className: c("relative inline-flex", d),
29
+ ...h,
30
+ children: [
31
+ /* @__PURE__ */ o(
32
+ "button",
33
+ {
34
+ type: "button",
35
+ style: { anchorName: s },
36
+ onClick: () => r(!e),
37
+ children: /* @__PURE__ */ o(
38
+ w,
39
+ {
40
+ inverse: b,
41
+ open: e,
42
+ showFlag: l,
43
+ currentLang: m,
44
+ onClick: () => r(!e),
45
+ ariaProps: { haspopup: "listbox", expanded: e, controls: a }
46
+ }
47
+ )
48
+ }
49
+ ),
50
+ /* @__PURE__ */ o(
51
+ "div",
52
+ {
53
+ id: a,
54
+ role: "listbox",
55
+ "aria-label": "Select language",
56
+ style: {
57
+ positionAnchor: s,
58
+ top: "anchor(bottom)",
59
+ ...i === "start" ? { left: "anchor(left)" } : { right: "anchor(right)" }
60
+ },
61
+ className: c(
62
+ "absolute top-full z-50 mt-2 min-w-[10rem] rounded-lg border border-border bg-surface p-1 shadow-raised transition-all duration-150",
63
+ i === "start" ? "left-0" : "right-0",
64
+ e ? "visible translate-y-0 opacity-100" : "pointer-events-none invisible -translate-y-1 opacity-0"
65
+ ),
66
+ children: u.map((t) => /* @__PURE__ */ o(
67
+ L,
68
+ {
69
+ lang: t,
70
+ active: t.code === f,
71
+ onSelect: () => p(t.code),
72
+ variant: "dropdown",
73
+ showFlag: l
74
+ },
75
+ t.code
76
+ ))
77
+ }
78
+ )
79
+ ]
80
+ }
81
+ );
82
+ }
83
+ N.displayName = "LanguageSwitcherDropdown";
84
+ export {
85
+ N as LanguageSwitcherDropdown
86
+ };
87
+ //# sourceMappingURL=Dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.js","sources":["../../../../../src/components/LanguageSwitcher/variants/Dropdown.tsx"],"sourcesContent":["\"use client\";\nimport { useId, useRef, type CSSProperties } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport {\n useOutsideClose,\n LanguageTrigger,\n LanguageOptionRow,\n} from \"../parts\";\nimport type { LanguageSwitcherVariantProps } from \"../types\";\n\nexport function LanguageSwitcherDropdown({\n className,\n languages,\n open,\n onOpenChange,\n current,\n currentLang,\n setCurrent,\n align = \"end\",\n showFlag = false,\n inverse = false,\n modalTitle,\n value,\n defaultValue,\n onChange,\n ...props\n}: LanguageSwitcherVariantProps) {\n const listboxId = useId();\n const anchorName = `--ls-${listboxId.replace(/:/g, \"\")}`;\n const rootRef = useRef<HTMLDivElement>(null);\n\n useOutsideClose(open, rootRef, () => onOpenChange(false));\n\n return (\n <div\n ref={rootRef}\n className={cn(\"relative inline-flex\", className)}\n {...props}\n >\n <button\n type=\"button\"\n style={{ anchorName } as CSSProperties}\n onClick={() => onOpenChange(!open)}\n >\n <LanguageTrigger\n inverse={inverse}\n open={open}\n showFlag={showFlag}\n currentLang={currentLang}\n onClick={() => onOpenChange(!open)}\n ariaProps={{ haspopup: \"listbox\", expanded: open, controls: listboxId }}\n />\n </button>\n\n <div\n id={listboxId}\n role=\"listbox\"\n aria-label=\"Select language\"\n style={\n {\n positionAnchor: anchorName,\n top: \"anchor(bottom)\",\n ...(align === \"start\" ? { left: \"anchor(left)\" } : { right: \"anchor(right)\" }),\n } as CSSProperties\n }\n className={cn(\n \"absolute top-full z-50 mt-2 min-w-[10rem] rounded-lg border border-border bg-surface p-1 shadow-raised transition-all duration-150\",\n align === \"start\" ? \"left-0\" : \"right-0\",\n open\n ? \"visible translate-y-0 opacity-100\"\n : \"pointer-events-none invisible -translate-y-1 opacity-0\",\n )}\n >\n {languages.map((lang) => (\n <LanguageOptionRow\n key={lang.code}\n lang={lang}\n active={lang.code === current}\n onSelect={() => setCurrent(lang.code)}\n variant=\"dropdown\"\n showFlag={showFlag}\n />\n ))}\n </div>\n </div>\n );\n}\nLanguageSwitcherDropdown.displayName = \"LanguageSwitcherDropdown\";"],"names":["LanguageSwitcherDropdown","className","languages","open","onOpenChange","current","currentLang","setCurrent","align","showFlag","inverse","modalTitle","value","defaultValue","onChange","props","listboxId","useId","anchorName","rootRef","useRef","useOutsideClose","jsxs","cn","jsx","LanguageTrigger","lang","LanguageOptionRow"],"mappings":";;;;AAUO,SAASA,EAAyB;AAAA,EACvC,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,UAAAC,IAAW;AAAA,EACX,SAAAC,IAAU;AAAA,EACV,YAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GAAiC;AAC/B,QAAMC,IAAYC,EAAA,GACZC,IAAa,QAAQF,EAAU,QAAQ,MAAM,EAAE,CAAC,IAChDG,IAAUC,EAAuB,IAAI;AAE3C,SAAAC,EAAgBlB,GAAMgB,GAAS,MAAMf,EAAa,EAAK,CAAC,GAGtD,gBAAAkB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKH;AAAA,MACL,WAAWI,EAAG,wBAAwBtB,CAAS;AAAA,MAC9C,GAAGc;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAS;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAO,EAAE,YAAAN,EAAA;AAAA,YACT,SAAS,MAAMd,EAAa,CAACD,CAAI;AAAA,YAEjC,UAAA,gBAAAqB;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,SAAAf;AAAA,gBACA,MAAAP;AAAA,gBACA,UAAAM;AAAA,gBACA,aAAAH;AAAA,gBACA,SAAS,MAAMF,EAAa,CAACD,CAAI;AAAA,gBACjC,WAAW,EAAE,UAAU,WAAW,UAAUA,GAAM,UAAUa,EAAA;AAAA,cAAU;AAAA,YAAA;AAAA,UACxE;AAAA,QAAA;AAAA,QAGF,gBAAAQ;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAIR;AAAA,YACJ,MAAK;AAAA,YACL,cAAW;AAAA,YACX,OACE;AAAA,cACE,gBAAgBE;AAAA,cAChB,KAAK;AAAA,cACL,GAAIV,MAAU,UAAU,EAAE,MAAM,eAAA,IAAmB,EAAE,OAAO,gBAAA;AAAA,YAAgB;AAAA,YAGhF,WAAWe;AAAA,cACT;AAAA,cACAf,MAAU,UAAU,WAAW;AAAA,cAC/BL,IACI,sCACA;AAAA,YAAA;AAAA,YAGL,UAAAD,EAAU,IAAI,CAACwB,MACd,gBAAAF;AAAA,cAACG;AAAA,cAAA;AAAA,gBAEC,MAAAD;AAAA,gBACA,QAAQA,EAAK,SAASrB;AAAA,gBACtB,UAAU,MAAME,EAAWmB,EAAK,IAAI;AAAA,gBACpC,SAAQ;AAAA,gBACR,UAAAjB;AAAA,cAAA;AAAA,cALKiB,EAAK;AAAA,YAAA,CAOb;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGN;AACA1B,EAAyB,cAAc;"}
@@ -0,0 +1,54 @@
1
+ "use client";
2
+ import { jsxs as u, Fragment as p, jsx as e } from "react/jsx-runtime";
3
+ import { useRef as h } from "react";
4
+ import { cn as v } from "../../../utils/cn.js";
5
+ import { Modal as x } from "../../Modal.js";
6
+ import { LanguageTrigger as L, LanguageOptionRow as S } from "../parts.js";
7
+ function w({
8
+ className: o,
9
+ languages: t,
10
+ open: a,
11
+ onOpenChange: r,
12
+ current: d,
13
+ currentLang: m,
14
+ setCurrent: n,
15
+ modalTitle: c,
16
+ showFlag: l = !1,
17
+ inverse: s = !1,
18
+ align: M,
19
+ value: N,
20
+ defaultValue: R,
21
+ onChange: b,
22
+ ...f
23
+ }) {
24
+ const g = h(null);
25
+ return /* @__PURE__ */ u(p, { children: [
26
+ /* @__PURE__ */ e("div", { ref: g, className: v("relative inline-flex", o), ...f, children: /* @__PURE__ */ e(
27
+ L,
28
+ {
29
+ inverse: s,
30
+ open: a,
31
+ showFlag: l,
32
+ currentLang: m,
33
+ onClick: () => r(!a),
34
+ ariaProps: { haspopup: "dialog", expanded: a }
35
+ }
36
+ ) }),
37
+ /* @__PURE__ */ e(x, { open: a, onClose: () => r(!1), title: c, size: "sm", children: /* @__PURE__ */ e("div", { role: "listbox", "aria-label": "Select language", className: "grid min-w-[19rem] gap-1.5", children: t.map((i) => /* @__PURE__ */ e(
38
+ S,
39
+ {
40
+ lang: i,
41
+ active: i.code === d,
42
+ onSelect: () => n(i.code),
43
+ variant: "modal",
44
+ showFlag: l
45
+ },
46
+ i.code
47
+ )) }) })
48
+ ] });
49
+ }
50
+ w.displayName = "LanguageSwitcherModal";
51
+ export {
52
+ w as LanguageSwitcherModal
53
+ };
54
+ //# sourceMappingURL=Modal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.js","sources":["../../../../../src/components/LanguageSwitcher/variants/Modal.tsx"],"sourcesContent":["\"use client\";\nimport { useRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { Modal } from \"../../Modal\";\nimport { LanguageTrigger, LanguageOptionRow } from \"../parts\";\nimport type { LanguageSwitcherVariantProps } from \"../types\";\n\nexport function LanguageSwitcherModal({\n className,\n languages,\n open,\n onOpenChange,\n current,\n currentLang,\n setCurrent,\n modalTitle,\n showFlag = false,\n inverse = false,\n align,\n value,\n defaultValue,\n onChange,\n ...props\n}: LanguageSwitcherVariantProps) {\n const rootRef = useRef<HTMLDivElement>(null);\n\n return (\n <>\n <div ref={rootRef} className={cn(\"relative inline-flex\", className)} {...props}>\n <LanguageTrigger\n inverse={inverse}\n open={open}\n showFlag={showFlag}\n currentLang={currentLang}\n onClick={() => onOpenChange(!open)}\n ariaProps={{ haspopup: \"dialog\", expanded: open }}\n />\n </div>\n <Modal open={open} onClose={() => onOpenChange(false)} title={modalTitle} size=\"sm\">\n <div role=\"listbox\" aria-label=\"Select language\" className=\"grid min-w-[19rem] gap-1.5\">\n {languages.map((lang) => (\n <LanguageOptionRow\n key={lang.code}\n lang={lang}\n active={lang.code === current}\n onSelect={() => setCurrent(lang.code)}\n variant=\"modal\"\n showFlag={showFlag}\n />\n ))}\n </div>\n </Modal>\n </>\n );\n}\nLanguageSwitcherModal.displayName = \"LanguageSwitcherModal\";"],"names":["LanguageSwitcherModal","className","languages","open","onOpenChange","current","currentLang","setCurrent","modalTitle","showFlag","inverse","align","value","defaultValue","onChange","props","rootRef","useRef","jsxs","Fragment","jsx","cn","LanguageTrigger","Modal","lang","LanguageOptionRow"],"mappings":";;;;;AAOO,SAASA,EAAsB;AAAA,EACpC,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,SAAAC,IAAU;AAAA,EACV,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GAAiC;AAC/B,QAAMC,IAAUC,EAAuB,IAAI;AAE3C,SACE,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EAAI,KAAKJ,GAAS,WAAWK,EAAG,wBAAwBpB,CAAS,GAAI,GAAGc,GACvE,UAAA,gBAAAK;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,SAAAZ;AAAA,QACA,MAAAP;AAAA,QACA,UAAAM;AAAA,QACA,aAAAH;AAAA,QACA,SAAS,MAAMF,EAAa,CAACD,CAAI;AAAA,QACjC,WAAW,EAAE,UAAU,UAAU,UAAUA,EAAA;AAAA,MAAK;AAAA,IAAA,GAEpD;AAAA,IACA,gBAAAiB,EAACG,KAAM,MAAApB,GAAY,SAAS,MAAMC,EAAa,EAAK,GAAG,OAAOI,GAAY,MAAK,MAC7E,UAAA,gBAAAY,EAAC,OAAA,EAAI,MAAK,WAAU,cAAW,mBAAkB,WAAU,8BACxD,UAAAlB,EAAU,IAAI,CAACsB,MACd,gBAAAJ;AAAA,MAACK;AAAA,MAAA;AAAA,QAEC,MAAAD;AAAA,QACA,QAAQA,EAAK,SAASnB;AAAA,QACtB,UAAU,MAAME,EAAWiB,EAAK,IAAI;AAAA,QACpC,SAAQ;AAAA,QACR,UAAAf;AAAA,MAAA;AAAA,MALKe,EAAK;AAAA,IAAA,CAOb,GACH,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;AACAxB,EAAsB,cAAc;"}
@@ -0,0 +1,13 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { forwardRef as u } from "react";
3
+ import { LogoCloudQuiet as i } from "./variants/Quiet.js";
4
+ import { LogoCloudMarquee as e } from "./variants/Marquee.js";
5
+ import { LogoCloudStrip as d } from "./variants/Strip.js";
6
+ const f = u(
7
+ ({ option: m = "quiet", ...o }, r) => m === "marquee" ? /* @__PURE__ */ t(e, { ref: r, ...o }) : m === "strip" ? /* @__PURE__ */ t(d, { ref: r, ...o }) : /* @__PURE__ */ t(i, { ref: r, ...o })
8
+ );
9
+ f.displayName = "LogoCloud";
10
+ export {
11
+ f as LogoCloud
12
+ };
13
+ //# sourceMappingURL=LogoCloud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogoCloud.js","sources":["../../../../src/components/LogoCloud/LogoCloud.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { LogoCloudProps } from \"./types\";\nimport { LogoCloudQuiet } from \"./variants/Quiet\";\nimport { LogoCloudMarquee } from \"./variants/Marquee\";\nimport { LogoCloudStrip } from \"./variants/Strip\";\n\nexport const LogoCloud = forwardRef<HTMLDivElement, LogoCloudProps>(\n ({ option = \"quiet\", ...props }, ref) => {\n if (option === \"marquee\") return <LogoCloudMarquee ref={ref} {...props} />;\n if (option === \"strip\") return <LogoCloudStrip ref={ref} {...props} />;\n return <LogoCloudQuiet ref={ref} {...props} />;\n },\n);\nLogoCloud.displayName = \"LogoCloud\";"],"names":["LogoCloud","forwardRef","option","props","ref","LogoCloudMarquee","LogoCloudStrip","jsx","LogoCloudQuiet"],"mappings":";;;;;AAMO,MAAMA,IAAYC;AAAA,EACvB,CAAC,EAAE,QAAAC,IAAS,SAAS,GAAGC,EAAA,GAASC,MAC3BF,MAAW,8BAAmBG,GAAA,EAAiB,KAAAD,GAAW,GAAGD,GAAO,IACpED,MAAW,4BAAiBI,GAAA,EAAe,KAAAF,GAAW,GAAGD,GAAO,IAC7D,gBAAAI,EAACC,GAAA,EAAe,KAAAJ,GAAW,GAAGD,EAAA,CAAO;AAEhD;AACAH,EAAU,cAAc;"}
@@ -0,0 +1,22 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { cn as o } from "../../utils/cn.js";
3
+ const a = ({ name: r }) => /* @__PURE__ */ t("span", { className: "text-lg font-semibold tracking-tight text-foreground/45 transition-colors duration-200 group-hover:text-foreground", children: r }), c = ({ logo: r }) => r.src ? /* @__PURE__ */ t(
4
+ "img",
5
+ {
6
+ src: r.src,
7
+ alt: r.name,
8
+ loading: "lazy",
9
+ className: o(
10
+ "max-h-7 w-auto opacity-50 grayscale transition-all duration-200 group-hover:opacity-90 group-hover:grayscale-0",
11
+ "h-7"
12
+ )
13
+ }
14
+ ) : /* @__PURE__ */ t(a, { name: r.name });
15
+ function i({ title: r, className: e }) {
16
+ return r ? /* @__PURE__ */ t("p", { className: o("mb-8 text-center text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground", e), children: r }) : null;
17
+ }
18
+ export {
19
+ i as LogoCloudTitle,
20
+ c as LogoMark
21
+ };
22
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sources":["../../../../src/components/LogoCloud/parts.tsx"],"sourcesContent":["import { cn } from \"../../utils/cn\";\nimport type { LogoItem } from \"./types\";\n\nconst LogoText = ({ name }: { name: string }) => (\n <span className=\"text-lg font-semibold tracking-tight text-foreground/45 transition-colors duration-200 group-hover:text-foreground\">\n {name}\n </span>\n);\n\nexport const LogoMark = ({ logo }: { logo: LogoItem }) =>\n logo.src ? (\n <img\n src={logo.src}\n alt={logo.name}\n loading=\"lazy\"\n className={cn(\n \"max-h-7 w-auto opacity-50 grayscale transition-all duration-200 group-hover:opacity-90 group-hover:grayscale-0\",\n \"h-7\",\n )}\n />\n ) : (\n <LogoText name={logo.name} />\n );\n\nexport function LogoCloudTitle({ title, className }: { title?: string; className?: string }) {\n if (!title) return null;\n return (\n <p className={cn(\"mb-8 text-center text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground\", className)}>\n {title}\n </p>\n );\n}"],"names":["LogoText","name","jsx","LogoMark","logo","cn","LogoCloudTitle","title","className"],"mappings":";;AAGA,MAAMA,IAAW,CAAC,EAAE,MAAAC,EAAA,MAClB,gBAAAC,EAAC,QAAA,EAAK,WAAU,sHACb,UAAAD,GACH,GAGWE,IAAW,CAAC,EAAE,MAAAC,EAAA,MACzBA,EAAK,MACH,gBAAAF;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAKE,EAAK;AAAA,IACV,KAAKA,EAAK;AAAA,IACV,SAAQ;AAAA,IACR,WAAWC;AAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AACF,IAEA,gBAAAH,EAACF,GAAA,EAAS,MAAMI,EAAK,KAAA,CAAM;AAGxB,SAASE,EAAe,EAAE,OAAAC,GAAO,WAAAC,KAAqD;AAC3F,SAAKD,sBAEF,KAAA,EAAE,WAAWF,EAAG,4FAA4FG,CAAS,GACnH,UAAAD,GACH,IAJiB;AAMrB;"}