@espressif/dashboard-ui-components 1.1.3 → 1.2.0

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,9 +1,9 @@
1
1
  import { Card, CardHeader, CardTitle, CardDescription, CardContent, Label, Badge, Popover, PopoverTrigger, PopoverContent, resolveVariantStyles, VariantGradientUnderlay, PRESET_GRADIENT_BACKDROP, PRESET_GRADIENT_FRAME, VARIANT_GRADIENT_BACKDROP_BASE, SILVER_GRADIENT_BACKDROP, VARIANT_GRADIENT_HOVER_OVERLAY_CLASS, arbitraryGradientBackgroundImage, SilverShineOverlay, SilverMetallicBorderOverlay, buttonGroupVariants, useIsInView } from './chunk-JPMN2UMF.js';
2
- import { Button, Input, Tooltip2, TooltipProvider, buttonVariants as buttonVariants$1, inputLabelClassName, CopyButton, Link, Tooltip, TooltipTrigger, TooltipContent, HighlightItem, Slot as Slot$1, Highlight, ScrollArea, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuCheckboxItem } from './chunk-34PXJOCS.js';
2
+ import { Button, inputLabelClassName, Input, Tooltip2, TooltipProvider, buttonVariants as buttonVariants$1, CopyButton, Link, Tooltip, TooltipTrigger, TooltipContent, HighlightItem, Slot as Slot$1, Highlight, ScrollArea, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuCheckboxItem } from './chunk-34PXJOCS.js';
3
3
  import { getStrictContext, buttonVariants, Separator, CollapsibleContent, Collapsible, CollapsibleTrigger, Skeleton, Avatar, AvatarFallback, useControlledState } from './chunk-F5P6S7K2.js';
4
4
  import { cn, resolveColor, isPresetColor } from './chunk-VU4CZ76T.js';
5
5
  import { __commonJS, __toESM } from './chunk-TRTQSARU.js';
6
- import { ChevronDown, ChevronUp, Check, Upload, X, LoaderCircle, Triangle, Info, Search, ClockIcon, Crown, ShieldCheck, Tag as Tag$1, ChevronRight, CircleAlert, Eye, EyeOff, Circle, FileCheck, CheckCheck, TriangleAlert, CircleX, ChevronsUpDown, ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon, CalendarIcon, CalendarRangeIcon, CheckIcon, ChevronLeft, Columns2, ChevronsRight, ChevronsLeft, XIcon, MoveLeft, CircleIcon, Bolt, Plus, ArrowRight, Trash2, Clock, XCircle, CheckCircle2 } from 'lucide-react';
6
+ import { ChevronDown, ChevronUp, Check, Upload, X, LoaderCircle, Triangle, Info, MinusIcon, ArrowLeft, ArrowRight, Search, ClockIcon, Crown, ShieldCheck, Tag as Tag$1, ChevronRight, CircleAlert, Eye, EyeOff, Circle, FileCheck, CheckCheck, TriangleAlert, CircleX, ChevronsUpDown, ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon, CalendarIcon, CalendarRangeIcon, CheckIcon, ChevronLeft, Columns2, ChevronsRight, ChevronsLeft, XIcon, MoveLeft, CircleIcon, Bolt, Plus, Trash2, Clock, XCircle, CheckCircle2 } from 'lucide-react';
7
7
  import * as React8 from 'react';
8
8
  import React8__default, { forwardRef, useMemo, isValidElement, useRef, useState, useCallback, useLayoutEffect, useEffect, useId, Fragment as Fragment$1, Children, cloneElement, createElement } from 'react';
9
9
  import { Switch as Switch$1, ToggleGroup as ToggleGroup$1, Dialog as Dialog$1, Accordion as Accordion$1 } from 'radix-ui';
@@ -19,6 +19,9 @@ import { RadioGroup as RadioGroup$1 } from '@base-ui-components/react/radio-grou
19
19
  import { Radio as Radio$1 } from '@base-ui-components/react/radio';
20
20
  import * as RechartsPrimitive from 'recharts';
21
21
  import { BarChart as BarChart$1, CartesianGrid, XAxis, YAxis, Bar, AreaChart as AreaChart$1, Area, LineChart as LineChart$1, Line, ComposedChart as ComposedChart$1, Cell, PieChart, Pie, Treemap } from 'recharts';
22
+ import { REGEXP_ONLY_DIGITS_AND_CHARS, REGEXP_ONLY_DIGITS, OTPInput, OTPInputContext } from 'input-otp';
23
+ import Autoplay from 'embla-carousel-autoplay';
24
+ import useEmblaCarousel from 'embla-carousel-react';
22
25
  import { Command as Command$1 } from 'cmdk';
23
26
  import { getDefaultClassNames, DayPicker } from 'react-day-picker';
24
27
  import { format, endOfMonth, startOfMonth, sub, endOfDay, startOfDay, endOfYear, startOfYear, endOfWeek, startOfWeek, parse, isValid } from 'date-fns';
