@ugurdemirel/landcraft 0.1.23 → 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 (105) 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/variants/{Hairline.cjs → Divided.cjs} +2 -2
  41. package/dist/cjs/components/Stats/variants/Divided.cjs.map +1 -0
  42. package/dist/cjs/components/Stats/variants/{Editorial.cjs → Stacked.cjs} +2 -2
  43. package/dist/cjs/components/Stats/variants/Stacked.cjs.map +1 -0
  44. package/dist/cjs/utils/surface.cjs +2 -0
  45. package/dist/cjs/utils/surface.cjs.map +1 -0
  46. package/dist/es/components/Button.js +41 -31
  47. package/dist/es/components/Button.js.map +1 -1
  48. package/dist/es/components/CTA/CTA.js +5 -6
  49. package/dist/es/components/CTA/CTA.js.map +1 -1
  50. package/dist/es/components/CTA/parts.js +19 -14
  51. package/dist/es/components/CTA/parts.js.map +1 -1
  52. package/dist/es/components/CTA/variants/Panel.js +15 -17
  53. package/dist/es/components/CTA/variants/Panel.js.map +1 -1
  54. package/dist/es/components/CTA/variants/Surface.js +21 -11
  55. package/dist/es/components/CTA/variants/Surface.js.map +1 -1
  56. package/dist/es/components/Footer/Footer.js +5 -5
  57. package/dist/es/components/Footer/Footer.js.map +1 -1
  58. package/dist/es/components/Footer/parts.js +21 -20
  59. package/dist/es/components/Footer/parts.js.map +1 -1
  60. package/dist/es/components/Footer/variants/Columns.js +76 -0
  61. package/dist/es/components/Footer/variants/Columns.js.map +1 -0
  62. package/dist/es/components/Footer/variants/Editorial.js +68 -35
  63. package/dist/es/components/Footer/variants/Editorial.js.map +1 -1
  64. package/dist/es/components/Footer/variants/Minimal.js +50 -16
  65. package/dist/es/components/Footer/variants/Minimal.js.map +1 -1
  66. package/dist/es/components/Hero/parts.js +13 -11
  67. package/dist/es/components/Hero/parts.js.map +1 -1
  68. package/dist/es/components/Hero/variants/Centered.js +29 -17
  69. package/dist/es/components/Hero/variants/Centered.js.map +1 -1
  70. package/dist/es/components/Hero/variants/Parallax.js +23 -23
  71. package/dist/es/components/Hero/variants/Parallax.js.map +1 -1
  72. package/dist/es/components/Hero/variants/Split.js +35 -23
  73. package/dist/es/components/Hero/variants/Split.js.map +1 -1
  74. package/dist/es/components/Hero/variants/Statement.js +28 -23
  75. package/dist/es/components/Hero/variants/Statement.js.map +1 -1
  76. package/dist/es/components/LanguageSwitcher/parts.js +44 -44
  77. package/dist/es/components/LanguageSwitcher/parts.js.map +1 -1
  78. package/dist/es/components/MegaMenu/MegaMenu.js +131 -126
  79. package/dist/es/components/MegaMenu/MegaMenu.js.map +1 -1
  80. package/dist/es/components/Navbar/Navbar.js +110 -92
  81. package/dist/es/components/Navbar/Navbar.js.map +1 -1
  82. package/dist/es/components/Stats/Stats.js +8 -8
  83. package/dist/es/components/Stats/Stats.js.map +1 -1
  84. package/dist/es/components/Stats/variants/{Hairline.js → Divided.js} +13 -13
  85. package/dist/es/components/Stats/variants/Divided.js.map +1 -0
  86. package/dist/es/components/Stats/variants/{Editorial.js → Stacked.js} +12 -12
  87. package/dist/es/components/Stats/variants/Stacked.js.map +1 -0
  88. package/dist/es/utils/surface.js +16 -0
  89. package/dist/es/utils/surface.js.map +1 -0
  90. package/dist/index.d.ts +48 -9
  91. package/dist/styles.css +79 -98
  92. package/dist/theme.css +27 -0
  93. package/package.json +1 -1
  94. package/dist/cjs/components/CTA/variants/Inverse.cjs +0 -2
  95. package/dist/cjs/components/CTA/variants/Inverse.cjs.map +0 -1
  96. package/dist/cjs/components/Footer/variants/Classic.cjs +0 -2
  97. package/dist/cjs/components/Footer/variants/Classic.cjs.map +0 -1
  98. package/dist/cjs/components/Stats/variants/Editorial.cjs.map +0 -1
  99. package/dist/cjs/components/Stats/variants/Hairline.cjs.map +0 -1
  100. package/dist/es/components/CTA/variants/Inverse.js +0 -42
  101. package/dist/es/components/CTA/variants/Inverse.js.map +0 -1
  102. package/dist/es/components/Footer/variants/Classic.js +0 -43
  103. package/dist/es/components/Footer/variants/Classic.js.map +0 -1
  104. package/dist/es/components/Stats/variants/Editorial.js.map +0 -1
  105. package/dist/es/components/Stats/variants/Hairline.js.map +0 -1
