@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.
- package/CHANGELOG.md +82 -9
- package/dist/{chunk-7DM4TIUZ.js → chunk-742PUXQ6.js} +1 -1
- package/dist/{chunk-EF2WYOVZ.js → chunk-KF3NDMZW.js} +707 -44
- package/dist/common/index.js +2 -2
- package/dist/components/index.d.ts +154 -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",
|
|
@@ -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
|
|
56855
|
-
if (variant !== "solid")
|
|
56856
|
-
|
|
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
|
-
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
58987
|
-
/* @__PURE__ */ jsx(TableHead, { children:
|
|
58988
|
-
/* @__PURE__ */ jsx(TableHead, { className: "w-12 text-right", children:
|
|
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 ?
|
|
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
|
|
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
|
-
|
|
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 };
|