@@ -48783,7 +48786,9 @@ function IconAvatar({
48783
48786
  variant = "legacy",
48784
48787
  ring,
48785
48788
  children,
48786
- className
48789
+ className,
48790
+ discClassName,
48791
+ discStyle
48787
48792
  }) {
48788
48793
  const tinted = resolveTintedBg(color);
48789
48794
  const tintedFill = resolveTintedFill(color);
@@ -48809,9 +48814,13 @@ function IconAvatar({
48809
48814
  {
48810
48815
  className: cn(
48811
48816
  "absolute inset-0 z-0 overflow-hidden rounded-full",
48812
- variantSurface?.className ?? tintedFill.className
48817
+ variantSurface?.className ?? tintedFill.className,
48818
+ discClassName
48813
48819
  ),
48814
- style: variantSurface?.style ?? tintedFill.style,
48820
+ style: {
48821
+ ...variantSurface?.style ?? tintedFill.style,
48822
+ ...discStyle
48823
+ },
48815
48824
  children: variantSurface?.underlay
48816
48825
  }
48817
48826
  ),
@@ -48856,13 +48865,15 @@ function IconAvatar({
48856
48865
  "relative z-10 inline-flex items-center justify-center overflow-hidden rounded-full",
48857
48866
  variantSurface?.className ?? tinted.className,
48858
48867
  showRing && "ring-1 ring-offset-0.5 ring-offset-transparent",
48859
- ringBorder?.className
48868
+ ringBorder?.className,
48869
+ discClassName
48860
48870
  ),
48861
48871
  style: {
48862
48872
  width: size,
48863
48873
  height: size,
48864
48874
  ...variantSurface?.style ?? tinted.style,
48865
- ...ringBorder?.style
48875
+ ...ringBorder?.style,
48876
+ ...discStyle
48866
48877
  },
48867
48878
  children: [
48868
48879
  variantSurface?.underlay,
@@ -53368,6 +53379,620 @@ var TreemapChart = React8.forwardRef(
53368
53379
  }
53369
53380
  );
53370
53381
  TreemapChart.displayName = "TreemapChart";
53382
+ var LENGTH_MIN = 2;
53383
+ var LENGTH_MAX = 12;
53384
+ var LENGTH_DEFAULT = 6;
53385
+ var slotSizeClasses = {
53386
+ sm: "h-8 w-8 text-xs",
53387
+ default: "h-10 w-10 text-base md:text-sm",
53388
+ lg: "h-12 w-12 text-lg"
53389
+ };
53390
+ var InputOTPSeparator = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
53391
+ "div",
53392
+ {
53393
+ ref,
53394
+ role: "separator",
53395
+ "aria-hidden": "true",
53396
+ className: cn("flex items-center text-muted-foreground", className),
53397
+ ...props,
53398
+ children: /* @__PURE__ */ jsx(MinusIcon, { size: 16 })
53399
+ }
53400
+ ));
53401
+ InputOTPSeparator.displayName = "InputOTPSeparator";
53402
+ var SlotBox = ({
53403
+ index: index2,
53404
+ size,
53405
+ rounded,
53406
+ hasError,
53407
+ cornerClass
53408
+ }) => {
53409
+ const context = React8.useContext(OTPInputContext);
53410
+ const slot = context.slots[index2];
53411
+ if (!slot) return null;
53412
+ const { char, hasFakeCaret, isActive } = slot;
53413
+ return /* @__PURE__ */ jsxs(
53414
+ "div",
53415
+ {
53416
+ "data-active": isActive || void 0,
53417
+ className: cn(
53418
+ "relative flex items-center justify-center border border-input bg-background font-medium text-foreground shadow-xs",
53419
+ "transition-[box-shadow,border-color] duration-200 ease-in-out",
53420
+ "ring-offset-background",
53421
+ // Focused/active slot gets the same ring treatment `Input` uses on focus.
53422
+ "data-[active=true]:z-10 data-[active=true]:ring-2 data-[active=true]:ring-ring data-[active=true]:ring-offset-2",
53423
+ hasError && "border-destructive data-[active=true]:ring-destructive",
53424
+ rounded ? "rounded-full" : "rounded-md",
53425
+ // The wrapping row overrides the leading/trailing radii on interior
53426
+ // slots so groups read as one connected pill/box.
53427
+ cornerClass,
53428
+ slotSizeClasses[size]
53429
+ ),
53430
+ children: [
53431
+ char,
53432
+ hasFakeCaret && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) })
53433
+ ]
53434
+ }
53435
+ );
53436
+ };
53437
+ function buildGroups(length2, separators) {
53438
+ if (!separators || separators.length === 0) {
53439
+ return [Array.from({ length: length2 }, (_, i) => i)];
53440
+ }
53441
+ const sum2 = separators.reduce((a, b) => a + b, 0);
53442
+ if (sum2 !== length2) {
53443
+ console.warn(
53444
+ `[InputOTP] separators sum (${sum2}) does not equal length (${length2}); ignoring separators.`
53445
+ );
53446
+ return [Array.from({ length: length2 }, (_, i) => i)];
53447
+ }
53448
+ const groups = [];
53449
+ let cursor = 0;
53450
+ for (const size of separators) {
53451
+ groups.push(Array.from({ length: size }, (_, i) => cursor + i));
53452
+ cursor += size;
53453
+ }
53454
+ return groups;
53455
+ }
53456
+ function clampLength(raw) {
53457
+ if (raw === void 0) return LENGTH_DEFAULT;
53458
+ if (!Number.isFinite(raw)) return LENGTH_DEFAULT;
53459
+ const rounded = Math.floor(raw);
53460
+ if (rounded < LENGTH_MIN) {
53461
+ console.warn(
53462
+ `[InputOTP] length=${raw} is below the minimum ${LENGTH_MIN}; using ${LENGTH_MIN}.`
53463
+ );
53464
+ return LENGTH_MIN;
53465
+ }
53466
+ if (rounded > LENGTH_MAX) {
53467
+ console.warn(
53468
+ `[InputOTP] length=${raw} is above the maximum ${LENGTH_MAX}; using ${LENGTH_MAX}.`
53469
+ );
53470
+ return LENGTH_MAX;
53471
+ }
53472
+ return rounded;
53473
+ }
53474
+ var InputOTP = React8.forwardRef(
53475
+ ({
53476
+ length: length2,
53477
+ allowAlphaNumeric,
53478
+ regex,
53479
+ separators,
53480
+ value: value2,
53481
+ defaultValue,
53482
+ onChange,
53483
+ onComplete,
53484
+ label,
53485
+ required,
53486
+ size,
53487
+ rounded,
53488
+ disabled,
53489
+ startHelperContent,
53490
+ endHelperContent,
53491
+ hintContent,
53492
+ error,
53493
+ errorContent,
53494
+ id,
53495
+ name: name2,
53496
+ autoFocus,
53497
+ autoComplete,
53498
+ className,
53499
+ containerClassName,
53500
+ ...restProps
53501
+ }, ref) => {
53502
+ const autoId = React8.useId();
53503
+ const inputId = id || autoId;
53504
+ const effectiveLength = React8.useMemo(() => clampLength(length2), [length2]);
53505
+ const effectiveSize = size || "default";
53506
+ const hasError = !!error || !!errorContent;
53507
+ const isControlled = value2 !== void 0;
53508
+ const [uncontrolledValue, setUncontrolledValue] = React8.useState(
53509
+ typeof defaultValue === "string" ? defaultValue : ""
53510
+ );
53511
+ const effectiveValue = isControlled ? value2 : uncontrolledValue;
53512
+ const handleChange = React8.useCallback(
53513
+ (next) => {
53514
+ if (!isControlled) setUncontrolledValue(next);
53515
+ onChange?.(next);
53516
+ },
53517
+ [isControlled, onChange]
53518
+ );
53519
+ const pattern = regex && regex.length > 0 ? regex : allowAlphaNumeric ? REGEXP_ONLY_DIGITS_AND_CHARS : REGEXP_ONLY_DIGITS;
53520
+ const groups = React8.useMemo(
53521
+ () => buildGroups(effectiveLength, separators),
53522
+ [effectiveLength, separators]
53523
+ );
53524
+ const helperStartId = `${inputId}-helper-start`;
53525
+ const helperEndId = `${inputId}-helper-end`;
53526
+ const describedBy = [
53527
+ errorContent && `${inputId}-error`,
53528
+ startHelperContent && !errorContent && helperStartId,
53529
+ endHelperContent && !errorContent && helperEndId
53530
+ ].filter(Boolean).join(" ") || void 0;
53531
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-2 flex-1", "data-disabled": disabled || void 0, children: [
53532
+ label && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
53533
+ /* @__PURE__ */ jsxs("label", { htmlFor: inputId, className: inputLabelClassName, children: [
53534
+ label,
53535
+ required && /* @__PURE__ */ jsx("span", { className: "text-destructive", children: "*" })
53536
+ ] }),
53537
+ hintContent && /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: hintContent })
53538
+ ] }),
53539
+ !label && hintContent && /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: hintContent }),
53540
+ /* @__PURE__ */ jsx(
53541
+ OTPInput,
53542
+ {
53543
+ ref,
53544
+ id: inputId,
53545
+ name: name2,
53546
+ value: effectiveValue,
53547
+ onChange: handleChange,
53548
+ onComplete,
53549
+ maxLength: effectiveLength,
53550
+ pattern,
53551
+ disabled,
53552
+ required,
53553
+ autoFocus,
53554
+ autoComplete: autoComplete ?? "one-time-code",
53555
+ "aria-invalid": hasError || void 0,
53556
+ "aria-describedby": describedBy,
53557
+ containerClassName: cn(
53558
+ "flex items-center gap-2 has-[:disabled]:opacity-50 has-[:disabled]:cursor-not-allowed",
53559
+ containerClassName
53560
+ ),
53561
+ ...restProps,
53562
+ children: groups.map((group, groupIndex) => /* @__PURE__ */ jsxs(React8.Fragment, { children: [
53563
+ groupIndex > 0 && /* @__PURE__ */ jsx(InputOTPSeparator, {}),
53564
+ /* @__PURE__ */ jsx("div", { className: cn("flex items-center", className), children: group.map((slotIndex, positionInGroup) => {
53565
+ const isFirst = positionInGroup === 0;
53566
+ const isLast = positionInGroup === group.length - 1;
53567
+ const cornerClass = cn(
53568
+ !isFirst && "-ms-px rounded-s-none",
53569
+ !isLast && "rounded-e-none"
53570
+ );
53571
+ return /* @__PURE__ */ jsx(
53572
+ SlotBox,
53573
+ {
53574
+ index: slotIndex,
53575
+ size: effectiveSize,
53576
+ rounded: !!rounded,
53577
+ hasError,
53578
+ cornerClass
53579
+ },
53580
+ slotIndex
53581
+ );
53582
+ }) })
53583
+ ] }, `g-${groupIndex}`))
53584
+ }
53585
+ ),
53586
+ errorContent && /* @__PURE__ */ jsx("div", { id: `${inputId}-error`, className: "text-sm text-destructive", children: errorContent }),
53587
+ startHelperContent && !errorContent && /* @__PURE__ */ jsx("div", { id: helperStartId, className: "text-sm text-muted-foreground", children: startHelperContent }),
53588
+ endHelperContent && !errorContent && /* @__PURE__ */ jsx(
53589
+ "div",
53590
+ {
53591
+ id: helperEndId,
53592
+ className: "text-sm text-end text-muted-foreground",
53593
+ children: endHelperContent
53594
+ }
53595
+ )
53596
+ ] });
53597
+ }
53598
+ );
53599
+ InputOTP.displayName = "InputOTP";
53600
+ var CarouselContext = React8.createContext(null);
53601
+ function useCarousel() {
53602
+ const context = React8.useContext(CarouselContext);
53603
+ if (!context) {
53604
+ throw new Error("useCarousel must be used within a <Carousel />");
53605
+ }
53606
+ return context;
53607
+ }
53608
+ var Carousel = React8.forwardRef(
53609
+ ({
53610
+ orientation = "horizontal",
53611
+ opts,
53612
+ setApi,
53613
+ plugins,
53614
+ className,
53615
+ children,
53616
+ ...props
53617
+ }, ref) => {
53618
+ const [carouselRef, api] = useEmblaCarousel(
53619
+ {
53620
+ ...opts,
53621
+ axis: orientation === "horizontal" ? "x" : "y"
53622
+ },
53623
+ plugins
53624
+ );
53625
+ const [canScrollPrev, setCanScrollPrev] = React8.useState(false);
53626
+ const [canScrollNext, setCanScrollNext] = React8.useState(false);
53627
+ const onSelect = React8.useCallback((api2) => {
53628
+ if (!api2) return;
53629
+ setCanScrollPrev(api2.canScrollPrev());
53630
+ setCanScrollNext(api2.canScrollNext());
53631
+ }, []);
53632
+ const scrollPrev = React8.useCallback(() => {
53633
+ api?.scrollPrev();
53634
+ }, [api]);
53635
+ const scrollNext = React8.useCallback(() => {
53636
+ api?.scrollNext();
53637
+ }, [api]);
53638
+ const handleKeyDown = React8.useCallback(
53639
+ (event) => {
53640
+ const isHorizontal = orientation === "horizontal";
53641
+ const prevKey = isHorizontal ? "ArrowLeft" : "ArrowUp";
53642
+ const nextKey = isHorizontal ? "ArrowRight" : "ArrowDown";
53643
+ if (event.key === prevKey) {
53644
+ event.preventDefault();
53645
+ scrollPrev();
53646
+ } else if (event.key === nextKey) {
53647
+ event.preventDefault();
53648
+ scrollNext();
53649
+ }
53650
+ },
53651
+ [scrollPrev, scrollNext, orientation]
53652
+ );
53653
+ React8.useEffect(() => {
53654
+ if (!api || !setApi) return;
53655
+ setApi(api);
53656
+ }, [api, setApi]);
53657
+ React8.useEffect(() => {
53658
+ if (!api) return;
53659
+ onSelect(api);
53660
+ api.on("reInit", onSelect);
53661
+ api.on("select", onSelect);
53662
+ return () => {
53663
+ api?.off("select", onSelect);
53664
+ api?.off("reInit", onSelect);
53665
+ };
53666
+ }, [api, onSelect]);
53667
+ return /* @__PURE__ */ jsx(
53668
+ CarouselContext.Provider,
53669
+ {
53670
+ value: {
53671
+ carouselRef,
53672
+ api,
53673
+ opts,
53674
+ orientation,
53675
+ scrollPrev,
53676
+ scrollNext,
53677
+ canScrollPrev,
53678
+ canScrollNext
53679
+ },
53680
+ children: /* @__PURE__ */ jsx(
53681
+ "div",
53682
+ {
53683
+ ref,
53684
+ onKeyDownCapture: handleKeyDown,
53685
+ className: cn("relative", className),
53686
+ role: "region",
53687
+ "aria-roledescription": "carousel",
53688
+ ...props,
53689
+ children
53690
+ }
53691
+ )
53692
+ }
53693
+ );
53694
+ }
53695
+ );
53696
+ Carousel.displayName = "Carousel";
53697
+ var CarouselContent = React8.forwardRef(({ className, ...props }, ref) => {
53698
+ const { carouselRef, orientation } = useCarousel();
53699
+ return (
53700
+ // Vertical carousels need an explicit viewport height so overflow clips at
53701
+ // one slide instead of stretching to hold every slide. `h-full` chains up to
53702
+ // whatever height the wrapper is given (e.g. `className="h-64"`).
53703
+ /* @__PURE__ */ jsx(
53704
+ "div",
53705
+ {
53706
+ ref: carouselRef,
53707
+ className: cn(
53708
+ "overflow-hidden",
53709
+ orientation === "vertical" && "h-full"
53710
+ ),
53711
+ children: /* @__PURE__ */ jsx(
53712
+ "div",
53713
+ {
53714
+ ref,
53715
+ className: cn(
53716
+ "flex",
53717
+ orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col h-full",
53718
+ className
53719
+ ),
53720
+ ...props
53721
+ }
53722
+ )
53723
+ }
53724
+ )
53725
+ );
53726
+ });
53727
+ CarouselContent.displayName = "CarouselContent";
53728
+ var CarouselItem = React8.forwardRef(({ className, ...props }, ref) => {
53729
+ const { orientation } = useCarousel();
53730
+ return /* @__PURE__ */ jsx(
53731
+ "div",
53732
+ {
53733
+ ref,
53734
+ role: "group",
53735
+ "aria-roledescription": "slide",
53736
+ className: cn(
53737
+ "min-w-0 shrink-0 grow-0 basis-full",
53738
+ orientation === "horizontal" ? "pl-4" : "pt-4",
53739
+ className
53740
+ ),
53741
+ ...props
53742
+ }
53743
+ );
53744
+ });
53745
+ CarouselItem.displayName = "CarouselItem";
53746
+ var CarouselPrevious = React8.forwardRef(({ className, ...props }, ref) => {
53747
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel();
53748
+ return /* @__PURE__ */ jsxs(
53749
+ "button",
53750
+ {
53751
+ ref,
53752
+ type: "button",
53753
+ className: cn(
53754
+ buttonVariants({ variant: "outline", size: "icon" }),
53755
+ "absolute h-8 w-8 rounded-full",
53756
+ orientation === "horizontal" ? "left-2 top-1/2 -translate-y-1/2" : "top-2 left-1/2 -translate-x-1/2 rotate-90",
53757
+ className
53758
+ ),
53759
+ disabled: !canScrollPrev,
53760
+ onClick: scrollPrev,
53761
+ ...props,
53762
+ children: [
53763
+ /* @__PURE__ */ jsx(ArrowLeft, { className: "h-4 w-4" }),
53764
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Previous slide" })
53765
+ ]
53766
+ }
53767
+ );
53768
+ });
53769
+ CarouselPrevious.displayName = "CarouselPrevious";
53770
+ var CarouselNext = React8.forwardRef(({ className, ...props }, ref) => {
53771
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
53772
+ return /* @__PURE__ */ jsxs(
53773
+ "button",
53774
+ {
53775
+ ref,
53776
+ type: "button",
53777
+ className: cn(
53778
+ buttonVariants({ variant: "outline", size: "icon" }),
53779
+ "absolute h-8 w-8 rounded-full",
53780
+ orientation === "horizontal" ? "right-2 top-1/2 -translate-y-1/2" : "bottom-2 left-1/2 -translate-x-1/2 rotate-90",
53781
+ className
53782
+ ),
53783
+ disabled: !canScrollNext,
53784
+ onClick: scrollNext,
53785
+ ...props,
53786
+ children: [
53787
+ /* @__PURE__ */ jsx(ArrowRight, { className: "h-4 w-4" }),
53788
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Next slide" })
53789
+ ]
53790
+ }
53791
+ );
53792
+ });
53793
+ CarouselNext.displayName = "CarouselNext";
53794
+ var MAX_DOTS_MIN = 1;
53795
+ var MAX_DOTS_MAX = 10;
53796
+ var MAX_DOTS_DEFAULT = 5;
53797
+ var DELAY_MIN = 1e3;
53798
+ var DELAY_MAX = 1e4;
53799
+ var DELAY_DEFAULT = 3e3;
53800
+ function clamp2(value2, min, max, fallback) {
53801
+ if (!Number.isFinite(value2)) return fallback;
53802
+ return Math.min(max, Math.max(min, Math.floor(value2)));
53803
+ }
53804
+ function getDotWindow(total, maxDots, selectedIndex) {
53805
+ if (total <= maxDots) {
53806
+ return Array.from({ length: total }, (_, i) => i);
53807
+ }
53808
+ const half = Math.floor(maxDots / 2);
53809
+ let start = selectedIndex - half;
53810
+ if (start < 0) start = 0;
53811
+ if (start > total - maxDots) start = total - maxDots;
53812
+ return Array.from({ length: maxDots }, (_, i) => start + i);
53813
+ }
53814
+ function DotsRow({
53815
+ total,
53816
+ maxDots,
53817
+ selectedIndex,
53818
+ orientation,
53819
+ onDotClick
53820
+ }) {
53821
+ const window2 = getDotWindow(total, maxDots, selectedIndex);
53822
+ return /* @__PURE__ */ jsx(
53823
+ "div",
53824
+ {
53825
+ className: cn(
53826
+ "flex items-center justify-center gap-1.5",
53827
+ orientation === "horizontal" ? "mt-3 flex-row" : "ml-3 flex-col"
53828
+ ),
53829
+ role: "tablist",
53830
+ "aria-label": "Carousel pagination",
53831
+ children: window2.map((index2) => {
53832
+ const isActive = index2 === selectedIndex;
53833
+ return /* @__PURE__ */ jsx(
53834
+ "button",
53835
+ {
53836
+ type: "button",
53837
+ role: "tab",
53838
+ "aria-selected": isActive,
53839
+ "aria-label": `Go to slide ${index2 + 1}`,
53840
+ onClick: () => onDotClick(index2),
53841
+ className: cn(
53842
+ "rounded-full transition-all duration-200 ease-out",
53843
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
53844
+ orientation === "horizontal" ? isActive ? "h-2 w-4 bg-foreground" : "h-2 w-2 bg-muted-foreground/40 hover:bg-muted-foreground/60" : isActive ? "h-4 w-2 bg-foreground" : "h-2 w-2 bg-muted-foreground/40 hover:bg-muted-foreground/60"
53845
+ )
53846
+ },
53847
+ index2
53848
+ );
53849
+ })
53850
+ }
53851
+ );
53852
+ }
53853
+ function Carousel2({
53854
+ data: data2,
53855
+ orientation = "horizontal",
53856
+ navigation = "dots",
53857
+ maxDots = MAX_DOTS_DEFAULT,
53858
+ autoplay = false,
53859
+ delay: delay2 = DELAY_DEFAULT,
53860
+ loop = true,
53861
+ onNext,
53862
+ onPrevious,
53863
+ renderNavigation,
53864
+ className,
53865
+ itemClassName
53866
+ }) {
53867
+ const clampedMaxDots = clamp2(
53868
+ maxDots,
53869
+ MAX_DOTS_MIN,
53870
+ MAX_DOTS_MAX,
53871
+ MAX_DOTS_DEFAULT
53872
+ );
53873
+ const clampedDelay = clamp2(delay2, DELAY_MIN, DELAY_MAX, DELAY_DEFAULT);
53874
+ const autoplayPlugin = React8.useRef(
53875
+ autoplay ? Autoplay({ delay: clampedDelay, stopOnInteraction: true }) : null
53876
+ );
53877
+ React8.useEffect(() => {
53878
+ const plugin = autoplayPlugin.current;
53879
+ if (!plugin || !autoplay) return;
53880
+ autoplayPlugin.current = Autoplay({
53881
+ delay: clampedDelay,
53882
+ stopOnInteraction: true
53883
+ });
53884
+ }, [autoplay, clampedDelay]);
53885
+ const plugins = React8.useMemo(
53886
+ () => autoplay && autoplayPlugin.current ? [autoplayPlugin.current] : [],
53887
+ // eslint-disable-next-line react-hooks/exhaustive-deps
53888
+ [autoplay, clampedDelay]
53889
+ );
53890
+ const [api, setApi] = React8.useState();
53891
+ const [selectedIndex, setSelectedIndex] = React8.useState(0);
53892
+ const [scrollSnaps, setScrollSnaps] = React8.useState([]);
53893
+ const [canScrollPrev, setCanScrollPrev] = React8.useState(false);
53894
+ const [canScrollNext, setCanScrollNext] = React8.useState(false);
53895
+ const prevIndexRef = React8.useRef(0);
53896
+ React8.useEffect(() => {
53897
+ if (!api) return;
53898
+ setScrollSnaps(api.scrollSnapList());
53899
+ setSelectedIndex(api.selectedScrollSnap());
53900
+ prevIndexRef.current = api.selectedScrollSnap();
53901
+ const handleSelect = () => {
53902
+ const next = api.selectedScrollSnap();
53903
+ const prev = prevIndexRef.current;
53904
+ const total = api.scrollSnapList().length;
53905
+ const diff = next - prev;
53906
+ const isForward = diff === 1 || loop && diff === -(total - 1);
53907
+ const isBackward = diff === -1 || loop && diff === total - 1;
53908
+ if (isForward) {
53909
+ onNext?.();
53910
+ } else if (isBackward) {
53911
+ onPrevious?.();
53912
+ }
53913
+ prevIndexRef.current = next;
53914
+ setSelectedIndex(next);
53915
+ setCanScrollPrev(api.canScrollPrev());
53916
+ setCanScrollNext(api.canScrollNext());
53917
+ };
53918
+ const handleReInit = () => {
53919
+ setScrollSnaps(api.scrollSnapList());
53920
+ setSelectedIndex(api.selectedScrollSnap());
53921
+ setCanScrollPrev(api.canScrollPrev());
53922
+ setCanScrollNext(api.canScrollNext());
53923
+ };
53924
+ setCanScrollPrev(api.canScrollPrev());
53925
+ setCanScrollNext(api.canScrollNext());
53926
+ api.on("select", handleSelect);
53927
+ api.on("reInit", handleReInit);
53928
+ return () => {
53929
+ api.off("select", handleSelect);
53930
+ api.off("reInit", handleReInit);
53931
+ };
53932
+ }, [api, loop, onNext, onPrevious]);
53933
+ const scrollTo = React8.useCallback(
53934
+ (index2) => api?.scrollTo(index2),
53935
+ [api]
53936
+ );
53937
+ const scrollPrev = React8.useCallback(() => api?.scrollPrev(), [api]);
53938
+ const scrollNext = React8.useCallback(() => api?.scrollNext(), [api]);
53939
+ const navigationState = {
53940
+ canScrollPrev,
53941
+ canScrollNext,
53942
+ selectedIndex,
53943
+ scrollSnaps,
53944
+ scrollPrev,
53945
+ scrollNext,
53946
+ scrollTo
53947
+ };
53948
+ return /* @__PURE__ */ jsxs(
53949
+ "div",
53950
+ {
53951
+ className: cn(
53952
+ orientation === "horizontal" ? "flex flex-col" : "flex flex-row",
53953
+ className
53954
+ ),
53955
+ children: [
53956
+ /* @__PURE__ */ jsxs(
53957
+ Carousel,
53958
+ {
53959
+ setApi,
53960
+ orientation,
53961
+ opts: { loop },
53962
+ plugins,
53963
+ className: "min-w-0 flex-1",
53964
+ children: [
53965
+ /* @__PURE__ */ jsx(CarouselContent, { children: data2.map((item) => /* @__PURE__ */ jsx(CarouselItem, { className: itemClassName, children: item.content }, item.id)) }),
53966
+ navigation === "arrows" && /* @__PURE__ */ jsxs(Fragment, { children: [
53967
+ /* @__PURE__ */ jsx(CarouselPrevious, {}),
53968
+ /* @__PURE__ */ jsx(CarouselNext, {})
53969
+ ] })
53970
+ ]
53971
+ }
53972
+ ),
53973
+ navigation === "dots" && data2.length > 1 && /* @__PURE__ */ jsx(
53974
+ DotsRow,
53975
+ {
53976
+ total: data2.length,
53977
+ maxDots: clampedMaxDots,
53978
+ selectedIndex,
53979
+ orientation,
53980
+ onDotClick: scrollTo
53981
+ }
53982
+ ),
53983
+ navigation === "custom" && renderNavigation && /* @__PURE__ */ jsx(
53984
+ "div",
53985
+ {
53986
+ className: cn(
53987
+ orientation === "horizontal" ? "mt-3" : "ml-3"
53988
+ ),
53989
+ children: renderNavigation(navigationState)
53990
+ }
53991
+ )
53992
+ ]
53993
+ }
53994
+ );
53995
+ }
53371
53996
  var labelClasses = "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50";
