@ugurdemirel/landcraft 0.1.22 → 0.1.24

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 (121) hide show
  1. package/README.md +13 -8
  2. package/dist/cjs/components/Button.cjs +1 -1
  3. package/dist/cjs/components/Button.cjs.map +1 -1
  4. package/dist/cjs/components/CTA/CTA.cjs +1 -1
  5. package/dist/cjs/components/CTA/CTA.cjs.map +1 -1
  6. package/dist/cjs/components/CTA/parts.cjs +1 -1
  7. package/dist/cjs/components/CTA/parts.cjs.map +1 -1
  8. package/dist/cjs/components/CTA/variants/Panel.cjs +1 -1
  9. package/dist/cjs/components/CTA/variants/Panel.cjs.map +1 -1
  10. package/dist/cjs/components/CTA/variants/Surface.cjs +1 -1
  11. package/dist/cjs/components/CTA/variants/Surface.cjs.map +1 -1
  12. package/dist/cjs/components/Footer/Footer.cjs +1 -1
  13. package/dist/cjs/components/Footer/Footer.cjs.map +1 -1
  14. package/dist/cjs/components/Footer/parts.cjs +1 -1
  15. package/dist/cjs/components/Footer/parts.cjs.map +1 -1
  16. package/dist/cjs/components/Footer/variants/Columns.cjs +2 -0
  17. package/dist/cjs/components/Footer/variants/Columns.cjs.map +1 -0
  18. package/dist/cjs/components/Footer/variants/Editorial.cjs +1 -1
  19. package/dist/cjs/components/Footer/variants/Editorial.cjs.map +1 -1
  20. package/dist/cjs/components/Footer/variants/Minimal.cjs +1 -1
  21. package/dist/cjs/components/Footer/variants/Minimal.cjs.map +1 -1
  22. package/dist/cjs/components/Hero/parts.cjs +1 -1
  23. package/dist/cjs/components/Hero/parts.cjs.map +1 -1
  24. package/dist/cjs/components/Hero/variants/Centered.cjs +1 -1
  25. package/dist/cjs/components/Hero/variants/Centered.cjs.map +1 -1
  26. package/dist/cjs/components/Hero/variants/Parallax.cjs +1 -1
  27. package/dist/cjs/components/Hero/variants/Parallax.cjs.map +1 -1
  28. package/dist/cjs/components/Hero/variants/Split.cjs +1 -1
  29. package/dist/cjs/components/Hero/variants/Split.cjs.map +1 -1
  30. package/dist/cjs/components/Hero/variants/Statement.cjs +1 -1
  31. package/dist/cjs/components/Hero/variants/Statement.cjs.map +1 -1
  32. package/dist/cjs/components/LanguageSwitcher/parts.cjs +1 -1
  33. package/dist/cjs/components/LanguageSwitcher/parts.cjs.map +1 -1
  34. package/dist/cjs/components/MegaMenu/MegaMenu.cjs +1 -1
  35. package/dist/cjs/components/MegaMenu/MegaMenu.cjs.map +1 -1
  36. package/dist/cjs/components/Navbar/Navbar.cjs +1 -1
  37. package/dist/cjs/components/Navbar/Navbar.cjs.map +1 -1
  38. package/dist/cjs/components/Stats/Stats.cjs +1 -1
  39. package/dist/cjs/components/Stats/Stats.cjs.map +1 -1
  40. package/dist/cjs/components/Stats/parts.cjs +1 -1
  41. package/dist/cjs/components/Stats/parts.cjs.map +1 -1
  42. package/dist/cjs/components/Stats/variants/Cells.cjs +1 -1
  43. package/dist/cjs/components/Stats/variants/Cells.cjs.map +1 -1
  44. package/dist/cjs/components/Stats/variants/Divided.cjs +2 -0
  45. package/dist/cjs/components/Stats/variants/Divided.cjs.map +1 -0
  46. package/dist/cjs/components/Stats/variants/Stacked.cjs +2 -0
  47. package/dist/cjs/components/Stats/variants/Stacked.cjs.map +1 -0
  48. package/dist/cjs/components/Stats/variants/Ticker.cjs +1 -1
  49. package/dist/cjs/components/Stats/variants/Ticker.cjs.map +1 -1
  50. package/dist/cjs/utils/surface.cjs +2 -0
  51. package/dist/cjs/utils/surface.cjs.map +1 -0
  52. package/dist/es/components/Button.js +41 -31
  53. package/dist/es/components/Button.js.map +1 -1
  54. package/dist/es/components/CTA/CTA.js +5 -6
  55. package/dist/es/components/CTA/CTA.js.map +1 -1
  56. package/dist/es/components/CTA/parts.js +19 -14
  57. package/dist/es/components/CTA/parts.js.map +1 -1
  58. package/dist/es/components/CTA/variants/Panel.js +15 -17
  59. package/dist/es/components/CTA/variants/Panel.js.map +1 -1
  60. package/dist/es/components/CTA/variants/Surface.js +21 -11
  61. package/dist/es/components/CTA/variants/Surface.js.map +1 -1
  62. package/dist/es/components/Footer/Footer.js +5 -5
  63. package/dist/es/components/Footer/Footer.js.map +1 -1
  64. package/dist/es/components/Footer/parts.js +21 -20
  65. package/dist/es/components/Footer/parts.js.map +1 -1
  66. package/dist/es/components/Footer/variants/Columns.js +76 -0
  67. package/dist/es/components/Footer/variants/Columns.js.map +1 -0
  68. package/dist/es/components/Footer/variants/Editorial.js +68 -35
  69. package/dist/es/components/Footer/variants/Editorial.js.map +1 -1
  70. package/dist/es/components/Footer/variants/Minimal.js +50 -16
  71. package/dist/es/components/Footer/variants/Minimal.js.map +1 -1
  72. package/dist/es/components/Hero/parts.js +13 -11
  73. package/dist/es/components/Hero/parts.js.map +1 -1
  74. package/dist/es/components/Hero/variants/Centered.js +29 -17
  75. package/dist/es/components/Hero/variants/Centered.js.map +1 -1
  76. package/dist/es/components/Hero/variants/Parallax.js +23 -23
  77. package/dist/es/components/Hero/variants/Parallax.js.map +1 -1
  78. package/dist/es/components/Hero/variants/Split.js +35 -23
  79. package/dist/es/components/Hero/variants/Split.js.map +1 -1
  80. package/dist/es/components/Hero/variants/Statement.js +28 -23
  81. package/dist/es/components/Hero/variants/Statement.js.map +1 -1
  82. package/dist/es/components/LanguageSwitcher/parts.js +44 -44
  83. package/dist/es/components/LanguageSwitcher/parts.js.map +1 -1
  84. package/dist/es/components/MegaMenu/MegaMenu.js +131 -126
  85. package/dist/es/components/MegaMenu/MegaMenu.js.map +1 -1
  86. package/dist/es/components/Navbar/Navbar.js +110 -92
  87. package/dist/es/components/Navbar/Navbar.js.map +1 -1
  88. package/dist/es/components/Stats/Stats.js +8 -8
  89. package/dist/es/components/Stats/Stats.js.map +1 -1
  90. package/dist/es/components/Stats/parts.js +37 -17
  91. package/dist/es/components/Stats/parts.js.map +1 -1
  92. package/dist/es/components/Stats/variants/Cells.js +46 -18
  93. package/dist/es/components/Stats/variants/Cells.js.map +1 -1
  94. package/dist/es/components/Stats/variants/Divided.js +45 -0
  95. package/dist/es/components/Stats/variants/Divided.js.map +1 -0
  96. package/dist/es/components/Stats/variants/Stacked.js +40 -0
  97. package/dist/es/components/Stats/variants/Stacked.js.map +1 -0
  98. package/dist/es/components/Stats/variants/Ticker.js +44 -23
  99. package/dist/es/components/Stats/variants/Ticker.js.map +1 -1
  100. package/dist/es/utils/surface.js +16 -0
  101. package/dist/es/utils/surface.js.map +1 -0
  102. package/dist/index.d.ts +49 -10
  103. package/dist/styles.css +169 -114
  104. package/dist/theme.css +27 -0
  105. package/package.json +1 -1
  106. package/dist/cjs/components/CTA/variants/Inverse.cjs +0 -2
  107. package/dist/cjs/components/CTA/variants/Inverse.cjs.map +0 -1
  108. package/dist/cjs/components/Footer/variants/Classic.cjs +0 -2
  109. package/dist/cjs/components/Footer/variants/Classic.cjs.map +0 -1
  110. package/dist/cjs/components/Stats/variants/Editorial.cjs +0 -2
  111. package/dist/cjs/components/Stats/variants/Editorial.cjs.map +0 -1
  112. package/dist/cjs/components/Stats/variants/Hairline.cjs +0 -2
  113. package/dist/cjs/components/Stats/variants/Hairline.cjs.map +0 -1
  114. package/dist/es/components/CTA/variants/Inverse.js +0 -42
  115. package/dist/es/components/CTA/variants/Inverse.js.map +0 -1
  116. package/dist/es/components/Footer/variants/Classic.js +0 -43
  117. package/dist/es/components/Footer/variants/Classic.js.map +0 -1
  118. package/dist/es/components/Stats/variants/Editorial.js +0 -32
  119. package/dist/es/components/Stats/variants/Editorial.js.map +0 -1
  120. package/dist/es/components/Stats/variants/Hairline.js +0 -25
  121. package/dist/es/components/Stats/variants/Hairline.js.map +0 -1
