@work-rjkashyap/unified-ui 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkHITTFB2U_cjs = require('./chunk-HITTFB2U.cjs');
3
+ var chunkF4JJFWWU_cjs = require('./chunk-F4JJFWWU.cjs');
4
4
  var chunk3EHT6IOA_cjs = require('./chunk-3EHT6IOA.cjs');
5
5
  var chunk4ON3M3OM_cjs = require('./chunk-4ON3M3OM.cjs');
6
6
  var classVarianceAuthority = require('class-variance-authority');
@@ -483,11 +483,11 @@ var Alert = React.forwardRef(function Alert2({
483
483
  /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { initial: false, children: open && /* @__PURE__ */ jsxRuntime.jsx(
484
484
  framerMotion.motion.div,
485
485
  {
486
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.expandHeight.variants,
486
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.expandHeight.variants,
487
487
  initial: shouldReduce ? { opacity: 0 } : "initial",
488
488
  animate: shouldReduce ? { opacity: 1 } : "animate",
489
489
  exit: shouldReduce ? { opacity: 0 } : "exit",
490
- transition: shouldReduce ? { duration: 0.15 } : chunkHITTFB2U_cjs.expandHeight.transition,
490
+ transition: shouldReduce ? { duration: 0.15 } : chunkF4JJFWWU_cjs.expandHeight.transition,
491
491
  "data-ds-animated": "",
492
492
  children: /* @__PURE__ */ jsxRuntime.jsx(
493
493
  "div",
@@ -535,10 +535,10 @@ var Alert = React.forwardRef(function Alert2({
535
535
  ref,
536
536
  role: resolvedRole,
537
537
  className: rootClasses,
538
- variants: chunkHITTFB2U_cjs.fadeIn.variants,
538
+ variants: chunkF4JJFWWU_cjs.fadeIn.variants,
539
539
  initial: "initial",
540
540
  animate: "animate",
541
- transition: chunkHITTFB2U_cjs.fadeIn.transition,
541
+ transition: chunkF4JJFWWU_cjs.fadeIn.transition,
542
542
  ...rootDataAttrs,
543
543
  children: collapsible ? collapsibleInner : standardInner
544
544
  }
@@ -572,7 +572,39 @@ var Callout = React.forwardRef(
572
572
  );
573
573
  Callout.displayName = "Callout";
574
574
  var calloutVariants = alertVariants;
575
- var AlertDialog = radixUi.AlertDialog.Root;
575
+ var AlertDialogContext = React.createContext({
576
+ open: false
577
+ });
578
+ function useAlertDialogContext() {
579
+ return React.useContext(AlertDialogContext);
580
+ }
581
+ function AlertDialog({
582
+ children,
583
+ open: controlledOpen,
584
+ onOpenChange,
585
+ defaultOpen = false,
586
+ ...rest
587
+ }) {
588
+ const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);
589
+ const isControlled = controlledOpen !== void 0;
590
+ const open = isControlled ? controlledOpen : uncontrolledOpen;
591
+ const handleOpenChange = React.useCallback(
592
+ (next) => {
593
+ if (!isControlled) setUncontrolledOpen(next);
594
+ onOpenChange?.(next);
595
+ },
596
+ [isControlled, onOpenChange]
597
+ );
598
+ return /* @__PURE__ */ jsxRuntime.jsx(AlertDialogContext.Provider, { value: { open }, children: /* @__PURE__ */ jsxRuntime.jsx(
599
+ radixUi.AlertDialog.Root,
600
+ {
601
+ open,
602
+ onOpenChange: handleOpenChange,
603
+ ...rest,
604
+ children
605
+ }
606
+ ) });
607
+ }
576
608
  AlertDialog.displayName = "AlertDialog";
577
609
  var AlertDialogTrigger = radixUi.AlertDialog.Trigger;
578
610
  AlertDialogTrigger.displayName = "AlertDialogTrigger";
@@ -580,18 +612,18 @@ var AlertDialogPortal = radixUi.AlertDialog.Portal;
580
612
  AlertDialogPortal.displayName = "AlertDialogPortal";
581
613
  var AlertDialogOverlay = React.forwardRef(function AlertDialogOverlay2({ className, ...rest }, ref) {
582
614
  const shouldReduce = framerMotion.useReducedMotion();
583
- return /* @__PURE__ */ jsxRuntime.jsx(radixUi.AlertDialog.Overlay, { ref, asChild: true, ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(
615
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.AlertDialog.Overlay, { ref, forceMount: true, asChild: true, ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(
584
616
  framerMotion.motion.div,
585
617
  {
586
618
  className: chunk4ON3M3OM_cjs.cn(
587
619
  "fixed inset-0 z-overlay bg-black/50 backdrop-blur-sm",
588
620
  className
589
621
  ),
590
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.overlayBackdrop.variants,
622
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.overlayBackdrop.variants,
591
623
  initial: shouldReduce ? { opacity: 0 } : "initial",
592
624
  animate: shouldReduce ? { opacity: 1 } : "animate",
593
625
  exit: shouldReduce ? { opacity: 0 } : "exit",
594
- transition: shouldReduce ? { duration: 0.15 } : chunkHITTFB2U_cjs.overlayBackdrop.transition,
626
+ transition: shouldReduce ? { duration: 0.15 } : chunkF4JJFWWU_cjs.overlayBackdrop.transition,
595
627
  "data-ds-animated": ""
596
628
  }
597
629
  ) });
@@ -599,9 +631,10 @@ var AlertDialogOverlay = React.forwardRef(function AlertDialogOverlay2({ classNa
599
631
  AlertDialogOverlay.displayName = "AlertDialogOverlay";
600
632
  var AlertDialogContent = React.forwardRef(function AlertDialogContent2({ className, children, ...rest }, ref) {
601
633
  const shouldReduce = framerMotion.useReducedMotion();
602
- return /* @__PURE__ */ jsxRuntime.jsxs(radixUi.AlertDialog.Portal, { children: [
634
+ const { open } = useAlertDialogContext();
635
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.AlertDialog.Portal, { forceMount: true, children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
603
636
  /* @__PURE__ */ jsxRuntime.jsx(AlertDialogOverlay, {}),
604
- /* @__PURE__ */ jsxRuntime.jsx(radixUi.AlertDialog.Content, { ref, asChild: true, ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(
637
+ /* @__PURE__ */ jsxRuntime.jsx(radixUi.AlertDialog.Content, { ref, forceMount: true, asChild: true, ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(
605
638
  framerMotion.motion.div,
606
639
  {
607
640
  className: chunk4ON3M3OM_cjs.cn(
@@ -613,18 +646,18 @@ var AlertDialogContent = React.forwardRef(function AlertDialogContent2({ classNa
613
646
  chunk3EHT6IOA_cjs.focusRingClasses,
614
647
  className
615
648
  ),
616
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.modalContent.variants,
649
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.modalContent.variants,
617
650
  initial: shouldReduce ? { opacity: 0 } : "initial",
618
651
  animate: shouldReduce ? { opacity: 1 } : "animate",
619
652
  exit: shouldReduce ? { opacity: 0 } : "exit",
620
- transition: shouldReduce ? { duration: 0.2 } : chunkHITTFB2U_cjs.modalContent.transition,
653
+ transition: shouldReduce ? { duration: 0.2 } : chunkF4JJFWWU_cjs.modalContent.transition,
621
654
  "data-ds": "",
622
655
  "data-ds-component": "alert-dialog-content",
623
656
  "data-ds-animated": "",
624
657
  children
625
658
  }
626
659
  ) })
627
- ] });
660
+ ] }) }) });
628
661
  });
629
662
  AlertDialogContent.displayName = "AlertDialogContent";
630
663
  function AlertDialogHeader({
@@ -1279,10 +1312,10 @@ var Badge = React.forwardRef(function Badge2({
1279
1312
  {
1280
1313
  ref,
1281
1314
  className: classes,
1282
- variants: chunkHITTFB2U_cjs.popSubtle.variants,
1315
+ variants: chunkF4JJFWWU_cjs.popSubtle.variants,
1283
1316
  initial: "initial",
1284
1317
  animate: "animate",
1285
- transition: chunkHITTFB2U_cjs.popSubtle.transition,
1318
+ transition: chunkF4JJFWWU_cjs.popSubtle.transition,
1286
1319
  ...dataAttrs,
1287
1320
  children: content
1288
1321
  }
@@ -1380,7 +1413,7 @@ var Banner = React.forwardRef(function Banner2({
1380
1413
  if (controlledVisible === void 0) setInternalVisible(false);
1381
1414
  onDismiss?.();
1382
1415
  };
1383
- const slidePreset = position === "bottom" ? chunkHITTFB2U_cjs.slideUp : chunkHITTFB2U_cjs.slideDown;
1416
+ const slidePreset = position === "bottom" ? chunkF4JJFWWU_cjs.slideUp : chunkF4JJFWWU_cjs.slideDown;
1384
1417
  return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { initial: false, children: isVisible && /* @__PURE__ */ jsxRuntime.jsxs(
1385
1418
  framerMotion.motion.div,
1386
1419
  {
@@ -3464,11 +3497,11 @@ var CodeBlock = React.forwardRef(
3464
3497
  framerMotion.motion.span,
3465
3498
  {
3466
3499
  className: "flex items-center gap-1",
3467
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.fadeInFast.variants,
3500
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.fadeInFast.variants,
3468
3501
  initial: shouldReduce ? void 0 : "initial",
3469
3502
  animate: shouldReduce ? void 0 : "animate",
3470
3503
  exit: shouldReduce ? void 0 : "exit",
3471
- transition: shouldReduce ? void 0 : chunkHITTFB2U_cjs.fadeInFast.transition,
3504
+ transition: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.fadeInFast.transition,
3472
3505
  "data-ds-animated": "",
3473
3506
  children: [
3474
3507
  /* @__PURE__ */ jsxRuntime.jsx(CheckIcon2, { className: "size-3.5 text-code-success" }),
@@ -3480,11 +3513,11 @@ var CodeBlock = React.forwardRef(
3480
3513
  framerMotion.motion.span,
3481
3514
  {
3482
3515
  className: "flex items-center gap-1",
3483
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.fadeInFast.variants,
3516
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.fadeInFast.variants,
3484
3517
  initial: shouldReduce ? void 0 : "initial",
3485
3518
  animate: shouldReduce ? void 0 : "animate",
3486
3519
  exit: shouldReduce ? void 0 : "exit",
3487
- transition: shouldReduce ? void 0 : chunkHITTFB2U_cjs.fadeInFast.transition,
3520
+ transition: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.fadeInFast.transition,
3488
3521
  "data-ds-animated": "",
3489
3522
  children: [
3490
3523
  /* @__PURE__ */ jsxRuntime.jsx(CopyIcon, { className: "size-3.5" }),
@@ -4050,11 +4083,11 @@ var Combobox = React.forwardRef(
4050
4083
  "outline-none",
4051
4084
  contentClassName
4052
4085
  ),
4053
- variants: chunkHITTFB2U_cjs.scaleIn.variants,
4086
+ variants: chunkF4JJFWWU_cjs.scaleIn.variants,
4054
4087
  initial: shouldReduce ? { opacity: 0 } : "initial",
4055
4088
  animate: "animate",
4056
4089
  exit: shouldReduce ? { opacity: 0 } : "exit",
4057
- transition: chunkHITTFB2U_cjs.scaleIn.transition,
4090
+ transition: chunkF4JJFWWU_cjs.scaleIn.transition,
4058
4091
  "data-ds-animated": "",
4059
4092
  children: [
4060
4093
  searchable && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center border-b border-border px-3 gap-2", children: [
@@ -4105,10 +4138,10 @@ var Combobox = React.forwardRef(
4105
4138
  framerMotion.motion.div,
4106
4139
  {
4107
4140
  className: "py-6 text-center text-sm text-muted-foreground",
4108
- variants: chunkHITTFB2U_cjs.fadeIn.variants,
4141
+ variants: chunkF4JJFWWU_cjs.fadeIn.variants,
4109
4142
  initial: "initial",
4110
4143
  animate: "animate",
4111
- transition: chunkHITTFB2U_cjs.fadeIn.transition,
4144
+ transition: chunkF4JJFWWU_cjs.fadeIn.transition,
4112
4145
  "data-ds-animated": "",
4113
4146
  children: emptyMessage
4114
4147
  }
@@ -4118,7 +4151,7 @@ var Combobox = React.forwardRef(
4118
4151
  /* @__PURE__ */ jsxRuntime.jsx(
4119
4152
  framerMotion.motion.div,
4120
4153
  {
4121
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.staggerContainerFast.variants,
4154
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.staggerContainerFast.variants,
4122
4155
  initial: shouldReduce ? void 0 : "initial",
4123
4156
  animate: shouldReduce ? void 0 : "animate",
4124
4157
  children: groupedOptions.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
@@ -4134,7 +4167,7 @@ var Combobox = React.forwardRef(
4134
4167
  id: `${id}-option-${option.value}`,
4135
4168
  "aria-selected": isSelected,
4136
4169
  "aria-disabled": option.disabled,
4137
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.slideUpSm.variants,
4170
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.slideUpSm.variants,
4138
4171
  className: chunk4ON3M3OM_cjs.cn(
4139
4172
  "relative flex items-center gap-2 px-3 py-2 text-sm rounded-sm mx-1",
4140
4173
  "cursor-pointer select-none",
@@ -4187,6 +4220,41 @@ var Combobox = React.forwardRef(
4187
4220
  }
4188
4221
  );
4189
4222
  Combobox.displayName = "Combobox";
4223
+ var kbdVariants = classVarianceAuthority.cva(
4224
+ [
4225
+ "inline-flex items-center gap-0.5",
4226
+ "font-mono font-medium leading-none",
4227
+ "rounded border border-border",
4228
+ "bg-muted text-muted-foreground",
4229
+ "shadow-[0_1px_0_1px_hsl(var(--border))]",
4230
+ "select-none whitespace-nowrap"
4231
+ ],
4232
+ {
4233
+ variants: {
4234
+ size: {
4235
+ sm: "px-1.5 py-0.5 text-[10px]",
4236
+ md: "px-2 py-1 text-xs",
4237
+ lg: "px-2.5 py-1 text-sm"
4238
+ }
4239
+ },
4240
+ defaultVariants: { size: "md" }
4241
+ }
4242
+ );
4243
+ var Kbd = React.forwardRef(function Kbd2({ size = "md", className, children, ...rest }, ref) {
4244
+ return /* @__PURE__ */ jsxRuntime.jsx(
4245
+ "kbd",
4246
+ {
4247
+ ref,
4248
+ className: chunk4ON3M3OM_cjs.cn(kbdVariants({ size }), className),
4249
+ "data-ds": "",
4250
+ "data-ds-component": "kbd",
4251
+ "data-ds-size": size,
4252
+ ...rest,
4253
+ children
4254
+ }
4255
+ );
4256
+ });
4257
+ Kbd.displayName = "Kbd";
4190
4258
  function SearchIcon2({ className }) {
4191
4259
  return /* @__PURE__ */ jsxRuntime.jsxs(
4192
4260
  "svg",
@@ -4209,8 +4277,20 @@ function SearchIcon2({ className }) {
4209
4277
  }
4210
4278
  );
4211
4279
  }
4212
- function KbdHint({ keys }) {
4213
- return /* @__PURE__ */ jsxRuntime.jsx("kbd", { className: "inline-flex items-center gap-0.5 rounded border border-border bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground", children: keys });
4280
+ function ShortcutKeys({ keys }) {
4281
+ const modifiers = /* @__PURE__ */ new Set(["\u2318", "\u21E7", "\u2325", "\u2303"]);
4282
+ const tokens = [];
4283
+ let rest = keys;
4284
+ while (rest.length > 0) {
4285
+ if (modifiers.has(rest[0])) {
4286
+ tokens.push(rest[0]);
4287
+ rest = rest.slice(1);
4288
+ } else {
4289
+ tokens.push(rest);
4290
+ break;
4291
+ }
4292
+ }
4293
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center gap-0.5", children: tokens.map((token, i) => /* @__PURE__ */ jsxRuntime.jsx(Kbd, { size: "sm", children: token }, i)) });
4214
4294
  }
4215
4295
  function matchesSearch(item, query) {
4216
4296
  if (!query) return true;
@@ -4285,30 +4365,39 @@ function Command({
4285
4365
  el?.scrollIntoView({ block: "nearest" });
4286
4366
  }, []);
4287
4367
  let flatIndex = 0;
4288
- return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Root, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(radixUi.Dialog.Portal, { children: [
4289
- /* @__PURE__ */ jsxRuntime.jsx(
4290
- radixUi.Dialog.Overlay,
4368
+ const shouldReduce = framerMotion.useReducedMotion();
4369
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Root, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Portal, { forceMount: true, children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4370
+ /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Overlay, { forceMount: true, asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
4371
+ framerMotion.motion.div,
4291
4372
  {
4292
4373
  className: chunk4ON3M3OM_cjs.cn(
4293
- "fixed inset-0 z-[var(--z-modal)] bg-black/50",
4294
- "data-[state=open]:animate-in data-[state=open]:fade-in-0",
4295
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0"
4296
- )
4374
+ "fixed inset-0 z-[var(--z-modal)] bg-black/50"
4375
+ ),
4376
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.overlayBackdrop.variants,
4377
+ initial: shouldReduce ? { opacity: 0 } : "initial",
4378
+ animate: shouldReduce ? { opacity: 1 } : "animate",
4379
+ exit: shouldReduce ? { opacity: 0 } : "exit",
4380
+ transition: shouldReduce ? { duration: 0.15 } : chunkF4JJFWWU_cjs.overlayBackdrop.transition,
4381
+ "data-ds-animated": ""
4297
4382
  }
4298
- ),
4299
- /* @__PURE__ */ jsxRuntime.jsxs(
4300
- radixUi.Dialog.Content,
4383
+ ) }),
4384
+ /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Content, { forceMount: true, asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
4385
+ framerMotion.motion.div,
4301
4386
  {
4302
4387
  className: chunk4ON3M3OM_cjs.cn(
4303
4388
  "fixed left-1/2 top-[20%] z-[var(--z-modal)]",
4304
4389
  "w-full max-w-lg -translate-x-1/2",
4305
4390
  "rounded-lg border border-border bg-background shadow-xl",
4306
- "overflow-hidden",
4307
- "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:slide-in-from-top-4",
4308
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95"
4391
+ "overflow-hidden"
4309
4392
  ),
4393
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.modalContent.variants,
4394
+ initial: shouldReduce ? { opacity: 0 } : "initial",
4395
+ animate: shouldReduce ? { opacity: 1 } : "animate",
4396
+ exit: shouldReduce ? { opacity: 0 } : "exit",
4397
+ transition: shouldReduce ? { duration: 0.2 } : chunkF4JJFWWU_cjs.modalContent.transition,
4310
4398
  "data-ds": "",
4311
4399
  "data-ds-component": "command",
4400
+ "data-ds-animated": "",
4312
4401
  "aria-label": "Command Palette",
4313
4402
  children: [
4314
4403
  /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Title, { className: "sr-only", children: "Command Palette" }),
@@ -4340,7 +4429,7 @@ function Command({
4340
4429
  )
4341
4430
  }
4342
4431
  ),
4343
- /* @__PURE__ */ jsxRuntime.jsx(KbdHint, { keys: "Esc" })
4432
+ /* @__PURE__ */ jsxRuntime.jsx(ShortcutKeys, { keys: "Esc" })
4344
4433
  ] }),
4345
4434
  /* @__PURE__ */ jsxRuntime.jsx(
4346
4435
  "div",
@@ -4402,7 +4491,7 @@ function Command({
4402
4491
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate font-medium", children: item.label }),
4403
4492
  item.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs text-muted-foreground", children: item.description })
4404
4493
  ] }),
4405
- item.shortcut && /* @__PURE__ */ jsxRuntime.jsx(KbdHint, { keys: item.shortcut })
4494
+ item.shortcut && /* @__PURE__ */ jsxRuntime.jsx(ShortcutKeys, { keys: item.shortcut })
4406
4495
  ]
4407
4496
  },
4408
4497
  item.id
@@ -4414,22 +4503,22 @@ function Command({
4414
4503
  ),
4415
4504
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 border-t border-border px-3 py-2", children: [
4416
4505
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1 text-xs text-muted-foreground", children: [
4417
- /* @__PURE__ */ jsxRuntime.jsx(KbdHint, { keys: "\u2191\u2193" }),
4506
+ /* @__PURE__ */ jsxRuntime.jsx(ShortcutKeys, { keys: "\u2191\u2193" }),
4418
4507
  " navigate"
4419
4508
  ] }),
4420
4509
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1 text-xs text-muted-foreground", children: [
4421
- /* @__PURE__ */ jsxRuntime.jsx(KbdHint, { keys: "\u21B5" }),
4510
+ /* @__PURE__ */ jsxRuntime.jsx(ShortcutKeys, { keys: "\u21B5" }),
4422
4511
  " select"
4423
4512
  ] }),
4424
4513
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1 text-xs text-muted-foreground", children: [
4425
- /* @__PURE__ */ jsxRuntime.jsx(KbdHint, { keys: "Esc" }),
4514
+ /* @__PURE__ */ jsxRuntime.jsx(ShortcutKeys, { keys: "Esc" }),
4426
4515
  " close"
4427
4516
  ] })
4428
4517
  ] })
4429
4518
  ]
4430
4519
  }
4431
- )
4432
- ] }) });
4520
+ ) })
4521
+ ] }) }) }) });
4433
4522
  }
4434
4523
  Command.displayName = "Command";
4435
4524
  var CommandTrigger = React.forwardRef(function CommandTrigger2({ label = "Search commands...", onClick, className }, ref) {
@@ -4454,7 +4543,7 @@ var CommandTrigger = React.forwardRef(function CommandTrigger2({ label = "Search
4454
4543
  children: [
4455
4544
  /* @__PURE__ */ jsxRuntime.jsx(SearchIcon2, { className: "size-3.5 shrink-0" }),
4456
4545
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 truncate text-left", children: label }),
4457
- /* @__PURE__ */ jsxRuntime.jsx(KbdHint, { keys: "\u2318K" })
4546
+ /* @__PURE__ */ jsxRuntime.jsx(ShortcutKeys, { keys: "\u2318K" })
4458
4547
  ]
4459
4548
  }
4460
4549
  );
@@ -4896,11 +4985,11 @@ var CopyButton = React.forwardRef(
4896
4985
  "bg-foreground text-background text-xs font-medium whitespace-nowrap",
4897
4986
  "pointer-events-none z-tooltip"
4898
4987
  ),
4899
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.fadeInFast.variants,
4988
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.fadeInFast.variants,
4900
4989
  initial: shouldReduce ? { opacity: 0 } : "initial",
4901
4990
  animate: shouldReduce ? { opacity: 1 } : "animate",
4902
4991
  exit: shouldReduce ? { opacity: 0 } : "exit",
4903
- transition: shouldReduce ? { duration: 0.1 } : chunkHITTFB2U_cjs.fadeInFast.transition,
4992
+ transition: shouldReduce ? { duration: 0.1 } : chunkF4JJFWWU_cjs.fadeInFast.transition,
4904
4993
  "data-ds-animated": "",
4905
4994
  children: [
4906
4995
  copied ? "Copied!" : tooltip,
@@ -4934,11 +5023,11 @@ var CopyButton = React.forwardRef(
4934
5023
  framerMotion.motion.span,
4935
5024
  {
4936
5025
  className: chunk4ON3M3OM_cjs.cn("text-success", iconSizeMap3[size]),
4937
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.pop.variants,
5026
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.pop.variants,
4938
5027
  initial: shouldReduce ? { opacity: 0 } : "initial",
4939
5028
  animate: shouldReduce ? { opacity: 1 } : "animate",
4940
5029
  exit: shouldReduce ? { opacity: 0 } : "exit",
4941
- transition: shouldReduce ? { duration: 0.1 } : chunkHITTFB2U_cjs.pop.transition,
5030
+ transition: shouldReduce ? { duration: 0.1 } : chunkF4JJFWWU_cjs.pop.transition,
4942
5031
  "data-ds-animated": "",
4943
5032
  children: /* @__PURE__ */ jsxRuntime.jsx(CheckIcon5, { className: iconSizeMap3[size] })
4944
5033
  },
@@ -4946,11 +5035,11 @@ var CopyButton = React.forwardRef(
4946
5035
  ) : /* @__PURE__ */ jsxRuntime.jsx(
4947
5036
  framerMotion.motion.span,
4948
5037
  {
4949
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.fadeInFast.variants,
5038
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.fadeInFast.variants,
4950
5039
  initial: shouldReduce ? { opacity: 0 } : "initial",
4951
5040
  animate: shouldReduce ? { opacity: 1 } : "animate",
4952
5041
  exit: shouldReduce ? { opacity: 0 } : "exit",
4953
- transition: shouldReduce ? { duration: 0.1 } : chunkHITTFB2U_cjs.fadeInFast.transition,
5042
+ transition: shouldReduce ? { duration: 0.1 } : chunkF4JJFWWU_cjs.fadeInFast.transition,
4954
5043
  "data-ds-animated": "",
4955
5044
  children: /* @__PURE__ */ jsxRuntime.jsx(CopyIcon2, { className: iconSizeMap3[size] })
4956
5045
  },
@@ -4965,8 +5054,8 @@ CopyButton.displayName = "CopyButton";
4965
5054
  var dataListVariants = classVarianceAuthority.cva(["w-full"], {
4966
5055
  variants: {
4967
5056
  orientation: {
4968
- horizontal: "grid grid-cols-[auto_1fr] gap-x-6 gap-y-3",
4969
- vertical: "flex flex-col gap-3"
5057
+ horizontal: "grid grid-cols-[auto_1fr] items-baseline gap-x-6",
5058
+ vertical: "flex flex-col gap-2"
4970
5059
  },
4971
5060
  size: {
4972
5061
  sm: "text-xs",
@@ -4992,7 +5081,7 @@ var DataListTerm = React.forwardRef(
4992
5081
  DataListTerm.displayName = "DataListTerm";
4993
5082
  var DataListDetail = React.forwardRef(
4994
5083
  function DataListDetail2({ className, children, ...rest }, ref) {
4995
- return /* @__PURE__ */ jsxRuntime.jsx("dd", { ref, className: chunk4ON3M3OM_cjs.cn("text-foreground", className), ...rest, children });
5084
+ return /* @__PURE__ */ jsxRuntime.jsx("dd", { ref, className: chunk4ON3M3OM_cjs.cn("text-foreground m-0", className), ...rest, children });
4996
5085
  }
4997
5086
  );
4998
5087
  DataListDetail.displayName = "DataListDetail";
@@ -5007,12 +5096,13 @@ var DataList = React.forwardRef(
5007
5096
  }, ref) {
5008
5097
  const shouldReduce = framerMotion.useReducedMotion();
5009
5098
  const isHorizontal = orientation === "horizontal";
5099
+ const horizontalCellPadding = "py-2";
5010
5100
  return /* @__PURE__ */ jsxRuntime.jsx(
5011
5101
  framerMotion.motion.dl,
5012
5102
  {
5013
5103
  ref,
5014
5104
  className: chunk4ON3M3OM_cjs.cn(dataListVariants({ orientation, size }), className),
5015
- variants: animated && !shouldReduce ? chunkHITTFB2U_cjs.staggerContainer.variants : void 0,
5105
+ variants: animated && !shouldReduce ? chunkF4JJFWWU_cjs.staggerContainer.variants : void 0,
5016
5106
  initial: animated && !shouldReduce ? "initial" : void 0,
5017
5107
  animate: animated && !shouldReduce ? "animate" : void 0,
5018
5108
  "data-ds": "",
@@ -5026,14 +5116,15 @@ var DataList = React.forwardRef(
5026
5116
  isHorizontal ? "contents" : "flex flex-col gap-1",
5027
5117
  dividers && i > 0 && !isHorizontal && "pt-3 border-t border-border"
5028
5118
  ),
5029
- variants: animated && !shouldReduce ? chunkHITTFB2U_cjs.fadeIn.variants : void 0,
5030
- transition: animated && !shouldReduce ? chunkHITTFB2U_cjs.fadeIn.transition : void 0,
5119
+ variants: animated && !shouldReduce ? chunkF4JJFWWU_cjs.fadeIn.variants : void 0,
5120
+ transition: animated && !shouldReduce ? chunkF4JJFWWU_cjs.fadeIn.transition : void 0,
5031
5121
  children: isHorizontal ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5032
5122
  /* @__PURE__ */ jsxRuntime.jsx(
5033
5123
  DataListTerm,
5034
5124
  {
5035
5125
  className: chunk4ON3M3OM_cjs.cn(
5036
- dividers && i > 0 && "pt-3 border-t border-border"
5126
+ horizontalCellPadding,
5127
+ dividers && i > 0 && "border-t border-border"
5037
5128
  ),
5038
5129
  children: item.term
5039
5130
  }
@@ -5042,7 +5133,8 @@ var DataList = React.forwardRef(
5042
5133
  DataListDetail,
5043
5134
  {
5044
5135
  className: chunk4ON3M3OM_cjs.cn(
5045
- dividers && i > 0 && "pt-3 border-t border-border"
5136
+ horizontalCellPadding,
5137
+ dividers && i > 0 && "border-t border-border"
5046
5138
  ),
5047
5139
  children: item.detail
5048
5140
  }
@@ -9818,11 +9910,11 @@ var DatePicker = React.forwardRef(
9818
9910
  "outline-none",
9819
9911
  contentClassName
9820
9912
  ),
9821
- variants: chunkHITTFB2U_cjs.scaleIn.variants,
9913
+ variants: chunkF4JJFWWU_cjs.scaleIn.variants,
9822
9914
  initial: shouldReduce ? { opacity: 0 } : "initial",
9823
9915
  animate: "animate",
9824
9916
  exit: shouldReduce ? { opacity: 0 } : "exit",
9825
- transition: chunkHITTFB2U_cjs.scaleIn.transition,
9917
+ transition: chunkF4JJFWWU_cjs.scaleIn.transition,
9826
9918
  "data-ds-animated": "",
9827
9919
  children: /* @__PURE__ */ jsxRuntime.jsx(
9828
9920
  Calendar,
@@ -9879,6 +9971,10 @@ var dialogContentVariants = classVarianceAuthority.cva(
9879
9971
  }
9880
9972
  }
9881
9973
  );
9974
+ var DialogContext = React.createContext({ open: false });
9975
+ function useDialogContext() {
9976
+ return React.useContext(DialogContext);
9977
+ }
9882
9978
  function CloseIcon2({ className }) {
9883
9979
  return /* @__PURE__ */ jsxRuntime.jsxs(
9884
9980
  "svg",
@@ -9899,8 +9995,32 @@ function CloseIcon2({ className }) {
9899
9995
  }
9900
9996
  );
9901
9997
  }
9902
- function Dialog({ children, ...rest }) {
9903
- return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Root, { ...rest, children });
9998
+ function Dialog({
9999
+ children,
10000
+ open: controlledOpen,
10001
+ onOpenChange,
10002
+ defaultOpen = false,
10003
+ ...rest
10004
+ }) {
10005
+ const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);
10006
+ const isControlled = controlledOpen !== void 0;
10007
+ const open = isControlled ? controlledOpen : uncontrolledOpen;
10008
+ const handleOpenChange = React.useCallback(
10009
+ (next) => {
10010
+ if (!isControlled) setUncontrolledOpen(next);
10011
+ onOpenChange?.(next);
10012
+ },
10013
+ [isControlled, onOpenChange]
10014
+ );
10015
+ return /* @__PURE__ */ jsxRuntime.jsx(DialogContext.Provider, { value: { open }, children: /* @__PURE__ */ jsxRuntime.jsx(
10016
+ radixUi.Dialog.Root,
10017
+ {
10018
+ open,
10019
+ onOpenChange: handleOpenChange,
10020
+ ...rest,
10021
+ children
10022
+ }
10023
+ ) });
9904
10024
  }
9905
10025
  Dialog.displayName = "Dialog";
9906
10026
  var DialogTrigger = React.forwardRef(function DialogTrigger2({ className, ...rest }, ref) {
@@ -9918,7 +10038,7 @@ var DialogTrigger = React.forwardRef(function DialogTrigger2({ className, ...res
9918
10038
  DialogTrigger.displayName = "DialogTrigger";
9919
10039
  var DialogOverlay = React.forwardRef(function DialogOverlay2({ className, ...rest }, ref) {
9920
10040
  const shouldReduce = framerMotion.useReducedMotion();
9921
- return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Overlay, { ref, asChild: true, ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(
10041
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Overlay, { ref, forceMount: true, asChild: true, ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(
9922
10042
  framerMotion.motion.div,
9923
10043
  {
9924
10044
  className: chunk4ON3M3OM_cjs.cn(
@@ -9927,11 +10047,11 @@ var DialogOverlay = React.forwardRef(function DialogOverlay2({ className, ...res
9927
10047
  "bg-black/50",
9928
10048
  className
9929
10049
  ),
9930
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.overlayBackdrop.variants,
10050
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.overlayBackdrop.variants,
9931
10051
  initial: shouldReduce ? { opacity: 0 } : "initial",
9932
10052
  animate: shouldReduce ? { opacity: 1 } : "animate",
9933
10053
  exit: shouldReduce ? { opacity: 0 } : "exit",
9934
- transition: shouldReduce ? { duration: 0.15 } : chunkHITTFB2U_cjs.overlayBackdrop.transition,
10054
+ transition: shouldReduce ? { duration: 0.15 } : chunkF4JJFWWU_cjs.overlayBackdrop.transition,
9935
10055
  "data-ds-animated": ""
9936
10056
  }
9937
10057
  ) });
@@ -9946,9 +10066,10 @@ var DialogContent = React.forwardRef(function DialogContent2({
9946
10066
  ...rest
9947
10067
  }, ref) {
9948
10068
  const shouldReduce = framerMotion.useReducedMotion();
9949
- return /* @__PURE__ */ jsxRuntime.jsxs(radixUi.Dialog.Portal, { children: [
10069
+ const { open } = useDialogContext();
10070
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Portal, { forceMount: true, children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
9950
10071
  /* @__PURE__ */ jsxRuntime.jsx(DialogOverlay, { className: overlayClassName }),
9951
- /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Content, { ref, asChild: true, ...rest, children: /* @__PURE__ */ jsxRuntime.jsxs(
10072
+ /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Content, { ref, forceMount: true, asChild: true, ...rest, children: /* @__PURE__ */ jsxRuntime.jsxs(
9952
10073
  framerMotion.motion.div,
9953
10074
  {
9954
10075
  className: chunk4ON3M3OM_cjs.cn(
@@ -9956,11 +10077,11 @@ var DialogContent = React.forwardRef(function DialogContent2({
9956
10077
  dialogContentVariants({ size }),
9957
10078
  className
9958
10079
  ),
9959
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.modalContent.variants,
10080
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.modalContent.variants,
9960
10081
  initial: shouldReduce ? { opacity: 0 } : "initial",
9961
10082
  animate: shouldReduce ? { opacity: 1 } : "animate",
9962
10083
  exit: shouldReduce ? { opacity: 0 } : "exit",
9963
- transition: shouldReduce ? { duration: 0.2 } : chunkHITTFB2U_cjs.modalContent.transition,
10084
+ transition: shouldReduce ? { duration: 0.2 } : chunkF4JJFWWU_cjs.modalContent.transition,
9964
10085
  "data-ds": "",
9965
10086
  "data-ds-component": "dialog",
9966
10087
  "data-ds-size": size,
@@ -9985,7 +10106,7 @@ var DialogContent = React.forwardRef(function DialogContent2({
9985
10106
  ]
9986
10107
  }
9987
10108
  ) })
9988
- ] });
10109
+ ] }) }) });
9989
10110
  });
9990
10111
  DialogContent.displayName = "DialogContent";
9991
10112
  function DialogHeader({
@@ -10180,11 +10301,11 @@ var DropdownMenuContent = React.forwardRef(function DropdownMenuContent2({ class
10180
10301
  framerMotion.motion.div,
10181
10302
  {
10182
10303
  className: chunk4ON3M3OM_cjs.cn(...menuContentBase2, className),
10183
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.scaleIn.variants,
10304
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.scaleIn.variants,
10184
10305
  initial: shouldReduce ? { opacity: 0 } : "initial",
10185
10306
  animate: shouldReduce ? { opacity: 1 } : "animate",
10186
10307
  exit: shouldReduce ? { opacity: 0 } : "exit",
10187
- transition: shouldReduce ? { duration: 0.15 } : chunkHITTFB2U_cjs.scaleIn.transition,
10308
+ transition: shouldReduce ? { duration: 0.15 } : chunkF4JJFWWU_cjs.scaleIn.transition,
10188
10309
  "data-ds": "",
10189
10310
  "data-ds-component": "dropdown-menu-content",
10190
10311
  "data-ds-animated": "",
@@ -10328,11 +10449,11 @@ var DropdownMenuSubContent = React.forwardRef(function DropdownMenuSubContent2({
10328
10449
  framerMotion.motion.div,
10329
10450
  {
10330
10451
  className: chunk4ON3M3OM_cjs.cn(...menuContentBase2, className),
10331
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.scaleIn.variants,
10452
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.scaleIn.variants,
10332
10453
  initial: shouldReduce ? { opacity: 0 } : "initial",
10333
10454
  animate: shouldReduce ? { opacity: 1 } : "animate",
10334
10455
  exit: shouldReduce ? { opacity: 0 } : "exit",
10335
- transition: shouldReduce ? { duration: 0.15 } : chunkHITTFB2U_cjs.scaleIn.transition,
10456
+ transition: shouldReduce ? { duration: 0.15 } : chunkF4JJFWWU_cjs.scaleIn.transition,
10336
10457
  "data-ds": "",
10337
10458
  "data-ds-component": "dropdown-menu-sub-content",
10338
10459
  "data-ds-animated": "",
@@ -10408,10 +10529,10 @@ var EmptyState = React.forwardRef(
10408
10529
  framerMotion.motion.div,
10409
10530
  {
10410
10531
  className: "flex items-center justify-center size-16 rounded-full bg-muted text-muted-foreground",
10411
- variants: animated && !shouldReduce ? chunkHITTFB2U_cjs.scaleIn.variants : void 0,
10532
+ variants: animated && !shouldReduce ? chunkF4JJFWWU_cjs.scaleIn.variants : void 0,
10412
10533
  initial: animated && !shouldReduce ? "initial" : void 0,
10413
10534
  animate: animated && !shouldReduce ? "animate" : void 0,
10414
- transition: animated && !shouldReduce ? chunkHITTFB2U_cjs.scaleIn.transition : void 0,
10535
+ transition: animated && !shouldReduce ? chunkF4JJFWWU_cjs.scaleIn.transition : void 0,
10415
10536
  "data-ds-animated": animated ? "" : void 0,
10416
10537
  children: icon ?? /* @__PURE__ */ jsxRuntime.jsx(InboxIcon, { className: "size-8" })
10417
10538
  }
@@ -10420,10 +10541,10 @@ var EmptyState = React.forwardRef(
10420
10541
  framerMotion.motion.div,
10421
10542
  {
10422
10543
  className: "flex flex-col gap-1.5 max-w-xs",
10423
- variants: animated && !shouldReduce ? chunkHITTFB2U_cjs.fadeIn.variants : void 0,
10544
+ variants: animated && !shouldReduce ? chunkF4JJFWWU_cjs.fadeIn.variants : void 0,
10424
10545
  initial: animated && !shouldReduce ? "initial" : void 0,
10425
10546
  animate: animated && !shouldReduce ? "animate" : void 0,
10426
- transition: animated && !shouldReduce ? { ...chunkHITTFB2U_cjs.fadeIn.transition, delay: 0.15 } : void 0,
10547
+ transition: animated && !shouldReduce ? { ...chunkF4JJFWWU_cjs.fadeIn.transition, delay: 0.15 } : void 0,
10427
10548
  "data-ds-animated": animated ? "" : void 0,
10428
10549
  children: [
10429
10550
  title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base font-semibold text-foreground leading-5", children: title }),
@@ -10435,10 +10556,10 @@ var EmptyState = React.forwardRef(
10435
10556
  action && /* @__PURE__ */ jsxRuntime.jsx(
10436
10557
  framerMotion.motion.div,
10437
10558
  {
10438
- variants: animated && !shouldReduce ? chunkHITTFB2U_cjs.fadeIn.variants : void 0,
10559
+ variants: animated && !shouldReduce ? chunkF4JJFWWU_cjs.fadeIn.variants : void 0,
10439
10560
  initial: animated && !shouldReduce ? "initial" : void 0,
10440
10561
  animate: animated && !shouldReduce ? "animate" : void 0,
10441
- transition: animated && !shouldReduce ? { ...chunkHITTFB2U_cjs.fadeIn.transition, delay: 0.25 } : void 0,
10562
+ transition: animated && !shouldReduce ? { ...chunkF4JJFWWU_cjs.fadeIn.transition, delay: 0.25 } : void 0,
10442
10563
  "data-ds-animated": animated ? "" : void 0,
10443
10564
  children: action
10444
10565
  }
@@ -10770,7 +10891,7 @@ var FileUpload = React.forwardRef(
10770
10891
  framerMotion.motion.div,
10771
10892
  {
10772
10893
  className: "flex flex-col gap-2",
10773
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.staggerContainerFast.variants,
10894
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.staggerContainerFast.variants,
10774
10895
  initial: shouldReduce ? void 0 : "initial",
10775
10896
  animate: shouldReduce ? void 0 : "animate",
10776
10897
  "data-ds-animated": "",
@@ -10778,7 +10899,7 @@ var FileUpload = React.forwardRef(
10778
10899
  framerMotion.motion.div,
10779
10900
  {
10780
10901
  layout: true,
10781
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.slideUpSm.variants,
10902
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.slideUpSm.variants,
10782
10903
  initial: shouldReduce ? { opacity: 0 } : "initial",
10783
10904
  animate: shouldReduce ? { opacity: 1 } : "animate",
10784
10905
  exit: shouldReduce ? { opacity: 0 } : {
@@ -11057,11 +11178,11 @@ var HoverCardContent = React.forwardRef(function HoverCardContent2({
11057
11178
  "text-sm text-popover-foreground",
11058
11179
  className
11059
11180
  ),
11060
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.scaleIn.variants,
11181
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.scaleIn.variants,
11061
11182
  initial: shouldReduce ? { opacity: 0 } : "initial",
11062
11183
  animate: shouldReduce ? { opacity: 1 } : "animate",
11063
11184
  exit: shouldReduce ? { opacity: 0 } : "exit",
11064
- transition: shouldReduce ? { duration: 0.12 } : chunkHITTFB2U_cjs.scaleIn.transition,
11185
+ transition: shouldReduce ? { duration: 0.12 } : chunkF4JJFWWU_cjs.scaleIn.transition,
11065
11186
  "data-ds": "",
11066
11187
  "data-ds-component": "hover-card-content",
11067
11188
  "data-ds-animated": "",
@@ -11389,7 +11510,7 @@ var addonVariants = classVarianceAuthority.cva(
11389
11510
  [
11390
11511
  "inline-flex items-center justify-center shrink-0",
11391
11512
  "bg-muted text-muted-foreground font-medium",
11392
- "px-3 select-none",
11513
+ "select-none",
11393
11514
  "border-border"
11394
11515
  ],
11395
11516
  {
@@ -11407,21 +11528,51 @@ var addonVariants = classVarianceAuthority.cva(
11407
11528
  defaultVariants: { position: "left", size: "md" }
11408
11529
  }
11409
11530
  );
11410
- var prefixSuffixVariants = classVarianceAuthority.cva(
11411
- [
11412
- "inline-flex items-center shrink-0",
11413
- "text-muted-foreground pointer-events-none"
11414
- ],
11415
- {
11416
- variants: {
11417
- position: {
11418
- left: "pl-3",
11419
- right: "pr-3"
11420
- }
11421
- },
11422
- defaultVariants: { position: "left" }
11423
- }
11424
- );
11531
+ var iconSizeMap5 = {
11532
+ sm: "[&>svg]:size-3.5",
11533
+ md: "[&>svg]:size-4",
11534
+ lg: "[&>svg]:size-4"
11535
+ };
11536
+ var prefixPaddingMap = {
11537
+ sm: "pl-2",
11538
+ md: "pl-3",
11539
+ lg: "pl-3"
11540
+ };
11541
+ var suffixPaddingMap = {
11542
+ sm: "pr-2",
11543
+ md: "pr-3",
11544
+ lg: "pr-3"
11545
+ };
11546
+ var inputLeftPaddingWithPrefix = {
11547
+ sm: "pl-1.5",
11548
+ md: "pl-2",
11549
+ lg: "pl-2"
11550
+ };
11551
+ var inputLeftPaddingWithAddon = {
11552
+ sm: "pl-2",
11553
+ md: "pl-3",
11554
+ lg: "pl-3"
11555
+ };
11556
+ var inputLeftPaddingWithoutPrefix = {
11557
+ sm: "pl-2",
11558
+ md: "pl-3",
11559
+ lg: "pl-3"
11560
+ };
11561
+ var inputRightPaddingWithSuffix = {
11562
+ sm: "pr-1.5",
11563
+ md: "pr-2",
11564
+ lg: "pr-2"
11565
+ };
11566
+ var inputRightPaddingWithAddon = {
11567
+ sm: "pr-2",
11568
+ md: "pr-3",
11569
+ lg: "pr-3"
11570
+ };
11571
+ var inputRightPaddingWithoutSuffix = {
11572
+ sm: "pr-2",
11573
+ md: "pr-3",
11574
+ lg: "pr-3"
11575
+ };
11425
11576
  var InputGroup = React.forwardRef(
11426
11577
  function InputGroup2({
11427
11578
  size = "md",
@@ -11437,7 +11588,11 @@ var InputGroup = React.forwardRef(
11437
11588
  inputProps,
11438
11589
  children
11439
11590
  }, ref) {
11440
- const iconSize = size === "lg" ? "size-4" : "size-3.5";
11591
+ const hasPrefix = !!prefix;
11592
+ const hasSuffix = !!suffix;
11593
+ const hasAddonRight = !!addonRight;
11594
+ const inputPaddingLeft = hasPrefix ? inputLeftPaddingWithPrefix[size] : addonLeft ? inputLeftPaddingWithAddon[size] : inputLeftPaddingWithoutPrefix[size];
11595
+ const inputPaddingRight = hasSuffix ? inputRightPaddingWithSuffix[size] : hasAddonRight ? inputRightPaddingWithAddon[size] : inputRightPaddingWithoutSuffix[size];
11441
11596
  return /* @__PURE__ */ jsxRuntime.jsxs(
11442
11597
  "div",
11443
11598
  {
@@ -11453,8 +11608,10 @@ var InputGroup = React.forwardRef(
11453
11608
  "span",
11454
11609
  {
11455
11610
  className: chunk4ON3M3OM_cjs.cn(
11456
- prefixSuffixVariants({ position: "left" }),
11457
- `[&>svg]:${iconSize}`
11611
+ "inline-flex items-center justify-center shrink-0",
11612
+ "text-muted-foreground pointer-events-none",
11613
+ prefixPaddingMap[size],
11614
+ iconSizeMap5[size]
11458
11615
  ),
11459
11616
  children: prefix
11460
11617
  }
@@ -11464,10 +11621,10 @@ var InputGroup = React.forwardRef(
11464
11621
  {
11465
11622
  disabled,
11466
11623
  className: chunk4ON3M3OM_cjs.cn(
11467
- "flex-1 h-full bg-transparent outline-none text-foreground",
11624
+ "flex-1 h-full bg-transparent outline-none text-foreground min-w-0",
11468
11625
  "placeholder:text-muted-foreground",
11469
- !prefix && "pl-3",
11470
- !suffix && !addonRight && "pr-3",
11626
+ inputPaddingLeft,
11627
+ inputPaddingRight,
11471
11628
  inputClassName
11472
11629
  ),
11473
11630
  ...inputProps
@@ -11477,8 +11634,10 @@ var InputGroup = React.forwardRef(
11477
11634
  "span",
11478
11635
  {
11479
11636
  className: chunk4ON3M3OM_cjs.cn(
11480
- prefixSuffixVariants({ position: "right" }),
11481
- `[&>svg]:${iconSize}`
11637
+ "inline-flex items-center justify-center shrink-0",
11638
+ "text-muted-foreground pointer-events-none",
11639
+ suffixPaddingMap[size],
11640
+ iconSizeMap5[size]
11482
11641
  ),
11483
11642
  children: suffix
11484
11643
  }
@@ -11490,41 +11649,6 @@ var InputGroup = React.forwardRef(
11490
11649
  }
11491
11650
  );
11492
11651
  InputGroup.displayName = "InputGroup";
11493
- var kbdVariants = classVarianceAuthority.cva(
11494
- [
11495
- "inline-flex items-center gap-0.5",
11496
- "font-mono font-medium leading-none",
11497
- "rounded border border-border",
11498
- "bg-muted text-muted-foreground",
11499
- "shadow-[0_1px_0_1px_hsl(var(--border))]",
11500
- "select-none whitespace-nowrap"
11501
- ],
11502
- {
11503
- variants: {
11504
- size: {
11505
- sm: "px-1.5 py-0.5 text-[10px]",
11506
- md: "px-2 py-1 text-xs",
11507
- lg: "px-2.5 py-1 text-sm"
11508
- }
11509
- },
11510
- defaultVariants: { size: "md" }
11511
- }
11512
- );
11513
- var Kbd = React.forwardRef(function Kbd2({ size = "md", className, children, ...rest }, ref) {
11514
- return /* @__PURE__ */ jsxRuntime.jsx(
11515
- "kbd",
11516
- {
11517
- ref,
11518
- className: chunk4ON3M3OM_cjs.cn(kbdVariants({ size }), className),
11519
- "data-ds": "",
11520
- "data-ds-component": "kbd",
11521
- "data-ds-size": size,
11522
- ...rest,
11523
- children
11524
- }
11525
- );
11526
- });
11527
- Kbd.displayName = "Kbd";
11528
11652
  var labelVariants = classVarianceAuthority.cva(
11529
11653
  // Base styles — shared across all sizes
11530
11654
  [
@@ -12245,10 +12369,16 @@ function roundToPrecision(value, precision) {
12245
12369
  const factor = 10 ** precision;
12246
12370
  return Math.round(value * factor) / factor;
12247
12371
  }
12372
+ var ROLL_DISTANCE = 12;
12373
+ var ROLL_TRANSITION = {
12374
+ duration: 0.2,
12375
+ ease: [0.4, 0, 0.2, 1]
12376
+ };
12248
12377
  function AnimatedValue({
12249
12378
  value,
12250
12379
  formatValue,
12251
- shouldReduce
12380
+ shouldReduce,
12381
+ direction
12252
12382
  }) {
12253
12383
  const [displayValue, setDisplayValue] = React.useState(value);
12254
12384
  const [key, setKey] = React.useState(0);
@@ -12259,6 +12389,13 @@ function AnimatedValue({
12259
12389
  if (shouldReduce) {
12260
12390
  return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabular-nums", children: formatValue(displayValue) });
12261
12391
  }
12392
+ const enterY = direction === "down" ? -ROLL_DISTANCE : ROLL_DISTANCE;
12393
+ const exitY = direction === "down" ? ROLL_DISTANCE : -ROLL_DISTANCE;
12394
+ const variants = {
12395
+ initial: { opacity: 0, y: enterY },
12396
+ animate: { opacity: 1, y: 0 },
12397
+ exit: { opacity: 0, y: exitY }
12398
+ };
12262
12399
  return /* @__PURE__ */ jsxRuntime.jsx(
12263
12400
  "span",
12264
12401
  {
@@ -12269,11 +12406,11 @@ function AnimatedValue({
12269
12406
  framerMotion.motion.span,
12270
12407
  {
12271
12408
  className: "inline-block tabular-nums",
12272
- variants: chunkHITTFB2U_cjs.numberRoll.variants,
12409
+ variants,
12273
12410
  initial: "initial",
12274
12411
  animate: "animate",
12275
12412
  exit: "exit",
12276
- transition: chunkHITTFB2U_cjs.numberRoll.transition,
12413
+ transition: ROLL_TRANSITION,
12277
12414
  "data-ds-animated": "",
12278
12415
  children: formatValue(displayValue)
12279
12416
  },
@@ -12287,7 +12424,7 @@ var buttonWidthMap = {
12287
12424
  md: "w-8",
12288
12425
  lg: "w-9"
12289
12426
  };
12290
- var iconSizeMap5 = {
12427
+ var iconSizeMap6 = {
12291
12428
  sm: "size-3",
12292
12429
  md: "size-3.5",
12293
12430
  lg: "size-4"
@@ -12323,13 +12460,27 @@ var NumberInput = React.forwardRef(
12323
12460
  () => roundToPrecision(clamp(defaultValue, min2, max2), precision)
12324
12461
  );
12325
12462
  const [inputRaw, setInputRaw] = React.useState(null);
12463
+ const [direction, setDirection] = React.useState("none");
12326
12464
  const inputRef = React.useRef(null);
12465
+ const prevValueRef = React.useRef(
12466
+ controlledValue ?? roundToPrecision(clamp(defaultValue, min2, max2), precision)
12467
+ );
12327
12468
  const currentValue = controlledValue !== void 0 ? controlledValue : internalValue;
12469
+ React.useEffect(() => {
12470
+ if (controlledValue !== void 0 && controlledValue !== prevValueRef.current) {
12471
+ setDirection(controlledValue > prevValueRef.current ? "up" : "down");
12472
+ prevValueRef.current = controlledValue;
12473
+ }
12474
+ }, [controlledValue]);
12328
12475
  const resolvedFormat = formatValue ?? ((v) => v.toFixed(precision));
12329
12476
  const resolvedParse = parseValue ?? ((raw) => Number.parseFloat(raw.replace(/[^0-9.-]/g, "")));
12330
12477
  const commit = React.useCallback(
12331
12478
  (next) => {
12332
12479
  const clamped = roundToPrecision(clamp(next, min2, max2), precision);
12480
+ if (clamped !== currentValue) {
12481
+ setDirection(clamped > currentValue ? "up" : "down");
12482
+ prevValueRef.current = clamped;
12483
+ }
12333
12484
  if (controlledValue === void 0) {
12334
12485
  setInternalValue(clamped);
12335
12486
  }
@@ -12442,7 +12593,7 @@ var NumberInput = React.forwardRef(
12442
12593
  buttonWidthMap[size],
12443
12594
  "border-r border-input/60"
12444
12595
  ),
12445
- children: /* @__PURE__ */ jsxRuntime.jsx(MinusIcon, { className: iconSizeMap5[size] })
12596
+ children: /* @__PURE__ */ jsxRuntime.jsx(MinusIcon, { className: iconSizeMap6[size] })
12446
12597
  }
12447
12598
  ),
12448
12599
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex-1 flex items-center justify-center", children: inputRaw !== null ? (
@@ -12490,7 +12641,8 @@ var NumberInput = React.forwardRef(
12490
12641
  {
12491
12642
  value: currentValue,
12492
12643
  formatValue: resolvedFormat,
12493
- shouldReduce: shouldReduce ?? false
12644
+ shouldReduce: shouldReduce ?? false,
12645
+ direction
12494
12646
  }
12495
12647
  )
12496
12648
  }
@@ -12509,7 +12661,7 @@ var NumberInput = React.forwardRef(
12509
12661
  buttonWidthMap[size],
12510
12662
  "border-l border-input/60"
12511
12663
  ),
12512
- children: /* @__PURE__ */ jsxRuntime.jsx(PlusIcon, { className: iconSizeMap5[size] })
12664
+ children: /* @__PURE__ */ jsxRuntime.jsx(PlusIcon, { className: iconSizeMap6[size] })
12513
12665
  }
12514
12666
  )
12515
12667
  ]
@@ -12612,7 +12764,7 @@ function computePageRange(currentPage, totalPages, siblings, boundary) {
12612
12764
  }
12613
12765
  return items;
12614
12766
  }
12615
- var iconSizeMap6 = {
12767
+ var iconSizeMap7 = {
12616
12768
  sm: "size-3.5",
12617
12769
  md: "size-4"
12618
12770
  };
@@ -12685,7 +12837,7 @@ var Pagination = React.forwardRef(
12685
12837
  })
12686
12838
  ),
12687
12839
  "aria-label": prevLabel,
12688
- children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeftIcon2, { className: iconSizeMap6[size] })
12840
+ children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeftIcon2, { className: iconSizeMap7[size] })
12689
12841
  }
12690
12842
  ),
12691
12843
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -12717,7 +12869,7 @@ var Pagination = React.forwardRef(
12717
12869
  })
12718
12870
  ),
12719
12871
  "aria-label": nextLabel,
12720
- children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRightIcon6, { className: iconSizeMap6[size] })
12872
+ children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRightIcon6, { className: iconSizeMap7[size] })
12721
12873
  }
12722
12874
  )
12723
12875
  ]
@@ -12745,7 +12897,7 @@ var Pagination = React.forwardRef(
12745
12897
  className: chunk4ON3M3OM_cjs.cn(paginationButtonVariants({ size, active: false })),
12746
12898
  "aria-label": prevLabel,
12747
12899
  children: [
12748
- /* @__PURE__ */ jsxRuntime.jsx(ChevronLeftIcon2, { className: iconSizeMap6[size] }),
12900
+ /* @__PURE__ */ jsxRuntime.jsx(ChevronLeftIcon2, { className: iconSizeMap7[size] }),
12749
12901
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only sm:not-sr-only", children: prevLabel })
12750
12902
  ]
12751
12903
  }
@@ -12795,7 +12947,7 @@ var Pagination = React.forwardRef(
12795
12947
  "aria-label": nextLabel,
12796
12948
  children: [
12797
12949
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only sm:not-sr-only", children: nextLabel }),
12798
- /* @__PURE__ */ jsxRuntime.jsx(ChevronRightIcon6, { className: iconSizeMap6[size] })
12950
+ /* @__PURE__ */ jsxRuntime.jsx(ChevronRightIcon6, { className: iconSizeMap7[size] })
12799
12951
  ]
12800
12952
  }
12801
12953
  )
@@ -13018,10 +13170,10 @@ var PinInput = React.forwardRef(
13018
13170
  {
13019
13171
  ref: containerRef,
13020
13172
  className: chunk4ON3M3OM_cjs.cn("inline-flex", gap, className),
13021
- variants: chunkHITTFB2U_cjs.shakeX.variants,
13173
+ variants: chunkF4JJFWWU_cjs.shakeX.variants,
13022
13174
  initial: shakeKey === 0 ? false : "initial",
13023
13175
  animate: shakeKey > 0 ? "animate" : "initial",
13024
- transition: chunkHITTFB2U_cjs.shakeX.transition,
13176
+ transition: chunkF4JJFWWU_cjs.shakeX.transition,
13025
13177
  "aria-label": ariaLabel,
13026
13178
  "data-ds": "",
13027
13179
  "data-ds-component": "pin-input",
@@ -13037,11 +13189,11 @@ var PinInput = React.forwardRef(
13037
13189
  framerMotion.motion.div,
13038
13190
  {
13039
13191
  className: "absolute inset-0 rounded-md bg-primary/15 pointer-events-none",
13040
- variants: chunkHITTFB2U_cjs.pop.variants,
13192
+ variants: chunkF4JJFWWU_cjs.pop.variants,
13041
13193
  initial: "initial",
13042
13194
  animate: "animate",
13043
13195
  exit: "exit",
13044
- transition: chunkHITTFB2U_cjs.pop.transition,
13196
+ transition: chunkF4JJFWWU_cjs.pop.transition,
13045
13197
  "data-ds-animated": ""
13046
13198
  }
13047
13199
  ) }),
@@ -13168,11 +13320,11 @@ var PopoverContent = React.forwardRef(function PopoverContent2({
13168
13320
  "outline-none",
13169
13321
  className
13170
13322
  ),
13171
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.scaleIn.variants,
13323
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.scaleIn.variants,
13172
13324
  initial: shouldReduce ? { opacity: 0 } : "initial",
13173
13325
  animate: shouldReduce ? { opacity: 1 } : "animate",
13174
13326
  exit: shouldReduce ? { opacity: 0 } : "exit",
13175
- transition: shouldReduce ? { duration: 0.15 } : chunkHITTFB2U_cjs.scaleIn.transition,
13327
+ transition: shouldReduce ? { duration: 0.15 } : chunkF4JJFWWU_cjs.scaleIn.transition,
13176
13328
  "data-ds": "",
13177
13329
  "data-ds-component": "popover-content",
13178
13330
  "data-ds-animated": "",
@@ -14040,11 +14192,20 @@ function LoaderIcon({ className }) {
14040
14192
  }
14041
14193
  );
14042
14194
  }
14043
- var iconSizeMap7 = {
14195
+ var iconSizeMap8 = {
14044
14196
  sm: "size-3.5",
14045
14197
  md: "size-4",
14046
14198
  lg: "size-4"
14047
14199
  };
14200
+ function useIsMac() {
14201
+ const [isMac, setIsMac] = React.useState(false);
14202
+ React.useEffect(() => {
14203
+ setIsMac(
14204
+ typeof navigator !== "undefined" && /(Mac|iPhone|iPod|iPad)/i.test(navigator.userAgent)
14205
+ );
14206
+ }, []);
14207
+ return isMac;
14208
+ }
14048
14209
  var SearchInput = React.forwardRef(
14049
14210
  function SearchInput2({
14050
14211
  value: controlledValue,
@@ -14063,9 +14224,11 @@ var SearchInput = React.forwardRef(
14063
14224
  ...rest
14064
14225
  }, ref) {
14065
14226
  const shouldReduce = framerMotion.useReducedMotion();
14227
+ const isMac = useIsMac();
14066
14228
  const [internalValue, setInternalValue] = React.useState(defaultValue);
14067
14229
  const debounceTimer = React.useRef(null);
14068
14230
  const inputRef = React.useRef(null);
14231
+ React.useImperativeHandle(ref, () => inputRef.current);
14069
14232
  const currentValue = controlledValue !== void 0 ? controlledValue : internalValue;
14070
14233
  const hasValue = currentValue.length > 0;
14071
14234
  const handleChange = React.useCallback(
@@ -14087,21 +14250,19 @@ var SearchInput = React.forwardRef(
14087
14250
  if (controlledValue === void 0) setInternalValue("");
14088
14251
  onChange?.("");
14089
14252
  onDebouncedChange?.("");
14090
- const inputEl = ref?.current ?? inputRef.current;
14091
- inputEl?.focus();
14092
- }, [controlledValue, onChange, onDebouncedChange, ref]);
14253
+ inputRef.current?.focus();
14254
+ }, [controlledValue, onChange, onDebouncedChange]);
14093
14255
  React.useEffect(() => {
14094
14256
  if (!shortcut) return;
14095
14257
  const handler = (e) => {
14096
14258
  if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === shortcut.toLowerCase()) {
14097
14259
  e.preventDefault();
14098
- const inputEl = ref?.current ?? inputRef.current;
14099
- inputEl?.focus();
14260
+ inputRef.current?.focus();
14100
14261
  }
14101
14262
  };
14102
14263
  window.addEventListener("keydown", handler);
14103
14264
  return () => window.removeEventListener("keydown", handler);
14104
- }, [shortcut, ref]);
14265
+ }, [shortcut]);
14105
14266
  return /* @__PURE__ */ jsxRuntime.jsxs(
14106
14267
  "div",
14107
14268
  {
@@ -14110,11 +14271,11 @@ var SearchInput = React.forwardRef(
14110
14271
  "data-ds-component": "search-input",
14111
14272
  "data-ds-size": size,
14112
14273
  children: [
14113
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-muted-foreground pointer-events-none", children: loading ? /* @__PURE__ */ jsxRuntime.jsx(LoaderIcon, { className: iconSizeMap7[size] }) : /* @__PURE__ */ jsxRuntime.jsx(SearchIcon3, { className: iconSizeMap7[size] }) }),
14274
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-muted-foreground pointer-events-none", children: loading ? /* @__PURE__ */ jsxRuntime.jsx(LoaderIcon, { className: iconSizeMap8[size] }) : /* @__PURE__ */ jsxRuntime.jsx(SearchIcon3, { className: iconSizeMap8[size] }) }),
14114
14275
  /* @__PURE__ */ jsxRuntime.jsx(
14115
14276
  "input",
14116
14277
  {
14117
- ref: ref ?? inputRef,
14278
+ ref: inputRef,
14118
14279
  type: "search",
14119
14280
  value: currentValue,
14120
14281
  onChange: handleChange,
@@ -14141,26 +14302,32 @@ var SearchInput = React.forwardRef(
14141
14302
  "text-muted-foreground hover:text-foreground transition-colors duration-fast",
14142
14303
  "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
14143
14304
  ),
14144
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.fadeInFast.variants,
14305
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.fadeInFast.variants,
14145
14306
  initial: shouldReduce ? { opacity: 0 } : "initial",
14146
14307
  animate: shouldReduce ? { opacity: 1 } : "animate",
14147
14308
  exit: shouldReduce ? { opacity: 0 } : "exit",
14148
- transition: shouldReduce ? { duration: 0.1 } : chunkHITTFB2U_cjs.fadeInFast.transition,
14309
+ transition: shouldReduce ? { duration: 0.1 } : chunkF4JJFWWU_cjs.fadeInFast.transition,
14149
14310
  "data-ds-animated": "",
14150
- children: /* @__PURE__ */ jsxRuntime.jsx(XIcon5, { className: iconSizeMap7[size] })
14311
+ children: /* @__PURE__ */ jsxRuntime.jsx(XIcon5, { className: iconSizeMap8[size] })
14151
14312
  },
14152
14313
  "clear"
14153
14314
  ) }),
14154
- shortcut && !hasValue && /* @__PURE__ */ jsxRuntime.jsx(
14315
+ shortcut && !hasValue && /* @__PURE__ */ jsxRuntime.jsxs(
14155
14316
  "kbd",
14156
14317
  {
14157
14318
  className: chunk4ON3M3OM_cjs.cn(
14158
- "hidden sm:inline-flex items-center gap-0.5 rounded border border-border",
14159
- "bg-muted text-muted-foreground font-mono font-medium",
14319
+ "hidden sm:inline-flex items-center gap-0.5",
14320
+ "rounded-md border border-border",
14321
+ "bg-muted/80 text-muted-foreground",
14322
+ "font-sans font-medium tracking-wide",
14323
+ "shadow-[0_1px_0_1px_rgba(0,0,0,0.15)] dark:shadow-[0_1px_0_1px_rgba(255,255,255,0.06)]",
14160
14324
  "pointer-events-none select-none",
14161
- size === "sm" ? "px-1 py-0.5 text-[9px]" : "px-1.5 py-0.5 text-[10px]"
14325
+ size === "sm" ? "h-5 min-w-5 px-1 text-[10px]" : "h-6 min-w-6 px-1.5 text-[11px]"
14162
14326
  ),
14163
- children: shortcut
14327
+ children: [
14328
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "opacity-70", children: isMac ? "\u2318" : "Ctrl" }),
14329
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: shortcut.toUpperCase() })
14330
+ ]
14164
14331
  }
14165
14332
  )
14166
14333
  ] })
@@ -14266,7 +14433,7 @@ function CheckIconInternal({ className }) {
14266
14433
  }
14267
14434
  );
14268
14435
  }
14269
- var iconSizeMap8 = {
14436
+ var iconSizeMap9 = {
14270
14437
  sm: "size-3.5",
14271
14438
  md: "size-4",
14272
14439
  lg: "size-4"
@@ -14288,7 +14455,7 @@ var SelectTrigger = React.forwardRef(function SelectTrigger2({ className, childr
14288
14455
  /* @__PURE__ */ jsxRuntime.jsx(radixUi.Select.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
14289
14456
  ChevronDownIcon4,
14290
14457
  {
14291
- className: chunk4ON3M3OM_cjs.cn(iconSizeMap8[size], "shrink-0 text-muted-foreground")
14458
+ className: chunk4ON3M3OM_cjs.cn(iconSizeMap9[size], "shrink-0 text-muted-foreground")
14292
14459
  }
14293
14460
  ) })
14294
14461
  ]
@@ -14321,11 +14488,11 @@ var SelectContent = React.forwardRef(function SelectContent2({ className, childr
14321
14488
  "shadow-lg",
14322
14489
  className
14323
14490
  ),
14324
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.scaleIn.variants,
14491
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.scaleIn.variants,
14325
14492
  initial: shouldReduce ? { opacity: 0 } : "initial",
14326
14493
  animate: shouldReduce ? { opacity: 1 } : "animate",
14327
14494
  exit: shouldReduce ? { opacity: 0 } : "exit",
14328
- transition: shouldReduce ? { duration: 0.15 } : chunkHITTFB2U_cjs.scaleIn.transition,
14495
+ transition: shouldReduce ? { duration: 0.15 } : chunkF4JJFWWU_cjs.scaleIn.transition,
14329
14496
  "data-ds-animated": "",
14330
14497
  children: [
14331
14498
  /* @__PURE__ */ jsxRuntime.jsx(SelectScrollUpButton, {}),
@@ -14569,6 +14736,10 @@ var sheetContentVariants = classVarianceAuthority.cva(
14569
14736
  }
14570
14737
  }
14571
14738
  );
14739
+ var SheetContext = React.createContext({ open: false });
14740
+ function useSheetContext() {
14741
+ return React.useContext(SheetContext);
14742
+ }
14572
14743
  function CloseIcon4({ className }) {
14573
14744
  return /* @__PURE__ */ jsxRuntime.jsxs(
14574
14745
  "svg",
@@ -14589,8 +14760,32 @@ function CloseIcon4({ className }) {
14589
14760
  }
14590
14761
  );
14591
14762
  }
14592
- function Sheet({ children, ...rest }) {
14593
- return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Root, { ...rest, children });
14763
+ function Sheet({
14764
+ children,
14765
+ open: controlledOpen,
14766
+ onOpenChange,
14767
+ defaultOpen = false,
14768
+ ...rest
14769
+ }) {
14770
+ const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);
14771
+ const isControlled = controlledOpen !== void 0;
14772
+ const open = isControlled ? controlledOpen : uncontrolledOpen;
14773
+ const handleOpenChange = React.useCallback(
14774
+ (next) => {
14775
+ if (!isControlled) setUncontrolledOpen(next);
14776
+ onOpenChange?.(next);
14777
+ },
14778
+ [isControlled, onOpenChange]
14779
+ );
14780
+ return /* @__PURE__ */ jsxRuntime.jsx(SheetContext.Provider, { value: { open }, children: /* @__PURE__ */ jsxRuntime.jsx(
14781
+ radixUi.Dialog.Root,
14782
+ {
14783
+ open,
14784
+ onOpenChange: handleOpenChange,
14785
+ ...rest,
14786
+ children
14787
+ }
14788
+ ) });
14594
14789
  }
14595
14790
  Sheet.displayName = "Sheet";
14596
14791
  var SheetTrigger = React.forwardRef(function SheetTrigger2({ className, ...rest }, ref) {
@@ -14608,7 +14803,7 @@ var SheetTrigger = React.forwardRef(function SheetTrigger2({ className, ...rest
14608
14803
  SheetTrigger.displayName = "SheetTrigger";
14609
14804
  var SheetOverlay = React.forwardRef(function SheetOverlay2({ className, ...rest }, ref) {
14610
14805
  const shouldReduce = framerMotion.useReducedMotion();
14611
- return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Overlay, { ref, asChild: true, ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(
14806
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Overlay, { ref, forceMount: true, asChild: true, ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(
14612
14807
  framerMotion.motion.div,
14613
14808
  {
14614
14809
  className: chunk4ON3M3OM_cjs.cn(
@@ -14617,21 +14812,21 @@ var SheetOverlay = React.forwardRef(function SheetOverlay2({ className, ...rest
14617
14812
  "bg-black/50",
14618
14813
  className
14619
14814
  ),
14620
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.overlayBackdrop.variants,
14815
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.overlayBackdrop.variants,
14621
14816
  initial: shouldReduce ? { opacity: 0 } : "initial",
14622
14817
  animate: shouldReduce ? { opacity: 1 } : "animate",
14623
14818
  exit: shouldReduce ? { opacity: 0 } : "exit",
14624
- transition: shouldReduce ? { duration: 0.15 } : chunkHITTFB2U_cjs.overlayBackdrop.transition,
14819
+ transition: shouldReduce ? { duration: 0.15 } : chunkF4JJFWWU_cjs.overlayBackdrop.transition,
14625
14820
  "data-ds-animated": ""
14626
14821
  }
14627
14822
  ) });
14628
14823
  });
14629
14824
  SheetOverlay.displayName = "SheetOverlay";
14630
14825
  var sidePresetMap = {
14631
- left: chunkHITTFB2U_cjs.slidePanelLeft,
14632
- right: chunkHITTFB2U_cjs.slidePanelRight,
14633
- top: chunkHITTFB2U_cjs.slidePanelTop,
14634
- bottom: chunkHITTFB2U_cjs.slidePanelBottom
14826
+ left: chunkF4JJFWWU_cjs.slidePanelLeft,
14827
+ right: chunkF4JJFWWU_cjs.slidePanelRight,
14828
+ top: chunkF4JJFWWU_cjs.slidePanelTop,
14829
+ bottom: chunkF4JJFWWU_cjs.slidePanelBottom
14635
14830
  };
14636
14831
  var SheetContent = React.forwardRef(function SheetContent2({
14637
14832
  side = "right",
@@ -14643,10 +14838,11 @@ var SheetContent = React.forwardRef(function SheetContent2({
14643
14838
  ...rest
14644
14839
  }, ref) {
14645
14840
  const shouldReduce = framerMotion.useReducedMotion();
14841
+ const { open } = useSheetContext();
14646
14842
  const preset = sidePresetMap[side];
14647
- return /* @__PURE__ */ jsxRuntime.jsxs(radixUi.Dialog.Portal, { children: [
14843
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Portal, { forceMount: true, children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
14648
14844
  /* @__PURE__ */ jsxRuntime.jsx(SheetOverlay, { className: overlayClassName }),
14649
- /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Content, { ref, asChild: true, ...rest, children: /* @__PURE__ */ jsxRuntime.jsxs(
14845
+ /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Content, { ref, forceMount: true, asChild: true, ...rest, children: /* @__PURE__ */ jsxRuntime.jsxs(
14650
14846
  framerMotion.motion.div,
14651
14847
  {
14652
14848
  className: chunk4ON3M3OM_cjs.cn(
@@ -14684,7 +14880,7 @@ var SheetContent = React.forwardRef(function SheetContent2({
14684
14880
  ]
14685
14881
  }
14686
14882
  ) })
14687
- ] });
14883
+ ] }) }) });
14688
14884
  });
14689
14885
  SheetContent.displayName = "SheetContent";
14690
14886
  function SheetHeader({ className, children }) {
@@ -15251,11 +15447,11 @@ function SidebarMobileOverlay({ className }) {
15251
15447
  "fixed inset-0 z-overlay bg-black/50 backdrop-blur-sm md:hidden",
15252
15448
  className
15253
15449
  ),
15254
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.overlayBackdrop.variants,
15450
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.overlayBackdrop.variants,
15255
15451
  initial: shouldReduce ? { opacity: 0 } : "initial",
15256
15452
  animate: shouldReduce ? { opacity: 1 } : "animate",
15257
15453
  exit: shouldReduce ? { opacity: 0 } : "exit",
15258
- transition: shouldReduce ? { duration: 0.15 } : chunkHITTFB2U_cjs.overlayBackdrop.transition,
15454
+ transition: shouldReduce ? { duration: 0.15 } : chunkF4JJFWWU_cjs.overlayBackdrop.transition,
15259
15455
  onClick: () => setMobileOpen(false),
15260
15456
  "data-ds-animated": ""
15261
15457
  }
@@ -15530,11 +15726,11 @@ function SliderTooltip({
15530
15726
  "pointer-events-none select-none",
15531
15727
  "z-tooltip"
15532
15728
  ),
15533
- variants: chunkHITTFB2U_cjs.fadeInFast.variants,
15729
+ variants: chunkF4JJFWWU_cjs.fadeInFast.variants,
15534
15730
  initial: shouldReduce ? false : "initial",
15535
15731
  animate: "animate",
15536
15732
  exit: "exit",
15537
- transition: chunkHITTFB2U_cjs.fadeInFast.transition,
15733
+ transition: chunkF4JJFWWU_cjs.fadeInFast.transition,
15538
15734
  "data-ds-animated": "",
15539
15735
  children: [
15540
15736
  format(value),
@@ -15559,35 +15755,33 @@ function SliderThumbItem({
15559
15755
  shouldReduce
15560
15756
  }) {
15561
15757
  const [isActive, setIsActive] = React.useState(false);
15562
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
15563
- showTooltip && /* @__PURE__ */ jsxRuntime.jsx(
15564
- SliderTooltip,
15565
- {
15566
- value,
15567
- visible: isActive,
15568
- format: formatTooltip
15569
- }
15570
- ),
15571
- /* @__PURE__ */ jsxRuntime.jsx(
15572
- MotionThumb,
15573
- {
15574
- className: chunk4ON3M3OM_cjs.cn(sliderThumbVariants({ variant, size })),
15575
- onMouseEnter: () => setIsActive(true),
15576
- onMouseLeave: () => setIsActive(false),
15577
- onFocus: () => setIsActive(true),
15578
- onBlur: () => setIsActive(false),
15579
- whileTap: shouldReduce ? void 0 : {
15580
- scale: 1.2,
15581
- transition: { type: "spring", stiffness: 400, damping: 25 }
15582
- },
15583
- whileHover: shouldReduce ? void 0 : {
15584
- scale: 1.1,
15585
- transition: { type: "spring", stiffness: 400, damping: 30 }
15586
- },
15587
- "data-ds-animated": ""
15588
- }
15589
- )
15590
- ] });
15758
+ return /* @__PURE__ */ jsxRuntime.jsx(
15759
+ MotionThumb,
15760
+ {
15761
+ className: chunk4ON3M3OM_cjs.cn("relative overflow-visible", sliderThumbVariants({ variant, size })),
15762
+ onMouseEnter: () => setIsActive(true),
15763
+ onMouseLeave: () => setIsActive(false),
15764
+ onFocus: () => setIsActive(true),
15765
+ onBlur: () => setIsActive(false),
15766
+ whileTap: shouldReduce ? void 0 : {
15767
+ scale: 1.2,
15768
+ transition: { type: "spring", stiffness: 400, damping: 25 }
15769
+ },
15770
+ whileHover: shouldReduce ? void 0 : {
15771
+ scale: 1.1,
15772
+ transition: { type: "spring", stiffness: 400, damping: 30 }
15773
+ },
15774
+ "data-ds-animated": "",
15775
+ children: showTooltip && /* @__PURE__ */ jsxRuntime.jsx(
15776
+ SliderTooltip,
15777
+ {
15778
+ value,
15779
+ visible: isActive,
15780
+ format: formatTooltip
15781
+ }
15782
+ )
15783
+ }
15784
+ );
15591
15785
  }
15592
15786
  var Slider = React.forwardRef(function Slider2({
15593
15787
  variant = "default",
@@ -16012,10 +16206,10 @@ var Stat = React.forwardRef(function Stat2({
16012
16206
  framerMotion.motion.div,
16013
16207
  {
16014
16208
  className: "text-2xl font-bold text-foreground leading-none tabular-nums",
16015
- variants: animated && !shouldReduce ? chunkHITTFB2U_cjs.countUp.variants : void 0,
16209
+ variants: animated && !shouldReduce ? chunkF4JJFWWU_cjs.countUp.variants : void 0,
16016
16210
  initial: animated && !shouldReduce ? "initial" : void 0,
16017
16211
  animate: animated && !shouldReduce ? "animate" : void 0,
16018
- transition: animated && !shouldReduce ? chunkHITTFB2U_cjs.countUp.transition : void 0,
16212
+ transition: animated && !shouldReduce ? chunkF4JJFWWU_cjs.countUp.transition : void 0,
16019
16213
  "data-ds-animated": animated ? "" : void 0,
16020
16214
  children: isNumeric && animated ? /* @__PURE__ */ jsxRuntime.jsx(
16021
16215
  AnimatedNumber,
@@ -16038,10 +16232,10 @@ var Stat = React.forwardRef(function Stat2({
16038
16232
  "flex items-center gap-1 text-xs font-medium",
16039
16233
  trendColor
16040
16234
  ),
16041
- variants: animated && !shouldReduce ? chunkHITTFB2U_cjs.slideUpSm.variants : void 0,
16235
+ variants: animated && !shouldReduce ? chunkF4JJFWWU_cjs.slideUpSm.variants : void 0,
16042
16236
  initial: animated && !shouldReduce ? "initial" : void 0,
16043
16237
  animate: animated && !shouldReduce ? "animate" : void 0,
16044
- transition: animated && !shouldReduce ? { ...chunkHITTFB2U_cjs.slideUpSm.transition, delay: 0.3 } : void 0,
16238
+ transition: animated && !shouldReduce ? { ...chunkF4JJFWWU_cjs.slideUpSm.transition, delay: 0.3 } : void 0,
16045
16239
  "data-ds-animated": animated ? "" : void 0,
16046
16240
  children: [
16047
16241
  trend === "up" && /* @__PURE__ */ jsxRuntime.jsx(TrendUpIcon, { className: "size-3.5" }),
@@ -16982,7 +17176,7 @@ var dotSizeMap2 = {
16982
17176
  md: "size-3",
16983
17177
  lg: "size-4"
16984
17178
  };
16985
- var iconSizeMap9 = {
17179
+ var iconSizeMap10 = {
16986
17180
  sm: "size-6",
16987
17181
  md: "size-8",
16988
17182
  lg: "size-10"
@@ -17003,7 +17197,7 @@ var TimelineItem = React.forwardRef(
17003
17197
  ...rest
17004
17198
  }, ref) {
17005
17199
  const shouldReduce = framerMotion.useReducedMotion();
17006
- const slidePreset = side === "left" ? chunkHITTFB2U_cjs.slideInFromRight : chunkHITTFB2U_cjs.slideInFromLeft;
17200
+ const slidePreset = side === "left" ? chunkF4JJFWWU_cjs.slideInFromRight : chunkF4JJFWWU_cjs.slideInFromLeft;
17007
17201
  return /* @__PURE__ */ jsxRuntime.jsxs(
17008
17202
  framerMotion.motion.div,
17009
17203
  {
@@ -17020,7 +17214,7 @@ var TimelineItem = React.forwardRef(
17020
17214
  {
17021
17215
  className: chunk4ON3M3OM_cjs.cn(
17022
17216
  "flex items-center justify-center rounded-full shrink-0 z-10",
17023
- iconSizeMap9[size],
17217
+ iconSizeMap10[size],
17024
17218
  statusIconColorMap[status]
17025
17219
  ),
17026
17220
  children: icon
@@ -17075,7 +17269,7 @@ var Timeline = React.forwardRef(
17075
17269
  {
17076
17270
  ref,
17077
17271
  className: chunk4ON3M3OM_cjs.cn("relative", className),
17078
- variants: animated && !shouldReduce ? chunkHITTFB2U_cjs.staggerContainerSlow.variants : void 0,
17272
+ variants: animated && !shouldReduce ? chunkF4JJFWWU_cjs.staggerContainerSlow.variants : void 0,
17079
17273
  initial: animated && !shouldReduce ? "initial" : void 0,
17080
17274
  animate: animated && !shouldReduce ? "animate" : void 0,
17081
17275
  "data-ds": "",
@@ -18815,7 +19009,7 @@ function TreeItem({ node, depth }) {
18815
19009
  exit: { height: 0, opacity: 0, overflow: "hidden" },
18816
19010
  transition: motionTransition,
18817
19011
  className: chunk4ON3M3OM_cjs.cn(
18818
- "relative",
19012
+ "relative list-none",
18819
19013
  showLines && "before:absolute before:left-[calc(var(--tree-indent))] before:top-0 before:bottom-2 before:w-px before:bg-border"
18820
19014
  ),
18821
19015
  style: {
@@ -18942,7 +19136,7 @@ var TreeView = React.forwardRef(
18942
19136
  {
18943
19137
  ref,
18944
19138
  role: "tree",
18945
- className: chunk4ON3M3OM_cjs.cn("text-sm", className),
19139
+ className: chunk4ON3M3OM_cjs.cn("list-none text-sm", className),
18946
19140
  "data-ds": "",
18947
19141
  "data-ds-component": "tree-view",
18948
19142
  children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(TreeItem, { node: item, depth: 0 }, item.id))
@@ -19006,7 +19200,7 @@ var VirtualList = React.forwardRef(function VirtualList2({
19006
19200
  {
19007
19201
  ref: containerRef,
19008
19202
  className: chunk4ON3M3OM_cjs.cn(
19009
- "flex items-center justify-center border border-border rounded-lg bg-background",
19203
+ "flex items-center justify-center rounded-lg border border-border bg-background shadow-sm not-prose",
19010
19204
  className
19011
19205
  ),
19012
19206
  style: { height },
@@ -19023,7 +19217,14 @@ var VirtualList = React.forwardRef(function VirtualList2({
19023
19217
  /* @__PURE__ */ jsxRuntime.jsx(
19024
19218
  "div",
19025
19219
  {
19026
- className: chunk4ON3M3OM_cjs.cn("absolute left-0 right-0", itemClassName),
19220
+ className: chunk4ON3M3OM_cjs.cn(
19221
+ "absolute left-0 right-0 flex items-center",
19222
+ "transition-colors duration-fast ease-standard",
19223
+ "hover:bg-muted/50",
19224
+ "border-b border-border/50",
19225
+ "[&_p]:m-0 [&_p]:leading-tight [&_span]:leading-tight",
19226
+ itemClassName
19227
+ ),
19027
19228
  style: {
19028
19229
  height: itemHeight,
19029
19230
  top: i * itemHeight
@@ -19042,7 +19243,12 @@ var VirtualList = React.forwardRef(function VirtualList2({
19042
19243
  {
19043
19244
  ref: containerRef,
19044
19245
  className: chunk4ON3M3OM_cjs.cn(
19045
- "relative overflow-auto border border-border rounded-lg bg-background",
19246
+ "relative overflow-auto rounded-lg border border-border bg-background",
19247
+ "shadow-sm not-prose",
19248
+ "[scrollbar-width:thin] [scrollbar-color:hsl(var(--border))_transparent]",
19249
+ "[&::-webkit-scrollbar]:w-1.5",
19250
+ "[&::-webkit-scrollbar-track]:bg-transparent",
19251
+ "[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-border",
19046
19252
  className
19047
19253
  ),
19048
19254
  style: { height },
@@ -19052,7 +19258,7 @@ var VirtualList = React.forwardRef(function VirtualList2({
19052
19258
  "data-ds-component": "virtual-list",
19053
19259
  children: [
19054
19260
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full", style: { height: totalHeight }, children: visibleItems }),
19055
- loading && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky bottom-0 flex items-center justify-center py-3 bg-background/80 backdrop-blur-sm", children: loadingIndicator ?? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "size-5 animate-spin rounded-full border-2 border-border border-t-primary" }) })
19261
+ loading && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky bottom-0 flex items-center justify-center py-3 bg-background/80 backdrop-blur-sm border-t border-border/50", children: loadingIndicator ?? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "size-5 animate-spin rounded-full border-2 border-border border-t-primary" }) })
19056
19262
  ]
19057
19263
  }
19058
19264
  );
@@ -20348,11 +20554,11 @@ var TooltipContent = React.forwardRef(function TooltipContent2({
20348
20554
  className
20349
20555
  ),
20350
20556
  style: { maxWidth },
20351
- variants: shouldReduce ? void 0 : chunkHITTFB2U_cjs.fadeInFast.variants,
20557
+ variants: shouldReduce ? void 0 : chunkF4JJFWWU_cjs.fadeInFast.variants,
20352
20558
  initial: shouldReduce ? { opacity: 0 } : "initial",
20353
20559
  animate: shouldReduce ? { opacity: 1 } : "animate",
20354
20560
  exit: shouldReduce ? { opacity: 0 } : "exit",
20355
- transition: shouldReduce ? { duration: 0.1 } : chunkHITTFB2U_cjs.fadeInFast.transition,
20561
+ transition: shouldReduce ? { duration: 0.1 } : chunkF4JJFWWU_cjs.fadeInFast.transition,
20356
20562
  "data-ds": "",
20357
20563
  "data-ds-component": "tooltip",
20358
20564
  "data-ds-animated": "",