@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.
- package/README.md +13 -8
- package/dist/cjs/components/Button.cjs +1 -1
- package/dist/cjs/components/Button.cjs.map +1 -1
- package/dist/cjs/components/CTA/CTA.cjs +1 -1
- package/dist/cjs/components/CTA/CTA.cjs.map +1 -1
- package/dist/cjs/components/CTA/parts.cjs +1 -1
- package/dist/cjs/components/CTA/parts.cjs.map +1 -1
- package/dist/cjs/components/CTA/variants/Panel.cjs +1 -1
- package/dist/cjs/components/CTA/variants/Panel.cjs.map +1 -1
- package/dist/cjs/components/CTA/variants/Surface.cjs +1 -1
- package/dist/cjs/components/CTA/variants/Surface.cjs.map +1 -1
- package/dist/cjs/components/Footer/Footer.cjs +1 -1
- package/dist/cjs/components/Footer/Footer.cjs.map +1 -1
- package/dist/cjs/components/Footer/parts.cjs +1 -1
- package/dist/cjs/components/Footer/parts.cjs.map +1 -1
- package/dist/cjs/components/Footer/variants/Columns.cjs +2 -0
- package/dist/cjs/components/Footer/variants/Columns.cjs.map +1 -0
- package/dist/cjs/components/Footer/variants/Editorial.cjs +1 -1
- package/dist/cjs/components/Footer/variants/Editorial.cjs.map +1 -1
- package/dist/cjs/components/Footer/variants/Minimal.cjs +1 -1
- package/dist/cjs/components/Footer/variants/Minimal.cjs.map +1 -1
- package/dist/cjs/components/Hero/parts.cjs +1 -1
- package/dist/cjs/components/Hero/parts.cjs.map +1 -1
- package/dist/cjs/components/Hero/variants/Centered.cjs +1 -1
- package/dist/cjs/components/Hero/variants/Centered.cjs.map +1 -1
- package/dist/cjs/components/Hero/variants/Parallax.cjs +1 -1
- package/dist/cjs/components/Hero/variants/Parallax.cjs.map +1 -1
- package/dist/cjs/components/Hero/variants/Split.cjs +1 -1
- package/dist/cjs/components/Hero/variants/Split.cjs.map +1 -1
- package/dist/cjs/components/Hero/variants/Statement.cjs +1 -1
- package/dist/cjs/components/Hero/variants/Statement.cjs.map +1 -1
- package/dist/cjs/components/LanguageSwitcher/parts.cjs +1 -1
- package/dist/cjs/components/LanguageSwitcher/parts.cjs.map +1 -1
- package/dist/cjs/components/MegaMenu/MegaMenu.cjs +1 -1
- package/dist/cjs/components/MegaMenu/MegaMenu.cjs.map +1 -1
- package/dist/cjs/components/Navbar/Navbar.cjs +1 -1
- package/dist/cjs/components/Navbar/Navbar.cjs.map +1 -1
- package/dist/cjs/components/Stats/Stats.cjs +1 -1
- package/dist/cjs/components/Stats/Stats.cjs.map +1 -1
- package/dist/cjs/components/Stats/parts.cjs +1 -1
- package/dist/cjs/components/Stats/parts.cjs.map +1 -1
- package/dist/cjs/components/Stats/variants/Cells.cjs +1 -1
- package/dist/cjs/components/Stats/variants/Cells.cjs.map +1 -1
- package/dist/cjs/components/Stats/variants/Divided.cjs +2 -0
- package/dist/cjs/components/Stats/variants/Divided.cjs.map +1 -0
- package/dist/cjs/components/Stats/variants/Stacked.cjs +2 -0
- package/dist/cjs/components/Stats/variants/Stacked.cjs.map +1 -0
- package/dist/cjs/components/Stats/variants/Ticker.cjs +1 -1
- package/dist/cjs/components/Stats/variants/Ticker.cjs.map +1 -1
- package/dist/cjs/utils/surface.cjs +2 -0
- package/dist/cjs/utils/surface.cjs.map +1 -0
- package/dist/es/components/Button.js +41 -31
- package/dist/es/components/Button.js.map +1 -1
- package/dist/es/components/CTA/CTA.js +5 -6
- package/dist/es/components/CTA/CTA.js.map +1 -1
- package/dist/es/components/CTA/parts.js +19 -14
- package/dist/es/components/CTA/parts.js.map +1 -1
- package/dist/es/components/CTA/variants/Panel.js +15 -17
- package/dist/es/components/CTA/variants/Panel.js.map +1 -1
- package/dist/es/components/CTA/variants/Surface.js +21 -11
- package/dist/es/components/CTA/variants/Surface.js.map +1 -1
- package/dist/es/components/Footer/Footer.js +5 -5
- package/dist/es/components/Footer/Footer.js.map +1 -1
- package/dist/es/components/Footer/parts.js +21 -20
- package/dist/es/components/Footer/parts.js.map +1 -1
- package/dist/es/components/Footer/variants/Columns.js +76 -0
- package/dist/es/components/Footer/variants/Columns.js.map +1 -0
- package/dist/es/components/Footer/variants/Editorial.js +68 -35
- package/dist/es/components/Footer/variants/Editorial.js.map +1 -1
- package/dist/es/components/Footer/variants/Minimal.js +50 -16
- package/dist/es/components/Footer/variants/Minimal.js.map +1 -1
- package/dist/es/components/Hero/parts.js +13 -11
- package/dist/es/components/Hero/parts.js.map +1 -1
- package/dist/es/components/Hero/variants/Centered.js +29 -17
- package/dist/es/components/Hero/variants/Centered.js.map +1 -1
- package/dist/es/components/Hero/variants/Parallax.js +23 -23
- package/dist/es/components/Hero/variants/Parallax.js.map +1 -1
- package/dist/es/components/Hero/variants/Split.js +35 -23
- package/dist/es/components/Hero/variants/Split.js.map +1 -1
- package/dist/es/components/Hero/variants/Statement.js +28 -23
- package/dist/es/components/Hero/variants/Statement.js.map +1 -1
- package/dist/es/components/LanguageSwitcher/parts.js +44 -44
- package/dist/es/components/LanguageSwitcher/parts.js.map +1 -1
- package/dist/es/components/MegaMenu/MegaMenu.js +131 -126
- package/dist/es/components/MegaMenu/MegaMenu.js.map +1 -1
- package/dist/es/components/Navbar/Navbar.js +110 -92
- package/dist/es/components/Navbar/Navbar.js.map +1 -1
- package/dist/es/components/Stats/Stats.js +8 -8
- package/dist/es/components/Stats/Stats.js.map +1 -1
- package/dist/es/components/Stats/parts.js +37 -17
- package/dist/es/components/Stats/parts.js.map +1 -1
- package/dist/es/components/Stats/variants/Cells.js +46 -18
- package/dist/es/components/Stats/variants/Cells.js.map +1 -1
- package/dist/es/components/Stats/variants/Divided.js +45 -0
- package/dist/es/components/Stats/variants/Divided.js.map +1 -0
- package/dist/es/components/Stats/variants/Stacked.js +40 -0
- package/dist/es/components/Stats/variants/Stacked.js.map +1 -0
- package/dist/es/components/Stats/variants/Ticker.js +44 -23
- package/dist/es/components/Stats/variants/Ticker.js.map +1 -1
- package/dist/es/utils/surface.js +16 -0
- package/dist/es/utils/surface.js.map +1 -0
- package/dist/index.d.ts +49 -10
- package/dist/styles.css +169 -114
- package/dist/theme.css +27 -0
- package/package.json +1 -1
- package/dist/cjs/components/CTA/variants/Inverse.cjs +0 -2
- package/dist/cjs/components/CTA/variants/Inverse.cjs.map +0 -1
- package/dist/cjs/components/Footer/variants/Classic.cjs +0 -2
- package/dist/cjs/components/Footer/variants/Classic.cjs.map +0 -1
- package/dist/cjs/components/Stats/variants/Editorial.cjs +0 -2
- package/dist/cjs/components/Stats/variants/Editorial.cjs.map +0 -1
- package/dist/cjs/components/Stats/variants/Hairline.cjs +0 -2
- package/dist/cjs/components/Stats/variants/Hairline.cjs.map +0 -1
- package/dist/es/components/CTA/variants/Inverse.js +0 -42
- package/dist/es/components/CTA/variants/Inverse.js.map +0 -1
- package/dist/es/components/Footer/variants/Classic.js +0 -43
- package/dist/es/components/Footer/variants/Classic.js.map +0 -1
- package/dist/es/components/Stats/variants/Editorial.js +0 -32
- package/dist/es/components/Stats/variants/Editorial.js.map +0 -1
- package/dist/es/components/Stats/variants/Hairline.js +0 -25
- package/dist/es/components/Stats/variants/Hairline.js.map +0 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as r, jsxs as a } from "react/jsx-runtime";
|
|
3
|
-
import { useId as R, useState as
|
|
4
|
-
import { cn as
|
|
5
|
-
import { ChevronDown as
|
|
6
|
-
|
|
3
|
+
import { useId as R, useState as k } from "react";
|
|
4
|
+
import { cn as t } from "../../utils/cn.js";
|
|
5
|
+
import { ChevronDown as E, X as U, Menu as V } from "../../icons.js";
|
|
6
|
+
import { emphasisSurfaceStyle as W } from "../../utils/surface.js";
|
|
7
|
+
const Y = {
|
|
7
8
|
classic: {
|
|
8
9
|
shell: "border-b border-border bg-background/85 backdrop-blur-md supports-[backdrop-filter]:bg-background/75",
|
|
9
10
|
bar: "mx-auto max-w-6xl px-5 sm:px-8",
|
|
@@ -16,9 +17,9 @@ const P = "text-on-secondary", b = "text-foreground", W = {
|
|
|
16
17
|
columnLink: "hover:bg-surface-strong",
|
|
17
18
|
linkDescription: "text-muted-foreground",
|
|
18
19
|
mobilePanel: "border-t border-border bg-background",
|
|
19
|
-
mobileButton:
|
|
20
|
+
mobileButton: "text-foreground hover:bg-surface",
|
|
20
21
|
mobileLink: "text-muted-foreground hover:bg-surface hover:text-foreground",
|
|
21
|
-
brandText:
|
|
22
|
+
brandText: "text-foreground",
|
|
22
23
|
brandDot: "bg-foreground"
|
|
23
24
|
},
|
|
24
25
|
floating: {
|
|
@@ -33,100 +34,101 @@ const P = "text-on-secondary", b = "text-foreground", W = {
|
|
|
33
34
|
columnLink: "hover:bg-surface-strong",
|
|
34
35
|
linkDescription: "text-muted-foreground",
|
|
35
36
|
mobilePanel: "mx-3 mb-3 max-w-5xl overflow-hidden rounded-b-xl border border-border bg-surface",
|
|
36
|
-
mobileButton:
|
|
37
|
+
mobileButton: "text-foreground hover:bg-surface",
|
|
37
38
|
mobileLink: "text-muted-foreground hover:bg-surface hover:text-foreground",
|
|
38
|
-
brandText:
|
|
39
|
+
brandText: "text-foreground",
|
|
39
40
|
brandDot: "bg-foreground"
|
|
40
|
-
},
|
|
41
|
-
inverse: {
|
|
42
|
-
shell: "border-b border-white/10 bg-[#101010]/85 backdrop-blur-md",
|
|
43
|
-
bar: "mx-auto max-w-6xl px-5 sm:px-8",
|
|
44
|
-
header: "px-0",
|
|
45
|
-
trigger: "text-on-secondary/60 hover:text-on-secondary hover:bg-white/10",
|
|
46
|
-
triggerOpen: "bg-white/10 text-on-secondary",
|
|
47
|
-
badge: "bg-white/15 text-on-secondary",
|
|
48
|
-
panel: "border-white/10 bg-[#161616]",
|
|
49
|
-
columnTitle: "text-on-secondary/45",
|
|
50
|
-
columnLink: "hover:bg-white/10",
|
|
51
|
-
linkDescription: "text-on-secondary/50",
|
|
52
|
-
mobilePanel: "border-t border-white/10 bg-[#101010]",
|
|
53
|
-
mobileButton: `${P} hover:bg-white/10`,
|
|
54
|
-
mobileLink: "text-on-secondary/70 hover:bg-white/10 hover:text-on-secondary",
|
|
55
|
-
brandText: P,
|
|
56
|
-
brandDot: "bg-on-secondary"
|
|
57
41
|
}
|
|
58
|
-
},
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
42
|
+
}, Z = {
|
|
43
|
+
shell: "",
|
|
44
|
+
bar: "mx-auto max-w-6xl px-5 sm:px-8",
|
|
45
|
+
header: "px-0",
|
|
46
|
+
trigger: "text-current/70 hover:text-current hover:bg-current/10",
|
|
47
|
+
triggerOpen: "bg-current/15 text-current",
|
|
48
|
+
badge: "bg-current/20 text-current",
|
|
49
|
+
panel: "border-border bg-surface shadow-raised",
|
|
50
|
+
columnTitle: "text-muted-foreground/70",
|
|
51
|
+
columnLink: "hover:bg-surface-strong",
|
|
52
|
+
linkDescription: "text-muted-foreground",
|
|
53
|
+
mobilePanel: "border-t border-current/15",
|
|
54
|
+
mobileButton: "text-current hover:bg-current/10",
|
|
55
|
+
mobileLink: "text-current/70 hover:bg-current/10 hover:text-current",
|
|
56
|
+
brandText: "text-current",
|
|
57
|
+
brandDot: "bg-current"
|
|
58
|
+
}, K = ({
|
|
59
|
+
className: _,
|
|
60
|
+
variant: w = "classic",
|
|
61
|
+
brand: m,
|
|
62
|
+
logo: I,
|
|
63
63
|
logoSrc: C,
|
|
64
|
-
logoAlt:
|
|
64
|
+
logoAlt: $,
|
|
65
65
|
logoClassName: z,
|
|
66
66
|
brandHref: A = "#",
|
|
67
|
-
items:
|
|
68
|
-
actions:
|
|
67
|
+
items: b,
|
|
68
|
+
actions: g,
|
|
69
69
|
cta: f,
|
|
70
|
-
languageSwitcher:
|
|
70
|
+
languageSwitcher: x,
|
|
71
71
|
sticky: F = !0,
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
background: i,
|
|
73
|
+
LinkComponent: S,
|
|
74
|
+
onKeyDown: h,
|
|
75
|
+
style: L,
|
|
76
|
+
...X
|
|
75
77
|
}) => {
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
},
|
|
78
|
+
const q = R(), c = S ?? "a", [M, u] = k(null), [p, v] = k(!1), [N, O] = k(null), o = i ? Z : Y[w], G = !i && w === "floating", H = () => u(null), y = () => {
|
|
79
|
+
u(null), v(!1), O(null);
|
|
80
|
+
}, T = (e) => `${q}-panel-${e}`, D = I ?? (C ? /* @__PURE__ */ r(
|
|
79
81
|
"img",
|
|
80
82
|
{
|
|
81
83
|
src: C,
|
|
82
|
-
alt:
|
|
83
|
-
className:
|
|
84
|
+
alt: $ ?? (typeof m == "string" ? m : "Logo"),
|
|
85
|
+
className: t("h-7 w-auto", z)
|
|
84
86
|
}
|
|
85
|
-
) : null), J =
|
|
86
|
-
/* @__PURE__ */ r("span", { "aria-hidden": !0, className:
|
|
87
|
-
|
|
88
|
-
] }),
|
|
87
|
+
) : null), J = D ? /* @__PURE__ */ r("span", { className: "flex items-center", children: D }) : /* @__PURE__ */ a("span", { className: t("flex items-center gap-2 font-display text-[17px] font-bold tracking-tight", o.brandText), children: [
|
|
88
|
+
/* @__PURE__ */ r("span", { "aria-hidden": !0, className: t("inline-block h-2.5 w-2.5 rounded-sm", o.brandDot) }),
|
|
89
|
+
m
|
|
90
|
+
] }), j = t(
|
|
89
91
|
"flex items-center gap-1.5 rounded-md px-3 py-2 text-sm font-medium transition-colors duration-150",
|
|
90
|
-
|
|
91
|
-
),
|
|
92
|
-
var
|
|
92
|
+
o.trigger
|
|
93
|
+
), B = (e) => {
|
|
94
|
+
var l;
|
|
93
95
|
return /* @__PURE__ */ r(
|
|
94
96
|
"div",
|
|
95
97
|
{
|
|
96
|
-
className:
|
|
98
|
+
className: t(
|
|
97
99
|
"grid gap-x-10 gap-y-8 sm:grid-cols-2",
|
|
98
100
|
e.featured ? "" : "lg:grid-cols-3"
|
|
99
101
|
),
|
|
100
|
-
children: (
|
|
102
|
+
children: (l = e.columns) == null ? void 0 : l.map((n, s) => /* @__PURE__ */ a("div", { children: [
|
|
101
103
|
n.title ? /* @__PURE__ */ r(
|
|
102
104
|
"h4",
|
|
103
105
|
{
|
|
104
|
-
className:
|
|
106
|
+
className: t(
|
|
105
107
|
"text-xs font-semibold uppercase tracking-[0.14em]",
|
|
106
|
-
|
|
108
|
+
o.columnTitle
|
|
107
109
|
),
|
|
108
110
|
children: n.title
|
|
109
111
|
}
|
|
110
112
|
) : null,
|
|
111
|
-
/* @__PURE__ */ r("ul", { className:
|
|
112
|
-
|
|
113
|
+
/* @__PURE__ */ r("ul", { className: t(n.title && "mt-3", "space-y-0.5"), children: n.links.map((d) => /* @__PURE__ */ r("li", { children: /* @__PURE__ */ a(
|
|
114
|
+
c,
|
|
113
115
|
{
|
|
114
116
|
href: d.href,
|
|
115
|
-
onClick:
|
|
117
|
+
onClick: y,
|
|
116
118
|
target: d.external ? "_blank" : void 0,
|
|
117
119
|
rel: d.external ? "noopener noreferrer" : void 0,
|
|
118
|
-
className:
|
|
120
|
+
className: t(
|
|
119
121
|
"-mx-2 block rounded-md px-2 py-2 transition-colors duration-150",
|
|
120
|
-
|
|
122
|
+
o.columnLink
|
|
121
123
|
),
|
|
122
124
|
children: [
|
|
123
125
|
/* @__PURE__ */ r("span", { className: "block text-sm font-medium text-foreground", children: d.label }),
|
|
124
126
|
d.description ? /* @__PURE__ */ r(
|
|
125
127
|
"span",
|
|
126
128
|
{
|
|
127
|
-
className:
|
|
129
|
+
className: t(
|
|
128
130
|
"mt-0.5 block text-[13px] leading-snug",
|
|
129
|
-
|
|
131
|
+
o.linkDescription
|
|
130
132
|
),
|
|
131
133
|
children: d.description
|
|
132
134
|
}
|
|
@@ -137,20 +139,20 @@ const P = "text-on-secondary", b = "text-foreground", W = {
|
|
|
137
139
|
] }, n.title ?? s))
|
|
138
140
|
}
|
|
139
141
|
);
|
|
140
|
-
},
|
|
142
|
+
}, P = (e, l = !1) => {
|
|
141
143
|
const n = e.featured;
|
|
142
144
|
if (!n) return null;
|
|
143
145
|
const s = n.accent ? { backgroundColor: n.accent, color: `contrast-color(${n.accent})` } : void 0;
|
|
144
146
|
return /* @__PURE__ */ a(
|
|
145
|
-
|
|
147
|
+
c,
|
|
146
148
|
{
|
|
147
149
|
href: n.href,
|
|
148
|
-
onClick:
|
|
150
|
+
onClick: y,
|
|
149
151
|
target: n.external ? "_blank" : void 0,
|
|
150
152
|
rel: n.external ? "noopener noreferrer" : void 0,
|
|
151
|
-
className:
|
|
153
|
+
className: t(
|
|
152
154
|
"group relative block overflow-hidden rounded-lg p-6 transition-transform duration-150 hover:-translate-y-0.5",
|
|
153
|
-
|
|
155
|
+
l && "mt-8",
|
|
154
156
|
!n.accent && "bg-primary text-on-primary"
|
|
155
157
|
),
|
|
156
158
|
style: s,
|
|
@@ -176,54 +178,56 @@ const P = "text-on-secondary", b = "text-foreground", W = {
|
|
|
176
178
|
}
|
|
177
179
|
);
|
|
178
180
|
}, Q = (e) => {
|
|
179
|
-
e.key === "Escape" &&
|
|
181
|
+
e.key === "Escape" && y(), h == null || h(e);
|
|
180
182
|
};
|
|
181
183
|
return /* @__PURE__ */ a(
|
|
182
184
|
"header",
|
|
183
185
|
{
|
|
184
|
-
|
|
186
|
+
"data-emphasis": i ? "" : void 0,
|
|
187
|
+
style: i ? { ...W(i), ...L } : L,
|
|
188
|
+
className: t(
|
|
185
189
|
"relative w-full transition-colors duration-200",
|
|
186
190
|
F && "sticky top-0 z-50",
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
191
|
+
o.shell,
|
|
192
|
+
o.header,
|
|
193
|
+
_
|
|
190
194
|
),
|
|
191
195
|
onKeyDown: Q,
|
|
192
|
-
...
|
|
196
|
+
...X,
|
|
193
197
|
children: [
|
|
194
|
-
/* @__PURE__ */ a("nav", { className:
|
|
195
|
-
/* @__PURE__ */ r(
|
|
196
|
-
/* @__PURE__ */ r("ul", { className: "hidden items-center gap-1 lg:flex", children:
|
|
198
|
+
/* @__PURE__ */ a("nav", { className: t("relative flex h-16 w-full items-center justify-between gap-4 transition-colors duration-200", o.bar), onMouseLeave: H, "aria-label": "Mega menu", children: [
|
|
199
|
+
/* @__PURE__ */ r(c, { href: A, className: "shrink-0", children: J }),
|
|
200
|
+
/* @__PURE__ */ r("ul", { className: "hidden items-center gap-1 lg:flex", children: b.map((e, l) => {
|
|
197
201
|
var d;
|
|
198
|
-
const n = !!((d = e.columns) != null && d.length || e.featured), s =
|
|
202
|
+
const n = !!((d = e.columns) != null && d.length || e.featured), s = M === l;
|
|
199
203
|
return /* @__PURE__ */ r("li", { className: "relative", children: n ? /* @__PURE__ */ a(
|
|
200
204
|
"button",
|
|
201
205
|
{
|
|
202
206
|
type: "button",
|
|
203
207
|
"aria-haspopup": "true",
|
|
204
208
|
"aria-expanded": s,
|
|
205
|
-
"aria-controls":
|
|
206
|
-
onClick: () =>
|
|
207
|
-
onMouseEnter: () =>
|
|
208
|
-
className:
|
|
209
|
+
"aria-controls": T(l),
|
|
210
|
+
onClick: () => u(s ? null : l),
|
|
211
|
+
onMouseEnter: () => u(l),
|
|
212
|
+
className: t(j, s && o.triggerOpen),
|
|
209
213
|
children: [
|
|
210
214
|
/* @__PURE__ */ a("span", { className: "flex items-center gap-1.5", children: [
|
|
211
215
|
e.label,
|
|
212
216
|
e.badge ? /* @__PURE__ */ r(
|
|
213
217
|
"span",
|
|
214
218
|
{
|
|
215
|
-
className:
|
|
219
|
+
className: t(
|
|
216
220
|
"rounded-full px-1.5 py-0.5 text-[10px] font-semibold tracking-wide",
|
|
217
|
-
|
|
221
|
+
o.badge
|
|
218
222
|
),
|
|
219
223
|
children: e.badge
|
|
220
224
|
}
|
|
221
225
|
) : null
|
|
222
226
|
] }),
|
|
223
227
|
/* @__PURE__ */ r(
|
|
224
|
-
|
|
228
|
+
E,
|
|
225
229
|
{
|
|
226
|
-
className:
|
|
230
|
+
className: t(
|
|
227
231
|
"h-4 w-4 shrink-0 transition-transform duration-150",
|
|
228
232
|
s && "rotate-180"
|
|
229
233
|
)
|
|
@@ -231,59 +235,59 @@ const P = "text-on-secondary", b = "text-foreground", W = {
|
|
|
231
235
|
)
|
|
232
236
|
]
|
|
233
237
|
}
|
|
234
|
-
) : /* @__PURE__ */ a(
|
|
238
|
+
) : /* @__PURE__ */ a(c, { href: e.href ?? "#", target: e.external ? "_blank" : void 0, rel: e.external ? "noopener noreferrer" : void 0, className: j, children: [
|
|
235
239
|
e.label,
|
|
236
|
-
e.badge ? /* @__PURE__ */ r("span", { className:
|
|
240
|
+
e.badge ? /* @__PURE__ */ r("span", { className: t("rounded-full px-1.5 py-0.5 text-[10px] font-semibold tracking-wide", o.badge), children: e.badge }) : null
|
|
237
241
|
] }) }, e.label);
|
|
238
242
|
}) }),
|
|
239
243
|
/* @__PURE__ */ a("div", { className: "hidden items-center gap-3 lg:flex", children: [
|
|
240
|
-
|
|
241
|
-
|
|
244
|
+
x,
|
|
245
|
+
g,
|
|
242
246
|
f
|
|
243
247
|
] }),
|
|
244
248
|
/* @__PURE__ */ r(
|
|
245
249
|
"button",
|
|
246
250
|
{
|
|
247
251
|
type: "button",
|
|
248
|
-
"aria-label":
|
|
249
|
-
"aria-expanded":
|
|
252
|
+
"aria-label": p ? "Close menu" : "Open menu",
|
|
253
|
+
"aria-expanded": p,
|
|
250
254
|
onClick: () => v((e) => !e),
|
|
251
|
-
className:
|
|
255
|
+
className: t(
|
|
252
256
|
"inline-flex h-10 w-10 shrink-0 cursor-pointer items-center justify-center rounded-md lg:hidden",
|
|
253
257
|
"transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
254
|
-
|
|
258
|
+
o.mobileButton
|
|
255
259
|
),
|
|
256
|
-
children:
|
|
260
|
+
children: p ? /* @__PURE__ */ r(U, { className: "h-5 w-5" }) : /* @__PURE__ */ r(V, { className: "h-5 w-5" })
|
|
257
261
|
}
|
|
258
262
|
)
|
|
259
263
|
] }),
|
|
260
|
-
|
|
264
|
+
b.map((e, l) => {
|
|
261
265
|
var s;
|
|
262
266
|
if (!((s = e.columns) != null && s.length) && !e.featured) return null;
|
|
263
|
-
const n =
|
|
267
|
+
const n = M === l;
|
|
264
268
|
return /* @__PURE__ */ r(
|
|
265
269
|
"div",
|
|
266
270
|
{
|
|
267
|
-
id:
|
|
271
|
+
id: T(l),
|
|
268
272
|
role: "region",
|
|
269
273
|
"aria-label": `${e.label} menu`,
|
|
270
|
-
onMouseEnter: () =>
|
|
271
|
-
className:
|
|
274
|
+
onMouseEnter: () => u(l),
|
|
275
|
+
className: t(
|
|
272
276
|
"absolute top-full z-50 pt-2 transition-all duration-150",
|
|
273
|
-
|
|
277
|
+
G ? "inset-x-0 mx-auto w-full max-w-5xl" : "inset-x-0",
|
|
274
278
|
n ? "visible translate-y-0 opacity-100" : "pointer-events-none invisible -translate-y-1 opacity-0"
|
|
275
279
|
),
|
|
276
280
|
children: /* @__PURE__ */ a(
|
|
277
281
|
"div",
|
|
278
282
|
{
|
|
279
|
-
className:
|
|
283
|
+
className: t(
|
|
280
284
|
"overflow-hidden rounded-xl border p-6 md:p-8",
|
|
281
|
-
|
|
285
|
+
o.panel,
|
|
282
286
|
e.featured ? "lg:grid lg:grid-cols-[minmax(0,1fr)_auto] lg:gap-12" : ""
|
|
283
287
|
),
|
|
284
288
|
children: [
|
|
285
|
-
|
|
286
|
-
e.featured && /* @__PURE__ */ r("div", { className:
|
|
289
|
+
B(e),
|
|
290
|
+
e.featured && /* @__PURE__ */ r("div", { className: t("mt-8 max-w-sm lg:mt-0 lg:w-64"), children: P(e) })
|
|
287
291
|
]
|
|
288
292
|
}
|
|
289
293
|
)
|
|
@@ -294,38 +298,39 @@ const P = "text-on-secondary", b = "text-foreground", W = {
|
|
|
294
298
|
/* @__PURE__ */ r(
|
|
295
299
|
"div",
|
|
296
300
|
{
|
|
297
|
-
className:
|
|
301
|
+
className: t(
|
|
298
302
|
"grid transition-[grid-template-rows,opacity] duration-200 lg:hidden",
|
|
299
|
-
|
|
300
|
-
|
|
303
|
+
p ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0",
|
|
304
|
+
o.mobilePanel,
|
|
305
|
+
i && "bg-transparent"
|
|
301
306
|
),
|
|
302
307
|
children: /* @__PURE__ */ r("div", { className: "min-h-0 overflow-hidden", children: /* @__PURE__ */ a("ul", { className: "flex flex-col py-4", children: [
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
(e,
|
|
308
|
+
x ? /* @__PURE__ */ r("li", { className: "px-5 pb-4", children: x }) : null,
|
|
309
|
+
b.map(
|
|
310
|
+
(e, l) => {
|
|
306
311
|
var n;
|
|
307
312
|
return (n = e.columns) != null && n.length || e.featured ? /* @__PURE__ */ a("li", { className: "px-5", children: [
|
|
308
313
|
/* @__PURE__ */ a(
|
|
309
314
|
"button",
|
|
310
315
|
{
|
|
311
316
|
type: "button",
|
|
312
|
-
"aria-expanded":
|
|
313
|
-
onClick: () =>
|
|
314
|
-
className:
|
|
317
|
+
"aria-expanded": N === l,
|
|
318
|
+
onClick: () => O((s) => s === l ? null : l),
|
|
319
|
+
className: t(
|
|
315
320
|
"flex w-full items-center justify-between rounded-md px-2 py-2.5 text-sm font-medium transition-colors duration-150",
|
|
316
|
-
|
|
321
|
+
o.mobileButton
|
|
317
322
|
),
|
|
318
323
|
children: [
|
|
319
324
|
/* @__PURE__ */ a("span", { className: "flex items-center gap-2", children: [
|
|
320
325
|
e.label,
|
|
321
|
-
e.badge ? /* @__PURE__ */ r("span", { className:
|
|
326
|
+
e.badge ? /* @__PURE__ */ r("span", { className: t("rounded-full px-1.5 py-0.5 text-[10px] font-semibold tracking-wide", o.badge), children: e.badge }) : null
|
|
322
327
|
] }),
|
|
323
328
|
/* @__PURE__ */ r(
|
|
324
|
-
|
|
329
|
+
E,
|
|
325
330
|
{
|
|
326
|
-
className:
|
|
331
|
+
className: t(
|
|
327
332
|
"h-4 w-4 shrink-0 transition-transform duration-150",
|
|
328
|
-
|
|
333
|
+
N === l && "rotate-180"
|
|
329
334
|
)
|
|
330
335
|
}
|
|
331
336
|
)
|
|
@@ -335,33 +340,33 @@ const P = "text-on-secondary", b = "text-foreground", W = {
|
|
|
335
340
|
/* @__PURE__ */ r(
|
|
336
341
|
"div",
|
|
337
342
|
{
|
|
338
|
-
className:
|
|
343
|
+
className: t(
|
|
339
344
|
"grid transition-[grid-template-rows,opacity] duration-200",
|
|
340
|
-
|
|
345
|
+
N === l ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"
|
|
341
346
|
),
|
|
342
347
|
children: /* @__PURE__ */ r("div", { className: "min-h-0 overflow-hidden", children: /* @__PURE__ */ a("div", { className: "py-2 pl-1", children: [
|
|
343
|
-
|
|
344
|
-
e.featured ? /* @__PURE__ */ r("div", { className: "max-w-sm", children:
|
|
348
|
+
B(e),
|
|
349
|
+
e.featured ? /* @__PURE__ */ r("div", { className: "max-w-sm", children: P(e, !0) }) : null
|
|
345
350
|
] }) })
|
|
346
351
|
}
|
|
347
352
|
)
|
|
348
353
|
] }, e.label) : /* @__PURE__ */ r("li", { className: "px-5", children: /* @__PURE__ */ r(
|
|
349
|
-
|
|
354
|
+
c,
|
|
350
355
|
{
|
|
351
356
|
href: e.href ?? "#",
|
|
352
357
|
target: e.external ? "_blank" : void 0,
|
|
353
358
|
rel: e.external ? "noopener noreferrer" : void 0,
|
|
354
359
|
onClick: () => v(!1),
|
|
355
|
-
className:
|
|
360
|
+
className: t(
|
|
356
361
|
"block rounded-md px-2 py-2.5 text-sm font-medium transition-colors duration-150",
|
|
357
|
-
|
|
362
|
+
o.mobileLink
|
|
358
363
|
),
|
|
359
364
|
children: e.label
|
|
360
365
|
}
|
|
361
366
|
) }, e.label);
|
|
362
367
|
}
|
|
363
368
|
),
|
|
364
|
-
f ? /* @__PURE__ */ r("li", { className: "px-8 pb-2 pt-3", children: f }) :
|
|
369
|
+
f ? /* @__PURE__ */ r("li", { className: "px-8 pb-2 pt-3", children: f }) : g ? /* @__PURE__ */ r("li", { className: "mt-3 flex flex-wrap gap-3 px-8 pb-2", children: g }) : null
|
|
365
370
|
] }) })
|
|
366
371
|
}
|
|
367
372
|
)
|
|
@@ -369,8 +374,8 @@ const P = "text-on-secondary", b = "text-foreground", W = {
|
|
|
369
374
|
}
|
|
370
375
|
);
|
|
371
376
|
};
|
|
372
|
-
|
|
377
|
+
K.displayName = "MegaMenu";
|
|
373
378
|
export {
|
|
374
|
-
|
|
379
|
+
K as MegaMenu
|
|
375
380
|
};
|
|
376
381
|
//# sourceMappingURL=MegaMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MegaMenu.js","sources":["../../../../src/components/MegaMenu/MegaMenu.tsx"],"sourcesContent":["\"use client\";\nimport { useId, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { ChevronDown, Menu, X } from \"../../icons\";\nimport type { MegaMenuProps, MegaMenuVariant, MegaMenuItem } from \"./types\";\n\ninterface MegaMenuStyle {\n shell: string;\n bar: string;\n header: string;\n trigger: string;\n triggerOpen: string;\n badge: string;\n panel: string;\n columnTitle: string;\n columnLink: string;\n linkDescription: string;\n mobilePanel: string;\n mobileButton: string;\n mobileLink: string;\n brandText: string;\n brandDot: string;\n}\n\nconst inverse = \"text-on-secondary\";\nconst light = \"text-foreground\";\n\nconst styles: Record<MegaMenuVariant, MegaMenuStyle> = {\n classic: {\n shell: \"border-b border-border bg-background/85 backdrop-blur-md supports-[backdrop-filter]:bg-background/75\",\n bar: \"mx-auto max-w-6xl px-5 sm:px-8\",\n header: \"px-0\",\n trigger: \"text-muted-foreground hover:text-foreground hover:bg-surface\",\n triggerOpen: \"bg-surface text-foreground\",\n badge: \"bg-primary-soft text-primary\",\n panel: \"border-border bg-surface shadow-raised\",\n columnTitle: \"text-muted-foreground/70\",\n columnLink: \"hover:bg-surface-strong\",\n linkDescription: \"text-muted-foreground\",\n mobilePanel: \"border-t border-border bg-background\",\n mobileButton: `${light} hover:bg-surface`,\n mobileLink: \"text-muted-foreground hover:bg-surface hover:text-foreground\",\n brandText: light,\n brandDot: \"bg-foreground\",\n },\n floating: {\n shell: \"px-0\",\n bar: \"mx-auto mt-3 max-w-5xl rounded-xl border border-border bg-surface/90 px-5 shadow-soft backdrop-blur-md supports-[backdrop-filter]:bg-surface/70\",\n header: \"px-3 sm:px-6\",\n trigger: \"text-muted-foreground hover:text-foreground hover:bg-surface\",\n triggerOpen: \"bg-surface text-foreground\",\n badge: \"bg-primary-soft text-primary\",\n panel: \"border-border bg-surface shadow-raised\",\n columnTitle: \"text-muted-foreground/70\",\n columnLink: \"hover:bg-surface-strong\",\n linkDescription: \"text-muted-foreground\",\n mobilePanel: \"mx-3 mb-3 max-w-5xl overflow-hidden rounded-b-xl border border-border bg-surface\",\n mobileButton: `${light} hover:bg-surface`,\n mobileLink: \"text-muted-foreground hover:bg-surface hover:text-foreground\",\n brandText: light,\n brandDot: \"bg-foreground\",\n },\n inverse: {\n shell: \"border-b border-white/10 bg-[#101010]/85 backdrop-blur-md\",\n bar: \"mx-auto max-w-6xl px-5 sm:px-8\",\n header: \"px-0\",\n trigger: \"text-on-secondary/60 hover:text-on-secondary hover:bg-white/10\",\n triggerOpen: \"bg-white/10 text-on-secondary\",\n badge: \"bg-white/15 text-on-secondary\",\n panel: \"border-white/10 bg-[#161616]\",\n columnTitle: \"text-on-secondary/45\",\n columnLink: \"hover:bg-white/10\",\n linkDescription: \"text-on-secondary/50\",\n mobilePanel: \"border-t border-white/10 bg-[#101010]\",\n mobileButton: `${inverse} hover:bg-white/10`,\n mobileLink: \"text-on-secondary/70 hover:bg-white/10 hover:text-on-secondary\",\n brandText: inverse,\n brandDot: \"bg-on-secondary\",\n },\n};\n\nexport const MegaMenu = ({\n className,\n variant = \"classic\",\n brand,\n logo,\n logoSrc,\n logoAlt,\n logoClassName,\n brandHref = \"#\",\n items,\n actions,\n cta,\n languageSwitcher,\n sticky = true,\n LinkComponent,\n onKeyDown,\n ...props\n}: MegaMenuProps) => {\n const ids = useId();\n const Link = LinkComponent ?? \"a\";\n const [openIndex, setOpenIndex] = useState<number | null>(null);\n const [mobileOpen, setMobileOpen] = useState(false);\n const [mobileExpanded, setMobileExpanded] = useState<number | null>(null);\n const s = styles[variant];\n\n const closePanels = () => setOpenIndex(null);\n const closeAll = () => {\n setOpenIndex(null);\n setMobileOpen(false);\n setMobileExpanded(null);\n };\n\n const panelId = (i: number) => `${ids}-panel-${i}`;\n\n const logoNode =\n logo ??\n (logoSrc ? (\n <img\n src={logoSrc}\n alt={logoAlt ?? (typeof brand === \"string\" ? brand : \"Logo\")}\n className={cn(\"h-7 w-auto\", logoClassName)}\n />\n ) : null);\n\n const brandNode = logoNode ? (\n <span className=\"flex items-center\">{logoNode}</span>\n ) : (\n <span className={cn(\"flex items-center gap-2 font-display text-[17px] font-bold tracking-tight\", s.brandText)}>\n <span aria-hidden className={cn(\"inline-block h-2.5 w-2.5 rounded-sm\", s.brandDot)} />\n {brand}\n </span>\n );\n\n const triggerClasses = cn(\n \"flex items-center gap-1.5 rounded-md px-3 py-2 text-sm font-medium transition-colors duration-150\",\n s.trigger,\n );\n\n const renderColumns = (item: MegaMenuItem) => (\n <div\n className={cn(\n \"grid gap-x-10 gap-y-8 sm:grid-cols-2\",\n item.featured ? \"\" : \"lg:grid-cols-3\",\n )}\n >\n {item.columns?.map((column, ci) => (\n <div key={column.title ?? ci}>\n {column.title ? (\n <h4\n className={cn(\n \"text-xs font-semibold uppercase tracking-[0.14em]\",\n s.columnTitle,\n )}\n >\n {column.title}\n </h4>\n ) : null}\n <ul className={cn(column.title && \"mt-3\", \"space-y-0.5\")}>\n {column.links.map((link) => (\n <li key={link.href}>\n <Link\n href={link.href}\n onClick={closeAll}\n target={link.external ? \"_blank\" : undefined}\n rel={link.external ? \"noopener noreferrer\" : undefined}\n className={cn(\n \"-mx-2 block rounded-md px-2 py-2 transition-colors duration-150\",\n s.columnLink,\n )}\n >\n <span className=\"block text-sm font-medium text-foreground\">\n {link.label}\n </span>\n {link.description ? (\n <span\n className={cn(\n \"mt-0.5 block text-[13px] leading-snug\",\n s.linkDescription,\n )}\n >\n {link.description}\n </span>\n ) : null}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n );\n\n const renderFeatured = (item: MegaMenuItem, mobile = false) => {\n const featured = item.featured;\n if (!featured) return null;\n const featuredStyle = featured.accent\n ? { backgroundColor: featured.accent, color: `contrast-color(${featured.accent})` }\n : undefined;\n\n return (\n <Link\n href={featured.href}\n onClick={closeAll}\n target={featured.external ? \"_blank\" : undefined}\n rel={featured.external ? \"noopener noreferrer\" : undefined}\n className={cn(\n \"group relative block overflow-hidden rounded-lg p-6 transition-transform duration-150 hover:-translate-y-0.5\",\n mobile && \"mt-8\",\n !featured.accent && \"bg-primary text-on-primary\",\n )}\n style={featuredStyle}\n >\n <div className=\"flex h-full flex-col justify-between gap-4\">\n <div>\n <h4 className=\"font-display text-base font-semibold tracking-tight\">\n {featured.title}\n </h4>\n {featured.description ? (\n <p className=\"mt-1.5 text-[13px] leading-relaxed opacity-80\">\n {featured.description}\n </p>\n ) : null}\n </div>\n {featured.cta ? (\n <span className=\"text-sm font-semibold underline decoration-1 underline-offset-4\">\n {featured.cta} →\n </span>\n ) : null}\n </div>\n <div\n aria-hidden\n className=\"pointer-events-none absolute -right-8 -top-8 h-28 w-28 rounded-full opacity-20 blur-2xl bg-black/40\"\n />\n </Link>\n );\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (event.key === \"Escape\") {\n closeAll();\n }\n onKeyDown?.(event);\n };\n\n return (\n <header\n className={cn(\n \"relative w-full transition-colors duration-200\",\n sticky && \"sticky top-0 z-50\",\n s.shell,\n s.header,\n className,\n )}\n onKeyDown={handleKeyDown}\n {...props}\n >\n <nav className={cn(\"relative flex h-16 w-full items-center justify-between gap-4 transition-colors duration-200\", s.bar)} onMouseLeave={closePanels} aria-label=\"Mega menu\">\n <Link href={brandHref} className=\"shrink-0\">\n {brandNode}\n </Link>\n\n <ul className=\"hidden items-center gap-1 lg:flex\">\n {items.map((item, i) => {\n const hasPanel = Boolean(item.columns?.length || item.featured);\n const open = openIndex === i;\n return (\n <li key={item.label} className=\"relative\">\n {hasPanel ? (\n <button\n type=\"button\"\n aria-haspopup=\"true\"\n aria-expanded={open}\n aria-controls={panelId(i)}\n onClick={() => setOpenIndex(open ? null : i)}\n onMouseEnter={() => setOpenIndex(i)}\n className={cn(triggerClasses, open && s.triggerOpen)}\n >\n <span className=\"flex items-center gap-1.5\">\n {item.label}\n {item.badge ? (\n <span\n className={cn(\n \"rounded-full px-1.5 py-0.5 text-[10px] font-semibold tracking-wide\",\n s.badge,\n )}\n >\n {item.badge}\n </span>\n ) : null}\n </span>\n <ChevronDown\n className={cn(\n \"h-4 w-4 shrink-0 transition-transform duration-150\",\n open && \"rotate-180\",\n )}\n />\n </button>\n ) : (\n <Link href={item.href ?? \"#\"} target={item.external ? \"_blank\" : undefined} rel={item.external ? \"noopener noreferrer\" : undefined} className={triggerClasses}>\n {item.label}\n {item.badge ? (\n <span className={cn(\"rounded-full px-1.5 py-0.5 text-[10px] font-semibold tracking-wide\", s.badge)}>\n {item.badge}\n </span>\n ) : null}\n </Link>\n )}\n </li>\n );\n })}\n </ul>\n\n <div className=\"hidden items-center gap-3 lg:flex\">\n {languageSwitcher}\n {actions}\n {cta}\n </div>\n\n <button\n type=\"button\"\n aria-label={mobileOpen ? \"Close menu\" : \"Open menu\"}\n aria-expanded={mobileOpen}\n onClick={() => setMobileOpen((o) => !o)}\n className={cn(\n \"inline-flex h-10 w-10 shrink-0 cursor-pointer items-center justify-center rounded-md lg:hidden\",\n \"transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n s.mobileButton,\n )}\n >\n {mobileOpen ? <X className=\"h-5 w-5\" /> : <Menu className=\"h-5 w-5\" />}\n </button>\n </nav>\n\n {items.map((item, i) => {\n if (!item.columns?.length && !item.featured) return null;\n const open = openIndex === i;\n return (\n <div\n key={item.label}\n id={panelId(i)}\n role=\"region\"\n aria-label={`${item.label} menu`}\n onMouseEnter={() => setOpenIndex(i)}\n className={cn(\n \"absolute top-full z-50 pt-2 transition-all duration-150\",\n variant === \"floating\" ? \"inset-x-0 mx-auto w-full max-w-5xl\" : \"inset-x-0\",\n open\n ? \"visible translate-y-0 opacity-100\"\n : \"pointer-events-none invisible -translate-y-1 opacity-0\",\n )}\n >\n <div\n className={cn(\n \"overflow-hidden rounded-xl border p-6 md:p-8\",\n s.panel,\n item.featured ? \"lg:grid lg:grid-cols-[minmax(0,1fr)_auto] lg:gap-12\" : \"\",\n )}\n >\n {renderColumns(item)}\n {item.featured && (\n <div className={cn(\"mt-8 max-w-sm lg:mt-0 lg:w-64\")}>\n {renderFeatured(item)}\n </div>\n )}\n </div>\n </div>\n );\n })}\n\n <div\n className={cn(\n \"grid transition-[grid-template-rows,opacity] duration-200 lg:hidden\",\n mobileOpen ? \"grid-rows-[1fr] opacity-100\" : \"grid-rows-[0fr] opacity-0\",\n s.mobilePanel,\n )}\n >\n <div className=\"min-h-0 overflow-hidden\">\n <ul className=\"flex flex-col py-4\">\n {languageSwitcher ? (\n <li className=\"px-5 pb-4\">{languageSwitcher}</li>\n ) : null}\n {items.map((item, i) =>\n item.columns?.length || item.featured ? (\n <li key={item.label} className=\"px-5\">\n <button\n type=\"button\"\n aria-expanded={mobileExpanded === i}\n onClick={() =>\n setMobileExpanded((prev) => (prev === i ? null : i))\n }\n className={cn(\n \"flex w-full items-center justify-between rounded-md px-2 py-2.5 text-sm font-medium transition-colors duration-150\",\n s.mobileButton,\n )}\n >\n <span className=\"flex items-center gap-2\">\n {item.label}\n {item.badge ? (\n <span className={cn(\"rounded-full px-1.5 py-0.5 text-[10px] font-semibold tracking-wide\", s.badge)}>\n {item.badge}\n </span>\n ) : null}\n </span>\n <ChevronDown\n className={cn(\n \"h-4 w-4 shrink-0 transition-transform duration-150\",\n mobileExpanded === i && \"rotate-180\",\n )}\n />\n </button>\n <div\n className={cn(\n \"grid transition-[grid-template-rows,opacity] duration-200\",\n mobileExpanded === i\n ? \"grid-rows-[1fr] opacity-100\"\n : \"grid-rows-[0fr] opacity-0\",\n )}\n >\n <div className=\"min-h-0 overflow-hidden\">\n <div className=\"py-2 pl-1\">\n {renderColumns(item)}\n {item.featured ? (\n <div className=\"max-w-sm\">{renderFeatured(item, true)}</div>\n ) : null}\n </div>\n </div>\n </div>\n </li>\n ) : (\n <li key={item.label} className=\"px-5\">\n <Link\n href={item.href ?? \"#\"}\n target={item.external ? \"_blank\" : undefined}\n rel={item.external ? \"noopener noreferrer\" : undefined}\n onClick={() => setMobileOpen(false)}\n className={cn(\n \"block rounded-md px-2 py-2.5 text-sm font-medium transition-colors duration-150\",\n s.mobileLink,\n )}\n >\n {item.label}\n </Link>\n </li>\n ),\n )}\n {cta ? (\n <li className=\"px-8 pb-2 pt-3\">{cta}</li>\n ) : actions ? (\n <li className=\"mt-3 flex flex-wrap gap-3 px-8 pb-2\">{actions}</li>\n ) : null}\n </ul>\n </div>\n </div>\n </header>\n );\n};\nMegaMenu.displayName = \"MegaMenu\";"],"names":["inverse","light","styles","MegaMenu","className","variant","brand","logo","logoSrc","logoAlt","logoClassName","brandHref","items","actions","cta","languageSwitcher","sticky","LinkComponent","onKeyDown","props","ids","useId","Link","openIndex","setOpenIndex","useState","mobileOpen","setMobileOpen","mobileExpanded","setMobileExpanded","s","closePanels","closeAll","panelId","i","logoNode","jsx","cn","brandNode","jsxs","triggerClasses","renderColumns","item","column","ci","link","renderFeatured","mobile","featured","featuredStyle","handleKeyDown","event","hasPanel","_a","open","ChevronDown","o","X","Menu","prev"],"mappings":";;;;AAwBA,MAAMA,IAAU,qBACVC,IAAQ,mBAERC,IAAiD;AAAA,EACrD,SAAS;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,aAAa;AAAA,IACb,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,cAAc,GAAGD,CAAK;AAAA,IACtB,YAAY;AAAA,IACZ,WAAWA;AAAA,IACX,UAAU;AAAA,EAAA;AAAA,EAEZ,UAAU;AAAA,IACR,OAAO;AAAA,IACP,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,aAAa;AAAA,IACb,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,cAAc,GAAGA,CAAK;AAAA,IACtB,YAAY;AAAA,IACZ,WAAWA;AAAA,IACX,UAAU;AAAA,EAAA;AAAA,EAEZ,SAAS;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,aAAa;AAAA,IACb,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,cAAc,GAAGD,CAAO;AAAA,IACxB,YAAY;AAAA,IACZ,WAAWA;AAAA,IACX,UAAU;AAAA,EAAA;AAEd,GAEaG,IAAW,CAAC;AAAA,EACvB,WAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,KAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,eAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,MAAqB;AACnB,QAAMC,IAAMC,EAAA,GACNC,IAAOL,KAAiB,KACxB,CAACM,GAAWC,CAAY,IAAIC,EAAwB,IAAI,GACxD,CAACC,GAAYC,CAAa,IAAIF,EAAS,EAAK,GAC5C,CAACG,GAAgBC,CAAiB,IAAIJ,EAAwB,IAAI,GAClEK,IAAI5B,EAAOG,CAAO,GAElB0B,IAAc,MAAMP,EAAa,IAAI,GACrCQ,IAAW,MAAM;AACrB,IAAAR,EAAa,IAAI,GACjBG,EAAc,EAAK,GACnBE,EAAkB,IAAI;AAAA,EACxB,GAEMI,IAAU,CAACC,MAAc,GAAGd,CAAG,UAAUc,CAAC,IAE1CC,IACJ5B,MACCC,IACC,gBAAA4B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK5B;AAAA,MACL,KAAKC,MAAY,OAAOH,KAAU,WAAWA,IAAQ;AAAA,MACrD,WAAW+B,EAAG,cAAc3B,CAAa;AAAA,IAAA;AAAA,EAAA,IAEzC,OAEA4B,IAAYH,IAChB,gBAAAC,EAAC,QAAA,EAAK,WAAU,qBAAqB,UAAAD,EAAA,CAAS,IAE9C,gBAAAI,EAAC,UAAK,WAAWF,EAAG,6EAA6EP,EAAE,SAAS,GAC1G,UAAA;AAAA,IAAA,gBAAAM,EAAC,QAAA,EAAK,eAAW,IAAC,WAAWC,EAAG,uCAAuCP,EAAE,QAAQ,GAAG;AAAA,IACnFxB;AAAA,EAAA,GACH,GAGIkC,IAAiBH;AAAA,IACrB;AAAA,IACAP,EAAE;AAAA,EAAA,GAGEW,IAAgB,CAACC;;AACrB,2BAAAN;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC;AAAA,UACT;AAAA,UACAK,EAAK,WAAW,KAAK;AAAA,QAAA;AAAA,QAGtB,iBAAK,8BAAS,IAAI,CAACC,GAAQC,wBACzB,OAAA,EACE,UAAA;AAAA,UAAAD,EAAO,QACN,gBAAAP;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWC;AAAA,gBACT;AAAA,gBACAP,EAAE;AAAA,cAAA;AAAA,cAGH,UAAAa,EAAO;AAAA,YAAA;AAAA,UAAA,IAER;AAAA,UACJ,gBAAAP,EAAC,MAAA,EAAG,WAAWC,EAAGM,EAAO,SAAS,QAAQ,aAAa,GACpD,YAAO,MAAM,IAAI,CAACE,wBAChB,MAAA,EACC,UAAA,gBAAAN;AAAA,YAACjB;AAAA,YAAA;AAAA,cACC,MAAMuB,EAAK;AAAA,cACX,SAASb;AAAA,cACT,QAAQa,EAAK,WAAW,WAAW;AAAA,cACnC,KAAKA,EAAK,WAAW,wBAAwB;AAAA,cAC7C,WAAWR;AAAA,gBACT;AAAA,gBACAP,EAAE;AAAA,cAAA;AAAA,cAGJ,UAAA;AAAA,gBAAA,gBAAAM,EAAC,QAAA,EAAK,WAAU,6CACb,UAAAS,EAAK,OACR;AAAA,gBACCA,EAAK,cACJ,gBAAAT;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAWC;AAAA,sBACT;AAAA,sBACAP,EAAE;AAAA,oBAAA;AAAA,oBAGH,UAAAe,EAAK;AAAA,kBAAA;AAAA,gBAAA,IAEN;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA,KAvBCA,EAAK,IAyBd,CACD,EAAA,CACH;AAAA,QAAA,KAxCQF,EAAO,SAASC,CAyC1B;AAAA,MACD;AAAA,IAAA;AAAA,KAICE,IAAiB,CAACJ,GAAoBK,IAAS,OAAU;AAC7D,UAAMC,IAAWN,EAAK;AACtB,QAAI,CAACM,EAAU,QAAO;AACtB,UAAMC,IAAgBD,EAAS,SAC3B,EAAE,iBAAiBA,EAAS,QAAQ,OAAO,kBAAkBA,EAAS,MAAM,IAAA,IAC5E;AAEJ,WACE,gBAAAT;AAAA,MAACjB;AAAA,MAAA;AAAA,QACC,MAAM0B,EAAS;AAAA,QACf,SAAShB;AAAA,QACT,QAAQgB,EAAS,WAAW,WAAW;AAAA,QACvC,KAAKA,EAAS,WAAW,wBAAwB;AAAA,QACjD,WAAWX;AAAA,UACT;AAAA,UACAU,KAAU;AAAA,UACV,CAACC,EAAS,UAAU;AAAA,QAAA;AAAA,QAEtB,OAAOC;AAAA,QAEP,UAAA;AAAA,UAAA,gBAAAV,EAAC,OAAA,EAAI,WAAU,8CACb,UAAA;AAAA,YAAA,gBAAAA,EAAC,OAAA,EACC,UAAA;AAAA,cAAA,gBAAAH,EAAC,MAAA,EAAG,WAAU,uDACX,UAAAY,EAAS,OACZ;AAAA,cACCA,EAAS,cACR,gBAAAZ,EAAC,KAAA,EAAE,WAAU,iDACV,UAAAY,EAAS,aACZ,IACE;AAAA,YAAA,GACN;AAAA,YACCA,EAAS,MACR,gBAAAT,EAAC,QAAA,EAAK,WAAU,mEACb,UAAA;AAAA,cAAAS,EAAS;AAAA,cAAI;AAAA,YAAA,EAAA,CAChB,IACE;AAAA,UAAA,GACN;AAAA,UACA,gBAAAZ;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,eAAW;AAAA,cACX,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,QACZ;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN,GAEMc,IAAgB,CAACC,MAA4C;AACjE,IAAIA,EAAM,QAAQ,YAChBnB,EAAA,GAEFd,KAAA,QAAAA,EAAYiC;AAAA,EACd;AAEA,SACE,gBAAAZ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWF;AAAA,QACT;AAAA,QACArB,KAAU;AAAA,QACVc,EAAE;AAAA,QACFA,EAAE;AAAA,QACF1B;AAAA,MAAA;AAAA,MAEF,WAAW8C;AAAA,MACV,GAAG/B;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAoB,EAAC,OAAA,EAAI,WAAWF,EAAG,+FAA+FP,EAAE,GAAG,GAAG,cAAcC,GAAa,cAAW,aAC9J,UAAA;AAAA,UAAA,gBAAAK,EAACd,GAAA,EAAK,MAAMX,GAAW,WAAU,YAC9B,UAAA2B,GACH;AAAA,UAEA,gBAAAF,EAAC,QAAG,WAAU,qCACX,YAAM,IAAI,CAACM,GAAMR,MAAM;;AACtB,kBAAMkB,IAAW,IAAQC,IAAAX,EAAK,YAAL,QAAAW,EAAc,UAAUX,EAAK,WAChDY,IAAO/B,MAAcW;AAC3B,mBACE,gBAAAE,EAAC,MAAA,EAAoB,WAAU,YAC5B,UAAAgB,IACC,gBAAAb;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,iBAAc;AAAA,gBACd,iBAAee;AAAA,gBACf,iBAAerB,EAAQC,CAAC;AAAA,gBACxB,SAAS,MAAMV,EAAa8B,IAAO,OAAOpB,CAAC;AAAA,gBAC3C,cAAc,MAAMV,EAAaU,CAAC;AAAA,gBAClC,WAAWG,EAAGG,GAAgBc,KAAQxB,EAAE,WAAW;AAAA,gBAEnD,UAAA;AAAA,kBAAA,gBAAAS,EAAC,QAAA,EAAK,WAAU,6BACb,UAAA;AAAA,oBAAAG,EAAK;AAAA,oBACLA,EAAK,QACJ,gBAAAN;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,WAAWC;AAAA,0BACT;AAAA,0BACAP,EAAE;AAAA,wBAAA;AAAA,wBAGH,UAAAY,EAAK;AAAA,sBAAA;AAAA,oBAAA,IAEN;AAAA,kBAAA,GACN;AAAA,kBACA,gBAAAN;AAAA,oBAACmB;AAAA,oBAAA;AAAA,sBACC,WAAWlB;AAAA,wBACT;AAAA,wBACAiB,KAAQ;AAAA,sBAAA;AAAA,oBACV;AAAA,kBAAA;AAAA,gBACF;AAAA,cAAA;AAAA,YAAA,IAGF,gBAAAf,EAACjB,GAAA,EAAK,MAAMoB,EAAK,QAAQ,KAAK,QAAQA,EAAK,WAAW,WAAW,QAAW,KAAKA,EAAK,WAAW,wBAAwB,QAAW,WAAWF,GAC5I,UAAA;AAAA,cAAAE,EAAK;AAAA,cACLA,EAAK,QACJ,gBAAAN,EAAC,QAAA,EAAK,WAAWC,EAAG,sEAAsEP,EAAE,KAAK,GAC9F,UAAAY,EAAK,MAAA,CACR,IACE;AAAA,YAAA,GACN,EAAA,GAvCKA,EAAK,KAyCd;AAAA,UAEJ,CAAC,EAAA,CACH;AAAA,UAEA,gBAAAH,EAAC,OAAA,EAAI,WAAU,qCACZ,UAAA;AAAA,YAAAxB;AAAA,YACAF;AAAA,YACAC;AAAA,UAAA,GACH;AAAA,UAEA,gBAAAsB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,cAAYV,IAAa,eAAe;AAAA,cACxC,iBAAeA;AAAA,cACf,SAAS,MAAMC,EAAc,CAAC6B,MAAM,CAACA,CAAC;AAAA,cACtC,WAAWnB;AAAA,gBACT;AAAA,gBACA;AAAA,gBACAP,EAAE;AAAA,cAAA;AAAA,cAGH,UAAAJ,sBAAc+B,GAAA,EAAE,WAAU,WAAU,IAAK,gBAAArB,EAACsB,GAAA,EAAK,WAAU,UAAA,CAAU;AAAA,YAAA;AAAA,UAAA;AAAA,QACtE,GACF;AAAA,QAEC9C,EAAM,IAAI,CAAC8B,GAAMR,MAAM;;AACtB,cAAI,GAACmB,IAAAX,EAAK,YAAL,QAAAW,EAAc,WAAU,CAACX,EAAK,SAAU,QAAO;AACpD,gBAAMY,IAAO/B,MAAcW;AAC3B,iBACE,gBAAAE;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,IAAIH,EAAQC,CAAC;AAAA,cACb,MAAK;AAAA,cACL,cAAY,GAAGQ,EAAK,KAAK;AAAA,cACzB,cAAc,MAAMlB,EAAaU,CAAC;AAAA,cAClC,WAAWG;AAAA,gBACT;AAAA,gBACAhC,MAAY,aAAa,uCAAuC;AAAA,gBAChEiD,IACI,sCACA;AAAA,cAAA;AAAA,cAGN,UAAA,gBAAAf;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWF;AAAA,oBACT;AAAA,oBACAP,EAAE;AAAA,oBACFY,EAAK,WAAW,wDAAwD;AAAA,kBAAA;AAAA,kBAGzE,UAAA;AAAA,oBAAAD,EAAcC,CAAI;AAAA,oBAClBA,EAAK,YACJ,gBAAAN,EAAC,OAAA,EAAI,WAAWC,EAAG,+BAA+B,GAC/C,UAAAS,EAAeJ,CAAI,EAAA,CACtB;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YAEJ;AAAA,YA1BKA,EAAK;AAAA,UAAA;AAAA,QA6BhB,CAAC;AAAA,QAED,gBAAAN;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWC;AAAA,cACT;AAAA,cACAX,IAAa,gCAAgC;AAAA,cAC7CI,EAAE;AAAA,YAAA;AAAA,YAGJ,4BAAC,OAAA,EAAI,WAAU,2BACb,UAAA,gBAAAS,EAAC,MAAA,EAAG,WAAU,sBACX,UAAA;AAAA,cAAAxB,IACC,gBAAAqB,EAAC,MAAA,EAAG,WAAU,aAAa,aAAiB,IAC1C;AAAA,cACHxB,EAAM;AAAA,gBAAI,CAAC8B,GAAMR,MAAA;;AAChB,0BAAAmB,IAAAX,EAAK,YAAL,QAAAW,EAAc,UAAUX,EAAK,WAC3B,gBAAAH,EAAC,MAAA,EAAoB,WAAU,QAC7B,UAAA;AAAA,oBAAA,gBAAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,iBAAeX,MAAmBM;AAAA,wBAClC,SAAS,MACPL,EAAkB,CAAC8B,MAAUA,MAASzB,IAAI,OAAOA,CAAE;AAAA,wBAErD,WAAWG;AAAA,0BACT;AAAA,0BACAP,EAAE;AAAA,wBAAA;AAAA,wBAGJ,UAAA;AAAA,0BAAA,gBAAAS,EAAC,QAAA,EAAK,WAAU,2BACb,UAAA;AAAA,4BAAAG,EAAK;AAAA,4BACLA,EAAK,QACJ,gBAAAN,EAAC,QAAA,EAAK,WAAWC,EAAG,sEAAsEP,EAAE,KAAK,GAC9F,UAAAY,EAAK,MAAA,CACR,IACE;AAAA,0BAAA,GACN;AAAA,0BACA,gBAAAN;AAAA,4BAACmB;AAAA,4BAAA;AAAA,8BACC,WAAWlB;AAAA,gCACT;AAAA,gCACAT,MAAmBM,KAAK;AAAA,8BAAA;AAAA,4BAC1B;AAAA,0BAAA;AAAA,wBACF;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAEF,gBAAAE;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,WAAWC;AAAA,0BACT;AAAA,0BACAT,MAAmBM,IACf,gCACA;AAAA,wBAAA;AAAA,wBAGN,4BAAC,OAAA,EAAI,WAAU,2BACb,UAAA,gBAAAK,EAAC,OAAA,EAAI,WAAU,aACZ,UAAA;AAAA,0BAAAE,EAAcC,CAAI;AAAA,0BAClBA,EAAK,WACJ,gBAAAN,EAAC,OAAA,EAAI,WAAU,YAAY,UAAAU,EAAeJ,GAAM,EAAI,EAAA,CAAE,IACpD;AAAA,wBAAA,EAAA,CACN,EAAA,CACF;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACF,KA3COA,EAAK,KA4Cd,IAEA,gBAAAN,EAAC,MAAA,EAAoB,WAAU,QAC7B,UAAA,gBAAAA;AAAA,oBAACd;AAAA,oBAAA;AAAA,sBACC,MAAMoB,EAAK,QAAQ;AAAA,sBACnB,QAAQA,EAAK,WAAW,WAAW;AAAA,sBACnC,KAAKA,EAAK,WAAW,wBAAwB;AAAA,sBAC7C,SAAS,MAAMf,EAAc,EAAK;AAAA,sBAClC,WAAWU;AAAA,wBACT;AAAA,wBACAP,EAAE;AAAA,sBAAA;AAAA,sBAGH,UAAAY,EAAK;AAAA,oBAAA;AAAA,kBAAA,EACR,GAZOA,EAAK,KAad;AAAA;AAAA,cAAA;AAAA,cAGH5B,IACC,gBAAAsB,EAAC,MAAA,EAAG,WAAU,kBAAkB,UAAAtB,EAAA,CAAI,IAClCD,IACF,gBAAAuB,EAAC,MAAA,EAAG,WAAU,uCAAuC,aAAQ,IAC3D;AAAA,YAAA,EAAA,CACN,EAAA,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;AACAjC,EAAS,cAAc;"}
|
|
1
|
+
{"version":3,"file":"MegaMenu.js","sources":["../../../../src/components/MegaMenu/MegaMenu.tsx"],"sourcesContent":["\"use client\";\nimport { useId, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { ChevronDown, Menu, X } from \"../../icons\";\nimport { emphasisSurfaceStyle } from \"../../utils/surface\";\nimport type { MegaMenuProps, MegaMenuVariant, MegaMenuItem } from \"./types\";\n\ninterface MegaMenuStyle {\n shell: string;\n bar: string;\n header: string;\n trigger: string;\n triggerOpen: string;\n badge: string;\n panel: string;\n columnTitle: string;\n columnLink: string;\n linkDescription: string;\n mobilePanel: string;\n mobileButton: string;\n mobileLink: string;\n brandText: string;\n brandDot: string;\n}\n\nconst styles: Record<MegaMenuVariant, MegaMenuStyle> = {\n classic: {\n shell: \"border-b border-border bg-background/85 backdrop-blur-md supports-[backdrop-filter]:bg-background/75\",\n bar: \"mx-auto max-w-6xl px-5 sm:px-8\",\n header: \"px-0\",\n trigger: \"text-muted-foreground hover:text-foreground hover:bg-surface\",\n triggerOpen: \"bg-surface text-foreground\",\n badge: \"bg-primary-soft text-primary\",\n panel: \"border-border bg-surface shadow-raised\",\n columnTitle: \"text-muted-foreground/70\",\n columnLink: \"hover:bg-surface-strong\",\n linkDescription: \"text-muted-foreground\",\n mobilePanel: \"border-t border-border bg-background\",\n mobileButton: \"text-foreground hover:bg-surface\",\n mobileLink: \"text-muted-foreground hover:bg-surface hover:text-foreground\",\n brandText: \"text-foreground\",\n brandDot: \"bg-foreground\",\n },\n floating: {\n shell: \"px-0\",\n bar: \"mx-auto mt-3 max-w-5xl rounded-xl border border-border bg-surface/90 px-5 shadow-soft backdrop-blur-md supports-[backdrop-filter]:bg-surface/70\",\n header: \"px-3 sm:px-6\",\n trigger: \"text-muted-foreground hover:text-foreground hover:bg-surface\",\n triggerOpen: \"bg-surface text-foreground\",\n badge: \"bg-primary-soft text-primary\",\n panel: \"border-border bg-surface shadow-raised\",\n columnTitle: \"text-muted-foreground/70\",\n columnLink: \"hover:bg-surface-strong\",\n linkDescription: \"text-muted-foreground\",\n mobilePanel: \"mx-3 mb-3 max-w-5xl overflow-hidden rounded-b-xl border border-border bg-surface\",\n mobileButton: \"text-foreground hover:bg-surface\",\n mobileLink: \"text-muted-foreground hover:bg-surface hover:text-foreground\",\n brandText: \"text-foreground\",\n brandDot: \"bg-foreground\",\n },\n};\n\n/**\n * On an emphasis (custom-background) bar the triggers and mobile controls inherit\n * the resolved contrast color instead of the page tokens. The dropdown panel\n * stays a paper card for legibility.\n */\nconst emphatic: MegaMenuStyle = {\n shell: \"\",\n bar: \"mx-auto max-w-6xl px-5 sm:px-8\",\n header: \"px-0\",\n trigger: \"text-current/70 hover:text-current hover:bg-current/10\",\n triggerOpen: \"bg-current/15 text-current\",\n badge: \"bg-current/20 text-current\",\n panel: \"border-border bg-surface shadow-raised\",\n columnTitle: \"text-muted-foreground/70\",\n columnLink: \"hover:bg-surface-strong\",\n linkDescription: \"text-muted-foreground\",\n mobilePanel: \"border-t border-current/15\",\n mobileButton: \"text-current hover:bg-current/10\",\n mobileLink: \"text-current/70 hover:bg-current/10 hover:text-current\",\n brandText: \"text-current\",\n brandDot: \"bg-current\",\n};\n\nexport const MegaMenu = ({\n className,\n variant = \"classic\",\n brand,\n logo,\n logoSrc,\n logoAlt,\n logoClassName,\n brandHref = \"#\",\n items,\n actions,\n cta,\n languageSwitcher,\n sticky = true,\n background,\n LinkComponent,\n onKeyDown,\n style,\n ...props\n}: MegaMenuProps) => {\n const ids = useId();\n const Link = LinkComponent ?? \"a\";\n const [openIndex, setOpenIndex] = useState<number | null>(null);\n const [mobileOpen, setMobileOpen] = useState(false);\n const [mobileExpanded, setMobileExpanded] = useState<number | null>(null);\n const s = background ? emphatic : styles[variant];\n const floating = !background && variant === \"floating\";\n\n const closePanels = () => setOpenIndex(null);\n const closeAll = () => {\n setOpenIndex(null);\n setMobileOpen(false);\n setMobileExpanded(null);\n };\n\n const panelId = (i: number) => `${ids}-panel-${i}`;\n\n const logoNode =\n logo ??\n (logoSrc ? (\n <img\n src={logoSrc}\n alt={logoAlt ?? (typeof brand === \"string\" ? brand : \"Logo\")}\n className={cn(\"h-7 w-auto\", logoClassName)}\n />\n ) : null);\n\n const brandNode = logoNode ? (\n <span className=\"flex items-center\">{logoNode}</span>\n ) : (\n <span className={cn(\"flex items-center gap-2 font-display text-[17px] font-bold tracking-tight\", s.brandText)}>\n <span aria-hidden className={cn(\"inline-block h-2.5 w-2.5 rounded-sm\", s.brandDot)} />\n {brand}\n </span>\n );\n\n const triggerClasses = cn(\n \"flex items-center gap-1.5 rounded-md px-3 py-2 text-sm font-medium transition-colors duration-150\",\n s.trigger,\n );\n\n const renderColumns = (item: MegaMenuItem) => (\n <div\n className={cn(\n \"grid gap-x-10 gap-y-8 sm:grid-cols-2\",\n item.featured ? \"\" : \"lg:grid-cols-3\",\n )}\n >\n {item.columns?.map((column, ci) => (\n <div key={column.title ?? ci}>\n {column.title ? (\n <h4\n className={cn(\n \"text-xs font-semibold uppercase tracking-[0.14em]\",\n s.columnTitle,\n )}\n >\n {column.title}\n </h4>\n ) : null}\n <ul className={cn(column.title && \"mt-3\", \"space-y-0.5\")}>\n {column.links.map((link) => (\n <li key={link.href}>\n <Link\n href={link.href}\n onClick={closeAll}\n target={link.external ? \"_blank\" : undefined}\n rel={link.external ? \"noopener noreferrer\" : undefined}\n className={cn(\n \"-mx-2 block rounded-md px-2 py-2 transition-colors duration-150\",\n s.columnLink,\n )}\n >\n <span className=\"block text-sm font-medium text-foreground\">\n {link.label}\n </span>\n {link.description ? (\n <span\n className={cn(\n \"mt-0.5 block text-[13px] leading-snug\",\n s.linkDescription,\n )}\n >\n {link.description}\n </span>\n ) : null}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n );\n\n const renderFeatured = (item: MegaMenuItem, mobile = false) => {\n const featured = item.featured;\n if (!featured) return null;\n const featuredStyle = featured.accent\n ? { backgroundColor: featured.accent, color: `contrast-color(${featured.accent})` }\n : undefined;\n\n return (\n <Link\n href={featured.href}\n onClick={closeAll}\n target={featured.external ? \"_blank\" : undefined}\n rel={featured.external ? \"noopener noreferrer\" : undefined}\n className={cn(\n \"group relative block overflow-hidden rounded-lg p-6 transition-transform duration-150 hover:-translate-y-0.5\",\n mobile && \"mt-8\",\n !featured.accent && \"bg-primary text-on-primary\",\n )}\n style={featuredStyle}\n >\n <div className=\"flex h-full flex-col justify-between gap-4\">\n <div>\n <h4 className=\"font-display text-base font-semibold tracking-tight\">\n {featured.title}\n </h4>\n {featured.description ? (\n <p className=\"mt-1.5 text-[13px] leading-relaxed opacity-80\">\n {featured.description}\n </p>\n ) : null}\n </div>\n {featured.cta ? (\n <span className=\"text-sm font-semibold underline decoration-1 underline-offset-4\">\n {featured.cta} →\n </span>\n ) : null}\n </div>\n <div\n aria-hidden\n className=\"pointer-events-none absolute -right-8 -top-8 h-28 w-28 rounded-full opacity-20 blur-2xl bg-black/40\"\n />\n </Link>\n );\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (event.key === \"Escape\") {\n closeAll();\n }\n onKeyDown?.(event);\n };\n\n return (\n <header\n data-emphasis={background ? \"\" : undefined}\n style={background ? { ...emphasisSurfaceStyle(background), ...style } : style}\n className={cn(\n \"relative w-full transition-colors duration-200\",\n sticky && \"sticky top-0 z-50\",\n s.shell,\n s.header,\n className,\n )}\n onKeyDown={handleKeyDown}\n {...props}\n >\n <nav className={cn(\"relative flex h-16 w-full items-center justify-between gap-4 transition-colors duration-200\", s.bar)} onMouseLeave={closePanels} aria-label=\"Mega menu\">\n <Link href={brandHref} className=\"shrink-0\">\n {brandNode}\n </Link>\n\n <ul className=\"hidden items-center gap-1 lg:flex\">\n {items.map((item, i) => {\n const hasPanel = Boolean(item.columns?.length || item.featured);\n const open = openIndex === i;\n return (\n <li key={item.label} className=\"relative\">\n {hasPanel ? (\n <button\n type=\"button\"\n aria-haspopup=\"true\"\n aria-expanded={open}\n aria-controls={panelId(i)}\n onClick={() => setOpenIndex(open ? null : i)}\n onMouseEnter={() => setOpenIndex(i)}\n className={cn(triggerClasses, open && s.triggerOpen)}\n >\n <span className=\"flex items-center gap-1.5\">\n {item.label}\n {item.badge ? (\n <span\n className={cn(\n \"rounded-full px-1.5 py-0.5 text-[10px] font-semibold tracking-wide\",\n s.badge,\n )}\n >\n {item.badge}\n </span>\n ) : null}\n </span>\n <ChevronDown\n className={cn(\n \"h-4 w-4 shrink-0 transition-transform duration-150\",\n open && \"rotate-180\",\n )}\n />\n </button>\n ) : (\n <Link href={item.href ?? \"#\"} target={item.external ? \"_blank\" : undefined} rel={item.external ? \"noopener noreferrer\" : undefined} className={triggerClasses}>\n {item.label}\n {item.badge ? (\n <span className={cn(\"rounded-full px-1.5 py-0.5 text-[10px] font-semibold tracking-wide\", s.badge)}>\n {item.badge}\n </span>\n ) : null}\n </Link>\n )}\n </li>\n );\n })}\n </ul>\n\n <div className=\"hidden items-center gap-3 lg:flex\">\n {languageSwitcher}\n {actions}\n {cta}\n </div>\n\n <button\n type=\"button\"\n aria-label={mobileOpen ? \"Close menu\" : \"Open menu\"}\n aria-expanded={mobileOpen}\n onClick={() => setMobileOpen((o) => !o)}\n className={cn(\n \"inline-flex h-10 w-10 shrink-0 cursor-pointer items-center justify-center rounded-md lg:hidden\",\n \"transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n s.mobileButton,\n )}\n >\n {mobileOpen ? <X className=\"h-5 w-5\" /> : <Menu className=\"h-5 w-5\" />}\n </button>\n </nav>\n\n {items.map((item, i) => {\n if (!item.columns?.length && !item.featured) return null;\n const open = openIndex === i;\n return (\n <div\n key={item.label}\n id={panelId(i)}\n role=\"region\"\n aria-label={`${item.label} menu`}\n onMouseEnter={() => setOpenIndex(i)}\n className={cn(\n \"absolute top-full z-50 pt-2 transition-all duration-150\",\n floating ? \"inset-x-0 mx-auto w-full max-w-5xl\" : \"inset-x-0\",\n open\n ? \"visible translate-y-0 opacity-100\"\n : \"pointer-events-none invisible -translate-y-1 opacity-0\",\n )}\n >\n <div\n className={cn(\n \"overflow-hidden rounded-xl border p-6 md:p-8\",\n s.panel,\n item.featured ? \"lg:grid lg:grid-cols-[minmax(0,1fr)_auto] lg:gap-12\" : \"\",\n )}\n >\n {renderColumns(item)}\n {item.featured && (\n <div className={cn(\"mt-8 max-w-sm lg:mt-0 lg:w-64\")}>\n {renderFeatured(item)}\n </div>\n )}\n </div>\n </div>\n );\n })}\n\n <div\n className={cn(\n \"grid transition-[grid-template-rows,opacity] duration-200 lg:hidden\",\n mobileOpen ? \"grid-rows-[1fr] opacity-100\" : \"grid-rows-[0fr] opacity-0\",\n s.mobilePanel,\n background && \"bg-transparent\",\n )}\n >\n <div className=\"min-h-0 overflow-hidden\">\n <ul className=\"flex flex-col py-4\">\n {languageSwitcher ? (\n <li className=\"px-5 pb-4\">{languageSwitcher}</li>\n ) : null}\n {items.map((item, i) =>\n item.columns?.length || item.featured ? (\n <li key={item.label} className=\"px-5\">\n <button\n type=\"button\"\n aria-expanded={mobileExpanded === i}\n onClick={() =>\n setMobileExpanded((prev) => (prev === i ? null : i))\n }\n className={cn(\n \"flex w-full items-center justify-between rounded-md px-2 py-2.5 text-sm font-medium transition-colors duration-150\",\n s.mobileButton,\n )}\n >\n <span className=\"flex items-center gap-2\">\n {item.label}\n {item.badge ? (\n <span className={cn(\"rounded-full px-1.5 py-0.5 text-[10px] font-semibold tracking-wide\", s.badge)}>\n {item.badge}\n </span>\n ) : null}\n </span>\n <ChevronDown\n className={cn(\n \"h-4 w-4 shrink-0 transition-transform duration-150\",\n mobileExpanded === i && \"rotate-180\",\n )}\n />\n </button>\n <div\n className={cn(\n \"grid transition-[grid-template-rows,opacity] duration-200\",\n mobileExpanded === i\n ? \"grid-rows-[1fr] opacity-100\"\n : \"grid-rows-[0fr] opacity-0\",\n )}\n >\n <div className=\"min-h-0 overflow-hidden\">\n <div className=\"py-2 pl-1\">\n {renderColumns(item)}\n {item.featured ? (\n <div className=\"max-w-sm\">{renderFeatured(item, true)}</div>\n ) : null}\n </div>\n </div>\n </div>\n </li>\n ) : (\n <li key={item.label} className=\"px-5\">\n <Link\n href={item.href ?? \"#\"}\n target={item.external ? \"_blank\" : undefined}\n rel={item.external ? \"noopener noreferrer\" : undefined}\n onClick={() => setMobileOpen(false)}\n className={cn(\n \"block rounded-md px-2 py-2.5 text-sm font-medium transition-colors duration-150\",\n s.mobileLink,\n )}\n >\n {item.label}\n </Link>\n </li>\n ),\n )}\n {cta ? (\n <li className=\"px-8 pb-2 pt-3\">{cta}</li>\n ) : actions ? (\n <li className=\"mt-3 flex flex-wrap gap-3 px-8 pb-2\">{actions}</li>\n ) : null}\n </ul>\n </div>\n </div>\n </header>\n );\n};\nMegaMenu.displayName = \"MegaMenu\";"],"names":["styles","emphatic","MegaMenu","className","variant","brand","logo","logoSrc","logoAlt","logoClassName","brandHref","items","actions","cta","languageSwitcher","sticky","background","LinkComponent","onKeyDown","style","props","ids","useId","Link","openIndex","setOpenIndex","useState","mobileOpen","setMobileOpen","mobileExpanded","setMobileExpanded","s","floating","closePanels","closeAll","panelId","i","logoNode","jsx","cn","brandNode","jsxs","triggerClasses","renderColumns","item","column","ci","link","renderFeatured","mobile","featured","featuredStyle","handleKeyDown","event","emphasisSurfaceStyle","hasPanel","_a","open","ChevronDown","o","X","Menu","prev"],"mappings":"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"}
|