@almadar/ui 2.24.5 → 2.24.9
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/avl/index.cjs +43 -43
- package/dist/avl/index.js +43 -43
- package/dist/components/atoms/AnimatedGraphic.d.ts +29 -0
- package/dist/components/atoms/AnimatedReveal.d.ts +24 -0
- package/dist/components/atoms/index.d.ts +2 -0
- package/dist/components/index.cjs +2277 -1929
- package/dist/components/index.js +1415 -1069
- package/dist/components/organisms/debug/RuntimeDebugger.d.ts +2 -2
- package/dist/components/organisms/game/three/index.cjs +41 -41
- package/dist/components/organisms/game/three/index.js +41 -41
- package/dist/docs/index.cjs +144 -142
- package/dist/docs/index.js +144 -142
- package/dist/illustrations/index.cjs +17 -17
- package/dist/illustrations/index.js +17 -17
- package/dist/lib/index.cjs +62 -50
- package/dist/lib/index.js +62 -50
- package/dist/marketing/index.cjs +457 -172
- package/dist/marketing/index.d.cts +54 -1
- package/dist/marketing/index.d.ts +4 -0
- package/dist/marketing/index.js +457 -174
- package/dist/providers/index.cjs +628 -329
- package/dist/providers/index.js +540 -241
- package/dist/runtime/index.cjs +2151 -1770
- package/dist/runtime/index.js +1392 -1011
- package/package.json +1 -1
- package/tailwind-preset.cjs +32 -134
package/dist/marketing/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React5, { createContext, useCallback,
|
|
1
|
+
import React5, { createContext, useCallback, useState, useRef, useEffect, useContext, useId } from 'react';
|
|
2
2
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
3
3
|
import * as LucideIcons from 'lucide-react';
|
|
4
4
|
import { Loader2, Check, User } from 'lucide-react';
|
|
@@ -2614,28 +2614,28 @@ var marginYStyles = {
|
|
|
2614
2614
|
};
|
|
2615
2615
|
var bgStyles = {
|
|
2616
2616
|
transparent: "bg-transparent",
|
|
2617
|
-
primary: "bg-
|
|
2618
|
-
secondary: "bg-
|
|
2619
|
-
muted: "bg-
|
|
2620
|
-
accent: "bg-
|
|
2621
|
-
surface: "bg-
|
|
2622
|
-
overlay: "bg-
|
|
2617
|
+
primary: "bg-primary text-primary-foreground",
|
|
2618
|
+
secondary: "bg-secondary text-secondary-foreground",
|
|
2619
|
+
muted: "bg-muted text-foreground",
|
|
2620
|
+
accent: "bg-accent text-accent-foreground",
|
|
2621
|
+
surface: "bg-card",
|
|
2622
|
+
overlay: "bg-card/80 backdrop-blur-sm"
|
|
2623
2623
|
};
|
|
2624
2624
|
var roundedStyles = {
|
|
2625
2625
|
none: "rounded-none",
|
|
2626
|
-
sm: "rounded-
|
|
2627
|
-
md: "rounded-
|
|
2628
|
-
lg: "rounded-
|
|
2629
|
-
xl: "rounded-
|
|
2630
|
-
"2xl": "rounded-
|
|
2631
|
-
full: "rounded-
|
|
2626
|
+
sm: "rounded-sm",
|
|
2627
|
+
md: "rounded-md",
|
|
2628
|
+
lg: "rounded-lg",
|
|
2629
|
+
xl: "rounded-xl",
|
|
2630
|
+
"2xl": "rounded-xl",
|
|
2631
|
+
full: "rounded-full"
|
|
2632
2632
|
};
|
|
2633
2633
|
var shadowStyles = {
|
|
2634
2634
|
none: "shadow-none",
|
|
2635
|
-
sm: "shadow-
|
|
2636
|
-
md: "shadow
|
|
2637
|
-
lg: "shadow-
|
|
2638
|
-
xl: "shadow-
|
|
2635
|
+
sm: "shadow-sm",
|
|
2636
|
+
md: "shadow",
|
|
2637
|
+
lg: "shadow-lg",
|
|
2638
|
+
xl: "shadow-lg"
|
|
2639
2639
|
};
|
|
2640
2640
|
var displayStyles = {
|
|
2641
2641
|
block: "block",
|
|
@@ -2723,7 +2723,7 @@ var Box = React5.forwardRef(
|
|
|
2723
2723
|
// Background
|
|
2724
2724
|
bgStyles[bg],
|
|
2725
2725
|
// Border - uses theme variables
|
|
2726
|
-
border && "border-[length:var(--border-width)] border-
|
|
2726
|
+
border && "border-[length:var(--border-width)] border-border",
|
|
2727
2727
|
// Rounded
|
|
2728
2728
|
roundedStyles[rounded],
|
|
2729
2729
|
// Shadow
|
|
@@ -2830,30 +2830,30 @@ var Stack = ({
|
|
|
2830
2830
|
var VStack = (props) => /* @__PURE__ */ jsx(Stack, { direction: "vertical", ...props });
|
|
2831
2831
|
var HStack = (props) => /* @__PURE__ */ jsx(Stack, { direction: "horizontal", ...props });
|
|
2832
2832
|
var variantStyles = {
|
|
2833
|
-
h1: "text-4xl font-bold tracking-tight text-
|
|
2834
|
-
h2: "text-3xl font-bold tracking-tight text-
|
|
2835
|
-
h3: "text-2xl font-bold text-
|
|
2836
|
-
h4: "text-xl font-bold text-
|
|
2837
|
-
h5: "text-lg font-bold text-
|
|
2838
|
-
h6: "text-base font-bold text-
|
|
2839
|
-
heading: "text-2xl font-bold text-
|
|
2840
|
-
subheading: "text-lg font-semibold text-
|
|
2841
|
-
body1: "text-base font-normal text-
|
|
2842
|
-
body2: "text-sm font-normal text-
|
|
2843
|
-
body: "text-base font-normal text-
|
|
2844
|
-
caption: "text-xs font-normal text-
|
|
2845
|
-
overline: "text-xs uppercase tracking-wide font-bold text-
|
|
2846
|
-
small: "text-sm font-normal text-
|
|
2847
|
-
large: "text-lg font-medium text-
|
|
2848
|
-
label: "text-sm font-medium text-
|
|
2833
|
+
h1: "text-4xl font-bold tracking-tight text-foreground",
|
|
2834
|
+
h2: "text-3xl font-bold tracking-tight text-foreground",
|
|
2835
|
+
h3: "text-2xl font-bold text-foreground",
|
|
2836
|
+
h4: "text-xl font-bold text-foreground",
|
|
2837
|
+
h5: "text-lg font-bold text-foreground",
|
|
2838
|
+
h6: "text-base font-bold text-foreground",
|
|
2839
|
+
heading: "text-2xl font-bold text-foreground",
|
|
2840
|
+
subheading: "text-lg font-semibold text-foreground",
|
|
2841
|
+
body1: "text-base font-normal text-foreground",
|
|
2842
|
+
body2: "text-sm font-normal text-foreground",
|
|
2843
|
+
body: "text-base font-normal text-foreground",
|
|
2844
|
+
caption: "text-xs font-normal text-muted-foreground",
|
|
2845
|
+
overline: "text-xs uppercase tracking-wide font-bold text-muted-foreground",
|
|
2846
|
+
small: "text-sm font-normal text-foreground",
|
|
2847
|
+
large: "text-lg font-medium text-foreground",
|
|
2848
|
+
label: "text-sm font-medium text-foreground"
|
|
2849
2849
|
};
|
|
2850
2850
|
var colorStyles = {
|
|
2851
|
-
primary: "text-
|
|
2852
|
-
secondary: "text-
|
|
2853
|
-
muted: "text-
|
|
2854
|
-
error: "text-
|
|
2855
|
-
success: "text-
|
|
2856
|
-
warning: "text-
|
|
2851
|
+
primary: "text-foreground",
|
|
2852
|
+
secondary: "text-muted-foreground",
|
|
2853
|
+
muted: "text-muted-foreground",
|
|
2854
|
+
error: "text-error",
|
|
2855
|
+
success: "text-success",
|
|
2856
|
+
warning: "text-warning",
|
|
2857
2857
|
inherit: "text-inherit"
|
|
2858
2858
|
};
|
|
2859
2859
|
var weightStyles = {
|
|
@@ -3016,49 +3016,50 @@ var Icon = ({
|
|
|
3016
3016
|
Icon.displayName = "Icon";
|
|
3017
3017
|
var variantStyles2 = {
|
|
3018
3018
|
primary: [
|
|
3019
|
-
"bg-
|
|
3019
|
+
"bg-primary text-primary-foreground",
|
|
3020
3020
|
"border-none",
|
|
3021
|
-
"shadow-
|
|
3022
|
-
"hover:bg-
|
|
3023
|
-
"active:scale-[var(--active-scale)] active:shadow-
|
|
3021
|
+
"shadow-sm",
|
|
3022
|
+
"hover:bg-primary-hover hover:shadow-lg",
|
|
3023
|
+
"active:scale-[var(--active-scale)] active:shadow-sm"
|
|
3024
3024
|
].join(" "),
|
|
3025
3025
|
secondary: [
|
|
3026
|
-
"bg-
|
|
3027
|
-
"border-
|
|
3028
|
-
"hover:bg-
|
|
3026
|
+
"bg-transparent text-accent",
|
|
3027
|
+
"border border-accent",
|
|
3028
|
+
"hover:bg-accent hover:text-white hover:border-accent",
|
|
3029
3029
|
"active:scale-[var(--active-scale)]"
|
|
3030
3030
|
].join(" "),
|
|
3031
3031
|
ghost: [
|
|
3032
|
-
"bg-transparent text-
|
|
3033
|
-
"
|
|
3032
|
+
"bg-transparent text-muted-foreground",
|
|
3033
|
+
"border border-transparent",
|
|
3034
|
+
"hover:text-primary-foreground hover:bg-primary hover:border-primary",
|
|
3034
3035
|
"active:scale-[var(--active-scale)]"
|
|
3035
3036
|
].join(" "),
|
|
3036
3037
|
danger: [
|
|
3037
|
-
"bg-
|
|
3038
|
-
"border-[length:var(--border-width)] border-
|
|
3039
|
-
"shadow-
|
|
3040
|
-
"hover:bg-
|
|
3041
|
-
"active:scale-[var(--active-scale)] active:shadow-
|
|
3038
|
+
"bg-surface text-error",
|
|
3039
|
+
"border-[length:var(--border-width)] border-error",
|
|
3040
|
+
"shadow-sm",
|
|
3041
|
+
"hover:bg-error hover:text-error-foreground hover:shadow-lg",
|
|
3042
|
+
"active:scale-[var(--active-scale)] active:shadow-sm"
|
|
3042
3043
|
].join(" "),
|
|
3043
3044
|
success: [
|
|
3044
|
-
"bg-
|
|
3045
|
-
"border-[length:var(--border-width)] border-
|
|
3046
|
-
"shadow-
|
|
3047
|
-
"hover:bg-
|
|
3048
|
-
"active:scale-[var(--active-scale)] active:shadow-
|
|
3045
|
+
"bg-surface text-success",
|
|
3046
|
+
"border-[length:var(--border-width)] border-success",
|
|
3047
|
+
"shadow-sm",
|
|
3048
|
+
"hover:bg-success hover:text-success-foreground hover:shadow-lg",
|
|
3049
|
+
"active:scale-[var(--active-scale)] active:shadow-sm"
|
|
3049
3050
|
].join(" "),
|
|
3050
3051
|
warning: [
|
|
3051
|
-
"bg-
|
|
3052
|
-
"border-[length:var(--border-width)] border-
|
|
3053
|
-
"shadow-
|
|
3054
|
-
"hover:bg-
|
|
3055
|
-
"active:scale-[var(--active-scale)] active:shadow-
|
|
3052
|
+
"bg-surface text-warning",
|
|
3053
|
+
"border-[length:var(--border-width)] border-warning",
|
|
3054
|
+
"shadow-sm",
|
|
3055
|
+
"hover:bg-warning hover:text-warning-foreground hover:shadow-lg",
|
|
3056
|
+
"active:scale-[var(--active-scale)] active:shadow-sm"
|
|
3056
3057
|
].join(" "),
|
|
3057
3058
|
// "default" is an alias for secondary
|
|
3058
3059
|
default: [
|
|
3059
|
-
"bg-
|
|
3060
|
-
"border-[length:var(--border-width-thin)] border-
|
|
3061
|
-
"hover:bg-
|
|
3060
|
+
"bg-secondary text-secondary-foreground",
|
|
3061
|
+
"border-[length:var(--border-width-thin)] border-border",
|
|
3062
|
+
"hover:bg-secondary-hover",
|
|
3062
3063
|
"active:scale-[var(--active-scale)]"
|
|
3063
3064
|
].join(" ")
|
|
3064
3065
|
};
|
|
@@ -3129,9 +3130,10 @@ var Button = React5.forwardRef(
|
|
|
3129
3130
|
className: cn(
|
|
3130
3131
|
"inline-flex items-center justify-center gap-2",
|
|
3131
3132
|
"font-[var(--font-weight-medium)]",
|
|
3132
|
-
"rounded-
|
|
3133
|
+
"rounded-sm",
|
|
3134
|
+
"cursor-pointer",
|
|
3133
3135
|
"transition-all duration-[var(--transition-normal)]",
|
|
3134
|
-
"focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-
|
|
3136
|
+
"focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-ring focus:ring-offset-[length:var(--focus-ring-offset)]",
|
|
3135
3137
|
"disabled:opacity-50 disabled:cursor-not-allowed",
|
|
3136
3138
|
variantStyles2[variant],
|
|
3137
3139
|
sizeStyles2[size],
|
|
@@ -3152,34 +3154,34 @@ var Button = React5.forwardRef(
|
|
|
3152
3154
|
Button.displayName = "Button";
|
|
3153
3155
|
var variantStyles3 = {
|
|
3154
3156
|
default: [
|
|
3155
|
-
"bg-
|
|
3156
|
-
"border-[length:var(--border-width-thin)] border-
|
|
3157
|
+
"bg-muted text-foreground",
|
|
3158
|
+
"border-[length:var(--border-width-thin)] border-border"
|
|
3157
3159
|
].join(" "),
|
|
3158
|
-
primary: "bg-
|
|
3159
|
-
secondary: "bg-
|
|
3160
|
+
primary: "bg-primary text-primary-foreground",
|
|
3161
|
+
secondary: "bg-secondary text-secondary-foreground",
|
|
3160
3162
|
success: [
|
|
3161
|
-
"bg-
|
|
3162
|
-
"border-[length:var(--border-width)] border-
|
|
3163
|
+
"bg-surface text-success",
|
|
3164
|
+
"border-[length:var(--border-width)] border-success"
|
|
3163
3165
|
].join(" "),
|
|
3164
3166
|
warning: [
|
|
3165
|
-
"bg-
|
|
3166
|
-
"border-[length:var(--border-width)] border-
|
|
3167
|
+
"bg-surface text-warning",
|
|
3168
|
+
"border-[length:var(--border-width)] border-warning"
|
|
3167
3169
|
].join(" "),
|
|
3168
3170
|
danger: [
|
|
3169
|
-
"bg-
|
|
3170
|
-
"border-[length:var(--border-width)] border-
|
|
3171
|
+
"bg-surface text-error",
|
|
3172
|
+
"border-[length:var(--border-width)] border-error"
|
|
3171
3173
|
].join(" "),
|
|
3172
3174
|
error: [
|
|
3173
|
-
"bg-
|
|
3174
|
-
"border-[length:var(--border-width)] border-
|
|
3175
|
+
"bg-surface text-error",
|
|
3176
|
+
"border-[length:var(--border-width)] border-error"
|
|
3175
3177
|
].join(" "),
|
|
3176
3178
|
info: [
|
|
3177
|
-
"bg-
|
|
3178
|
-
"border-[length:var(--border-width)] border-
|
|
3179
|
+
"bg-surface text-info",
|
|
3180
|
+
"border-[length:var(--border-width)] border-info"
|
|
3179
3181
|
].join(" "),
|
|
3180
3182
|
neutral: [
|
|
3181
|
-
"bg-
|
|
3182
|
-
"border-[length:var(--border-width-thin)] border-
|
|
3183
|
+
"bg-muted text-muted-foreground",
|
|
3184
|
+
"border-[length:var(--border-width-thin)] border-border"
|
|
3183
3185
|
].join(" ")
|
|
3184
3186
|
};
|
|
3185
3187
|
var sizeStyles3 = {
|
|
@@ -3199,7 +3201,7 @@ var Badge = React5.forwardRef(
|
|
|
3199
3201
|
{
|
|
3200
3202
|
ref,
|
|
3201
3203
|
className: cn(
|
|
3202
|
-
"inline-flex items-center gap-1 font-bold rounded-
|
|
3204
|
+
"inline-flex items-center gap-1 font-bold rounded-sm",
|
|
3203
3205
|
variantStyles3[variant],
|
|
3204
3206
|
sizeStyles3[size],
|
|
3205
3207
|
className
|
|
@@ -3216,34 +3218,34 @@ var Badge = React5.forwardRef(
|
|
|
3216
3218
|
Badge.displayName = "Badge";
|
|
3217
3219
|
var variantStyles4 = {
|
|
3218
3220
|
default: [
|
|
3219
|
-
"bg-
|
|
3220
|
-
"border-[length:var(--border-width)] border-
|
|
3221
|
-
"shadow-
|
|
3221
|
+
"bg-card",
|
|
3222
|
+
"border-[length:var(--border-width)] border-border",
|
|
3223
|
+
"shadow-sm",
|
|
3222
3224
|
"transition-all duration-[var(--transition-normal)]",
|
|
3223
|
-
"hover:shadow-
|
|
3225
|
+
"hover:shadow-lg hover:-translate-y-0.5"
|
|
3224
3226
|
].join(" "),
|
|
3225
3227
|
bordered: [
|
|
3226
|
-
"bg-
|
|
3227
|
-
"border-[length:var(--border-width)] border-
|
|
3228
|
-
"shadow-
|
|
3228
|
+
"bg-card",
|
|
3229
|
+
"border-[length:var(--border-width)] border-border",
|
|
3230
|
+
"shadow-sm",
|
|
3229
3231
|
"transition-all duration-[var(--transition-normal)]",
|
|
3230
|
-
"hover:shadow-
|
|
3232
|
+
"hover:shadow-lg hover:-translate-y-0.5"
|
|
3231
3233
|
].join(" "),
|
|
3232
3234
|
elevated: [
|
|
3233
|
-
"bg-
|
|
3234
|
-
"border-[length:var(--border-width)] border-
|
|
3235
|
-
"shadow
|
|
3235
|
+
"bg-card",
|
|
3236
|
+
"border-[length:var(--border-width)] border-border",
|
|
3237
|
+
"shadow",
|
|
3236
3238
|
"transition-all duration-[var(--transition-normal)]",
|
|
3237
|
-
"hover:shadow-
|
|
3239
|
+
"hover:shadow-lg hover:-translate-y-0.5"
|
|
3238
3240
|
].join(" "),
|
|
3239
3241
|
// Interactive variant with theme-specific hover effects
|
|
3240
3242
|
interactive: [
|
|
3241
|
-
"bg-
|
|
3242
|
-
"border-[length:var(--border-width)] border-
|
|
3243
|
-
"shadow
|
|
3243
|
+
"bg-card",
|
|
3244
|
+
"border-[length:var(--border-width)] border-border",
|
|
3245
|
+
"shadow",
|
|
3244
3246
|
"cursor-pointer",
|
|
3245
3247
|
"transition-all duration-[var(--transition-normal)]",
|
|
3246
|
-
"hover:shadow-
|
|
3248
|
+
"hover:shadow-lg"
|
|
3247
3249
|
].join(" ")
|
|
3248
3250
|
};
|
|
3249
3251
|
var paddingStyles2 = {
|
|
@@ -3254,9 +3256,9 @@ var paddingStyles2 = {
|
|
|
3254
3256
|
};
|
|
3255
3257
|
var shadowStyles2 = {
|
|
3256
3258
|
none: "shadow-none",
|
|
3257
|
-
sm: "shadow-
|
|
3258
|
-
md: "shadow
|
|
3259
|
-
lg: "shadow-
|
|
3259
|
+
sm: "shadow-sm",
|
|
3260
|
+
md: "shadow",
|
|
3261
|
+
lg: "shadow-lg"
|
|
3260
3262
|
};
|
|
3261
3263
|
var Card = React5.forwardRef(
|
|
3262
3264
|
({
|
|
@@ -3274,7 +3276,7 @@ var Card = React5.forwardRef(
|
|
|
3274
3276
|
{
|
|
3275
3277
|
ref,
|
|
3276
3278
|
className: cn(
|
|
3277
|
-
"rounded-
|
|
3279
|
+
"rounded-md",
|
|
3278
3280
|
"transition-all duration-[var(--transition-normal)]",
|
|
3279
3281
|
variantStyles4[variant],
|
|
3280
3282
|
paddingStyles2[padding],
|
|
@@ -3284,8 +3286,8 @@ var Card = React5.forwardRef(
|
|
|
3284
3286
|
...props,
|
|
3285
3287
|
children: [
|
|
3286
3288
|
(title || subtitle) && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
|
|
3287
|
-
title && /* @__PURE__ */ jsx("h3", { className: "text-lg text-
|
|
3288
|
-
subtitle && /* @__PURE__ */ jsx("p", { className: "text-sm text-
|
|
3289
|
+
title && /* @__PURE__ */ jsx("h3", { className: "text-lg text-card-foreground font-[var(--font-weight-bold)]", children: title }),
|
|
3290
|
+
subtitle && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mt-1", children: subtitle })
|
|
3289
3291
|
] }),
|
|
3290
3292
|
children
|
|
3291
3293
|
]
|
|
@@ -3301,7 +3303,7 @@ var CardTitle = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
3301
3303
|
{
|
|
3302
3304
|
ref,
|
|
3303
3305
|
className: cn(
|
|
3304
|
-
"text-lg text-
|
|
3306
|
+
"text-lg text-card-foreground",
|
|
3305
3307
|
"font-[var(--font-weight-bold)]",
|
|
3306
3308
|
className
|
|
3307
3309
|
),
|
|
@@ -3338,7 +3340,7 @@ var Divider = ({
|
|
|
3338
3340
|
"div",
|
|
3339
3341
|
{
|
|
3340
3342
|
className: cn(
|
|
3341
|
-
"w-0 h-full border-l border-
|
|
3343
|
+
"w-0 h-full border-l border-border",
|
|
3342
3344
|
variantStyles5[variant],
|
|
3343
3345
|
className
|
|
3344
3346
|
),
|
|
@@ -3359,17 +3361,17 @@ var Divider = ({
|
|
|
3359
3361
|
"div",
|
|
3360
3362
|
{
|
|
3361
3363
|
className: cn(
|
|
3362
|
-
"flex-1 h-0 border-t border-
|
|
3364
|
+
"flex-1 h-0 border-t border-border",
|
|
3363
3365
|
variantStyles5[variant]
|
|
3364
3366
|
)
|
|
3365
3367
|
}
|
|
3366
3368
|
),
|
|
3367
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm text-
|
|
3369
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-foreground font-bold uppercase tracking-wide", children: label }),
|
|
3368
3370
|
/* @__PURE__ */ jsx(
|
|
3369
3371
|
"div",
|
|
3370
3372
|
{
|
|
3371
3373
|
className: cn(
|
|
3372
|
-
"flex-1 h-0 border-t border-
|
|
3374
|
+
"flex-1 h-0 border-t border-border",
|
|
3373
3375
|
variantStyles5[variant]
|
|
3374
3376
|
)
|
|
3375
3377
|
}
|
|
@@ -3382,7 +3384,7 @@ var Divider = ({
|
|
|
3382
3384
|
"div",
|
|
3383
3385
|
{
|
|
3384
3386
|
className: cn(
|
|
3385
|
-
"w-full h-0 border-t border-
|
|
3387
|
+
"w-full h-0 border-t border-border my-4",
|
|
3386
3388
|
variantStyles5[variant],
|
|
3387
3389
|
className
|
|
3388
3390
|
),
|
|
@@ -3457,8 +3459,8 @@ var Spacer = ({
|
|
|
3457
3459
|
};
|
|
3458
3460
|
var backgroundClasses = {
|
|
3459
3461
|
default: "",
|
|
3460
|
-
alt: "bg-
|
|
3461
|
-
dark: "bg-
|
|
3462
|
+
alt: "bg-surface",
|
|
3463
|
+
dark: "bg-foreground text-background",
|
|
3462
3464
|
gradient: [
|
|
3463
3465
|
"bg-gradient-to-b",
|
|
3464
3466
|
"from-[var(--color-primary)]/5",
|
|
@@ -3506,18 +3508,14 @@ var InstallBox = ({
|
|
|
3506
3508
|
/* @__PURE__ */ jsx(
|
|
3507
3509
|
Box,
|
|
3508
3510
|
{
|
|
3509
|
-
className:
|
|
3510
|
-
"bg-[var(--color-foreground)]",
|
|
3511
|
-
"rounded-[var(--radius-md)]",
|
|
3512
|
-
"border-[length:var(--border-width)] border-[var(--color-border)]"
|
|
3513
|
-
),
|
|
3511
|
+
className: "bg-surface rounded-md border-[length:var(--border-width)] border-border",
|
|
3514
3512
|
padding: "md",
|
|
3515
|
-
children: /* @__PURE__ */ jsxs(
|
|
3513
|
+
children: /* @__PURE__ */ jsxs(Box, { className: "flex items-center gap-3", children: [
|
|
3516
3514
|
/* @__PURE__ */ jsx(
|
|
3517
3515
|
Typography,
|
|
3518
3516
|
{
|
|
3519
3517
|
variant: "body2",
|
|
3520
|
-
className: "font-mono flex-1 min-w-0
|
|
3518
|
+
className: "font-mono flex-1 min-w-0 select-all",
|
|
3521
3519
|
truncate: true,
|
|
3522
3520
|
children: command
|
|
3523
3521
|
}
|
|
@@ -3526,10 +3524,12 @@ var InstallBox = ({
|
|
|
3526
3524
|
Button,
|
|
3527
3525
|
{
|
|
3528
3526
|
variant: "ghost",
|
|
3529
|
-
size: "
|
|
3527
|
+
size: "sm",
|
|
3528
|
+
leftIcon: copied ? "check" : "copy",
|
|
3530
3529
|
onClick: handleCopy,
|
|
3531
|
-
className: "flex-shrink-0
|
|
3532
|
-
|
|
3530
|
+
className: "flex-shrink-0",
|
|
3531
|
+
"aria-label": copied ? "Copied" : "Copy to clipboard",
|
|
3532
|
+
children: copied ? "Copied" : "Copy"
|
|
3533
3533
|
}
|
|
3534
3534
|
)
|
|
3535
3535
|
] })
|
|
@@ -3547,7 +3547,7 @@ var MarketingImage = ({ src, alt, className }) => /* @__PURE__ */ jsx(
|
|
|
3547
3547
|
Box,
|
|
3548
3548
|
{
|
|
3549
3549
|
className: cn(
|
|
3550
|
-
"overflow-hidden rounded-
|
|
3550
|
+
"overflow-hidden rounded-lg bg-cover bg-center bg-no-repeat",
|
|
3551
3551
|
className
|
|
3552
3552
|
),
|
|
3553
3553
|
style: { backgroundImage: `url(${src})` },
|
|
@@ -3582,7 +3582,7 @@ var HeroSection = ({
|
|
|
3582
3582
|
align: isCenter ? "center" : "left",
|
|
3583
3583
|
className: cn(
|
|
3584
3584
|
"max-w-3xl leading-tight",
|
|
3585
|
-
isDark && "text-
|
|
3585
|
+
isDark && "text-background"
|
|
3586
3586
|
),
|
|
3587
3587
|
children: [
|
|
3588
3588
|
title,
|
|
@@ -3592,7 +3592,7 @@ var HeroSection = ({
|
|
|
3592
3592
|
{
|
|
3593
3593
|
as: "span",
|
|
3594
3594
|
variant: "h1",
|
|
3595
|
-
className: "text-
|
|
3595
|
+
className: "text-primary",
|
|
3596
3596
|
children: titleAccent
|
|
3597
3597
|
}
|
|
3598
3598
|
)
|
|
@@ -3605,7 +3605,7 @@ var HeroSection = ({
|
|
|
3605
3605
|
align: isCenter ? "center" : "left",
|
|
3606
3606
|
className: cn(
|
|
3607
3607
|
"max-w-3xl leading-tight",
|
|
3608
|
-
isDark && "text-
|
|
3608
|
+
isDark && "text-background"
|
|
3609
3609
|
),
|
|
3610
3610
|
children: title
|
|
3611
3611
|
}
|
|
@@ -3719,10 +3719,10 @@ var CTABanner = ({
|
|
|
3719
3719
|
{
|
|
3720
3720
|
className: cn(
|
|
3721
3721
|
"py-16",
|
|
3722
|
-
background === "alt" && "bg-
|
|
3723
|
-
background === "dark" && "bg-
|
|
3724
|
-
background === "gradient" && "bg-
|
|
3725
|
-
background === "primary" && "bg-
|
|
3722
|
+
background === "alt" && "bg-surface",
|
|
3723
|
+
background === "dark" && "bg-surface",
|
|
3724
|
+
background === "gradient" && "bg-surface",
|
|
3725
|
+
background === "primary" && "bg-surface",
|
|
3726
3726
|
className
|
|
3727
3727
|
),
|
|
3728
3728
|
children: /* @__PURE__ */ jsxs(
|
|
@@ -3789,7 +3789,7 @@ var FeatureCard = ({
|
|
|
3789
3789
|
{
|
|
3790
3790
|
name: icon,
|
|
3791
3791
|
size: iconSizeMap[size],
|
|
3792
|
-
className: "text-
|
|
3792
|
+
className: "text-accent"
|
|
3793
3793
|
}
|
|
3794
3794
|
);
|
|
3795
3795
|
}
|
|
@@ -3806,7 +3806,7 @@ var FeatureCard = ({
|
|
|
3806
3806
|
variant,
|
|
3807
3807
|
padding: size,
|
|
3808
3808
|
className: cn(
|
|
3809
|
-
variant === "interactive" && "hover:border-
|
|
3809
|
+
variant === "interactive" && "hover:border-primary",
|
|
3810
3810
|
className
|
|
3811
3811
|
),
|
|
3812
3812
|
onClick: variant === "interactive" && href ? handleLinkClick : void 0,
|
|
@@ -3820,7 +3820,7 @@ var FeatureCard = ({
|
|
|
3820
3820
|
variant: "ghost",
|
|
3821
3821
|
size: "sm",
|
|
3822
3822
|
onClick: handleLinkClick,
|
|
3823
|
-
className: "text-
|
|
3823
|
+
className: "text-primary -ml-2",
|
|
3824
3824
|
children: linkLabel
|
|
3825
3825
|
}
|
|
3826
3826
|
)
|
|
@@ -3908,10 +3908,10 @@ var PricingCard = ({
|
|
|
3908
3908
|
"flex flex-col h-full",
|
|
3909
3909
|
"hover:-translate-y-1 transition-all",
|
|
3910
3910
|
highlighted && [
|
|
3911
|
-
"border-[length:2px] border-
|
|
3912
|
-
"shadow-
|
|
3911
|
+
"border-[length:2px] border-primary",
|
|
3912
|
+
"shadow-lg",
|
|
3913
3913
|
"scale-[1.05]",
|
|
3914
|
-
"ring-2 ring-
|
|
3914
|
+
"ring-2 ring-primary"
|
|
3915
3915
|
],
|
|
3916
3916
|
className
|
|
3917
3917
|
),
|
|
@@ -3922,7 +3922,7 @@ var PricingCard = ({
|
|
|
3922
3922
|
Typography,
|
|
3923
3923
|
{
|
|
3924
3924
|
variant: "h2",
|
|
3925
|
-
className: "text-
|
|
3925
|
+
className: "text-primary font-bold",
|
|
3926
3926
|
children: price
|
|
3927
3927
|
}
|
|
3928
3928
|
),
|
|
@@ -3934,7 +3934,7 @@ var PricingCard = ({
|
|
|
3934
3934
|
{
|
|
3935
3935
|
icon: Check,
|
|
3936
3936
|
size: "sm",
|
|
3937
|
-
className: "flex-shrink-0 text-
|
|
3937
|
+
className: "flex-shrink-0 text-success"
|
|
3938
3938
|
}
|
|
3939
3939
|
),
|
|
3940
3940
|
/* @__PURE__ */ jsx(Typography, { variant: "body2", children: feature })
|
|
@@ -3989,7 +3989,7 @@ var SplitSection = ({
|
|
|
3989
3989
|
{
|
|
3990
3990
|
name: "check",
|
|
3991
3991
|
size: "sm",
|
|
3992
|
-
className: "text-
|
|
3992
|
+
className: "text-primary flex-shrink-0 mt-0.5"
|
|
3993
3993
|
}
|
|
3994
3994
|
),
|
|
3995
3995
|
/* @__PURE__ */ jsx(Typography, { variant: "body2", children: bullet })
|
|
@@ -3999,7 +3999,7 @@ var SplitSection = ({
|
|
|
3999
3999
|
Box,
|
|
4000
4000
|
{
|
|
4001
4001
|
className: cn(
|
|
4002
|
-
"flex-1 min-w-0 min-h-[240px] rounded-
|
|
4002
|
+
"flex-1 min-w-0 min-h-[240px] rounded-md",
|
|
4003
4003
|
"bg-cover bg-center"
|
|
4004
4004
|
),
|
|
4005
4005
|
style: { backgroundImage: `url(${image.src})` },
|
|
@@ -4013,7 +4013,7 @@ var SplitSection = ({
|
|
|
4013
4013
|
{
|
|
4014
4014
|
className: cn(
|
|
4015
4015
|
"w-full",
|
|
4016
|
-
background === "alt" ? "bg-
|
|
4016
|
+
background === "alt" ? "bg-muted" : "bg-background",
|
|
4017
4017
|
className
|
|
4018
4018
|
),
|
|
4019
4019
|
padding: "lg",
|
|
@@ -4033,9 +4033,9 @@ var StepCircle = ({ step, index }) => {
|
|
|
4033
4033
|
className: cn(
|
|
4034
4034
|
"w-10 h-10 rounded-full flex-shrink-0",
|
|
4035
4035
|
"flex items-center justify-center",
|
|
4036
|
-
"bg-
|
|
4036
|
+
"bg-primary text-primary-foreground"
|
|
4037
4037
|
),
|
|
4038
|
-
children: /* @__PURE__ */ jsx(Icon, { name: step.icon, size: "sm", className: "text-
|
|
4038
|
+
children: /* @__PURE__ */ jsx(Icon, { name: step.icon, size: "sm", className: "text-primary-foreground" })
|
|
4039
4039
|
}
|
|
4040
4040
|
);
|
|
4041
4041
|
}
|
|
@@ -4045,9 +4045,9 @@ var StepCircle = ({ step, index }) => {
|
|
|
4045
4045
|
className: cn(
|
|
4046
4046
|
"w-10 h-10 rounded-full flex-shrink-0",
|
|
4047
4047
|
"flex items-center justify-center",
|
|
4048
|
-
"bg-
|
|
4048
|
+
"bg-primary text-primary-foreground"
|
|
4049
4049
|
),
|
|
4050
|
-
children: /* @__PURE__ */ jsx("span", { className: "font-semibold text-sm text-
|
|
4050
|
+
children: /* @__PURE__ */ jsx("span", { className: "font-semibold text-sm text-primary-foreground leading-none", children: step.number ?? index + 1 })
|
|
4051
4051
|
}
|
|
4052
4052
|
);
|
|
4053
4053
|
};
|
|
@@ -4062,7 +4062,7 @@ var StepFlow = ({
|
|
|
4062
4062
|
return /* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("w-full", className), children: steps.map((step, index) => /* @__PURE__ */ jsx(React5.Fragment, { children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "start", className: "w-full", children: [
|
|
4063
4063
|
/* @__PURE__ */ jsxs(VStack, { gap: "none", align: "center", children: [
|
|
4064
4064
|
/* @__PURE__ */ jsx(StepCircle, { step, index }),
|
|
4065
|
-
showConnectors && index < steps.length - 1 && /* @__PURE__ */ jsx(Box, { className: "w-px h-8 bg-
|
|
4065
|
+
showConnectors && index < steps.length - 1 && /* @__PURE__ */ jsx(Box, { className: "w-px h-8 bg-border" })
|
|
4066
4066
|
] }),
|
|
4067
4067
|
/* @__PURE__ */ jsxs(VStack, { gap: "xs", className: "flex-1 pt-1", children: [
|
|
4068
4068
|
/* @__PURE__ */ jsx(Typography, { variant: "h4", children: step.title }),
|
|
@@ -4090,7 +4090,7 @@ var StatsGrid = ({
|
|
|
4090
4090
|
Typography,
|
|
4091
4091
|
{
|
|
4092
4092
|
variant: "h2",
|
|
4093
|
-
className: "font-bold text-
|
|
4093
|
+
className: "font-bold text-primary",
|
|
4094
4094
|
children: stat.value
|
|
4095
4095
|
}
|
|
4096
4096
|
),
|
|
@@ -4205,7 +4205,7 @@ var ShowcaseCard = ({
|
|
|
4205
4205
|
{
|
|
4206
4206
|
className: cn(
|
|
4207
4207
|
"w-full aspect-video bg-cover bg-center",
|
|
4208
|
-
"rounded-t-
|
|
4208
|
+
"rounded-t-md"
|
|
4209
4209
|
),
|
|
4210
4210
|
style: { backgroundImage: `url(${image.src})` },
|
|
4211
4211
|
role: "img",
|
|
@@ -4244,10 +4244,10 @@ var statusSizeClasses = {
|
|
|
4244
4244
|
xl: "w-4 h-4"
|
|
4245
4245
|
};
|
|
4246
4246
|
var statusClasses = {
|
|
4247
|
-
online: "bg-
|
|
4248
|
-
offline: "bg-
|
|
4249
|
-
away: "bg-
|
|
4250
|
-
busy: "bg-
|
|
4247
|
+
online: "bg-success",
|
|
4248
|
+
offline: "bg-muted-foreground",
|
|
4249
|
+
away: "bg-warning",
|
|
4250
|
+
busy: "bg-error"
|
|
4251
4251
|
};
|
|
4252
4252
|
var badgeSizeClasses = {
|
|
4253
4253
|
xs: "w-3 h-3 text-[8px]",
|
|
@@ -4282,7 +4282,7 @@ var Avatar = ({
|
|
|
4282
4282
|
const hasImage = !!src;
|
|
4283
4283
|
const hasInitials = !!initials;
|
|
4284
4284
|
const hasIcon = !!Icon2;
|
|
4285
|
-
const getInitialsBackground = () => "bg-
|
|
4285
|
+
const getInitialsBackground = () => "bg-primary text-primary-foreground";
|
|
4286
4286
|
const isClickable = action || onClick;
|
|
4287
4287
|
const handleClick = () => {
|
|
4288
4288
|
if (action) {
|
|
@@ -4296,7 +4296,7 @@ var Avatar = ({
|
|
|
4296
4296
|
{
|
|
4297
4297
|
className: cn(
|
|
4298
4298
|
"relative inline-flex items-center justify-center",
|
|
4299
|
-
"bg-
|
|
4299
|
+
"bg-muted border-[length:var(--border-width)] border-border",
|
|
4300
4300
|
"overflow-hidden",
|
|
4301
4301
|
sizeClasses2[size],
|
|
4302
4302
|
isClickable && "cursor-pointer hover:bg-[var(--color-surface-hover)] transition-colors",
|
|
@@ -4329,7 +4329,7 @@ var Avatar = ({
|
|
|
4329
4329
|
Icon2,
|
|
4330
4330
|
{
|
|
4331
4331
|
className: cn(
|
|
4332
|
-
"text-
|
|
4332
|
+
"text-foreground",
|
|
4333
4333
|
iconSizeClasses[size]
|
|
4334
4334
|
)
|
|
4335
4335
|
}
|
|
@@ -4337,7 +4337,7 @@ var Avatar = ({
|
|
|
4337
4337
|
User,
|
|
4338
4338
|
{
|
|
4339
4339
|
className: cn(
|
|
4340
|
-
"text-
|
|
4340
|
+
"text-foreground",
|
|
4341
4341
|
iconSizeClasses[size]
|
|
4342
4342
|
)
|
|
4343
4343
|
}
|
|
@@ -4348,7 +4348,7 @@ var Avatar = ({
|
|
|
4348
4348
|
"div",
|
|
4349
4349
|
{
|
|
4350
4350
|
className: cn(
|
|
4351
|
-
"absolute bottom-0 right-0 border-2 border-
|
|
4351
|
+
"absolute bottom-0 right-0 border-2 border-card",
|
|
4352
4352
|
statusClasses[status],
|
|
4353
4353
|
statusSizeClasses[size]
|
|
4354
4354
|
),
|
|
@@ -4360,8 +4360,8 @@ var Avatar = ({
|
|
|
4360
4360
|
{
|
|
4361
4361
|
className: cn(
|
|
4362
4362
|
"absolute -top-1 -right-1 flex items-center justify-center",
|
|
4363
|
-
"bg-
|
|
4364
|
-
"border-2 border-
|
|
4363
|
+
"bg-primary text-primary-foreground font-bold",
|
|
4364
|
+
"border-2 border-card",
|
|
4365
4365
|
badgeSizeClasses[size]
|
|
4366
4366
|
),
|
|
4367
4367
|
"aria-label": `Badge: ${badge}`,
|
|
@@ -4427,7 +4427,7 @@ var CaseStudyCard = ({
|
|
|
4427
4427
|
variant: "ghost",
|
|
4428
4428
|
size: "sm",
|
|
4429
4429
|
onClick: handleClick,
|
|
4430
|
-
className: "text-
|
|
4430
|
+
className: "text-primary -ml-2",
|
|
4431
4431
|
children: [
|
|
4432
4432
|
linkLabel,
|
|
4433
4433
|
" \u2192"
|
|
@@ -4470,8 +4470,8 @@ var MarketingFooter = ({
|
|
|
4470
4470
|
{
|
|
4471
4471
|
as: "footer",
|
|
4472
4472
|
className: cn(
|
|
4473
|
-
"bg-
|
|
4474
|
-
"border-t border-
|
|
4473
|
+
"bg-surface",
|
|
4474
|
+
"border-t border-border",
|
|
4475
4475
|
"pt-12 pb-8 px-4",
|
|
4476
4476
|
className
|
|
4477
4477
|
),
|
|
@@ -4483,7 +4483,7 @@ var MarketingFooter = ({
|
|
|
4483
4483
|
Typography,
|
|
4484
4484
|
{
|
|
4485
4485
|
variant: "body2",
|
|
4486
|
-
className: "font-semibold text-
|
|
4486
|
+
className: "font-semibold text-foreground mb-1",
|
|
4487
4487
|
children: col.title
|
|
4488
4488
|
}
|
|
4489
4489
|
),
|
|
@@ -4493,8 +4493,8 @@ var MarketingFooter = ({
|
|
|
4493
4493
|
href: item.href,
|
|
4494
4494
|
className: cn(
|
|
4495
4495
|
"text-sm no-underline",
|
|
4496
|
-
"text-
|
|
4497
|
-
"hover:text-
|
|
4496
|
+
"text-foreground/60",
|
|
4497
|
+
"hover:text-accent",
|
|
4498
4498
|
"transition-colors duration-150"
|
|
4499
4499
|
),
|
|
4500
4500
|
target: item.href.startsWith("http") ? "_blank" : void 0,
|
|
@@ -4509,7 +4509,7 @@ var MarketingFooter = ({
|
|
|
4509
4509
|
Typography,
|
|
4510
4510
|
{
|
|
4511
4511
|
variant: "caption",
|
|
4512
|
-
className: "text-
|
|
4512
|
+
className: "text-foreground/30 text-center w-full pt-6",
|
|
4513
4513
|
children: copyright
|
|
4514
4514
|
}
|
|
4515
4515
|
)
|
|
@@ -4542,7 +4542,7 @@ var PullQuote = ({
|
|
|
4542
4542
|
Box,
|
|
4543
4543
|
{
|
|
4544
4544
|
className: cn(
|
|
4545
|
-
"border-l-4 border-l-
|
|
4545
|
+
"border-l-4 border-l-primary",
|
|
4546
4546
|
"pl-6 py-2 my-6",
|
|
4547
4547
|
className
|
|
4548
4548
|
),
|
|
@@ -4550,7 +4550,7 @@ var PullQuote = ({
|
|
|
4550
4550
|
Typography,
|
|
4551
4551
|
{
|
|
4552
4552
|
variant: "large",
|
|
4553
|
-
className: "italic text-
|
|
4553
|
+
className: "italic text-foreground opacity-90",
|
|
4554
4554
|
children
|
|
4555
4555
|
}
|
|
4556
4556
|
)
|
|
@@ -4626,7 +4626,7 @@ var AnimatedCounter = ({
|
|
|
4626
4626
|
Typography,
|
|
4627
4627
|
{
|
|
4628
4628
|
variant: "h2",
|
|
4629
|
-
className: "text-
|
|
4629
|
+
className: "text-primary font-bold tabular-nums",
|
|
4630
4630
|
children: hasAnimated ? displayValue : "0"
|
|
4631
4631
|
}
|
|
4632
4632
|
),
|
|
@@ -4634,6 +4634,289 @@ var AnimatedCounter = ({
|
|
|
4634
4634
|
] });
|
|
4635
4635
|
};
|
|
4636
4636
|
AnimatedCounter.displayName = "AnimatedCounter";
|
|
4637
|
+
var initialStyles = {
|
|
4638
|
+
"fade-up": { opacity: 0, transform: "translateY(24px)" },
|
|
4639
|
+
"fade-down": { opacity: 0, transform: "translateY(-24px)" },
|
|
4640
|
+
"fade-in": { opacity: 0 },
|
|
4641
|
+
"fade-left": { opacity: 0, transform: "translateX(24px)" },
|
|
4642
|
+
"fade-right": { opacity: 0, transform: "translateX(-24px)" },
|
|
4643
|
+
"scale": { opacity: 0, transform: "scale(0.92)" },
|
|
4644
|
+
"scale-up": { opacity: 0, transform: "scale(0.92) translateY(16px)" },
|
|
4645
|
+
"none": {}
|
|
4646
|
+
};
|
|
4647
|
+
var animatedStyles = {
|
|
4648
|
+
"fade-up": { opacity: 1, transform: "translateY(0)" },
|
|
4649
|
+
"fade-down": { opacity: 1, transform: "translateY(0)" },
|
|
4650
|
+
"fade-in": { opacity: 1 },
|
|
4651
|
+
"fade-left": { opacity: 1, transform: "translateX(0)" },
|
|
4652
|
+
"fade-right": { opacity: 1, transform: "translateX(0)" },
|
|
4653
|
+
"scale": { opacity: 1, transform: "scale(1)" },
|
|
4654
|
+
"scale-up": { opacity: 1, transform: "scale(1) translateY(0)" },
|
|
4655
|
+
"none": {}
|
|
4656
|
+
};
|
|
4657
|
+
var AnimatedReveal = React5.forwardRef(
|
|
4658
|
+
({
|
|
4659
|
+
trigger = "scroll",
|
|
4660
|
+
animation = "fade-up",
|
|
4661
|
+
duration = 600,
|
|
4662
|
+
delay = 0,
|
|
4663
|
+
threshold = 0.15,
|
|
4664
|
+
once = true,
|
|
4665
|
+
animate: manualAnimate,
|
|
4666
|
+
easing = "cubic-bezier(0.16, 1, 0.3, 1)",
|
|
4667
|
+
children,
|
|
4668
|
+
className,
|
|
4669
|
+
style,
|
|
4670
|
+
...props
|
|
4671
|
+
}, forwardedRef) => {
|
|
4672
|
+
const [isAnimated, setIsAnimated] = useState(false);
|
|
4673
|
+
const internalRef = useRef(null);
|
|
4674
|
+
const hasAnimated = useRef(false);
|
|
4675
|
+
const setRef = useCallback(
|
|
4676
|
+
(node) => {
|
|
4677
|
+
internalRef.current = node;
|
|
4678
|
+
if (typeof forwardedRef === "function") forwardedRef(node);
|
|
4679
|
+
else if (forwardedRef) forwardedRef.current = node;
|
|
4680
|
+
},
|
|
4681
|
+
[forwardedRef]
|
|
4682
|
+
);
|
|
4683
|
+
useEffect(() => {
|
|
4684
|
+
if (trigger !== "scroll") return;
|
|
4685
|
+
const el = internalRef.current;
|
|
4686
|
+
if (!el) return;
|
|
4687
|
+
const observer = new IntersectionObserver(
|
|
4688
|
+
([entry]) => {
|
|
4689
|
+
if (entry.isIntersecting) {
|
|
4690
|
+
if (once && hasAnimated.current) return;
|
|
4691
|
+
hasAnimated.current = true;
|
|
4692
|
+
setIsAnimated(true);
|
|
4693
|
+
} else if (!once) {
|
|
4694
|
+
setIsAnimated(false);
|
|
4695
|
+
}
|
|
4696
|
+
},
|
|
4697
|
+
{ threshold }
|
|
4698
|
+
);
|
|
4699
|
+
observer.observe(el);
|
|
4700
|
+
return () => observer.disconnect();
|
|
4701
|
+
}, [trigger, threshold, once]);
|
|
4702
|
+
const handleMouseEnter = trigger === "hover" ? () => setIsAnimated(true) : void 0;
|
|
4703
|
+
const handleMouseLeave = trigger === "hover" ? () => {
|
|
4704
|
+
if (!once || !hasAnimated.current) {
|
|
4705
|
+
hasAnimated.current = true;
|
|
4706
|
+
setIsAnimated(false);
|
|
4707
|
+
}
|
|
4708
|
+
} : void 0;
|
|
4709
|
+
useEffect(() => {
|
|
4710
|
+
if (trigger === "manual" && manualAnimate !== void 0) {
|
|
4711
|
+
setIsAnimated(manualAnimate);
|
|
4712
|
+
}
|
|
4713
|
+
}, [trigger, manualAnimate]);
|
|
4714
|
+
const active = isAnimated;
|
|
4715
|
+
const currentStyle = active ? animatedStyles[animation] : initialStyles[animation];
|
|
4716
|
+
return /* @__PURE__ */ jsx(
|
|
4717
|
+
"div",
|
|
4718
|
+
{
|
|
4719
|
+
ref: setRef,
|
|
4720
|
+
className: cn("will-change-[opacity,transform]", className),
|
|
4721
|
+
style: {
|
|
4722
|
+
...currentStyle,
|
|
4723
|
+
transitionProperty: "opacity, transform",
|
|
4724
|
+
transitionDuration: `${duration}ms`,
|
|
4725
|
+
transitionDelay: `${delay}ms`,
|
|
4726
|
+
transitionTimingFunction: easing,
|
|
4727
|
+
...style
|
|
4728
|
+
},
|
|
4729
|
+
onMouseEnter: handleMouseEnter,
|
|
4730
|
+
onMouseLeave: handleMouseLeave,
|
|
4731
|
+
...props,
|
|
4732
|
+
children: typeof children === "function" ? children(active) : children
|
|
4733
|
+
}
|
|
4734
|
+
);
|
|
4735
|
+
}
|
|
4736
|
+
);
|
|
4737
|
+
AnimatedReveal.displayName = "AnimatedReveal";
|
|
4738
|
+
function useFetchedSvg(src) {
|
|
4739
|
+
const [svg, setSvg] = useState(null);
|
|
4740
|
+
const cache = useRef({});
|
|
4741
|
+
useEffect(() => {
|
|
4742
|
+
if (!src) {
|
|
4743
|
+
setSvg(null);
|
|
4744
|
+
return;
|
|
4745
|
+
}
|
|
4746
|
+
if (cache.current[src]) {
|
|
4747
|
+
setSvg(cache.current[src]);
|
|
4748
|
+
return;
|
|
4749
|
+
}
|
|
4750
|
+
let cancelled = false;
|
|
4751
|
+
fetch(src).then((res) => {
|
|
4752
|
+
if (!res.ok) throw new Error(`Failed to fetch SVG: ${res.status}`);
|
|
4753
|
+
return res.text();
|
|
4754
|
+
}).then((text) => {
|
|
4755
|
+
if (cancelled) return;
|
|
4756
|
+
cache.current[src] = text;
|
|
4757
|
+
setSvg(text);
|
|
4758
|
+
}).catch(() => {
|
|
4759
|
+
if (!cancelled) setSvg(null);
|
|
4760
|
+
});
|
|
4761
|
+
return () => {
|
|
4762
|
+
cancelled = true;
|
|
4763
|
+
};
|
|
4764
|
+
}, [src]);
|
|
4765
|
+
return svg;
|
|
4766
|
+
}
|
|
4767
|
+
function applyDrawAnimation(container, animate, duration, delay, easing) {
|
|
4768
|
+
const paths = container.querySelectorAll("path, line, polyline, polygon, circle, ellipse, rect");
|
|
4769
|
+
paths.forEach((el) => {
|
|
4770
|
+
if ("getTotalLength" in el && typeof el.getTotalLength === "function") {
|
|
4771
|
+
const len = el.getTotalLength();
|
|
4772
|
+
el.style.strokeDasharray = `${len}`;
|
|
4773
|
+
el.style.strokeDashoffset = animate ? "0" : `${len}`;
|
|
4774
|
+
el.style.transition = `stroke-dashoffset ${duration}ms ${easing} ${delay}ms`;
|
|
4775
|
+
}
|
|
4776
|
+
});
|
|
4777
|
+
}
|
|
4778
|
+
function applyFillAnimation(container, animate, duration, delay, easing, fillColor) {
|
|
4779
|
+
const paths = container.querySelectorAll("path, circle, ellipse, rect, polygon");
|
|
4780
|
+
paths.forEach((el) => {
|
|
4781
|
+
if ("getTotalLength" in el && typeof el.getTotalLength === "function") {
|
|
4782
|
+
const geom = el;
|
|
4783
|
+
const len = geom.getTotalLength();
|
|
4784
|
+
geom.style.strokeDasharray = `${len}`;
|
|
4785
|
+
geom.style.strokeDashoffset = animate ? "0" : `${len}`;
|
|
4786
|
+
geom.style.transition = `stroke-dashoffset ${duration * 0.6}ms ${easing} ${delay}ms, fill-opacity ${duration * 0.4}ms ${easing} ${delay + duration * 0.6}ms`;
|
|
4787
|
+
}
|
|
4788
|
+
if (fillColor) el.style.fill = fillColor;
|
|
4789
|
+
el.style.fillOpacity = animate ? "1" : "0";
|
|
4790
|
+
});
|
|
4791
|
+
}
|
|
4792
|
+
function applyPulseAnimation(container, animate, duration) {
|
|
4793
|
+
const svg = container.querySelector("svg");
|
|
4794
|
+
if (!svg) return;
|
|
4795
|
+
if (animate) {
|
|
4796
|
+
svg.style.animation = `ag-pulse ${duration}ms ease-in-out infinite`;
|
|
4797
|
+
} else {
|
|
4798
|
+
svg.style.animation = "none";
|
|
4799
|
+
}
|
|
4800
|
+
}
|
|
4801
|
+
function applyMorphAnimation(container, animate, duration, delay, easing) {
|
|
4802
|
+
const paths = container.querySelectorAll("path, circle, ellipse, rect, polygon");
|
|
4803
|
+
paths.forEach((el) => {
|
|
4804
|
+
el.style.transition = `all ${duration}ms ${easing} ${delay}ms`;
|
|
4805
|
+
el.style.transform = animate ? "scale(1)" : "scale(0)";
|
|
4806
|
+
el.style.transformOrigin = "center";
|
|
4807
|
+
el.style.opacity = animate ? "1" : "0";
|
|
4808
|
+
});
|
|
4809
|
+
}
|
|
4810
|
+
var AnimatedGraphic = React5.forwardRef(
|
|
4811
|
+
({
|
|
4812
|
+
src,
|
|
4813
|
+
svgContent,
|
|
4814
|
+
animation = "draw",
|
|
4815
|
+
animate = false,
|
|
4816
|
+
duration = 1200,
|
|
4817
|
+
delay = 0,
|
|
4818
|
+
easing = "cubic-bezier(0.16, 1, 0.3, 1)",
|
|
4819
|
+
width,
|
|
4820
|
+
height,
|
|
4821
|
+
strokeColor,
|
|
4822
|
+
fillColor,
|
|
4823
|
+
alt,
|
|
4824
|
+
className,
|
|
4825
|
+
style,
|
|
4826
|
+
children,
|
|
4827
|
+
...props
|
|
4828
|
+
}, ref) => {
|
|
4829
|
+
const containerRef = useRef(null);
|
|
4830
|
+
const fetchedSvg = useFetchedSvg(svgContent ? void 0 : src);
|
|
4831
|
+
const resolvedSvg = svgContent ?? fetchedSvg;
|
|
4832
|
+
const prevAnimateRef = useRef(animate);
|
|
4833
|
+
const setRef = React5.useCallback(
|
|
4834
|
+
(node) => {
|
|
4835
|
+
containerRef.current = node;
|
|
4836
|
+
if (typeof ref === "function") ref(node);
|
|
4837
|
+
else if (ref) ref.current = node;
|
|
4838
|
+
},
|
|
4839
|
+
[ref]
|
|
4840
|
+
);
|
|
4841
|
+
useEffect(() => {
|
|
4842
|
+
const el = containerRef.current;
|
|
4843
|
+
if (!el || !strokeColor) return;
|
|
4844
|
+
const paths = el.querySelectorAll("path, line, polyline, polygon, circle, ellipse, rect");
|
|
4845
|
+
paths.forEach((p) => {
|
|
4846
|
+
p.style.stroke = strokeColor;
|
|
4847
|
+
});
|
|
4848
|
+
}, [resolvedSvg, strokeColor]);
|
|
4849
|
+
useEffect(() => {
|
|
4850
|
+
const el = containerRef.current;
|
|
4851
|
+
if (!el || !resolvedSvg) return;
|
|
4852
|
+
if (animation === "draw" || animation === "fill") {
|
|
4853
|
+
const paths = el.querySelectorAll("path, line, polyline, polygon, circle, ellipse, rect");
|
|
4854
|
+
paths.forEach((p) => {
|
|
4855
|
+
if ("getTotalLength" in p && typeof p.getTotalLength === "function") {
|
|
4856
|
+
const len = p.getTotalLength();
|
|
4857
|
+
p.style.strokeDasharray = `${len}`;
|
|
4858
|
+
p.style.strokeDashoffset = `${len}`;
|
|
4859
|
+
}
|
|
4860
|
+
if (animation === "fill") {
|
|
4861
|
+
p.style.fillOpacity = "0";
|
|
4862
|
+
}
|
|
4863
|
+
});
|
|
4864
|
+
}
|
|
4865
|
+
if (animation === "morph") {
|
|
4866
|
+
const paths = el.querySelectorAll("path, circle, ellipse, rect, polygon");
|
|
4867
|
+
paths.forEach((p) => {
|
|
4868
|
+
p.style.transform = "scale(0)";
|
|
4869
|
+
p.style.transformOrigin = "center";
|
|
4870
|
+
p.style.opacity = "0";
|
|
4871
|
+
});
|
|
4872
|
+
}
|
|
4873
|
+
}, [resolvedSvg, animation]);
|
|
4874
|
+
useEffect(() => {
|
|
4875
|
+
const el = containerRef.current;
|
|
4876
|
+
if (!el) return;
|
|
4877
|
+
const id = requestAnimationFrame(() => {
|
|
4878
|
+
switch (animation) {
|
|
4879
|
+
case "draw":
|
|
4880
|
+
applyDrawAnimation(el, animate, duration, delay, easing);
|
|
4881
|
+
break;
|
|
4882
|
+
case "fill":
|
|
4883
|
+
applyFillAnimation(el, animate, duration, delay, easing, fillColor);
|
|
4884
|
+
break;
|
|
4885
|
+
case "pulse":
|
|
4886
|
+
applyPulseAnimation(el, animate, duration);
|
|
4887
|
+
break;
|
|
4888
|
+
case "morph":
|
|
4889
|
+
applyMorphAnimation(el, animate, duration, delay, easing);
|
|
4890
|
+
break;
|
|
4891
|
+
}
|
|
4892
|
+
});
|
|
4893
|
+
prevAnimateRef.current = animate;
|
|
4894
|
+
return () => cancelAnimationFrame(id);
|
|
4895
|
+
}, [animate, animation, duration, delay, easing, fillColor, resolvedSvg]);
|
|
4896
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4897
|
+
/* @__PURE__ */ jsx("style", { children: `@keyframes ag-pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.04); opacity: 0.85; } }` }),
|
|
4898
|
+
/* @__PURE__ */ jsx(
|
|
4899
|
+
"div",
|
|
4900
|
+
{
|
|
4901
|
+
ref: setRef,
|
|
4902
|
+
className: cn("inline-flex items-center justify-center", className),
|
|
4903
|
+
style: { width, height, ...style },
|
|
4904
|
+
role: alt ? "img" : void 0,
|
|
4905
|
+
"aria-label": alt,
|
|
4906
|
+
...props,
|
|
4907
|
+
children: resolvedSvg ? /* @__PURE__ */ jsx(
|
|
4908
|
+
"div",
|
|
4909
|
+
{
|
|
4910
|
+
className: "w-full h-full [&>svg]:w-full [&>svg]:h-full",
|
|
4911
|
+
dangerouslySetInnerHTML: { __html: resolvedSvg }
|
|
4912
|
+
}
|
|
4913
|
+
) : children
|
|
4914
|
+
}
|
|
4915
|
+
)
|
|
4916
|
+
] });
|
|
4917
|
+
}
|
|
4918
|
+
);
|
|
4919
|
+
AnimatedGraphic.displayName = "AnimatedGraphic";
|
|
4637
4920
|
var PI = Math.PI;
|
|
4638
4921
|
function lineIntersection(x1, y1, x2, y2, x3, y3, x4, y4) {
|
|
4639
4922
|
const denom = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);
|
|
@@ -5649,4 +5932,4 @@ var EdgeDecoration = ({
|
|
|
5649
5932
|
};
|
|
5650
5933
|
EdgeDecoration.displayName = "EdgeDecoration";
|
|
5651
5934
|
|
|
5652
|
-
export { AnimatedCounter, ArticleSection, Badge, Box, Button, CTABanner, Card, CaseStudyCard, Center, CommunityLinks, ContentSection, Divider, EdgeDecoration, FeatureCard, FeatureGrid, GeometricPattern, GradientDivider, HStack, HeroSection, Icon, InstallBox, MarketingFooter, PatternTile, PricingCard, PricingGrid, PullQuote, ServiceCatalog, ShowcaseCard, SimpleGrid, Spacer, SplitSection, StatsGrid, StepFlow, TagCloud, TeamCard, Typography, VStack, getTileDimensions };
|
|
5935
|
+
export { AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Badge, Box, Button, CTABanner, Card, CaseStudyCard, Center, CommunityLinks, ContentSection, Divider, EdgeDecoration, FeatureCard, FeatureGrid, GeometricPattern, GradientDivider, HStack, HeroSection, Icon, InstallBox, MarketingFooter, PatternTile, PricingCard, PricingGrid, PullQuote, ServiceCatalog, ShowcaseCard, SimpleGrid, Spacer, SplitSection, StatsGrid, StepFlow, TagCloud, TeamCard, Typography, VStack, getTileDimensions };
|