@opensite/ui 2.0.2 → 2.0.4

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 (75) hide show
  1. package/dist/hero-ai-powered-carousel.cjs +152 -77
  2. package/dist/hero-ai-powered-carousel.d.cts +5 -13
  3. package/dist/hero-ai-powered-carousel.d.ts +5 -13
  4. package/dist/hero-ai-powered-carousel.js +152 -77
  5. package/dist/hero-announcement-badge.cjs +679 -665
  6. package/dist/hero-announcement-badge.d.cts +1 -1
  7. package/dist/hero-announcement-badge.d.ts +1 -1
  8. package/dist/hero-announcement-badge.js +689 -675
  9. package/dist/hero-badge-shadow-overlay.cjs +79 -32
  10. package/dist/hero-badge-shadow-overlay.js +80 -33
  11. package/dist/hero-centered-image-grid.cjs +106 -95
  12. package/dist/hero-centered-image-grid.d.cts +2 -14
  13. package/dist/hero-centered-image-grid.d.ts +2 -14
  14. package/dist/hero-centered-image-grid.js +106 -95
  15. package/dist/hero-community-survey-cta.cjs +149 -58
  16. package/dist/hero-community-survey-cta.d.cts +1 -1
  17. package/dist/hero-community-survey-cta.d.ts +1 -1
  18. package/dist/hero-community-survey-cta.js +149 -58
  19. package/dist/hero-design-carousel-portfolio.cjs +158 -66
  20. package/dist/hero-design-carousel-portfolio.d.cts +7 -11
  21. package/dist/hero-design-carousel-portfolio.d.ts +7 -11
  22. package/dist/hero-design-carousel-portfolio.js +158 -66
  23. package/dist/hero-event-registration.cjs +765 -718
  24. package/dist/hero-event-registration.js +761 -714
  25. package/dist/hero-fullscreen-background-image.cjs +746 -649
  26. package/dist/hero-fullscreen-background-image.d.cts +12 -4
  27. package/dist/hero-fullscreen-background-image.d.ts +12 -4
  28. package/dist/hero-fullscreen-background-image.js +746 -649
  29. package/dist/hero-fullscreen-logo-cta.cjs +89 -31
  30. package/dist/hero-fullscreen-logo-cta.js +89 -31
  31. package/dist/hero-gradient-avatars-rating.cjs +847 -816
  32. package/dist/hero-gradient-avatars-rating.d.cts +1 -13
  33. package/dist/hero-gradient-avatars-rating.d.ts +1 -13
  34. package/dist/hero-gradient-avatars-rating.js +844 -813
  35. package/dist/hero-gradient-client-focused.cjs +690 -629
  36. package/dist/hero-gradient-client-focused.d.cts +1 -1
  37. package/dist/hero-gradient-client-focused.d.ts +1 -1
  38. package/dist/hero-gradient-client-focused.js +689 -628
  39. package/dist/hero-grid-pattern-efficiency.cjs +59 -47
  40. package/dist/hero-grid-pattern-efficiency.d.cts +1 -8
  41. package/dist/hero-grid-pattern-efficiency.d.ts +1 -8
  42. package/dist/hero-grid-pattern-efficiency.js +59 -47
  43. package/dist/hero-logo-centered-screenshot.cjs +1 -1
  44. package/dist/hero-logo-centered-screenshot.js +1 -1
  45. package/dist/hero-marketplace-scattered-images.cjs +2 -6
  46. package/dist/hero-marketplace-scattered-images.d.cts +1 -4
  47. package/dist/hero-marketplace-scattered-images.d.ts +1 -4
  48. package/dist/hero-marketplace-scattered-images.js +2 -6
  49. package/dist/hero-pattern-logo-tech-stack.cjs +1 -1
  50. package/dist/hero-pattern-logo-tech-stack.js +1 -1
  51. package/dist/hero-platform-features-grid.cjs +5 -5
  52. package/dist/hero-platform-features-grid.js +5 -5
  53. package/dist/hero-simple-centered-image.cjs +140 -44
  54. package/dist/hero-simple-centered-image.d.cts +1 -1
  55. package/dist/hero-simple-centered-image.d.ts +1 -1
  56. package/dist/hero-simple-centered-image.js +140 -44
  57. package/dist/hero-spiral-pattern-cards.cjs +857 -809
  58. package/dist/hero-spiral-pattern-cards.d.cts +5 -1
  59. package/dist/hero-spiral-pattern-cards.d.ts +5 -1
  60. package/dist/hero-spiral-pattern-cards.js +856 -808
  61. package/dist/hero-split-geometric-shapes.cjs +754 -723
  62. package/dist/hero-split-geometric-shapes.d.cts +5 -1
  63. package/dist/hero-split-geometric-shapes.d.ts +5 -1
  64. package/dist/hero-split-geometric-shapes.js +748 -717
  65. package/dist/hero-task-timer-animated.cjs +698 -650
  66. package/dist/hero-task-timer-animated.d.cts +5 -1
  67. package/dist/hero-task-timer-animated.d.ts +5 -1
  68. package/dist/hero-task-timer-animated.js +697 -649
  69. package/dist/hero-ui-library-showcase.cjs +734 -719
  70. package/dist/hero-ui-library-showcase.d.cts +5 -1
  71. package/dist/hero-ui-library-showcase.d.ts +5 -1
  72. package/dist/hero-ui-library-showcase.js +732 -717
  73. package/dist/registry.cjs +1035 -788
  74. package/dist/registry.js +1035 -788
  75. package/package.json +1 -1
@@ -1,72 +1,16 @@
1
1
  "use client";
2
- import * as React from 'react';
3
- import React__default, { useMemo } from 'react';
4
2
  import { clsx } from 'clsx';
5
3
  import { twMerge } from 'tailwind-merge';
6
4
  import { Slot } from '@radix-ui/react-slot';
7
5
  import { cva } from 'class-variance-authority';
8
6
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
+ import * as React3 from 'react';
8
+ import React3__default from 'react';
9
9
 
10
- // components/blocks/hero/hero-announcement-badge.tsx
10
+ // lib/utils.ts
11
11
  function cn(...inputs) {
12
12
  return twMerge(clsx(inputs));
13
13
  }
