@djangocfg/ui-nextjs 2.1.103 → 2.1.104

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/package.json +26 -30
  2. package/src/components/index.ts +2 -0
  3. package/src/components/ssr-pagination.tsx +2 -1
  4. package/src/hooks/index.ts +1 -6
  5. package/src/index.ts +2 -0
  6. package/src/theme/index.ts +2 -0
  7. package/dist/animations.cjs +0 -880
  8. package/dist/animations.cjs.map +0 -1
  9. package/dist/animations.d.mts +0 -36
  10. package/dist/animations.d.ts +0 -36
  11. package/dist/animations.mjs +0 -877
  12. package/dist/animations.mjs.map +0 -1
  13. package/dist/blocks.cjs +0 -1609
  14. package/dist/blocks.cjs.map +0 -1
  15. package/dist/blocks.d.mts +0 -278
  16. package/dist/blocks.d.ts +0 -278
  17. package/dist/blocks.mjs +0 -1589
  18. package/dist/blocks.mjs.map +0 -1
  19. package/dist/components.cjs +0 -1946
  20. package/dist/components.cjs.map +0 -1
  21. package/dist/components.d.mts +0 -322
  22. package/dist/components.d.ts +0 -322
  23. package/dist/components.mjs +0 -1860
  24. package/dist/components.mjs.map +0 -1
  25. package/dist/hooks.cjs +0 -530
  26. package/dist/hooks.cjs.map +0 -1
  27. package/dist/hooks.d.mts +0 -364
  28. package/dist/hooks.d.ts +0 -364
  29. package/dist/hooks.mjs +0 -506
  30. package/dist/hooks.mjs.map +0 -1
  31. package/dist/index.cjs +0 -4080
  32. package/dist/index.cjs.map +0 -1
  33. package/dist/index.d.mts +0 -1044
  34. package/dist/index.d.ts +0 -1044
  35. package/dist/index.mjs +0 -3962
  36. package/dist/index.mjs.map +0 -1
  37. package/dist/theme.cjs +0 -189
  38. package/dist/theme.cjs.map +0 -1
  39. package/dist/theme.d.mts +0 -60
  40. package/dist/theme.d.ts +0 -60
  41. package/dist/theme.mjs +0 -184
  42. package/dist/theme.mjs.map +0 -1
  43. package/src/hooks/useCfgRouter.ts +0 -153
  44. package/src/hooks/useQueryParams.ts +0 -73
