@nationaldesignstudio/react 0.5.6 → 0.6.1

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/index.d.ts CHANGED
@@ -12,7 +12,7 @@ import { Select as Select$1 } from '@base-ui-components/react/select';
12
12
  import { Tooltip as Tooltip$1 } from '@base-ui-components/react/tooltip';
13
13
  import { Dialog as Dialog$1 } from '@base-ui-components/react/dialog';
14
14
  import { ClassValue } from 'clsx';
15
- import { CSSVariableMap, NestedStringRecord, ColorThemeName, SurfaceThemeName } from '@nds-design-system/tokens';
15
+ import { CSSVariableMap, NestedStringRecord, ColorThemeName, SurfaceThemeName, ResolvedProjectTheme } from '@nds-design-system/tokens';
16
16
 
17
17
  declare const accordionVariants: tailwind_variants.TVReturnType<{
18
18
  colorScheme: {
@@ -3268,6 +3268,16 @@ declare const cardVariants: tailwind_variants.TVReturnType<{
3268
3268
  * Use with Background components for images/gradients.
3269
3269
  */
3270
3270
  overlay: string;
3271
+ /**
3272
+ * Profile layout - square image with stacked content below.
3273
+ * Ideal for team member cards, user profiles, testimonials.
3274
+ */
3275
+ profile: string;
3276
+ /**
3277
+ * Compact layout - small thumbnail with condensed horizontal content.
3278
+ * Ideal for news items, article previews, resource lists.
3279
+ */
3280
+ compact: string;
3271
3281
  };
3272
3282
  }, undefined, "relative flex overflow-hidden rounded-surface-card bg-card-background stroke-surface-card border-border-subtle border-solid", tailwind_variants_dist_config_js.TVConfig<{
3273
3283
  layout: {
@@ -3278,6 +3288,16 @@ declare const cardVariants: tailwind_variants.TVReturnType<{
3278
3288
  * Use with Background components for images/gradients.
3279
3289
  */
3280
3290
  overlay: string;
3291
+ /**
3292
+ * Profile layout - square image with stacked content below.
3293
+ * Ideal for team member cards, user profiles, testimonials.
3294
+ */
3295
+ profile: string;
3296
+ /**
3297
+ * Compact layout - small thumbnail with condensed horizontal content.
3298
+ * Ideal for news items, article previews, resource lists.
3299
+ */
3300
+ compact: string;
3281
3301
  };
3282
3302
  }, {
3283
3303
  layout: {
@@ -3288,6 +3308,16 @@ declare const cardVariants: tailwind_variants.TVReturnType<{
3288
3308
  * Use with Background components for images/gradients.
3289
3309
  */
3290
3310
  overlay: string;
3311
+ /**
3312
+ * Profile layout - square image with stacked content below.
3313
+ * Ideal for team member cards, user profiles, testimonials.
3314
+ */
3315
+ profile: string;
3316
+ /**
3317
+ * Compact layout - small thumbnail with condensed horizontal content.
3318
+ * Ideal for news items, article previews, resource lists.
3319
+ */
3320
+ compact: string;
3291
3321
  };
3292
3322
  }>, {
3293
3323
  layout: {
@@ -3298,6 +3328,16 @@ declare const cardVariants: tailwind_variants.TVReturnType<{
3298
3328
  * Use with Background components for images/gradients.
3299
3329
  */
3300
3330
  overlay: string;
3331
+ /**
3332
+ * Profile layout - square image with stacked content below.
3333
+ * Ideal for team member cards, user profiles, testimonials.
3334
+ */
3335
+ profile: string;
3336
+ /**
3337
+ * Compact layout - small thumbnail with condensed horizontal content.
3338
+ * Ideal for news items, article previews, resource lists.
3339
+ */
3340
+ compact: string;
3301
3341
  };
3302
3342
  }, undefined, tailwind_variants.TVReturnType<{
3303
3343
  layout: {
@@ -3308,6 +3348,16 @@ declare const cardVariants: tailwind_variants.TVReturnType<{
3308
3348
  * Use with Background components for images/gradients.
3309
3349
  */
3310
3350
  overlay: string;
3351
+ /**
3352
+ * Profile layout - square image with stacked content below.
3353
+ * Ideal for team member cards, user profiles, testimonials.
3354
+ */
3355
+ profile: string;
3356
+ /**
3357
+ * Compact layout - small thumbnail with condensed horizontal content.
3358
+ * Ideal for news items, article previews, resource lists.
3359
+ */
3360
+ compact: string;
3311
3361
  };
3312
3362
  }, undefined, "relative flex overflow-hidden rounded-surface-card bg-card-background stroke-surface-card border-border-subtle border-solid", tailwind_variants_dist_config_js.TVConfig<{
3313
3363
  layout: {
@@ -3318,6 +3368,16 @@ declare const cardVariants: tailwind_variants.TVReturnType<{
3318
3368
  * Use with Background components for images/gradients.
3319
3369
  */
3320
3370
  overlay: string;
3371
+ /**
3372
+ * Profile layout - square image with stacked content below.
3373
+ * Ideal for team member cards, user profiles, testimonials.
3374
+ */
3375
+ profile: string;
3376
+ /**
3377
+ * Compact layout - small thumbnail with condensed horizontal content.
3378
+ * Ideal for news items, article previews, resource lists.
3379
+ */
3380
+ compact: string;
3321
3381
  };
3322
3382
  }, {
3323
3383
  layout: {
@@ -3328,6 +3388,16 @@ declare const cardVariants: tailwind_variants.TVReturnType<{
3328
3388
  * Use with Background components for images/gradients.
3329
3389
  */
3330
3390
  overlay: string;
3391
+ /**
3392
+ * Profile layout - square image with stacked content below.
3393
+ * Ideal for team member cards, user profiles, testimonials.
3394
+ */
3395
+ profile: string;
3396
+ /**
3397
+ * Compact layout - small thumbnail with condensed horizontal content.
3398
+ * Ideal for news items, article previews, resource lists.
3399
+ */
3400
+ compact: string;
3331
3401
  };
3332
3402
  }>, unknown, unknown, undefined>>;
3333
3403
  interface CardProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof cardVariants> {
@@ -3344,7 +3414,78 @@ interface CardProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps
3344
3414
  * For overlay layout, use Background components for full-bleed backgrounds.
3345
3415
  */
3346
3416
  declare const Card: React$1.ForwardRefExoticComponent<CardProps & React$1.RefAttributes<HTMLDivElement>>;
3347
- interface CardImageProps extends React$1.HTMLAttributes<HTMLDivElement> {
3417
+ declare const cardImageVariants: tailwind_variants.TVReturnType<{
3418
+ layout: {
3419
+ vertical: string;
3420
+ horizontal: string;
3421
+ overlay: string;
3422
+ /** Profile: square aspect ratio for headshots/avatars */
3423
+ profile: string;
3424
+ /** Compact: fixed small size for thumbnails */
3425
+ compact: string;
3426
+ };
3427
+ }, undefined, "relative shrink-0 bg-bg-muted", tailwind_variants_dist_config_js.TVConfig<{
3428
+ layout: {
3429
+ vertical: string;
3430
+ horizontal: string;
3431
+ overlay: string;
3432
+ /** Profile: square aspect ratio for headshots/avatars */
3433
+ profile: string;
3434
+ /** Compact: fixed small size for thumbnails */
3435
+ compact: string;
3436
+ };
3437
+ }, {
3438
+ layout: {
3439
+ vertical: string;
3440
+ horizontal: string;
3441
+ overlay: string;
3442
+ /** Profile: square aspect ratio for headshots/avatars */
3443
+ profile: string;
3444
+ /** Compact: fixed small size for thumbnails */
3445
+ compact: string;
3446
+ };
3447
+ }>, {
3448
+ layout: {
3449
+ vertical: string;
3450
+ horizontal: string;
3451
+ overlay: string;
3452
+ /** Profile: square aspect ratio for headshots/avatars */
3453
+ profile: string;
3454
+ /** Compact: fixed small size for thumbnails */
3455
+ compact: string;
3456
+ };
3457
+ }, undefined, tailwind_variants.TVReturnType<{
3458
+ layout: {
3459
+ vertical: string;
3460
+ horizontal: string;
3461
+ overlay: string;
3462
+ /** Profile: square aspect ratio for headshots/avatars */
3463
+ profile: string;
3464
+ /** Compact: fixed small size for thumbnails */
3465
+ compact: string;
3466
+ };
3467
+ }, undefined, "relative shrink-0 bg-bg-muted", tailwind_variants_dist_config_js.TVConfig<{
3468
+ layout: {
3469
+ vertical: string;
3470
+ horizontal: string;
3471
+ overlay: string;
3472
+ /** Profile: square aspect ratio for headshots/avatars */
3473
+ profile: string;
3474
+ /** Compact: fixed small size for thumbnails */
3475
+ compact: string;
3476
+ };
3477
+ }, {
3478
+ layout: {
3479
+ vertical: string;
3480
+ horizontal: string;
3481
+ overlay: string;
3482
+ /** Profile: square aspect ratio for headshots/avatars */
3483
+ profile: string;
3484
+ /** Compact: fixed small size for thumbnails */
3485
+ compact: string;
3486
+ };
3487
+ }>, unknown, unknown, undefined>>;
3488
+ interface CardImageProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof cardImageVariants> {
3348
3489
  /**
3349
3490
  * The image source URL
3350
3491
  */
@@ -3355,8 +3496,11 @@ interface CardImageProps extends React$1.HTMLAttributes<HTMLDivElement> {
3355
3496
  alt?: string;
3356
3497
  }
3357
3498
  /**
3358
- * Card image area. For vertical layout, displays with 16:9 aspect ratio.
3359
- * For horizontal layout, takes up ~40% width and stretches to content height.
3499
+ * Card image area with layout-specific styling.
3500
+ * - vertical: 16:9 aspect ratio, full width
3501
+ * - horizontal: ~40% width, stretches to content height
3502
+ * - profile: square aspect ratio for headshots/avatars
3503
+ * - compact: fixed small size for thumbnails
3360
3504
  */
3361
3505
  declare const CardImage: React$1.ForwardRefExoticComponent<CardImageProps & React$1.RefAttributes<HTMLDivElement>>;
3362
3506
  declare const cardContentVariants: tailwind_variants.TVReturnType<{
@@ -4038,6 +4182,21 @@ declare const heroVariants: tailwind_variants.TVReturnType<{
4038
4182
  content: string[];
4039
4183
  };
4040
4184
  };
4185
+ /**
4186
+ * Vertical alignment of content within the hero.
4187
+ * Provides a simpler API than variant for basic alignment needs.
4188
+ */
4189
+ contentAlign: {
4190
+ top: {
4191
+ content: string;
4192
+ };
4193
+ center: {
4194
+ content: string;
4195
+ };
4196
+ bottom: {
4197
+ content: string;
4198
+ };
4199
+ };
4041
4200
  colorScheme: {
4042
4201
  dark: {
4043
4202
  root: string;
@@ -4058,6 +4217,7 @@ declare const heroVariants: tailwind_variants.TVReturnType<{
4058
4217
  top: string;
4059
4218
  content: string[];
4060
4219
  title: string;
4220
+ indicator: string;
4061
4221
  }, undefined, tailwind_variants_dist_config_js.TVConfig<{
4062
4222
  variant: {
4063
4223
  A1: {
@@ -4073,6 +4233,21 @@ declare const heroVariants: tailwind_variants.TVReturnType<{
4073
4233
  content: string[];
4074
4234
  };
4075
4235
  };
4236
+ /**
4237
+ * Vertical alignment of content within the hero.
4238
+ * Provides a simpler API than variant for basic alignment needs.
4239
+ */
4240
+ contentAlign: {
4241
+ top: {
4242
+ content: string;
4243
+ };
4244
+ center: {
4245
+ content: string;
4246
+ };
4247
+ bottom: {
4248
+ content: string;
4249
+ };
4250
+ };
4076
4251
  colorScheme: {
4077
4252
  dark: {
4078
4253
  root: string;
@@ -4103,6 +4278,21 @@ declare const heroVariants: tailwind_variants.TVReturnType<{
4103
4278
  content: string[];
4104
4279
  };
4105
4280
  };
4281
+ /**
4282
+ * Vertical alignment of content within the hero.
4283
+ * Provides a simpler API than variant for basic alignment needs.
4284
+ */
4285
+ contentAlign: {
4286
+ top: {
4287
+ content: string;
4288
+ };
4289
+ center: {
4290
+ content: string;
4291
+ };
4292
+ bottom: {
4293
+ content: string;
4294
+ };
4295
+ };
4106
4296
  colorScheme: {
4107
4297
  dark: {
4108
4298
  root: string;
@@ -4133,6 +4323,21 @@ declare const heroVariants: tailwind_variants.TVReturnType<{
4133
4323
  content: string[];
4134
4324
  };
4135
4325
  };
4326
+ /**
4327
+ * Vertical alignment of content within the hero.
4328
+ * Provides a simpler API than variant for basic alignment needs.
4329
+ */
4330
+ contentAlign: {
4331
+ top: {
4332
+ content: string;
4333
+ };
4334
+ center: {
4335
+ content: string;
4336
+ };
4337
+ bottom: {
4338
+ content: string;
4339
+ };
4340
+ };
4136
4341
  colorScheme: {
4137
4342
  dark: {
4138
4343
  root: string;
@@ -4153,6 +4358,7 @@ declare const heroVariants: tailwind_variants.TVReturnType<{
4153
4358
  top: string;
4154
4359
  content: string[];
4155
4360
  title: string;
4361
+ indicator: string;
4156
4362
  }, tailwind_variants.TVReturnType<{
4157
4363
  variant: {
4158
4364
  A1: {
@@ -4168,6 +4374,21 @@ declare const heroVariants: tailwind_variants.TVReturnType<{
4168
4374
  content: string[];
4169
4375
  };
4170
4376
  };
4377
+ /**
4378
+ * Vertical alignment of content within the hero.
4379
+ * Provides a simpler API than variant for basic alignment needs.
4380
+ */
4381
+ contentAlign: {
4382
+ top: {
4383
+ content: string;
4384
+ };
4385
+ center: {
4386
+ content: string;
4387
+ };
4388
+ bottom: {
4389
+ content: string;
4390
+ };
4391
+ };
4171
4392
  colorScheme: {
4172
4393
  dark: {
4173
4394
  root: string;
@@ -4188,6 +4409,7 @@ declare const heroVariants: tailwind_variants.TVReturnType<{
4188
4409
  top: string;
4189
4410
  content: string[];
4190
4411
  title: string;
4412
+ indicator: string;
4191
4413
  }, undefined, tailwind_variants_dist_config_js.TVConfig<{
4192
4414
  variant: {
4193
4415
  A1: {
@@ -4203,6 +4425,21 @@ declare const heroVariants: tailwind_variants.TVReturnType<{
4203
4425
  content: string[];
4204
4426
  };
4205
4427
  };
4428
+ /**
4429
+ * Vertical alignment of content within the hero.
4430
+ * Provides a simpler API than variant for basic alignment needs.
4431
+ */
4432
+ contentAlign: {
4433
+ top: {
4434
+ content: string;
4435
+ };
4436
+ center: {
4437
+ content: string;
4438
+ };
4439
+ bottom: {
4440
+ content: string;
4441
+ };
4442
+ };
4206
4443
  colorScheme: {
4207
4444
  dark: {
4208
4445
  root: string;
@@ -4233,6 +4470,21 @@ declare const heroVariants: tailwind_variants.TVReturnType<{
4233
4470
  content: string[];
4234
4471
  };
4235
4472
  };
4473
+ /**
4474
+ * Vertical alignment of content within the hero.
4475
+ * Provides a simpler API than variant for basic alignment needs.
4476
+ */
4477
+ contentAlign: {
4478
+ top: {
4479
+ content: string;
4480
+ };
4481
+ center: {
4482
+ content: string;
4483
+ };
4484
+ bottom: {
4485
+ content: string;
4486
+ };
4487
+ };
4236
4488
  colorScheme: {
4237
4489
  dark: {
4238
4490
  root: string;
@@ -4288,6 +4540,17 @@ interface HeroProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "title">,
4288
4540
  * Use for USGovBanner, Navigation, etc.
4289
4541
  */
4290
4542
  top?: React$1.ReactNode;
4543
+ /**
4544
+ * Indicator slot for scroll hints, arrows, or other visual cues.
4545
+ * Rendered at the bottom of the hero, below the main content.
4546
+ * @example
4547
+ * ```tsx
4548
+ * <Hero indicator={<ChevronDown className="animate-bounce" />}>
4549
+ * <h1>Welcome</h1>
4550
+ * </Hero>
4551
+ * ```
4552
+ */
4553
+ indicator?: React$1.ReactNode;
4291
4554
  /**
4292
4555
  * Background for the hero. Can be:
4293
4556
  * - A color string (hex, rgb, etc.) for solid backgrounds
@@ -4954,6 +5217,11 @@ interface ThemeProviderProps {
4954
5217
  color?: ColorThemeName;
4955
5218
  /** Surface theme name (defaults to "base") */
4956
5219
  surface?: SurfaceThemeName;
5220
+ /**
5221
+ * Custom project theme created with defineTheme()
5222
+ * When provided, overrides color/surface props with custom theme tokens
5223
+ */
5224
+ customTheme?: ResolvedProjectTheme;
4957
5225
  /** Children to render */
4958
5226
  children: ReactNode;
4959
5227
  /** Optional className for the wrapper div */
@@ -4978,13 +5246,28 @@ interface ThemeProviderProps {
4978
5246
  * <App />
4979
5247
  * </ThemeProvider>
4980
5248
  *
4981
- * // Mix and match
4982
- * <ThemeProvider color="institution" surface="soft">
5249
+ * // Use a custom project theme
5250
+ * import { defineTheme, srgb } from "@nds-design-system/tokens";
5251
+ *
5252
+ * const myTheme = defineTheme({
5253
+ * name: "my-project",
5254
+ * extends: "base",
5255
+ * tokens: {
5256
+ * semantic: {
5257
+ * color: {
5258
+ * bg: { page: srgb("#FEFDF9") },
5259
+ * accent: { brand: srgb("#A68B5E") },
5260
+ * },
5261
+ * },
5262
+ * },
5263
+ * });
5264
+ *
5265
+ * <ThemeProvider customTheme={myTheme}>
4983
5266
  * <App />
4984
5267
  * </ThemeProvider>
4985
5268
  * ```
4986
5269
  */
4987
- declare function ThemeProvider({ color, surface, children, className, applyStyles, }: ThemeProviderProps): react_jsx_runtime.JSX.Element;
5270
+ declare function ThemeProvider({ color, surface, customTheme, children, className, applyStyles, }: ThemeProviderProps): react_jsx_runtime.JSX.Element;
4988
5271
 
4989
5272
  /**
4990
5273
  * Theme Hooks
package/dist/index.js CHANGED
@@ -3798,7 +3798,17 @@ var cardVariants = tv({
3798
3798
  * Overlay layout - content sits on top of full-bleed background.
3799
3799
  * Use with Background components for images/gradients.
3800
3800
  */
3801
- overlay: "w-full flex-col"
3801
+ overlay: "w-full flex-col",
3802
+ /**
3803
+ * Profile layout - square image with stacked content below.
3804
+ * Ideal for team member cards, user profiles, testimonials.
3805
+ */
3806
+ profile: "w-full flex-col",
3807
+ /**
3808
+ * Compact layout - small thumbnail with condensed horizontal content.
3809
+ * Ideal for news items, article previews, resource lists.
3810
+ */
3811
+ compact: "w-full flex-row items-center gap-16"
3802
3812
  }
3803
3813
  },
3804
3814
  defaultVariants: {
@@ -3819,21 +3829,29 @@ var Card = React14.forwardRef(
3819
3829
  );
3820
3830
  Card.displayName = "Card";
3821
3831
  var cardImageVariants = tv({
3822
- base: [
3823
- "relative shrink-0 bg-bg-muted",
3824
- // Vertical: full width with aspect ratio
3825
- "aspect-video w-full",
3826
- // When in horizontal card (parent has flex-row), override
3827
- "[.flex-row>&]:aspect-auto [.flex-row>&]:w-2/5 [.flex-row>&]:self-stretch"
3828
- ]
3832
+ base: "relative shrink-0 bg-bg-muted",
3833
+ variants: {
3834
+ layout: {
3835
+ vertical: "aspect-video w-full",
3836
+ horizontal: "aspect-auto w-2/5 self-stretch",
3837
+ overlay: "aspect-video w-full",
3838
+ /** Profile: square aspect ratio for headshots/avatars */
3839
+ profile: "aspect-square w-full",
3840
+ /** Compact: fixed small size for thumbnails */
3841
+ compact: "size-80 rounded-8"
3842
+ }
3843
+ },
3844
+ defaultVariants: {
3845
+ layout: "vertical"
3846
+ }
3829
3847
  });
3830
3848
  var CardImage = React14.forwardRef(
3831
- ({ className, src, alt = "", ...props }, ref) => {
3849
+ ({ className, src, alt = "", layout, ...props }, ref) => {
3832
3850
  return /* @__PURE__ */ jsx(
3833
3851
  "div",
3834
3852
  {
3835
3853
  ref,
3836
- className: cardImageVariants({ class: className }),
3854
+ className: cardImageVariants({ layout, class: className }),
3837
3855
  ...props,
3838
3856
  children: src && /* @__PURE__ */ jsx(
3839
3857
  "img",
@@ -3953,6 +3971,33 @@ var CardActions = React14.forwardRef(
3953
3971
  }
3954
3972
  );
3955
3973
  CardActions.displayName = "CardActions";
3974
+ var cardLinkVariants = tv({
3975
+ base: "group/link flex items-center gap-4 text-text-muted transition-colors duration-200 hover:text-text-primary"
3976
+ });
3977
+ var CardLink = React14.forwardRef(
3978
+ ({ className, children, showArrow = true, ...props }, ref) => {
3979
+ return /* @__PURE__ */ jsxs(
3980
+ "span",
3981
+ {
3982
+ ref,
3983
+ className: cardLinkVariants({ class: className }),
3984
+ ...props,
3985
+ children: [
3986
+ /* @__PURE__ */ jsx("span", { children }),
3987
+ showArrow && /* @__PURE__ */ jsx(
3988
+ "span",
3989
+ {
3990
+ "aria-hidden": "true",
3991
+ className: "inline-block transition-transform duration-200 ease-out group-hover/link:translate-x-4",
3992
+ children: "\u2192"
3993
+ }
3994
+ )
3995
+ ]
3996
+ }
3997
+ );
3998
+ }
3999
+ );
4000
+ CardLink.displayName = "CardLink";
3956
4001
  var NavbarContext = React14.createContext({
3957
4002
  isMobileMenuOpen: false,
3958
4003
  setIsMobileMenuOpen: () => {
@@ -4533,7 +4578,8 @@ var heroVariants = tv({
4533
4578
  "p-20",
4534
4579
  "md:p-56"
4535
4580
  ],
4536
- title: DEFAULT_TITLE_TYPOGRAPHY
4581
+ title: DEFAULT_TITLE_TYPOGRAPHY,
4582
+ indicator: "absolute inset-x-0 bottom-0 z-10 flex justify-center pb-24"
4537
4583
  },
4538
4584
  variants: {
4539
4585
  variant: {
@@ -4550,6 +4596,21 @@ var heroVariants = tv({
4550
4596
  content: ["items-center justify-center", "lg:p-64"]
4551
4597
  }
4552
4598
  },
4599
+ /**
4600
+ * Vertical alignment of content within the hero.
4601
+ * Provides a simpler API than variant for basic alignment needs.
4602
+ */
4603
+ contentAlign: {
4604
+ top: {
4605
+ content: "justify-start"
4606
+ },
4607
+ center: {
4608
+ content: "items-center justify-center"
4609
+ },
4610
+ bottom: {
4611
+ content: "justify-end"
4612
+ }
4613
+ },
4553
4614
  colorScheme: {
4554
4615
  dark: {
4555
4616
  root: "bg-bg-page",
@@ -4614,7 +4675,9 @@ var Hero = React14.forwardRef(
4614
4675
  title,
4615
4676
  titleClassName,
4616
4677
  colorScheme = "dark",
4678
+ contentAlign,
4617
4679
  top,
4680
+ indicator,
4618
4681
  variant,
4619
4682
  background,
4620
4683
  overlayOpacity = 0,
@@ -4628,6 +4691,7 @@ var Hero = React14.forwardRef(
4628
4691
  const hasMediaBackground = background && !isColor;
4629
4692
  const styles = heroVariants({
4630
4693
  variant,
4694
+ contentAlign,
4631
4695
  colorScheme,
4632
4696
  hasBackground: !!background
4633
4697
  });
@@ -4659,7 +4723,8 @@ var Hero = React14.forwardRef(
4659
4723
  /* @__PURE__ */ jsxs("div", { className: styles.content(), children: [
4660
4724
  title && /* @__PURE__ */ jsx("h1", { className: styles.title({ class: titleClassName }), children: title }),
4661
4725
  children
4662
- ] })
4726
+ ] }),
4727
+ indicator && /* @__PURE__ */ jsx("div", { className: styles.indicator(), children: indicator })
4663
4728
  ]
4664
4729
  }
4665
4730
  );
@@ -9184,6 +9249,7 @@ function deepMerge2(target, source) {
9184
9249
  function ThemeProvider({
9185
9250
  color = "base",
9186
9251
  surface = "base",
9252
+ customTheme,
9187
9253
  children,
9188
9254
  className,
9189
9255
  applyStyles = true
@@ -9191,8 +9257,9 @@ function ThemeProvider({
9191
9257
  const { tokens: tokens2, cssVars } = useMemo(() => {
9192
9258
  const flatTokens = {};
9193
9259
  const baseColorModule = colorThemes.base;
9194
- const colorModule = colorThemes[color];
9195
- const mergedColor = color === "base" ? baseColorModule : mergeTokenModules(baseColorModule, colorModule);
9260
+ const effectiveColor = customTheme ? customTheme.extends : color;
9261
+ const colorModule = colorThemes[effectiveColor] ?? colorThemes.base;
9262
+ const mergedColor = effectiveColor === "base" ? baseColorModule : mergeTokenModules(baseColorModule, colorModule);
9196
9263
  const colorTokens = mergedColor?.semantic?.color ?? mergedColor;
9197
9264
  Object.assign(flatTokens, processColorTokens(colorTokens));
9198
9265
  const baseSurfaceModule = surfaceThemes.base;
@@ -9201,13 +9268,24 @@ function ThemeProvider({
9201
9268
  const surfaceTokens = mergedSurface?.semantic?.surface ?? mergedSurface;
9202
9269
  Object.assign(flatTokens, processSurfaceTokens(surfaceTokens));
9203
9270
  const nestedTokens = flatToNested(flatTokens);
9204
- const cssVariables = flatToCSSVars(flatTokens);
9271
+ let cssVariables = flatToCSSVars(flatTokens);
9272
+ if (customTheme) {
9273
+ cssVariables = {
9274
+ ...cssVariables,
9275
+ ...Object.fromEntries(
9276
+ Object.entries(customTheme.cssVars).map(([key, value]) => [
9277
+ key.startsWith("--") ? key : `--${key}`,
9278
+ value
9279
+ ])
9280
+ )
9281
+ };
9282
+ }
9205
9283
  return { tokens: nestedTokens, cssVars: cssVariables };
9206
- }, [color, surface]);
9284
+ }, [color, surface, customTheme]);
9207
9285
  const contextValue = {
9208
9286
  cssVars,
9209
9287
  tokens: tokens2,
9210
- colorTheme: color,
9288
+ colorTheme: customTheme ? customTheme.extends : color,
9211
9289
  surfaceTheme: surface
9212
9290
  };
9213
9291
  return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: contextValue, children: applyStyles ? /* @__PURE__ */ jsx("div", { style: cssVars, className, children }) : children });