14
- function getNestedCardBg(parentBg, variant = "muted", options) {
15
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
16
- if (isDark) {
17
- switch (variant) {
18
- case "muted":
19
- return "bg-background";
20
- case "card":
21
- return "bg-card";
22
- case "accent":
23
- return "bg-accent";
24
- case "subtle":
25
- return "bg-background/50";
26
- }
27
- } else {
28
- switch (variant) {
29
- case "muted":
30
- return "bg-muted";
31
- case "card":
32
- return "bg-card";
33
- case "accent":
34
- return "bg-accent";
35
- case "subtle":
36
- return "bg-muted/50";
37
- }
38
- }
39
- }
40
- function getNestedCardTextColor(parentBg, options) {
41
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
42
- return isDark ? "text-foreground" : "";
43
- }
44
- function getTextColor(parentBg, variant = "default", options) {
45
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
46
- if (isDark) {
47
- switch (variant) {
48
- case "default":
49
- return "text-foreground";
50
- case "muted":
51
- return "text-foreground/80";
52
- case "subtle":
53
- return "text-foreground/60";
54
- case "accent":
55
- return "text-accent-foreground";
56
- }
57
- } else {
58
- switch (variant) {
59
- case "default":
60
- return "text-foreground";
61
- case "muted":
62
- return "text-muted-foreground";
63
- case "subtle":
64
- return "text-muted-foreground/70";
65
- case "accent":
66
- return "text-primary";
67
- }
68
- }
69
- }
70
14
  var badgeVariants = cva(
71
15
  "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
72
16
  {
@@ -78,27 +22,544 @@ var badgeVariants = cva(
78
22
  outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
79
23
  }
80
24
  },
81
- defaultVariants: {
82
- variant: "default"
25
+ defaultVariants: {
26
+ variant: "default"
27
+ }
28
+ }
29
+ );
30
+ function Badge({
31
+ className,
32
+ variant,
33
+ asChild = false,
34
+ ...props
35
+ }) {
36
+ const Comp = asChild ? Slot : "span";
37
+ return /* @__PURE__ */ jsx(
38
+ Comp,
39
+ {
40
+ "data-slot": "badge",
41
+ className: cn(badgeVariants({ variant }), className),
42
+ ...props
43
+ }
44
+ );
45
+ }
46
+ var maxWidthStyles = {
47
+ sm: "max-w-screen-sm",
48
+ md: "max-w-screen-md",
49
+ lg: "max-w-screen-lg",
50
+ xl: "max-w-7xl",
51
+ "2xl": "max-w-screen-2xl",
52
+ "4xl": "max-w-[1536px]",
53
+ full: "max-w-full"
54
+ };
55
+ var Container = React3__default.forwardRef(
56
+ ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
57
+ const Component = as;
58
+ return /* @__PURE__ */ jsx(
59
+ Component,
60
+ {
61
+ ref,
62
+ className: cn(
63
+ "mx-auto w-full px-2 sm:px-4 lg:px-8",
64
+ maxWidthStyles[maxWidth],
65
+ className
66
+ ),
67
+ ...props,
68
+ children
69
+ }
70
+ );
71
+ }
72
+ );
73
+ Container.displayName = "Container";
74
+
75
+ // lib/patternSvgs.ts
76
+ var patternSvgs = {
77
+ squareAltGrid: "https://cdn.ing/assets/files/record/286187/4gpn0yq2ptra8iwlvmwwv860ggwv",
78
+ grid1: "https://cdn.ing/assets/files/record/286186/nbdflpgp4ostrno079hygibsflp3",
79
+ noise: "https://cdn.ing/assets/i/r/286188/zrqcp9hynh3j7p2laihwzfbujgrl/noise.png",
80
+ dots: "https://cdn.ing/assets/files/record/286198/yfsjx9thvtxzhl2qtshxyhkrm524",
81
+ dotPattern: "https://cdn.ing/assets/files/record/286192/7ig0cku8aqbboiza8nuk6hw0nnsr",
82
+ dotPattern2: "https://cdn.ing/assets/files/record/286189/arez6gd2s7isn9i1o6c7sexdq7bl",
83
+ circles: "https://cdn.ing/assets/files/record/286190/gtmia3sncjtzetdshc20zf1d3c17",
84
+ waves: "https://cdn.ing/assets/files/record/286191/mqlb33fzxz9cdth1bx7if0wmpkp1",
85
+ crossPattern: "https://cdn.ing/assets/files/record/286193/9yfqwdbnqaipbp7fsb3wbzzmq472",
86
+ architect: "https://cdn.ing/assets/files/record/286194/vgs88ugpvyhxu13wqgy0acvae6re",
87
+ tinyCheckers: "https://cdn.ing/assets/files/record/286195/65efaknsw8kcpf9o3c2gybytsl5b",
88
+ p6: "https://cdn.ing/assets/i/r/286196/6kl0rqnd6mjk8j7e525fo8fo0vkc/p6.webp"
89
+ };
90
+ var maskTop = "radial-gradient(ellipse 70% 60% at 50% 0%, #000 60%, transparent 100%)";
91
+ var maskBottom = "radial-gradient(ellipse 100% 80% at 50% 100%, #000 50%, transparent 90%)";
92
+ var maskCenter = "radial-gradient(ellipse 60% 60% at 50% 50%, #000 30%, transparent 70%)";
93
+ var maskTopLeft = "radial-gradient(ellipse 80% 80% at 0% 0%, #000 50%, transparent 90%)";
94
+ var maskTopRight = "radial-gradient(ellipse 80% 80% at 100% 0%, #000 50%, transparent 90%)";
95
+ var maskBottomLeft = "radial-gradient(ellipse 80% 80% at 0% 100%, #000 50%, transparent 90%)";
96
+ var maskBottomRight = "radial-gradient(ellipse 80% 80% at 100% 100%, #000 50%, transparent 90%)";
97
+ var circuitBoardPattern = (id, mask) => /* @__PURE__ */ jsxs(
98
+ "svg",
99
+ {
100
+ className: "h-full w-full",
101
+ xmlns: "http://www.w3.org/2000/svg",
102
+ style: mask ? {
103
+ maskImage: mask,
104
+ WebkitMaskImage: mask
105
+ } : void 0,
106
+ children: [
107
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs(
108
+ "pattern",
109
+ {
110
+ id,
111
+ x: "0",
112
+ y: "0",
113
+ width: "100",
114
+ height: "100",
115
+ patternUnits: "userSpaceOnUse",
116
+ children: [
117
+ /* @__PURE__ */ jsx(
118
+ "path",
119
+ {
120
+ d: "M0 50h40M60 50h40M50 0v40M50 60v40",
121
+ stroke: "hsl(var(--muted))",
122
+ strokeWidth: "1",
123
+ fill: "none"
124
+ }
125
+ ),
126
+ /* @__PURE__ */ jsx("circle", { cx: "50", cy: "50", r: "3", fill: "hsl(var(--muted))" }),
127
+ /* @__PURE__ */ jsx("circle", { cx: "0", cy: "50", r: "2", fill: "hsl(var(--muted))" }),
128
+ /* @__PURE__ */ jsx("circle", { cx: "100", cy: "50", r: "2", fill: "hsl(var(--muted))" }),
129
+ /* @__PURE__ */ jsx("circle", { cx: "50", cy: "0", r: "2", fill: "hsl(var(--muted))" }),
130
+ /* @__PURE__ */ jsx("circle", { cx: "50", cy: "100", r: "2", fill: "hsl(var(--muted))" })
131
+ ]
132
+ }
133
+ ) }),
134
+ /* @__PURE__ */ jsx("rect", { width: "100%", height: "100%", fill: `url(#${id})` })
135
+ ]
136
+ }
137
+ );
138
+ var gridDotsPattern = (id, mask) => /* @__PURE__ */ jsxs(
139
+ "svg",
140
+ {
141
+ className: "h-full w-full",
142
+ xmlns: "http://www.w3.org/2000/svg",
143
+ style: mask ? {
144
+ maskImage: mask,
145
+ WebkitMaskImage: mask
146
+ } : void 0,
147
+ children: [
148
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs(
149
+ "pattern",
150
+ {
151
+ id,
152
+ x: "0",
153
+ y: "0",
154
+ width: "40",
155
+ height: "40",
156
+ patternUnits: "userSpaceOnUse",
157
+ children: [
158
+ /* @__PURE__ */ jsx(
159
+ "path",
160
+ {
161
+ d: "M0 20h40M20 0v40",
162
+ stroke: "hsl(var(--muted))",
163
+ strokeWidth: "0.5",
164
+ fill: "none"
165
+ }
166
+ ),
167
+ /* @__PURE__ */ jsx("circle", { cx: "20", cy: "20", r: "2", fill: "hsl(var(--muted))" })
168
+ ]
169
+ }
170
+ ) }),
171
+ /* @__PURE__ */ jsx("rect", { width: "100%", height: "100%", fill: `url(#${id})` })
172
+ ]
173
+ }
174
+ );
175
+ var gridPattern = (size, mask) => /* @__PURE__ */ jsx(
176
+ "div",
177
+ {
178
+ className: "h-full w-full bg-[linear-gradient(to_right,_hsl(var(--muted))_1px,_transparent_1px),linear-gradient(to_bottom,_hsl(var(--muted))_1px,_transparent_1px)]",
179
+ style: {
180
+ backgroundSize: `${size}px ${size}px`,
181
+ ...mask ? {
182
+ maskImage: mask,
183
+ WebkitMaskImage: mask
184
+ } : {}
185
+ }
186
+ }
187
+ );
188
+ var diagonalCrossPattern = (mask) => /* @__PURE__ */ jsx(
189
+ "div",
190
+ {
191
+ className: "h-full w-full",
192
+ style: {
193
+ backgroundImage: "repeating-linear-gradient(45deg, transparent, transparent 32px, hsl(var(--muted)) 32px, hsl(var(--muted)) 33px), repeating-linear-gradient(135deg, transparent, transparent 32px, hsl(var(--muted)) 32px, hsl(var(--muted)) 33px)",
194
+ ...mask ? {
195
+ maskImage: mask,
196
+ WebkitMaskImage: mask
197
+ } : {}
198
+ }
199
+ }
200
+ );
201
+ var dashedGridMaskBase = "repeating-linear-gradient(to right, black 0px, black 3px, transparent 3px, transparent 8px), repeating-linear-gradient(to bottom, black 0px, black 3px, transparent 3px, transparent 8px)";
202
+ var dashedGridPattern = (fadeMask) => {
203
+ const mask = fadeMask ? `${dashedGridMaskBase}, ${fadeMask}` : dashedGridMaskBase;
204
+ return /* @__PURE__ */ jsx(
205
+ "div",
206
+ {
207
+ className: "h-full w-full",
208
+ style: {
209
+ backgroundImage: "linear-gradient(to right, hsl(var(--muted)) 1px, transparent 1px), linear-gradient(to bottom, hsl(var(--muted)) 1px, transparent 1px)",
210
+ backgroundSize: "20px 20px",
211
+ backgroundPosition: "0 0, 0 0",
212
+ maskImage: mask,
213
+ WebkitMaskImage: mask,
214
+ maskComposite: "intersect",
215
+ WebkitMaskComposite: "source-in"
216
+ }
217
+ }
218
+ );
219
+ };
220
+ var gradientGlow = (position) => /* @__PURE__ */ jsx(
221
+ "div",
222
+ {
223
+ className: cn(
224
+ "pointer-events-none absolute left-1/2 z-0 aspect-square w-3/4 -translate-x-1/2 rounded-full opacity-50 blur-3xl",
225
+ position === "top" ? "-top-1/4" : "-bottom-1/4"
226
+ ),
227
+ style: {
228
+ background: "radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)"
229
+ }
230
+ }
231
+ );
232
+ var spotlight = (position) => /* @__PURE__ */ jsx(
233
+ "div",
234
+ {
235
+ className: cn(
236
+ "pointer-events-none absolute top-1/2 z-0 aspect-square w-3/4 -translate-y-1/2 rounded-full opacity-40 blur-3xl",
237
+ position === "left" ? "-left-1/4" : "-right-1/4"
238
+ ),
239
+ style: {
240
+ background: "radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)"
241
+ }
242
+ }
243
+ );
244
+ var patternOverlays = {
245
+ circuitBoardBasic: () => circuitBoardPattern("circuit-board-basic"),
246
+ circuitBoardFadeTop: () => circuitBoardPattern("circuit-board-fade-top", maskTop),
247
+ circuitBoardFadeBottom: () => circuitBoardPattern("circuit-board-fade-bottom", maskBottom),
248
+ circuitBoardFadeCenter: () => circuitBoardPattern("circuit-board-fade-center", maskCenter),
249
+ circuitBoardFadeTopLeft: () => circuitBoardPattern("circuit-board-fade-top-left", maskTopLeft),
250
+ circuitBoardFadeTopRight: () => circuitBoardPattern("circuit-board-fade-top-right", maskTopRight),
251
+ circuitBoardFadeBottomLeft: () => circuitBoardPattern("circuit-board-fade-bottom-left", maskBottomLeft),
252
+ circuitBoardFadeBottomRight: () => circuitBoardPattern("circuit-board-fade-bottom-right", maskBottomRight),
253
+ dashedGridBasic: () => dashedGridPattern(),
254
+ dashedGridFadeTop: () => dashedGridPattern(maskTop),
255
+ dashedGridFadeBottom: () => dashedGridPattern(maskBottom),
256
+ dashedGridFadeCenter: () => dashedGridPattern(maskCenter),
257
+ dashedGridFadeTopLeft: () => dashedGridPattern(maskTopLeft),
258
+ dashedGridFadeTopRight: () => dashedGridPattern(maskTopRight),
259
+ dashedGridFadeBottomLeft: () => dashedGridPattern(maskBottomLeft),
260
+ dashedGridFadeBottomRight: () => dashedGridPattern(maskBottomRight),
261
+ diagonalCrossBasic: () => diagonalCrossPattern(),
262
+ diagonalCrossFadeTop: () => diagonalCrossPattern(maskTop),
263
+ diagonalCrossFadeBottom: () => diagonalCrossPattern(maskBottom),
264
+ diagonalCrossFadeCenter: () => diagonalCrossPattern(maskCenter),
265
+ diagonalCrossFadeTopLeft: () => diagonalCrossPattern(maskTopLeft),
266
+ diagonalCrossFadeTopRight: () => diagonalCrossPattern(maskTopRight),
267
+ diagonalCrossFadeBottomLeft: () => diagonalCrossPattern(maskBottomLeft),
268
+ diagonalCrossFadeBottomRight: () => diagonalCrossPattern(maskBottomRight),
269
+ gridBasic: () => gridPattern(40),
270
+ gridFadeTop: () => gridPattern(32, maskTop),
271
+ gridFadeBottom: () => gridPattern(32, maskBottom),
272
+ gridFadeCenter: () => gridPattern(40, maskCenter),
273
+ gridFadeTopLeft: () => gridPattern(32, maskTopLeft),
274
+ gridFadeTopRight: () => gridPattern(32, maskTopRight),
275
+ gridFadeBottomLeft: () => gridPattern(32, maskBottomLeft),
276
+ gridFadeBottomRight: () => gridPattern(32, maskBottomRight),
277
+ gridDotsBasic: () => gridDotsPattern("grid-dots-basic"),
278
+ gridDotsFadeCenter: () => gridDotsPattern("grid-dots-fade-center", maskCenter),
279
+ gradientGlowTop: () => gradientGlow("top"),
280
+ gradientGlowBottom: () => gradientGlow("bottom"),
281
+ spotlightLeft: () => spotlight("left"),
282
+ spotlightRight: () => spotlight("right")
283
+ };
284
+ var inlinePatternStyles = {
285
+ radialGradientTop: {
286
+ background: "radial-gradient(125% 125% at 50% 10%, hsl(var(--background)) 40%, hsl(var(--primary)) 100%)"
287
+ },
288
+ radialGradientBottom: {
289
+ background: "radial-gradient(125% 125% at 50% 90%, hsl(var(--background)) 40%, hsl(var(--primary)) 100%)"
290
+ }
291
+ };
292
+ function PatternBackground({
293
+ pattern,
294
+ opacity = 0.08,
295
+ className,
296
+ style
297
+ }) {
298
+ if (!pattern) {
299
+ return null;
300
+ }
301
+ if (pattern in inlinePatternStyles) {
302
+ const inlineStyle = inlinePatternStyles[pattern];
303
+ return /* @__PURE__ */ jsx(
304
+ "div",
305
+ {
306
+ className: cn("pointer-events-none absolute inset-0 z-0", className),
307
+ style: { ...inlineStyle, opacity, ...style },
308
+ "aria-hidden": "true"
309
+ }
310
+ );
311
+ }
312
+ if (pattern in patternOverlays) {
313
+ const Overlay = patternOverlays[pattern];
314
+ return /* @__PURE__ */ jsx(
315
+ "div",
316
+ {
317
+ className: cn("pointer-events-none absolute inset-0 z-0", className),
318
+ style: { opacity, ...style },
319
+ "aria-hidden": "true",
320
+ children: Overlay()
321
+ }
322
+ );
323
+ }
324
+ const patternUrl = pattern in patternSvgs ? patternSvgs[pattern] : pattern;
325
+ return /* @__PURE__ */ jsx(
326
+ "div",
327
+ {
328
+ className: cn("pointer-events-none absolute inset-0 z-0", className),
329
+ style: {
330
+ backgroundImage: `url(${patternUrl})`,
331
+ backgroundRepeat: "repeat",
332
+ backgroundSize: "auto",
333
+ opacity,
334
+ ...style
335
+ },
336
+ "aria-hidden": "true"
337
+ }
338
+ );
339
+ }
340
+ var backgroundStyles = {
341
+ default: "bg-background text-foreground",
342
+ white: "bg-white text-dark",
343
+ gray: "bg-muted/30 text-foreground",
344
+ dark: "bg-foreground text-background",
345
+ transparent: "bg-transparent text-foreground",
346
+ gradient: "bg-linear-to-br from-primary via-primary/90 to-foreground text-primary-foreground",
347
+ primary: "bg-primary text-primary-foreground",
348
+ secondary: "bg-secondary text-secondary-foreground",
349
+ muted: "bg-muted text-muted-foreground"
350
+ };
351
+ var spacingStyles = {
352
+ none: "py-0 md:py-0",
353
+ sm: "py-12 md:py-16",
354
+ md: "py-16 md:py-24",
355
+ lg: "py-20 md:py-32",
356
+ xl: "py-24 md:py-40"
357
+ };
358
+ var predefinedSpacings = ["none", "sm", "md", "lg", "xl"];
359
+ var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
360
+ var Section = React3__default.forwardRef(
361
+ ({
362
+ id,
363
+ title,
364
+ subtitle,
365
+ children,
366
+ className,
367
+ style,
368
+ background = "default",
369
+ spacing = "lg",
370
+ pattern,
371
+ patternOpacity,
372
+ patternClassName,
373
+ containerClassName,
374
+ containerMaxWidth = "xl",
375
+ ...props
376
+ }, ref) => {
377
+ const effectivePatternOpacity = patternOpacity !== void 0 ? patternOpacity : pattern ? 1 : 0;
378
+ return /* @__PURE__ */ jsxs(
379
+ "section",
380
+ {
381
+ ref,
382
+ id,
383
+ className: cn(
384
+ "relative",
385
+ pattern ? "overflow-hidden" : null,
386
+ backgroundStyles[background],
387
+ isPredefinedSpacing(spacing) ? spacingStyles[spacing] : spacing,
388
+ className
389
+ ),
390
+ style,
391
+ ...props,
392
+ children: [
393
+ /* @__PURE__ */ jsx(
394
+ PatternBackground,
395
+ {
396
+ pattern,
397
+ opacity: effectivePatternOpacity,
398
+ className: patternClassName
399
+ }
400
+ ),
401
+ /* @__PURE__ */ jsxs(
402
+ Container,
403
+ {
404
+ maxWidth: containerMaxWidth,
405
+ className: cn("relative z-10", containerClassName),
406
+ children: [
407
+ (title || subtitle) && /* @__PURE__ */ jsxs("div", { className: "mb-6 text-center md:mb-16", children: [
408
+ subtitle && /* @__PURE__ */ jsx("p", { className: "mb-2 text-sm font-semibold uppercase tracking-wider", children: subtitle }),
409
+ title && /* @__PURE__ */ jsx("h2", { className: "text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl", children: title })
410
+ ] }),
411
+ children
412
+ ]
413
+ }
414
+ )
415
+ ]
416
+ }
417
+ );
418
+ }
419
+ );
420
+ Section.displayName = "Section";
421
+ var baseStyles = [
422
+ // Layout
423
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
424
+ // Typography - using CSS variables with sensible defaults
425
+ "font-[var(--button-font-family,inherit)]",
426
+ "font-[var(--button-font-weight,500)]",
427
+ "tracking-[var(--button-letter-spacing,0)]",
428
+ "leading-[var(--button-line-height,1.25)]",
429
+ "[text-transform:var(--button-text-transform,none)]",
430
+ "text-sm",
431
+ // Border radius
432
+ "rounded-[var(--button-radius,var(--radius,0.375rem))]",
433
+ // Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
434
+ "[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
435
+ // Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
436
+ "[box-shadow:var(--button-shadow,none)]",
437
+ "hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
438
+ // Disabled state
439
+ "disabled:pointer-events-none disabled:opacity-50",
440
+ // SVG handling
441
+ "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
442
+ // Focus styles
443
+ "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
444
+ // Invalid state
445
+ "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
446
+ ].join(" ");
447
+ var buttonVariants = cva(baseStyles, {
448
+ variants: {
449
+ variant: {
450
+ // Default (Primary) variant - full customization
451
+ default: [
452
+ "bg-[var(--button-default-bg,hsl(var(--primary)))]",
453
+ "text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
454
+ "border-[length:var(--button-default-border-width,0px)]",
455
+ "border-[color:var(--button-default-border,transparent)]",
456
+ "[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
457
+ "hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
458
+ "hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
459
+ "hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
460
+ "hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
461
+ ].join(" "),
462
+ // Destructive variant - full customization
463
+ destructive: [
464
+ "bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
465
+ "text-[var(--button-destructive-fg,white)]",
466
+ "border-[length:var(--button-destructive-border-width,0px)]",
467
+ "border-[color:var(--button-destructive-border,transparent)]",
468
+ "[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
469
+ "hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
470
+ "hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
471
+ "hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
472
+ "hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
473
+ "focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
474
+ "dark:bg-destructive/60"
475
+ ].join(" "),
476
+ // Outline variant - full customization with proper border handling
477
+ outline: [
478
+ "bg-[var(--button-outline-bg,hsl(var(--background)))]",
479
+ "text-[var(--button-outline-fg,inherit)]",
480
+ "border-[length:var(--button-outline-border-width,1px)]",
481
+ "border-[color:var(--button-outline-border,hsl(var(--border)))]",
482
+ "[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
483
+ "hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
484
+ "hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
485
+ "hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
486
+ "hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
487
+ "dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
488
+ ].join(" "),
489
+ // Secondary variant - full customization
490
+ secondary: [
491
+ "bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
492
+ "text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
493
+ "border-[length:var(--button-secondary-border-width,0px)]",
494
+ "border-[color:var(--button-secondary-border,transparent)]",
495
+ "[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
496
+ "hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
497
+ "hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
498
+ "hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
499
+ "hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
500
+ ].join(" "),
501
+ // Ghost variant - full customization
502
+ ghost: [
503
+ "bg-[var(--button-ghost-bg,transparent)]",
504
+ "text-[var(--button-ghost-fg,inherit)]",
505
+ "border-[length:var(--button-ghost-border-width,0px)]",
506
+ "border-[color:var(--button-ghost-border,transparent)]",
507
+ "[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
508
+ "hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
509
+ "hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
510
+ "hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
511
+ "hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
512
+ "dark:hover:bg-accent/50"
513
+ ].join(" "),
514
+ // Link variant - full customization
515
+ link: [
516
+ "bg-[var(--button-link-bg,transparent)]",
517
+ "text-[var(--button-link-fg,hsl(var(--primary)))]",
518
+ "border-[length:var(--button-link-border-width,0px)]",
519
+ "border-[color:var(--button-link-border,transparent)]",
520
+ "[box-shadow:var(--button-link-shadow,none)]",
521
+ "hover:bg-[var(--button-link-hover-bg,transparent)]",
522
+ "hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
523
+ "hover:[box-shadow:var(--button-link-shadow-hover,none)]",
524
+ "underline-offset-4 hover:underline"
525
+ ].join(" ")
526
+ },
527
+ size: {
528
+ default: [
529
+ "h-[var(--button-height-md,2.25rem)]",
530
+ "px-[var(--button-padding-x-md,1rem)]",
531
+ "py-[var(--button-padding-y-md,0.5rem)]",
532
+ "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
533
+ ].join(" "),
534
+ sm: [
535
+ "h-[var(--button-height-sm,2rem)]",
536
+ "px-[var(--button-padding-x-sm,0.75rem)]",
537
+ "py-[var(--button-padding-y-sm,0.25rem)]",
538
+ "gap-1.5",
539
+ "has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
540
+ ].join(" "),
541
+ md: [
542
+ "h-[var(--button-height-md,2.25rem)]",
543
+ "px-[var(--button-padding-x-md,1rem)]",
544
+ "py-[var(--button-padding-y-md,0.5rem)]",
545
+ "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
546
+ ].join(" "),
547
+ lg: [
548
+ "h-[var(--button-height-lg,2.5rem)]",
549
+ "px-[var(--button-padding-x-lg,1.5rem)]",
550
+ "py-[var(--button-padding-y-lg,0.5rem)]",
551
+ "has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
552
+ ].join(" "),
553
+ icon: "size-[var(--button-height-md,2.25rem)]",
554
+ "icon-sm": "size-[var(--button-height-sm,2rem)]",
555
+ "icon-lg": "size-[var(--button-height-lg,2.5rem)]"
83
556
  }
557
+ },
558
+ defaultVariants: {
559
+ variant: "default",
560
+ size: "default"
84
561
  }
85
- );
86
- function Badge({
87
- className,
88
- variant,
89
- asChild = false,
90
- ...props
91
- }) {
92
- const Comp = asChild ? Slot : "span";
93
- return /* @__PURE__ */ jsx(
94
- Comp,
95
- {
96
- "data-slot": "badge",
97
- className: cn(badgeVariants({ variant }), className),
98
- ...props
99
- }
100
- );
101
- }
562
+ });
102
563
  function normalizePhoneNumber(input) {
103
564
  const trimmed = input.trim();
104
565
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -174,7 +635,7 @@ function useNavigation({
174
635
  href,
175
636
  onClick
176
637
  } = {}) {
177
- const linkType = React.useMemo(() => {
638
+ const linkType = React3.useMemo(() => {
178
639
  if (!href || href.trim() === "") {
179
640
  return onClick ? "none" : "none";
180
641
  }
@@ -195,7 +656,7 @@ function useNavigation({
195
656
  return "internal";
196
657
  }
197
658
  }, [href, onClick]);
198
- const normalizedHref = React.useMemo(() => {
659
+ const normalizedHref = React3.useMemo(() => {
199
660
  if (!href || href.trim() === "") {
200
661
  return void 0;
201
662
  }
@@ -213,7 +674,7 @@ function useNavigation({
213
674
  return trimmed;
214
675
  }
215
676
  }, [href, linkType]);
216
- const target = React.useMemo(() => {
677
+ const target = React3.useMemo(() => {
217
678
  switch (linkType) {
218
679
  case "external":
219
680
  return "_blank";
@@ -226,7 +687,7 @@ function useNavigation({
226
687
  return void 0;
227
688
  }
228
689
  }, [linkType]);
229
- const rel = React.useMemo(() => {
690
+ const rel = React3.useMemo(() => {
230
691
  if (linkType === "external") {
231
692
  return "noopener noreferrer";
232
693
  }
@@ -235,7 +696,7 @@ function useNavigation({
235
696
  const isExternal = linkType === "external";
236
697
  const isInternal = linkType === "internal";
237
698
  const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
238
- const handleClick = React.useCallback(
699
+ const handleClick = React3.useCallback(
239
700
  (event) => {
240
701
  if (onClick) {
241
702
  try {
@@ -261,165 +722,23 @@ function useNavigation({
261
722
  console.error("Error in navigation handler:", error);
262
723
  }
263
724
  }
264
- }
265
- }
266
- },
267
- [onClick, shouldUseRouter, normalizedHref]
268
- );
269
- return {
270
- linkType,
271
- normalizedHref,
272
- target,
273
- rel,
274
- isExternal,
275
- isInternal,
276
- shouldUseRouter,
277
- handleClick
278
- };
279
- }
280
- var baseStyles = [
281
- // Layout
282
- "inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
283
- // Typography - using CSS variables with sensible defaults
284
- "font-[var(--button-font-family,inherit)]",
285
- "font-[var(--button-font-weight,500)]",
286
- "tracking-[var(--button-letter-spacing,0)]",
287
- "leading-[var(--button-line-height,1.25)]",
288
- "[text-transform:var(--button-text-transform,none)]",
289
- "text-sm",
290
- // Border radius
291
- "rounded-[var(--button-radius,var(--radius,0.375rem))]",
292
- // Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
293
- "[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
294
- // Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
295
- "[box-shadow:var(--button-shadow,none)]",
296
- "hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
297
- // Disabled state
298
- "disabled:pointer-events-none disabled:opacity-50",
299
- // SVG handling
300
- "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
301
- // Focus styles
302
- "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
303
- // Invalid state
304
- "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
305
- ].join(" ");
306
- var buttonVariants = cva(baseStyles, {
307
- variants: {
308
- variant: {
309
- // Default (Primary) variant - full customization
310
- default: [
311
- "bg-[var(--button-default-bg,hsl(var(--primary)))]",
312
- "text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
313
- "border-[length:var(--button-default-border-width,0px)]",
314
- "border-[color:var(--button-default-border,transparent)]",
315
- "[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
316
- "hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
317
- "hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
318
- "hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
319
- "hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
320
- ].join(" "),
321
- // Destructive variant - full customization
322
- destructive: [
323
- "bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
324
- "text-[var(--button-destructive-fg,white)]",
325
- "border-[length:var(--button-destructive-border-width,0px)]",
326
- "border-[color:var(--button-destructive-border,transparent)]",
327
- "[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
328
- "hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
329
- "hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
330
- "hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
331
- "hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
332
- "focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
333
- "dark:bg-destructive/60"
334
- ].join(" "),
335
- // Outline variant - full customization with proper border handling
336
- outline: [
337
- "bg-[var(--button-outline-bg,hsl(var(--background)))]",
338
- "text-[var(--button-outline-fg,inherit)]",
339
- "border-[length:var(--button-outline-border-width,1px)]",
340
- "border-[color:var(--button-outline-border,hsl(var(--border)))]",
341
- "[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
342
- "hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
343
- "hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
344
- "hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
345
- "hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
346
- "dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
347
- ].join(" "),
348
- // Secondary variant - full customization
349
- secondary: [
350
- "bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
351
- "text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
352
- "border-[length:var(--button-secondary-border-width,0px)]",
353
- "border-[color:var(--button-secondary-border,transparent)]",
354
- "[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
355
- "hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
356
- "hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
357
- "hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
358
- "hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
359
- ].join(" "),
360
- // Ghost variant - full customization
361
- ghost: [
362
- "bg-[var(--button-ghost-bg,transparent)]",
363
- "text-[var(--button-ghost-fg,inherit)]",
364
- "border-[length:var(--button-ghost-border-width,0px)]",
365
- "border-[color:var(--button-ghost-border,transparent)]",
366
- "[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
367
- "hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
368
- "hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
369
- "hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
370
- "hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
371
- "dark:hover:bg-accent/50"
372
- ].join(" "),
373
- // Link variant - full customization
374
- link: [
375
- "bg-[var(--button-link-bg,transparent)]",
376
- "text-[var(--button-link-fg,hsl(var(--primary)))]",
377
- "border-[length:var(--button-link-border-width,0px)]",
378
- "border-[color:var(--button-link-border,transparent)]",
379
- "[box-shadow:var(--button-link-shadow,none)]",
380
- "hover:bg-[var(--button-link-hover-bg,transparent)]",
381
- "hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
382
- "hover:[box-shadow:var(--button-link-shadow-hover,none)]",
383
- "underline-offset-4 hover:underline"
384
- ].join(" ")
725
+ }
726
+ }
385
727
  },
386
- size: {
387
- default: [
388
- "h-[var(--button-height-md,2.25rem)]",
389
- "px-[var(--button-padding-x-md,1rem)]",
390
- "py-[var(--button-padding-y-md,0.5rem)]",
391
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
392
- ].join(" "),
393
- sm: [
394
- "h-[var(--button-height-sm,2rem)]",
395
- "px-[var(--button-padding-x-sm,0.75rem)]",
396
- "py-[var(--button-padding-y-sm,0.25rem)]",
397
- "gap-1.5",
398
- "has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
399
- ].join(" "),
400
- md: [
401
- "h-[var(--button-height-md,2.25rem)]",
402
- "px-[var(--button-padding-x-md,1rem)]",
403
- "py-[var(--button-padding-y-md,0.5rem)]",
404
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
405
- ].join(" "),
406
- lg: [
407
- "h-[var(--button-height-lg,2.5rem)]",
408
- "px-[var(--button-padding-x-lg,1.5rem)]",
409
- "py-[var(--button-padding-y-lg,0.5rem)]",
410
- "has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
411
- ].join(" "),
412
- icon: "size-[var(--button-height-md,2.25rem)]",
413
- "icon-sm": "size-[var(--button-height-sm,2rem)]",
414
- "icon-lg": "size-[var(--button-height-lg,2.5rem)]"
415
- }
416
- },
417
- defaultVariants: {
418
- variant: "default",
419
- size: "default"
420
- }
421
- });
422
- var Pressable = React.forwardRef(
728
+ [onClick, shouldUseRouter, normalizedHref]
729
+ );
730
+ return {
731
+ linkType,
732
+ normalizedHref,
733
+ target,
734
+ rel,
735
+ isExternal,
736
+ isInternal,
737
+ shouldUseRouter,
738
+ handleClick
739
+ };
740
+ }
741
+ var Pressable = React3.forwardRef(
423
742
  ({
424
743
  children,
425
744
  className,
@@ -482,416 +801,109 @@ var Pressable = React.forwardRef(
482
801
  ...props,
483
802
  children
484
803
  }
485
- );
486
- }
487
- if (finalComponentType === "button") {
488
- return /* @__PURE__ */ jsx(
489
- "button",
490
- {
491
- ref,
492
- type: props.type || "button",
493
- ...commonProps,
494
- ...props,
495
- children
496
- }
497
- );
498
- }
499
- if (finalComponentType === "div") {
500
- return /* @__PURE__ */ jsx(
501
- "div",
502
- {
503
- ref,
504
- ...commonProps,
505
- children
506
- }
507
- );
508
- }
509
- return /* @__PURE__ */ jsx(
510
- "span",
511
- {
512
- ref,
513
- ...commonProps,
514
- children
515
- }
516
- );
517
- }
518
- );
519
- Pressable.displayName = "Pressable";
520
- var maxWidthStyles = {
521
- sm: "max-w-screen-sm",
522
- md: "max-w-screen-md",
523
- lg: "max-w-screen-lg",
524
- xl: "max-w-7xl",
525
- "2xl": "max-w-screen-2xl",
526
- "4xl": "max-w-[1536px]",
527
- full: "max-w-full"
528
- };
529
- var Container = React__default.forwardRef(
530
- ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
531
- const Component = as;
532
- return /* @__PURE__ */ jsx(
533
- Component,
534
- {
535
- ref,
536
- className: cn(
537
- "mx-auto w-full px-2 sm:px-4 lg:px-8",
538
- maxWidthStyles[maxWidth],
539
- className
540
- ),
541
- ...props,
542
- children
543
- }
544
- );
545
- }
546
- );
547
- Container.displayName = "Container";
548
-
549
- // lib/patternSvgs.ts
550
- var patternSvgs = {
551
- squareAltGrid: "https://cdn.ing/assets/files/record/286187/4gpn0yq2ptra8iwlvmwwv860ggwv",
552
- grid1: "https://cdn.ing/assets/files/record/286186/nbdflpgp4ostrno079hygibsflp3",
553
- noise: "https://cdn.ing/assets/i/r/286188/zrqcp9hynh3j7p2laihwzfbujgrl/noise.png",
554
- dots: "https://cdn.ing/assets/files/record/286198/yfsjx9thvtxzhl2qtshxyhkrm524",
555
- dotPattern: "https://cdn.ing/assets/files/record/286192/7ig0cku8aqbboiza8nuk6hw0nnsr",
556
- dotPattern2: "https://cdn.ing/assets/files/record/286189/arez6gd2s7isn9i1o6c7sexdq7bl",
557
- circles: "https://cdn.ing/assets/files/record/286190/gtmia3sncjtzetdshc20zf1d3c17",
558
- waves: "https://cdn.ing/assets/files/record/286191/mqlb33fzxz9cdth1bx7if0wmpkp1",
559
- crossPattern: "https://cdn.ing/assets/files/record/286193/9yfqwdbnqaipbp7fsb3wbzzmq472",
560
- architect: "https://cdn.ing/assets/files/record/286194/vgs88ugpvyhxu13wqgy0acvae6re",
561
- tinyCheckers: "https://cdn.ing/assets/files/record/286195/65efaknsw8kcpf9o3c2gybytsl5b",
562
- p6: "https://cdn.ing/assets/i/r/286196/6kl0rqnd6mjk8j7e525fo8fo0vkc/p6.webp"
563
- };
564
- var maskTop = "radial-gradient(ellipse 70% 60% at 50% 0%, #000 60%, transparent 100%)";
565
- var maskBottom = "radial-gradient(ellipse 100% 80% at 50% 100%, #000 50%, transparent 90%)";
566
- var maskCenter = "radial-gradient(ellipse 60% 60% at 50% 50%, #000 30%, transparent 70%)";
567
- var maskTopLeft = "radial-gradient(ellipse 80% 80% at 0% 0%, #000 50%, transparent 90%)";
568
- var maskTopRight = "radial-gradient(ellipse 80% 80% at 100% 0%, #000 50%, transparent 90%)";
569
- var maskBottomLeft = "radial-gradient(ellipse 80% 80% at 0% 100%, #000 50%, transparent 90%)";
570
- var maskBottomRight = "radial-gradient(ellipse 80% 80% at 100% 100%, #000 50%, transparent 90%)";
571
- var circuitBoardPattern = (id, mask) => /* @__PURE__ */ jsxs(
572
- "svg",
573
- {
574
- className: "h-full w-full",
575
- xmlns: "http://www.w3.org/2000/svg",
576
- style: mask ? {
577
- maskImage: mask,
578
- WebkitMaskImage: mask
579
- } : void 0,
580
- children: [
581
- /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs(
582
- "pattern",
583
- {
584
- id,
585
- x: "0",
586
- y: "0",
587
- width: "100",
588
- height: "100",
589
- patternUnits: "userSpaceOnUse",
590
- children: [
591
- /* @__PURE__ */ jsx(
592
- "path",
593
- {
594
- d: "M0 50h40M60 50h40M50 0v40M50 60v40",
595
- stroke: "hsl(var(--muted))",
596
- strokeWidth: "1",
597
- fill: "none"
598
- }
599
- ),
600
- /* @__PURE__ */ jsx("circle", { cx: "50", cy: "50", r: "3", fill: "hsl(var(--muted))" }),
601
- /* @__PURE__ */ jsx("circle", { cx: "0", cy: "50", r: "2", fill: "hsl(var(--muted))" }),
602
- /* @__PURE__ */ jsx("circle", { cx: "100", cy: "50", r: "2", fill: "hsl(var(--muted))" }),
603
- /* @__PURE__ */ jsx("circle", { cx: "50", cy: "0", r: "2", fill: "hsl(var(--muted))" }),
604
- /* @__PURE__ */ jsx("circle", { cx: "50", cy: "100", r: "2", fill: "hsl(var(--muted))" })
605
- ]
606
- }
607
- ) }),
608
- /* @__PURE__ */ jsx("rect", { width: "100%", height: "100%", fill: `url(#${id})` })
609
- ]
610
- }
611
- );
612
- var gridDotsPattern = (id, mask) => /* @__PURE__ */ jsxs(
613
- "svg",
614
- {
615
- className: "h-full w-full",
616
- xmlns: "http://www.w3.org/2000/svg",
617
- style: mask ? {
618
- maskImage: mask,
619
- WebkitMaskImage: mask
620
- } : void 0,
621
- children: [
622
- /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs(
623
- "pattern",
624
- {
625
- id,
626
- x: "0",
627
- y: "0",
628
- width: "40",
629
- height: "40",
630
- patternUnits: "userSpaceOnUse",
631
- children: [
632
- /* @__PURE__ */ jsx(
633
- "path",
634
- {
635
- d: "M0 20h40M20 0v40",
636
- stroke: "hsl(var(--muted))",
637
- strokeWidth: "0.5",
638
- fill: "none"
639
- }
640
- ),
641
- /* @__PURE__ */ jsx("circle", { cx: "20", cy: "20", r: "2", fill: "hsl(var(--muted))" })
642
- ]
643
- }
644
- ) }),
645
- /* @__PURE__ */ jsx("rect", { width: "100%", height: "100%", fill: `url(#${id})` })
646
- ]
647
- }
648
- );
649
- var gridPattern = (size, mask) => /* @__PURE__ */ jsx(
650
- "div",
651
- {
652
- className: "h-full w-full bg-[linear-gradient(to_right,_hsl(var(--muted))_1px,_transparent_1px),linear-gradient(to_bottom,_hsl(var(--muted))_1px,_transparent_1px)]",
653
- style: {
654
- backgroundSize: `${size}px ${size}px`,
655
- ...mask ? {
656
- maskImage: mask,
657
- WebkitMaskImage: mask
658
- } : {}
659
- }
660
- }
661
- );
662
- var diagonalCrossPattern = (mask) => /* @__PURE__ */ jsx(
663
- "div",
664
- {
665
- className: "h-full w-full",
666
- style: {
667
- backgroundImage: "repeating-linear-gradient(45deg, transparent, transparent 32px, hsl(var(--muted)) 32px, hsl(var(--muted)) 33px), repeating-linear-gradient(135deg, transparent, transparent 32px, hsl(var(--muted)) 32px, hsl(var(--muted)) 33px)",
668
- ...mask ? {
669
- maskImage: mask,
670
- WebkitMaskImage: mask
671
- } : {}
672
- }
673
- }
674
- );
675
- var dashedGridMaskBase = "repeating-linear-gradient(to right, black 0px, black 3px, transparent 3px, transparent 8px), repeating-linear-gradient(to bottom, black 0px, black 3px, transparent 3px, transparent 8px)";
676
- var dashedGridPattern = (fadeMask) => {
677
- const mask = fadeMask ? `${dashedGridMaskBase}, ${fadeMask}` : dashedGridMaskBase;
678
- return /* @__PURE__ */ jsx(
679
- "div",
680
- {
681
- className: "h-full w-full",
682
- style: {
683
- backgroundImage: "linear-gradient(to right, hsl(var(--muted)) 1px, transparent 1px), linear-gradient(to bottom, hsl(var(--muted)) 1px, transparent 1px)",
684
- backgroundSize: "20px 20px",
685
- backgroundPosition: "0 0, 0 0",
686
- maskImage: mask,
687
- WebkitMaskImage: mask,
688
- maskComposite: "intersect",
689
- WebkitMaskComposite: "source-in"
690
- }
804
+ );
691
805
  }
692
- );
693
- };
694
- var gradientGlow = (position) => /* @__PURE__ */ jsx(
695
- "div",
696
- {
697
- className: cn(
698
- "pointer-events-none absolute left-1/2 z-0 aspect-square w-3/4 -translate-x-1/2 rounded-full opacity-50 blur-3xl",
699
- position === "top" ? "-top-1/4" : "-bottom-1/4"
700
- ),
701
- style: {
702
- background: "radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)"
806
+ if (finalComponentType === "button") {
807
+ return /* @__PURE__ */ jsx(
808
+ "button",
809
+ {
810
+ ref,
811
+ type: props.type || "button",
812
+ ...commonProps,
813
+ ...props,
814
+ children
815
+ }
816
+ );
703
817
  }
704
- }
705
- );
706
- var spotlight = (position) => /* @__PURE__ */ jsx(
707
- "div",
708
- {
709
- className: cn(
710
- "pointer-events-none absolute top-1/2 z-0 aspect-square w-3/4 -translate-y-1/2 rounded-full opacity-40 blur-3xl",
711
- position === "left" ? "-left-1/4" : "-right-1/4"
712
- ),
713
- style: {
714
- background: "radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)"
818
+ if (finalComponentType === "div") {
819
+ return /* @__PURE__ */ jsx(
820
+ "div",
821
+ {
822
+ ref,
823
+ ...commonProps,
824
+ children
825
+ }
826
+ );
715
827
  }
716
- }
717
- );
718
- var patternOverlays = {
719
- circuitBoardBasic: () => circuitBoardPattern("circuit-board-basic"),
720
- circuitBoardFadeTop: () => circuitBoardPattern("circuit-board-fade-top", maskTop),
721
- circuitBoardFadeBottom: () => circuitBoardPattern("circuit-board-fade-bottom", maskBottom),
722
- circuitBoardFadeCenter: () => circuitBoardPattern("circuit-board-fade-center", maskCenter),
723
- circuitBoardFadeTopLeft: () => circuitBoardPattern("circuit-board-fade-top-left", maskTopLeft),
724
- circuitBoardFadeTopRight: () => circuitBoardPattern("circuit-board-fade-top-right", maskTopRight),
725
- circuitBoardFadeBottomLeft: () => circuitBoardPattern("circuit-board-fade-bottom-left", maskBottomLeft),
726
- circuitBoardFadeBottomRight: () => circuitBoardPattern("circuit-board-fade-bottom-right", maskBottomRight),
727
- dashedGridBasic: () => dashedGridPattern(),
728
- dashedGridFadeTop: () => dashedGridPattern(maskTop),
729
- dashedGridFadeBottom: () => dashedGridPattern(maskBottom),
730
- dashedGridFadeCenter: () => dashedGridPattern(maskCenter),
731
- dashedGridFadeTopLeft: () => dashedGridPattern(maskTopLeft),
732
- dashedGridFadeTopRight: () => dashedGridPattern(maskTopRight),
733
- dashedGridFadeBottomLeft: () => dashedGridPattern(maskBottomLeft),
734
- dashedGridFadeBottomRight: () => dashedGridPattern(maskBottomRight),
735
- diagonalCrossBasic: () => diagonalCrossPattern(),
736
- diagonalCrossFadeTop: () => diagonalCrossPattern(maskTop),
737
- diagonalCrossFadeBottom: () => diagonalCrossPattern(maskBottom),
738
- diagonalCrossFadeCenter: () => diagonalCrossPattern(maskCenter),
739
- diagonalCrossFadeTopLeft: () => diagonalCrossPattern(maskTopLeft),
740
- diagonalCrossFadeTopRight: () => diagonalCrossPattern(maskTopRight),
741
- diagonalCrossFadeBottomLeft: () => diagonalCrossPattern(maskBottomLeft),
742
- diagonalCrossFadeBottomRight: () => diagonalCrossPattern(maskBottomRight),
743
- gridBasic: () => gridPattern(40),
744
- gridFadeTop: () => gridPattern(32, maskTop),
745
- gridFadeBottom: () => gridPattern(32, maskBottom),
746
- gridFadeCenter: () => gridPattern(40, maskCenter),
747
- gridFadeTopLeft: () => gridPattern(32, maskTopLeft),
748
- gridFadeTopRight: () => gridPattern(32, maskTopRight),
749
- gridFadeBottomLeft: () => gridPattern(32, maskBottomLeft),
750
- gridFadeBottomRight: () => gridPattern(32, maskBottomRight),
751
- gridDotsBasic: () => gridDotsPattern("grid-dots-basic"),
752
- gridDotsFadeCenter: () => gridDotsPattern("grid-dots-fade-center", maskCenter),
753
- gradientGlowTop: () => gradientGlow("top"),
754
- gradientGlowBottom: () => gradientGlow("bottom"),
755
- spotlightLeft: () => spotlight("left"),
756
- spotlightRight: () => spotlight("right")
757
- };
758
- var inlinePatternStyles = {
759
- radialGradientTop: {
760
- background: "radial-gradient(125% 125% at 50% 10%, hsl(var(--background)) 40%, hsl(var(--primary)) 100%)"
761
- },
762
- radialGradientBottom: {
763
- background: "radial-gradient(125% 125% at 50% 90%, hsl(var(--background)) 40%, hsl(var(--primary)) 100%)"
764
- }
765
- };
766
- function PatternBackground({
767
- pattern,
768
- opacity = 0.08,
769
- className,
770
- style
771
- }) {
772
- if (!pattern) {
773
- return null;
774
- }
775
- if (pattern in inlinePatternStyles) {
776
- const inlineStyle = inlinePatternStyles[pattern];
777
828
  return /* @__PURE__ */ jsx(
778
- "div",
829
+ "span",
779
830
  {
780
- className: cn("pointer-events-none absolute inset-0 z-0", className),
781
- style: { ...inlineStyle, opacity, ...style },
782
- "aria-hidden": "true"
831
+ ref,
832
+ ...commonProps,
833
+ children
783
834
  }
784
835
  );
785
836
  }
786
- if (pattern in patternOverlays) {
787
- const Overlay = patternOverlays[pattern];
837
+ );
838
+ Pressable.displayName = "Pressable";
839
+ var MOBILE_CLASSES = {
840
+ "fit-left": "items-start md:items-center",
841
+ "fit-center": "items-center",
842
+ "fit-right": "items-end md:items-center",
843
+ "full-left": "items-stretch md:items-center",
844
+ "full-center": "items-stretch md:items-center",
845
+ "full-right": "items-stretch md:items-center"
846
+ };
847
+ function BlockActions({
848
+ mobileConfig,
849
+ actionsClassName,
850
+ verticalSpacing = "mt-4 md:mt-8",
851
+ actions,
852
+ actionsSlot
853
+ }) {
854
+ const renderAction = React3.useCallback(
855
+ (action, idx) => {
856
+ const {
857
+ label,
858
+ icon,
859
+ iconAfter,
860
+ children,
861
+ href,
862
+ onClick,
863
+ className: actionClassName,
864
+ ...pressableProps
865
+ } = action;
866
+ return /* @__PURE__ */ jsx(
867
+ Pressable,
868
+ {
869
+ href,
870
+ onClick,
871
+ asButton: action.asButton || true,
872
+ className: actionClassName,
873
+ ...pressableProps,
874
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
875
+ icon,
876
+ label,
877
+ iconAfter
878
+ ] })
879
+ },
880
+ idx
881
+ );
882
+ },
883
+ []
884
+ );
885
+ const width = mobileConfig?.width ?? "full";
886
+ const position = mobileConfig?.position ?? "center";
887
+ const mobileLayoutClass = MOBILE_CLASSES[`${width}-${position}`];
888
+ if (actionsSlot) {
889
+ return /* @__PURE__ */ jsx("div", { children: actionsSlot });
890
+ } else if (actions && actions?.length > 0) {
788
891
  return /* @__PURE__ */ jsx(
789
892
  "div",
790
893
  {
791
- className: cn("pointer-events-none absolute inset-0 z-0", className),
792
- style: { opacity, ...style },
793
- "aria-hidden": "true",
794
- children: Overlay()
795
- }
796
- );
797
- }
798
- const patternUrl = pattern in patternSvgs ? patternSvgs[pattern] : pattern;
799
- return /* @__PURE__ */ jsx(
800
- "div",
801
- {
802
- className: cn("pointer-events-none absolute inset-0 z-0", className),
803
- style: {
804
- backgroundImage: `url(${patternUrl})`,
805
- backgroundRepeat: "repeat",
806
- backgroundSize: "auto",
807
- opacity,
808
- ...style
809
- },
810
- "aria-hidden": "true"
811
- }
812
- );
813
- }
814
- var backgroundStyles = {
815
- default: "bg-background text-foreground",
816
- white: "bg-white text-dark",
817
- gray: "bg-muted/30 text-foreground",
818
- dark: "bg-foreground text-background",
819
- transparent: "bg-transparent text-foreground",
820
- gradient: "bg-linear-to-br from-primary via-primary/90 to-foreground text-primary-foreground",
821
- primary: "bg-primary text-primary-foreground",
822
- secondary: "bg-secondary text-secondary-foreground",
823
- muted: "bg-muted text-muted-foreground"
824
- };
825
- var spacingStyles = {
826
- none: "py-0 md:py-0",
827
- sm: "py-12 md:py-16",
828
- md: "py-16 md:py-24",
829
- lg: "py-20 md:py-32",
830
- xl: "py-24 md:py-40"
831
- };
832
- var predefinedSpacings = ["none", "sm", "md", "lg", "xl"];
833
- var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
834
- var Section = React__default.forwardRef(
835
- ({
836
- id,
837
- title,
838
- subtitle,
839
- children,
840
- className,
841
- style,
842
- background = "default",
843
- spacing = "lg",
844
- pattern,
845
- patternOpacity,
846
- patternClassName,
847
- containerClassName,
848
- containerMaxWidth = "xl",
849
- ...props
850
- }, ref) => {
851
- const effectivePatternOpacity = patternOpacity !== void 0 ? patternOpacity : pattern ? 1 : 0;
852
- return /* @__PURE__ */ jsxs(
853
- "section",
854
- {
855
- ref,
856
- id,
857
894
  className: cn(
858
- "relative",
859
- pattern ? "overflow-hidden" : null,
860
- backgroundStyles[background],
861
- isPredefinedSpacing(spacing) ? spacingStyles[spacing] : spacing,
862
- className
895
+ "flex flex-col md:flex-row flex-wrap gap-4",
896
+ mobileLayoutClass,
897
+ actionsClassName,
898
+ verticalSpacing
863
899
  ),
864
- style,
865
- ...props,
866
- children: [
867
- /* @__PURE__ */ jsx(
868
- PatternBackground,
869
- {
870
- pattern,
871
- opacity: effectivePatternOpacity,
872
- className: patternClassName
873
- }
874
- ),
875
- /* @__PURE__ */ jsxs(
876
- Container,
877
- {
878
- maxWidth: containerMaxWidth,
879
- className: cn("relative z-10", containerClassName),
880
- children: [
881
- (title || subtitle) && /* @__PURE__ */ jsxs("div", { className: "mb-6 text-center md:mb-16", children: [
882
- subtitle && /* @__PURE__ */ jsx("p", { className: "mb-2 text-sm font-semibold uppercase tracking-wider", children: subtitle }),
883
- title && /* @__PURE__ */ jsx("h2", { className: "text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl", children: title })
884
- ] }),
885
- children
886
- ]
887
- }
888
- )
889
- ]
900
+ children: actions.map((action, index) => renderAction(action, index))
890
901
  }
891
902
  );
903
+ } else {
904
+ return null;
892
905
  }
893
- );
894
- Section.displayName = "Section";
906
+ }
895
907
  function HeroAnnouncementBadge({
896
908
  badge,
897
909
  badgeIcon,
@@ -900,37 +912,16 @@ function HeroAnnouncementBadge({
900
912
  actions,
901
913
  actionsSlot,
902
914
  background,
903
- spacing,
904
915
  pattern,
905
916
  patternOpacity,
906
917
  className,
907
- containerClassName,
918
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
919
+ spacing = "pt-32 pb-16 md:pt-32 md:pb-32",
908
920
  badgeClassName,
909
921
  headingClassName,
910
922
  descriptionClassName,
911
923
  actionsClassName
912
924
  }) {
913
- const renderActions = useMemo(() => {
914
- if (actionsSlot) return actionsSlot;
915
- if (!actions || actions.length === 0) return null;
916
- return actions.map((action, index) => {
917
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
918
- return /* @__PURE__ */ jsx(
919
- Pressable,
920
- {
921
- asButton: true,
922
- className: actionClassName,
923
- ...pressableProps,
924
- children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
925
- icon,
926
- label,
927
- iconAfter
928
- ] })
929
- },
930
- index
931
- );
932
- });
933
- }, [actionsSlot, actions]);
934
925
  return /* @__PURE__ */ jsx(
935
926
  Section,
936
927
  {
@@ -939,25 +930,48 @@ function HeroAnnouncementBadge({
939
930
  pattern,
940
931
  patternOpacity,
941
932
  className,
942
- children: /* @__PURE__ */ jsxs("div", { className: cn("container", containerClassName), children: [
943
- badge && /* @__PURE__ */ jsxs(
944
- Badge,
933
+ containerClassName,
934
+ children: /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col gap-4 md:gap-6 lg:gap-8", children: [
935
+ badge && /* @__PURE__ */ jsxs(Badge, { className: cn("gap-2", badgeClassName), children: [
936
+ badgeIcon && /* @__PURE__ */ jsx(
937
+ "span",
938
+ {
939
+ className: cn(
940
+ "flex size-8 shrink-0 items-center justify-center rounded-full"
941
+ ),
942
+ children: badgeIcon
943
+ }
944
+ ),
945
+ typeof badge === "string" ? /* @__PURE__ */ jsx("p", { className: "truncate whitespace-nowrap pr-2", children: badge }) : badge
946
+ ] }),
947
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
948
+ "h1",
945
949
  {
946
- variant: "outline",
947
- className: cn("mb-4 max-w-full text-sm font-normal lg:mb-10 lg:py-2 lg:pr-5 lg:pl-2", badgeClassName),
948
- children: [
949
- badgeIcon && /* @__PURE__ */ jsx("span", { className: cn(
950
- "mr-2 flex size-8 shrink-0 items-center justify-center rounded-full",
951
- getNestedCardBg(background, "accent"),
952
- getNestedCardTextColor(background)
953
- ), children: badgeIcon }),
954
- typeof badge === "string" ? /* @__PURE__ */ jsx("p", { className: "truncate whitespace-nowrap", children: badge }) : badge
955
- ]
950
+ className: cn(
951
+ "text-4xl leading-none font-bold tracking-tighter md:text-[7vw] lg:text-8xl",
952
+ headingClassName
953
+ ),
954
+ children: heading
956
955
  }
957
- ),
958
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("mb-6 text-4xl leading-none font-bold tracking-tighter md:text-[7vw] lg:text-8xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
959
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-2xl md:text-[2vw] lg:text-xl", getTextColor(background, "muted"), descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
960
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-6 flex flex-col gap-4 sm:flex-row lg:mt-10", actionsClassName), children: renderActions })
956
+ ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
957
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
958
+ "p",
959
+ {
960
+ className: cn(
961
+ "max-w-2xl md:text-[2vw] lg:text-xl text-balance",
962
+ descriptionClassName
963
+ ),
964
+ children: description
965
+ }
966
+ ) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
967
+ /* @__PURE__ */ jsx(
968
+ BlockActions,
969
+ {
970
+ actions,
971
+ actionsSlot,
972
+ actionsClassName
973
+ }
974
+ )
961
975
  ] })
962
976
  }
963
977
  );