@@ -1,39 +1,72 @@
1
- import { jsx as e, jsxs as o } from "react/jsx-runtime";
2
- import { cn as N } from "../../../utils/cn.js";
3
- import { Container as g } from "../../Container.js";
4
- import { FooterLogoNode as h, FooterEditorialWordmark as w, FooterColumnsBlock as C, FooterBottomBar as F } from "../parts.js";
5
- function k({ className: m, brand: r, logo: a, logoSrc: s, logoAlt: d, logoClassName: i, description: t, columns: n, socials: l, bottom: c, languageSwitcher: f, LinkComponent: x, ...u }) {
6
- const p = x ?? "a", b = h({ logo: a, logoSrc: s, logoAlt: d, logoClassName: i, brand: r, imageClassName: "h-12 w-auto" }) ?? /* @__PURE__ */ e(w, { brand: r });
7
- return /* @__PURE__ */ e("footer", { className: N("w-full border-t border-border bg-background", m), ...u, children: /* @__PURE__ */ o(g, { className: "py-16 sm:py-20", children: [
8
- /* @__PURE__ */ o("div", { className: "mb-14 flex flex-col justify-between gap-8 sm:flex-row sm:items-end", children: [
9
- /* @__PURE__ */ o("div", { children: [
10
- b,
11
- t ? /* @__PURE__ */ e("p", { className: "mt-3 max-w-sm text-sm leading-6 text-muted-foreground", children: t }) : null
12
- ] }),
13
- l ? /* @__PURE__ */ e("div", { className: "flex items-center gap-3", children: l }) : null
14
- ] }),
15
- /* @__PURE__ */ e("div", { className: "border-t border-border pt-12", children: /* @__PURE__ */ e(
16
- C,
17
- {
18
- columns: n,
19
- Link: p,
20
- linkClassName: "text-[15px] text-foreground/80 transition-colors duration-150 hover:text-foreground"
21
- }
22
- ) }),
23
- /* @__PURE__ */ e(
24
- F,
25
- {
26
- bottom: c,
27
- languageSwitcher: f,
28
- brand: r,
29
- wrapperClassName: "mt-12 flex flex-col items-center justify-between gap-4 border-t border-border pt-8 text-sm text-muted-foreground sm:flex-row",
30
- textClassName: ""
31
- }
32
- )
33
- ] }) });
1
+ import { jsx as r, jsxs as a } from "react/jsx-runtime";
2
+ import { cn as t } from "../../../utils/cn.js";
3
+ import { Container as v } from "../../Container.js";
4
+ import { emphasisSurfaceStyle as C } from "../../../utils/surface.js";
5
+ import { FooterLogoNode as y, FooterEditorialWordmark as F, FooterColumnsBlock as j, FooterBottomBar as k } from "../parts.js";
6
+ function B({
7
+ className: d,
8
+ brand: o,
9
+ logo: i,
10
+ logoSrc: c,
11
+ logoAlt: u,
12
+ logoClassName: x,
13
+ description: m,
14
+ columns: f,
15
+ socials: s,
16
+ bottom: p,
17
+ languageSwitcher: b,
18
+ background: l,
19
+ LinkComponent: N,
20
+ style: n,
21
+ ...h
22
+ }) {
23
+ const g = N ?? "a", w = y({ logo: i, logoSrc: c, logoAlt: u, logoClassName: x, brand: o, imageClassName: "h-12 w-auto" }) ?? /* @__PURE__ */ r(F, { brand: o }), e = !!l;
24
+ return /* @__PURE__ */ r(
25
+ "footer",
26
+ {
27
+ "data-emphasis": e ? "" : void 0,
28
+ style: e ? { ...C(l), ...n } : n,
29
+ className: t("w-full border-t border-border bg-background", e && "border-current/15", d),
30
+ ...h,
31
+ children: /* @__PURE__ */ a(v, { className: "py-16 sm:py-20", children: [
32
+ /* @__PURE__ */ a("div", { className: "mb-14 flex flex-col justify-between gap-8 sm:flex-row sm:items-end", children: [
33
+ /* @__PURE__ */ a("div", { children: [
34
+ /* @__PURE__ */ r("span", { className: t(e ? "text-current" : "text-foreground"), children: w }),
35
+ m ? /* @__PURE__ */ r("p", { className: t("mt-3 max-w-sm text-sm leading-6", e ? "text-current/60" : "text-muted-foreground"), children: m }) : null
36
+ ] }),
37
+ s ? /* @__PURE__ */ r("div", { className: "flex items-center gap-3", children: s }) : null
38
+ ] }),
39
+ /* @__PURE__ */ r("div", { className: t("border-t pt-12", e ? "border-current/15" : "border-border"), children: /* @__PURE__ */ r(
40
+ j,
41
+ {
42
+ columns: f,
43
+ Link: g,
44
+ columnTitleClassName: e ? "text-current/50" : "text-muted-foreground",
45
+ linkClassName: t(
46
+ "text-[15px] transition-colors duration-150",
47
+ e ? "text-current/80 hover:text-current" : "text-foreground/80 hover:text-foreground"
48
+ )
49
+ }
50
+ ) }),
51
+ /* @__PURE__ */ r(
52
+ k,
53
+ {
54
+ bottom: p,
55
+ languageSwitcher: b,
56
+ brand: o,
57
+ wrapperClassName: t(
58
+ "mt-12 flex flex-col items-center justify-between gap-4 border-t pt-8 text-sm sm:flex-row",
59
+ e ? "border-current/15 text-current/60" : "border-border text-muted-foreground"
60
+ ),
61
+ textClassName: ""
62
+ }
63
+ )
64
+ ] })
65
+ }
66
+ );
34
67
  }
35
- k.displayName = "FooterEditorial";
68
+ B.displayName = "FooterEditorial";
36
69
  export {
37
- k as FooterEditorial
70
+ B as FooterEditorial
38
71
  };
39
72
  //# sourceMappingURL=Editorial.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Editorial.js","sources":["../../../../../src/components/Footer/variants/Editorial.tsx"],"sourcesContent":["import { cn } from \"../../../utils/cn\";\nimport { Container } from \"../../Container\";\nimport type { FooterProps } from \"../types\";\nimport {\n FooterColumnsBlock,\n FooterEditorialWordmark,\n FooterLogoNode,\n FooterBottomBar,\n} from \"../parts\";\n\ninterface EditorialProps extends FooterProps {}\n\nexport function FooterEditorial({ className, brand, logo, logoSrc, logoAlt, logoClassName, description, columns, socials, bottom, languageSwitcher, LinkComponent, ...props }: EditorialProps) {\n const Link = LinkComponent ?? \"a\";\n const brandNode = FooterLogoNode({ logo, logoSrc, logoAlt, logoClassName, brand, imageClassName: \"h-12 w-auto\" }) ?? <FooterEditorialWordmark brand={brand} />;\n\n return (\n <footer className={cn(\"w-full border-t border-border bg-background\", className)} {...props}>\n <Container className=\"py-16 sm:py-20\">\n <div className=\"mb-14 flex flex-col justify-between gap-8 sm:flex-row sm:items-end\">\n <div>\n {brandNode}\n {description ? (\n <p className=\"mt-3 max-w-sm text-sm leading-6 text-muted-foreground\">{description}</p>\n ) : null}\n </div>\n {socials ? <div className=\"flex items-center gap-3\">{socials}</div> : null}\n </div>\n <div className=\"border-t border-border pt-12\">\n <FooterColumnsBlock\n columns={columns}\n Link={Link}\n linkClassName=\"text-[15px] text-foreground/80 transition-colors duration-150 hover:text-foreground\"\n />\n </div>\n <FooterBottomBar\n bottom={bottom}\n languageSwitcher={languageSwitcher}\n brand={brand}\n wrapperClassName=\"mt-12 flex flex-col items-center justify-between gap-4 border-t border-border pt-8 text-sm text-muted-foreground sm:flex-row\"\n textClassName=\"\"\n />\n </Container>\n </footer>\n );\n}\nFooterEditorial.displayName = \"FooterEditorial\";"],"names":["FooterEditorial","className","brand","logo","logoSrc","logoAlt","logoClassName","description","columns","socials","bottom","languageSwitcher","LinkComponent","props","Link","brandNode","FooterLogoNode","jsx","FooterEditorialWordmark","cn","jsxs","Container","FooterColumnsBlock","FooterBottomBar"],"mappings":";;;;AAYO,SAASA,EAAgB,EAAE,WAAAC,GAAW,OAAAC,GAAO,MAAAC,GAAM,SAAAC,GAAS,SAAAC,GAAS,eAAAC,GAAe,aAAAC,GAAa,SAAAC,GAAS,SAAAC,GAAS,QAAAC,GAAQ,kBAAAC,GAAkB,eAAAC,GAAe,GAAGC,KAAyB;AAC7L,QAAMC,IAAOF,KAAiB,KACxBG,IAAYC,EAAe,EAAE,MAAAb,GAAM,SAAAC,GAAS,SAAAC,GAAS,eAAAC,GAAe,OAAAJ,GAAO,gBAAgB,cAAA,CAAe,KAAK,gBAAAe,EAACC,KAAwB,OAAAhB,GAAc;AAE5J,SACE,gBAAAe,EAAC,UAAA,EAAO,WAAWE,EAAG,+CAA+ClB,CAAS,GAAI,GAAGY,GACnF,UAAA,gBAAAO,EAACC,GAAA,EAAU,WAAU,kBACnB,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,sEACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EACE,UAAA;AAAA,QAAAL;AAAA,QACAR,IACC,gBAAAU,EAAC,KAAA,EAAE,WAAU,yDAAyD,aAAY,IAChF;AAAA,MAAA,GACN;AAAA,MACCR,IAAU,gBAAAQ,EAAC,OAAA,EAAI,WAAU,2BAA2B,aAAQ,IAAS;AAAA,IAAA,GACxE;AAAA,IACA,gBAAAA,EAAC,OAAA,EAAI,WAAU,gCACb,UAAA,gBAAAA;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,SAAAd;AAAA,QACA,MAAAM;AAAA,QACA,eAAc;AAAA,MAAA;AAAA,IAAA,GAElB;AAAA,IACA,gBAAAG;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,QAAAb;AAAA,QACA,kBAAAC;AAAA,QACA,OAAAT;AAAA,QACA,kBAAiB;AAAA,QACjB,eAAc;AAAA,MAAA;AAAA,IAAA;AAAA,EAChB,EAAA,CACF,EAAA,CACF;AAEJ;AACAF,EAAgB,cAAc;"}
1
+ {"version":3,"file":"Editorial.js","sources":["../../../../../src/components/Footer/variants/Editorial.tsx"],"sourcesContent":["import { cn } from \"../../../utils/cn\";\nimport { Container } from \"../../Container\";\nimport { emphasisSurfaceStyle } from \"../../../utils/surface\";\nimport type { FooterProps } from \"../types\";\nimport {\n FooterColumnsBlock,\n FooterEditorialWordmark,\n FooterLogoNode,\n FooterBottomBar,\n} from \"../parts\";\n\ninterface EditorialProps extends FooterProps {}\n\nexport function FooterEditorial({\n className,\n brand,\n logo,\n logoSrc,\n logoAlt,\n logoClassName,\n description,\n columns,\n socials,\n bottom,\n languageSwitcher,\n background,\n LinkComponent,\n style,\n ...props\n}: EditorialProps) {\n const Link = LinkComponent ?? \"a\";\n const brandNode = FooterLogoNode({ logo, logoSrc, logoAlt, logoClassName, brand, imageClassName: \"h-12 w-auto\" }) ?? <FooterEditorialWordmark brand={brand} />;\n const emphatic = Boolean(background);\n\n return (\n <footer\n data-emphasis={emphatic ? \"\" : undefined}\n style={emphatic ? { ...emphasisSurfaceStyle(background), ...style } : style}\n className={cn(\"w-full border-t border-border bg-background\", emphatic && \"border-current/15\", className)}\n {...props}\n >\n <Container className=\"py-16 sm:py-20\">\n <div className=\"mb-14 flex flex-col justify-between gap-8 sm:flex-row sm:items-end\">\n <div>\n <span className={cn(emphatic ? \"text-current\" : \"text-foreground\")}>{brandNode}</span>\n {description ? (\n <p className={cn(\"mt-3 max-w-sm text-sm leading-6\", emphatic ? \"text-current/60\" : \"text-muted-foreground\")}>\n {description}\n </p>\n ) : null}\n </div>\n {socials ? <div className=\"flex items-center gap-3\">{socials}</div> : null}\n </div>\n <div className={cn(\"border-t pt-12\", emphatic ? \"border-current/15\" : \"border-border\")}>\n <FooterColumnsBlock\n columns={columns}\n Link={Link}\n columnTitleClassName={emphatic ? \"text-current/50\" : \"text-muted-foreground\"}\n linkClassName={cn(\n \"text-[15px] transition-colors duration-150\",\n emphatic ? \"text-current/80 hover:text-current\" : \"text-foreground/80 hover:text-foreground\",\n )}\n />\n </div>\n <FooterBottomBar\n bottom={bottom}\n languageSwitcher={languageSwitcher}\n brand={brand}\n wrapperClassName={cn(\n \"mt-12 flex flex-col items-center justify-between gap-4 border-t pt-8 text-sm sm:flex-row\",\n emphatic ? \"border-current/15 text-current/60\" : \"border-border text-muted-foreground\",\n )}\n textClassName=\"\"\n />\n </Container>\n </footer>\n );\n}\nFooterEditorial.displayName = \"FooterEditorial\";\n"],"names":["FooterEditorial","className","brand","logo","logoSrc","logoAlt","logoClassName","description","columns","socials","bottom","languageSwitcher","background","LinkComponent","style","props","Link","brandNode","FooterLogoNode","jsx","FooterEditorialWordmark","emphatic","emphasisSurfaceStyle","cn","jsxs","Container","FooterColumnsBlock","FooterBottomBar"],"mappings":";;;;;AAaO,SAASA,EAAgB;AAAA,EAC9B,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,GAAmB;AACjB,QAAMC,IAAOH,KAAiB,KACxBI,IAAYC,EAAe,EAAE,MAAAf,GAAM,SAAAC,GAAS,SAAAC,GAAS,eAAAC,GAAe,OAAAJ,GAAO,gBAAgB,cAAA,CAAe,KAAK,gBAAAiB,EAACC,KAAwB,OAAAlB,GAAc,GACtJmB,IAAW,EAAQT;AAEzB,SACE,gBAAAO;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,iBAAeE,IAAW,KAAK;AAAA,MAC/B,OAAOA,IAAW,EAAE,GAAGC,EAAqBV,CAAU,GAAG,GAAGE,EAAA,IAAUA;AAAA,MACtE,WAAWS,EAAG,+CAA+CF,KAAY,qBAAqBpB,CAAS;AAAA,MACtG,GAAGc;AAAA,MAEJ,UAAA,gBAAAS,EAACC,GAAA,EAAU,WAAU,kBACnB,UAAA;AAAA,QAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,sEACb,UAAA;AAAA,UAAA,gBAAAA,EAAC,OAAA,EACC,UAAA;AAAA,YAAA,gBAAAL,EAAC,UAAK,WAAWI,EAAGF,IAAW,iBAAiB,iBAAiB,GAAI,UAAAJ,GAAU;AAAA,YAC9EV,IACC,gBAAAY,EAAC,KAAA,EAAE,WAAWI,EAAG,mCAAmCF,IAAW,oBAAoB,uBAAuB,GACvG,UAAAd,EAAA,CACH,IACE;AAAA,UAAA,GACN;AAAA,UACCE,IAAU,gBAAAU,EAAC,OAAA,EAAI,WAAU,2BAA2B,aAAQ,IAAS;AAAA,QAAA,GACxE;AAAA,QACA,gBAAAA,EAAC,SAAI,WAAWI,EAAG,kBAAkBF,IAAW,sBAAsB,eAAe,GACnF,UAAA,gBAAAF;AAAA,UAACO;AAAA,UAAA;AAAA,YACC,SAAAlB;AAAA,YACA,MAAAQ;AAAA,YACA,sBAAsBK,IAAW,oBAAoB;AAAA,YACrD,eAAeE;AAAA,cACb;AAAA,cACAF,IAAW,uCAAuC;AAAA,YAAA;AAAA,UACpD;AAAA,QAAA,GAEJ;AAAA,QACA,gBAAAF;AAAA,UAACQ;AAAA,UAAA;AAAA,YACC,QAAAjB;AAAA,YACA,kBAAAC;AAAA,YACA,OAAAT;AAAA,YACA,kBAAkBqB;AAAA,cAChB;AAAA,cACAF,IAAW,sCAAsC;AAAA,YAAA;AAAA,YAEnD,eAAc;AAAA,UAAA;AAAA,QAAA;AAAA,MAChB,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;AACArB,EAAgB,cAAc;"}
@@ -1,20 +1,54 @@
1
- import { jsx as e, jsxs as l } from "react/jsx-runtime";
2
- import { cn as h } from "../../../utils/cn.js";
3
- import { Container as N } from "../../Container.js";
4
- import { FooterLogoNode as g, FooterWordmark as b } from "../parts.js";
5
- function y({ className: i, brand: o, logo: n, logoSrc: s, logoAlt: a, logoClassName: m, columns: c, languageSwitcher: t, bottom: d, LinkComponent: f, ...x }) {
6
- const p = f ?? "a", u = g({ logo: n, logoSrc: s, logoAlt: a, logoClassName: m, brand: o }) ?? /* @__PURE__ */ e(b, { brand: o });
7
- return /* @__PURE__ */ e("footer", { className: h("w-full border-t border-border bg-background", i), ...x, children: /* @__PURE__ */ l(N, { className: "flex flex-col items-center justify-between gap-6 py-10 sm:flex-row", children: [
8
- u,
9
- /* @__PURE__ */ e("ul", { className: "flex flex-wrap items-center justify-center gap-x-8 gap-y-3", children: c.flatMap((r) => r.links).slice(0, 6).map((r) => /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(p, { href: r.href, className: "text-sm text-muted-foreground transition-colors duration-150 hover:text-foreground", children: r.label }) }, r.href)) }),
10
- /* @__PURE__ */ l("div", { className: "flex flex-col items-center gap-3", children: [
11
- t ? /* @__PURE__ */ e("div", { children: t }) : null,
12
- /* @__PURE__ */ e("div", { className: "text-sm text-muted-foreground", children: d })
13
- ] })
14
- ] }) });
1
+ import { jsx as e, jsxs as i } from "react/jsx-runtime";
2
+ import { cn as o } from "../../../utils/cn.js";
3
+ import { Container as v } from "../../Container.js";
4
+ import { emphasisSurfaceStyle as y } from "../../../utils/surface.js";
5
+ import { FooterLogoNode as j, FooterWordmark as F } from "../parts.js";
6
+ function w({
7
+ className: c,
8
+ brand: l,
9
+ logo: m,
10
+ logoSrc: d,
11
+ logoAlt: f,
12
+ logoClassName: x,
13
+ columns: p,
14
+ languageSwitcher: n,
15
+ bottom: u,
16
+ background: a,
17
+ LinkComponent: h,
18
+ style: s,
19
+ ...N
20
+ }) {
21
+ const g = h ?? "a", b = j({ logo: m, logoSrc: d, logoAlt: f, logoClassName: x, brand: l }) ?? /* @__PURE__ */ e(F, { brand: l }), r = !!a;
22
+ return /* @__PURE__ */ e(
23
+ "footer",
24
+ {
25
+ "data-emphasis": r ? "" : void 0,
26
+ style: r ? { ...y(a), ...s } : s,
27
+ className: o("w-full border-t border-border bg-background", r && "border-current/15", c),
28
+ ...N,
29
+ children: /* @__PURE__ */ i(v, { className: "flex flex-col items-center justify-between gap-6 py-10 sm:flex-row", children: [
30
+ /* @__PURE__ */ e("span", { className: o(r ? "text-current" : "text-foreground"), children: b }),
31
+ /* @__PURE__ */ e("ul", { className: "flex flex-wrap items-center justify-center gap-x-8 gap-y-3", children: p.flatMap((t) => t.links).slice(0, 6).map((t) => /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(
32
+ g,
33
+ {
34
+ href: t.href,
35
+ className: o(
36
+ "text-sm transition-colors duration-150",
37
+ r ? "text-current/70 hover:text-current" : "text-muted-foreground hover:text-foreground"
38
+ ),
39
+ children: t.label
40
+ }
41
+ ) }, t.href)) }),
42
+ /* @__PURE__ */ i("div", { className: "flex flex-col items-center gap-3", children: [
43
+ n ? /* @__PURE__ */ e("div", { children: n }) : null,
44
+ /* @__PURE__ */ e("div", { className: o("text-sm", r ? "text-current/60" : "text-muted-foreground"), children: u })
45
+ ] })
46
+ ] })
47
+ }
48
+ );
15
49
  }