@@ -1,36 +1,48 @@
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(
1
+ import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
+ import { forwardRef as g } from "react";
3
+ import { cn as l } from "../../../utils/cn.js";
4
+ import { HeroEyebrow as u, heroTitleType as b, heroDescriptionBase as h, HeroActions as N, heroContainer as w } from "../parts.js";
5
+ const v = g(
6
+ ({
7
+ className: m,
8
+ eyebrow: n,
9
+ title: c,
10
+ description: o,
11
+ primaryAction: s,
12
+ secondaryAction: a,
13
+ media: d,
14
+ meta: i,
15
+ background: H,
16
+ id: p,
17
+ ...x
18
+ }, f) => /* @__PURE__ */ e(
7
19
  "section",
8
20
  {
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,
21
+ ref: f,
22
+ id: p,
23
+ className: l("relative w-full border-b border-border bg-background", m),
24
+ ...x,
25
+ children: /* @__PURE__ */ t("div", { className: l(
26
+ w,
15
27
  "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
28
  ), 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
29
+ /* @__PURE__ */ t("div", { className: "max-w-xl", children: [
30
+ /* @__PURE__ */ e(u, { eyebrow: n }),
31
+ /* @__PURE__ */ e("h1", { className: l(b, "mt-6 text-5xl text-foreground sm:text-6xl lg:text-7xl"), children: c }),
32
+ o ? /* @__PURE__ */ e("p", { className: l(h, "mt-7 max-w-md text-muted-foreground"), children: o }) : null,
33
+ s || a ? /* @__PURE__ */ e("div", { className: "mt-10", children: /* @__PURE__ */ e(N, { primaryAction: s, secondaryAction: a }) }) : null,
34
+ i ? /* @__PURE__ */ e("ul", { className: "mt-14 flex flex-wrap items-center gap-x-8 gap-y-3 border-t border-border pt-6", children: i.map((r) => /* @__PURE__ */ t("li", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
35
+ r.icon ? /* @__PURE__ */ e("span", { className: "text-foreground/35", children: r.icon }) : null,
36
+ r.label
37
+ ] }, r.label)) }) : null
26
38
  ] }),
27
39
  d ? /* @__PURE__ */ e("div", { className: "w-full self-center", children: d }) : null
28
40
  ] })
29
41
  }
