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