package/dist/blocks.cjs DELETED
@@ -1,1609 +0,0 @@
1
- 'use strict';
2
-
3
- var moment2 = require('moment');
4
- var components = require('@djangocfg/ui-core/components');
5
- var lib = require('@djangocfg/ui-core/lib');
6
- var jsxRuntime = require('react/jsx-runtime');
7
- var React5 = require('react');
8
- var Link = require('next/link');
9
- var lucideReact = require('lucide-react');
10
- var Image = require('next/image');
11
- var uiTools = require('@djangocfg/ui-tools');
12
- require('next-themes');
13
- require('@djangocfg/ui-core/hooks');
14
-
15
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
-
17
- var moment2__default = /*#__PURE__*/_interopDefault(moment2);
18
- var React5__default = /*#__PURE__*/_interopDefault(React5);
19
- var Link__default = /*#__PURE__*/_interopDefault(Link);
20
- var Image__default = /*#__PURE__*/_interopDefault(Image);
21
-
22
- var __defProp = Object.defineProperty;
23
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
24
- var typeConfig = {
25
- security: { label: "Security", variant: "destructive", icon: "\u{1F6E1}\uFE0F" },
26
- release: { label: "Release", variant: "default", icon: "\u{1F4E6}" },
27
- announcement: { label: "Announcement", variant: "secondary", icon: "\u{1F4E2}" },
28
- feature: { label: "Feature", variant: "outline", icon: "\u2728" }
29
- };
30
- var ArticleCard = /* @__PURE__ */ __name(({
31
- title,
32
- description,
33
- date,
34
- type,
35
- href,
36
- author,
37
- tags,
38
- featured = false,
39
- className
40
- }) => {
41
- const config = typeConfig[type];
42
- const formattedDate = moment2__default.default(date).format("MMMM D, YYYY");
43
- return /* @__PURE__ */ jsxRuntime.jsxs(components.Card, { className: lib.cn(
44
- "group relative overflow-hidden transition-all duration-200 hover:shadow-lg",
45
- featured && "border-primary/50 bg-primary/5",
46
- className
47
- ), children: [
48
- /* @__PURE__ */ jsxRuntime.jsxs(components.CardHeader, { className: "pb-3", children: [
49
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2 mb-2", children: [
50
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
51
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg", children: config.icon }),
52
- /* @__PURE__ */ jsxRuntime.jsx(components.Badge, { variant: config.variant, children: config.label })
53
- ] }),
54
- /* @__PURE__ */ jsxRuntime.jsx("time", { className: "text-sm text-muted-foreground", children: formattedDate })
55
- ] }),
56
- /* @__PURE__ */ jsxRuntime.jsx(components.CardTitle, { className: "text-xl group-hover:text-primary transition-colors line-clamp-2", children: /* @__PURE__ */ jsxRuntime.jsx("a", { href, className: "hover:underline", children: title }) }),
57
- description && /* @__PURE__ */ jsxRuntime.jsx(components.CardDescription, { className: "line-clamp-2 mt-2", children: description })
58
- ] }),
59
- /* @__PURE__ */ jsxRuntime.jsx(components.CardContent, { className: "pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
60
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
61
- author && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm text-muted-foreground", children: [
62
- "by ",
63
- author
64
- ] }),
65
- tags && tags.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: tags.slice(0, 2).map((tag) => /* @__PURE__ */ jsxRuntime.jsx(components.Badge, { variant: "outline", className: "text-xs", children: tag }, tag)) })
66
- ] }),
67
- /* @__PURE__ */ jsxRuntime.jsx(components.ButtonLink, { href, variant: "ghost", size: "sm", children: "Read more \u2192" })
68
- ] }) })
69
- ] });
70
- }, "ArticleCard");
71
- var ArticleList = /* @__PURE__ */ __name(({
72
- articles,
73
- title,
74
- description,
75
- showFeatured = true,
76
- columns = 2,
77
- className
78
- }) => {
79
- const { featuredArticles, regularArticles } = React5.useMemo(() => {
80
- const sorted = [...articles].sort(
81
- (a, b) => moment2__default.default(b.date).valueOf() - moment2__default.default(a.date).valueOf()
82
- );
83
- return {
84
- featuredArticles: showFeatured ? sorted.filter((a) => a.featured) : [],
85
- regularArticles: showFeatured ? sorted.filter((a) => !a.featured) : sorted
86
- };
87
- }, [articles, showFeatured]);
88
- const gridCols = {
89
- 1: "grid-cols-1",
90
- 2: "grid-cols-1 md:grid-cols-2",
91
- 3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
92
- };
93
- return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: lib.cn("py-8", className), children: [
94
- (title || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-8", children: [
95
- title && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-3xl font-bold tracking-tight", children: title }),
96
- description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-lg text-muted-foreground", children: description })
97
- ] }),
98
- featuredArticles.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-8", children: [
99
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold uppercase tracking-wider text-muted-foreground mb-4", children: "Featured" }),
100
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-4", children: featuredArticles.map((article, index) => /* @__PURE__ */ jsxRuntime.jsx(ArticleCard, { ...article, featured: true }, index)) })
101
- ] }),
102
- regularArticles.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: lib.cn("grid gap-4", gridCols[columns]), children: regularArticles.map((article, index) => /* @__PURE__ */ jsxRuntime.jsx(ArticleCard, { ...article }, index)) }),
103
- articles.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-12 text-muted-foreground", children: "No articles yet. Check back soon!" })
104
- ] });
105
- }, "ArticleList");
106
- var CTASection = /* @__PURE__ */ __name(({
107
- title,
108
- subtitle,
109
- primaryCTA,
110
- secondaryCTA,
111
- background = "default",
112
- className,
113
- children
114
- }) => {
115
- const backgroundClasses = {
116
- default: "bg-background",
117
- muted: "bg-muted/30",
118
- primary: "bg-primary/5",
119
- gradient: "bg-gradient-to-b from-background via-primary/5 to-background"
120
- };
121
- return /* @__PURE__ */ jsxRuntime.jsxs(
122
- "section",
123
- {
124
- className: lib.cn(
125
- "relative py-16 sm:py-20 md:py-24 lg:py-32",
126
- backgroundClasses[background],
127
- className
128
- ),
129
- children: [
130
- background === "gradient" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 -z-10 overflow-hidden pointer-events-none", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full max-w-4xl aspect-square bg-primary/10 rounded-full blur-3xl" }) }),
131
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container max-w-4xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center space-y-6 sm:space-y-8", children: [
132
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-3xl sm:text-4xl md:text-5xl lg:text-6xl font-bold tracking-tight", children: title }),
133
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base sm:text-lg md:text-xl text-muted-foreground max-w-2xl mx-auto leading-relaxed", children: subtitle }),
134
- (primaryCTA || secondaryCTA) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row gap-3 sm:gap-4 justify-center items-center pt-4", children: [
135
- primaryCTA && (primaryCTA.onClick ? /* @__PURE__ */ jsxRuntime.jsx(
136
- components.Button,
137
- {
138
- onClick: primaryCTA.onClick,
139
- variant: primaryCTA.variant || "default",
140
- size: primaryCTA.size || "lg",
141
- className: "w-full sm:w-auto",
142
- children: primaryCTA.label
143
- }
144
- ) : /* @__PURE__ */ jsxRuntime.jsx(
145
- components.Button,
146
- {
147
- asChild: true,
148
- variant: primaryCTA.variant || "default",
149
- size: primaryCTA.size || "lg",
150
- className: "w-full sm:w-auto",
151
- children: /* @__PURE__ */ jsxRuntime.jsx(Link__default.default, { href: primaryCTA.href || "#", children: primaryCTA.label })
152
- }
153
- )),
154
- secondaryCTA && (secondaryCTA.onClick ? /* @__PURE__ */ jsxRuntime.jsx(
155
- components.Button,
156
- {
157
- onClick: secondaryCTA.onClick,
158
- variant: secondaryCTA.variant || "outline",
159
- size: secondaryCTA.size || "lg",
160
- className: "w-full sm:w-auto",
161
- children: secondaryCTA.label
162
- }
163
- ) : /* @__PURE__ */ jsxRuntime.jsx(
164
- components.Button,
165
- {
166
- asChild: true,
167
- variant: secondaryCTA.variant || "outline",
168
- size: secondaryCTA.size || "lg",
169
- className: "w-full sm:w-auto",
170
- children: /* @__PURE__ */ jsxRuntime.jsx(Link__default.default, { href: secondaryCTA.href || "#", children: secondaryCTA.label })
171
- }
172
- ))
173
- ] }),
174
- children && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-8 sm:pt-12", children })
175
- ] }) })
176
- ]
177
- }
178
- );
179
- }, "CTASection");
180
- var FeatureSection = /* @__PURE__ */ __name(({
181
- title,
182
- subtitle,
183
- features,
184
- columns = 3,
185
- className,
186
- background = "dark",
187
- variant = "default"
188
- }) => {
189
- const getGridClasses = /* @__PURE__ */ __name(() => {
190
- if (variant === "compact") {
191
- switch (columns) {
192
- case 2:
193
- return "grid-cols-2";
194
- case 3:
195
- return "grid-cols-2 md:grid-cols-3";
196
- case 4:
197
- return "grid-cols-2 md:grid-cols-4";
198
- case 6:
199
- return "grid-cols-2 md:grid-cols-3 lg:grid-cols-6";
200
- default:
201
- return "grid-cols-2 md:grid-cols-3";
202
- }
203
- }
204
- switch (columns) {
205
- case 1:
206
- return "grid-cols-1 max-w-2xl mx-auto";
207
- case 2:
208
- return "grid-cols-1 sm:grid-cols-2";
209
- case 3:
210
- return "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3";
211
- case 4:
212
- return "grid-cols-1 sm:grid-cols-2 lg:grid-cols-4";
213
- case 6:
214
- return "grid-cols-2 sm:grid-cols-3 lg:grid-cols-6";
215
- default:
216
- return "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3";
217
- }
218
- }, "getGridClasses");
219
- const getBackgroundClasses = /* @__PURE__ */ __name(() => {
220
- switch (background) {
221
- case "dark":
222
- return "bg-muted/30";
223
- case "card":
224
- return "bg-card";
225
- case "gradient":
226
- return "bg-gradient-to-b from-background to-muted/20";
227
- case "none":
228
- return "";
229
- default:
230
- return "bg-background";
231
- }
232
- }, "getBackgroundClasses");
233
- if (variant === "compact") {
234
- return /* @__PURE__ */ jsxRuntime.jsx("section", { className: lib.cn("py-12 md:py-16", getBackgroundClasses(), className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "container max-w-5xl mx-auto px-4", children: [
235
- (title || subtitle) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center mb-8", children: [
236
- title && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl sm:text-2xl font-bold text-foreground mb-2", children: title }),
237
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground max-w-2xl mx-auto", children: subtitle })
238
- ] }),
239
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: lib.cn("grid gap-4", getGridClasses()), children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center p-4", children: [
240
- feature.icon && /* @__PURE__ */ jsxRuntime.jsx(
241
- "div",
242
- {
243
- className: lib.cn(
244
- "w-10 h-10 mx-auto mb-3 rounded-lg flex items-center justify-center",
245
- feature.gradient || "bg-primary/10 text-primary"
246
- ),
247
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "[&>svg]:w-5 [&>svg]:h-5", children: feature.icon })
248
- }
249
- ),
250
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-medium text-sm mb-1", children: feature.title }),
251
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: feature.description })
252
- ] }, index)) })
253
- ] }) });
254
- }
255
- return /* @__PURE__ */ jsxRuntime.jsx("section", { className: lib.cn("py-12 sm:py-16 lg:py-24", getBackgroundClasses(), className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full px-4 sm:px-6 lg:px-8", children: [
256
- (title || subtitle) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center mb-12 sm:mb-16", children: [
257
- title && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-2xl sm:text-3xl md:text-4xl lg:text-5xl font-bold text-foreground mb-4 sm:mb-6", children: title }),
258
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base sm:text-lg md:text-xl text-muted-foreground max-w-3xl mx-auto px-2", children: subtitle })
259
- ] }),
260
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: lib.cn("grid gap-6 sm:gap-8", getGridClasses()), children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
261
- components.Card,
262
- {
263
- className: "h-full hover:shadow-lg transition-all duration-300 backdrop-blur-sm border-border/50 hover:border-primary/30 group",
264
- children: [
265
- /* @__PURE__ */ jsxRuntime.jsxs(components.CardHeader, { className: "pb-4", children: [
266
- feature.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: lib.cn(
267
- "w-12 h-12 sm:w-16 sm:h-16 rounded-lg flex items-center justify-center mb-4 sm:mb-6 group-hover:scale-110 transition-all duration-300",
268
- feature.gradient || "bg-primary/10 text-primary group-hover:bg-primary/20"
269
- ), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xl sm:text-2xl", children: feature.icon }) }),
270
- /* @__PURE__ */ jsxRuntime.jsx(components.CardTitle, { className: "text-lg sm:text-xl text-foreground group-hover:text-primary transition-colors duration-300", children: feature.title })
271
- ] }),
272
- /* @__PURE__ */ jsxRuntime.jsx(components.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx(components.CardDescription, { className: "text-sm sm:text-base text-muted-foreground leading-relaxed", children: feature.description }) })
273
- ]
274
- },
275
- index
276
- )) })
277
- ] }) });
278
- }, "FeatureSection");
279
- var Hero = /* @__PURE__ */ __name(({
280
- title,
281
- subtitle,
282
- description,
283
- primaryAction,
284
- secondaryAction,
285
- background = "dark",
286
- className,
287
- children
288
- }) => {
289
- const backgroundClasses = {
290
- gradient: "bg-gradient-to-b from-primary/10 to-background",
291
- solid: "bg-primary text-primary-foreground",
292
- image: "bg-cover bg-center bg-no-repeat text-white",
293
- dark: "bg-background text-foreground"
294
- };
295
- return /* @__PURE__ */ jsxRuntime.jsx("section", { className: lib.cn(
296
- "relative py-16 sm:py-20 md:py-24 lg:py-32",
297
- backgroundClasses[background],
298
- className
299
- ), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center max-w-4xl mx-auto", children: [
300
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base sm:text-lg md:text-xl mb-4 sm:mb-6 text-muted-foreground font-medium", children: subtitle }),
301
- /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-bold mb-6 sm:mb-8 leading-tight", children: title }),
302
- description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-lg sm:text-xl md:text-2xl mb-8 sm:mb-10 md:mb-12 text-muted-foreground leading-relaxed max-w-3xl mx-auto", children: description }),
303
- (primaryAction || secondaryAction) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row gap-3 sm:gap-4 justify-center", children: [
304
- primaryAction && /* @__PURE__ */ jsxRuntime.jsx(
305
- components.ButtonLink,
306
- {
307
- href: primaryAction.href,
308
- variant: primaryAction.variant || "default",
309
- size: "huge",
310
- className: "w-full sm:w-auto",
311
- children: primaryAction.label
312
- }
313
- ),
314
- secondaryAction && /* @__PURE__ */ jsxRuntime.jsx(
315
- components.ButtonLink,
316
- {
317
- href: secondaryAction.href,
318
- variant: secondaryAction.variant || "outline",
319
- size: "huge",
320
- className: "w-full sm:w-auto",
321
- children: secondaryAction.label
322
- }
323
- )
324
- ] }),
325
- children && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-12 sm:mt-14 md:mt-16 flex justify-center", children })
326
- ] }) }) });
327
- }, "Hero");
328
- var NewsletterSection = /* @__PURE__ */ __name(({
329
- title = "Stay Updated with Our Newsletter",
330
- description = "Get the latest insights on AI, technology, and software development delivered to your inbox.",
331
- placeholder = "Enter your email address",
332
- buttonText = "Subscribe",
333
- disclaimer = "No spam, unsubscribe at any time",
334
- background = "muted",
335
- className,
336
- onSubmit
337
- }) => {
338
- const [email, setEmail] = React5__default.default.useState("");
339
- const handleSubmit = /* @__PURE__ */ __name((e) => {
340
- e.preventDefault();
341
- if (email && onSubmit) {
342
- onSubmit(email);
343
- setEmail("");
344
- }
345
- }, "handleSubmit");
346
- const backgroundClasses = {
347
- default: "bg-background",
348
- muted: "bg-muted/50",
349
- primary: "bg-primary/5",
350
- gradient: "bg-gradient-to-b from-background via-primary/5 to-background"
351
- };
352
- return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: lib.cn(
353
- "relative py-16 sm:py-20 md:py-24 lg:py-32",
354
- backgroundClasses[background],
355
- className
356
- ), children: [
357
- background === "gradient" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 -z-10 overflow-hidden pointer-events-none", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full max-w-4xl aspect-square bg-primary/10 rounded-full blur-3xl" }) }),
358
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center max-w-3xl mx-auto", children: [
359
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-3xl sm:text-4xl md:text-5xl lg:text-6xl font-bold tracking-tight mb-4 sm:mb-6", children: title }),
360
- description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base sm:text-lg md:text-xl text-muted-foreground leading-relaxed mb-8 sm:mb-10 md:mb-12", children: description }),
361
- /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleSubmit, className: "max-w-md mx-auto", children: [
362
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row gap-3 sm:gap-4", children: [
363
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex-1", children: [
364
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mail, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground pointer-events-none" }),
365
- /* @__PURE__ */ jsxRuntime.jsx(
366
- components.Input,
367
- {
368
- type: "email",
369
- placeholder,
370
- value: email,
371
- onChange: (e) => setEmail(e.target.value),
372
- className: "pl-10 h-12 w-full",
373
- required: true,
374
- "aria-label": "Email address"
375
- }
376
- )
377
- ] }),
378
- /* @__PURE__ */ jsxRuntime.jsx(
379
- components.Button,
380
- {
381
- type: "submit",
382
- size: "lg",
383
- className: "h-12 w-full sm:w-auto sm:min-w-[120px]",
384
- children: buttonText
385
- }
386
- )
387
- ] }),
388
- disclaimer && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs sm:text-sm text-muted-foreground mt-3 text-center", children: disclaimer })
389
- ] })
390
- ] }) })
391
- ] });
392
- }, "NewsletterSection");
393
- var SplitHeroContent = /* @__PURE__ */ __name(({
394
- badge,
395
- title,
396
- titleGradient,
397
- subtitle,
398
- features = [],
399
- primaryAction,
400
- secondaryAction,
401
- align = "center",
402
- className
403
- }) => {
404
- const alignClasses = {
405
- top: "justify-start",
406
- center: "justify-center",
407
- bottom: "justify-end"
408
- };
409
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: lib.cn("flex flex-col", alignClasses[align], className), children: [
410
- badge && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-2 px-3 py-1.5 bg-primary/10 text-primary rounded-full text-sm font-medium mb-4 w-fit border border-primary/20", children: [
411
- badge.icon || /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "w-3.5 h-3.5" }),
412
- badge.text
413
- ] }),
414
- /* @__PURE__ */ jsxRuntime.jsxs("h1", { className: "text-3xl sm:text-4xl lg:text-5xl font-bold text-foreground mb-4 leading-tight", children: [
415
- title,
416
- titleGradient && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
417
- " ",
418
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent", children: titleGradient })
419
- ] })
420
- ] }),
421
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-lg text-muted-foreground mb-6 leading-relaxed", children: subtitle }),
422
- features.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-3 mb-6", children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
423
- "div",
424
- {
425
- className: "flex items-center gap-2 text-sm text-muted-foreground",
426
- children: [
427
- feature.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary", children: feature.icon }),
428
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: feature.text })
429
- ]
430
- },
431
- index
432
- )) }),
433
- (primaryAction || secondaryAction) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap gap-3", children: [
434
- primaryAction && /* @__PURE__ */ jsxRuntime.jsxs(
435
- components.ButtonLink,
436
- {
437
- href: primaryAction.href || "#",
438
- onClick: primaryAction.onClick,
439
- variant: primaryAction.variant || "default",
440
- size: "lg",
441
- className: "group",
442
- children: [
443
- primaryAction.label,
444
- primaryAction.icon || /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRight, { className: "w-4 h-4 group-hover:translate-x-1 transition-transform" })
445
- ]
446
- }
447
- ),
448
- secondaryAction && /* @__PURE__ */ jsxRuntime.jsxs(
449
- components.ButtonLink,
450
- {
451
- href: secondaryAction.href || "#",
452
- onClick: secondaryAction.onClick,
453
- variant: secondaryAction.variant || "outline",
454
- size: "lg",
455
- children: [
456
- secondaryAction.label,
457
- secondaryAction.icon
458
- ]
459
- }
460
- )
461
- ] })
462
- ] });
463
- }, "SplitHeroContent");
464
- var SplitHeroMedia = /* @__PURE__ */ __name(({
465
- media,
466
- className
467
- }) => {
468
- const containerClass = lib.cn(
469
- "relative w-full rounded-xl overflow-hidden",
470
- className
471
- );
472
- switch (media.type) {
473
- case "image":
474
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerClass, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative aspect-[4/3] w-full", children: /* @__PURE__ */ jsxRuntime.jsx(
475
- Image__default.default,
476
- {
477
- src: media.src,
478
- alt: media.alt || "",
479
- fill: true,
480
- className: "object-cover",
481
- sizes: "(max-width: 768px) 100vw, 50vw"
482
- }
483
- ) }) });
484
- case "video":
485
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerClass, children: /* @__PURE__ */ jsxRuntime.jsx(
486
- uiTools.VideoPlayer,
487
- {
488
- source: {
489
- type: "url",
490
- url: media.url,
491
- title: media.title,
492
- poster: media.poster
493
- },
494
- theme: "modern",
495
- aspectRatio: 16 / 9,
496
- autoPlay: media.autoplay,
497
- muted: media.muted ?? media.autoplay
498
- }
499
- ) });
500
- case "custom":
501
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerClass, children: media.content });
502
- default:
503
- return null;
504
- }
505
- }, "SplitHeroMedia");
506
- var MAX_WIDTH_CLASSES = {
507
- sm: "max-w-3xl",
508
- md: "max-w-4xl",
509
- lg: "max-w-5xl",
510
- xl: "max-w-6xl",
511
- full: "max-w-7xl"
512
- };
513
- var BACKGROUND_CLASSES = {
514
- none: "",
515
- muted: "bg-muted/30",
516
- gradient: "bg-gradient-to-br from-primary/5 via-background to-secondary/5"
517
- };
518
- var SplitHero = /* @__PURE__ */ __name(({
519
- badge,
520
- title,
521
- titleGradient,
522
- subtitle,
523
- features,
524
- primaryAction,
525
- secondaryAction,
526
- media,
527
- layout = "text-left",
528
- mobileOrder = "text-first",
529
- align = "center",
530
- maxWidth = "xl",
531
- background = "none",
532
- className
533
- }) => {
534
- const isTextLeft = layout === "text-left";
535
- const isMediaFirst = mobileOrder === "media-first";
536
- return /* @__PURE__ */ jsxRuntime.jsx(
537
- "section",
538
- {
539
- className: lib.cn(
540
- "py-12 md:py-16 lg:py-20",
541
- BACKGROUND_CLASSES[background],
542
- className
543
- ),
544
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: lib.cn("mx-auto px-4", MAX_WIDTH_CLASSES[maxWidth]), children: /* @__PURE__ */ jsxRuntime.jsxs(
545
- "div",
546
- {
547
- className: lib.cn(
548
- "grid gap-8 lg:gap-12 items-center",
549
- media ? "lg:grid-cols-2" : "lg:grid-cols-1 max-w-3xl mx-auto"
550
- ),
551
- children: [
552
- /* @__PURE__ */ jsxRuntime.jsx(
553
- "div",
554
- {
555
- className: lib.cn(
556
- // Desktop order based on layout
557
- isTextLeft ? "lg:order-1" : "lg:order-2",
558
- // Mobile order based on mobileOrder
559
- isMediaFirst ? "order-2" : "order-1"
560
- ),
561
- children: /* @__PURE__ */ jsxRuntime.jsx(
562
- SplitHeroContent,
563
- {
564
- badge,
565
- title,
566
- titleGradient,
567
- subtitle,
568
- features,
569
- primaryAction,
570
- secondaryAction,
571
- align
572
- }
573
- )
574
- }
575
- ),
576
- media && /* @__PURE__ */ jsxRuntime.jsx(
577
- "div",
578
- {
579
- className: lib.cn(
580
- // Desktop order based on layout
581
- isTextLeft ? "lg:order-2" : "lg:order-1",
582
- // Mobile order based on mobileOrder
583
- isMediaFirst ? "order-1" : "order-2"
584
- ),
585
- children: /* @__PURE__ */ jsxRuntime.jsx(SplitHeroMedia, { media })
586
- }
587
- )
588
- ]
589
- }
590
- ) })
591
- }
592
- );
593
- }, "SplitHero");
594
- var StatsSection = /* @__PURE__ */ __name(({
595
- title,
596
- subtitle,
597
- stats,
598
- columns = 4,
599
- className,
600
- background = "dark"
601
- }) => {
602
- const getGridClasses = /* @__PURE__ */ __name(() => {
603
- switch (columns) {
604
- case 2:
605
- return "grid-cols-1 sm:grid-cols-2";
606
- case 3:
607
- return "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3";
608
- case 4:
609
- return "grid-cols-2 sm:grid-cols-2 lg:grid-cols-4";
610
- default:
611
- return "grid-cols-2 sm:grid-cols-2 lg:grid-cols-4";
612
- }
613
- }, "getGridClasses");
614
- const getBackgroundClasses = /* @__PURE__ */ __name(() => {
615
- switch (background) {
616
- case "dark":
617
- return "bg-background";
618
- case "card":
619
- return "gradient-card";
620
- case "gradient":
621
- return "gradient-subtle";
622
- default:
623
- return "bg-background";
624
- }
625
- }, "getBackgroundClasses");
626
- return /* @__PURE__ */ jsxRuntime.jsx("section", { className: lib.cn("py-12 sm:py-16 lg:py-24", getBackgroundClasses(), className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full px-4 sm:px-6 lg:px-8", children: [
627
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center mb-12 sm:mb-16 animate-fade-in", children: [
628
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-2xl sm:text-3xl md:text-4xl lg:text-5xl font-bold text-foreground mb-4 sm:mb-6", children: title }),
629
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base sm:text-lg md:text-xl text-muted-foreground max-w-3xl mx-auto px-2", children: subtitle })
630
- ] }),
631
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: lib.cn("grid gap-6 sm:gap-8", getGridClasses()), children: stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsx(
632
- components.Card,
633
- {
634
- className: "text-center hover:shadow-large transition-all duration-300 animate-scale-in backdrop-blur-sm border-border/50 hover:border-primary/30 group",
635
- style: { animationDelay: `${index * 0.1}s` },
636
- children: /* @__PURE__ */ jsxRuntime.jsxs(components.CardContent, { className: "p-6 sm:p-8", children: [
637
- stat.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-12 h-12 sm:w-16 sm:h-16 bg-primary/10 text-primary rounded-lg flex items-center justify-center mx-auto mb-4 sm:mb-6 group-hover:scale-110 group-hover:bg-primary/20 transition-all duration-300", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xl sm:text-2xl", children: stat.icon }) }),
638
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-3xl sm:text-4xl lg:text-5xl font-bold text-foreground mb-2 sm:mb-3 group-hover:text-primary transition-colors duration-300", children: stat.number }),
639
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm sm:text-base text-muted-foreground font-medium", children: stat.label }),
640
- stat.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs sm:text-sm text-muted-foreground mt-2", children: stat.description })
641
- ] })
642
- },
643
- index
644
- )) })
645
- ] }) });
646
- }, "StatsSection");
647
- var variantMap = {
648
- "gradient-mesh": "mesh-gradient",
649
- "dot-matrix": "geometric-flow",
650
- "grid-lines": "geometric-flow",
651
- "aurora": "aurora-borealis",
652
- "particles": "floating-orbs",
653
- "waves": "liquid-gradient"
654
- };
655
- var AnimatedBackground = /* @__PURE__ */ __name(({
656
- variant = "mesh-gradient",
657
- className,
658
- intensity = "medium",
659
- colorScheme = "vibrant"
660
- }) => {
661
- const resolvedVariant = variantMap[variant] || variant;
662
- const intensityConfig = React5.useMemo(() => ({
663
- subtle: { opacity: 0.15, blur: "blur-3xl", scale: 0.8 },
664
- medium: { opacity: 0.25, blur: "blur-2xl", scale: 1 },
665
- strong: { opacity: 0.4, blur: "blur-xl", scale: 1.2 }
666
- })[intensity], [intensity]);
667
- const colors = React5.useMemo(() => {
668
- const palettes = {
669
- vibrant: [
670
- "hsl(var(--chart-1))",
671
- // Blue
672
- "hsl(var(--chart-2))",
673
- // Green
674
- "hsl(var(--chart-3))",
675
- // Purple
676
- "hsl(var(--chart-4))",
677
- // Orange
678
- "hsl(var(--chart-5))"
679
- // Red
680
- ],
681
- monochrome: [
682
- "hsl(var(--primary))",
683
- "hsl(var(--primary) / 0.8)",
684
- "hsl(var(--primary) / 0.6)"
685
- ],
686
- cool: [
687
- "hsl(var(--chart-1))",
688
- // Blue
689
- "hsl(var(--chart-3))",
690
- // Purple
691
- "hsl(210 100% 50%)",
692
- // Bright blue
693
- "hsl(260 100% 60%)"
694
- // Violet
695
- ],
696
- warm: [
697
- "hsl(var(--chart-4))",
698
- // Orange
699
- "hsl(var(--chart-5))",
700
- // Red
701
- "hsl(35 100% 55%)",
702
- // Gold
703
- "hsl(350 100% 60%)"
704
- // Rose
705
- ]
706
- };
707
- return palettes[colorScheme];
708
- }, [colorScheme]);
709
- if (resolvedVariant === "none") {
710
- return null;
711
- }
712
- return /* @__PURE__ */ jsxRuntime.jsxs(
713
- "div",
714
- {
715
- className: lib.cn("absolute overflow-hidden pointer-events-none", className),
716
- style: { inset: 0, width: "100%", height: "100%" },
717
- children: [
718
- resolvedVariant === "aurora-borealis" && /* @__PURE__ */ jsxRuntime.jsx(AuroraBorealis, { colors, intensity: intensityConfig }),
719
- resolvedVariant === "mesh-gradient" && /* @__PURE__ */ jsxRuntime.jsx(MeshGradient, { colors, intensity: intensityConfig }),
720
- resolvedVariant === "floating-orbs" && /* @__PURE__ */ jsxRuntime.jsx(FloatingOrbs, { colors, intensity: intensityConfig }),
721
- resolvedVariant === "geometric-flow" && /* @__PURE__ */ jsxRuntime.jsx(GeometricFlow, { colors, intensity: intensityConfig }),
722
- resolvedVariant === "liquid-gradient" && /* @__PURE__ */ jsxRuntime.jsx(LiquidGradient, { colors, intensity: intensityConfig }),
723
- resolvedVariant === "spotlight" && /* @__PURE__ */ jsxRuntime.jsx(Spotlight, { colors, intensity: intensityConfig }),
724
- /* @__PURE__ */ jsxRuntime.jsx(AnimationStyles, {})
725
- ]
726
- }
727
- );
728
- }, "AnimatedBackground");
729
- var AuroraBorealis = /* @__PURE__ */ __name(({ colors, intensity }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
730
- /* @__PURE__ */ jsxRuntime.jsx(
731
- "div",
732
- {
733
- className: "absolute inset-0",
734
- style: {
735
- background: `linear-gradient(135deg, ${colors[0]} 0%, transparent 50%, ${colors[1]} 100%)`,
736
- opacity: intensity.opacity * 0.3
737
- }
738
- }
739
- ),
740
- /* @__PURE__ */ jsxRuntime.jsx(
741
- "div",
742
- {
743
- className: lib.cn("absolute inset-0", intensity.blur),
744
- style: {
745
- background: `linear-gradient(110deg,
746
- transparent 0%,
747
- ${colors[0]} 20%,
748
- ${colors[2] || colors[0]} 35%,
749
- ${colors[1]} 50%,
750
- ${colors[3] || colors[1]} 65%,
751
- ${colors[0]} 80%,
752
- transparent 100%
753
- )`,
754
- opacity: intensity.opacity,
755
- animation: "aurora-shift 15s ease-in-out infinite",
756
- transform: `translateY(-30%) scaleY(${intensity.scale})`
757
- }
758
- }
759
- ),
760
- /* @__PURE__ */ jsxRuntime.jsx(
761
- "div",
762
- {
763
- className: lib.cn("absolute inset-0", intensity.blur),
764
- style: {
765
- background: `linear-gradient(70deg,
766
- transparent 0%,
767
- ${colors[1]} 25%,
768
- ${colors[2] || colors[0]} 50%,
769
- ${colors[0]} 75%,
770
- transparent 100%
771
- )`,
772
- opacity: intensity.opacity * 0.7,
773
- animation: "aurora-shift 20s ease-in-out infinite reverse",
774
- animationDelay: "-5s",
775
- transform: `translateY(-20%) scaleY(${intensity.scale * 0.8})`
776
- }
777
- }
778
- ),
779
- /* @__PURE__ */ jsxRuntime.jsx(
780
- "div",
781
- {
782
- className: "absolute inset-0",
783
- style: {
784
- background: `radial-gradient(ellipse 100% 50% at 50% 0%,
785
- ${colors[2] || colors[0]} 0%,
786
- transparent 70%
787
- )`,
788
- opacity: intensity.opacity * 0.4,
789
- animation: "aurora-shimmer 8s ease-in-out infinite"
790
- }
791
- }
792
- )
793
- ] }), "AuroraBorealis");
794
- var MeshGradient = /* @__PURE__ */ __name(({ colors, intensity }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
795
- /* @__PURE__ */ jsxRuntime.jsx(
796
- "div",
797
- {
798
- className: lib.cn("absolute rounded-full", intensity.blur),
799
- style: {
800
- width: "60%",
801
- height: "60%",
802
- top: "-10%",
803
- right: "-10%",
804
- background: `radial-gradient(circle, ${colors[0]} 0%, transparent 70%)`,
805
- opacity: intensity.opacity,
806
- animation: "mesh-float-1 25s ease-in-out infinite",
807
- transform: `scale(${intensity.scale})`
808
- }
809
- }
810
- ),
811
- /* @__PURE__ */ jsxRuntime.jsx(
812
- "div",
813
- {
814
- className: lib.cn("absolute rounded-full", intensity.blur),
815
- style: {
816
- width: "50%",
817
- height: "50%",
818
- bottom: "-5%",
819
- left: "-5%",
820
- background: `radial-gradient(circle, ${colors[1]} 0%, transparent 70%)`,
821
- opacity: intensity.opacity,
822
- animation: "mesh-float-2 30s ease-in-out infinite",
823
- transform: `scale(${intensity.scale})`
824
- }
825
- }
826
- ),
827
- /* @__PURE__ */ jsxRuntime.jsx(
828
- "div",
829
- {
830
- className: lib.cn("absolute rounded-full", intensity.blur),
831
- style: {
832
- width: "40%",
833
- height: "40%",
834
- top: "30%",
835
- left: "25%",
836
- background: `radial-gradient(circle, ${colors[2] || colors[0]} 0%, transparent 70%)`,
837
- opacity: intensity.opacity * 0.8,
838
- animation: "mesh-float-3 20s ease-in-out infinite",
839
- transform: `scale(${intensity.scale})`
840
- }
841
- }
842
- ),
843
- colors[3] && /* @__PURE__ */ jsxRuntime.jsx(
844
- "div",
845
- {
846
- className: lib.cn("absolute rounded-full", intensity.blur),
847
- style: {
848
- width: "35%",
849
- height: "35%",
850
- bottom: "20%",
851
- right: "15%",
852
- background: `radial-gradient(circle, ${colors[3]} 0%, transparent 70%)`,
853
- opacity: intensity.opacity * 0.6,
854
- animation: "mesh-float-4 22s ease-in-out infinite",
855
- transform: `scale(${intensity.scale})`
856
- }
857
- }
858
- )
859
- ] }), "MeshGradient");
860
- var FloatingOrbs = /* @__PURE__ */ __name(({ colors, intensity }) => {
861
- const orbs = React5.useMemo(() => {
862
- return Array.from({ length: 12 }).map((_, i) => ({
863
- id: i,
864
- size: 60 + i % 4 * 40,
865
- x: i * 23 % 100,
866
- y: i * 31 % 100,
867
- color: colors[i % colors.length],
868
- duration: 15 + i % 5 * 5,
869
- delay: i * 1.5
870
- }));
871
- }, [colors]);
872
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: orbs.map((orb) => /* @__PURE__ */ jsxRuntime.jsx(
873
- "div",
874
- {
875
- className: lib.cn("absolute rounded-full", intensity.blur),
876
- style: {
877
- width: `${orb.size * intensity.scale}px`,
878
- height: `${orb.size * intensity.scale}px`,
879
- left: `${orb.x}%`,
880
- top: `${orb.y}%`,
881
- background: `radial-gradient(circle at 30% 30%, ${orb.color}, transparent 70%)`,
882
- opacity: intensity.opacity * (0.5 + orb.id % 3 * 0.2),
883
- animation: `orb-float-${orb.id % 4 + 1} ${orb.duration}s ease-in-out infinite`,
884
- animationDelay: `${orb.delay}s`
885
- }
886
- },
887
- orb.id
888
- )) });
889
- }, "FloatingOrbs");
890
- var GeometricFlow = /* @__PURE__ */ __name(({ colors, intensity }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
891
- /* @__PURE__ */ jsxRuntime.jsx(
892
- "div",
893
- {
894
- className: "absolute inset-0",
895
- style: {
896
- background: `linear-gradient(135deg,
897
- ${colors[0]} 0%,
898
- transparent 30%,
899
- transparent 70%,
900
- ${colors[1]} 100%
901
- )`,
902
- opacity: intensity.opacity * 0.3
903
- }
904
- }
905
- ),
906
- /* @__PURE__ */ jsxRuntime.jsx(
907
- "div",
908
- {
909
- className: "absolute inset-0",
910
- style: {
911
- backgroundImage: `
912
- linear-gradient(${colors[0]}20 1px, transparent 1px),
913
- linear-gradient(90deg, ${colors[0]}20 1px, transparent 1px)
914
- `,
915
- backgroundSize: "60px 60px",
916
- animation: "grid-drift 30s linear infinite",
917
- opacity: intensity.opacity
918
- }
919
- }
920
- ),
921
- /* @__PURE__ */ jsxRuntime.jsx(
922
- "div",
923
- {
924
- className: "absolute inset-0",
925
- style: {
926
- backgroundImage: `repeating-linear-gradient(
927
- 45deg,
928
- transparent,
929
- transparent 80px,
930
- ${colors[2] || colors[0]}10 80px,
931
- ${colors[2] || colors[0]}10 82px
932
- )`,
933
- animation: "diagonal-shift 20s linear infinite",
934
- opacity: intensity.opacity
935
- }
936
- }
937
- ),
938
- /* @__PURE__ */ jsxRuntime.jsx(
939
- "div",
940
- {
941
- className: lib.cn("absolute rounded-full", intensity.blur),
942
- style: {
943
- width: "40%",
944
- height: "40%",
945
- top: "20%",
946
- left: "50%",
947
- transform: "translateX(-50%)",
948
- background: `radial-gradient(circle, ${colors[0]} 0%, transparent 70%)`,
949
- opacity: intensity.opacity * 0.5,
950
- animation: "pulse-glow 8s ease-in-out infinite"
951
- }
952
- }
953
- )
954
- ] }), "GeometricFlow");
955
- var LiquidGradient = /* @__PURE__ */ __name(({ colors, intensity }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
956
- /* @__PURE__ */ jsxRuntime.jsx(
957
- "div",
958
- {
959
- className: "absolute inset-0",
960
- style: {
961
- background: `linear-gradient(180deg,
962
- transparent 0%,
963
- ${colors[0]}15 30%,
964
- ${colors[1]}20 50%,
965
- ${colors[2] || colors[0]}15 70%,
966
- transparent 100%
967
- )`,
968
- opacity: intensity.opacity
969
- }
970
- }
971
- ),
972
- /* @__PURE__ */ jsxRuntime.jsx(
973
- "div",
974
- {
975
- className: lib.cn("absolute", intensity.blur),
976
- style: {
977
- width: "120%",
978
- height: "50%",
979
- bottom: "-10%",
980
- left: "-10%",
981
- background: `linear-gradient(90deg,
982
- ${colors[0]} 0%,
983
- ${colors[1]} 33%,
984
- ${colors[2] || colors[0]} 66%,
985
- ${colors[0]} 100%
986
- )`,
987
- opacity: intensity.opacity,
988
- borderRadius: "50% 50% 0 0",
989
- animation: "liquid-flow-1 12s ease-in-out infinite",
990
- transform: `scaleY(${intensity.scale})`
991
- }
992
- }
993
- ),
994
- /* @__PURE__ */ jsxRuntime.jsx(
995
- "div",
996
- {
997
- className: lib.cn("absolute", intensity.blur),
998
- style: {
999
- width: "100%",
1000
- height: "40%",
1001
- bottom: "-5%",
1002
- left: "0",
1003
- background: `linear-gradient(90deg,
1004
- ${colors[1]} 0%,
1005
- ${colors[2] || colors[0]} 50%,
1006
- ${colors[3] || colors[1]} 100%
1007
- )`,
1008
- opacity: intensity.opacity * 0.8,
1009
- borderRadius: "60% 40% 0 0",
1010
- animation: "liquid-flow-2 15s ease-in-out infinite",
1011
- transform: `scaleY(${intensity.scale * 0.9})`
1012
- }
1013
- }
1014
- ),
1015
- Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
1016
- "div",
1017
- {
1018
- className: "absolute rounded-full",
1019
- style: {
1020
- width: `${12 + i * 4}px`,
1021
- height: `${12 + i * 4}px`,
1022
- left: `${15 + i * 15}%`,
1023
- bottom: "10%",
1024
- background: `radial-gradient(circle at 30% 30%,
1025
- ${colors[i % colors.length]}80,
1026
- ${colors[i % colors.length]}20
1027
- )`,
1028
- border: `1px solid ${colors[i % colors.length]}40`,
1029
- opacity: intensity.opacity,
1030
- animation: `bubble-float ${8 + i * 2}s ease-in-out infinite`,
1031
- animationDelay: `${i * 2}s`
1032
- }
1033
- },
1034
- i
1035
- ))
1036
- ] }), "LiquidGradient");
1037
- var Spotlight = /* @__PURE__ */ __name(({ colors, intensity }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1038
- /* @__PURE__ */ jsxRuntime.jsx(
1039
- "div",
1040
- {
1041
- className: lib.cn("absolute", intensity.blur),
1042
- style: {
1043
- width: "80%",
1044
- height: "80%",
1045
- top: "-20%",
1046
- left: "50%",
1047
- transform: "translateX(-50%)",
1048
- background: `conic-gradient(from 180deg at 50% 50%,
1049
- ${colors[0]} 0deg,
1050
- ${colors[1]} 60deg,
1051
- ${colors[2] || colors[0]} 120deg,
1052
- ${colors[3] || colors[1]} 180deg,
1053
- ${colors[0]} 240deg,
1054
- ${colors[1]} 300deg,
1055
- ${colors[0]} 360deg
1056
- )`,
1057
- opacity: intensity.opacity,
1058
- animation: "spotlight-rotate 30s linear infinite"
1059
- }
1060
- }
1061
- ),
1062
- /* @__PURE__ */ jsxRuntime.jsx(
1063
- "div",
1064
- {
1065
- className: "absolute inset-0",
1066
- style: {
1067
- background: `radial-gradient(circle at 50% 30%,
1068
- transparent 0%,
1069
- hsl(var(--background)) 70%
1070
- )`
1071
- }
1072
- }
1073
- ),
1074
- /* @__PURE__ */ jsxRuntime.jsx(
1075
- "div",
1076
- {
1077
- className: lib.cn("absolute rounded-full", intensity.blur),
1078
- style: {
1079
- width: "50%",
1080
- height: "50%",
1081
- top: "10%",
1082
- left: "25%",
1083
- background: `radial-gradient(circle, ${colors[0]} 0%, transparent 70%)`,
1084
- opacity: intensity.opacity * 0.5,
1085
- animation: "pulse-glow 6s ease-in-out infinite"
1086
- }
1087
- }
1088
- )
1089
- ] }), "Spotlight");
1090
- var AnimationStyles = /* @__PURE__ */ __name(() => /* @__PURE__ */ jsxRuntime.jsx("style", { children: `
1091
- @keyframes aurora-shift {
1092
- 0%, 100% {
1093
- transform: translateX(-10%) translateY(-30%) scaleX(1.1);
1094
- }
1095
- 50% {
1096
- transform: translateX(10%) translateY(-25%) scaleX(0.9);
1097
- }
1098
- }
1099
-
1100
- @keyframes aurora-shimmer {
1101
- 0%, 100% {
1102
- opacity: 0.2;
1103
- transform: scale(1);
1104
- }
1105
- 50% {
1106
- opacity: 0.4;
1107
- transform: scale(1.05);
1108
- }
1109
- }
1110
-
1111
- @keyframes mesh-float-1 {
1112
- 0%, 100% { transform: translate(0, 0) scale(1); }
1113
- 25% { transform: translate(-5%, 10%) scale(1.05); }
1114
- 50% { transform: translate(5%, 5%) scale(0.95); }
1115
- 75% { transform: translate(-3%, -5%) scale(1.02); }
1116
- }
1117
-
1118
- @keyframes mesh-float-2 {
1119
- 0%, 100% { transform: translate(0, 0) scale(1); }
1120
- 33% { transform: translate(8%, -8%) scale(1.08); }
1121
- 66% { transform: translate(-6%, 6%) scale(0.92); }
1122
- }
1123
-
1124
- @keyframes mesh-float-3 {
1125
- 0%, 100% { transform: translate(0, 0) scale(1); }
1126
- 50% { transform: translate(10%, 10%) scale(1.1); }
1127
- }
1128
-
1129
- @keyframes mesh-float-4 {
1130
- 0%, 100% { transform: translate(0, 0) scale(1); }
1131
- 25% { transform: translate(5%, -10%) scale(0.95); }
1132
- 75% { transform: translate(-8%, 5%) scale(1.05); }
1133
- }
1134
-
1135
- @keyframes orb-float-1 {
1136
- 0%, 100% { transform: translate(0, 0); }
1137
- 50% { transform: translate(30px, -40px); }
1138
- }
1139
-
1140
- @keyframes orb-float-2 {
1141
- 0%, 100% { transform: translate(0, 0); }
1142
- 50% { transform: translate(-25px, 35px); }
1143
- }
1144
-
1145
- @keyframes orb-float-3 {
1146
- 0%, 100% { transform: translate(0, 0); }
1147
- 33% { transform: translate(40px, 20px); }
1148
- 66% { transform: translate(-20px, -30px); }
1149
- }
1150
-
1151
- @keyframes orb-float-4 {
1152
- 0%, 100% { transform: translate(0, 0); }
1153
- 25% { transform: translate(-35px, -25px); }
1154
- 75% { transform: translate(25px, 40px); }
1155
- }
1156
-
1157
- @keyframes grid-drift {
1158
- 0% { transform: translate(0, 0); }
1159
- 100% { transform: translate(60px, 60px); }
1160
- }
1161
-
1162
- @keyframes diagonal-shift {
1163
- 0% { transform: translateX(0); }
1164
- 100% { transform: translateX(160px); }
1165
- }
1166
-
1167
- @keyframes pulse-glow {
1168
- 0%, 100% { opacity: 0.3; transform: translateX(-50%) scale(1); }
1169
- 50% { opacity: 0.6; transform: translateX(-50%) scale(1.1); }
1170
- }
1171
-
1172
- @keyframes liquid-flow-1 {
1173
- 0%, 100% {
1174
- transform: translateY(0) scaleX(1);
1175
- border-radius: 50% 50% 0 0;
1176
- }
1177
- 25% {
1178
- transform: translateY(-30px) scaleX(1.05);
1179
- border-radius: 45% 55% 0 0;
1180
- }
1181
- 50% {
1182
- transform: translateY(-50px) scaleX(0.95);
1183
- border-radius: 55% 45% 0 0;
1184
- }
1185
- 75% {
1186
- transform: translateY(-25px) scaleX(1.02);
1187
- border-radius: 48% 52% 0 0;
1188
- }
1189
- }
1190
-
1191
- @keyframes liquid-flow-2 {
1192
- 0%, 100% {
1193
- transform: translateY(0) scaleX(1);
1194
- border-radius: 60% 40% 0 0;
1195
- }
1196
- 33% {
1197
- transform: translateY(-40px) scaleX(1.08);
1198
- border-radius: 40% 60% 0 0;
1199
- }
1200
- 66% {
1201
- transform: translateY(-60px) scaleX(0.92);
1202
- border-radius: 55% 45% 0 0;
1203
- }
1204
- }
1205
-
1206
- @keyframes bubble-float {
1207
- 0%, 100% {
1208
- transform: translateY(0) scale(1);
1209
- opacity: 0.6;
1210
- }
1211
- 50% {
1212
- transform: translateY(-100px) scale(1.2);
1213
- opacity: 0.3;
1214
- }
1215
- }
1216
-
1217
- @keyframes spotlight-rotate {
1218
- 0% { transform: translateX(-50%) rotate(0deg); }
1219
- 100% { transform: translateX(-50%) rotate(360deg); }
1220
- }
1221
- ` }), "AnimationStyles");
1222
- var darkThemeVars = {
1223
- // Base HSL values
1224
- "--background": "0 0% 4%",
1225
- "--foreground": "0 0% 98%",
1226
- "--card": "0 0% 8%",
1227
- "--card-foreground": "0 0% 98%",
1228
- "--popover": "0 0% 12%",
1229
- "--popover-foreground": "0 0% 98%",
1230
- "--primary": "217 91% 60%",
1231
- "--primary-foreground": "0 0% 100%",
1232
- "--secondary": "0 0% 98%",
1233
- "--secondary-foreground": "0 0% 9%",
1234
- "--muted": "0 0% 10%",
1235
- "--muted-foreground": "0 0% 60%",
1236
- "--accent": "0 0% 15%",
1237
- "--accent-foreground": "0 0% 98%",
1238
- "--destructive": "0 84% 60%",
1239
- "--destructive-foreground": "0 0% 98%",
1240
- "--border": "0 0% 15%",
1241
- "--input": "0 0% 15%",
1242
- "--ring": "217 91% 60%",
1243
- // Tailwind color tokens (used by bg-*, text-*, etc)
1244
- "--color-background": "hsl(0 0% 4%)",
1245
- "--color-foreground": "hsl(0 0% 98%)",
1246
- "--color-card": "hsl(0 0% 8%)",
1247
- "--color-card-foreground": "hsl(0 0% 98%)",
1248
- "--color-primary": "hsl(217 91% 60%)",
1249
- "--color-primary-foreground": "hsl(0 0% 100%)",
1250
- "--color-secondary": "hsl(0 0% 98%)",
1251
- "--color-secondary-foreground": "hsl(0 0% 9%)",
1252
- "--color-muted": "hsl(0 0% 10%)",
1253
- "--color-muted-foreground": "hsl(0 0% 60%)",
1254
- "--color-accent": "hsl(0 0% 15%)",
1255
- "--color-accent-foreground": "hsl(0 0% 98%)",
1256
- "--color-destructive": "hsl(0 84% 60%)",
1257
- "--color-destructive-foreground": "hsl(0 0% 98%)",
1258
- "--color-border": "hsl(0 0% 15%)",
1259
- "--color-input": "hsl(0 0% 15%)",
1260
- "--color-ring": "hsl(217 91% 60%)"
1261
- };
1262
- var lightThemeVars = {
1263
- // Base HSL values
1264
- "--background": "0 0% 96%",
1265
- "--foreground": "0 0% 9%",
1266
- "--card": "0 0% 100%",
1267
- "--card-foreground": "0 0% 9%",
1268
- "--popover": "0 0% 100%",
1269
- "--popover-foreground": "0 0% 9%",
1270
- "--primary": "217 91% 60%",
1271
- "--primary-foreground": "0 0% 100%",
1272
- "--secondary": "0 0% 9%",
1273
- "--secondary-foreground": "0 0% 98%",
1274
- "--muted": "0 0% 96%",
1275
- "--muted-foreground": "0 0% 40%",
1276
- "--accent": "0 0% 92%",
1277
- "--accent-foreground": "0 0% 9%",
1278
- "--destructive": "0 84% 60%",
1279
- "--destructive-foreground": "0 0% 98%",
1280
- "--border": "0 0% 90%",
1281
- "--input": "0 0% 90%",
1282
- "--ring": "217 91% 60%",
1283
- // Tailwind color tokens (used by bg-*, text-*, etc)
1284
- "--color-background": "hsl(0 0% 96%)",
1285
- "--color-foreground": "hsl(0 0% 9%)",
1286
- "--color-card": "hsl(0 0% 100%)",
1287
- "--color-card-foreground": "hsl(0 0% 9%)",
1288
- "--color-primary": "hsl(217 91% 60%)",
1289
- "--color-primary-foreground": "hsl(0 0% 100%)",
1290
- "--color-secondary": "hsl(0 0% 9%)",
1291
- "--color-secondary-foreground": "hsl(0 0% 98%)",
1292
- "--color-muted": "hsl(0 0% 96%)",
1293
- "--color-muted-foreground": "hsl(0 0% 40%)",
1294
- "--color-accent": "hsl(0 0% 92%)",
1295
- "--color-accent-foreground": "hsl(0 0% 9%)",
1296
- "--color-destructive": "hsl(0 84% 60%)",
1297
- "--color-destructive-foreground": "hsl(0 0% 98%)",
1298
- "--color-border": "hsl(0 0% 90%)",
1299
- "--color-input": "hsl(0 0% 90%)",
1300
- "--color-ring": "hsl(217 91% 60%)"
1301
- };
1302
- function ForceTheme({ theme, children, className }) {
1303
- const themeVars = theme === "dark" ? darkThemeVars : lightThemeVars;
1304
- return /* @__PURE__ */ jsxRuntime.jsx(
1305
- "div",
1306
- {
1307
- className: lib.cn(theme, className),
1308
- style: themeVars,
1309
- children
1310
- }
1311
- );
1312
- }
1313
- __name(ForceTheme, "ForceTheme");
1314
- var BACKGROUND_VARIANTS = [
1315
- "aurora-borealis",
1316
- "mesh-gradient",
1317
- "floating-orbs",
1318
- "geometric-flow",
1319
- "liquid-gradient",
1320
- "spotlight",
1321
- "none"
1322
- ];
1323
- var VARIANT_LABELS = {
1324
- "aurora-borealis": "Aurora Borealis",
1325
- "mesh-gradient": "Mesh Gradient",
1326
- "floating-orbs": "Floating Orbs",
1327
- "geometric-flow": "Geometric Flow",
1328
- "liquid-gradient": "Liquid Gradient",
1329
- "spotlight": "Spotlight",
1330
- "none": "None",
1331
- // Legacy labels for backwards compatibility
1332
- "gradient-mesh": "Gradient Mesh",
1333
- "dot-matrix": "Dot Matrix",
1334
- "grid-lines": "Grid Lines",
1335
- "aurora": "Aurora",
1336
- "particles": "Particles",
1337
- "waves": "Waves"
1338
- };
1339
- var SuperHero = /* @__PURE__ */ __name(({
1340
- badge,
1341
- title,
1342
- titleGradient,
1343
- subtitle,
1344
- features = [],
1345
- primaryAction,
1346
- secondaryAction,
1347
- stats = [],
1348
- floatingElements,
1349
- backgroundVariant = "mesh-gradient",
1350
- backgroundIntensity = "medium",
1351
- showBackgroundSwitcher = false,
1352
- codeCommand,
1353
- codeCommands,
1354
- className
1355
- }) => {
1356
- const [currentVariant, setCurrentVariant] = React5__default.default.useState(backgroundVariant);
1357
- const [isMenuOpen, setIsMenuOpen] = React5__default.default.useState(false);
1358
- const [heroTheme, setHeroTheme] = React5__default.default.useState("dark");
1359
- const commands = React5__default.default.useMemo(() => {
1360
- if (codeCommands && codeCommands.length > 0) return codeCommands;
1361
- if (codeCommand) return [codeCommand];
1362
- return [];
1363
- }, [codeCommand, codeCommands]);
1364
- const titleLines = React5__default.default.useMemo(() => title.split("\n"), [title]);
1365
- const cycleBackground = /* @__PURE__ */ __name(() => {
1366
- const currentIndex = BACKGROUND_VARIANTS.indexOf(currentVariant);
1367
- const nextIndex = (currentIndex + 1) % BACKGROUND_VARIANTS.length;
1368
- setCurrentVariant(BACKGROUND_VARIANTS[nextIndex]);
1369
- }, "cycleBackground");
1370
- return /* @__PURE__ */ jsxRuntime.jsx(ForceTheme, { theme: heroTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
1371
- "section",
1372
- {
1373
- className: lib.cn(
1374
- "relative overflow-hidden bg-background text-foreground z-0 isolate",
1375
- className
1376
- ),
1377
- children: [
1378
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 -z-10", children: /* @__PURE__ */ jsxRuntime.jsx(AnimatedBackground, { variant: currentVariant, intensity: backgroundIntensity }) }),
1379
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-20 sm:py-24 lg:py-32 relative z-10", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
1380
- badge && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-2 px-4 py-2 bg-primary/10 text-primary rounded-full text-sm font-medium mb-6 border border-primary/20 hover:bg-primary/20 transition-all duration-300", children: [
1381
- badge.icon || /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "w-4 h-4" }),
1382
- badge.text
1383
- ] }),
1384
- /* @__PURE__ */ jsxRuntime.jsxs("h1", { className: "text-4xl sm:text-5xl lg:text-6xl xl:text-7xl font-bold text-foreground mb-6 leading-tight", children: [
1385
- titleLines.map((line, index) => /* @__PURE__ */ jsxRuntime.jsxs(React5__default.default.Fragment, { children: [
1386
- line,
1387
- index < titleLines.length - 1 && /* @__PURE__ */ jsxRuntime.jsx("br", {})
1388
- ] }, index)),
1389
- titleGradient && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1390
- /* @__PURE__ */ jsxRuntime.jsx("br", {}),
1391
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "bg-gradient-to-r from-primary via-primary/80 to-secondary bg-clip-text text-transparent animate-pulse", children: titleGradient })
1392
- ] })
1393
- ] }),
1394
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xl sm:text-2xl lg:text-3xl text-muted-foreground mb-8 max-w-4xl mx-auto leading-relaxed", children: subtitle }),
1395
- commands.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col items-center gap-2 mb-8", children: commands.map((cmd, index) => /* @__PURE__ */ jsxRuntime.jsxs(
1396
- "div",
1397
- {
1398
- className: "inline-flex items-center gap-3 px-6 py-3 bg-background/50 backdrop-blur-md border border-primary/20 rounded-xl shadow-lg hover:border-primary/40 transition-colors group",
1399
- children: [
1400
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground font-mono text-sm select-none", children: "$" }),
1401
- /* @__PURE__ */ jsxRuntime.jsx("code", { className: "font-mono text-lg text-primary font-semibold", children: cmd }),
1402
- /* @__PURE__ */ jsxRuntime.jsx(
1403
- components.CopyButton,
1404
- {
1405
- value: cmd,
1406
- variant: "ghost",
1407
- className: "p-1.5 h-auto rounded-md bg-primary/10 text-primary hover:bg-primary hover:text-primary-foreground transition-colors",
1408
- iconClassName: "w-4 h-4"
1409
- }
1410
- )
1411
- ]
1412
- },
1413
- index
1414
- )) }),
1415
- features.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap justify-center gap-6 mb-8", children: features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
1416
- "div",
1417
- {
1418
- className: "flex items-center gap-2 text-sm text-muted-foreground bg-card/50 px-4 py-2 rounded-full border border-border/50 hover:border-primary/30 hover:bg-card transition-all duration-300",
1419
- children: [
1420
- feature.icon,
1421
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: feature.text })
1422
- ]
1423
- },
1424
- index
1425
- )) }),
1426
- (primaryAction || secondaryAction) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row gap-4 justify-center mb-12", children: [
1427
- primaryAction && /* @__PURE__ */ jsxRuntime.jsxs(
1428
- components.ButtonLink,
1429
- {
1430
- href: primaryAction.href || "#",
1431
- onClick: primaryAction.onClick,
1432
- size: "huge",
1433
- className: "group",
1434
- children: [
1435
- primaryAction.label,
1436
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRight, { className: "group-hover:translate-x-1 transition-transform duration-300" })
1437
- ]
1438
- }
1439
- ),
1440
- secondaryAction && /* @__PURE__ */ jsxRuntime.jsxs(
1441
- components.ButtonLink,
1442
- {
1443
- href: secondaryAction.href || "#",
1444
- onClick: secondaryAction.onClick,
1445
- variant: "outline",
1446
- size: "huge",
1447
- className: "group",
1448
- children: [
1449
- secondaryAction.label,
1450
- secondaryAction.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "group-hover:rotate-12 transition-transform duration-300", children: secondaryAction.icon })
1451
- ]
1452
- }
1453
- )
1454
- ] }),
1455
- stats.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap justify-center gap-x-6 gap-y-3 md:gap-x-8 md:gap-y-4 max-w-3xl mx-auto", children: stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsxs(
1456
- "div",
1457
- {
1458
- className: "text-center min-w-[80px] md:min-w-[100px] px-4 py-2 md:px-5 md:py-3 rounded-lg border border-foreground/8 bg-background/10 backdrop-blur-sm",
1459
- children: [
1460
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-lg md:text-xl font-bold text-foreground mb-0.5 md:mb-1", children: stat.number }),
1461
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] md:text-xs text-foreground/50 uppercase tracking-wide", children: stat.label })
1462
- ]
1463
- },
1464
- index
1465
- )) })
1466
- ] }) }),
1467
- floatingElements,
1468
- /* @__PURE__ */ jsxRuntime.jsx(
1469
- components.Sticky,
1470
- {
1471
- bottom: true,
1472
- offsetBottom: 32,
1473
- className: "w-full flex justify-center pointer-events-none",
1474
- zIndex: 50,
1475
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-2 px-4 py-2 bg-background/90 backdrop-blur-md border border-border rounded-full shadow-lg pointer-events-auto", children: [
1476
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground font-medium", children: VARIANT_LABELS[currentVariant] || currentVariant }),
1477
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-px h-4 bg-border" }),
1478
- /* @__PURE__ */ jsxRuntime.jsxs(components.Tooltip, { children: [
1479
- /* @__PURE__ */ jsxRuntime.jsx(components.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
1480
- components.Button,
1481
- {
1482
- size: "sm",
1483
- variant: "ghost",
1484
- onClick: cycleBackground,
1485
- className: "h-7 w-7 p-0",
1486
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wand2, { className: "w-3.5 h-3.5" })
1487
- }
1488
- ) }),
1489
- /* @__PURE__ */ jsxRuntime.jsx(components.TooltipContent, { children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Cycle background" }) })
1490
- ] }),
1491
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
1492
- isMenuOpen && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 bg-card border border-border rounded-lg shadow-xl p-2 min-w-[180px]", children: [
1493
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs font-semibold text-muted-foreground mb-2 px-2", children: "Background Style" }),
1494
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1", children: BACKGROUND_VARIANTS.map((variant) => /* @__PURE__ */ jsxRuntime.jsx(
1495
- "button",
1496
- {
1497
- onClick: () => {
1498
- setCurrentVariant(variant);
1499
- setIsMenuOpen(false);
1500
- },
1501
- className: lib.cn(
1502
- "w-full text-left px-3 py-2 rounded-md text-sm transition-colors",
1503
- currentVariant === variant ? "bg-primary text-primary-foreground" : "hover:bg-accent hover:text-accent-foreground"
1504
- ),
1505
- children: VARIANT_LABELS[variant] || variant
1506
- },
1507
- variant
1508
- )) })
1509
- ] }),
1510
- /* @__PURE__ */ jsxRuntime.jsxs(components.Tooltip, { children: [
1511
- /* @__PURE__ */ jsxRuntime.jsx(components.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
1512
- components.Button,
1513
- {
1514
- size: "sm",
1515
- variant: "ghost",
1516
- onClick: () => setIsMenuOpen(!isMenuOpen),
1517
- className: "h-7 w-7 p-0",
1518
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "w-3.5 h-3.5" })
1519
- }
1520
- ) }),
1521
- /* @__PURE__ */ jsxRuntime.jsx(components.TooltipContent, { children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Choose background" }) })
1522
- ] })
1523
- ] })
1524
- ] })
1525
- }
1526
- )
1527
- ]
1528
- }
1529
- ) });
1530
- }, "SuperHero");
1531
- var TestimonialSection = /* @__PURE__ */ __name(({
1532
- title,
1533
- subtitle,
1534
- testimonials,
1535
- columns = 3,
1536
- className,
1537
- background = "dark"
1538
- }) => {
1539
- const gridClasses = {
1540
- 1: "grid-cols-1 max-w-4xl mx-auto",
1541
- 2: "grid-cols-1 md:grid-cols-2",
1542
- 3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
1543
- };
1544
- const backgroundClasses = {
1545
- dark: "bg-background",
1546
- card: "bg-muted/30",
1547
- gradient: "bg-gradient-to-b from-background via-muted/10 to-background"
1548
- };
1549
- const renderStars = /* @__PURE__ */ __name((rating) => {
1550
- return Array.from({ length: 5 }, (_, i) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: i < rating ? "text-yellow-400" : "text-neutral-400", children: "\u2605" }, i));
1551
- }, "renderStars");
1552
- return /* @__PURE__ */ jsxRuntime.jsx("section", { className: lib.cn(
1553
- "relative py-16 sm:py-20 md:py-24 lg:py-32",
1554
- backgroundClasses[background],
1555
- className
1556
- ), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "container max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
1557
- (title || subtitle) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center mb-12 sm:mb-14 md:mb-16", children: [
1558
- title && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-3xl sm:text-4xl md:text-5xl lg:text-6xl font-bold text-foreground mb-4 sm:mb-6", children: title }),
1559
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-lg sm:text-xl text-muted-foreground max-w-3xl mx-auto", children: subtitle })
1560
- ] }),
1561
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: lib.cn("grid gap-6 sm:gap-8", gridClasses[columns]), children: testimonials.map((testimonial, index) => /* @__PURE__ */ jsxRuntime.jsx(
1562
- components.Card,
1563
- {
1564
- className: "h-full hover:shadow-lg transition-all duration-300 backdrop-blur-sm border-border/50 hover:border-primary/30 group",
1565
- children: /* @__PURE__ */ jsxRuntime.jsxs(components.CardContent, { className: "p-8", children: [
1566
- testimonial.rating && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex mb-6 text-lg", children: renderStars(testimonial.rating) }),
1567
- /* @__PURE__ */ jsxRuntime.jsxs("blockquote", { className: "text-foreground mb-8 italic text-lg leading-relaxed group-hover:text-primary transition-colors duration-300", children: [
1568
- '"',
1569
- testimonial.content,
1570
- '"'
1571
- ] }),
1572
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center", children: [
1573
- testimonial.author.avatar && /* @__PURE__ */ jsxRuntime.jsx(
1574
- "img",
1575
- {
1576
- src: testimonial.author.avatar,
1577
- alt: testimonial.author.name,
1578
- className: "w-14 h-14 rounded-full mr-4 ring-2 ring-primary/20 group-hover:ring-primary/40 transition-all duration-300"
1579
- }
1580
- ),
1581
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1582
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold text-foreground group-hover:text-primary transition-colors duration-300", children: testimonial.author.name }),
1583
- testimonial.author.title && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-sm text-muted-foreground", children: [
1584
- testimonial.author.title,
1585
- testimonial.author.company && ` at ${testimonial.author.company}`
1586
- ] })
1587
- ] })
1588
- ] })
1589
- ] })
1590
- },
1591
- index
1592
- )) })
1593
- ] }) });
1594
- }, "TestimonialSection");
1595
-
1596
- exports.ArticleCard = ArticleCard;
1597
- exports.ArticleList = ArticleList;
1598
- exports.CTASection = CTASection;
1599
- exports.FeatureSection = FeatureSection;
1600
- exports.Hero = Hero;
1601
- exports.NewsletterSection = NewsletterSection;
1602
- exports.SplitHero = SplitHero;
1603
- exports.SplitHeroContent = SplitHeroContent;
1604
- exports.SplitHeroMedia = SplitHeroMedia;
1605
- exports.StatsSection = StatsSection;
1606
- exports.SuperHero = SuperHero;
1607
- exports.TestimonialSection = TestimonialSection;
1608
- //# sourceMappingURL=blocks.cjs.map
1609
- //# sourceMappingURL=blocks.cjs.map