53372
53997
  var sizeClasses = {
53373
53998
  sm: "min-h-[60px] px-2 py-1.5 text-xs",
@@ -56791,17 +57416,6 @@ function DialogDescription2({ className, ...props }) {
56791
57416
  }
56792
57417
  );
56793
57418
  }
56794
- var SOLID_ICON_AVATAR_COLOR = {
56795
- primary: "var(--color-primary-foreground)",
56796
- secondary: "var(--color-secondary-foreground)",
56797
- info: "var(--color-info-foreground)",
56798
- warning: "var(--color-warning-foreground)",
56799
- error: "var(--color-error-foreground)",
56800
- success: "var(--color-success-foreground)",
56801
- disabled: "var(--color-disabled-foreground)",
56802
- gray: "var(--color-gray-foreground)",
56803
- mist: "var(--color-mist-foreground)"
56804
- };
56805
57419
  var SIZE_STYLES2 = {
56806
57420
  sm: {
56807
57421
  rowPad: "p-3",
@@ -56851,12 +57465,21 @@ function iconSized4(icon, iconPx) {
56851
57465
  }
56852
57466
  );
56853
57467
  }
56854
- function resolveIconAvatarColor(variant, cardColor) {
56855
- if (variant !== "solid") return cardColor;
56856
- if (isPresetColor(cardColor)) {
56857
- return SOLID_ICON_AVATAR_COLOR[cardColor];
57468
+ function resolveIconAvatarDefaults(variant, cardColor) {
57469
+ if (variant !== "solid") {
57470
+ return { color: cardColor, variant: void 0 };
56858
57471
  }
56859
- return "#ffffff";
57472
+ const foreground = isPresetColor(cardColor) ? `var(--color-${cardColor}-foreground)` : "#ffffff";
57473
+ return {
57474
+ color: cardColor,
57475
+ variant: "solid",
57476
+ discStyle: {
57477
+ backgroundColor: `color-mix(in srgb, ${foreground} 15%, transparent)`,
57478
+ borderColor: `color-mix(in srgb, ${foreground} 30%, transparent)`,
57479
+ borderStyle: "solid",
57480
+ borderWidth: 1
57481
+ }
57482
+ };
56860
57483
  }
56861
57484
  function hasRenderableDescription(description) {
56862
57485
  if (description === void 0 || description === null) return false;
@@ -56925,7 +57548,7 @@ function useSimpleClickableCardSurface(options) {
56925
57548
  "--tw-ring-color": `color-mix(in srgb, ${color} 90%, transparent)`
56926
57549
  };
56927
57550
  }, [color]);
56928
- const iconAvatarColor = resolveIconAvatarColor(variant, color);
57551
+ const iconAvatarDefaults = resolveIconAvatarDefaults(variant, color);
56929
57552
  return {
56930
57553
  s,
56931
57554
  styles,
@@ -56935,7 +57558,9 @@ function useSimpleClickableCardSurface(options) {
56935
57558
  surfaceContainerClass,
56936
57559
  presetRingClasses,
56937
57560
  ringAccentStyle,
56938
- iconAvatarColor
57561
+ iconAvatarColor: iconAvatarDefaults.color,
57562
+ iconAvatarVariant: iconAvatarDefaults.variant,
57563
+ iconAvatarDiscStyle: iconAvatarDefaults.discStyle
56939
57564
  };
56940
57565
  }
56941
57566
  function useSimpleClickableCardSurfaceShell(options) {
@@ -57037,6 +57662,7 @@ function renderLeadingIconRow(options) {
57037
57662
  iconAvatarColor,
57038
57663
  iconAvatarRingColor,
57039
57664
  iconAvatarVariant,
57665
+ iconAvatarDiscStyle,
57040
57666
  titleBlock,
57041
57667
  descriptionBlock,
57042
57668
  gradientZStyle
@@ -57048,6 +57674,7 @@ function renderLeadingIconRow(options) {
57048
57674
  color: iconAvatarColor,
57049
57675
  variant: iconAvatarVariant,
57050
57676
  ring: { show: true, color: iconAvatarRingColor },
57677
+ discStyle: iconAvatarDiscStyle,
57051
57678
  children: iconSized4(icon, s.iconPx)
57052
57679
  }
57053
57680
  ) : null;
@@ -57163,6 +57790,7 @@ function trailingLeadAndSlot(options) {
57163
57790
  iconAvatarColor,
57164
57791
  iconAvatarRingColor,
57165
57792
  iconAvatarVariant,
57793
+ iconAvatarDiscStyle,
57166
57794
  titleBlock,
57167
57795
  descriptionBlock,
57168
57796
  variant,
@@ -57174,6 +57802,7 @@ function trailingLeadAndSlot(options) {
57174
57802
  iconAvatarColor,
57175
57803
  iconAvatarRingColor,
57176
57804
  iconAvatarVariant,
57805
+ iconAvatarDiscStyle,
57177
57806
  titleBlock,
57178
57807
  descriptionBlock,
57179
57808
  gradientZStyle: false
@@ -57208,7 +57837,7 @@ var IconTextActionCard = React8.forwardRef(
57208
57837
  actions,
57209
57838
  showActionsOnlyOnHover = false,
57210
57839
  color = "gray",
57211
- iconAvatarVariant,
57840
+ iconAvatarVariant: iconAvatarVariantProp,
57212
57841
  iconAvatarColor: iconAvatarColorProp,
57213
57842
  size = "default",
57214
57843
  variant = "soft",
@@ -57233,10 +57862,14 @@ var IconTextActionCard = React8.forwardRef(
57233
57862
  surfaceContainerClass,
57234
57863
  presetRingClasses,
57235
57864
  ringAccentStyle,
57236
- iconAvatarColor: resolvedIconAvatarColor
57865
+ iconAvatarColor: resolvedIconAvatarColor,
57866
+ iconAvatarVariant: resolvedIconAvatarVariant,
57867
+ iconAvatarDiscStyle
57237
57868
  } = useSimpleClickableCardSurface({ variant, color, size });
57238
57869
  const iconAvatarColor = iconAvatarColorProp ?? resolvedIconAvatarColor;
57870
+ const iconAvatarVariant = iconAvatarVariantProp ?? resolvedIconAvatarVariant;
57239
57871
  const iconAvatarRingColor = iconAvatarColorProp ?? color;
57872
+ const resolvedDiscStyle = iconAvatarColorProp == null ? iconAvatarDiscStyle : void 0;
57240
57873
  const fgClass = styles.foreground;
57241
57874
  const fgStyle = styles.foregroundStyle;
57242
57875
  const descClass = styles.description;
@@ -57263,6 +57896,7 @@ var IconTextActionCard = React8.forwardRef(
57263
57896
  iconAvatarColor,
57264
57897
  iconAvatarRingColor,
57265
57898
  iconAvatarVariant,
57899
+ iconAvatarDiscStyle: resolvedDiscStyle,
57266
57900
  titleBlock,
57267
57901
  descriptionBlock,
57268
57902
  gradientZStyle: false
@@ -57287,6 +57921,7 @@ var IconTextActionCard = React8.forwardRef(
57287
57921
  iconAvatarColor,
57288
57922
  iconAvatarRingColor,
57289
57923
  iconAvatarVariant,
57924
+ iconAvatarDiscStyle: resolvedDiscStyle,
57290
57925
  titleBlock,
57291
57926
  descriptionBlock,
57292
57927
  variant,
@@ -58896,7 +59531,7 @@ function KeyValueManagerAddPopover({
58896
59531
  /* @__PURE__ */ jsx(
58897
59532
  Input,
58898
59533
  {
58899
- label: "Key",
59534
+ label: labels.keyLabel,
58900
59535
  value: draftKey,
58901
59536
  charLimit: meta?.key?.maxLength,
58902
59537
  error: keyError,
@@ -58908,7 +59543,7 @@ function KeyValueManagerAddPopover({
58908
59543
  /* @__PURE__ */ jsx(
58909
59544
  Textarea,
58910
59545
  {
58911
- label: "Value",
59546
+ label: labels.valueLabel,
58912
59547
  value: draftValue,
58913
59548
  charLimit: meta?.value?.maxLength,
58914
59549
  error: valueError,
@@ -58956,7 +59591,12 @@ function KeyValueManagerTable({
58956
59591
  rows,
58957
59592
  itemsPerPage = 10,
58958
59593
  hasSearchQuery,
58959
- onDelete
59594
+ onDelete,
59595
+ keyLabel,
59596
+ valueLabel,
59597
+ actionLabel,
59598
+ emptyItems,
59599
+ emptySearch
58960
59600
  }) {
58961
59601
  const [page, setPage] = useState(0);
58962
59602
  const [direction, setDirection] = useState(1);
@@ -58983,16 +59623,16 @@ function KeyValueManagerTable({
58983
59623
  return /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
58984
59624
  /* @__PURE__ */ jsxs(Table, { children: [
58985
59625
  /* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsxs(TableRow, { children: [
58986
- /* @__PURE__ */ jsx(TableHead, { children: "Key" }),
58987
- /* @__PURE__ */ jsx(TableHead, { children: "Value" }),
58988
- /* @__PURE__ */ jsx(TableHead, { className: "w-12 text-right", children: "Action" })
59626
+ /* @__PURE__ */ jsx(TableHead, { children: keyLabel }),
59627
+ /* @__PURE__ */ jsx(TableHead, { children: valueLabel }),
59628
+ /* @__PURE__ */ jsx(TableHead, { className: "w-12 text-right", children: actionLabel })
58989
59629
  ] }) }),
58990
59630
  /* @__PURE__ */ jsx(TableBody, { children: noRows ? /* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsx(
58991
59631
  TableCell,
58992
59632
  {
58993
59633
  colSpan: 3,
58994
59634
  className: "py-8 text-center text-muted-foreground",
58995
- children: hasSearchQuery ? "No matches" : "No items"
59635
+ children: hasSearchQuery ? emptySearch : emptyItems
58996
59636
  }
58997
59637
  ) }) : /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsx(
58998
59638
  motion.tr,
@@ -59063,15 +59703,21 @@ function KeyValueManagerTable({
59063
59703
  }
59064
59704
 
59065
59705
  // src/components/key-value-manager/key-value-manager.props.ts
59066
- var DEFAULT_KEY_VALUE_MANAGER_LABELS = {
59067
- search: "Search keys or values",
59706
+ var STATIC_DEFAULT_LABELS = {
59068
59707
  add: "Add",
59069
59708
  keyErrorMessage: "Invalid key",
59070
59709
  valueErrorMessage: "Invalid value",
59071
- successMessage: "Added successfully"
59710
+ successMessage: "Added successfully",
59711
+ keyLabel: "Key",
59712
+ valueLabel: "Value",
59713
+ actionLabel: "Action",
59714
+ emptyItems: "No items",
59715
+ emptySearch: "No matches"
59072
59716
  };
59073
59717
  function resolveKeyValueManagerLabels(labels) {
59074
- return { ...DEFAULT_KEY_VALUE_MANAGER_LABELS, ...labels };
59718
+ const merged = { ...STATIC_DEFAULT_LABELS, ...labels };
59719
+ const search = labels?.search ?? `Search ${merged.keyLabel.toLowerCase()} or ${merged.valueLabel.toLowerCase()}`;
59720
+ return { ...merged, search };
59075
59721
  }
59076
59722
  function KeyValueManager({
59077
59723
  items,
@@ -59120,7 +59766,12 @@ function KeyValueManager({
59120
59766
  rows: filteredRows,
59121
59767
  itemsPerPage,
59122
59768
  hasSearchQuery: searchQuery.trim().length > 0,
59123
- onDelete: handleDelete
59769
+ onDelete: handleDelete,
59770
+ keyLabel: labels.keyLabel,
59771
+ valueLabel: labels.valueLabel,
59772
+ actionLabel: labels.actionLabel,
59773
+ emptyItems: labels.emptyItems,
59774
+ emptySearch: labels.emptySearch
59124
59775
  }
59125
59776
  )
59126
59777
  ] });
@@ -65538,6 +66189,7 @@ function trailingChevronRow(options) {
65538
66189
  iconAvatarColor,
65539
66190
  iconAvatarRingColor,
65540
66191
  iconAvatarVariant,
66192
+ iconAvatarDiscStyle,
65541
66193
  titleBlock,
65542
66194
  descriptionBlock,
65543
66195
  variant,
@@ -65554,6 +66206,7 @@ function trailingChevronRow(options) {
65554
66206
  iconAvatarColor,
65555
66207
  iconAvatarRingColor,
65556
66208
  iconAvatarVariant,
66209
+ iconAvatarDiscStyle,
65557
66210
  titleBlock,
65558
66211
  descriptionBlock,
65559
66212
  gradientZStyle: false
@@ -65591,7 +66244,7 @@ var SimpleClickableCard = React8.forwardRef(
65591
66244
  truncateDescription = false,
65592
66245
  onClick,
65593
66246
  color = "gray",
65594
- iconAvatarVariant,
66247
+ iconAvatarVariant: iconAvatarVariantProp,
65595
66248
  iconAvatarColor: iconAvatarColorProp,
65596
66249
  size = "default",
65597
66250
  variant = "soft",
@@ -65616,10 +66269,14 @@ var SimpleClickableCard = React8.forwardRef(
65616
66269
  surfaceContainerClass,
65617
66270
  presetRingClasses,
65618
66271
  ringAccentStyle,
65619
- iconAvatarColor: resolvedIconAvatarColor
66272
+ iconAvatarColor: resolvedIconAvatarColor,
66273
+ iconAvatarVariant: resolvedIconAvatarVariant,
66274
+ iconAvatarDiscStyle
65620
66275
  } = useSimpleClickableCardSurface({ variant, color, size });
65621
66276
  const iconAvatarColor = iconAvatarColorProp ?? resolvedIconAvatarColor;
66277
+ const iconAvatarVariant = iconAvatarVariantProp ?? resolvedIconAvatarVariant;
65622
66278
  const iconAvatarRingColor = iconAvatarColorProp ?? color;
66279
+ const resolvedDiscStyle = iconAvatarColorProp == null ? iconAvatarDiscStyle : void 0;
65623
66280
  const fgClass = styles.foreground;
65624
66281
  const fgStyle = styles.foregroundStyle;
65625
66282
  const descClass = styles.description;
@@ -65647,6 +66304,7 @@ var SimpleClickableCard = React8.forwardRef(
65647
66304
  iconAvatarColor,
65648
66305
  iconAvatarRingColor,
65649
66306
  iconAvatarVariant,
66307
+ iconAvatarDiscStyle: resolvedDiscStyle,
65650
66308
  titleBlock,
65651
66309
  descriptionBlock,
65652
66310
  variant,
@@ -65741,7 +66399,7 @@ var SimpleInfoCard = React8.forwardRef(
65741
66399
  truncateTitle = false,
65742
66400
  truncateDescription = false,
65743
66401
  color = "gray",
65744
- iconAvatarVariant,
66402
+ iconAvatarVariant: iconAvatarVariantProp,
65745
66403
  iconAvatarColor: iconAvatarColorProp,
65746
66404
  size = "default",
65747
66405
  variant = "soft",
@@ -65762,10 +66420,14 @@ var SimpleInfoCard = React8.forwardRef(
65762
66420
  presetGradientPair,
65763
66421
  surfaceContainerClass,
65764
66422
  ringAccentStyle,
65765
- iconAvatarColor: resolvedIconAvatarColor
66423
+ iconAvatarColor: resolvedIconAvatarColor,
66424
+ iconAvatarVariant: resolvedIconAvatarVariant,
66425
+ iconAvatarDiscStyle
65766
66426
  } = useSimpleClickableCardSurfaceShell({ variant, color, size });
65767
66427
  const iconAvatarColor = iconAvatarColorProp ?? resolvedIconAvatarColor;
66428
+ const iconAvatarVariant = iconAvatarVariantProp ?? resolvedIconAvatarVariant;
65768
66429
  const iconAvatarRingColor = iconAvatarColorProp ?? color;
66430
+ const resolvedDiscStyle = iconAvatarColorProp == null ? iconAvatarDiscStyle : void 0;
65769
66431
  const fgClass = styles.foreground;
65770
66432
  const fgStyle = styles.foregroundStyle;
65771
66433
  const descClass = styles.description;
@@ -65792,6 +66454,7 @@ var SimpleInfoCard = React8.forwardRef(
65792
66454
  iconAvatarColor,
65793
66455
  iconAvatarRingColor,
65794
66456
  iconAvatarVariant,
66457
+ iconAvatarDiscStyle: resolvedDiscStyle,
65795
66458
  titleBlock,
65796
66459
  descriptionBlock,
65797
66460
  gradientZStyle: false
@@ -66041,4 +66704,4 @@ lottie-react/build/index.es.js:
66041
66704
  (*! goToAndStop must be relative to the start of the current segment *)
66042
66705
  */
66043
66706
 
66044
- export { Accordion3 as Accordion, AdvancedSearchBox, Alert, AnimatedCard, AnimatedRainmakerLogo, AreaChart, AsyncCombobox, AsyncMultiSelect, BarChart, BasicDetailsCard, CHART_CATEGORY_COLORS, CHART_SERIES_COLORS, Calendar, CalendarDayButton, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox2 as Checkbox, CircularProgress, Code, CollapsibleCard, ComposedChart, ConfirmationDialog, ContentContainer, CopiableText, DEFAULT_CHART_SERIES_COLORS, DEFAULT_PAGE_SIZE_OPTIONS, DataTable, DatePicker, DateRangePicker, DeviceIcon, Dialog2 as Dialog, DialogClose2 as DialogClose, DialogContent2 as DialogContent, DialogDescription2 as DialogDescription, DialogFooter2 as DialogFooter, DialogHeader2 as DialogHeader, DialogTitle2 as DialogTitle, DialogTrigger2 as DialogTrigger, DonutChart, DynamicList, FileUpload, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, FullSizeError, FullscreenDialog, IconAvatar, IconTextActionCard, Illustration, InlineError, KeyValueManager, LineChart, ListDetails, LottieAnimationContainer, MarkdownContent, MonospaceContent, OverflowBadgeList, PRESET_IDS, PRESET_LABELS, PageContainer, PageContainerSkeleton, Pagination, PopCollectionItem, PreviewCard2 as PreviewCard, PreviewCardBackdrop2 as PreviewCardBackdrop, PreviewCardPanel, PreviewCardTrigger2 as PreviewCardTrigger, ProgressBar, RadioGroup3 as RadioGroup, RequirementList, ScrollableSections, SearchBox, SectionCard, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectableCardList, SimpleCard, SimpleClickableCard, SimpleInfoCard, SimpleList, SimplePaginatedList, SimplifiedDate, Spinner, StatCard, StatusCardList, Switch2 as Switch, TYPOGRAPHY_VARIANTS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, TableSkeleton, Tabs2 as Tabs, TabsContent2 as TabsContent, TabsContents2 as TabsContents, TabsList2 as TabsList, TabsTrigger2 as TabsTrigger, Tag, TagInput, Textarea, TimePicker, Toast, Toaster, TogglableItemsList, ToggleGroup2 as ToggleGroup, ToggleGroupItem2 as ToggleGroupItem, TransferList, TreemapChart, Typography, UserTypeBadge, VerificationInProgress, VerticalStepper, animatedCardAnimations, animatedCardTypeKeys, buildSeriesChartConfig, computeDateRange, getChartSeriesColor, illustrationRegistry, illustrationsById, no_data_card_default, parseSvgViewBoxAspectRatio, toast, typographyDefaultElement, typographyVariantClasses, useFormField, userTypeBadgeRegistry, userTypeBadgeSizeVariants, userTypeBadgeUserTypes };
66707
+ export { Accordion3 as Accordion, AdvancedSearchBox, Alert, AnimatedCard, AnimatedRainmakerLogo, AreaChart, AsyncCombobox, AsyncMultiSelect, BarChart, BasicDetailsCard, CHART_CATEGORY_COLORS, CHART_SERIES_COLORS, Calendar, CalendarDayButton, Carousel2 as Carousel, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox2 as Checkbox, CircularProgress, Code, CollapsibleCard, ComposedChart, ConfirmationDialog, ContentContainer, CopiableText, DEFAULT_CHART_SERIES_COLORS, DEFAULT_PAGE_SIZE_OPTIONS, DataTable, DatePicker, DateRangePicker, DeviceIcon, Dialog2 as Dialog, DialogClose2 as DialogClose, DialogContent2 as DialogContent, DialogDescription2 as DialogDescription, DialogFooter2 as DialogFooter, DialogHeader2 as DialogHeader, DialogTitle2 as DialogTitle, DialogTrigger2 as DialogTrigger, DonutChart, DynamicList, FileUpload, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, FullSizeError, FullscreenDialog, IconAvatar, IconTextActionCard, Illustration, InlineError, InputOTP, InputOTPSeparator, KeyValueManager, LineChart, ListDetails, LottieAnimationContainer, MarkdownContent, MonospaceContent, OverflowBadgeList, PRESET_IDS, PRESET_LABELS, PageContainer, PageContainerSkeleton, Pagination, PopCollectionItem, PreviewCard2 as PreviewCard, PreviewCardBackdrop2 as PreviewCardBackdrop, PreviewCardPanel, PreviewCardTrigger2 as PreviewCardTrigger, ProgressBar, RadioGroup3 as RadioGroup, RequirementList, ScrollableSections, SearchBox, SectionCard, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectableCardList, SimpleCard, SimpleClickableCard, SimpleInfoCard, SimpleList, SimplePaginatedList, SimplifiedDate, Spinner, StatCard, StatusCardList, Switch2 as Switch, TYPOGRAPHY_VARIANTS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, TableSkeleton, Tabs2 as Tabs, TabsContent2 as TabsContent, TabsContents2 as TabsContents, TabsList2 as TabsList, TabsTrigger2 as TabsTrigger, Tag, TagInput, Textarea, TimePicker, Toast, Toaster, TogglableItemsList, ToggleGroup2 as ToggleGroup, ToggleGroupItem2 as ToggleGroupItem, TransferList, TreemapChart, Typography, UserTypeBadge, VerificationInProgress, VerticalStepper, animatedCardAnimations, animatedCardTypeKeys, buildSeriesChartConfig, computeDateRange, getChartSeriesColor, illustrationRegistry, illustrationsById, no_data_card_default, parseSvgViewBoxAspectRatio, toast, typographyDefaultElement, typographyVariantClasses, useFormField, userTypeBadgeRegistry, userTypeBadgeSizeVariants, userTypeBadgeUserTypes };