@espressif/dashboard-ui-components 1.1.3 → 1.2.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/CHANGELOG.md +102 -9
- package/dist/{chunk-EF2WYOVZ.js → chunk-KEMHD3KP.js} +754 -44
- package/dist/{chunk-7DM4TIUZ.js → chunk-NHTMHKOR.js} +1 -1
- package/dist/common/index.js +2 -2
- package/dist/components/index.d.ts +181 -2
- package/dist/components/index.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/package.json +4 -1
- package/src/styles/globals.css +6 -0
|
@@ -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,
|
|
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,
|
|
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:
|
|
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",
|
|
@@ -55799,6 +56424,53 @@ var UserTypeBadge = React8.forwardRef(
|
|
|
55799
56424
|
}
|
|
55800
56425
|
);
|
|
55801
56426
|
UserTypeBadge.displayName = "UserTypeBadge";
|
|
56427
|
+
var ICON_PX = {
|
|
56428
|
+
sm: 14,
|
|
56429
|
+
default: 16,
|
|
56430
|
+
lg: 18
|
|
56431
|
+
};
|
|
56432
|
+
var statusBadgeSizeVariants = cva(
|
|
56433
|
+
"rounded-full font-normal [&_svg]:shrink-0",
|
|
56434
|
+
{
|
|
56435
|
+
variants: {
|
|
56436
|
+
size: {
|
|
56437
|
+
sm: "gap-1 pl-0.5 pr-1.5 py-0.5 text-xs",
|
|
56438
|
+
default: "gap-1.5 pl-0.5 pr-1.75 py-0.5 text-xs",
|
|
56439
|
+
lg: "gap-1.5 pl-1 pr-2.25 py-1 text-sm"
|
|
56440
|
+
}
|
|
56441
|
+
},
|
|
56442
|
+
defaultVariants: {
|
|
56443
|
+
size: "default"
|
|
56444
|
+
}
|
|
56445
|
+
}
|
|
56446
|
+
);
|
|
56447
|
+
var StatusBadge = React8.forwardRef(
|
|
56448
|
+
({
|
|
56449
|
+
label,
|
|
56450
|
+
Icon: Icon2,
|
|
56451
|
+
color,
|
|
56452
|
+
variant = "soft",
|
|
56453
|
+
size = "default",
|
|
56454
|
+
isLoading = false,
|
|
56455
|
+
className,
|
|
56456
|
+
...props
|
|
56457
|
+
}, ref) => {
|
|
56458
|
+
const iconPx = ICON_PX[size];
|
|
56459
|
+
return /* @__PURE__ */ jsx("div", { ref, className: "inline-block", ...props, children: /* @__PURE__ */ jsxs(
|
|
56460
|
+
Badge,
|
|
56461
|
+
{
|
|
56462
|
+
color,
|
|
56463
|
+
variant,
|
|
56464
|
+
className: cn(statusBadgeSizeVariants({ size }), className),
|
|
56465
|
+
children: [
|
|
56466
|
+
isLoading ? /* @__PURE__ */ jsx(Spinner, { size: iconPx, "aria-hidden": true }) : Icon2 ? /* @__PURE__ */ jsx(Icon2, { size: iconPx, "aria-hidden": true }) : null,
|
|
56467
|
+
label
|
|
56468
|
+
]
|
|
56469
|
+
}
|
|
56470
|
+
) });
|
|
56471
|
+
}
|
|
56472
|
+
);
|
|
56473
|
+
StatusBadge.displayName = "StatusBadge";
|
|
55802
56474
|
var NAME_CHIP_TINT = {
|
|
55803
56475
|
soft: {
|
|
55804
56476
|
primary: "bg-primary/10",
|
|
@@ -56791,17 +57463,6 @@ function DialogDescription2({ className, ...props }) {
|
|
|
56791
57463
|
}
|
|
56792
57464
|
);
|
|
56793
57465
|
}
|
|
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
57466
|
var SIZE_STYLES2 = {
|
|
56806
57467
|
sm: {
|
|
56807
57468
|
rowPad: "p-3",
|
|
@@ -56851,12 +57512,21 @@ function iconSized4(icon, iconPx) {
|
|
|
56851
57512
|
}
|
|
56852
57513
|
);
|
|
56853
57514
|
}
|
|
56854
|
-
function
|
|
56855
|
-
if (variant !== "solid")
|
|
56856
|
-
|
|
56857
|
-
return SOLID_ICON_AVATAR_COLOR[cardColor];
|
|
57515
|
+
function resolveIconAvatarDefaults(variant, cardColor) {
|
|
57516
|
+
if (variant !== "solid") {
|
|
57517
|
+
return { color: cardColor, variant: void 0 };
|
|
56858
57518
|
}
|
|
56859
|
-
|
|
57519
|
+
const foreground = isPresetColor(cardColor) ? `var(--color-${cardColor}-foreground)` : "#ffffff";
|
|
57520
|
+
return {
|
|
57521
|
+
color: cardColor,
|
|
57522
|
+
variant: "solid",
|
|
57523
|
+
discStyle: {
|
|
57524
|
+
backgroundColor: `color-mix(in srgb, ${foreground} 15%, transparent)`,
|
|
57525
|
+
borderColor: `color-mix(in srgb, ${foreground} 30%, transparent)`,
|
|
57526
|
+
borderStyle: "solid",
|
|
57527
|
+
borderWidth: 1
|
|
57528
|
+
}
|
|
57529
|
+
};
|
|
56860
57530
|
}
|
|
56861
57531
|
function hasRenderableDescription(description) {
|
|
56862
57532
|
if (description === void 0 || description === null) return false;
|
|
@@ -56925,7 +57595,7 @@ function useSimpleClickableCardSurface(options) {
|
|
|
56925
57595
|
"--tw-ring-color": `color-mix(in srgb, ${color} 90%, transparent)`
|
|
56926
57596
|
};
|
|
56927
57597
|
}, [color]);
|
|
56928
|
-
const
|
|
57598
|
+
const iconAvatarDefaults = resolveIconAvatarDefaults(variant, color);
|
|
56929
57599
|
return {
|
|
56930
57600
|
s,
|
|
56931
57601
|
styles,
|
|
@@ -56935,7 +57605,9 @@ function useSimpleClickableCardSurface(options) {
|
|
|
56935
57605
|
surfaceContainerClass,
|
|
56936
57606
|
presetRingClasses,
|
|
56937
57607
|
ringAccentStyle,
|
|
56938
|
-
iconAvatarColor
|
|
57608
|
+
iconAvatarColor: iconAvatarDefaults.color,
|
|
57609
|
+
iconAvatarVariant: iconAvatarDefaults.variant,
|
|
57610
|
+
iconAvatarDiscStyle: iconAvatarDefaults.discStyle
|
|
56939
57611
|
};
|
|
56940
57612
|
}
|
|
56941
57613
|
function useSimpleClickableCardSurfaceShell(options) {
|
|
@@ -57037,6 +57709,7 @@ function renderLeadingIconRow(options) {
|
|
|
57037
57709
|
iconAvatarColor,
|
|
57038
57710
|
iconAvatarRingColor,
|
|
57039
57711
|
iconAvatarVariant,
|
|
57712
|
+
iconAvatarDiscStyle,
|
|
57040
57713
|
titleBlock,
|
|
57041
57714
|
descriptionBlock,
|
|
57042
57715
|
gradientZStyle
|
|
@@ -57048,6 +57721,7 @@ function renderLeadingIconRow(options) {
|
|
|
57048
57721
|
color: iconAvatarColor,
|
|
57049
57722
|
variant: iconAvatarVariant,
|
|
57050
57723
|
ring: { show: true, color: iconAvatarRingColor },
|
|
57724
|
+
discStyle: iconAvatarDiscStyle,
|
|
57051
57725
|
children: iconSized4(icon, s.iconPx)
|
|
57052
57726
|
}
|
|
57053
57727
|
) : null;
|
|
@@ -57163,6 +57837,7 @@ function trailingLeadAndSlot(options) {
|
|
|
57163
57837
|
iconAvatarColor,
|
|
57164
57838
|
iconAvatarRingColor,
|
|
57165
57839
|
iconAvatarVariant,
|
|
57840
|
+
iconAvatarDiscStyle,
|
|
57166
57841
|
titleBlock,
|
|
57167
57842
|
descriptionBlock,
|
|
57168
57843
|
variant,
|
|
@@ -57174,6 +57849,7 @@ function trailingLeadAndSlot(options) {
|
|
|
57174
57849
|
iconAvatarColor,
|
|
57175
57850
|
iconAvatarRingColor,
|
|
57176
57851
|
iconAvatarVariant,
|
|
57852
|
+
iconAvatarDiscStyle,
|
|
57177
57853
|
titleBlock,
|
|
57178
57854
|
descriptionBlock,
|
|
57179
57855
|
gradientZStyle: false
|
|
@@ -57208,7 +57884,7 @@ var IconTextActionCard = React8.forwardRef(
|
|
|
57208
57884
|
actions,
|
|
57209
57885
|
showActionsOnlyOnHover = false,
|
|
57210
57886
|
color = "gray",
|
|
57211
|
-
iconAvatarVariant,
|
|
57887
|
+
iconAvatarVariant: iconAvatarVariantProp,
|
|
57212
57888
|
iconAvatarColor: iconAvatarColorProp,
|
|
57213
57889
|
size = "default",
|
|
57214
57890
|
variant = "soft",
|
|
@@ -57233,10 +57909,14 @@ var IconTextActionCard = React8.forwardRef(
|
|
|
57233
57909
|
surfaceContainerClass,
|
|
57234
57910
|
presetRingClasses,
|
|
57235
57911
|
ringAccentStyle,
|
|
57236
|
-
iconAvatarColor: resolvedIconAvatarColor
|
|
57912
|
+
iconAvatarColor: resolvedIconAvatarColor,
|
|
57913
|
+
iconAvatarVariant: resolvedIconAvatarVariant,
|
|
57914
|
+
iconAvatarDiscStyle
|
|
57237
57915
|
} = useSimpleClickableCardSurface({ variant, color, size });
|
|
57238
57916
|
const iconAvatarColor = iconAvatarColorProp ?? resolvedIconAvatarColor;
|
|
57917
|
+
const iconAvatarVariant = iconAvatarVariantProp ?? resolvedIconAvatarVariant;
|
|
57239
57918
|
const iconAvatarRingColor = iconAvatarColorProp ?? color;
|
|
57919
|
+
const resolvedDiscStyle = iconAvatarColorProp == null ? iconAvatarDiscStyle : void 0;
|
|
57240
57920
|
const fgClass = styles.foreground;
|
|
57241
57921
|
const fgStyle = styles.foregroundStyle;
|
|
57242
57922
|
const descClass = styles.description;
|
|
@@ -57263,6 +57943,7 @@ var IconTextActionCard = React8.forwardRef(
|
|
|
57263
57943
|
iconAvatarColor,
|
|
57264
57944
|
iconAvatarRingColor,
|
|
57265
57945
|
iconAvatarVariant,
|
|
57946
|
+
iconAvatarDiscStyle: resolvedDiscStyle,
|
|
57266
57947
|
titleBlock,
|
|
57267
57948
|
descriptionBlock,
|
|
57268
57949
|
gradientZStyle: false
|
|
@@ -57287,6 +57968,7 @@ var IconTextActionCard = React8.forwardRef(
|
|
|
57287
57968
|
iconAvatarColor,
|
|
57288
57969
|
iconAvatarRingColor,
|
|
57289
57970
|
iconAvatarVariant,
|
|
57971
|
+
iconAvatarDiscStyle: resolvedDiscStyle,
|
|
57290
57972
|
titleBlock,
|
|
57291
57973
|
descriptionBlock,
|
|
57292
57974
|
variant,
|
|
@@ -58896,7 +59578,7 @@ function KeyValueManagerAddPopover({
|
|
|
58896
59578
|
/* @__PURE__ */ jsx(
|
|
58897
59579
|
Input,
|
|
58898
59580
|
{
|
|
58899
|
-
label:
|
|
59581
|
+
label: labels.keyLabel,
|
|
58900
59582
|
value: draftKey,
|
|
58901
59583
|
charLimit: meta?.key?.maxLength,
|
|
58902
59584
|
error: keyError,
|
|
@@ -58908,7 +59590,7 @@ function KeyValueManagerAddPopover({
|
|
|
58908
59590
|
/* @__PURE__ */ jsx(
|
|
58909
59591
|
Textarea,
|
|
58910
59592
|
{
|
|
58911
|
-
label:
|
|
59593
|
+
label: labels.valueLabel,
|
|
58912
59594
|
value: draftValue,
|
|
58913
59595
|
charLimit: meta?.value?.maxLength,
|
|
58914
59596
|
error: valueError,
|
|
@@ -58956,7 +59638,12 @@ function KeyValueManagerTable({
|
|
|
58956
59638
|
rows,
|
|
58957
59639
|
itemsPerPage = 10,
|
|
58958
59640
|
hasSearchQuery,
|
|
58959
|
-
onDelete
|
|
59641
|
+
onDelete,
|
|
59642
|
+
keyLabel,
|
|
59643
|
+
valueLabel,
|
|
59644
|
+
actionLabel,
|
|
59645
|
+
emptyItems,
|
|
59646
|
+
emptySearch
|
|
58960
59647
|
}) {
|
|
58961
59648
|
const [page, setPage] = useState(0);
|
|
58962
59649
|
const [direction, setDirection] = useState(1);
|
|
@@ -58983,16 +59670,16 @@ function KeyValueManagerTable({
|
|
|
58983
59670
|
return /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
|
|
58984
59671
|
/* @__PURE__ */ jsxs(Table, { children: [
|
|
58985
59672
|
/* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsxs(TableRow, { children: [
|
|
58986
|
-
/* @__PURE__ */ jsx(TableHead, { children:
|
|
58987
|
-
/* @__PURE__ */ jsx(TableHead, { children:
|
|
58988
|
-
/* @__PURE__ */ jsx(TableHead, { className: "w-12 text-right", children:
|
|
59673
|
+
/* @__PURE__ */ jsx(TableHead, { children: keyLabel }),
|
|
59674
|
+
/* @__PURE__ */ jsx(TableHead, { children: valueLabel }),
|
|
59675
|
+
/* @__PURE__ */ jsx(TableHead, { className: "w-12 text-right", children: actionLabel })
|
|
58989
59676
|
] }) }),
|
|
58990
59677
|
/* @__PURE__ */ jsx(TableBody, { children: noRows ? /* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsx(
|
|
58991
59678
|
TableCell,
|
|
58992
59679
|
{
|
|
58993
59680
|
colSpan: 3,
|
|
58994
59681
|
className: "py-8 text-center text-muted-foreground",
|
|
58995
|
-
children: hasSearchQuery ?
|
|
59682
|
+
children: hasSearchQuery ? emptySearch : emptyItems
|
|
58996
59683
|
}
|
|
58997
59684
|
) }) : /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsx(
|
|
58998
59685
|
motion.tr,
|
|
@@ -59063,15 +59750,21 @@ function KeyValueManagerTable({
|
|
|
59063
59750
|
}
|
|
59064
59751
|
|
|
59065
59752
|
// src/components/key-value-manager/key-value-manager.props.ts
|
|
59066
|
-
var
|
|
59067
|
-
search: "Search keys or values",
|
|
59753
|
+
var STATIC_DEFAULT_LABELS = {
|
|
59068
59754
|
add: "Add",
|
|
59069
59755
|
keyErrorMessage: "Invalid key",
|
|
59070
59756
|
valueErrorMessage: "Invalid value",
|
|
59071
|
-
successMessage: "Added successfully"
|
|
59757
|
+
successMessage: "Added successfully",
|
|
59758
|
+
keyLabel: "Key",
|
|
59759
|
+
valueLabel: "Value",
|
|
59760
|
+
actionLabel: "Action",
|
|
59761
|
+
emptyItems: "No items",
|
|
59762
|
+
emptySearch: "No matches"
|
|
59072
59763
|
};
|
|
59073
59764
|
function resolveKeyValueManagerLabels(labels) {
|
|
59074
|
-
|
|
59765
|
+
const merged = { ...STATIC_DEFAULT_LABELS, ...labels };
|
|
59766
|
+
const search = labels?.search ?? `Search ${merged.keyLabel.toLowerCase()} or ${merged.valueLabel.toLowerCase()}`;
|
|
59767
|
+
return { ...merged, search };
|
|
59075
59768
|
}
|
|
59076
59769
|
function KeyValueManager({
|
|
59077
59770
|
items,
|
|
@@ -59120,7 +59813,12 @@ function KeyValueManager({
|
|
|
59120
59813
|
rows: filteredRows,
|
|
59121
59814
|
itemsPerPage,
|
|
59122
59815
|
hasSearchQuery: searchQuery.trim().length > 0,
|
|
59123
|
-
onDelete: handleDelete
|
|
59816
|
+
onDelete: handleDelete,
|
|
59817
|
+
keyLabel: labels.keyLabel,
|
|
59818
|
+
valueLabel: labels.valueLabel,
|
|
59819
|
+
actionLabel: labels.actionLabel,
|
|
59820
|
+
emptyItems: labels.emptyItems,
|
|
59821
|
+
emptySearch: labels.emptySearch
|
|
59124
59822
|
}
|
|
59125
59823
|
)
|
|
59126
59824
|
] });
|
|
@@ -65538,6 +66236,7 @@ function trailingChevronRow(options) {
|
|
|
65538
66236
|
iconAvatarColor,
|
|
65539
66237
|
iconAvatarRingColor,
|
|
65540
66238
|
iconAvatarVariant,
|
|
66239
|
+
iconAvatarDiscStyle,
|
|
65541
66240
|
titleBlock,
|
|
65542
66241
|
descriptionBlock,
|
|
65543
66242
|
variant,
|
|
@@ -65554,6 +66253,7 @@ function trailingChevronRow(options) {
|
|
|
65554
66253
|
iconAvatarColor,
|
|
65555
66254
|
iconAvatarRingColor,
|
|
65556
66255
|
iconAvatarVariant,
|
|
66256
|
+
iconAvatarDiscStyle,
|
|
65557
66257
|
titleBlock,
|
|
65558
66258
|
descriptionBlock,
|
|
65559
66259
|
gradientZStyle: false
|
|
@@ -65591,7 +66291,7 @@ var SimpleClickableCard = React8.forwardRef(
|
|
|
65591
66291
|
truncateDescription = false,
|
|
65592
66292
|
onClick,
|
|
65593
66293
|
color = "gray",
|
|
65594
|
-
iconAvatarVariant,
|
|
66294
|
+
iconAvatarVariant: iconAvatarVariantProp,
|
|
65595
66295
|
iconAvatarColor: iconAvatarColorProp,
|
|
65596
66296
|
size = "default",
|
|
65597
66297
|
variant = "soft",
|
|
@@ -65616,10 +66316,14 @@ var SimpleClickableCard = React8.forwardRef(
|
|
|
65616
66316
|
surfaceContainerClass,
|
|
65617
66317
|
presetRingClasses,
|
|
65618
66318
|
ringAccentStyle,
|
|
65619
|
-
iconAvatarColor: resolvedIconAvatarColor
|
|
66319
|
+
iconAvatarColor: resolvedIconAvatarColor,
|
|
66320
|
+
iconAvatarVariant: resolvedIconAvatarVariant,
|
|
66321
|
+
iconAvatarDiscStyle
|
|
65620
66322
|
} = useSimpleClickableCardSurface({ variant, color, size });
|
|
65621
66323
|
const iconAvatarColor = iconAvatarColorProp ?? resolvedIconAvatarColor;
|
|
66324
|
+
const iconAvatarVariant = iconAvatarVariantProp ?? resolvedIconAvatarVariant;
|
|
65622
66325
|
const iconAvatarRingColor = iconAvatarColorProp ?? color;
|
|
66326
|
+
const resolvedDiscStyle = iconAvatarColorProp == null ? iconAvatarDiscStyle : void 0;
|
|
65623
66327
|
const fgClass = styles.foreground;
|
|
65624
66328
|
const fgStyle = styles.foregroundStyle;
|
|
65625
66329
|
const descClass = styles.description;
|
|
@@ -65647,6 +66351,7 @@ var SimpleClickableCard = React8.forwardRef(
|
|
|
65647
66351
|
iconAvatarColor,
|
|
65648
66352
|
iconAvatarRingColor,
|
|
65649
66353
|
iconAvatarVariant,
|
|
66354
|
+
iconAvatarDiscStyle: resolvedDiscStyle,
|
|
65650
66355
|
titleBlock,
|
|
65651
66356
|
descriptionBlock,
|
|
65652
66357
|
variant,
|
|
@@ -65741,7 +66446,7 @@ var SimpleInfoCard = React8.forwardRef(
|
|
|
65741
66446
|
truncateTitle = false,
|
|
65742
66447
|
truncateDescription = false,
|
|
65743
66448
|
color = "gray",
|
|
65744
|
-
iconAvatarVariant,
|
|
66449
|
+
iconAvatarVariant: iconAvatarVariantProp,
|
|
65745
66450
|
iconAvatarColor: iconAvatarColorProp,
|
|
65746
66451
|
size = "default",
|
|
65747
66452
|
variant = "soft",
|
|
@@ -65762,10 +66467,14 @@ var SimpleInfoCard = React8.forwardRef(
|
|
|
65762
66467
|
presetGradientPair,
|
|
65763
66468
|
surfaceContainerClass,
|
|
65764
66469
|
ringAccentStyle,
|
|
65765
|
-
iconAvatarColor: resolvedIconAvatarColor
|
|
66470
|
+
iconAvatarColor: resolvedIconAvatarColor,
|
|
66471
|
+
iconAvatarVariant: resolvedIconAvatarVariant,
|
|
66472
|
+
iconAvatarDiscStyle
|
|
65766
66473
|
} = useSimpleClickableCardSurfaceShell({ variant, color, size });
|
|
65767
66474
|
const iconAvatarColor = iconAvatarColorProp ?? resolvedIconAvatarColor;
|
|
66475
|
+
const iconAvatarVariant = iconAvatarVariantProp ?? resolvedIconAvatarVariant;
|
|
65768
66476
|
const iconAvatarRingColor = iconAvatarColorProp ?? color;
|
|
66477
|
+
const resolvedDiscStyle = iconAvatarColorProp == null ? iconAvatarDiscStyle : void 0;
|
|
65769
66478
|
const fgClass = styles.foreground;
|
|
65770
66479
|
const fgStyle = styles.foregroundStyle;
|
|
65771
66480
|
const descClass = styles.description;
|
|
@@ -65792,6 +66501,7 @@ var SimpleInfoCard = React8.forwardRef(
|
|
|
65792
66501
|
iconAvatarColor,
|
|
65793
66502
|
iconAvatarRingColor,
|
|
65794
66503
|
iconAvatarVariant,
|
|
66504
|
+
iconAvatarDiscStyle: resolvedDiscStyle,
|
|
65795
66505
|
titleBlock,
|
|
65796
66506
|
descriptionBlock,
|
|
65797
66507
|
gradientZStyle: false
|
|
@@ -66041,4 +66751,4 @@ lottie-react/build/index.es.js:
|
|
|
66041
66751
|
(*! goToAndStop must be relative to the start of the current segment *)
|
|
66042
66752
|
*/
|
|
66043
66753
|
|
|
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 };
|
|
66754
|
+
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, StatusBadge, 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, statusBadgeSizeVariants, toast, typographyDefaultElement, typographyVariantClasses, useFormField, userTypeBadgeRegistry, userTypeBadgeSizeVariants, userTypeBadgeUserTypes };
|