16
- y.displayName = "FooterMinimal";
50
+ w.displayName = "FooterMinimal";
17
51
  export {
18
- y as FooterMinimal
52
+ w as FooterMinimal
19
53
  };
20
54
  //# sourceMappingURL=Minimal.js.map
@@ -1 +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;"}
1
+ {"version":3,"file":"Minimal.js","sources":["../../../../../src/components/Footer/variants/Minimal.tsx"],"sourcesContent":["import { cn } from \"../../../utils/cn\";\nimport { Container } from \"../../Container\";\nimport { emphasisSurfaceStyle } from \"../../../utils/surface\";\nimport type { FooterProps } from \"../types\";\nimport { FooterWordmark, FooterLogoNode } from \"../parts\";\n\ninterface MinimalProps extends FooterProps {}\n\nexport function FooterMinimal({\n className,\n brand,\n logo,\n logoSrc,\n logoAlt,\n logoClassName,\n columns,\n languageSwitcher,\n bottom,\n background,\n LinkComponent,\n style,\n ...props\n}: MinimalProps) {\n const Link = LinkComponent ?? \"a\";\n const brandNode = FooterLogoNode({ logo, logoSrc, logoAlt, logoClassName, brand }) ?? <FooterWordmark brand={brand} />;\n const emphatic = Boolean(background);\n\n return (\n <footer\n data-emphasis={emphatic ? \"\" : undefined}\n style={emphatic ? { ...emphasisSurfaceStyle(background), ...style } : style}\n className={cn(\"w-full border-t border-border bg-background\", emphatic && \"border-current/15\", className)}\n {...props}\n >\n <Container className=\"flex flex-col items-center justify-between gap-6 py-10 sm:flex-row\">\n <span className={cn(emphatic ? \"text-current\" : \"text-foreground\")}>{brandNode}</span>\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\n href={link.href}\n className={cn(\n \"text-sm transition-colors duration-150\",\n emphatic ? \"text-current/70 hover:text-current\" : \"text-muted-foreground hover:text-foreground\",\n )}\n >\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={cn(\"text-sm\", emphatic ? \"text-current/60\" : \"text-muted-foreground\")}>{bottom}</div>\n </div>\n </Container>\n </footer>\n );\n}\nFooterMinimal.displayName = \"FooterMinimal\";\n"],"names":["FooterMinimal","className","brand","logo","logoSrc","logoAlt","logoClassName","columns","languageSwitcher","bottom","background","LinkComponent","style","props","Link","brandNode","FooterLogoNode","jsx","FooterWordmark","emphatic","emphasisSurfaceStyle","cn","jsxs","Container","c","link"],"mappings":";;;;;AAQO,SAASA,EAAc;AAAA,EAC5B,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC;AAAA,EACA,SAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,GAAiB;AACf,QAAMC,IAAOH,KAAiB,KACxBI,IAAYC,EAAe,EAAE,MAAAb,GAAM,SAAAC,GAAS,SAAAC,GAAS,eAAAC,GAAe,OAAAJ,EAAA,CAAO,KAAK,gBAAAe,EAACC,GAAA,EAAe,OAAAhB,EAAA,CAAc,GAC9GiB,IAAW,EAAQT;AAEzB,SACE,gBAAAO;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,iBAAeE,IAAW,KAAK;AAAA,MAC/B,OAAOA,IAAW,EAAE,GAAGC,EAAqBV,CAAU,GAAG,GAAGE,EAAA,IAAUA;AAAA,MACtE,WAAWS,EAAG,+CAA+CF,KAAY,qBAAqBlB,CAAS;AAAA,MACtG,GAAGY;AAAA,MAEJ,UAAA,gBAAAS,EAACC,GAAA,EAAU,WAAU,sEACnB,UAAA;AAAA,QAAA,gBAAAN,EAAC,UAAK,WAAWI,EAAGF,IAAW,iBAAiB,iBAAiB,GAAI,UAAAJ,GAAU;AAAA,0BAC9E,MAAA,EAAG,WAAU,8DACX,UAAAR,EAAQ,QAAQ,CAACiB,MAAMA,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,CAACC,wBAC/C,MAAA,EACC,UAAA,gBAAAR;AAAA,UAACH;AAAA,UAAA;AAAA,YACC,MAAMW,EAAK;AAAA,YACX,WAAWJ;AAAA,cACT;AAAA,cACAF,IAAW,uCAAuC;AAAA,YAAA;AAAA,YAGnD,UAAAM,EAAK;AAAA,UAAA;AAAA,QAAA,EACR,GATOA,EAAK,IAUd,CACD,GACH;AAAA,QACA,gBAAAH,EAAC,OAAA,EAAI,WAAU,oCACZ,UAAA;AAAA,UAAAd,IAAmB,gBAAAS,EAAC,OAAA,EAAK,UAAAT,EAAA,CAAiB,IAAS;AAAA,UACpD,gBAAAS,EAAC,SAAI,WAAWI,EAAG,WAAWF,IAAW,oBAAoB,uBAAuB,GAAI,UAAAV,EAAA,CAAO;AAAA,QAAA,EAAA,CACjG;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;AACAT,EAAc,cAAc;"}
@@ -1,21 +1,23 @@
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;
1
+ import { jsx as l, jsxs as r } from "react/jsx-runtime";
2
+ const s = "relative mx-auto flex w-full max-w-6xl flex-col items-center px-5 sm:px-8", a = "font-display font-semibold leading-[1.04] tracking-[-0.03em] text-balance", o = "text-pretty leading-relaxed sm:text-lg";
3
+ function x({ eyebrow: e }) {
4
+ return typeof e == "string" ? /* @__PURE__ */ l("p", { className: "text-xs font-semibold uppercase tracking-[0.2em] text-primary", children: e }) : e ? /* @__PURE__ */ l("div", { children: e }) : null;
5
5
  }
