@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.
@@ -1,4 +1,4 @@
1
- import React5, { createContext, useCallback, useContext, useState, useRef, useEffect, useId } from 'react';
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-[var(--color-primary)] text-[var(--color-primary-foreground)]",
2618
- secondary: "bg-[var(--color-secondary)] text-[var(--color-secondary-foreground)]",
2619
- muted: "bg-[var(--color-muted)] text-[var(--color-foreground)]",
2620
- accent: "bg-[var(--color-accent)] text-[var(--color-accent-foreground)]",
2621
- surface: "bg-[var(--color-card)]",
2622
- overlay: "bg-[var(--color-card)]/80 backdrop-blur-sm"
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-[var(--radius-sm)]",
2627
- md: "rounded-[var(--radius-md)]",
2628
- lg: "rounded-[var(--radius-lg)]",
2629
- xl: "rounded-[var(--radius-xl)]",
2630
- "2xl": "rounded-[var(--radius-xl)]",
2631
- full: "rounded-[var(--radius-full)]"
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-[var(--shadow-sm)]",
2636
- md: "shadow-[var(--shadow-main)]",
2637
- lg: "shadow-[var(--shadow-lg)]",
2638
- xl: "shadow-[var(--shadow-lg)]"
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-[var(--color-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-[var(--color-foreground)]",
2834
- h2: "text-3xl font-bold tracking-tight text-[var(--color-foreground)]",
2835
- h3: "text-2xl font-bold text-[var(--color-foreground)]",
2836
- h4: "text-xl font-bold text-[var(--color-foreground)]",
2837
- h5: "text-lg font-bold text-[var(--color-foreground)]",
2838
- h6: "text-base font-bold text-[var(--color-foreground)]",
2839
- heading: "text-2xl font-bold text-[var(--color-foreground)]",
2840
- subheading: "text-lg font-semibold text-[var(--color-foreground)]",
2841
- body1: "text-base font-normal text-[var(--color-foreground)]",
2842
- body2: "text-sm font-normal text-[var(--color-foreground)]",
2843
- body: "text-base font-normal text-[var(--color-foreground)]",
2844
- caption: "text-xs font-normal text-[var(--color-muted-foreground)]",
2845
- overline: "text-xs uppercase tracking-wide font-bold text-[var(--color-muted-foreground)]",
2846
- small: "text-sm font-normal text-[var(--color-foreground)]",
2847
- large: "text-lg font-medium text-[var(--color-foreground)]",
2848
- label: "text-sm font-medium text-[var(--color-foreground)]"
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-[var(--color-foreground)]",
2852
- secondary: "text-[var(--color-muted-foreground)]",
2853
- muted: "text-[var(--color-muted-foreground)]",
2854
- error: "text-[var(--color-error)]",
2855
- success: "text-[var(--color-success)]",
2856
- warning: "text-[var(--color-warning)]",
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-[var(--color-primary)] text-[var(--color-primary-foreground)]",
3019
+ "bg-primary text-primary-foreground",
3020
3020
  "border-none",
3021
- "shadow-[var(--shadow-sm)]",
3022
- "hover:bg-[var(--color-primary-hover)] hover:shadow-[var(--shadow-hover)]",
3023
- "active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]"
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-[var(--color-muted)] text-[var(--color-foreground)]",
3027
- "border-none",
3028
- "hover:bg-[var(--color-muted-foreground)]/15 hover:text-[var(--color-foreground)]",
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-[var(--color-muted-foreground)]",
3033
- "hover:text-[var(--color-foreground)] hover:bg-[var(--color-muted)]",
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-[var(--color-surface)] text-[var(--color-error)]",
3038
- "border-[length:var(--border-width)] border-[var(--color-error)]",
3039
- "shadow-[var(--shadow-sm)]",
3040
- "hover:bg-[var(--color-error)] hover:text-[var(--color-error-foreground)] hover:shadow-[var(--shadow-hover)]",
3041
- "active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]"
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-[var(--color-surface)] text-[var(--color-success)]",
3045
- "border-[length:var(--border-width)] border-[var(--color-success)]",
3046
- "shadow-[var(--shadow-sm)]",
3047
- "hover:bg-[var(--color-success)] hover:text-[var(--color-success-foreground)] hover:shadow-[var(--shadow-hover)]",
3048
- "active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]"
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-[var(--color-surface)] text-[var(--color-warning)]",
3052
- "border-[length:var(--border-width)] border-[var(--color-warning)]",
3053
- "shadow-[var(--shadow-sm)]",
3054
- "hover:bg-[var(--color-warning)] hover:text-[var(--color-warning-foreground)] hover:shadow-[var(--shadow-hover)]",
3055
- "active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]"
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-[var(--color-secondary)] text-[var(--color-secondary-foreground)]",
3060
- "border-[length:var(--border-width-thin)] border-[var(--color-border)]",
3061
- "hover:bg-[var(--color-secondary-hover)]",
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-[var(--radius-sm)]",
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-[var(--color-ring)] focus:ring-offset-[length:var(--focus-ring-offset)]",
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-[var(--color-muted)] text-[var(--color-foreground)]",
3156
- "border-[length:var(--border-width-thin)] border-[var(--color-border)]"
3157
+ "bg-muted text-foreground",
3158
+ "border-[length:var(--border-width-thin)] border-border"
3157
3159
  ].join(" "),
3158
- primary: "bg-[var(--color-primary)] text-[var(--color-primary-foreground)]",
3159
- secondary: "bg-[var(--color-secondary)] text-[var(--color-secondary-foreground)]",
3160
+ primary: "bg-primary text-primary-foreground",
3161
+ secondary: "bg-secondary text-secondary-foreground",
3160
3162
  success: [
3161
- "bg-[var(--color-surface)] text-[var(--color-success)]",
3162
- "border-[length:var(--border-width)] border-[var(--color-success)]"
3163
+ "bg-surface text-success",
3164
+ "border-[length:var(--border-width)] border-success"
3163
3165
  ].join(" "),
3164
3166
  warning: [
3165
- "bg-[var(--color-surface)] text-[var(--color-warning)]",
3166
- "border-[length:var(--border-width)] border-[var(--color-warning)]"
3167
+ "bg-surface text-warning",
3168
+ "border-[length:var(--border-width)] border-warning"
3167
3169
  ].join(" "),
3168
3170
  danger: [
3169
- "bg-[var(--color-surface)] text-[var(--color-error)]",
3170
- "border-[length:var(--border-width)] border-[var(--color-error)]"
3171
+ "bg-surface text-error",
3172
+ "border-[length:var(--border-width)] border-error"
3171
3173
  ].join(" "),
3172
3174
  error: [
3173
- "bg-[var(--color-surface)] text-[var(--color-error)]",
3174
- "border-[length:var(--border-width)] border-[var(--color-error)]"
3175
+ "bg-surface text-error",
3176
+ "border-[length:var(--border-width)] border-error"
3175
3177
  ].join(" "),
3176
3178
  info: [
3177
- "bg-[var(--color-surface)] text-[var(--color-info)]",
3178
- "border-[length:var(--border-width)] border-[var(--color-info)]"
3179
+ "bg-surface text-info",
3180
+ "border-[length:var(--border-width)] border-info"
3179
3181
  ].join(" "),
3180
3182
  neutral: [
3181
- "bg-[var(--color-muted)] text-[var(--color-muted-foreground)]",
3182
- "border-[length:var(--border-width-thin)] border-[var(--color-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-[var(--radius-sm)]",
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-[var(--color-card)]",
3220
- "border-[length:var(--border-width)] border-[var(--color-border)]",
3221
- "shadow-[var(--shadow-sm)]",
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-[var(--shadow-hover)] hover:-translate-y-0.5"
3225
+ "hover:shadow-lg hover:-translate-y-0.5"
3224
3226
  ].join(" "),
3225
3227
  bordered: [
3226
- "bg-[var(--color-card)]",
3227
- "border-[length:var(--border-width)] border-[var(--color-border)]",
3228
- "shadow-[var(--shadow-sm)]",
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-[var(--shadow-hover)] hover:-translate-y-0.5"
3232
+ "hover:shadow-lg hover:-translate-y-0.5"
3231
3233
  ].join(" "),
3232
3234
  elevated: [
3233
- "bg-[var(--color-card)]",
3234
- "border-[length:var(--border-width)] border-[var(--color-border)]",
3235
- "shadow-[var(--shadow-main)]",
3235
+ "bg-card",
3236
+ "border-[length:var(--border-width)] border-border",
3237
+ "shadow",
3236
3238
  "transition-all duration-[var(--transition-normal)]",
3237
- "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
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-[var(--color-card)]",
3242
- "border-[length:var(--border-width)] border-[var(--color-border)]",
3243
- "shadow-[var(--shadow-main)]",
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-[var(--shadow-hover)]"
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-[var(--shadow-sm)]",
3258
- md: "shadow-[var(--shadow-main)]",
3259
- lg: "shadow-[var(--shadow-lg)]"
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-[var(--radius-md)]",
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-[var(--color-card-foreground)] font-[var(--font-weight-bold)]", children: title }),
3288
- subtitle && /* @__PURE__ */ jsx("p", { className: "text-sm text-[var(--color-muted-foreground)] mt-1", children: subtitle })
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-[var(--color-card-foreground)]",
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-[var(--color-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-[var(--color-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-[var(--color-foreground)] font-bold uppercase tracking-wide", children: label }),
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-[var(--color-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-[var(--color-border)] my-4",
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-[var(--color-surface)]",
3461
- dark: "bg-[var(--color-foreground)] text-[var(--color-background)]",
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: cn(
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(HStack, { gap: "md", align: "center", children: [
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 text-[var(--color-background)] select-all",
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: "md",
3527
+ size: "sm",
3528
+ leftIcon: copied ? "check" : "copy",
3530
3529
  onClick: handleCopy,
3531
- className: "flex-shrink-0 text-[var(--color-background)] hover:text-[var(--color-background)]",
3532
- children: copied ? "Copied!" : "Copy"
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-[var(--radius-lg)] bg-cover bg-center bg-no-repeat",
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-[var(--color-background)]"
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-[var(--color-primary)]",
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-[var(--color-background)]"
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-[var(--color-surface)]",
3723
- background === "dark" && "bg-[var(--color-surface)]",
3724
- background === "gradient" && "bg-[var(--color-surface)]",
3725
- background === "primary" && "bg-[var(--color-surface)]",
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-[var(--color-accent,#06b6d4)]"
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-[var(--color-primary)]",
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-[var(--color-primary)] -ml-2",
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-[var(--color-primary)]",
3912
- "shadow-[var(--shadow-lg)]",
3911
+ "border-[length:2px] border-primary",
3912
+ "shadow-lg",
3913
3913
  "scale-[1.05]",
3914
- "ring-2 ring-[var(--color-primary)]"
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-[var(--color-primary)] font-bold",
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-[var(--color-success)]"
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-[var(--color-primary)] flex-shrink-0 mt-0.5"
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-[var(--radius-md)]",
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-[var(--color-muted)]" : "bg-[var(--color-background)]",
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-[var(--color-primary)] text-[var(--color-primary-foreground)]"
4036
+ "bg-primary text-primary-foreground"
4037
4037
  ),
4038
- children: /* @__PURE__ */ jsx(Icon, { name: step.icon, size: "sm", className: "text-[var(--color-primary-foreground)]" })
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-[var(--color-primary)] text-[var(--color-primary-foreground)]"
4048
+ "bg-primary text-primary-foreground"
4049
4049
  ),
4050
- children: /* @__PURE__ */ jsx("span", { className: "font-semibold text-sm text-[var(--color-primary-foreground)] leading-none", children: step.number ?? index + 1 })
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-[var(--color-border)]" })
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-[var(--color-primary)]",
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-[var(--radius-md)]"
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-[var(--color-success)]",
4248
- offline: "bg-[var(--color-muted-foreground)]",
4249
- away: "bg-[var(--color-warning)]",
4250
- busy: "bg-[var(--color-error)]"
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-[var(--color-primary)] text-[var(--color-primary-foreground)]";
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-[var(--color-muted)] border-[length:var(--border-width)] border-[var(--color-border)]",
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-[var(--color-foreground)]",
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-[var(--color-foreground)]",
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-[var(--color-card)]",
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-[var(--color-primary)] text-[var(--color-primary-foreground)] font-bold",
4364
- "border-2 border-[var(--color-card)]",
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-[var(--color-primary)] -ml-2",
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-[var(--color-foreground)] text-[var(--color-background)]",
4474
- "border-t border-[var(--color-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-[var(--color-background)] mb-1",
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-[var(--color-background)]/60",
4497
- "hover:text-[var(--color-accent)]",
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-[var(--color-background)]/30 text-center w-full pt-6",
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-[var(--color-primary)]",
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-[var(--color-foreground)] opacity-90",
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-[var(--color-primary)] font-bold tabular-nums",
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 };