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