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