30
42
  )
31
43
  );
32
- w.displayName = "HeroSplit";
44
+ v.displayName = "HeroSplit";
33
45
  export {
34
- w as HeroSplit
46
+ v as HeroSplit
35
47
  };
36
48
  //# sourceMappingURL=Split.js.map
@@ -1 +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;"}
1
+ {"version":3,"file":"Split.js","sources":["../../../../../src/components/Hero/variants/Split.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport {\n HeroActions,\n HeroEyebrow,\n heroContainer,\n heroDescriptionBase,\n heroTitleType,\n} 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 {\n className,\n eyebrow,\n title,\n description,\n primaryAction,\n secondaryAction,\n media,\n meta,\n background,\n id,\n ...props\n },\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(heroTitleType, \"mt-6 text-5xl text-foreground sm:text-6xl lg:text-7xl\")}>\n {title}\n </h1>\n {description ? (\n <p className={cn(heroDescriptionBase, \"mt-7 max-w-md text-muted-foreground\")}>\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\";\n"],"names":["HeroSplit","forwardRef","className","eyebrow","title","description","primaryAction","secondaryAction","media","meta","background","id","props","ref","jsx","cn","jsxs","heroContainer","HeroEyebrow","heroTitleType","heroDescriptionBase","HeroActions","m"],"mappings":";;;;AAYO,MAAMA,IAAYC;AAAA,EACvB,CACE;AAAA,IACE,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAAAC;AAAA,IACA,YAAAC;AAAA,IACA,IAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MAEA,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,IAAAF;AAAA,MACA,WAAWI,EAAG,wDAAwDb,CAAS;AAAA,MAC9E,GAAGU;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,SAAAf,GAAkB;AAAA,4BAC9B,MAAA,EAAG,WAAWY,EAAGI,GAAe,uDAAuD,GACrF,UAAAf,GACH;AAAA,UACCC,sBACE,KAAA,EAAE,WAAWU,EAAGK,GAAqB,qCAAqC,GACxE,UAAAf,EAAA,CACH,IACE;AAAA,UACHC,KAAiBC,IAChB,gBAAAO,EAAC,OAAA,EAAI,WAAU,SACb,UAAA,gBAAAA,EAACO,GAAA,EAAY,eAAAf,GAA8B,iBAAAC,EAAA,CAAkC,EAAA,CAC/E,IACE;AAAA,UACHE,IACC,gBAAAK,EAAC,MAAA,EAAG,WAAU,iFACX,UAAAL,EAAK,IAAI,CAACa,MACT,gBAAAN,EAAC,MAAA,EAAiB,WAAU,yDACzB,UAAA;AAAA,YAAAM,EAAE,OAAO,gBAAAR,EAAC,QAAA,EAAK,WAAU,sBAAsB,UAAAQ,EAAE,MAAK,IAAU;AAAA,YAChEA,EAAE;AAAA,UAAA,EAAA,GAFIA,EAAE,KAGX,CACD,EAAA,CACH,IACE;AAAA,QAAA,GACN;AAAA,QACCd,IAAQ,gBAAAM,EAAC,OAAA,EAAI,WAAU,sBAAsB,aAAM,IAAS;AAAA,MAAA,EAAA,CAC/D;AAAA,IAAA;AAAA,EAAA;AAGN;AACAd,EAAU,cAAc;"}
@@ -1,31 +1,36 @@
1
- import { jsxs as l, jsx as e } from "react/jsx-runtime";
2
- import { forwardRef as p } from "react";
3
- import { cn as s } from "../../../utils/cn.js";
4
- import { HeroActions as y, heroContainer as f } from "../parts.js";
5
- const b = p(
6
- ({ className: c, title: i, description: r, primaryAction: o, secondaryAction: a, media: g, meta: n, id: m, ...d }, x) => /* @__PURE__ */ l(
1
+ import { jsxs as a, jsx as e } from "react/jsx-runtime";
2
+ import { forwardRef as h } from "react";
3
+ import { cn as l } from "../../../utils/cn.js";
4
+ import { emphasisSurfaceStyle as u } from "../../../utils/surface.js";
5
+ import { heroTitleType as f, heroDescriptionBase as N, HeroActions as v, heroContainer as y } from "../parts.js";
6
+ const b = h(
7
+ ({
8
+ className: m,
9
+ title: o,
10
+ description: i,
11
+ primaryAction: r,
12
+ secondaryAction: s,
13
+ media: w,
14
+ meta: n,
15
+ background: c,
16
+ id: p,
17
+ ...x
18
+ }, d) => /* @__PURE__ */ a(
7
19
  "section",
8
20
  {
9
- ref: x,
10
- id: m,
11
- className: s("relative w-full overflow-hidden bg-secondary", c),
12
- style: { color: "contrast-color(rgb(var(--color-secondary)))" },
13
- ...d,
21
+ ref: d,
22
+ id: p,
23
+ className: l("relative w-full overflow-hidden", m),
24
+ style: u(c),
25
+ ...x,
14
26
  children: [
15
27
  /* @__PURE__ */ e("div", { "aria-hidden": !0, className: "pointer-events-none absolute inset-0 grain opacity-[0.07] mix-blend-overlay" }),
16
28
  /* @__PURE__ */ e("div", { "aria-hidden": !0, className: "pointer-events-none absolute inset-x-0 top-0 h-px bg-white/10" }),
17
- /* @__PURE__ */ l("div", { className: s(f, "pt-28 pb-24 text-center sm:pt-36 sm:pb-32"), children: [
18
- /* @__PURE__ */ e(
19
- "h1",
20
- {
21
- 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",
22
- style: { color: "contrast-color(rgb(var(--color-secondary)))" },
23
- children: i
24
- }
25
- ),
26
- r ? /* @__PURE__ */ e("p", { className: "mx-auto mt-8 max-w-xl text-pretty leading-relaxed sm:text-lg", style: { color: "contrast-color(rgb(var(--color-secondary)))", opacity: 0.72 }, children: r }) : null,
27
- o || a ? /* @__PURE__ */ e("div", { className: "mt-11 justify-center", children: /* @__PURE__ */ e(y, { primaryAction: o, secondaryAction: a }) }) : null,
28
- n ? /* @__PURE__ */ e("ul", { className: "mt-16 flex flex-wrap items-center justify-center gap-x-10 gap-y-3", children: n.map((t) => /* @__PURE__ */ l("li", { className: "flex items-center gap-2 text-sm font-medium", style: { color: "contrast-color(rgb(var(--color-secondary)))", opacity: 0.72 }, children: [
29
+ /* @__PURE__ */ a("div", { className: l(y, "pt-28 pb-24 text-center sm:pt-36 sm:pb-32"), children: [
30
+ /* @__PURE__ */ e("h1", { className: l(f, "max-w-5xl text-[2.9rem] sm:text-7xl lg:text-8xl"), children: o }),
31
+ i ? /* @__PURE__ */ e("p", { className: l(N, "mx-auto mt-8 max-w-xl opacity-70"), children: i }) : null,
32
+ r || s ? /* @__PURE__ */ e("div", { className: "mt-11 justify-center", children: /* @__PURE__ */ e(v, { primaryAction: r, secondaryAction: s, emphasis: !0 }) }) : null,
33
+ n ? /* @__PURE__ */ e("ul", { className: "mt-16 flex flex-wrap items-center justify-center gap-x-10 gap-y-3", children: n.map((t) => /* @__PURE__ */ a("li", { className: "flex items-center gap-2 text-sm font-medium opacity-70", children: [
29
34
  t.icon ? /* @__PURE__ */ e("span", { children: t.icon }) : null,
30
35
  t.label
31
36
  ] }, t.label)) }) : null
@@ -1 +1 @@
1
- {"version":3,"file":"Statement.js","sources":["../../../../../src/components/Hero/variants/Statement.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\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 is derived from THAT token via contrast-color().\n return (\n <section\n ref={ref}\n id={id}\n className={cn(\"relative w-full overflow-hidden bg-secondary\", className)}\n style={{ color: \"contrast-color(rgb(var(--color-secondary)))\" }}\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: \"contrast-color(rgb(var(--color-secondary)))\" }}\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: \"contrast-color(rgb(var(--color-secondary)))\", 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: \"contrast-color(rgb(var(--color-secondary)))\", 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","jsxs","cn","jsx","heroContainer","HeroActions","m"],"mappings":";;;;AAMO,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,MAKE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,IAAAF;AAAA,MACA,WAAWI,EAAG,gDAAgDX,CAAS;AAAA,MACvE,OAAO,EAAE,OAAO,8CAAA;AAAA,MACf,GAAGQ;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAI,EAAC,OAAA,EAAI,eAAW,IAAC,WAAU,+EAA8E;AAAA,QACzG,gBAAAA,EAAC,OAAA,EAAI,eAAW,IAAC,WAAU,iEAAgE;AAAA,0BAC1F,OAAA,EAAI,WAAWD,EAAGE,GAAe,2CAA2C,GAC3E,UAAA;AAAA,UAAA,gBAAAD;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO,EAAE,OAAO,8CAAA;AAAA,cAEf,UAAAX;AAAA,YAAA;AAAA,UAAA;AAAA,UAEFC,IACC,gBAAAU,EAAC,KAAA,EAAE,WAAU,gEAA+D,OAAO,EAAE,OAAO,+CAA+C,SAAS,KAAA,GACjJ,aACH,IACE;AAAA,UACHT,KAAiBC,IAChB,gBAAAQ,EAAC,OAAA,EAAI,WAAU,wBACb,UAAA,gBAAAA,EAACE,GAAA,EAAY,eAAAX,GAA8B,iBAAAC,EAAA,CAAkC,EAAA,CAC/E,IACE;AAAA,UACHE,IACC,gBAAAM,EAAC,MAAA,EAAG,WAAU,qEACX,UAAAN,EAAK,IAAI,CAACS,wBACR,MAAA,EAAiB,WAAU,+CAA8C,OAAO,EAAE,OAAO,+CAA+C,SAAS,QAC/I,UAAA;AAAA,YAAAA,EAAE,OAAO,gBAAAH,EAAC,QAAA,EAAM,UAAAG,EAAE,MAAK,IAAU;AAAA,YACjCA,EAAE;AAAA,UAAA,EAAA,GAFIA,EAAE,KAGX,CACD,EAAA,CACH,IACE;AAAA,QAAA,EAAA,CACN;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;AACAjB,EAAc,cAAc;"}
1
+ {"version":3,"file":"Statement.js","sources":["../../../../../src/components/Hero/variants/Statement.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { emphasisSurfaceStyle } from \"../../../utils/surface\";\nimport {\n HeroActions,\n heroContainer,\n heroDescriptionBase,\n heroTitleType,\n} from \"../parts\";\nimport type { HeroProps } from \"../types\";\n\n/**\n * Statement — full-bleed brand emphasis band. No eyebrow, pure message.\n *\n * The band is painted from `--color-primary` and its text color is computed\n * with CSS `contrast-color()`. Pass `background` to replace the brand gradient\n * with any CSS color while keeping the contrast behavior.\n */\nexport const HeroStatement = forwardRef<HTMLElement, HeroProps>(\n (\n {\n className,\n title,\n description,\n primaryAction,\n secondaryAction,\n media,\n meta,\n background,\n id,\n ...props\n },\n ref,\n ) => {\n return (\n <section\n ref={ref}\n id={id}\n className={cn(\"relative w-full overflow-hidden\", className)}\n style={emphasisSurfaceStyle(background)}\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 className={cn(heroTitleType, \"max-w-5xl text-[2.9rem] sm:text-7xl lg:text-8xl\")}>\n {title}\n </h1>\n {description ? (\n <p className={cn(heroDescriptionBase, \"mx-auto mt-8 max-w-xl opacity-70\")}>\n {description}\n </p>\n ) : null}\n {primaryAction || secondaryAction ? (\n <div className=\"mt-11 justify-center\">\n <HeroActions primaryAction={primaryAction} secondaryAction={secondaryAction} emphasis />\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 opacity-70\">\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\";\n"],"names":["HeroStatement","forwardRef","className","title","description","primaryAction","secondaryAction","media","meta","background","id","props","ref","jsxs","cn","emphasisSurfaceStyle","jsx","heroContainer","heroTitleType","heroDescriptionBase","HeroActions","m"],"mappings":";;;;;AAkBO,MAAMA,IAAgBC;AAAA,EAC3B,CACE;AAAA,IACE,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAAAC;AAAA,IACA,YAAAC;AAAA,IACA,IAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MAGE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,IAAAF;AAAA,MACA,WAAWI,EAAG,mCAAmCZ,CAAS;AAAA,MAC1D,OAAOa,EAAqBN,CAAU;AAAA,MACrC,GAAGE;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAK,EAAC,OAAA,EAAI,eAAW,IAAC,WAAU,+EAA8E;AAAA,QACzG,gBAAAA,EAAC,OAAA,EAAI,eAAW,IAAC,WAAU,iEAAgE;AAAA,0BAC1F,OAAA,EAAI,WAAWF,EAAGG,GAAe,2CAA2C,GAC3E,UAAA;AAAA,UAAA,gBAAAD,EAAC,QAAG,WAAWF,EAAGI,GAAe,iDAAiD,GAC/E,UAAAf,GACH;AAAA,UACCC,sBACE,KAAA,EAAE,WAAWU,EAAGK,GAAqB,kCAAkC,GACrE,UAAAf,EAAA,CACH,IACE;AAAA,UACHC,KAAiBC,IAChB,gBAAAU,EAAC,OAAA,EAAI,WAAU,wBACb,UAAA,gBAAAA,EAACI,GAAA,EAAY,eAAAf,GAA8B,iBAAAC,GAAkC,UAAQ,GAAA,CAAC,GACxF,IACE;AAAA,UACHE,IACC,gBAAAQ,EAAC,MAAA,EAAG,WAAU,qEACX,UAAAR,EAAK,IAAI,CAACa,MACT,gBAAAR,EAAC,MAAA,EAAiB,WAAU,0DACzB,UAAA;AAAA,YAAAQ,EAAE,OAAO,gBAAAL,EAAC,QAAA,EAAM,UAAAK,EAAE,MAAK,IAAU;AAAA,YACjCA,EAAE;AAAA,UAAA,EAAA,GAFIA,EAAE,KAGX,CACD,EAAA,CACH,IACE;AAAA,QAAA,EAAA,CACN;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;AACArB,EAAc,cAAc;"}
@@ -1,51 +1,51 @@
1
1
  "use client";
2
- import { jsxs as u, jsx as i } from "react/jsx-runtime";
3
- import { useEffect as c } from "react";
2
+ import { jsxs as d, jsx as i } from "react/jsx-runtime";
3
+ import { useEffect as l } from "react";
4
4
  import { cn as s } from "../../utils/cn.js";
5
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;
6
+ import { Globe as c, ChevronDown as f, Check as g } from "../../icons.js";
7
+ function y(r, o, t) {
8
+ l(() => {
9
+ if (!r) return;
10
10
  const e = (n) => {
11
- t.current && !t.current.contains(n.target) && r();
12
- }, d = (n) => {
13
- n.key === "Escape" && r();
11
+ o.current && !o.current.contains(n.target) && t();
12
+ }, u = (n) => {
13
+ n.key === "Escape" && t();
14
14
  };
15
- return document.addEventListener("pointerdown", e), document.addEventListener("keydown", d), () => {
16
- document.removeEventListener("pointerdown", e), document.removeEventListener("keydown", d);
15
+ return document.addEventListener("pointerdown", e), document.addEventListener("keydown", u), () => {
16
+ document.removeEventListener("pointerdown", e), document.removeEventListener("keydown", u);
17
17
  };
18
- }, [o, t, r]);
18
+ }, [r, o, t]);
19
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) });
20
+ function a(r, { size: o = "text-sm", globeClass: t = "text-muted-foreground" } = {}) {
21
+ const e = m(r);
22
+ return e ? /* @__PURE__ */ i("span", { "aria-hidden": !0, className: s(o, "leading-none"), children: e }) : /* @__PURE__ */ i(c, { className: s("h-4 w-4 shrink-0", t) });
23
23
  }
24
24
  function v({
25
- inverse: o,
26
- open: t,
27
- showFlag: r,
25
+ inverse: r,
26
+ open: o,
27
+ showFlag: t,
28
28
  currentLang: e,
29
- onClick: d,
29
+ onClick: u,
30
30
  ariaProps: n
31
31
  }) {
32
- return /* @__PURE__ */ u(
32
+ return /* @__PURE__ */ d(
33
33
  "button",
34
34
  {
35
35
  type: "button",
36
36
  "aria-haspopup": n.haspopup,
37
37
  "aria-expanded": n.expanded,
38
38
  "aria-controls": n.controls,
39
- onClick: d,
39
+ onClick: u,
40
40
  className: s(
41
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"
42
+ r ? "border-current/20 text-current hover:bg-current/10" : "border-border text-foreground hover:bg-surface"
43
43
  ),
44
44
  children: [
45
- r ? l(e.code, { globeClass: o ? "opacity-70" : "text-muted-foreground" }) : /* @__PURE__ */ i(
46
- a,
45
+ t ? a(e.code, { globeClass: r ? "opacity-70" : "text-muted-foreground" }) : /* @__PURE__ */ i(
46
+ c,
47
47
  {
48
- className: s("h-4 w-4", o ? "opacity-70" : "text-muted-foreground")
48
+ className: s("h-4 w-4", r ? "opacity-70" : "text-muted-foreground")
49
49
  }
50
50
  ),
51
51
  /* @__PURE__ */ i("span", { className: "tracking-tight", children: e.label }),
@@ -54,8 +54,8 @@ function v({
54
54
  {
55
55
  className: s(
56
56
  "h-3.5 w-3.5 transition-transform duration-150",
57
- t && "rotate-180",
58
- o ? "opacity-70" : "text-muted-foreground"
57
+ o && "rotate-180",
58
+ r ? "opacity-70" : "text-muted-foreground"
59
59
  )
60
60
  }
61
61
  )
@@ -64,44 +64,44 @@ function v({
64
64
  );
65
65
  }
66
66
  function N({
67
- lang: o,
68
- active: t,
69
- onSelect: r,
67
+ lang: r,
68
+ active: o,
69
+ onSelect: t,
70
70
  variant: e,
71
- showFlag: d
71
+ showFlag: u
72
72
  }) {
73
- return /* @__PURE__ */ u(
73
+ return /* @__PURE__ */ d(
74
74
  "button",
75
75
  {
76
76
  type: "button",
77
77
  role: "option",
78
- "aria-selected": t,
79
- onClick: r,
78
+ "aria-selected": o,
79
+ onClick: t,
80
80
  className: e === "modal" ? s(
81
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"
82
+ o ? "border-primary/40 bg-primary-soft text-foreground" : "border-border text-foreground hover:bg-surface-strong"
83
83
  ) : s(
84
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"
85
+ o ? "bg-surface-strong text-foreground" : "text-muted-foreground hover:bg-surface-strong hover:text-foreground"
86
86
  ),
87
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 })
88
+ /* @__PURE__ */ d("span", { className: e === "modal" ? "flex items-center gap-3" : "flex items-center gap-2.5", children: [
89
+ u ? a(r.code, e === "modal" ? { size: "text-base" } : {}) : null,
90
+ /* @__PURE__ */ i("span", { className: "text-sm font-medium", children: r.label })
91
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
92
+ /* @__PURE__ */ d("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" ? r.code : null,
94
+ o ? /* @__PURE__ */ i(g, { className: e === "modal" ? "h-4 w-4 text-primary" : "h-3.5 w-3.5 text-primary" }) : null
95
95
  ] })
96
96
  ]
97
97
  },
98
- o.code
98
+ r.code
99
99
  );
100
100
  }
101
101
  export {
102
102
  N as LanguageOptionRow,
103
103
  v as LanguageTrigger,
104
- l as renderFlagOrGlobe,
104
+ a as renderFlagOrGlobe,
105
105
  y as useOutsideClose
106
106
  };
107
107
  //# sourceMappingURL=parts.js.map
@@ -1 +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":"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"}
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-current/20 text-current hover:bg-current/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":"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"}