cat-framework-core 0.1.6
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 +73 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.mjs +910 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +130 -0
- package/src/index.css +252 -0
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,910 @@
|
|
|
1
|
+
import { jsx as e, jsxs as i } from "react/jsx-runtime";
|
|
2
|
+
import { clsx as Z } from "clsx";
|
|
3
|
+
import { twMerge as J } from "tailwind-merge";
|
|
4
|
+
import { cva as C } from "class-variance-authority";
|
|
5
|
+
import * as x from "react";
|
|
6
|
+
import S, { useState as y, createContext as L, useContext as $, useCallback as Q, useEffect as X } from "react";
|
|
7
|
+
import { Slot as U, createSlot as Y } from "@radix-ui/react-slot";
|
|
8
|
+
import { motion as A } from "framer-motion";
|
|
9
|
+
import * as v from "@radix-ui/react-accordion";
|
|
10
|
+
import { ChevronDown as F, X as ee, Menu as re, Search as te, ChevronRight as ae, Cloud as ne, Star as ie, Check as oe } from "lucide-react";
|
|
11
|
+
import "react-dom";
|
|
12
|
+
function c(...t) {
|
|
13
|
+
return J(Z(t));
|
|
14
|
+
}
|
|
15
|
+
const se = C("", {
|
|
16
|
+
variants: {
|
|
17
|
+
variant: {
|
|
18
|
+
h1: "font-display text-4xl font-bold tracking-tight sm:text-5xl lg:text-6xl",
|
|
19
|
+
h2: "font-display text-3xl font-bold tracking-tight sm:text-4xl",
|
|
20
|
+
h3: "font-display text-2xl font-semibold tracking-tight",
|
|
21
|
+
h4: "font-display text-xl font-semibold",
|
|
22
|
+
h5: "font-display text-lg font-semibold",
|
|
23
|
+
h6: "font-display text-base font-semibold",
|
|
24
|
+
body: "font-body text-base leading-relaxed",
|
|
25
|
+
"body-sm": "font-body text-sm leading-relaxed",
|
|
26
|
+
"body-lg": "font-body text-lg leading-relaxed",
|
|
27
|
+
caption: "font-body text-xs text-muted-foreground",
|
|
28
|
+
overline: "font-body text-xs font-semibold uppercase tracking-widest text-muted-foreground"
|
|
29
|
+
},
|
|
30
|
+
color: {
|
|
31
|
+
default: "text-foreground",
|
|
32
|
+
muted: "text-muted-foreground",
|
|
33
|
+
primary: "text-primary",
|
|
34
|
+
accent: "text-accent",
|
|
35
|
+
destructive: "text-destructive"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
defaultVariants: {
|
|
39
|
+
variant: "body",
|
|
40
|
+
color: "default"
|
|
41
|
+
}
|
|
42
|
+
}), de = {
|
|
43
|
+
h1: "h1",
|
|
44
|
+
h2: "h2",
|
|
45
|
+
h3: "h3",
|
|
46
|
+
h4: "h4",
|
|
47
|
+
h5: "h5",
|
|
48
|
+
h6: "h6",
|
|
49
|
+
body: "p",
|
|
50
|
+
"body-sm": "p",
|
|
51
|
+
"body-lg": "p",
|
|
52
|
+
caption: "span",
|
|
53
|
+
overline: "span"
|
|
54
|
+
}, m = S.forwardRef(
|
|
55
|
+
({ className: t, variant: a = "body", tone: r = "default", as: o, children: s, ...n }, d) => {
|
|
56
|
+
const u = o || de[a] || "p";
|
|
57
|
+
return /* @__PURE__ */ e(
|
|
58
|
+
u,
|
|
59
|
+
{
|
|
60
|
+
ref: d,
|
|
61
|
+
className: c(se({ variant: a, color: r, className: t })),
|
|
62
|
+
...n,
|
|
63
|
+
children: s
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
);
|
|
68
|
+
m.displayName = "Typography";
|
|
69
|
+
const le = C(
|
|
70
|
+
"inline-flex items-center rounded-full px-3 py-0.5 font-body text-xs font-medium transition-fast",
|
|
71
|
+
{
|
|
72
|
+
variants: {
|
|
73
|
+
variant: {
|
|
74
|
+
default: "bg-primary/10 text-primary",
|
|
75
|
+
secondary: "bg-secondary/20 text-secondary",
|
|
76
|
+
success: "bg-success/10 text-success",
|
|
77
|
+
warning: "bg-warning/10 text-warning",
|
|
78
|
+
destructive: "bg-destructive/10 text-destructive",
|
|
79
|
+
outline: "border border-border text-foreground"
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
defaultVariants: { variant: "default" }
|
|
83
|
+
}
|
|
84
|
+
), ce = S.forwardRef(
|
|
85
|
+
({ className: t, variant: a, ...r }, o) => /* @__PURE__ */ e("span", { ref: o, className: c(le({ variant: a, className: t })), ...r })
|
|
86
|
+
);
|
|
87
|
+
ce.displayName = "Badge";
|
|
88
|
+
const me = C(
|
|
89
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl font-medium font-body transition-fast focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
90
|
+
{
|
|
91
|
+
variants: {
|
|
92
|
+
variant: {
|
|
93
|
+
default: "bg-primary text-primary-foreground hover:bg-primary-hover",
|
|
94
|
+
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
95
|
+
outline: "border border-input bg-background hover:bg-muted hover:text-foreground",
|
|
96
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
97
|
+
ghost: "hover:bg-muted hover:text-foreground",
|
|
98
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
99
|
+
success: "bg-success text-success-foreground hover:bg-success/90",
|
|
100
|
+
warning: "bg-warning text-warning-foreground hover:bg-warning/90"
|
|
101
|
+
},
|
|
102
|
+
size: {
|
|
103
|
+
default: "h-10 px-4 py-2 text-sm",
|
|
104
|
+
sm: "h-8 rounded-lg px-3 text-xs",
|
|
105
|
+
lg: "h-12 rounded-xl px-8 text-base",
|
|
106
|
+
xl: "h-14 rounded-xl px-10 text-lg",
|
|
107
|
+
icon: "h-10 w-10 rounded-xl"
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
defaultVariants: {
|
|
111
|
+
variant: "default",
|
|
112
|
+
size: "default"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
), g = x.forwardRef(
|
|
116
|
+
({ className: t, variant: a, size: r, asChild: o = !1, ...s }, n) => /* @__PURE__ */ e(o ? U : "button", { className: c(me({ variant: a, size: r, className: t })), ref: n, ...s })
|
|
117
|
+
);
|
|
118
|
+
g.displayName = "Button";
|
|
119
|
+
const Fe = ({
|
|
120
|
+
headline: t,
|
|
121
|
+
headlineMobile: a,
|
|
122
|
+
subheadline: r,
|
|
123
|
+
subheadlineMobile: o,
|
|
124
|
+
ctaLabel: s,
|
|
125
|
+
ctaHref: n = "#",
|
|
126
|
+
secondaryCtaLabel: d,
|
|
127
|
+
secondaryCtaHref: u = "#",
|
|
128
|
+
backgroundImage: h,
|
|
129
|
+
backgroundImageMobile: p,
|
|
130
|
+
imageAlt: f = "",
|
|
131
|
+
className: N,
|
|
132
|
+
...z
|
|
133
|
+
}) => /* @__PURE__ */ i("section", { className: c("relative overflow-hidden", N), ...z, children: [
|
|
134
|
+
/* @__PURE__ */ i("div", { className: "hidden md:flex relative min-h-[420px] md:min-h-[420px] lg:min-h-[600px]", children: [
|
|
135
|
+
h && /* @__PURE__ */ e(
|
|
136
|
+
"img",
|
|
137
|
+
{
|
|
138
|
+
src: h,
|
|
139
|
+
alt: f,
|
|
140
|
+
className: "absolute inset-0 h-full w-full object-cover object-right",
|
|
141
|
+
loading: "eager"
|
|
142
|
+
}
|
|
143
|
+
),
|
|
144
|
+
/* @__PURE__ */ e("div", { className: "absolute inset-0 bg-gradient-to-r from-black/80 via-black/50 to-transparent" }),
|
|
145
|
+
/* @__PURE__ */ e("div", { className: "relative z-10 flex items-center w-full pl-8 lg:pl-16", children: /* @__PURE__ */ i(
|
|
146
|
+
A.div,
|
|
147
|
+
{
|
|
148
|
+
initial: { opacity: 0, y: 16 },
|
|
149
|
+
animate: { opacity: 1, y: 0 },
|
|
150
|
+
transition: { duration: 0.4, ease: "easeOut" },
|
|
151
|
+
className: "px-6 py-16 lg:px-8 lg:py-20 max-w-[500px] lg:max-w-[480px]",
|
|
152
|
+
children: [
|
|
153
|
+
/* @__PURE__ */ e(m, { variant: "h1", className: "text-white drop-shadow-lg", as: "h1", children: t }),
|
|
154
|
+
r && /* @__PURE__ */ e(m, { variant: "body-lg", className: "mt-4 text-white/85 drop-shadow-md", children: r }),
|
|
155
|
+
(s || d) && /* @__PURE__ */ i("div", { className: "mt-8 flex flex-wrap gap-4", children: [
|
|
156
|
+
s && /* @__PURE__ */ e(
|
|
157
|
+
g,
|
|
158
|
+
{
|
|
159
|
+
size: "lg",
|
|
160
|
+
className: "bg-primary text-primary-foreground hover:bg-primary/90 shadow-lg",
|
|
161
|
+
asChild: !0,
|
|
162
|
+
children: /* @__PURE__ */ e("a", { href: n, children: s })
|
|
163
|
+
}
|
|
164
|
+
),
|
|
165
|
+
d && /* @__PURE__ */ e(
|
|
166
|
+
g,
|
|
167
|
+
{
|
|
168
|
+
size: "lg",
|
|
169
|
+
variant: "outline",
|
|
170
|
+
className: "border-white/40 text-foreground bg-white/90 hover:bg-white shadow-lg",
|
|
171
|
+
asChild: !0,
|
|
172
|
+
children: /* @__PURE__ */ e("a", { href: u, children: d })
|
|
173
|
+
}
|
|
174
|
+
)
|
|
175
|
+
] })
|
|
176
|
+
]
|
|
177
|
+
}
|
|
178
|
+
) })
|
|
179
|
+
] }),
|
|
180
|
+
/* @__PURE__ */ i("div", { className: "block md:hidden relative min-h-[85vh] flex flex-col", children: [
|
|
181
|
+
(p || h) && /* @__PURE__ */ e(
|
|
182
|
+
"img",
|
|
183
|
+
{
|
|
184
|
+
src: p || h,
|
|
185
|
+
alt: f,
|
|
186
|
+
className: "absolute inset-0 h-full w-full object-cover object-center",
|
|
187
|
+
loading: "eager"
|
|
188
|
+
}
|
|
189
|
+
),
|
|
190
|
+
/* @__PURE__ */ e("div", { className: "absolute inset-0 bg-gradient-to-b from-black/70 via-transparent to-black/80" }),
|
|
191
|
+
/* @__PURE__ */ i("div", { className: "relative z-10 flex flex-1 flex-col justify-between px-5 py-10", children: [
|
|
192
|
+
/* @__PURE__ */ i(
|
|
193
|
+
A.div,
|
|
194
|
+
{
|
|
195
|
+
initial: { opacity: 0, y: 12 },
|
|
196
|
+
animate: { opacity: 1, y: 0 },
|
|
197
|
+
transition: { duration: 0.4 },
|
|
198
|
+
children: [
|
|
199
|
+
/* @__PURE__ */ e(m, { variant: "h2", className: "text-white drop-shadow-lg", as: "h1", children: a || t }),
|
|
200
|
+
(o || r) && /* @__PURE__ */ e(m, { variant: "body-lg", className: "mt-3 text-white/90 drop-shadow-lg font-medium leading-relaxed", children: o || r })
|
|
201
|
+
]
|
|
202
|
+
}
|
|
203
|
+
),
|
|
204
|
+
/* @__PURE__ */ e("div", { className: "flex-1" }),
|
|
205
|
+
(s || d) && /* @__PURE__ */ i(
|
|
206
|
+
A.div,
|
|
207
|
+
{
|
|
208
|
+
initial: { opacity: 0, y: 12 },
|
|
209
|
+
animate: { opacity: 1, y: 0 },
|
|
210
|
+
transition: { duration: 0.4, delay: 0.15 },
|
|
211
|
+
className: "flex flex-col gap-3",
|
|
212
|
+
children: [
|
|
213
|
+
s && /* @__PURE__ */ e(
|
|
214
|
+
g,
|
|
215
|
+
{
|
|
216
|
+
size: "lg",
|
|
217
|
+
className: "w-full bg-primary text-primary-foreground hover:bg-primary/90 shadow-lg",
|
|
218
|
+
asChild: !0,
|
|
219
|
+
children: /* @__PURE__ */ e("a", { href: n, children: s })
|
|
220
|
+
}
|
|
221
|
+
),
|
|
222
|
+
d && /* @__PURE__ */ e(
|
|
223
|
+
g,
|
|
224
|
+
{
|
|
225
|
+
size: "lg",
|
|
226
|
+
variant: "outline",
|
|
227
|
+
className: "w-full border-white/40 text-foreground bg-white/90 hover:bg-white shadow-lg",
|
|
228
|
+
asChild: !0,
|
|
229
|
+
children: /* @__PURE__ */ e("a", { href: u, children: d })
|
|
230
|
+
}
|
|
231
|
+
)
|
|
232
|
+
]
|
|
233
|
+
}
|
|
234
|
+
)
|
|
235
|
+
] })
|
|
236
|
+
] })
|
|
237
|
+
] }), Se = ({
|
|
238
|
+
heading: t,
|
|
239
|
+
text: a,
|
|
240
|
+
imageSrc: r,
|
|
241
|
+
imageAlt: o,
|
|
242
|
+
ctaLabel: s,
|
|
243
|
+
ctaHref: n = "#",
|
|
244
|
+
imagePosition: d = "left",
|
|
245
|
+
className: u,
|
|
246
|
+
...h
|
|
247
|
+
}) => /* @__PURE__ */ e("section", { className: c("section-padding", u), ...h, children: /* @__PURE__ */ i(
|
|
248
|
+
"div",
|
|
249
|
+
{
|
|
250
|
+
className: c(
|
|
251
|
+
"container-wide grid items-center gap-8 md:grid-cols-2 lg:gap-16",
|
|
252
|
+
d === "right" && "md:[&>*:first-child]:order-2"
|
|
253
|
+
),
|
|
254
|
+
children: [
|
|
255
|
+
/* @__PURE__ */ e("div", { className: "overflow-hidden rounded-2xl", children: /* @__PURE__ */ e(
|
|
256
|
+
"img",
|
|
257
|
+
{
|
|
258
|
+
src: r,
|
|
259
|
+
alt: o,
|
|
260
|
+
className: "h-full w-full object-cover",
|
|
261
|
+
loading: "lazy"
|
|
262
|
+
}
|
|
263
|
+
) }),
|
|
264
|
+
/* @__PURE__ */ i("div", { children: [
|
|
265
|
+
/* @__PURE__ */ e(m, { variant: "h2", children: t }),
|
|
266
|
+
/* @__PURE__ */ e(m, { variant: "body", color: "muted", className: "mt-4", children: a }),
|
|
267
|
+
s && /* @__PURE__ */ e(g, { className: "mt-6", asChild: !0, children: /* @__PURE__ */ e("a", { href: n, children: s }) })
|
|
268
|
+
] })
|
|
269
|
+
]
|
|
270
|
+
}
|
|
271
|
+
) }), je = ({
|
|
272
|
+
heading: t,
|
|
273
|
+
text: a,
|
|
274
|
+
imageSrc: r,
|
|
275
|
+
imageAlt: o = "",
|
|
276
|
+
tag: s,
|
|
277
|
+
href: n,
|
|
278
|
+
className: d,
|
|
279
|
+
...u
|
|
280
|
+
}) => {
|
|
281
|
+
const h = n ? "a" : "div", p = n ? { href: n } : {};
|
|
282
|
+
return /* @__PURE__ */ e(
|
|
283
|
+
"article",
|
|
284
|
+
{
|
|
285
|
+
className: c(
|
|
286
|
+
"group overflow-hidden rounded-2xl border border-border bg-card shadow-sm transition-fast hover:shadow-lg",
|
|
287
|
+
n && "cursor-pointer",
|
|
288
|
+
d
|
|
289
|
+
),
|
|
290
|
+
...u,
|
|
291
|
+
children: /* @__PURE__ */ i(h, { ...p, className: "block", children: [
|
|
292
|
+
r && /* @__PURE__ */ e("div", { className: "aspect-video overflow-hidden", children: /* @__PURE__ */ e(
|
|
293
|
+
"img",
|
|
294
|
+
{
|
|
295
|
+
src: r,
|
|
296
|
+
alt: o,
|
|
297
|
+
className: "h-full w-full object-cover transition-fast group-hover:scale-105",
|
|
298
|
+
loading: "lazy"
|
|
299
|
+
}
|
|
300
|
+
) }),
|
|
301
|
+
/* @__PURE__ */ i("div", { className: "p-6", children: [
|
|
302
|
+
s && /* @__PURE__ */ e(m, { variant: "overline", className: "mb-2", children: s }),
|
|
303
|
+
/* @__PURE__ */ e(m, { variant: "h4", className: "group-hover:text-primary transition-fast", children: t }),
|
|
304
|
+
/* @__PURE__ */ e(m, { variant: "body-sm", color: "muted", className: "mt-2 line-clamp-3", children: a })
|
|
305
|
+
] })
|
|
306
|
+
] })
|
|
307
|
+
}
|
|
308
|
+
);
|
|
309
|
+
}, he = v.Root, D = x.forwardRef(({ className: t, ...a }, r) => /* @__PURE__ */ e(v.Item, { ref: r, className: c("border-b", t), ...a }));
|
|
310
|
+
D.displayName = "AccordionItem";
|
|
311
|
+
const M = x.forwardRef(({ className: t, children: a, ...r }, o) => /* @__PURE__ */ e(v.Header, { className: "flex", children: /* @__PURE__ */ i(
|
|
312
|
+
v.Trigger,
|
|
313
|
+
{
|
|
314
|
+
ref: o,
|
|
315
|
+
className: c(
|
|
316
|
+
"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
|
|
317
|
+
t
|
|
318
|
+
),
|
|
319
|
+
...r,
|
|
320
|
+
children: [
|
|
321
|
+
a,
|
|
322
|
+
/* @__PURE__ */ e(F, { className: "h-4 w-4 shrink-0 transition-transform duration-200" })
|
|
323
|
+
]
|
|
324
|
+
}
|
|
325
|
+
) }));
|
|
326
|
+
M.displayName = v.Trigger.displayName;
|
|
327
|
+
const V = x.forwardRef(({ className: t, children: a, ...r }, o) => /* @__PURE__ */ e(
|
|
328
|
+
v.Content,
|
|
329
|
+
{
|
|
330
|
+
ref: o,
|
|
331
|
+
className: "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
332
|
+
...r,
|
|
333
|
+
children: /* @__PURE__ */ e("div", { className: c("pb-4 pt-0", t), children: a })
|
|
334
|
+
}
|
|
335
|
+
));
|
|
336
|
+
V.displayName = v.Content.displayName;
|
|
337
|
+
const De = ({
|
|
338
|
+
heading: t,
|
|
339
|
+
items: a,
|
|
340
|
+
className: r,
|
|
341
|
+
...o
|
|
342
|
+
}) => {
|
|
343
|
+
const s = {
|
|
344
|
+
"@context": "https://schema.org",
|
|
345
|
+
"@type": "FAQPage",
|
|
346
|
+
mainEntity: a.map((n) => ({
|
|
347
|
+
"@type": "Question",
|
|
348
|
+
name: n.question,
|
|
349
|
+
acceptedAnswer: { "@type": "Answer", text: n.answer }
|
|
350
|
+
}))
|
|
351
|
+
};
|
|
352
|
+
return /* @__PURE__ */ e("section", { className: c("section-padding", r), ...o, children: /* @__PURE__ */ i("div", { className: "container-narrow", children: [
|
|
353
|
+
t && /* @__PURE__ */ e(m, { variant: "h2", className: "mb-8 text-center", children: t }),
|
|
354
|
+
/* @__PURE__ */ e(he, { type: "single", collapsible: !0, className: "w-full", children: a.map((n, d) => /* @__PURE__ */ i(D, { value: `item-${d}`, children: [
|
|
355
|
+
/* @__PURE__ */ e(M, { className: "font-display text-left font-semibold", children: n.question }),
|
|
356
|
+
/* @__PURE__ */ e(V, { className: "font-body text-muted-foreground", children: n.answer })
|
|
357
|
+
] }, d)) }),
|
|
358
|
+
/* @__PURE__ */ e(
|
|
359
|
+
"script",
|
|
360
|
+
{
|
|
361
|
+
type: "application/ld+json",
|
|
362
|
+
dangerouslySetInnerHTML: { __html: JSON.stringify(s) }
|
|
363
|
+
}
|
|
364
|
+
)
|
|
365
|
+
] }) });
|
|
366
|
+
}, P = x.forwardRef(
|
|
367
|
+
({ className: t, type: a, ...r }, o) => /* @__PURE__ */ e(
|
|
368
|
+
"input",
|
|
369
|
+
{
|
|
370
|
+
type: a,
|
|
371
|
+
className: c(
|
|
372
|
+
"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
|
373
|
+
t
|
|
374
|
+
),
|
|
375
|
+
ref: o,
|
|
376
|
+
...r
|
|
377
|
+
}
|
|
378
|
+
)
|
|
379
|
+
);
|
|
380
|
+
P.displayName = "Input";
|
|
381
|
+
const R = x.forwardRef(({ className: t, ...a }, r) => /* @__PURE__ */ e(
|
|
382
|
+
"textarea",
|
|
383
|
+
{
|
|
384
|
+
className: c(
|
|
385
|
+
"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
386
|
+
t
|
|
387
|
+
),
|
|
388
|
+
ref: r,
|
|
389
|
+
...a
|
|
390
|
+
}
|
|
391
|
+
));
|
|
392
|
+
R.displayName = "Textarea";
|
|
393
|
+
var ue = [
|
|
394
|
+
"a",
|
|
395
|
+
"button",
|
|
396
|
+
"div",
|
|
397
|
+
"form",
|
|
398
|
+
"h2",
|
|
399
|
+
"h3",
|
|
400
|
+
"img",
|
|
401
|
+
"input",
|
|
402
|
+
"label",
|
|
403
|
+
"li",
|
|
404
|
+
"nav",
|
|
405
|
+
"ol",
|
|
406
|
+
"p",
|
|
407
|
+
"select",
|
|
408
|
+
"span",
|
|
409
|
+
"svg",
|
|
410
|
+
"ul"
|
|
411
|
+
], fe = ue.reduce((t, a) => {
|
|
412
|
+
const r = Y(`Primitive.${a}`), o = x.forwardRef((s, n) => {
|
|
413
|
+
const { asChild: d, ...u } = s, h = d ? r : a;
|
|
414
|
+
return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ e(h, { ...u, ref: n });
|
|
415
|
+
});
|
|
416
|
+
return o.displayName = `Primitive.${a}`, { ...t, [a]: o };
|
|
417
|
+
}, {}), ge = "Label", H = x.forwardRef((t, a) => /* @__PURE__ */ e(
|
|
418
|
+
fe.label,
|
|
419
|
+
{
|
|
420
|
+
...t,
|
|
421
|
+
ref: a,
|
|
422
|
+
onMouseDown: (r) => {
|
|
423
|
+
var s;
|
|
424
|
+
r.target.closest("button, input, select, textarea") || ((s = t.onMouseDown) == null || s.call(t, r), !r.defaultPrevented && r.detail > 1 && r.preventDefault());
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
));
|
|
428
|
+
H.displayName = ge;
|
|
429
|
+
var T = H;
|
|
430
|
+
const pe = C("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"), k = x.forwardRef(({ className: t, ...a }, r) => /* @__PURE__ */ e(T, { ref: r, className: c(pe(), t), ...a }));
|
|
431
|
+
k.displayName = T.displayName;
|
|
432
|
+
const Me = ({
|
|
433
|
+
heading: t = "Kontakt",
|
|
434
|
+
description: a,
|
|
435
|
+
onSubmit: r,
|
|
436
|
+
className: o,
|
|
437
|
+
...s
|
|
438
|
+
}) => {
|
|
439
|
+
const [n, d] = y({ name: "", email: "", message: "" }), [u, h] = y(!1), p = (f) => {
|
|
440
|
+
f.preventDefault(), r == null || r(n), h(!0);
|
|
441
|
+
};
|
|
442
|
+
return /* @__PURE__ */ e("section", { className: c("section-padding", o), ...s, children: /* @__PURE__ */ i("div", { className: "container-narrow", children: [
|
|
443
|
+
/* @__PURE__ */ e(m, { variant: "h2", className: "mb-2", children: t }),
|
|
444
|
+
a && /* @__PURE__ */ e(m, { variant: "body", color: "muted", className: "mb-8", children: a }),
|
|
445
|
+
u ? /* @__PURE__ */ i("div", { className: "rounded-lg border border-success/30 bg-success/5 p-8 text-center", children: [
|
|
446
|
+
/* @__PURE__ */ e(m, { variant: "h4", color: "accent", children: "Vielen Dank für Ihre Nachricht!" }),
|
|
447
|
+
/* @__PURE__ */ e(m, { variant: "body-sm", color: "muted", className: "mt-2", children: "Wir melden uns in Kürze bei Ihnen." })
|
|
448
|
+
] }) : /* @__PURE__ */ i("form", { onSubmit: p, className: "space-y-6", children: [
|
|
449
|
+
/* @__PURE__ */ i("div", { className: "grid gap-6 sm:grid-cols-2", children: [
|
|
450
|
+
/* @__PURE__ */ i("div", { className: "space-y-2", children: [
|
|
451
|
+
/* @__PURE__ */ e(k, { htmlFor: "name", children: "Name" }),
|
|
452
|
+
/* @__PURE__ */ e(
|
|
453
|
+
P,
|
|
454
|
+
{
|
|
455
|
+
id: "name",
|
|
456
|
+
required: !0,
|
|
457
|
+
value: n.name,
|
|
458
|
+
onChange: (f) => d({ ...n, name: f.target.value }),
|
|
459
|
+
placeholder: "Max Mustermann"
|
|
460
|
+
}
|
|
461
|
+
)
|
|
462
|
+
] }),
|
|
463
|
+
/* @__PURE__ */ i("div", { className: "space-y-2", children: [
|
|
464
|
+
/* @__PURE__ */ e(k, { htmlFor: "email", children: "E-Mail" }),
|
|
465
|
+
/* @__PURE__ */ e(
|
|
466
|
+
P,
|
|
467
|
+
{
|
|
468
|
+
id: "email",
|
|
469
|
+
type: "email",
|
|
470
|
+
required: !0,
|
|
471
|
+
value: n.email,
|
|
472
|
+
onChange: (f) => d({ ...n, email: f.target.value }),
|
|
473
|
+
placeholder: "max@beispiel.de"
|
|
474
|
+
}
|
|
475
|
+
)
|
|
476
|
+
] })
|
|
477
|
+
] }),
|
|
478
|
+
/* @__PURE__ */ i("div", { className: "space-y-2", children: [
|
|
479
|
+
/* @__PURE__ */ e(k, { htmlFor: "message", children: "Nachricht" }),
|
|
480
|
+
/* @__PURE__ */ e(
|
|
481
|
+
R,
|
|
482
|
+
{
|
|
483
|
+
id: "message",
|
|
484
|
+
required: !0,
|
|
485
|
+
rows: 5,
|
|
486
|
+
value: n.message,
|
|
487
|
+
onChange: (f) => d({ ...n, message: f.target.value }),
|
|
488
|
+
placeholder: "Ihre Nachricht..."
|
|
489
|
+
}
|
|
490
|
+
)
|
|
491
|
+
] }),
|
|
492
|
+
/* @__PURE__ */ e(g, { type: "submit", size: "lg", children: "Nachricht senden" })
|
|
493
|
+
] })
|
|
494
|
+
] }) });
|
|
495
|
+
}, Ve = ({
|
|
496
|
+
brand: t,
|
|
497
|
+
items: a,
|
|
498
|
+
ctaLabel: r,
|
|
499
|
+
ctaHref: o = "#",
|
|
500
|
+
className: s,
|
|
501
|
+
...n
|
|
502
|
+
}) => {
|
|
503
|
+
const [d, u] = y(!1);
|
|
504
|
+
return /* @__PURE__ */ i(
|
|
505
|
+
"header",
|
|
506
|
+
{
|
|
507
|
+
className: c(
|
|
508
|
+
"sticky top-0 z-50 border-b border-primary/20 bg-primary text-primary-foreground backdrop-blur",
|
|
509
|
+
s
|
|
510
|
+
),
|
|
511
|
+
...n,
|
|
512
|
+
children: [
|
|
513
|
+
/* @__PURE__ */ i("nav", { className: "container-wide flex h-16 items-center justify-between px-4 sm:px-6 lg:px-8", "aria-label": "Main", children: [
|
|
514
|
+
/* @__PURE__ */ e("a", { href: "/", className: "font-display text-lg font-bold text-primary-foreground", children: t }),
|
|
515
|
+
/* @__PURE__ */ i("ul", { className: "hidden items-center gap-1 md:flex", children: [
|
|
516
|
+
a.map((h) => /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(
|
|
517
|
+
"a",
|
|
518
|
+
{
|
|
519
|
+
href: h.href,
|
|
520
|
+
className: "rounded-full px-4 py-2 font-body text-sm text-primary-foreground/80 transition-fast hover:bg-primary-foreground/10 hover:text-primary-foreground",
|
|
521
|
+
children: h.label
|
|
522
|
+
}
|
|
523
|
+
) }, h.href)),
|
|
524
|
+
r && /* @__PURE__ */ e("li", { className: "ml-4", children: /* @__PURE__ */ e(g, { size: "sm", className: "bg-primary-foreground text-primary hover:bg-primary-foreground/90", asChild: !0, children: /* @__PURE__ */ e("a", { href: o, children: r }) }) })
|
|
525
|
+
] }),
|
|
526
|
+
/* @__PURE__ */ e(
|
|
527
|
+
"button",
|
|
528
|
+
{
|
|
529
|
+
className: "md:hidden rounded-full p-2 text-primary-foreground/80 hover:bg-primary-foreground/10",
|
|
530
|
+
onClick: () => u(!d),
|
|
531
|
+
"aria-label": "Menu",
|
|
532
|
+
children: d ? /* @__PURE__ */ e(ee, { size: 20 }) : /* @__PURE__ */ e(re, { size: 20 })
|
|
533
|
+
}
|
|
534
|
+
)
|
|
535
|
+
] }),
|
|
536
|
+
d && /* @__PURE__ */ e("div", { className: "border-t border-primary-foreground/20 bg-primary md:hidden", children: /* @__PURE__ */ i("ul", { className: "container-wide space-y-1 px-4 py-4", children: [
|
|
537
|
+
a.map((h) => /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(
|
|
538
|
+
"a",
|
|
539
|
+
{
|
|
540
|
+
href: h.href,
|
|
541
|
+
className: "block rounded-xl px-4 py-2 font-body text-sm text-primary-foreground/80 transition-fast hover:bg-primary-foreground/10 hover:text-primary-foreground",
|
|
542
|
+
onClick: () => u(!1),
|
|
543
|
+
children: h.label
|
|
544
|
+
}
|
|
545
|
+
) }, h.href)),
|
|
546
|
+
r && /* @__PURE__ */ e("li", { className: "pt-2", children: /* @__PURE__ */ e(g, { size: "sm", className: "w-full bg-primary-foreground text-primary hover:bg-primary-foreground/90", asChild: !0, children: /* @__PURE__ */ e("a", { href: o, children: r }) }) })
|
|
547
|
+
] }) })
|
|
548
|
+
]
|
|
549
|
+
}
|
|
550
|
+
);
|
|
551
|
+
}, Re = ({
|
|
552
|
+
brand: t,
|
|
553
|
+
columns: a,
|
|
554
|
+
copyright: r,
|
|
555
|
+
className: o,
|
|
556
|
+
...s
|
|
557
|
+
}) => /* @__PURE__ */ e("footer", { className: c("border-t border-border bg-muted section-padding", o), ...s, children: /* @__PURE__ */ i("div", { className: "container-wide", children: [
|
|
558
|
+
/* @__PURE__ */ i("div", { className: "grid gap-8 sm:grid-cols-2 lg:grid-cols-4", children: [
|
|
559
|
+
/* @__PURE__ */ e("div", { children: /* @__PURE__ */ e(m, { variant: "h5", children: t }) }),
|
|
560
|
+
a.map((n) => /* @__PURE__ */ i("div", { children: [
|
|
561
|
+
/* @__PURE__ */ e(m, { variant: "overline", className: "mb-4", children: n.heading }),
|
|
562
|
+
/* @__PURE__ */ e("ul", { className: "space-y-2", children: n.links.map((d) => /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(
|
|
563
|
+
"a",
|
|
564
|
+
{
|
|
565
|
+
href: d.href,
|
|
566
|
+
className: "font-body text-sm text-muted-foreground transition-fast hover:text-foreground",
|
|
567
|
+
children: d.label
|
|
568
|
+
}
|
|
569
|
+
) }, d.href)) })
|
|
570
|
+
] }, n.heading))
|
|
571
|
+
] }),
|
|
572
|
+
r && /* @__PURE__ */ e("div", { className: "mt-12 border-t border-border pt-6", children: /* @__PURE__ */ e(m, { variant: "caption", children: r }) })
|
|
573
|
+
] }) }), be = S.forwardRef(
|
|
574
|
+
({ className: t, onSearch: a, ...r }, o) => /* @__PURE__ */ i("div", { className: c("relative", t), children: [
|
|
575
|
+
/* @__PURE__ */ e(te, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
|
|
576
|
+
/* @__PURE__ */ e(
|
|
577
|
+
P,
|
|
578
|
+
{
|
|
579
|
+
ref: o,
|
|
580
|
+
className: "pl-10",
|
|
581
|
+
placeholder: "Suchen...",
|
|
582
|
+
onChange: (s) => a == null ? void 0 : a(s.target.value),
|
|
583
|
+
...r
|
|
584
|
+
}
|
|
585
|
+
)
|
|
586
|
+
] })
|
|
587
|
+
);
|
|
588
|
+
be.displayName = "SearchBar";
|
|
589
|
+
const He = ({ items: t, className: a, ...r }) => {
|
|
590
|
+
const o = {
|
|
591
|
+
"@context": "https://schema.org",
|
|
592
|
+
"@type": "BreadcrumbList",
|
|
593
|
+
itemListElement: t.map((s, n) => ({
|
|
594
|
+
"@type": "ListItem",
|
|
595
|
+
position: n + 1,
|
|
596
|
+
name: s.label,
|
|
597
|
+
...s.href ? { item: s.href } : {}
|
|
598
|
+
}))
|
|
599
|
+
};
|
|
600
|
+
return /* @__PURE__ */ i("nav", { "aria-label": "Breadcrumb", className: c("font-body text-sm", a), ...r, children: [
|
|
601
|
+
/* @__PURE__ */ e("ol", { className: "flex items-center gap-1", children: t.map((s, n) => /* @__PURE__ */ i("li", { className: "flex items-center gap-1", children: [
|
|
602
|
+
n > 0 && /* @__PURE__ */ e(ae, { className: "h-3 w-3 text-muted-foreground" }),
|
|
603
|
+
s.href && n < t.length - 1 ? /* @__PURE__ */ e("a", { href: s.href, className: "text-muted-foreground transition-fast hover:text-foreground", children: s.label }) : /* @__PURE__ */ e("span", { className: "text-foreground font-medium", children: s.label })
|
|
604
|
+
] }, n)) }),
|
|
605
|
+
/* @__PURE__ */ e(
|
|
606
|
+
"script",
|
|
607
|
+
{
|
|
608
|
+
type: "application/ld+json",
|
|
609
|
+
dangerouslySetInnerHTML: { __html: JSON.stringify(o) }
|
|
610
|
+
}
|
|
611
|
+
)
|
|
612
|
+
] });
|
|
613
|
+
}, xe = [
|
|
614
|
+
{
|
|
615
|
+
id: "50gb",
|
|
616
|
+
storage: "50 GB",
|
|
617
|
+
monthlyPrice: 1.29,
|
|
618
|
+
yearlyPrice: 0.99,
|
|
619
|
+
hidden: !0,
|
|
620
|
+
features: [
|
|
621
|
+
"10.000 Fotos, 4h Videomaterial",
|
|
622
|
+
"Fotos und Dokumente sichern und teilen",
|
|
623
|
+
"Hoher deutscher Datenschutz",
|
|
624
|
+
"Automatische Synchronisation"
|
|
625
|
+
],
|
|
626
|
+
ctaLabel: "Zum Angebot",
|
|
627
|
+
ctaHref: "#"
|
|
628
|
+
},
|
|
629
|
+
{
|
|
630
|
+
id: "100gb",
|
|
631
|
+
storage: "100 GB",
|
|
632
|
+
monthlyPrice: 2.49,
|
|
633
|
+
yearlyPrice: 1.99,
|
|
634
|
+
features: [
|
|
635
|
+
"20.000 Fotos, 8h Videomaterial",
|
|
636
|
+
"Fotos und Dokumente sichern und teilen",
|
|
637
|
+
"Hoher deutscher Datenschutz",
|
|
638
|
+
"Premium-Kunden-Vorteil: 25% günstiger"
|
|
639
|
+
],
|
|
640
|
+
ctaLabel: "Zum Angebot",
|
|
641
|
+
ctaHref: "#"
|
|
642
|
+
},
|
|
643
|
+
{
|
|
644
|
+
id: "200gb",
|
|
645
|
+
storage: "200 GB",
|
|
646
|
+
monthlyPrice: 3.49,
|
|
647
|
+
yearlyPrice: 2.99,
|
|
648
|
+
features: [
|
|
649
|
+
"40.000 Fotos, 16h Videomaterial",
|
|
650
|
+
"Fotos und Dokumente sichern und teilen",
|
|
651
|
+
"Hoher deutscher Datenschutz",
|
|
652
|
+
"Premium-Kunden-Vorteil: 17% günstiger"
|
|
653
|
+
],
|
|
654
|
+
ctaLabel: "Zum Angebot",
|
|
655
|
+
ctaHref: "#"
|
|
656
|
+
},
|
|
657
|
+
{
|
|
658
|
+
id: "500gb",
|
|
659
|
+
storage: "500 GB",
|
|
660
|
+
monthlyPrice: 5.49,
|
|
661
|
+
yearlyPrice: 4.99,
|
|
662
|
+
hidden: !0,
|
|
663
|
+
features: [
|
|
664
|
+
"100.000 Fotos, 40h Videomaterial",
|
|
665
|
+
"Fotos und Dokumente sichern und teilen",
|
|
666
|
+
"Hoher deutscher Datenschutz",
|
|
667
|
+
"Premium-Kunden-Vorteil: 10% günstiger"
|
|
668
|
+
],
|
|
669
|
+
ctaLabel: "Zum Angebot",
|
|
670
|
+
ctaHref: "#"
|
|
671
|
+
},
|
|
672
|
+
{
|
|
673
|
+
id: "1tb",
|
|
674
|
+
storage: "1 TB",
|
|
675
|
+
monthlyPrice: 10.99,
|
|
676
|
+
yearlyPrice: 9.99,
|
|
677
|
+
features: [
|
|
678
|
+
"200.000 Fotos, 80h Videomaterial",
|
|
679
|
+
"Fotos und Dokumente sichern und teilen",
|
|
680
|
+
"Hoher deutscher Datenschutz",
|
|
681
|
+
"Premium-Kunden-Vorteil: 10% günstiger"
|
|
682
|
+
],
|
|
683
|
+
badge: "Meistgewählt",
|
|
684
|
+
ctaLabel: "Zum Angebot",
|
|
685
|
+
ctaHref: "#"
|
|
686
|
+
}
|
|
687
|
+
], Te = ({
|
|
688
|
+
heading: t = "Cloud-Speicher erweitern",
|
|
689
|
+
subheading: a = "Wählen Sie den passenden Tarif für Ihre Bedürfnisse",
|
|
690
|
+
plans: r = xe,
|
|
691
|
+
defaultOpenId: o = "100gb",
|
|
692
|
+
defaultBilling: s = "yearly",
|
|
693
|
+
className: n,
|
|
694
|
+
...d
|
|
695
|
+
}) => {
|
|
696
|
+
const [u, h] = y(o), [p, f] = y(s), [N, z] = y(!1), E = r.some((l) => l.hidden), _ = N ? r : r.filter((l) => !l.hidden), K = (l) => {
|
|
697
|
+
h((b) => b === l ? null : l);
|
|
698
|
+
}, O = (l) => p === "yearly" ? l.yearlyPrice : l.monthlyPrice, W = (l) => {
|
|
699
|
+
const b = l.monthlyPrice - l.yearlyPrice;
|
|
700
|
+
return b > 0 ? Math.round(b / l.monthlyPrice * 100) : 0;
|
|
701
|
+
};
|
|
702
|
+
return /* @__PURE__ */ e("section", { className: c("section-padding", n), ...d, children: /* @__PURE__ */ i("div", { className: "container-narrow", children: [
|
|
703
|
+
t && /* @__PURE__ */ e(m, { variant: "h2", className: "mb-2 text-center", children: t }),
|
|
704
|
+
a && /* @__PURE__ */ e(m, { variant: "body", tone: "muted", className: "mb-8 text-center", children: a }),
|
|
705
|
+
/* @__PURE__ */ e("div", { className: "flex items-center justify-center mb-8", children: /* @__PURE__ */ i("div", { className: "inline-flex rounded-xl border border-border bg-muted p-1 gap-1", children: [
|
|
706
|
+
/* @__PURE__ */ e(
|
|
707
|
+
"button",
|
|
708
|
+
{
|
|
709
|
+
onClick: () => f("monthly"),
|
|
710
|
+
className: c(
|
|
711
|
+
"rounded-lg px-5 py-2.5 font-body text-sm font-medium transition-fast",
|
|
712
|
+
p === "monthly" ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"
|
|
713
|
+
),
|
|
714
|
+
children: "Monatlich kündbar"
|
|
715
|
+
}
|
|
716
|
+
),
|
|
717
|
+
/* @__PURE__ */ e(
|
|
718
|
+
"button",
|
|
719
|
+
{
|
|
720
|
+
onClick: () => f("yearly"),
|
|
721
|
+
className: c(
|
|
722
|
+
"rounded-lg px-5 py-2.5 font-body text-sm font-medium transition-fast",
|
|
723
|
+
p === "yearly" ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"
|
|
724
|
+
),
|
|
725
|
+
children: "12 Monate Laufzeit"
|
|
726
|
+
}
|
|
727
|
+
)
|
|
728
|
+
] }) }),
|
|
729
|
+
/* @__PURE__ */ e("div", { className: "space-y-3", children: _.map((l) => {
|
|
730
|
+
const b = u === l.id, q = O(l), j = W(l);
|
|
731
|
+
return /* @__PURE__ */ i(
|
|
732
|
+
"div",
|
|
733
|
+
{
|
|
734
|
+
className: c(
|
|
735
|
+
"rounded-2xl border transition-fast overflow-hidden",
|
|
736
|
+
b ? "border-primary bg-card shadow-md ring-1 ring-primary/20" : "border-border bg-card hover:border-primary/40 hover:shadow-sm"
|
|
737
|
+
),
|
|
738
|
+
children: [
|
|
739
|
+
/* @__PURE__ */ i(
|
|
740
|
+
"div",
|
|
741
|
+
{
|
|
742
|
+
className: "flex items-center gap-4 px-5 py-4 cursor-pointer select-none",
|
|
743
|
+
onClick: () => K(l.id),
|
|
744
|
+
children: [
|
|
745
|
+
/* @__PURE__ */ e(
|
|
746
|
+
"div",
|
|
747
|
+
{
|
|
748
|
+
className: c(
|
|
749
|
+
"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl transition-fast",
|
|
750
|
+
b ? "bg-primary text-primary-foreground" : "bg-muted text-muted-foreground"
|
|
751
|
+
),
|
|
752
|
+
children: /* @__PURE__ */ e(ne, { className: "h-5 w-5" })
|
|
753
|
+
}
|
|
754
|
+
),
|
|
755
|
+
/* @__PURE__ */ i("div", { className: "flex items-center gap-3 min-w-0", children: [
|
|
756
|
+
/* @__PURE__ */ e(m, { variant: "h4", className: "whitespace-nowrap", children: l.storage }),
|
|
757
|
+
l.badge && /* @__PURE__ */ i("span", { className: "hidden sm:inline-flex items-center gap-1 rounded-full bg-primary/10 px-2.5 py-0.5 text-xs font-semibold text-primary", children: [
|
|
758
|
+
/* @__PURE__ */ e(ie, { className: "h-3 w-3" }),
|
|
759
|
+
l.badge
|
|
760
|
+
] })
|
|
761
|
+
] }),
|
|
762
|
+
/* @__PURE__ */ i("div", { className: "ml-auto flex items-center gap-3", children: [
|
|
763
|
+
/* @__PURE__ */ i("div", { className: "text-right", children: [
|
|
764
|
+
/* @__PURE__ */ i("span", { className: "font-display text-xl font-bold text-foreground", children: [
|
|
765
|
+
q.toFixed(2).replace(".", ","),
|
|
766
|
+
" €"
|
|
767
|
+
] }),
|
|
768
|
+
/* @__PURE__ */ e("span", { className: "text-sm text-muted-foreground", children: "/Monat" })
|
|
769
|
+
] }),
|
|
770
|
+
!b && l.ctaHref && /* @__PURE__ */ e(
|
|
771
|
+
"a",
|
|
772
|
+
{
|
|
773
|
+
href: l.ctaHref,
|
|
774
|
+
onClick: (B) => B.stopPropagation(),
|
|
775
|
+
className: "hidden sm:inline-flex",
|
|
776
|
+
children: /* @__PURE__ */ e(g, { size: "sm", variant: "outline", children: l.ctaLabel || "Auswählen" })
|
|
777
|
+
}
|
|
778
|
+
),
|
|
779
|
+
/* @__PURE__ */ e(
|
|
780
|
+
F,
|
|
781
|
+
{
|
|
782
|
+
className: c(
|
|
783
|
+
"h-5 w-5 shrink-0 text-muted-foreground transition-transform duration-200",
|
|
784
|
+
b && "rotate-180"
|
|
785
|
+
)
|
|
786
|
+
}
|
|
787
|
+
)
|
|
788
|
+
] })
|
|
789
|
+
]
|
|
790
|
+
}
|
|
791
|
+
),
|
|
792
|
+
/* @__PURE__ */ e(
|
|
793
|
+
"div",
|
|
794
|
+
{
|
|
795
|
+
className: c(
|
|
796
|
+
"grid transition-all duration-200 ease-in-out",
|
|
797
|
+
b ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
|
|
798
|
+
),
|
|
799
|
+
children: /* @__PURE__ */ e("div", { className: "overflow-hidden", children: /* @__PURE__ */ i("div", { className: "px-5 pb-5 pt-1", children: [
|
|
800
|
+
p === "monthly" && j > 0 && /* @__PURE__ */ i(
|
|
801
|
+
m,
|
|
802
|
+
{
|
|
803
|
+
variant: "body-sm",
|
|
804
|
+
className: "mb-4 text-primary font-medium",
|
|
805
|
+
children: [
|
|
806
|
+
"Sparen Sie ",
|
|
807
|
+
j,
|
|
808
|
+
"% im Jahresabo"
|
|
809
|
+
]
|
|
810
|
+
}
|
|
811
|
+
),
|
|
812
|
+
/* @__PURE__ */ e("ul", { className: "grid grid-cols-1 sm:grid-cols-2 gap-2 mb-5", children: l.features.map((B, G) => /* @__PURE__ */ i(
|
|
813
|
+
"li",
|
|
814
|
+
{
|
|
815
|
+
className: "flex items-start gap-2 font-body text-sm text-muted-foreground",
|
|
816
|
+
children: [
|
|
817
|
+
/* @__PURE__ */ e(oe, { className: "h-4 w-4 mt-0.5 shrink-0 text-primary" }),
|
|
818
|
+
B
|
|
819
|
+
]
|
|
820
|
+
},
|
|
821
|
+
G
|
|
822
|
+
)) }),
|
|
823
|
+
l.ctaHref && /* @__PURE__ */ e("a", { href: l.ctaHref, children: /* @__PURE__ */ e(g, { className: "w-full sm:w-auto", size: "lg", children: l.ctaLabel || "Jetzt buchen" }) })
|
|
824
|
+
] }) })
|
|
825
|
+
}
|
|
826
|
+
)
|
|
827
|
+
]
|
|
828
|
+
},
|
|
829
|
+
l.id
|
|
830
|
+
);
|
|
831
|
+
}) }),
|
|
832
|
+
E && /* @__PURE__ */ e("div", { className: "flex justify-center mt-4", children: /* @__PURE__ */ i(
|
|
833
|
+
g,
|
|
834
|
+
{
|
|
835
|
+
variant: "ghost",
|
|
836
|
+
size: "sm",
|
|
837
|
+
onClick: () => z((l) => !l),
|
|
838
|
+
className: "gap-1.5 text-muted-foreground",
|
|
839
|
+
children: [
|
|
840
|
+
N ? "Weniger Tarife" : "Weitere Tarife",
|
|
841
|
+
/* @__PURE__ */ e(
|
|
842
|
+
F,
|
|
843
|
+
{
|
|
844
|
+
className: c(
|
|
845
|
+
"h-4 w-4 transition-transform duration-200",
|
|
846
|
+
N && "rotate-180"
|
|
847
|
+
)
|
|
848
|
+
}
|
|
849
|
+
)
|
|
850
|
+
]
|
|
851
|
+
}
|
|
852
|
+
) }),
|
|
853
|
+
/* @__PURE__ */ e(m, { variant: "caption", className: "mt-6 block text-center", children: "Alle Preise inkl. MwSt. Kündigung bis 4 Wochen zum Ende der Vertragslaufzeit möglich." })
|
|
854
|
+
] }) });
|
|
855
|
+
}, w = [
|
|
856
|
+
{ id: "default", name: "Core Framework" },
|
|
857
|
+
{ id: "webde", name: "WEB.DE" },
|
|
858
|
+
{ id: "gmx", name: "GMX" }
|
|
859
|
+
], I = L({
|
|
860
|
+
brand: w[0],
|
|
861
|
+
setBrand: () => {
|
|
862
|
+
}
|
|
863
|
+
}), ye = () => $(I), Ie = ({
|
|
864
|
+
children: t,
|
|
865
|
+
defaultBrand: a = "default"
|
|
866
|
+
}) => {
|
|
867
|
+
const [r, o] = y(
|
|
868
|
+
w.find((n) => n.id === a) || w[0]
|
|
869
|
+
), s = Q((n) => {
|
|
870
|
+
const d = w.find((u) => u.id === n);
|
|
871
|
+
d && o(d);
|
|
872
|
+
}, []);
|
|
873
|
+
return X(() => {
|
|
874
|
+
const n = document.documentElement;
|
|
875
|
+
return r.id === "default" ? n.removeAttribute("data-brand") : n.setAttribute("data-brand", r.id), () => n.removeAttribute("data-brand");
|
|
876
|
+
}, [r]), /* @__PURE__ */ e(I.Provider, { value: { brand: r, setBrand: s }, children: t });
|
|
877
|
+
}, Ee = ({ className: t }) => {
|
|
878
|
+
const { brand: a, setBrand: r } = ye();
|
|
879
|
+
return /* @__PURE__ */ e("div", { className: c("flex items-center gap-1 rounded-xl border border-border bg-muted p-1", t), children: w.map((o) => /* @__PURE__ */ e(
|
|
880
|
+
"button",
|
|
881
|
+
{
|
|
882
|
+
onClick: () => r(o.id),
|
|
883
|
+
className: c(
|
|
884
|
+
"rounded-lg px-3 py-1.5 font-body text-xs font-medium transition-fast",
|
|
885
|
+
a.id === o.id ? "bg-primary text-primary-foreground shadow-sm" : "text-muted-foreground hover:text-foreground hover:bg-background"
|
|
886
|
+
),
|
|
887
|
+
children: o.name
|
|
888
|
+
},
|
|
889
|
+
o.id
|
|
890
|
+
)) });
|
|
891
|
+
};
|
|
892
|
+
export {
|
|
893
|
+
ce as Badge,
|
|
894
|
+
Ie as BrandProvider,
|
|
895
|
+
Ee as BrandSwitcher,
|
|
896
|
+
He as Breadcrumb,
|
|
897
|
+
Me as ContactForm,
|
|
898
|
+
je as ContentCard,
|
|
899
|
+
De as FaqAccordion,
|
|
900
|
+
Re as Footer,
|
|
901
|
+
Fe as Hero,
|
|
902
|
+
Se as ImageTextTeaser,
|
|
903
|
+
Ve as Navbar,
|
|
904
|
+
be as SearchBar,
|
|
905
|
+
Te as TariffSelect,
|
|
906
|
+
m as Typography,
|
|
907
|
+
w as brands,
|
|
908
|
+
ye as useBrand
|
|
909
|
+
};
|
|
910
|
+
//# sourceMappingURL=index.mjs.map
|