6
- function x({
6
+ function c({
7
7
  primaryAction: e,
8
- secondaryAction: t
8
+ secondaryAction: t,
9
+ emphasis: n = !1
9
10
  }) {
10
- return !e && !t ? null : /* @__PURE__ */ n("div", { className: "flex flex-wrap items-center gap-4", children: [
11
+ return !e && !t ? null : /* @__PURE__ */ r("div", { "data-emphasis": n ? "" : void 0, className: "flex flex-wrap items-center gap-4", children: [
11
12
  e,
12
13
  t
13
14
  ] });
14
15
  }
15
16
  export {
16
- x as HeroActions,
17
- o as HeroEyebrow,
18
- i as heroContainer,
19
- s as heroTitleBase
17
+ c as HeroActions,
18
+ x as HeroEyebrow,
19
+ s as heroContainer,
20
+ o as heroDescriptionBase,
21
+ a as heroTitleType
20
22
  };
21
23
  //# sourceMappingURL=parts.js.map
@@ -1 +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;"}
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\n/**\n * Shared display type for every hero layout. Layouts add their own color\n * (`text-foreground` on paper, inherited contrast color on the emphasis band)\n * and size, but never re-declare the family, weight, leading or tracking.\n */\nexport const heroTitleType =\n \"font-display font-semibold leading-[1.04] tracking-[-0.03em] text-balance\";\n\n/** Shared supporting-copy type; layouts add their own color. */\nexport const heroDescriptionBase = \"text-pretty leading-relaxed sm:text-lg\";\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 emphasis = false,\n}: {\n primaryAction?: ReactNode;\n secondaryAction?: ReactNode;\n /** Marks the actions as sitting on an emphasis band so descendant buttons inherit its contrast color. */\n emphasis?: boolean;\n}) {\n if (!primaryAction && !secondaryAction) return null;\n return (\n <div data-emphasis={emphasis ? \"\" : undefined} className=\"flex flex-wrap items-center gap-4\">\n {primaryAction}\n {secondaryAction}\n </div>\n );\n}\n"],"names":["heroContainer","heroTitleType","heroDescriptionBase","HeroEyebrow","eyebrow","jsx","HeroActions","primaryAction","secondaryAction","emphasis"],"mappings":";AAEO,MAAMA,IACX,6EAOWC,IACX,6EAGWC,IAAsB;AAE5B,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;AAAA,EACA,UAAAC,IAAW;AACb,GAKG;AACD,SAAI,CAACF,KAAiB,CAACC,IAAwB,yBAE5C,OAAA,EAAI,iBAAeC,IAAW,KAAK,QAAW,WAAU,qCACtD,UAAA;AAAA,IAAAF;AAAA,IACAC;AAAA,EAAA,GACH;AAEJ;"}
@@ -1,21 +1,33 @@
1
- import { jsx as e, jsxs as n } from "react/jsx-runtime";
1
+ import { jsx as e, jsxs as m } from "react/jsx-runtime";
2
2
  import { forwardRef as b } from "react";
3
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(
4
+ import { HeroEyebrow as h, heroTitleType as g, heroDescriptionBase as N, HeroActions as w, heroContainer as j } from "../parts.js";
5
+ const v = b(
6
+ ({
7
+ className: c,
8
+ eyebrow: d,
9
+ title: i,
10
+ description: t,
11
+ primaryAction: o,
12
+ secondaryAction: s,
13
+ media: a,
14
+ meta: n,
15
+ background: y,
16
+ id: x,
17
+ ...u
18
+ }, p) => /* @__PURE__ */ e(
7
19
  "section",
8
20
  {
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(
21
+ ref: p,
22
+ id: x,
23
+ className: r("relative w-full border-b border-border bg-background", c),
24
+ ...u,
25
+ children: /* @__PURE__ */ m("div", { className: r(j, "pt-24 pb-20 text-center sm:pt-32 sm:pb-24"), children: [
26
+ /* @__PURE__ */ e(h, { eyebrow: d }),
27
+ /* @__PURE__ */ e("h1", { className: r(g, "mt-7 max-w-4xl text-5xl text-foreground sm:text-6xl lg:text-7xl"), children: i }),
28
+ t ? /* @__PURE__ */ e("p", { className: r(N, "mx-auto mt-7 max-w-xl text-muted-foreground"), children: t }) : null,
29
+ o || s ? /* @__PURE__ */ e("div", { className: "mt-10 justify-center", children: /* @__PURE__ */ e(w, { primaryAction: o, secondaryAction: s }) }) : null,
30
+ n ? /* @__PURE__ */ e("ul", { className: "mt-14 flex flex-wrap items-center justify-center gap-x-9 gap-y-3", children: n.map((l, f) => /* @__PURE__ */ m(
19
31
  "li",
20
32
  {
21
33
  className: r(
@@ -29,13 +41,13 @@ const j = b(
29
41
  },
30
42
  l.label
31
43
  )) }) : null,
32
- m ? /* @__PURE__ */ e("div", { className: "mt-16 w-full", children: m }) : null
44
+ a ? /* @__PURE__ */ e("div", { className: "mt-16 w-full", children: a }) : null
33
45
  ] })
34
46
  }
35
47
  )
36
48
  );
37
- j.displayName = "HeroCentered";
49
+ v.displayName = "HeroCentered";
38
50
  export {
39
- j as HeroCentered
51
+ v as HeroCentered
40
52
  };
41
53
  //# sourceMappingURL=Centered.js.map
@@ -1 +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;"}
1
+ {"version":3,"file":"Centered.js","sources":["../../../../../src/components/Hero/variants/Centered.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/** Centered — understated, one statement, generous white space. */\nexport const HeroCentered = 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(heroContainer, \"pt-24 pb-20 text-center sm:pt-32 sm:pb-24\")}>\n <HeroEyebrow eyebrow={eyebrow} />\n <h1 className={cn(heroTitleType, \"mt-7 max-w-4xl text-5xl text-foreground sm:text-6xl lg:text-7xl\")}>\n {title}\n </h1>\n {description ? (\n <p className={cn(heroDescriptionBase, \"mx-auto mt-7 max-w-xl text-muted-foreground\")}>\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\";\n"],"names":["HeroCentered","forwardRef","className","eyebrow","title","description","primaryAction","secondaryAction","media","meta","background","id","props","ref","jsx","cn","heroContainer","HeroEyebrow","heroTitleType","heroDescriptionBase","HeroActions","m","i","jsxs"],"mappings":";;;;AAYO,MAAMA,IAAeC;AAAA,EAC1B,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,4BAAC,OAAA,EAAI,WAAWG,EAAGC,GAAe,2CAA2C,GAC3E,UAAA;AAAA,QAAA,gBAAAF,EAACG,KAAY,SAAAd,GAAkB;AAAA,0BAC9B,MAAA,EAAG,WAAWY,EAAGG,GAAe,iEAAiE,GAC/F,UAAAd,GACH;AAAA,QACCC,sBACE,KAAA,EAAE,WAAWU,EAAGI,GAAqB,6CAA6C,GAChF,UAAAd,EAAA,CACH,IACE;AAAA,QACHC,KAAiBC,IAChB,gBAAAO,EAAC,OAAA,EAAI,WAAU,wBACb,UAAA,gBAAAA,EAACM,GAAA,EAAY,eAAAd,GAA8B,iBAAAC,EAAA,CAAkC,EAAA,CAC/E,IACE;AAAA,QACHE,sBACE,MAAA,EAAG,WAAU,oEACX,UAAAA,EAAK,IAAI,CAACY,GAAGC,MACZ,gBAAAC;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAWR;AAAA,cACT;AAAA,cACAO,IAAI,KAAK;AAAA,YAAA;AAAA,YAGV,UAAA;AAAA,cAAAD,EAAE,OAAO,gBAAAP,EAAC,QAAA,EAAK,WAAU,sBAAsB,UAAAO,EAAE,MAAK,IAAU;AAAA,cAChEA,EAAE;AAAA,YAAA;AAAA,UAAA;AAAA,UAPEA,EAAE;AAAA,QAAA,CASV,GACH,IACE;AAAA,QACHb,IAAQ,gBAAAM,EAAC,OAAA,EAAI,WAAU,gBAAgB,aAAM,IAAS;AAAA,MAAA,EAAA,CACzD;AAAA,IAAA;AAAA,EAAA;AAGN;AACAd,EAAa,cAAc;"}
@@ -1,18 +1,18 @@
1
1
  "use client";
2
2
  import { jsxs as d, jsx as t } from "react/jsx-runtime";
3
- import { forwardRef as O, useRef as C, useState as u, useEffect as w } from "react";
3
+ import { forwardRef as O, useRef as k, useState as u, useEffect as w } from "react";
4
4
  import { cn as i } from "../../../utils/cn.js";
5
- import { HeroEyebrow as P, heroTitleBase as S, HeroActions as _, heroContainer as k } from "../parts.js";
6
- const z = 18, B = 5, G = 0.7;
7
- function U(s, c, a) {
5
+ import { HeroEyebrow as C, heroTitleType as P, heroDescriptionBase as S, HeroActions as _, heroContainer as z } from "../parts.js";
6
+ const B = 18, G = 5, U = 0.7;
7
+ function I(s, c, a) {
8
8
  c.current = s, typeof a == "function" ? a(s) : a && (a.current = s);
9
9
  }
10
- function I(s) {
10
+ function X(s) {
11
11
  return { x: (s.x - 50) * 4, y: (s.y - 50) * 4 };
12
12
  }
13
- const X = O(
14
- ({ className: s, eyebrow: c, title: a, description: f, primaryAction: m, secondaryAction: x, meta: h, media: p, logos: M = [], id: T, ...E }, R) => {
15
- const y = C(null), [b, v] = u({ x: 0, y: 0 }), [$, L] = u(!1), [o, g] = u(!1);
13
+ const Y = O(
14
+ ({ className: s, eyebrow: c, title: a, description: f, primaryAction: m, secondaryAction: x, meta: h, media: p, logos: T = [], background: J, id: M, ...E }, R) => {
15
+ const y = k(null), [b, v] = u({ x: 0, y: 0 }), [$, L] = u(!1), [o, g] = u(!1);
16
16
  w(() => {
17
17
  var r;
18
18
  if (typeof window.matchMedia != "function") return;
@@ -35,19 +35,19 @@ const X = O(
35
35
  x: ((e.clientX - r.left) / r.width - 0.5) * 2,
36
36
  y: ((e.clientY - r.top) / r.height - 0.5) * 2
37
37
  });
38
- }, j = () => v({ x: 0, y: 0 }), N = $ || o;
38
+ }, D = () => v({ x: 0, y: 0 }), N = $ || o;
39
39
  return /* @__PURE__ */ d(
40
40
  "section",
41
41
  {
42
- ref: (e) => U(e, y, R),
43
- id: T,
42
+ ref: (e) => I(e, y, R),
43
+ id: M,
44
44
  onMouseMove: A,
45
- onMouseLeave: j,
45
+ onMouseLeave: D,
46
46
  className: i("relative w-full overflow-hidden border-b border-border bg-background", s),
47
47
  ...E,
48
48
  children: [
49
- M.map((e, n) => {
50
- const r = e.depth ?? z, l = I(e), D = `translate(calc(-50% + ${l.x}px), calc(-50% + ${l.y}px)) scale(0.6)`, F = "translate(-50%, -50%)", H = o ? "translate(0px, 0px)" : `translate(${b.x * r}px, ${b.y * r}px)`;
49
+ T.map((e, n) => {
50
+ const r = e.depth ?? B, l = X(e), j = `translate(calc(-50% + ${l.x}px), calc(-50% + ${l.y}px)) scale(0.6)`, F = "translate(-50%, -50%)", H = o ? "translate(0px, 0px)" : `translate(${b.x * r}px, ${b.y * r}px)`;
51
51
  return /* @__PURE__ */ t(
52
52
  "div",
53
53
  {
@@ -57,7 +57,7 @@ const X = O(
57
57
  style: {
58
58
  left: `${e.x}%`,
59
59
  top: `${e.y}%`,
60
- transform: N ? F : D,
60
+ transform: N ? F : j,
61
61
  opacity: N ? 1 : 0,
62
62
  transitionDelay: `${n * 90}ms`
63
63
  },
@@ -71,8 +71,8 @@ const X = O(
71
71
  {
72
72
  className: "flex h-16 w-16 items-center justify-center rounded-2xl border border-border bg-surface shadow-raised",
73
73
  style: o ? void 0 : {
74
- animation: `hero-float ${B}s ease-in-out infinite`,
75
- animationDelay: `-${n * G}s`
74
+ animation: `hero-float ${G}s ease-in-out infinite`,
75
+ animationDelay: `-${n * U}s`
76
76
  },
77
77
  children: e.icon
78
78
  }
@@ -83,10 +83,10 @@ const X = O(
83
83
  e.label
84
84
  );
85
85
  }),
86
- /* @__PURE__ */ d("div", { className: i(k, "relative z-20 pt-24 pb-20 text-center sm:pt-32 sm:pb-24"), children: [
87
- /* @__PURE__ */ t(P, { eyebrow: c }),
88
- /* @__PURE__ */ t("h1", { className: i(S, "mt-7 max-w-4xl text-5xl leading-[1.04] sm:text-6xl lg:text-7xl"), children: a }),
89
- f ? /* @__PURE__ */ t("p", { className: "mx-auto mt-7 max-w-xl text-pretty leading-relaxed text-muted-foreground sm:text-lg", children: f }) : null,
86
+ /* @__PURE__ */ d("div", { className: i(z, "relative z-20 pt-24 pb-20 text-center sm:pt-32 sm:pb-24"), children: [
87
+ /* @__PURE__ */ t(C, { eyebrow: c }),
88
+ /* @__PURE__ */ t("h1", { className: i(P, "mt-7 max-w-4xl text-5xl text-foreground sm:text-6xl lg:text-7xl"), children: a }),
89
+ f ? /* @__PURE__ */ t("p", { className: i(S, "mx-auto mt-7 max-w-xl text-muted-foreground"), children: f }) : null,
90
90
  m || x ? /* @__PURE__ */ t("div", { className: "mt-10 justify-center", children: /* @__PURE__ */ t(_, { primaryAction: m, secondaryAction: x }) }) : null,
91
91
  h ? /* @__PURE__ */ t("ul", { className: "mt-14 flex flex-wrap items-center justify-center gap-x-9 gap-y-3", children: h.map((e, n) => /* @__PURE__ */ d(
92
92
  "li",
@@ -109,8 +109,8 @@ const X = O(
109
109
  );
110
110
  }
111
111
  );
112
- X.displayName = "HeroParallax";
112
+ Y.displayName = "HeroParallax";
113
113
  export {
114
- X as HeroParallax
114
+ Y as HeroParallax
115
115
  };
116
116
  //# sourceMappingURL=Parallax.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Parallax.js","sources":["../../../../../src/components/Hero/variants/Parallax.tsx"],"sourcesContent":["\"use client\";\nimport {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type ForwardedRef,\n type MouseEvent,\n type MutableRefObject,\n} from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { HeroActions, HeroEyebrow, heroContainer, heroTitleBase } from \"../parts\";\nimport type { HeroLogo, HeroProps } from \"../types\";\n\nconst DEFAULT_DEPTH = 18;\nconst FLOAT_DURATION = 5; // seconds per breathing cycle\nconst FLOAT_STAGGER = 0.7; // seconds of desync between consecutive tiles\n\nfunction setSectionRef(\n node: HTMLElement | null,\n localRef: MutableRefObject<HTMLElement | null>,\n forwarded: ForwardedRef<HTMLElement>,\n) {\n localRef.current = node;\n if (typeof forwarded === \"function\") forwarded(node);\n else if (forwarded) (forwarded as MutableRefObject<HTMLElement | null>).current = node;\n}\n\nfunction tileEntryOffset(logo: HeroLogo) {\n // Push the tile further out from the centre along the line it already sits on,\n // so it appears to fly in from off-screen.\n return { x: (logo.x - 50) * 4, y: (logo.y - 50) * 4 };\n}\n\n/** Parallax — centred copy with floating logo tiles that react to the mouse. */\nexport const HeroParallax = forwardRef<HTMLElement, HeroProps>(\n (\n { className, eyebrow, title, description, primaryAction, secondaryAction, meta, media, logos = [], id, ...props },\n ref,\n ) => {\n const sectionRef = useRef<HTMLElement | null>(null);\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [entered, setEntered] = useState(false);\n const [reduceMotion, setReduceMotion] = useState(false);\n\n useEffect(() => {\n if (typeof window.matchMedia !== \"function\") return;\n const mq = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n const onChange = () => setReduceMotion(mq.matches);\n setReduceMotion(mq.matches);\n mq.addEventListener?.(\"change\", onChange);\n return () => mq.removeEventListener?.(\"change\", onChange);\n }, []);\n\n useEffect(() => {\n if (reduceMotion) return;\n const raf = requestAnimationFrame(() => setEntered(true));\n return () => cancelAnimationFrame(raf);\n }, [reduceMotion]);\n\n const handleMouseMove = (e: MouseEvent<HTMLElement>) => {\n if (reduceMotion) return;\n const el = sectionRef.current;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n setOffset({\n x: ((e.clientX - rect.left) / rect.width - 0.5) * 2,\n y: ((e.clientY - rect.top) / rect.height - 0.5) * 2,\n });\n };\n\n const handleMouseLeave = () => setOffset({ x: 0, y: 0 });\n\n const showResting = entered || reduceMotion;\n\n return (\n <section\n ref={(node) => setSectionRef(node, sectionRef, ref)}\n id={id}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n className={cn(\"relative w-full overflow-hidden border-b border-border bg-background\", className)}\n {...props}\n >\n {logos.map((logo, i) => {\n const depth = logo.depth ?? DEFAULT_DEPTH;\n const entry = tileEntryOffset(logo);\n const entryTransform = `translate(calc(-50% + ${entry.x}px), calc(-50% + ${entry.y}px)) scale(0.6)`;\n const restingTransform = \"translate(-50%, -50%)\";\n const parallaxTransform = reduceMotion\n ? \"translate(0px, 0px)\"\n : `translate(${offset.x * depth}px, ${offset.y * depth}px)`;\n\n return (\n <div\n key={logo.label}\n aria-hidden\n data-logo={logo.label}\n className=\"pointer-events-none absolute z-10 hidden transition-[transform,opacity] duration-700 ease-out md:block\"\n style={{\n left: `${logo.x}%`,\n top: `${logo.y}%`,\n transform: showResting ? restingTransform : entryTransform,\n opacity: showResting ? 1 : 0,\n transitionDelay: `${i * 90}ms`,\n }}\n >\n <div\n className=\"transition-transform duration-200 ease-out\"\n style={{ transform: parallaxTransform }}\n >\n <div\n className=\"flex h-16 w-16 items-center justify-center rounded-2xl border border-border bg-surface shadow-raised\"\n style={\n reduceMotion\n ? undefined\n : {\n animation: `hero-float ${FLOAT_DURATION}s ease-in-out infinite`,\n animationDelay: `-${i * FLOAT_STAGGER}s`,\n }\n }\n >\n {logo.icon}\n </div>\n </div>\n </div>\n );\n })}\n\n <div className={cn(heroContainer, \"relative z-20 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 },\n);\nHeroParallax.displayName = \"HeroParallax\";\n"],"names":["DEFAULT_DEPTH","FLOAT_DURATION","FLOAT_STAGGER","setSectionRef","node","localRef","forwarded","tileEntryOffset","logo","HeroParallax","forwardRef","className","eyebrow","title","description","primaryAction","secondaryAction","meta","media","logos","id","props","ref","sectionRef","useRef","offset","setOffset","useState","entered","setEntered","reduceMotion","setReduceMotion","useEffect","mq","onChange","_a","raf","handleMouseMove","el","rect","handleMouseLeave","showResting","jsxs","cn","i","depth","entry","entryTransform","restingTransform","parallaxTransform","jsx","heroContainer","HeroEyebrow","heroTitleBase","HeroActions","m"],"mappings":"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"}
1
+ {"version":3,"file":"Parallax.js","sources":["../../../../../src/components/Hero/variants/Parallax.tsx"],"sourcesContent":["\"use client\";\nimport {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type ForwardedRef,\n type MouseEvent,\n type MutableRefObject,\n} from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport {\n HeroActions,\n HeroEyebrow,\n heroContainer,\n heroDescriptionBase,\n heroTitleType,\n} from \"../parts\";\nimport type { HeroLogo, HeroProps } from \"../types\";\n\nconst DEFAULT_DEPTH = 18;\nconst FLOAT_DURATION = 5; // seconds per breathing cycle\nconst FLOAT_STAGGER = 0.7; // seconds of desync between consecutive tiles\n\nfunction setSectionRef(\n node: HTMLElement | null,\n localRef: MutableRefObject<HTMLElement | null>,\n forwarded: ForwardedRef<HTMLElement>,\n) {\n localRef.current = node;\n if (typeof forwarded === \"function\") forwarded(node);\n else if (forwarded) (forwarded as MutableRefObject<HTMLElement | null>).current = node;\n}\n\nfunction tileEntryOffset(logo: HeroLogo) {\n // Push the tile further out from the centre along the line it already sits on,\n // so it appears to fly in from off-screen.\n return { x: (logo.x - 50) * 4, y: (logo.y - 50) * 4 };\n}\n\n/** Parallax — centred copy with floating logo tiles that react to the mouse. */\nexport const HeroParallax = forwardRef<HTMLElement, HeroProps>(\n (\n { className, eyebrow, title, description, primaryAction, secondaryAction, meta, media, logos = [], background, id, ...props },\n ref,\n ) => {\n const sectionRef = useRef<HTMLElement | null>(null);\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [entered, setEntered] = useState(false);\n const [reduceMotion, setReduceMotion] = useState(false);\n\n useEffect(() => {\n if (typeof window.matchMedia !== \"function\") return;\n const mq = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n const onChange = () => setReduceMotion(mq.matches);\n setReduceMotion(mq.matches);\n mq.addEventListener?.(\"change\", onChange);\n return () => mq.removeEventListener?.(\"change\", onChange);\n }, []);\n\n useEffect(() => {\n if (reduceMotion) return;\n const raf = requestAnimationFrame(() => setEntered(true));\n return () => cancelAnimationFrame(raf);\n }, [reduceMotion]);\n\n const handleMouseMove = (e: MouseEvent<HTMLElement>) => {\n if (reduceMotion) return;\n const el = sectionRef.current;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n setOffset({\n x: ((e.clientX - rect.left) / rect.width - 0.5) * 2,\n y: ((e.clientY - rect.top) / rect.height - 0.5) * 2,\n });\n };\n\n const handleMouseLeave = () => setOffset({ x: 0, y: 0 });\n\n const showResting = entered || reduceMotion;\n\n return (\n <section\n ref={(node) => setSectionRef(node, sectionRef, ref)}\n id={id}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n className={cn(\"relative w-full overflow-hidden border-b border-border bg-background\", className)}\n {...props}\n >\n {logos.map((logo, i) => {\n const depth = logo.depth ?? DEFAULT_DEPTH;\n const entry = tileEntryOffset(logo);\n const entryTransform = `translate(calc(-50% + ${entry.x}px), calc(-50% + ${entry.y}px)) scale(0.6)`;\n const restingTransform = \"translate(-50%, -50%)\";\n const parallaxTransform = reduceMotion\n ? \"translate(0px, 0px)\"\n : `translate(${offset.x * depth}px, ${offset.y * depth}px)`;\n\n return (\n <div\n key={logo.label}\n aria-hidden\n data-logo={logo.label}\n className=\"pointer-events-none absolute z-10 hidden transition-[transform,opacity] duration-700 ease-out md:block\"\n style={{\n left: `${logo.x}%`,\n top: `${logo.y}%`,\n transform: showResting ? restingTransform : entryTransform,\n opacity: showResting ? 1 : 0,\n transitionDelay: `${i * 90}ms`,\n }}\n >\n <div\n className=\"transition-transform duration-200 ease-out\"\n style={{ transform: parallaxTransform }}\n >\n <div\n className=\"flex h-16 w-16 items-center justify-center rounded-2xl border border-border bg-surface shadow-raised\"\n style={\n reduceMotion\n ? undefined\n : {\n animation: `hero-float ${FLOAT_DURATION}s ease-in-out infinite`,\n animationDelay: `-${i * FLOAT_STAGGER}s`,\n }\n }\n >\n {logo.icon}\n </div>\n </div>\n </div>\n );\n })}\n\n <div className={cn(heroContainer, \"relative z-20 pt-24 pb-20 text-center sm:pt-32 sm:pb-24\")}>\n <HeroEyebrow eyebrow={eyebrow} />\n <h1 className={cn(heroTitleType, \"mt-7 max-w-4xl text-5xl text-foreground sm:text-6xl lg:text-7xl\")}>\n {title}\n </h1>\n {description ? (\n <p className={cn(heroDescriptionBase, \"mx-auto mt-7 max-w-xl text-muted-foreground\")}>\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 },\n);\nHeroParallax.displayName = \"HeroParallax\";\n"],"names":["DEFAULT_DEPTH","FLOAT_DURATION","FLOAT_STAGGER","setSectionRef","node","localRef","forwarded","tileEntryOffset","logo","HeroParallax","forwardRef","className","eyebrow","title","description","primaryAction","secondaryAction","meta","media","logos","background","id","props","ref","sectionRef","useRef","offset","setOffset","useState","entered","setEntered","reduceMotion","setReduceMotion","useEffect","mq","onChange","_a","raf","handleMouseMove","el","rect","handleMouseLeave","showResting","jsxs","cn","i","depth","entry","entryTransform","restingTransform","parallaxTransform","jsx","heroContainer","HeroEyebrow","heroTitleType","heroDescriptionBase","HeroActions","m"],"mappings":"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"}
@@ -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