@ugurdemirel/landcraft 0.1.16 → 0.1.18
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 +2 -3
- package/dist/cjs/components/Badge.cjs +1 -1
- package/dist/cjs/components/Badge.cjs.map +1 -1
- package/dist/cjs/components/Button.cjs +1 -1
- package/dist/cjs/components/Button.cjs.map +1 -1
- package/dist/cjs/components/CTA/variants/Inverse.cjs +1 -2
- package/dist/cjs/components/CTA/variants/Inverse.cjs.map +1 -1
- package/dist/cjs/components/CTA/variants/Panel.cjs +1 -2
- package/dist/cjs/components/CTA/variants/Panel.cjs.map +1 -1
- package/dist/cjs/components/Features/FeatureCard.cjs +1 -1
- package/dist/cjs/components/Features/FeatureCard.cjs.map +1 -1
- package/dist/cjs/components/Hero/variants/Statement.cjs +1 -2
- package/dist/cjs/components/Hero/variants/Statement.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/Pricing/parts.cjs +1 -2
- package/dist/cjs/components/Pricing/parts.cjs.map +1 -1
- package/dist/cjs/components/Pricing/variants/Bento.cjs +1 -1
- package/dist/cjs/components/Pricing/variants/Bento.cjs.map +1 -1
- package/dist/cjs/components/Pricing/variants/Cards.cjs +1 -1
- package/dist/cjs/components/Pricing/variants/Cards.cjs.map +1 -1
- package/dist/cjs/components/Testimonials/TestimonialCard.cjs +1 -1
- package/dist/cjs/components/Testimonials/TestimonialCard.cjs.map +1 -1
- package/dist/cjs/components/Testimonials/variants/Carousel.cjs +1 -1
- package/dist/cjs/components/Testimonials/variants/Carousel.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/es/components/Badge.js +21 -17
- package/dist/es/components/Badge.js.map +1 -1
- package/dist/es/components/Button.js +29 -29
- package/dist/es/components/Button.js.map +1 -1
- package/dist/es/components/CTA/variants/Inverse.js +37 -42
- package/dist/es/components/CTA/variants/Inverse.js.map +1 -1
- package/dist/es/components/CTA/variants/Panel.js +51 -56
- package/dist/es/components/CTA/variants/Panel.js.map +1 -1
- package/dist/es/components/Features/FeatureCard.js +13 -14
- package/dist/es/components/Features/FeatureCard.js.map +1 -1
- package/dist/es/components/Hero/variants/Statement.js +37 -42
- package/dist/es/components/Hero/variants/Statement.js.map +1 -1
- package/dist/es/components/MegaMenu/MegaMenu.js +93 -88
- package/dist/es/components/MegaMenu/MegaMenu.js.map +1 -1
- package/dist/es/components/Navbar/Navbar.js +30 -26
- package/dist/es/components/Navbar/Navbar.js.map +1 -1
- package/dist/es/components/Pricing/parts.js +33 -34
- package/dist/es/components/Pricing/parts.js.map +1 -1
- package/dist/es/components/Pricing/variants/Bento.js +16 -17
- package/dist/es/components/Pricing/variants/Bento.js.map +1 -1
- package/dist/es/components/Pricing/variants/Cards.js +10 -11
- package/dist/es/components/Pricing/variants/Cards.js.map +1 -1
- package/dist/es/components/Testimonials/TestimonialCard.js +10 -11
- package/dist/es/components/Testimonials/TestimonialCard.js.map +1 -1
- package/dist/es/components/Testimonials/variants/Carousel.js +10 -11
- package/dist/es/components/Testimonials/variants/Carousel.js.map +1 -1
- package/dist/es/index.js +89 -93
- package/dist/es/index.js.map +1 -1
- package/dist/index.d.ts +8 -33
- package/dist/styles.css +0 -3
- package/package.json +1 -1
- package/dist/cjs/utils/contrast.cjs +0 -2
- package/dist/cjs/utils/contrast.cjs.map +0 -1
- package/dist/cjs/utils/useTokenForeground.cjs +0 -3
- package/dist/cjs/utils/useTokenForeground.cjs.map +0 -1
- package/dist/es/utils/contrast.js +0 -48
- package/dist/es/utils/contrast.js.map +0 -1
- package/dist/es/utils/useTokenForeground.js +0 -28
- package/dist/es/utils/useTokenForeground.js.map +0 -1
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as r, jsxs as a } from "react/jsx-runtime";
|
|
3
3
|
import { useId as R, useState as w } from "react";
|
|
4
|
-
import { cn as
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
const $ = "text-on-secondary", b = "text-foreground", Y = {
|
|
4
|
+
import { cn as l } from "../../utils/cn.js";
|
|
5
|
+
import { ChevronDown as B, X as U, Menu as V } from "../../icons.js";
|
|
6
|
+
const P = "text-on-secondary", b = "text-foreground", W = {
|
|
8
7
|
classic: {
|
|
9
8
|
shell: "border-b border-border bg-background/85 backdrop-blur-md supports-[backdrop-filter]:bg-background/75",
|
|
10
9
|
bar: "mx-auto max-w-6xl px-5 sm:px-8",
|
|
@@ -51,70 +50,72 @@ const $ = "text-on-secondary", b = "text-foreground", Y = {
|
|
|
51
50
|
columnLink: "hover:bg-white/10",
|
|
52
51
|
linkDescription: "text-on-secondary/50",
|
|
53
52
|
mobilePanel: "border-t border-white/10 bg-[#101010]",
|
|
54
|
-
mobileButton: `${
|
|
53
|
+
mobileButton: `${P} hover:bg-white/10`,
|
|
55
54
|
mobileLink: "text-on-secondary/70 hover:bg-white/10 hover:text-on-secondary",
|
|
56
|
-
brandText:
|
|
55
|
+
brandText: P,
|
|
57
56
|
brandDot: "bg-on-secondary"
|
|
58
57
|
}
|
|
59
|
-
},
|
|
58
|
+
}, Y = ({
|
|
60
59
|
className: E,
|
|
61
60
|
variant: k = "classic",
|
|
62
61
|
brand: p,
|
|
63
|
-
logo:
|
|
62
|
+
logo: _,
|
|
64
63
|
logoSrc: C,
|
|
65
|
-
logoAlt:
|
|
66
|
-
logoClassName:
|
|
67
|
-
brandHref:
|
|
68
|
-
items:
|
|
69
|
-
actions:
|
|
70
|
-
cta:
|
|
71
|
-
languageSwitcher:
|
|
72
|
-
sticky:
|
|
73
|
-
LinkComponent:
|
|
64
|
+
logoAlt: I,
|
|
65
|
+
logoClassName: z,
|
|
66
|
+
brandHref: A = "#",
|
|
67
|
+
items: g,
|
|
68
|
+
actions: m,
|
|
69
|
+
cta: f,
|
|
70
|
+
languageSwitcher: h,
|
|
71
|
+
sticky: F = !0,
|
|
72
|
+
LinkComponent: X,
|
|
74
73
|
onKeyDown: x,
|
|
75
74
|
...q
|
|
76
75
|
}) => {
|
|
77
|
-
const G = R(), i =
|
|
76
|
+
const G = R(), i = X ?? "a", [L, c] = w(null), [u, v] = w(!1), [y, M] = w(null), t = W[k], H = () => c(null), N = () => {
|
|
78
77
|
c(null), v(!1), M(null);
|
|
79
|
-
},
|
|
78
|
+
}, O = (e) => `${G}-panel-${e}`, T = _ ?? (C ? /* @__PURE__ */ r(
|
|
80
79
|
"img",
|
|
81
80
|
{
|
|
82
81
|
src: C,
|
|
83
|
-
alt:
|
|
84
|
-
className:
|
|
82
|
+
alt: I ?? (typeof p == "string" ? p : "Logo"),
|
|
83
|
+
className: l("h-7 w-auto", z)
|
|
85
84
|
}
|
|
86
|
-
) : null), J =
|
|
87
|
-
/* @__PURE__ */ r("span", { "aria-hidden": !0, className:
|
|
85
|
+
) : null), J = T ? /* @__PURE__ */ r("span", { className: "flex items-center", children: T }) : /* @__PURE__ */ a("span", { className: l("flex items-center gap-2 font-display text-[17px] font-bold tracking-tight", t.brandText), children: [
|
|
86
|
+
/* @__PURE__ */ r("span", { "aria-hidden": !0, className: l("inline-block h-2.5 w-2.5 rounded-sm", t.brandDot) }),
|
|
88
87
|
p
|
|
89
|
-
] }), D =
|
|
88
|
+
] }), D = l(
|
|
90
89
|
"flex items-center gap-1.5 rounded-md px-3 py-2 text-sm font-medium transition-colors duration-150",
|
|
91
90
|
t.trigger
|
|
92
|
-
),
|
|
91
|
+
), $ = (e) => {
|
|
93
92
|
var o;
|
|
94
93
|
return /* @__PURE__ */ r(
|
|
95
94
|
"div",
|
|
96
95
|
{
|
|
97
|
-
className:
|
|
96
|
+
className: l(
|
|
98
97
|
"grid gap-x-10 gap-y-8 sm:grid-cols-2",
|
|
99
98
|
e.featured ? "" : "lg:grid-cols-3"
|
|
100
99
|
),
|
|
101
|
-
children: (o = e.columns) == null ? void 0 : o.map((
|
|
102
|
-
|
|
100
|
+
children: (o = e.columns) == null ? void 0 : o.map((n, s) => /* @__PURE__ */ a("div", { children: [
|
|
101
|
+
n.title ? /* @__PURE__ */ r(
|
|
103
102
|
"h4",
|
|
104
103
|
{
|
|
105
|
-
className:
|
|
104
|
+
className: l(
|
|
106
105
|
"text-xs font-semibold uppercase tracking-[0.14em]",
|
|
107
106
|
t.columnTitle
|
|
108
107
|
),
|
|
109
|
-
children:
|
|
108
|
+
children: n.title
|
|
110
109
|
}
|
|
111
110
|
) : null,
|
|
112
|
-
/* @__PURE__ */ r("ul", { className: n
|
|
111
|
+
/* @__PURE__ */ r("ul", { className: l(n.title && "mt-3", "space-y-0.5"), children: n.links.map((d) => /* @__PURE__ */ r("li", { children: /* @__PURE__ */ a(
|
|
113
112
|
i,
|
|
114
113
|
{
|
|
115
114
|
href: d.href,
|
|
116
115
|
onClick: N,
|
|
117
|
-
|
|
116
|
+
target: d.external ? "_blank" : void 0,
|
|
117
|
+
rel: d.external ? "noopener noreferrer" : void 0,
|
|
118
|
+
className: l(
|
|
118
119
|
"-mx-2 block rounded-md px-2 py-2 transition-colors duration-150",
|
|
119
120
|
t.columnLink
|
|
120
121
|
),
|
|
@@ -123,7 +124,7 @@ const $ = "text-on-secondary", b = "text-foreground", Y = {
|
|
|
123
124
|
d.description ? /* @__PURE__ */ r(
|
|
124
125
|
"span",
|
|
125
126
|
{
|
|
126
|
-
className:
|
|
127
|
+
className: l(
|
|
127
128
|
"mt-0.5 block text-[13px] leading-snug",
|
|
128
129
|
t.linkDescription
|
|
129
130
|
),
|
|
@@ -133,32 +134,34 @@ const $ = "text-on-secondary", b = "text-foreground", Y = {
|
|
|
133
134
|
]
|
|
134
135
|
}
|
|
135
136
|
) }, d.href)) })
|
|
136
|
-
] },
|
|
137
|
+
] }, n.title ?? s))
|
|
137
138
|
}
|
|
138
139
|
);
|
|
139
|
-
},
|
|
140
|
-
const
|
|
141
|
-
if (!
|
|
142
|
-
const s =
|
|
140
|
+
}, j = (e, o = !1) => {
|
|
141
|
+
const n = e.featured;
|
|
142
|
+
if (!n) return null;
|
|
143
|
+
const s = n.accent ? { backgroundColor: n.accent, color: `contrast-color(${n.accent})` } : void 0;
|
|
143
144
|
return /* @__PURE__ */ a(
|
|
144
145
|
i,
|
|
145
146
|
{
|
|
146
|
-
href:
|
|
147
|
+
href: n.href,
|
|
147
148
|
onClick: N,
|
|
148
|
-
|
|
149
|
+
target: n.external ? "_blank" : void 0,
|
|
150
|
+
rel: n.external ? "noopener noreferrer" : void 0,
|
|
151
|
+
className: l(
|
|
149
152
|
"group relative block overflow-hidden rounded-lg p-6 transition-transform duration-150 hover:-translate-y-0.5",
|
|
150
153
|
o && "mt-8",
|
|
151
|
-
!
|
|
154
|
+
!n.accent && "bg-primary text-on-primary"
|
|
152
155
|
),
|
|
153
156
|
style: s,
|
|
154
157
|
children: [
|
|
155
158
|
/* @__PURE__ */ a("div", { className: "flex h-full flex-col justify-between gap-4", children: [
|
|
156
159
|
/* @__PURE__ */ a("div", { children: [
|
|
157
|
-
/* @__PURE__ */ r("h4", { className: "font-display text-base font-semibold tracking-tight", children:
|
|
158
|
-
|
|
160
|
+
/* @__PURE__ */ r("h4", { className: "font-display text-base font-semibold tracking-tight", children: n.title }),
|
|
161
|
+
n.description ? /* @__PURE__ */ r("p", { className: "mt-1.5 text-[13px] leading-relaxed opacity-80", children: n.description }) : null
|
|
159
162
|
] }),
|
|
160
|
-
|
|
161
|
-
|
|
163
|
+
n.cta ? /* @__PURE__ */ a("span", { className: "text-sm font-semibold underline decoration-1 underline-offset-4", children: [
|
|
164
|
+
n.cta,
|
|
162
165
|
" →"
|
|
163
166
|
] }) : null
|
|
164
167
|
] }),
|
|
@@ -178,9 +181,9 @@ const $ = "text-on-secondary", b = "text-foreground", Y = {
|
|
|
178
181
|
return /* @__PURE__ */ a(
|
|
179
182
|
"header",
|
|
180
183
|
{
|
|
181
|
-
className:
|
|
184
|
+
className: l(
|
|
182
185
|
"relative w-full transition-colors duration-200",
|
|
183
|
-
|
|
186
|
+
F && "sticky top-0 z-50",
|
|
184
187
|
t.shell,
|
|
185
188
|
t.header,
|
|
186
189
|
E
|
|
@@ -188,28 +191,28 @@ const $ = "text-on-secondary", b = "text-foreground", Y = {
|
|
|
188
191
|
onKeyDown: Q,
|
|
189
192
|
...q,
|
|
190
193
|
children: [
|
|
191
|
-
/* @__PURE__ */ a("nav", { className:
|
|
192
|
-
/* @__PURE__ */ r(i, { href:
|
|
193
|
-
/* @__PURE__ */ r("ul", { className: "hidden items-center gap-1 lg:flex", children:
|
|
194
|
+
/* @__PURE__ */ a("nav", { className: l("relative flex h-16 w-full items-center justify-between gap-4 transition-colors duration-200", t.bar), onMouseLeave: H, "aria-label": "Mega menu", children: [
|
|
195
|
+
/* @__PURE__ */ r(i, { href: A, className: "shrink-0", children: J }),
|
|
196
|
+
/* @__PURE__ */ r("ul", { className: "hidden items-center gap-1 lg:flex", children: g.map((e, o) => {
|
|
194
197
|
var d;
|
|
195
|
-
const
|
|
196
|
-
return /* @__PURE__ */ r("li", { className: "relative", children:
|
|
198
|
+
const n = !!((d = e.columns) != null && d.length || e.featured), s = L === o;
|
|
199
|
+
return /* @__PURE__ */ r("li", { className: "relative", children: n ? /* @__PURE__ */ a(
|
|
197
200
|
"button",
|
|
198
201
|
{
|
|
199
202
|
type: "button",
|
|
200
203
|
"aria-haspopup": "true",
|
|
201
204
|
"aria-expanded": s,
|
|
202
|
-
"aria-controls":
|
|
205
|
+
"aria-controls": O(o),
|
|
203
206
|
onClick: () => c(s ? null : o),
|
|
204
207
|
onMouseEnter: () => c(o),
|
|
205
|
-
className:
|
|
208
|
+
className: l(D, s && t.triggerOpen),
|
|
206
209
|
children: [
|
|
207
210
|
/* @__PURE__ */ a("span", { className: "flex items-center gap-1.5", children: [
|
|
208
211
|
e.label,
|
|
209
212
|
e.badge ? /* @__PURE__ */ r(
|
|
210
213
|
"span",
|
|
211
214
|
{
|
|
212
|
-
className:
|
|
215
|
+
className: l(
|
|
213
216
|
"rounded-full px-1.5 py-0.5 text-[10px] font-semibold tracking-wide",
|
|
214
217
|
t.badge
|
|
215
218
|
),
|
|
@@ -218,9 +221,9 @@ const $ = "text-on-secondary", b = "text-foreground", Y = {
|
|
|
218
221
|
) : null
|
|
219
222
|
] }),
|
|
220
223
|
/* @__PURE__ */ r(
|
|
221
|
-
|
|
224
|
+
B,
|
|
222
225
|
{
|
|
223
|
-
className:
|
|
226
|
+
className: l(
|
|
224
227
|
"h-4 w-4 shrink-0 transition-transform duration-150",
|
|
225
228
|
s && "rotate-180"
|
|
226
229
|
)
|
|
@@ -228,15 +231,15 @@ const $ = "text-on-secondary", b = "text-foreground", Y = {
|
|
|
228
231
|
)
|
|
229
232
|
]
|
|
230
233
|
}
|
|
231
|
-
) : /* @__PURE__ */ a(i, { href: e.href ?? "#", className: D, children: [
|
|
234
|
+
) : /* @__PURE__ */ a(i, { href: e.href ?? "#", target: e.external ? "_blank" : void 0, rel: e.external ? "noopener noreferrer" : void 0, className: D, children: [
|
|
232
235
|
e.label,
|
|
233
|
-
e.badge ? /* @__PURE__ */ r("span", { className:
|
|
236
|
+
e.badge ? /* @__PURE__ */ r("span", { className: l("rounded-full px-1.5 py-0.5 text-[10px] font-semibold tracking-wide", t.badge), children: e.badge }) : null
|
|
234
237
|
] }) }, e.label);
|
|
235
238
|
}) }),
|
|
236
239
|
/* @__PURE__ */ a("div", { className: "hidden items-center gap-3 lg:flex", children: [
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
+
h,
|
|
241
|
+
m,
|
|
242
|
+
f
|
|
240
243
|
] }),
|
|
241
244
|
/* @__PURE__ */ r(
|
|
242
245
|
"button",
|
|
@@ -245,42 +248,42 @@ const $ = "text-on-secondary", b = "text-foreground", Y = {
|
|
|
245
248
|
"aria-label": u ? "Close menu" : "Open menu",
|
|
246
249
|
"aria-expanded": u,
|
|
247
250
|
onClick: () => v((e) => !e),
|
|
248
|
-
className:
|
|
251
|
+
className: l(
|
|
249
252
|
"inline-flex h-10 w-10 shrink-0 cursor-pointer items-center justify-center rounded-md lg:hidden",
|
|
250
253
|
"transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
251
254
|
t.mobileButton
|
|
252
255
|
),
|
|
253
|
-
children: u ? /* @__PURE__ */ r(
|
|
256
|
+
children: u ? /* @__PURE__ */ r(U, { className: "h-5 w-5" }) : /* @__PURE__ */ r(V, { className: "h-5 w-5" })
|
|
254
257
|
}
|
|
255
258
|
)
|
|
256
259
|
] }),
|
|
257
|
-
|
|
260
|
+
g.map((e, o) => {
|
|
258
261
|
var s;
|
|
259
262
|
if (!((s = e.columns) != null && s.length) && !e.featured) return null;
|
|
260
|
-
const
|
|
263
|
+
const n = L === o;
|
|
261
264
|
return /* @__PURE__ */ r(
|
|
262
265
|
"div",
|
|
263
266
|
{
|
|
264
|
-
id:
|
|
267
|
+
id: O(o),
|
|
265
268
|
role: "region",
|
|
266
269
|
"aria-label": `${e.label} menu`,
|
|
267
270
|
onMouseEnter: () => c(o),
|
|
268
|
-
className:
|
|
271
|
+
className: l(
|
|
269
272
|
"absolute top-full z-50 pt-2 transition-all duration-150",
|
|
270
273
|
k === "floating" ? "inset-x-0 mx-auto w-full max-w-5xl" : "inset-x-0",
|
|
271
|
-
|
|
274
|
+
n ? "visible translate-y-0 opacity-100" : "pointer-events-none invisible -translate-y-1 opacity-0"
|
|
272
275
|
),
|
|
273
276
|
children: /* @__PURE__ */ a(
|
|
274
277
|
"div",
|
|
275
278
|
{
|
|
276
|
-
className:
|
|
279
|
+
className: l(
|
|
277
280
|
"overflow-hidden rounded-xl border p-6 md:p-8",
|
|
278
281
|
t.panel,
|
|
279
282
|
e.featured ? "lg:grid lg:grid-cols-[minmax(0,1fr)_auto] lg:gap-12" : ""
|
|
280
283
|
),
|
|
281
284
|
children: [
|
|
282
|
-
|
|
283
|
-
e.featured && /* @__PURE__ */ r("div", { className:
|
|
285
|
+
$(e),
|
|
286
|
+
e.featured && /* @__PURE__ */ r("div", { className: l("mt-8 max-w-sm lg:mt-0 lg:w-64"), children: j(e) })
|
|
284
287
|
]
|
|
285
288
|
}
|
|
286
289
|
)
|
|
@@ -291,36 +294,36 @@ const $ = "text-on-secondary", b = "text-foreground", Y = {
|
|
|
291
294
|
/* @__PURE__ */ r(
|
|
292
295
|
"div",
|
|
293
296
|
{
|
|
294
|
-
className:
|
|
297
|
+
className: l(
|
|
295
298
|
"grid transition-[grid-template-rows,opacity] duration-200 lg:hidden",
|
|
296
299
|
u ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0",
|
|
297
300
|
t.mobilePanel
|
|
298
301
|
),
|
|
299
302
|
children: /* @__PURE__ */ r("div", { className: "min-h-0 overflow-hidden", children: /* @__PURE__ */ a("ul", { className: "flex flex-col py-4", children: [
|
|
300
|
-
|
|
301
|
-
|
|
303
|
+
h ? /* @__PURE__ */ r("li", { className: "px-5 pb-4", children: h }) : null,
|
|
304
|
+
g.map(
|
|
302
305
|
(e, o) => {
|
|
303
|
-
var
|
|
304
|
-
return (
|
|
306
|
+
var n;
|
|
307
|
+
return (n = e.columns) != null && n.length || e.featured ? /* @__PURE__ */ a("li", { className: "px-5", children: [
|
|
305
308
|
/* @__PURE__ */ a(
|
|
306
309
|
"button",
|
|
307
310
|
{
|
|
308
311
|
type: "button",
|
|
309
312
|
"aria-expanded": y === o,
|
|
310
313
|
onClick: () => M((s) => s === o ? null : o),
|
|
311
|
-
className:
|
|
314
|
+
className: l(
|
|
312
315
|
"flex w-full items-center justify-between rounded-md px-2 py-2.5 text-sm font-medium transition-colors duration-150",
|
|
313
316
|
t.mobileButton
|
|
314
317
|
),
|
|
315
318
|
children: [
|
|
316
319
|
/* @__PURE__ */ a("span", { className: "flex items-center gap-2", children: [
|
|
317
320
|
e.label,
|
|
318
|
-
e.badge ? /* @__PURE__ */ r("span", { className:
|
|
321
|
+
e.badge ? /* @__PURE__ */ r("span", { className: l("rounded-full px-1.5 py-0.5 text-[10px] font-semibold tracking-wide", t.badge), children: e.badge }) : null
|
|
319
322
|
] }),
|
|
320
323
|
/* @__PURE__ */ r(
|
|
321
|
-
|
|
324
|
+
B,
|
|
322
325
|
{
|
|
323
|
-
className:
|
|
326
|
+
className: l(
|
|
324
327
|
"h-4 w-4 shrink-0 transition-transform duration-150",
|
|
325
328
|
y === o && "rotate-180"
|
|
326
329
|
)
|
|
@@ -332,13 +335,13 @@ const $ = "text-on-secondary", b = "text-foreground", Y = {
|
|
|
332
335
|
/* @__PURE__ */ r(
|
|
333
336
|
"div",
|
|
334
337
|
{
|
|
335
|
-
className:
|
|
338
|
+
className: l(
|
|
336
339
|
"grid transition-[grid-template-rows,opacity] duration-200",
|
|
337
340
|
y === o ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"
|
|
338
341
|
),
|
|
339
342
|
children: /* @__PURE__ */ r("div", { className: "min-h-0 overflow-hidden", children: /* @__PURE__ */ a("div", { className: "py-2 pl-1", children: [
|
|
340
|
-
|
|
341
|
-
e.featured ? /* @__PURE__ */ r("div", { className: "max-w-sm", children:
|
|
343
|
+
$(e),
|
|
344
|
+
e.featured ? /* @__PURE__ */ r("div", { className: "max-w-sm", children: j(e, !0) }) : null
|
|
342
345
|
] }) })
|
|
343
346
|
}
|
|
344
347
|
)
|
|
@@ -346,8 +349,10 @@ const $ = "text-on-secondary", b = "text-foreground", Y = {
|
|
|
346
349
|
i,
|
|
347
350
|
{
|
|
348
351
|
href: e.href ?? "#",
|
|
352
|
+
target: e.external ? "_blank" : void 0,
|
|
353
|
+
rel: e.external ? "noopener noreferrer" : void 0,
|
|
349
354
|
onClick: () => v(!1),
|
|
350
|
-
className:
|
|
355
|
+
className: l(
|
|
351
356
|
"block rounded-md px-2 py-2.5 text-sm font-medium transition-colors duration-150",
|
|
352
357
|
t.mobileLink
|
|
353
358
|
),
|
|
@@ -356,7 +361,7 @@ const $ = "text-on-secondary", b = "text-foreground", Y = {
|
|
|
356
361
|
) }, e.label);
|
|
357
362
|
}
|
|
358
363
|
),
|
|
359
|
-
|
|
364
|
+
f ? /* @__PURE__ */ r("li", { className: "px-8 pb-2 pt-3", children: f }) : m ? /* @__PURE__ */ r("li", { className: "mt-3 flex flex-wrap gap-3 px-8 pb-2", children: m }) : null
|
|
360
365
|
] }) })
|
|
361
366
|
}
|
|
362
367
|
)
|
|
@@ -364,8 +369,8 @@ const $ = "text-on-secondary", b = "text-foreground", Y = {
|
|
|
364
369
|
}
|
|
365
370
|
);
|
|
366
371
|
};
|
|
367
|
-
|
|
372
|
+
Y.displayName = "MegaMenu";
|
|
368
373
|
export {
|
|
369
|
-
|
|
374
|
+
Y as MegaMenu
|
|
370
375
|
};
|
|
371
376
|
//# 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 { getContrastText } from \"../../utils/contrast\";\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 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: getContrastText(featured.accent) }\n : undefined;\n\n return (\n <Link\n href={featured.href}\n onClick={closeAll}\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 ?? \"#\"} 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 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","getContrastText","handleKeyDown","event","hasPanel","_a","open","ChevronDown","o","X","Menu","prev"],"mappings":"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"}
|
|
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":"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"}
|