@opensite/ui 0.8.1 → 0.8.2
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/carousel-horizontal-cards.cjs +8 -6
- package/dist/carousel-horizontal-cards.js +8 -6
- package/dist/carousel-image-hero.cjs +85 -160
- package/dist/carousel-image-hero.d.cts +1 -5
- package/dist/carousel-image-hero.d.ts +1 -5
- package/dist/carousel-image-hero.js +85 -160
- package/dist/carousel-portfolio-hero.cjs +138 -59
- package/dist/carousel-portfolio-hero.js +138 -59
- package/dist/carousel-product-feature-showcase.cjs +148 -95
- package/dist/carousel-product-feature-showcase.js +148 -95
- package/dist/carousel-progress-slider.cjs +13 -9
- package/dist/carousel-progress-slider.js +13 -9
- package/dist/carousel-scrolling-feature-showcase.cjs +105 -54
- package/dist/carousel-scrolling-feature-showcase.js +105 -54
- package/dist/feature-accordion-image.cjs +9 -8
- package/dist/feature-accordion-image.js +9 -8
- package/dist/feature-animated-carousel.cjs +65 -49
- package/dist/feature-animated-carousel.js +65 -49
- package/dist/feature-badge-grid-six.cjs +20 -17
- package/dist/feature-badge-grid-six.js +21 -18
- package/dist/feature-bento-image-grid.cjs +12 -8
- package/dist/feature-bento-image-grid.js +12 -8
- package/dist/feature-bento-utilities.cjs +9 -5
- package/dist/feature-bento-utilities.js +9 -5
- package/dist/feature-capabilities-grid.cjs +41 -38
- package/dist/feature-capabilities-grid.js +41 -38
- package/dist/feature-card-grid-linked.cjs +18 -18
- package/dist/feature-card-grid-linked.js +19 -19
- package/dist/feature-carousel-progress.cjs +3 -3
- package/dist/feature-carousel-progress.js +4 -4
- package/dist/feature-category-image-cards.cjs +3 -3
- package/dist/feature-category-image-cards.js +4 -4
- package/dist/feature-checklist-image.cjs +2 -2
- package/dist/feature-checklist-image.js +2 -2
- package/dist/feature-checklist-three-column.cjs +6 -6
- package/dist/feature-checklist-three-column.js +7 -7
- package/dist/feature-icon-grid-accent.cjs +2 -2
- package/dist/feature-icon-grid-accent.js +2 -2
- package/dist/feature-icon-grid-bordered.cjs +29 -31
- package/dist/feature-icon-grid-bordered.d.cts +9 -9
- package/dist/feature-icon-grid-bordered.d.ts +9 -9
- package/dist/feature-icon-grid-bordered.js +30 -32
- package/dist/feature-icon-grid-muted.cjs +6 -6
- package/dist/feature-icon-grid-muted.d.cts +9 -9
- package/dist/feature-icon-grid-muted.d.ts +9 -9
- package/dist/feature-icon-grid-muted.js +7 -7
- package/dist/feature-icon-tabs-content.cjs +8 -8
- package/dist/feature-icon-tabs-content.d.cts +13 -13
- package/dist/feature-icon-tabs-content.d.ts +13 -13
- package/dist/feature-icon-tabs-content.js +9 -9
- package/dist/feature-image-cards-three-column.cjs +26 -27
- package/dist/feature-image-cards-three-column.js +27 -28
- package/dist/feature-image-overlay-badge.cjs +23 -21
- package/dist/feature-image-overlay-badge.js +24 -22
- package/dist/feature-integration-cards.cjs +19 -18
- package/dist/feature-integration-cards.js +20 -19
- package/dist/feature-numbered-cards.cjs +2 -2
- package/dist/feature-numbered-cards.js +3 -3
- package/dist/feature-pattern-grid-links.cjs +26 -29
- package/dist/feature-pattern-grid-links.d.cts +1 -5
- package/dist/feature-pattern-grid-links.d.ts +1 -5
- package/dist/feature-pattern-grid-links.js +27 -30
- package/dist/feature-showcase.cjs +441 -40
- package/dist/feature-showcase.d.cts +62 -5
- package/dist/feature-showcase.d.ts +62 -5
- package/dist/feature-showcase.js +438 -37
- package/dist/feature-split-image-reverse.cjs +15 -36
- package/dist/feature-split-image-reverse.js +16 -37
- package/dist/feature-split-image.cjs +15 -36
- package/dist/feature-split-image.js +16 -37
- package/dist/feature-stats-highlight.cjs +20 -32
- package/dist/feature-stats-highlight.js +21 -33
- package/dist/feature-tabbed-content-image.cjs +11 -6
- package/dist/feature-tabbed-content-image.js +11 -6
- package/dist/feature-three-column-values.cjs +6 -6
- package/dist/feature-three-column-values.js +6 -6
- package/dist/feature-utility-cards-grid.cjs +17 -15
- package/dist/feature-utility-cards-grid.js +18 -16
- package/dist/navbar-tabbed-sections.cjs +23 -16
- package/dist/navbar-tabbed-sections.js +23 -16
- package/dist/registry.cjs +941 -708
- package/dist/registry.js +943 -710
- package/package.json +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var React6 = require('react');
|
|
5
5
|
var clsx = require('clsx');
|
|
6
6
|
var tailwindMerge = require('tailwind-merge');
|
|
7
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
8
|
var useEmblaCarousel = require('embla-carousel-react');
|
|
8
9
|
var classVarianceAuthority = require('class-variance-authority');
|
|
9
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
10
10
|
|
|
11
11
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
12
|
|
|
@@ -28,13 +28,388 @@ function _interopNamespace(e) {
|
|
|
28
28
|
return Object.freeze(n);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
var
|
|
31
|
+
var React6__namespace = /*#__PURE__*/_interopNamespace(React6);
|
|
32
32
|
var useEmblaCarousel__default = /*#__PURE__*/_interopDefault(useEmblaCarousel);
|
|
33
33
|
|
|
34
34
|
// components/blocks/features/feature-showcase.tsx
|
|
35
35
|
function cn(...inputs) {
|
|
36
36
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
37
37
|
}
|
|
38
|
+
var maxWidthStyles = {
|
|
39
|
+
sm: "max-w-screen-sm",
|
|
40
|
+
md: "max-w-screen-md",
|
|
41
|
+
lg: "max-w-screen-lg",
|
|
42
|
+
xl: "max-w-7xl",
|
|
43
|
+
"2xl": "max-w-screen-2xl",
|
|
44
|
+
"4xl": "max-w-[1536px]",
|
|
45
|
+
full: "max-w-full"
|
|
46
|
+
};
|
|
47
|
+
var Container = React6__namespace.default.forwardRef(
|
|
48
|
+
({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
|
|
49
|
+
const Component = as;
|
|
50
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
51
|
+
Component,
|
|
52
|
+
{
|
|
53
|
+
ref,
|
|
54
|
+
className: cn(
|
|
55
|
+
"mx-auto w-full px-2 sm:px-4 lg:px-8",
|
|
56
|
+
maxWidthStyles[maxWidth],
|
|
57
|
+
className
|
|
58
|
+
),
|
|
59
|
+
...props,
|
|
60
|
+
children
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
);
|
|
65
|
+
Container.displayName = "Container";
|
|
66
|
+
|
|
67
|
+
// lib/patternSvgs.ts
|
|
68
|
+
var patternSvgs = {
|
|
69
|
+
squareAltGrid: "https://cdn.ing/assets/files/record/286187/4gpn0yq2ptra8iwlvmwwv860ggwv",
|
|
70
|
+
grid1: "https://cdn.ing/assets/files/record/286186/nbdflpgp4ostrno079hygibsflp3",
|
|
71
|
+
noise: "https://cdn.ing/assets/i/r/286188/zrqcp9hynh3j7p2laihwzfbujgrl/noise.png",
|
|
72
|
+
dots: "https://cdn.ing/assets/files/record/286198/yfsjx9thvtxzhl2qtshxyhkrm524",
|
|
73
|
+
dotPattern: "https://cdn.ing/assets/files/record/286192/7ig0cku8aqbboiza8nuk6hw0nnsr",
|
|
74
|
+
dotPattern2: "https://cdn.ing/assets/files/record/286189/arez6gd2s7isn9i1o6c7sexdq7bl",
|
|
75
|
+
circles: "https://cdn.ing/assets/files/record/286190/gtmia3sncjtzetdshc20zf1d3c17",
|
|
76
|
+
waves: "https://cdn.ing/assets/files/record/286191/mqlb33fzxz9cdth1bx7if0wmpkp1",
|
|
77
|
+
crossPattern: "https://cdn.ing/assets/files/record/286193/9yfqwdbnqaipbp7fsb3wbzzmq472",
|
|
78
|
+
architect: "https://cdn.ing/assets/files/record/286194/vgs88ugpvyhxu13wqgy0acvae6re",
|
|
79
|
+
tinyCheckers: "https://cdn.ing/assets/files/record/286195/65efaknsw8kcpf9o3c2gybytsl5b",
|
|
80
|
+
p6: "https://cdn.ing/assets/i/r/286196/6kl0rqnd6mjk8j7e525fo8fo0vkc/p6.webp"
|
|
81
|
+
};
|
|
82
|
+
var maskTop = "radial-gradient(ellipse 70% 60% at 50% 0%, #000 60%, transparent 100%)";
|
|
83
|
+
var maskBottom = "radial-gradient(ellipse 100% 80% at 50% 100%, #000 50%, transparent 90%)";
|
|
84
|
+
var maskCenter = "radial-gradient(ellipse 60% 60% at 50% 50%, #000 30%, transparent 70%)";
|
|
85
|
+
var maskTopLeft = "radial-gradient(ellipse 80% 80% at 0% 0%, #000 50%, transparent 90%)";
|
|
86
|
+
var maskTopRight = "radial-gradient(ellipse 80% 80% at 100% 0%, #000 50%, transparent 90%)";
|
|
87
|
+
var maskBottomLeft = "radial-gradient(ellipse 80% 80% at 0% 100%, #000 50%, transparent 90%)";
|
|
88
|
+
var maskBottomRight = "radial-gradient(ellipse 80% 80% at 100% 100%, #000 50%, transparent 90%)";
|
|
89
|
+
var circuitBoardPattern = (id, mask) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
90
|
+
"svg",
|
|
91
|
+
{
|
|
92
|
+
className: "h-full w-full",
|
|
93
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
94
|
+
style: mask ? {
|
|
95
|
+
maskImage: mask,
|
|
96
|
+
WebkitMaskImage: mask
|
|
97
|
+
} : void 0,
|
|
98
|
+
children: [
|
|
99
|
+
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
100
|
+
"pattern",
|
|
101
|
+
{
|
|
102
|
+
id,
|
|
103
|
+
x: "0",
|
|
104
|
+
y: "0",
|
|
105
|
+
width: "100",
|
|
106
|
+
height: "100",
|
|
107
|
+
patternUnits: "userSpaceOnUse",
|
|
108
|
+
children: [
|
|
109
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
110
|
+
"path",
|
|
111
|
+
{
|
|
112
|
+
d: "M0 50h40M60 50h40M50 0v40M50 60v40",
|
|
113
|
+
stroke: "hsl(var(--muted))",
|
|
114
|
+
strokeWidth: "1",
|
|
115
|
+
fill: "none"
|
|
116
|
+
}
|
|
117
|
+
),
|
|
118
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "50", cy: "50", r: "3", fill: "hsl(var(--muted))" }),
|
|
119
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "0", cy: "50", r: "2", fill: "hsl(var(--muted))" }),
|
|
120
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "100", cy: "50", r: "2", fill: "hsl(var(--muted))" }),
|
|
121
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "50", cy: "0", r: "2", fill: "hsl(var(--muted))" }),
|
|
122
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "50", cy: "100", r: "2", fill: "hsl(var(--muted))" })
|
|
123
|
+
]
|
|
124
|
+
}
|
|
125
|
+
) }),
|
|
126
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { width: "100%", height: "100%", fill: `url(#${id})` })
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
var gridDotsPattern = (id, mask) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
131
|
+
"svg",
|
|
132
|
+
{
|
|
133
|
+
className: "h-full w-full",
|
|
134
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
135
|
+
style: mask ? {
|
|
136
|
+
maskImage: mask,
|
|
137
|
+
WebkitMaskImage: mask
|
|
138
|
+
} : void 0,
|
|
139
|
+
children: [
|
|
140
|
+
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
141
|
+
"pattern",
|
|
142
|
+
{
|
|
143
|
+
id,
|
|
144
|
+
x: "0",
|
|
145
|
+
y: "0",
|
|
146
|
+
width: "40",
|
|
147
|
+
height: "40",
|
|
148
|
+
patternUnits: "userSpaceOnUse",
|
|
149
|
+
children: [
|
|
150
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
151
|
+
"path",
|
|
152
|
+
{
|
|
153
|
+
d: "M0 20h40M20 0v40",
|
|
154
|
+
stroke: "hsl(var(--muted))",
|
|
155
|
+
strokeWidth: "0.5",
|
|
156
|
+
fill: "none"
|
|
157
|
+
}
|
|
158
|
+
),
|
|
159
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "20", cy: "20", r: "2", fill: "hsl(var(--muted))" })
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
) }),
|
|
163
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { width: "100%", height: "100%", fill: `url(#${id})` })
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
);
|
|
167
|
+
var gridPattern = (size, mask) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
168
|
+
"div",
|
|
169
|
+
{
|
|
170
|
+
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)]",
|
|
171
|
+
style: {
|
|
172
|
+
backgroundSize: `${size}px ${size}px`,
|
|
173
|
+
...mask ? {
|
|
174
|
+
maskImage: mask,
|
|
175
|
+
WebkitMaskImage: mask
|
|
176
|
+
} : {}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
);
|
|
180
|
+
var diagonalCrossPattern = (mask) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
181
|
+
"div",
|
|
182
|
+
{
|
|
183
|
+
className: "h-full w-full",
|
|
184
|
+
style: {
|
|
185
|
+
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)",
|
|
186
|
+
...mask ? {
|
|
187
|
+
maskImage: mask,
|
|
188
|
+
WebkitMaskImage: mask
|
|
189
|
+
} : {}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
);
|
|
193
|
+
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)";
|
|
194
|
+
var dashedGridPattern = (fadeMask) => {
|
|
195
|
+
const mask = fadeMask ? `${dashedGridMaskBase}, ${fadeMask}` : dashedGridMaskBase;
|
|
196
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
197
|
+
"div",
|
|
198
|
+
{
|
|
199
|
+
className: "h-full w-full",
|
|
200
|
+
style: {
|
|
201
|
+
backgroundImage: "linear-gradient(to right, hsl(var(--muted)) 1px, transparent 1px), linear-gradient(to bottom, hsl(var(--muted)) 1px, transparent 1px)",
|
|
202
|
+
backgroundSize: "20px 20px",
|
|
203
|
+
backgroundPosition: "0 0, 0 0",
|
|
204
|
+
maskImage: mask,
|
|
205
|
+
WebkitMaskImage: mask,
|
|
206
|
+
maskComposite: "intersect",
|
|
207
|
+
WebkitMaskComposite: "source-in"
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
);
|
|
211
|
+
};
|
|
212
|
+
var gradientGlow = (position) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
213
|
+
"div",
|
|
214
|
+
{
|
|
215
|
+
className: cn(
|
|
216
|
+
"pointer-events-none absolute left-1/2 z-0 aspect-square w-3/4 -translate-x-1/2 rounded-full opacity-50 blur-3xl",
|
|
217
|
+
position === "top" ? "-top-1/4" : "-bottom-1/4"
|
|
218
|
+
),
|
|
219
|
+
style: {
|
|
220
|
+
background: "radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)"
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
);
|
|
224
|
+
var spotlight = (position) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
225
|
+
"div",
|
|
226
|
+
{
|
|
227
|
+
className: cn(
|
|
228
|
+
"pointer-events-none absolute top-1/2 z-0 aspect-square w-3/4 -translate-y-1/2 rounded-full opacity-40 blur-3xl",
|
|
229
|
+
position === "left" ? "-left-1/4" : "-right-1/4"
|
|
230
|
+
),
|
|
231
|
+
style: {
|
|
232
|
+
background: "radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)"
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
);
|
|
236
|
+
var patternOverlays = {
|
|
237
|
+
circuitBoardBasic: () => circuitBoardPattern("circuit-board-basic"),
|
|
238
|
+
circuitBoardFadeTop: () => circuitBoardPattern("circuit-board-fade-top", maskTop),
|
|
239
|
+
circuitBoardFadeBottom: () => circuitBoardPattern("circuit-board-fade-bottom", maskBottom),
|
|
240
|
+
circuitBoardFadeCenter: () => circuitBoardPattern("circuit-board-fade-center", maskCenter),
|
|
241
|
+
circuitBoardFadeTopLeft: () => circuitBoardPattern("circuit-board-fade-top-left", maskTopLeft),
|
|
242
|
+
circuitBoardFadeTopRight: () => circuitBoardPattern("circuit-board-fade-top-right", maskTopRight),
|
|
243
|
+
circuitBoardFadeBottomLeft: () => circuitBoardPattern("circuit-board-fade-bottom-left", maskBottomLeft),
|
|
244
|
+
circuitBoardFadeBottomRight: () => circuitBoardPattern("circuit-board-fade-bottom-right", maskBottomRight),
|
|
245
|
+
dashedGridBasic: () => dashedGridPattern(),
|
|
246
|
+
dashedGridFadeTop: () => dashedGridPattern(maskTop),
|
|
247
|
+
dashedGridFadeBottom: () => dashedGridPattern(maskBottom),
|
|
248
|
+
dashedGridFadeCenter: () => dashedGridPattern(maskCenter),
|
|
249
|
+
dashedGridFadeTopLeft: () => dashedGridPattern(maskTopLeft),
|
|
250
|
+
dashedGridFadeTopRight: () => dashedGridPattern(maskTopRight),
|
|
251
|
+
dashedGridFadeBottomLeft: () => dashedGridPattern(maskBottomLeft),
|
|
252
|
+
dashedGridFadeBottomRight: () => dashedGridPattern(maskBottomRight),
|
|
253
|
+
diagonalCrossBasic: () => diagonalCrossPattern(),
|
|
254
|
+
diagonalCrossFadeTop: () => diagonalCrossPattern(maskTop),
|
|
255
|
+
diagonalCrossFadeBottom: () => diagonalCrossPattern(maskBottom),
|
|
256
|
+
diagonalCrossFadeCenter: () => diagonalCrossPattern(maskCenter),
|
|
257
|
+
diagonalCrossFadeTopLeft: () => diagonalCrossPattern(maskTopLeft),
|
|
258
|
+
diagonalCrossFadeTopRight: () => diagonalCrossPattern(maskTopRight),
|
|
259
|
+
diagonalCrossFadeBottomLeft: () => diagonalCrossPattern(maskBottomLeft),
|
|
260
|
+
diagonalCrossFadeBottomRight: () => diagonalCrossPattern(maskBottomRight),
|
|
261
|
+
gridBasic: () => gridPattern(40),
|
|
262
|
+
gridFadeTop: () => gridPattern(32, maskTop),
|
|
263
|
+
gridFadeBottom: () => gridPattern(32, maskBottom),
|
|
264
|
+
gridFadeCenter: () => gridPattern(40, maskCenter),
|
|
265
|
+
gridFadeTopLeft: () => gridPattern(32, maskTopLeft),
|
|
266
|
+
gridFadeTopRight: () => gridPattern(32, maskTopRight),
|
|
267
|
+
gridFadeBottomLeft: () => gridPattern(32, maskBottomLeft),
|
|
268
|
+
gridFadeBottomRight: () => gridPattern(32, maskBottomRight),
|
|
269
|
+
gridDotsBasic: () => gridDotsPattern("grid-dots-basic"),
|
|
270
|
+
gridDotsFadeCenter: () => gridDotsPattern("grid-dots-fade-center", maskCenter),
|
|
271
|
+
gradientGlowTop: () => gradientGlow("top"),
|
|
272
|
+
gradientGlowBottom: () => gradientGlow("bottom"),
|
|
273
|
+
spotlightLeft: () => spotlight("left"),
|
|
274
|
+
spotlightRight: () => spotlight("right")
|
|
275
|
+
};
|
|
276
|
+
var inlinePatternStyles = {
|
|
277
|
+
radialGradientTop: {
|
|
278
|
+
background: "radial-gradient(125% 125% at 50% 10%, hsl(var(--background)) 40%, hsl(var(--primary)) 100%)"
|
|
279
|
+
},
|
|
280
|
+
radialGradientBottom: {
|
|
281
|
+
background: "radial-gradient(125% 125% at 50% 90%, hsl(var(--background)) 40%, hsl(var(--primary)) 100%)"
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
function PatternBackground({
|
|
285
|
+
pattern,
|
|
286
|
+
opacity = 0.08,
|
|
287
|
+
className,
|
|
288
|
+
style
|
|
289
|
+
}) {
|
|
290
|
+
if (!pattern) {
|
|
291
|
+
return null;
|
|
292
|
+
}
|
|
293
|
+
if (pattern in inlinePatternStyles) {
|
|
294
|
+
const inlineStyle = inlinePatternStyles[pattern];
|
|
295
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
296
|
+
"div",
|
|
297
|
+
{
|
|
298
|
+
className: cn("pointer-events-none absolute inset-0 z-0", className),
|
|
299
|
+
style: { ...inlineStyle, opacity, ...style },
|
|
300
|
+
"aria-hidden": "true"
|
|
301
|
+
}
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
if (pattern in patternOverlays) {
|
|
305
|
+
const Overlay = patternOverlays[pattern];
|
|
306
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
307
|
+
"div",
|
|
308
|
+
{
|
|
309
|
+
className: cn("pointer-events-none absolute inset-0 z-0", className),
|
|
310
|
+
style: { opacity, ...style },
|
|
311
|
+
"aria-hidden": "true",
|
|
312
|
+
children: Overlay()
|
|
313
|
+
}
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
const patternUrl = pattern in patternSvgs ? patternSvgs[pattern] : pattern;
|
|
317
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
318
|
+
"div",
|
|
319
|
+
{
|
|
320
|
+
className: cn("pointer-events-none absolute inset-0 z-0", className),
|
|
321
|
+
style: {
|
|
322
|
+
backgroundImage: `url(${patternUrl})`,
|
|
323
|
+
backgroundRepeat: "repeat",
|
|
324
|
+
backgroundSize: "auto",
|
|
325
|
+
opacity,
|
|
326
|
+
...style
|
|
327
|
+
},
|
|
328
|
+
"aria-hidden": "true"
|
|
329
|
+
}
|
|
330
|
+
);
|
|
331
|
+
}
|
|
332
|
+
var backgroundStyles = {
|
|
333
|
+
default: "bg-background text-foreground",
|
|
334
|
+
white: "bg-white text-dark",
|
|
335
|
+
gray: "bg-muted/30 text-foreground",
|
|
336
|
+
dark: "bg-foreground text-background",
|
|
337
|
+
transparent: "bg-transparent text-foreground",
|
|
338
|
+
gradient: "bg-linear-to-br from-primary via-primary/90 to-foreground text-primary-foreground",
|
|
339
|
+
primary: "bg-primary text-primary-foreground",
|
|
340
|
+
secondary: "bg-secondary text-secondary-foreground",
|
|
341
|
+
muted: "bg-muted text-muted-foreground"
|
|
342
|
+
};
|
|
343
|
+
var spacingStyles = {
|
|
344
|
+
none: "py-0 md:py-0",
|
|
345
|
+
sm: "py-12 md:py-16",
|
|
346
|
+
md: "py-16 md:py-24",
|
|
347
|
+
lg: "py-20 md:py-32",
|
|
348
|
+
xl: "py-24 md:py-40"
|
|
349
|
+
};
|
|
350
|
+
var predefinedSpacings = ["none", "sm", "md", "lg", "xl"];
|
|
351
|
+
var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
|
|
352
|
+
var Section = React6__namespace.default.forwardRef(
|
|
353
|
+
({
|
|
354
|
+
id,
|
|
355
|
+
title,
|
|
356
|
+
subtitle,
|
|
357
|
+
children,
|
|
358
|
+
className,
|
|
359
|
+
style,
|
|
360
|
+
background = "default",
|
|
361
|
+
spacing = "lg",
|
|
362
|
+
pattern,
|
|
363
|
+
patternOpacity,
|
|
364
|
+
patternClassName,
|
|
365
|
+
containerClassName,
|
|
366
|
+
containerMaxWidth = "xl",
|
|
367
|
+
...props
|
|
368
|
+
}, ref) => {
|
|
369
|
+
const effectivePatternOpacity = patternOpacity !== void 0 ? patternOpacity : pattern ? 1 : 0;
|
|
370
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
371
|
+
"section",
|
|
372
|
+
{
|
|
373
|
+
ref,
|
|
374
|
+
id,
|
|
375
|
+
className: cn(
|
|
376
|
+
"relative",
|
|
377
|
+
pattern ? "overflow-hidden" : null,
|
|
378
|
+
backgroundStyles[background],
|
|
379
|
+
isPredefinedSpacing(spacing) ? spacingStyles[spacing] : spacing,
|
|
380
|
+
className
|
|
381
|
+
),
|
|
382
|
+
style,
|
|
383
|
+
...props,
|
|
384
|
+
children: [
|
|
385
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
386
|
+
PatternBackground,
|
|
387
|
+
{
|
|
388
|
+
pattern,
|
|
389
|
+
opacity: effectivePatternOpacity,
|
|
390
|
+
className: patternClassName
|
|
391
|
+
}
|
|
392
|
+
),
|
|
393
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
394
|
+
Container,
|
|
395
|
+
{
|
|
396
|
+
maxWidth: containerMaxWidth,
|
|
397
|
+
className: cn("relative z-10", containerClassName),
|
|
398
|
+
children: [
|
|
399
|
+
(title || subtitle) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-12 text-center md:mb-16", children: [
|
|
400
|
+
subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-sm font-semibold uppercase tracking-wider text-primary", children: subtitle }),
|
|
401
|
+
title && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl", children: title })
|
|
402
|
+
] }),
|
|
403
|
+
children
|
|
404
|
+
]
|
|
405
|
+
}
|
|
406
|
+
)
|
|
407
|
+
]
|
|
408
|
+
}
|
|
409
|
+
);
|
|
410
|
+
}
|
|
411
|
+
);
|
|
412
|
+
Section.displayName = "Section";
|
|
38
413
|
function normalizePhoneNumber(input) {
|
|
39
414
|
const trimmed = input.trim();
|
|
40
415
|
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
@@ -110,7 +485,7 @@ function useNavigation({
|
|
|
110
485
|
href,
|
|
111
486
|
onClick
|
|
112
487
|
} = {}) {
|
|
113
|
-
const linkType =
|
|
488
|
+
const linkType = React6__namespace.useMemo(() => {
|
|
114
489
|
if (!href || href.trim() === "") {
|
|
115
490
|
return onClick ? "none" : "none";
|
|
116
491
|
}
|
|
@@ -131,7 +506,7 @@ function useNavigation({
|
|
|
131
506
|
return "internal";
|
|
132
507
|
}
|
|
133
508
|
}, [href, onClick]);
|
|
134
|
-
const normalizedHref =
|
|
509
|
+
const normalizedHref = React6__namespace.useMemo(() => {
|
|
135
510
|
if (!href || href.trim() === "") {
|
|
136
511
|
return void 0;
|
|
137
512
|
}
|
|
@@ -149,7 +524,7 @@ function useNavigation({
|
|
|
149
524
|
return trimmed;
|
|
150
525
|
}
|
|
151
526
|
}, [href, linkType]);
|
|
152
|
-
const target =
|
|
527
|
+
const target = React6__namespace.useMemo(() => {
|
|
153
528
|
switch (linkType) {
|
|
154
529
|
case "external":
|
|
155
530
|
return "_blank";
|
|
@@ -162,7 +537,7 @@ function useNavigation({
|
|
|
162
537
|
return void 0;
|
|
163
538
|
}
|
|
164
539
|
}, [linkType]);
|
|
165
|
-
const rel =
|
|
540
|
+
const rel = React6__namespace.useMemo(() => {
|
|
166
541
|
if (linkType === "external") {
|
|
167
542
|
return "noopener noreferrer";
|
|
168
543
|
}
|
|
@@ -171,7 +546,7 @@ function useNavigation({
|
|
|
171
546
|
const isExternal = linkType === "external";
|
|
172
547
|
const isInternal = linkType === "internal";
|
|
173
548
|
const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
|
|
174
|
-
const handleClick =
|
|
549
|
+
const handleClick = React6__namespace.useCallback(
|
|
175
550
|
(event) => {
|
|
176
551
|
if (onClick) {
|
|
177
552
|
try {
|
|
@@ -355,7 +730,7 @@ var buttonVariants = classVarianceAuthority.cva(baseStyles, {
|
|
|
355
730
|
size: "default"
|
|
356
731
|
}
|
|
357
732
|
});
|
|
358
|
-
var Pressable =
|
|
733
|
+
var Pressable = React6__namespace.forwardRef(
|
|
359
734
|
({
|
|
360
735
|
children,
|
|
361
736
|
className,
|
|
@@ -461,10 +836,10 @@ function DynamicIcon({
|
|
|
461
836
|
className,
|
|
462
837
|
alt
|
|
463
838
|
}) {
|
|
464
|
-
const [svgContent, setSvgContent] =
|
|
465
|
-
const [isLoading, setIsLoading] =
|
|
466
|
-
const [error, setError] =
|
|
467
|
-
const { url, iconName } =
|
|
839
|
+
const [svgContent, setSvgContent] = React6__namespace.useState(null);
|
|
840
|
+
const [isLoading, setIsLoading] = React6__namespace.useState(true);
|
|
841
|
+
const [error, setError] = React6__namespace.useState(null);
|
|
842
|
+
const { url, iconName } = React6__namespace.useMemo(() => {
|
|
468
843
|
const separator = name.includes("/") ? "/" : ":";
|
|
469
844
|
const [prefix, iconName2] = name.split(separator);
|
|
470
845
|
const baseUrl = `https://icons.opensite.ai/api/icon/${prefix}/${iconName2}?format=svg&width=${size}&height=${size}`;
|
|
@@ -473,7 +848,7 @@ function DynamicIcon({
|
|
|
473
848
|
iconName: iconName2
|
|
474
849
|
};
|
|
475
850
|
}, [name, size]);
|
|
476
|
-
|
|
851
|
+
React6__namespace.useEffect(() => {
|
|
477
852
|
let isMounted = true;
|
|
478
853
|
const fetchSvg = async () => {
|
|
479
854
|
const cached = svgCache.get(url);
|
|
@@ -558,9 +933,9 @@ function processSvgForCurrentColor(svg) {
|
|
|
558
933
|
);
|
|
559
934
|
return processed;
|
|
560
935
|
}
|
|
561
|
-
var CarouselContext =
|
|
936
|
+
var CarouselContext = React6__namespace.createContext(null);
|
|
562
937
|
function useCarousel() {
|
|
563
|
-
const context =
|
|
938
|
+
const context = React6__namespace.useContext(CarouselContext);
|
|
564
939
|
if (!context) {
|
|
565
940
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
566
941
|
}
|
|
@@ -582,20 +957,20 @@ function Carousel({
|
|
|
582
957
|
},
|
|
583
958
|
plugins
|
|
584
959
|
);
|
|
585
|
-
const [canScrollPrev, setCanScrollPrev] =
|
|
586
|
-
const [canScrollNext, setCanScrollNext] =
|
|
587
|
-
const onSelect =
|
|
960
|
+
const [canScrollPrev, setCanScrollPrev] = React6__namespace.useState(false);
|
|
961
|
+
const [canScrollNext, setCanScrollNext] = React6__namespace.useState(false);
|
|
962
|
+
const onSelect = React6__namespace.useCallback((api2) => {
|
|
588
963
|
if (!api2) return;
|
|
589
964
|
setCanScrollPrev(api2.canScrollPrev());
|
|
590
965
|
setCanScrollNext(api2.canScrollNext());
|
|
591
966
|
}, []);
|
|
592
|
-
const scrollPrev =
|
|
967
|
+
const scrollPrev = React6__namespace.useCallback(() => {
|
|
593
968
|
api?.scrollPrev();
|
|
594
969
|
}, [api]);
|
|
595
|
-
const scrollNext =
|
|
970
|
+
const scrollNext = React6__namespace.useCallback(() => {
|
|
596
971
|
api?.scrollNext();
|
|
597
972
|
}, [api]);
|
|
598
|
-
const handleKeyDown =
|
|
973
|
+
const handleKeyDown = React6__namespace.useCallback(
|
|
599
974
|
(event) => {
|
|
600
975
|
if (event.key === "ArrowLeft") {
|
|
601
976
|
event.preventDefault();
|
|
@@ -607,11 +982,11 @@ function Carousel({
|
|
|
607
982
|
},
|
|
608
983
|
[scrollPrev, scrollNext]
|
|
609
984
|
);
|
|
610
|
-
|
|
985
|
+
React6__namespace.useEffect(() => {
|
|
611
986
|
if (!api || !setApi) return;
|
|
612
987
|
setApi(api);
|
|
613
988
|
}, [api, setApi]);
|
|
614
|
-
|
|
989
|
+
React6__namespace.useEffect(() => {
|
|
615
990
|
if (!api) return;
|
|
616
991
|
onSelect(api);
|
|
617
992
|
api.on("reInit", onSelect);
|
|
@@ -754,17 +1129,28 @@ function FeatureShowcase({
|
|
|
754
1129
|
contentClassName,
|
|
755
1130
|
mediaClassName,
|
|
756
1131
|
arrowClassName,
|
|
757
|
-
equalizeOnMobile
|
|
758
|
-
stretchMediaOnMobile
|
|
1132
|
+
equalizeOnMobile,
|
|
1133
|
+
stretchMediaOnMobile,
|
|
1134
|
+
background,
|
|
1135
|
+
spacing,
|
|
1136
|
+
pattern,
|
|
1137
|
+
patternOpacity,
|
|
1138
|
+
patternClassName
|
|
759
1139
|
}) {
|
|
760
|
-
const baseArrowClassName =
|
|
761
|
-
|
|
1140
|
+
const baseArrowClassName = React6.useMemo(
|
|
1141
|
+
() => "bottom-4 top-auto size-12 translate-y-0 rounded-full border border-current bg-transparent text-current shadow-sm focus:ring-current focus:ring-offset-2 focus:ring-offset-transparent hover:bg-current/10 md:bottom-6",
|
|
1142
|
+
[]
|
|
1143
|
+
);
|
|
1144
|
+
const [mobileSlideHeight, setMobileSlideHeight] = React6.useState(
|
|
762
1145
|
null
|
|
763
1146
|
);
|
|
764
|
-
const slideRefs =
|
|
765
|
-
const mediaWrapperClassName =
|
|
766
|
-
|
|
767
|
-
|
|
1147
|
+
const slideRefs = React6.useRef([]);
|
|
1148
|
+
const mediaWrapperClassName = React6.useMemo(
|
|
1149
|
+
() => equalizeOnMobile && stretchMediaOnMobile ? "flex-1 min-h-0 md:flex-none" : "",
|
|
1150
|
+
[equalizeOnMobile, stretchMediaOnMobile]
|
|
1151
|
+
);
|
|
1152
|
+
React6.useEffect(() => {
|
|
1153
|
+
if (!equalizeOnMobile || !items || items.length === 0) {
|
|
768
1154
|
setMobileSlideHeight(null);
|
|
769
1155
|
return;
|
|
770
1156
|
}
|
|
@@ -796,10 +1182,10 @@ function FeatureShowcase({
|
|
|
796
1182
|
window.removeEventListener("resize", updateHeights);
|
|
797
1183
|
resizeObserver?.disconnect();
|
|
798
1184
|
};
|
|
799
|
-
}, [equalizeOnMobile, items
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Carousel, { className: carouselClassName, children: [
|
|
1185
|
+
}, [equalizeOnMobile, items]);
|
|
1186
|
+
const carouselContent = React6.useMemo(() => {
|
|
1187
|
+
if (!items || items.length === 0) return null;
|
|
1188
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Carousel, { className: carouselClassName, children: [
|
|
803
1189
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pb-18 md:pb-24", children: /* @__PURE__ */ jsxRuntime.jsx(CarouselContent, { className: "ease-in", children: items.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsx(CarouselItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
804
1190
|
"div",
|
|
805
1191
|
{
|
|
@@ -812,8 +1198,8 @@ function FeatureShowcase({
|
|
|
812
1198
|
slideClassName
|
|
813
1199
|
),
|
|
814
1200
|
children: [
|
|
815
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-full", contentClassName), children: item.content }),
|
|
816
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1201
|
+
item.content && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-full", contentClassName), children: item.content }),
|
|
1202
|
+
item.mediaComponent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
817
1203
|
"div",
|
|
818
1204
|
{
|
|
819
1205
|
className: cn(
|
|
@@ -839,8 +1225,23 @@ function FeatureShowcase({
|
|
|
839
1225
|
className: cn(baseArrowClassName, "right-4 md:right-6", arrowClassName)
|
|
840
1226
|
}
|
|
841
1227
|
)
|
|
842
|
-
] })
|
|
843
|
-
]
|
|
1228
|
+
] });
|
|
1229
|
+
}, [items, carouselClassName, equalizeOnMobile, mobileSlideHeight, slideClassName, contentClassName, mediaWrapperClassName, mediaClassName, baseArrowClassName, arrowClassName]);
|
|
1230
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1231
|
+
Section,
|
|
1232
|
+
{
|
|
1233
|
+
background,
|
|
1234
|
+
spacing,
|
|
1235
|
+
pattern,
|
|
1236
|
+
patternOpacity,
|
|
1237
|
+
patternClassName,
|
|
1238
|
+
className,
|
|
1239
|
+
children: [
|
|
1240
|
+
children,
|
|
1241
|
+
carouselContent
|
|
1242
|
+
]
|
|
1243
|
+
}
|
|
1244
|
+
);
|
|
844
1245
|
}
|
|
845
1246
|
|
|
846
1247
|
exports.FeatureShowcase = FeatureShowcase;
|