@ai-matrx/design-system 0.10.1 → 0.11.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/dist/index.js CHANGED
@@ -711,8 +711,6 @@ Button.displayName = "Button";
711
711
  // src/motion.ts
712
712
  var MOTION_OVERLAY = "matrx-motion-overlay";
713
713
  var MOTION_DIALOG = "matrx-motion-dialog";
714
- var CENTERED_DIALOG = "matrx-dialog-centered";
715
- var POPPER_OFFSET = "matrx-popper-offset";
716
714
  var MOTION_BOTTOM_SHEET = "matrx-motion-bottom-sheet";
717
715
  var MOTION_POPPER = "matrx-motion-popper";
718
716
  var MOTION_SHEET = {
@@ -817,7 +815,7 @@ var AlertDialogContent = React7.forwardRef(({ className, children, container, an
817
815
  ref,
818
816
  "data-slot": "alert-dialog-content",
819
817
  className: cn(
820
- `fixed left-[50%] top-[50%] z-[10000] grid min-w-0 w-full max-w-lg ${CENTERED_DIALOG} gap-4 border bg-background p-6 shadow-lg`,
818
+ "fixed left-[50%] top-[50%] z-[10000] grid min-w-0 w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg",
821
819
  // Ruling 3 — never taller than the viewport, always scrollable, and
822
820
  // the footer stays reachable via --dialog-pad like Dialog's.
823
821
  "max-h-[85dvh] overflow-y-auto overscroll-contain [--dialog-pad:1.5rem] overflow-x-clip [overflow-wrap:anywhere] [&>*]:min-w-0 [&>*]:max-w-full",
@@ -1158,7 +1156,7 @@ var Command = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__
1158
1156
  }
1159
1157
  ));
1160
1158
  Command.displayName = CommandPrimitive.displayName;
1161
- var DIALOG_DESKTOP_CLASSES = `fixed left-[50%] top-[50%] z-[10000] grid min-w-0 w-full max-w-lg ${CENTERED_DIALOG} gap-4 overflow-x-clip border bg-background p-6 shadow-lg [overflow-wrap:anywhere] [&>*]:min-w-0 [&>*]:max-w-full sm:rounded-lg`;
1159
+ var DIALOG_DESKTOP_CLASSES = "fixed left-[50%] top-[50%] z-[10000] grid min-w-0 w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 overflow-x-clip border bg-background p-6 shadow-lg [overflow-wrap:anywhere] [&>*]:min-w-0 [&>*]:max-w-full sm:rounded-lg";
1162
1160
  var DIALOG_MOBILE_SHEET_CLASSES = "fixed inset-x-0 bottom-0 left-0 right-0 top-auto z-[10000] flex min-w-0 flex-col w-full max-w-full max-h-[90dvh] translate-x-0 translate-y-0 gap-4 overflow-x-clip border-t bg-background p-4 pb-safe shadow-lg [overflow-wrap:anywhere] [&>*]:min-w-0 [&>*]:max-w-full rounded-t-2xl rounded-b-none overflow-y-auto overscroll-contain";
1163
1161
  var DIALOG_MOBILE_SHEET_OVERRIDE = "inset-x-0 bottom-0 left-0 right-0 top-auto translate-x-0 translate-y-0 w-full max-w-full max-h-[90dvh] rounded-b-none rounded-t-2xl overflow-y-auto";
1164
1162
  var CommandDialogContent = React13.forwardRef(({ className, children, container, ...props }, ref) => {
@@ -1302,10 +1300,122 @@ var CommandShortcut = ({
1302
1300
  };
1303
1301
  CommandShortcut.displayName = "CommandShortcut";
1304
1302
 
1303
+ // src/confirm-dialog.tsx
1304
+ import { jsx as jsx16, jsxs as jsxs7 } from "react/jsx-runtime";
1305
+ function ConfirmDialog({
1306
+ open,
1307
+ onOpenChange,
1308
+ title,
1309
+ description,
1310
+ content,
1311
+ contentClassName,
1312
+ confirmLabel = "Confirm",
1313
+ cancelLabel = "Cancel",
1314
+ variant = "default",
1315
+ busy = false,
1316
+ confirmDisabled = false,
1317
+ portalContainer,
1318
+ onConfirm
1319
+ }) {
1320
+ return /* @__PURE__ */ jsx16(AlertDialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs7(
1321
+ AlertDialogContent,
1322
+ {
1323
+ className: contentClassName,
1324
+ ...portalContainer === void 0 ? {} : { container: portalContainer },
1325
+ children: [
1326
+ /* @__PURE__ */ jsxs7(AlertDialogHeader, { children: [
1327
+ /* @__PURE__ */ jsx16(AlertDialogTitle, { children: title }),
1328
+ description ? /* @__PURE__ */ jsx16(AlertDialogDescription, { children: description }) : null
1329
+ ] }),
1330
+ content ?? null,
1331
+ /* @__PURE__ */ jsxs7(AlertDialogFooter, { children: [
1332
+ cancelLabel === null ? null : /* @__PURE__ */ jsx16(AlertDialogCancel, { className: "max-lg:min-h-11", disabled: busy, children: cancelLabel }),
1333
+ /* @__PURE__ */ jsxs7(
1334
+ AlertDialogAction,
1335
+ {
1336
+ disabled: busy || confirmDisabled,
1337
+ onClick: (event) => {
1338
+ event.preventDefault();
1339
+ void onConfirm();
1340
+ },
1341
+ className: cn(
1342
+ "max-lg:min-h-11",
1343
+ // One source of button appearance: the destructive look comes
1344
+ // from `buttonVariants`, not a second hand-written copy of it.
1345
+ // tailwind-merge makes it WIN over the default variant classes.
1346
+ variant === "destructive" && buttonVariants({ variant: "destructive" })
1347
+ ),
1348
+ children: [
1349
+ busy ? /* @__PURE__ */ jsx16(Loader2Icon, { className: cn("mr-2 h-4 w-4", MOTION_SPIN) }) : null,
1350
+ confirmLabel
1351
+ ]
1352
+ }
1353
+ )
1354
+ ] })
1355
+ ]
1356
+ }
1357
+ ) });
1358
+ }
1359
+
1360
+ // src/confirm-host.tsx
1361
+ import {
1362
+ _registerHost,
1363
+ _unregisterHost
1364
+ } from "@ai-matrx/kit/confirm-opener";
1365
+ import * as React14 from "react";
1366
+ import { jsx as jsx17 } from "react/jsx-runtime";
1367
+ function ConfirmDialogHost() {
1368
+ const [active, setActive] = React14.useState(null);
1369
+ const [tick, setTick] = React14.useState(0);
1370
+ const queueRef = React14.useRef([]);
1371
+ React14.useEffect(() => {
1372
+ const controller = {
1373
+ show: (opts, resolve) => {
1374
+ queueRef.current.push({ opts, resolve });
1375
+ setTick((n) => n + 1);
1376
+ }
1377
+ };
1378
+ _registerHost(controller);
1379
+ return () => _unregisterHost(controller);
1380
+ }, []);
1381
+ React14.useEffect(() => {
1382
+ if (active === null && queueRef.current.length > 0) {
1383
+ setActive(queueRef.current.shift());
1384
+ }
1385
+ }, [active, tick]);
1386
+ const handleConfirm = React14.useCallback(() => {
1387
+ if (!active) return;
1388
+ active.resolve(true);
1389
+ setActive(null);
1390
+ }, [active]);
1391
+ const handleOpenChange = React14.useCallback(
1392
+ (open) => {
1393
+ if (!open && active) {
1394
+ active.resolve(false);
1395
+ setActive(null);
1396
+ }
1397
+ },
1398
+ [active]
1399
+ );
1400
+ return /* @__PURE__ */ jsx17(
1401
+ ConfirmDialog,
1402
+ {
1403
+ open: !!active,
1404
+ onOpenChange: handleOpenChange,
1405
+ title: active?.opts.title ?? "",
1406
+ description: active?.opts.description,
1407
+ confirmLabel: active?.opts.confirmLabel,
1408
+ cancelLabel: active?.opts.cancelLabel,
1409
+ variant: active?.opts.variant,
1410
+ onConfirm: handleConfirm
1411
+ }
1412
+ );
1413
+ }
1414
+
1305
1415
  // src/context-menu.tsx
1306
1416
  import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
1307
- import * as React14 from "react";
1308
- import { jsx as jsx16, jsxs as jsxs7 } from "react/jsx-runtime";
1417
+ import * as React15 from "react";
1418
+ import { jsx as jsx18, jsxs as jsxs8 } from "react/jsx-runtime";
1309
1419
  var ContextMenu = ContextMenuPrimitive.Root;
1310
1420
  var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
1311
1421
  var ContextMenuGroup = ContextMenuPrimitive.Group;
@@ -1315,7 +1425,7 @@ var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
1315
1425
  var SURFACE_CLASS = "z-50 min-w-[8rem] max-h-[var(--radix-context-menu-content-available-height)] overflow-y-auto overflow-x-hidden overscroll-contain rounded-md border bg-popover p-1 text-popover-foreground";
1316
1426
  var ITEM_CLASS = "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
1317
1427
  var INDICATOR_ITEM_CLASS = "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
1318
- var ContextMenuSubTrigger = React14.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs7(
1428
+ var ContextMenuSubTrigger = React15.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs8(
1319
1429
  ContextMenuPrimitive.SubTrigger,
1320
1430
  {
1321
1431
  ref,
@@ -1328,12 +1438,12 @@ var ContextMenuSubTrigger = React14.forwardRef(({ className, inset, children, ..
1328
1438
  ...props,
1329
1439
  children: [
1330
1440
  children,
1331
- /* @__PURE__ */ jsx16(RadixChevronRightIcon, { className: "ml-auto h-4 w-4" })
1441
+ /* @__PURE__ */ jsx18(RadixChevronRightIcon, { className: "ml-auto h-4 w-4" })
1332
1442
  ]
1333
1443
  }
1334
1444
  ));
1335
1445
  ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
1336
- var ContextMenuSubContent = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx16(
1446
+ var ContextMenuSubContent = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
1337
1447
  ContextMenuPrimitive.SubContent,
1338
1448
  {
1339
1449
  ref,
@@ -1343,9 +1453,9 @@ var ContextMenuSubContent = React14.forwardRef(({ className, ...props }, ref) =>
1343
1453
  }
1344
1454
  ));
1345
1455
  ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
1346
- var ContextMenuContent = React14.forwardRef(({ className, container, ...props }, ref) => {
1456
+ var ContextMenuContent = React15.forwardRef(({ className, container, ...props }, ref) => {
1347
1457
  const portalContainer = usePortalContainer(container);
1348
- return /* @__PURE__ */ jsx16(ContextMenuPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx16(
1458
+ return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx18(
1349
1459
  ContextMenuPrimitive.Content,
1350
1460
  {
1351
1461
  ref,
@@ -1356,7 +1466,7 @@ var ContextMenuContent = React14.forwardRef(({ className, container, ...props },
1356
1466
  ) });
1357
1467
  });
1358
1468
  ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
1359
- var ContextMenuItem = React14.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx16(
1469
+ var ContextMenuItem = React15.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx18(
1360
1470
  ContextMenuPrimitive.Item,
1361
1471
  {
1362
1472
  ref,
@@ -1371,7 +1481,7 @@ var ContextMenuItem = React14.forwardRef(({ className, inset, ...props }, ref) =
1371
1481
  }
1372
1482
  ));
1373
1483
  ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
1374
- var ContextMenuCheckboxItem = React14.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs7(
1484
+ var ContextMenuCheckboxItem = React15.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs8(
1375
1485
  ContextMenuPrimitive.CheckboxItem,
1376
1486
  {
1377
1487
  ref,
@@ -1379,13 +1489,13 @@ var ContextMenuCheckboxItem = React14.forwardRef(({ className, children, ...prop
1379
1489
  className: cn(INDICATOR_ITEM_CLASS, className),
1380
1490
  ...props,
1381
1491
  children: [
1382
- /* @__PURE__ */ jsx16("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx16(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx16(CheckIcon, { className: "h-4 w-4" }) }) }),
1492
+ /* @__PURE__ */ jsx18("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx18(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx18(CheckIcon, { className: "h-4 w-4" }) }) }),
1383
1493
  children
1384
1494
  ]
1385
1495
  }
1386
1496
  ));
1387
1497
  ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
1388
- var ContextMenuRadioItem = React14.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs7(
1498
+ var ContextMenuRadioItem = React15.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs8(
1389
1499
  ContextMenuPrimitive.RadioItem,
1390
1500
  {
1391
1501
  ref,
@@ -1393,13 +1503,13 @@ var ContextMenuRadioItem = React14.forwardRef(({ className, children, ...props }
1393
1503
  className: cn(INDICATOR_ITEM_CLASS, className),
1394
1504
  ...props,
1395
1505
  children: [
1396
- /* @__PURE__ */ jsx16("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx16(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx16(DotFilledIcon, { className: "h-4 w-4 fill-current" }) }) }),
1506
+ /* @__PURE__ */ jsx18("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx18(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx18(DotFilledIcon, { className: "h-4 w-4 fill-current" }) }) }),
1397
1507
  children
1398
1508
  ]
1399
1509
  }
1400
1510
  ));
1401
1511
  ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
1402
- var ContextMenuLabel = React14.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx16(
1512
+ var ContextMenuLabel = React15.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx18(
1403
1513
  ContextMenuPrimitive.Label,
1404
1514
  {
1405
1515
  ref,
@@ -1413,7 +1523,7 @@ var ContextMenuLabel = React14.forwardRef(({ className, inset, ...props }, ref)
1413
1523
  }
1414
1524
  ));
1415
1525
  ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
1416
- var ContextMenuSeparator = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx16(
1526
+ var ContextMenuSeparator = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
1417
1527
  ContextMenuPrimitive.Separator,
1418
1528
  {
1419
1529
  ref,
@@ -1426,7 +1536,7 @@ ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
1426
1536
  var ContextMenuShortcut = ({
1427
1537
  className,
1428
1538
  ...props
1429
- }) => /* @__PURE__ */ jsx16(
1539
+ }) => /* @__PURE__ */ jsx18(
1430
1540
  "span",
1431
1541
  {
1432
1542
  "data-slot": "context-menu-shortcut",
@@ -1438,18 +1548,18 @@ ContextMenuShortcut.displayName = "ContextMenuShortcut";
1438
1548
 
1439
1549
  // src/creatable-picker.tsx
1440
1550
  import {
1441
- useRef,
1442
- useState as useState2
1551
+ useRef as useRef2,
1552
+ useState as useState3
1443
1553
  } from "react";
1444
1554
 
1445
1555
  // src/popover.tsx
1446
1556
  import * as PopoverPrimitive from "@radix-ui/react-popover";
1447
- import * as React15 from "react";
1448
- import { jsx as jsx17 } from "react/jsx-runtime";
1557
+ import * as React16 from "react";
1558
+ import { jsx as jsx19 } from "react/jsx-runtime";
1449
1559
  var Popover = PopoverPrimitive.Root;
1450
1560
  var PopoverTrigger = PopoverPrimitive.Trigger;
1451
1561
  var PopoverAnchor = PopoverPrimitive.Anchor;
1452
- var PopoverContent = React15.forwardRef(
1562
+ var PopoverContent = React16.forwardRef(
1453
1563
  ({
1454
1564
  className,
1455
1565
  align = "center",
@@ -1459,7 +1569,7 @@ var PopoverContent = React15.forwardRef(
1459
1569
  ...props
1460
1570
  }, ref) => {
1461
1571
  const portalContainer = usePortalContainer(container);
1462
- return /* @__PURE__ */ jsx17(PopoverPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx17(
1572
+ return /* @__PURE__ */ jsx19(PopoverPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx19(
1463
1573
  PopoverPrimitive.Content,
1464
1574
  {
1465
1575
  ref,
@@ -1484,7 +1594,7 @@ var PopoverContent = React15.forwardRef(
1484
1594
  PopoverContent.displayName = PopoverPrimitive.Content.displayName;
1485
1595
 
1486
1596
  // src/creatable-picker.tsx
1487
- import { jsx as jsx18, jsxs as jsxs8 } from "react/jsx-runtime";
1597
+ import { jsx as jsx20, jsxs as jsxs9 } from "react/jsx-runtime";
1488
1598
  function article(noun) {
1489
1599
  return /^[aeiou]/i.test(noun.trim()) ? `an ${noun}` : `a ${noun}`;
1490
1600
  }
@@ -1511,11 +1621,11 @@ function CreatablePicker({
1511
1621
  renderSelected,
1512
1622
  size = "sm"
1513
1623
  }) {
1514
- const [open, setOpen] = useState2(false);
1515
- const [query, setQuery] = useState2("");
1516
- const [busy, setBusy] = useState2(false);
1517
- const inputRef = useRef(null);
1518
- const [needsName, setNeedsName] = useState2(false);
1624
+ const [open, setOpen] = useState3(false);
1625
+ const [query, setQuery] = useState3("");
1626
+ const [busy, setBusy] = useState3(false);
1627
+ const inputRef = useRef2(null);
1628
+ const [needsName, setNeedsName] = useState3(false);
1519
1629
  const selected = options.find((option) => option.value === value) ?? null;
1520
1630
  const groups = [];
1521
1631
  for (const option of options) {
@@ -1559,8 +1669,8 @@ function CreatablePicker({
1559
1669
  setBusy(false);
1560
1670
  }
1561
1671
  };
1562
- return /* @__PURE__ */ jsxs8(Popover, { open, onOpenChange: (next) => next ? setOpen(true) : close(), children: [
1563
- /* @__PURE__ */ jsx18(PopoverTrigger, { asChild: true, disabled, children: /* @__PURE__ */ jsxs8(
1672
+ return /* @__PURE__ */ jsxs9(Popover, { open, onOpenChange: (next) => next ? setOpen(true) : close(), children: [
1673
+ /* @__PURE__ */ jsx20(PopoverTrigger, { asChild: true, disabled, children: /* @__PURE__ */ jsxs9(
1564
1674
  "button",
1565
1675
  {
1566
1676
  type: "button",
@@ -1574,12 +1684,12 @@ function CreatablePicker({
1574
1684
  triggerClassName
1575
1685
  ),
1576
1686
  children: [
1577
- /* @__PURE__ */ jsx18("span", { className: "min-w-0 flex-1 truncate", children: selected ? renderSelected ?? selected.render ?? selected.label : /* @__PURE__ */ jsx18("span", { className: "text-muted-foreground", children: loading ? "Loading\u2026" : placeholder }) }),
1578
- /* @__PURE__ */ jsx18(ChevronsUpDownIcon, { className: "size-3.5 shrink-0 opacity-50" })
1687
+ /* @__PURE__ */ jsx20("span", { className: "min-w-0 flex-1 truncate", children: selected ? renderSelected ?? selected.render ?? selected.label : /* @__PURE__ */ jsx20("span", { className: "text-muted-foreground", children: loading ? "Loading\u2026" : placeholder }) }),
1688
+ /* @__PURE__ */ jsx20(ChevronsUpDownIcon, { className: "size-3.5 shrink-0 opacity-50" })
1579
1689
  ]
1580
1690
  }
1581
1691
  ) }),
1582
- /* @__PURE__ */ jsx18(PopoverContent, { align: "start", className: "w-[--radix-popover-trigger-width] min-w-56 p-0", children: /* @__PURE__ */ jsxs8(
1692
+ /* @__PURE__ */ jsx20(PopoverContent, { align: "start", className: "w-[--radix-popover-trigger-width] min-w-56 p-0", children: /* @__PURE__ */ jsxs9(
1583
1693
  Command,
1584
1694
  {
1585
1695
  filter: (itemValue, search, keywords) => {
@@ -1587,7 +1697,7 @@ function CreatablePicker({
1587
1697
  return haystack.includes(search.toLowerCase()) ? 1 : 0;
1588
1698
  },
1589
1699
  children: [
1590
- /* @__PURE__ */ jsx18(
1700
+ /* @__PURE__ */ jsx20(
1591
1701
  CommandInput,
1592
1702
  {
1593
1703
  ref: inputRef,
@@ -1599,13 +1709,13 @@ function CreatablePicker({
1599
1709
  placeholder: searchPlaceholder ?? `Search or add ${article(noun)}\u2026`
1600
1710
  }
1601
1711
  ),
1602
- /* @__PURE__ */ jsxs8(CommandList, { children: [
1603
- /* @__PURE__ */ jsx18(CommandEmpty, { children: emptyLabel }),
1604
- groups.map((group) => /* @__PURE__ */ jsx18(
1712
+ /* @__PURE__ */ jsxs9(CommandList, { children: [
1713
+ /* @__PURE__ */ jsx20(CommandEmpty, { children: emptyLabel }),
1714
+ groups.map((group) => /* @__PURE__ */ jsx20(
1605
1715
  CommandGroup,
1606
1716
  {
1607
1717
  ...group.heading === void 0 ? {} : { heading: group.heading },
1608
- children: group.options.map((option) => /* @__PURE__ */ jsxs8(
1718
+ children: group.options.map((option) => /* @__PURE__ */ jsxs9(
1609
1719
  CommandItem,
1610
1720
  {
1611
1721
  value: option.label,
@@ -1616,7 +1726,7 @@ function CreatablePicker({
1616
1726
  },
1617
1727
  className: "gap-2 text-xs",
1618
1728
  children: [
1619
- /* @__PURE__ */ jsx18(
1729
+ /* @__PURE__ */ jsx20(
1620
1730
  LucideCheckIcon,
1621
1731
  {
1622
1732
  className: cn(
@@ -1625,8 +1735,8 @@ function CreatablePicker({
1625
1735
  )
1626
1736
  }
1627
1737
  ),
1628
- /* @__PURE__ */ jsx18("span", { className: "min-w-0 flex-1 truncate", children: option.render ?? option.label }),
1629
- option.hint ? /* @__PURE__ */ jsx18("span", { className: "shrink-0 text-[10px] text-muted-foreground", children: option.hint }) : null
1738
+ /* @__PURE__ */ jsx20("span", { className: "min-w-0 flex-1 truncate", children: option.render ?? option.label }),
1739
+ option.hint ? /* @__PURE__ */ jsx20("span", { className: "shrink-0 text-[10px] text-muted-foreground", children: option.hint }) : null
1630
1740
  ]
1631
1741
  },
1632
1742
  option.value
@@ -1635,9 +1745,9 @@ function CreatablePicker({
1635
1745
  group.heading ?? "__ungrouped__"
1636
1746
  ))
1637
1747
  ] }),
1638
- canCreate ? /* @__PURE__ */ jsxs8("div", { className: "space-y-1 border-t border-border p-1", children: [
1639
- createExtra && typed && !exactMatch ? /* @__PURE__ */ jsx18("div", { className: "px-1 pt-0.5", children: typeof createExtra === "function" ? createExtra(typed) : createExtra }) : null,
1640
- /* @__PURE__ */ jsxs8(
1748
+ canCreate ? /* @__PURE__ */ jsxs9("div", { className: "space-y-1 border-t border-border p-1", children: [
1749
+ createExtra && typed && !exactMatch ? /* @__PURE__ */ jsx20("div", { className: "px-1 pt-0.5", children: typeof createExtra === "function" ? createExtra(typed) : createExtra }) : null,
1750
+ /* @__PURE__ */ jsxs9(
1641
1751
  "button",
1642
1752
  {
1643
1753
  type: "button",
@@ -1645,22 +1755,22 @@ function CreatablePicker({
1645
1755
  onClick: () => void create(typed),
1646
1756
  className: "flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:opacity-50",
1647
1757
  children: [
1648
- busy ? /* @__PURE__ */ jsx18(Loader2Icon, { className: "size-3.5 shrink-0 matrx-spin" }) : /* @__PURE__ */ jsx18(PlusIcon, { className: "size-3.5 shrink-0" }),
1649
- /* @__PURE__ */ jsx18("span", { className: "min-w-0 truncate", children: typed && !exactMatch ? `Create \u201C${typed}\u201D` : `Add ${article(noun)}\u2026` })
1758
+ busy ? /* @__PURE__ */ jsx20(Loader2Icon, { className: "size-3.5 shrink-0 matrx-spin" }) : /* @__PURE__ */ jsx20(PlusIcon, { className: "size-3.5 shrink-0" }),
1759
+ /* @__PURE__ */ jsx20("span", { className: "min-w-0 truncate", children: typed && !exactMatch ? `Create \u201C${typed}\u201D` : `Add ${article(noun)}\u2026` })
1650
1760
  ]
1651
1761
  }
1652
1762
  ),
1653
- needsName ? /* @__PURE__ */ jsxs8("p", { className: "px-2 pb-0.5 text-[11px] leading-snug text-muted-foreground", children: [
1763
+ needsName ? /* @__PURE__ */ jsxs9("p", { className: "px-2 pb-0.5 text-[11px] leading-snug text-muted-foreground", children: [
1654
1764
  "Type the name of the ",
1655
1765
  noun,
1656
1766
  " you want to add \u2014 then this creates it."
1657
1767
  ] }) : null
1658
1768
  ] }) : null,
1659
- footerActions?.length || manageAction ? /* @__PURE__ */ jsxs8("div", { className: "space-y-0.5 border-t border-border p-1", children: [
1769
+ footerActions?.length || manageAction ? /* @__PURE__ */ jsxs9("div", { className: "space-y-0.5 border-t border-border p-1", children: [
1660
1770
  footerActions?.map((action) => {
1661
1771
  const Icon2 = action.icon;
1662
- return /* @__PURE__ */ jsxs8("div", { children: [
1663
- /* @__PURE__ */ jsxs8(
1772
+ return /* @__PURE__ */ jsxs9("div", { children: [
1773
+ /* @__PURE__ */ jsxs9(
1664
1774
  "button",
1665
1775
  {
1666
1776
  type: "button",
@@ -1670,15 +1780,15 @@ function CreatablePicker({
1670
1780
  },
1671
1781
  className: "flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
1672
1782
  children: [
1673
- Icon2 ? /* @__PURE__ */ jsx18(Icon2, { className: "size-3.5 shrink-0" }) : null,
1674
- /* @__PURE__ */ jsx18("span", { className: "min-w-0 truncate", children: action.label })
1783
+ Icon2 ? /* @__PURE__ */ jsx20(Icon2, { className: "size-3.5 shrink-0" }) : null,
1784
+ /* @__PURE__ */ jsx20("span", { className: "min-w-0 truncate", children: action.label })
1675
1785
  ]
1676
1786
  }
1677
1787
  ),
1678
- action.note ? /* @__PURE__ */ jsx18("p", { className: "px-2 pb-1 text-[10px] leading-snug text-muted-foreground", children: action.note }) : null
1788
+ action.note ? /* @__PURE__ */ jsx20("p", { className: "px-2 pb-1 text-[10px] leading-snug text-muted-foreground", children: action.note }) : null
1679
1789
  ] }, action.label);
1680
1790
  }),
1681
- manageAction ? /* @__PURE__ */ jsxs8(
1791
+ manageAction ? /* @__PURE__ */ jsxs9(
1682
1792
  "a",
1683
1793
  {
1684
1794
  href: manageAction.href,
@@ -1687,18 +1797,18 @@ function CreatablePicker({
1687
1797
  onClick: close,
1688
1798
  className: "flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
1689
1799
  children: [
1690
- /* @__PURE__ */ jsx18(ExternalLinkIcon, { className: "size-3.5 shrink-0" }),
1691
- /* @__PURE__ */ jsx18("span", { className: "min-w-0 truncate", children: manageAction.label })
1800
+ /* @__PURE__ */ jsx20(ExternalLinkIcon, { className: "size-3.5 shrink-0" }),
1801
+ /* @__PURE__ */ jsx20("span", { className: "min-w-0 truncate", children: manageAction.label })
1692
1802
  ]
1693
1803
  }
1694
1804
  ) : null
1695
1805
  ] }) : null,
1696
- lockedNote ? /* @__PURE__ */ jsxs8("div", { className: "space-y-1 border-t border-border p-2", children: [
1697
- /* @__PURE__ */ jsxs8("p", { className: "flex gap-1.5 text-[11px] leading-snug text-muted-foreground", children: [
1698
- /* @__PURE__ */ jsx18(LockIcon, { className: "mt-px size-3 shrink-0" }),
1699
- /* @__PURE__ */ jsx18("span", { children: lockedNote })
1806
+ lockedNote ? /* @__PURE__ */ jsxs9("div", { className: "space-y-1 border-t border-border p-2", children: [
1807
+ /* @__PURE__ */ jsxs9("p", { className: "flex gap-1.5 text-[11px] leading-snug text-muted-foreground", children: [
1808
+ /* @__PURE__ */ jsx20(LockIcon, { className: "mt-px size-3 shrink-0" }),
1809
+ /* @__PURE__ */ jsx20("span", { children: lockedNote })
1700
1810
  ] }),
1701
- lockedAction ? /* @__PURE__ */ jsxs8(
1811
+ lockedAction ? /* @__PURE__ */ jsxs9(
1702
1812
  "button",
1703
1813
  {
1704
1814
  type: "button",
@@ -1708,8 +1818,8 @@ function CreatablePicker({
1708
1818
  },
1709
1819
  className: "flex w-full items-center gap-2 rounded-sm px-1 py-1 text-left text-xs font-medium text-primary transition-colors hover:bg-accent",
1710
1820
  children: [
1711
- /* @__PURE__ */ jsx18(PlusIcon, { className: "size-3.5 shrink-0" }),
1712
- /* @__PURE__ */ jsx18("span", { className: "min-w-0 truncate", children: lockedAction.label })
1821
+ /* @__PURE__ */ jsx20(PlusIcon, { className: "size-3.5 shrink-0" }),
1822
+ /* @__PURE__ */ jsx20("span", { className: "min-w-0 truncate", children: lockedAction.label })
1713
1823
  ]
1714
1824
  }
1715
1825
  ) : null
@@ -1724,14 +1834,14 @@ function CreatablePicker({
1724
1834
  import * as DialogPrimitive2 from "@radix-ui/react-dialog";
1725
1835
  import * as VisuallyHidden2 from "@radix-ui/react-visually-hidden";
1726
1836
  import { treeContainsComponent as treeContainsComponent3 } from "@ai-matrx/kit/react-tree";
1727
- import * as React16 from "react";
1728
- import { jsx as jsx19, jsxs as jsxs9 } from "react/jsx-runtime";
1837
+ import * as React17 from "react";
1838
+ import { jsx as jsx21, jsxs as jsxs10 } from "react/jsx-runtime";
1729
1839
  var Dialog = ({
1730
1840
  children,
1731
1841
  ...props
1732
1842
  }) => {
1733
1843
  const modal = props.modal ?? true;
1734
- return /* @__PURE__ */ jsx19(RadixDialogModalProvider, { modal, children: /* @__PURE__ */ jsx19(DialogPrimitive2.Root, { ...props, modal, children }) });
1844
+ return /* @__PURE__ */ jsx21(RadixDialogModalProvider, { modal, children: /* @__PURE__ */ jsx21(DialogPrimitive2.Root, { ...props, modal, children }) });
1735
1845
  };
1736
1846
  Dialog.displayName = "Dialog";
1737
1847
  var DialogTrigger = DialogPrimitive2.Trigger;
@@ -1741,12 +1851,12 @@ var DialogPortal = ({
1741
1851
  ...props
1742
1852
  }) => {
1743
1853
  const resolved = usePortalContainer(container);
1744
- return /* @__PURE__ */ jsx19(DialogPrimitive2.Portal, { container: resolved ?? null, ...props });
1854
+ return /* @__PURE__ */ jsx21(DialogPrimitive2.Portal, { container: resolved ?? null, ...props });
1745
1855
  };
1746
1856
  DialogPortal.displayName = "DialogPortal";
1747
- var DialogContainerContext = React16.createContext(null);
1748
- var useDialogContainer = () => React16.useContext(DialogContainerContext);
1749
- var DialogOverlay = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
1857
+ var DialogContainerContext = React17.createContext(null);
1858
+ var useDialogContainer = () => React17.useContext(DialogContainerContext);
1859
+ var DialogOverlay = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx21(
1750
1860
  DialogPrimitive2.Overlay,
1751
1861
  {
1752
1862
  ref,
@@ -1762,9 +1872,9 @@ var DialogOverlay = React16.forwardRef(({ className, ...props }, ref) => /* @__P
1762
1872
  }
1763
1873
  ));
1764
1874
  DialogOverlay.displayName = DialogPrimitive2.Overlay.displayName;
1765
- var DialogContentPrimitive = React16.forwardRef((props, ref) => {
1875
+ var DialogContentPrimitive = React17.forwardRef((props, ref) => {
1766
1876
  const isModal = useRadixDialogModal();
1767
- return /* @__PURE__ */ jsx19(
1877
+ return /* @__PURE__ */ jsx21(
1768
1878
  DialogPrimitive2.Content,
1769
1879
  {
1770
1880
  ...props,
@@ -1774,10 +1884,10 @@ var DialogContentPrimitive = React16.forwardRef((props, ref) => {
1774
1884
  );
1775
1885
  });
1776
1886
  DialogContentPrimitive.displayName = "DialogContentPrimitive";
1777
- var DIALOG_DESKTOP_CLASSES2 = `fixed left-[50%] top-[50%] z-[10000] grid min-w-0 w-full max-w-lg ${CENTERED_DIALOG} gap-4 max-h-[85dvh] overflow-y-auto overscroll-contain [--dialog-pad:1.5rem] overflow-x-clip border bg-background p-6 shadow-lg [overflow-wrap:anywhere] [&>*]:min-w-0 [&>*]:max-w-full sm:rounded-lg`;
1887
+ var DIALOG_DESKTOP_CLASSES2 = "fixed left-[50%] top-[50%] z-[10000] grid min-w-0 w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 max-h-[85dvh] overflow-y-auto overscroll-contain [--dialog-pad:1.5rem] overflow-x-clip border bg-background p-6 shadow-lg [overflow-wrap:anywhere] [&>*]:min-w-0 [&>*]:max-w-full sm:rounded-lg";
1778
1888
  var DIALOG_MOBILE_SHEET_CLASSES2 = "matrx-mobile-sheet fixed inset-x-0 bottom-0 left-0 right-0 top-auto z-[10000] flex min-w-0 flex-col w-full max-w-full max-h-[90dvh] translate-x-0 translate-y-0 gap-4 [--dialog-pad:1rem] overflow-x-clip border-t bg-background p-4 pb-safe shadow-lg [overflow-wrap:anywhere] [&>*]:min-w-0 [&>*]:max-w-full rounded-t-2xl rounded-b-none overflow-y-auto overscroll-contain";
1779
1889
  var DIALOG_MOBILE_SHEET_OVERRIDE2 = "inset-x-0 bottom-0 left-0 right-0 top-auto translate-x-0 translate-y-0 w-full max-w-full max-h-[90dvh] rounded-b-none rounded-t-2xl overflow-y-auto";
1780
- var DialogContent = React16.forwardRef(
1890
+ var DialogContent = React17.forwardRef(
1781
1891
  ({
1782
1892
  className,
1783
1893
  children,
@@ -1791,10 +1901,10 @@ var DialogContent = React16.forwardRef(
1791
1901
  const isModal = useRadixDialogModal();
1792
1902
  const injectedContainer = usePortalContainer(container);
1793
1903
  const asSheet = mobileSheet && isMobile;
1794
- const [containerEl, setContainerEl] = React16.useState(
1904
+ const [containerEl, setContainerEl] = React17.useState(
1795
1905
  null
1796
1906
  );
1797
- const mergedRef = React16.useCallback(
1907
+ const mergedRef = React17.useCallback(
1798
1908
  (node) => {
1799
1909
  setContainerEl(node);
1800
1910
  if (typeof ref === "function") ref(node);
@@ -1805,9 +1915,9 @@ var DialogContent = React16.forwardRef(
1805
1915
  );
1806
1916
  const hasTitle = treeContainsComponent3(children, DialogTitle) || treeContainsComponent3(children, DialogPrimitive2.Title);
1807
1917
  const hasDescription = treeContainsComponent3(children, DialogDescription) || treeContainsComponent3(children, DialogPrimitive2.Description);
1808
- return /* @__PURE__ */ jsxs9(DialogPortal, { container, children: [
1809
- isModal ? /* @__PURE__ */ jsx19(DialogOverlay, {}) : null,
1810
- /* @__PURE__ */ jsxs9(
1918
+ return /* @__PURE__ */ jsxs10(DialogPortal, { container, children: [
1919
+ isModal ? /* @__PURE__ */ jsx21(DialogOverlay, {}) : null,
1920
+ /* @__PURE__ */ jsxs10(
1811
1921
  DialogContentPrimitive,
1812
1922
  {
1813
1923
  ref: mergedRef,
@@ -1826,23 +1936,23 @@ var DialogContent = React16.forwardRef(
1826
1936
  ...hasDescription ? {} : { "aria-describedby": void 0 },
1827
1937
  ...props,
1828
1938
  children: [
1829
- hasTitle ? null : /* @__PURE__ */ jsx19(VisuallyHidden2.Root, { children: /* @__PURE__ */ jsx19(DialogPrimitive2.Title, { children: "Dialog" }) }),
1830
- /* @__PURE__ */ jsx19(DialogContainerContext.Provider, { value: containerEl, children: /* @__PURE__ */ jsx19(
1939
+ hasTitle ? null : /* @__PURE__ */ jsx21(VisuallyHidden2.Root, { children: /* @__PURE__ */ jsx21(DialogPrimitive2.Title, { children: "Dialog" }) }),
1940
+ /* @__PURE__ */ jsx21(DialogContainerContext.Provider, { value: containerEl, children: /* @__PURE__ */ jsx21(
1831
1941
  PortalContainerProvider,
1832
1942
  {
1833
1943
  container: containerEl ?? injectedContainer ?? null,
1834
1944
  children
1835
1945
  }
1836
1946
  ) }),
1837
- showCloseButton ? /* @__PURE__ */ jsxs9(
1947
+ showCloseButton ? /* @__PURE__ */ jsxs10(
1838
1948
  DialogPrimitive2.Close,
1839
1949
  {
1840
1950
  "data-slot": "dialog-close",
1841
1951
  "aria-label": "Close",
1842
1952
  className: "absolute right-2 top-4 flex h-11 w-11 items-center justify-center rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground sm:right-4 lg:h-10 lg:w-10",
1843
1953
  children: [
1844
- /* @__PURE__ */ jsx19(XIcon, { className: "h-4 w-4" }),
1845
- /* @__PURE__ */ jsx19("span", { className: "sr-only", children: "Close" })
1954
+ /* @__PURE__ */ jsx21(XIcon, { className: "h-4 w-4" }),
1955
+ /* @__PURE__ */ jsx21("span", { className: "sr-only", children: "Close" })
1846
1956
  ]
1847
1957
  }
1848
1958
  ) : null
@@ -1856,7 +1966,7 @@ DialogContent.displayName = DialogPrimitive2.Content.displayName;
1856
1966
  var DialogHeader = ({
1857
1967
  className,
1858
1968
  ...props
1859
- }) => /* @__PURE__ */ jsx19(
1969
+ }) => /* @__PURE__ */ jsx21(
1860
1970
  "div",
1861
1971
  {
1862
1972
  "data-slot": "dialog-header",
@@ -1873,7 +1983,7 @@ DialogHeader.displayName = "DialogHeader";
1873
1983
  var DialogFooter = ({
1874
1984
  className,
1875
1985
  ...props
1876
- }) => /* @__PURE__ */ jsx19(
1986
+ }) => /* @__PURE__ */ jsx21(
1877
1987
  "div",
1878
1988
  {
1879
1989
  "data-slot": "dialog-footer",
@@ -1887,7 +1997,7 @@ var DialogFooter = ({
1887
1997
  }
1888
1998
  );
1889
1999
  DialogFooter.displayName = "DialogFooter";
1890
- var DialogTitle = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
2000
+ var DialogTitle = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx21(
1891
2001
  DialogPrimitive2.Title,
1892
2002
  {
1893
2003
  ref,
@@ -1897,7 +2007,7 @@ var DialogTitle = React16.forwardRef(({ className, ...props }, ref) => /* @__PUR
1897
2007
  }
1898
2008
  ));
1899
2009
  DialogTitle.displayName = DialogPrimitive2.Title.displayName;
1900
- var DialogDescription = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
2010
+ var DialogDescription = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx21(
1901
2011
  DialogPrimitive2.Description,
1902
2012
  {
1903
2013
  ref,
@@ -1910,8 +2020,8 @@ DialogDescription.displayName = DialogPrimitive2.Description.displayName;
1910
2020
 
1911
2021
  // src/dropdown-menu.tsx
1912
2022
  import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
1913
- import * as React17 from "react";
1914
- import { jsx as jsx20, jsxs as jsxs10 } from "react/jsx-runtime";
2023
+ import * as React18 from "react";
2024
+ import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
1915
2025
  var DropdownMenu = DropdownMenuPrimitive.Root;
1916
2026
  var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
1917
2027
  var DropdownMenuGroup = DropdownMenuPrimitive.Group;
@@ -1921,7 +2031,7 @@ var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
1921
2031
  var MENU_SURFACE_CLASS = "z-[10001] min-w-[8rem] max-h-[var(--radix-dropdown-menu-content-available-height)] overflow-y-auto overflow-x-hidden overscroll-contain rounded-md border bg-popover p-1 text-popover-foreground";
1922
2032
  var MENU_ITEM_CLASS = "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
1923
2033
  var MENU_INDICATOR_ITEM_CLASS = "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
1924
- var DropdownMenuSubTrigger = React17.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs10(
2034
+ var DropdownMenuSubTrigger = React18.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs11(
1925
2035
  DropdownMenuPrimitive.SubTrigger,
1926
2036
  {
1927
2037
  ref,
@@ -1934,12 +2044,12 @@ var DropdownMenuSubTrigger = React17.forwardRef(({ className, inset, children, .
1934
2044
  ...props,
1935
2045
  children: [
1936
2046
  children,
1937
- /* @__PURE__ */ jsx20(RadixChevronRightIcon, { className: "ml-auto h-4 w-4" })
2047
+ /* @__PURE__ */ jsx22(RadixChevronRightIcon, { className: "ml-auto h-4 w-4" })
1938
2048
  ]
1939
2049
  }
1940
2050
  ));
1941
2051
  DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
1942
- var DropdownMenuSubContent = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
2052
+ var DropdownMenuSubContent = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22(
1943
2053
  DropdownMenuPrimitive.SubContent,
1944
2054
  {
1945
2055
  ref,
@@ -1949,9 +2059,9 @@ var DropdownMenuSubContent = React17.forwardRef(({ className, ...props }, ref) =
1949
2059
  }
1950
2060
  ));
1951
2061
  DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
1952
- var DropdownMenuContent = React17.forwardRef(({ className, sideOffset = 4, container, ...props }, ref) => {
2062
+ var DropdownMenuContent = React18.forwardRef(({ className, sideOffset = 4, container, ...props }, ref) => {
1953
2063
  const portalContainer = usePortalContainer(container);
1954
- return /* @__PURE__ */ jsx20(DropdownMenuPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx20(
2064
+ return /* @__PURE__ */ jsx22(DropdownMenuPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx22(
1955
2065
  DropdownMenuPrimitive.Content,
1956
2066
  {
1957
2067
  ref,
@@ -1968,7 +2078,7 @@ var DropdownMenuContent = React17.forwardRef(({ className, sideOffset = 4, conta
1968
2078
  ) });
1969
2079
  });
1970
2080
  DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
1971
- var DropdownMenuItem = React17.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx20(
2081
+ var DropdownMenuItem = React18.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx22(
1972
2082
  DropdownMenuPrimitive.Item,
1973
2083
  {
1974
2084
  ref,
@@ -1978,7 +2088,7 @@ var DropdownMenuItem = React17.forwardRef(({ className, inset, ...props }, ref)
1978
2088
  }
1979
2089
  ));
1980
2090
  DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
1981
- var DropdownMenuCheckboxItem = React17.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs10(
2091
+ var DropdownMenuCheckboxItem = React18.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs11(
1982
2092
  DropdownMenuPrimitive.CheckboxItem,
1983
2093
  {
1984
2094
  ref,
@@ -1986,13 +2096,13 @@ var DropdownMenuCheckboxItem = React17.forwardRef(({ className, children, ...pro
1986
2096
  className: cn(MENU_INDICATOR_ITEM_CLASS, className),
1987
2097
  ...props,
1988
2098
  children: [
1989
- /* @__PURE__ */ jsx20("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx20(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx20(CheckIcon, { className: "h-4 w-4" }) }) }),
2099
+ /* @__PURE__ */ jsx22("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx22(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx22(CheckIcon, { className: "h-4 w-4" }) }) }),
1990
2100
  children
1991
2101
  ]
1992
2102
  }
1993
2103
  ));
1994
2104
  DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
1995
- var DropdownMenuRadioItem = React17.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs10(
2105
+ var DropdownMenuRadioItem = React18.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs11(
1996
2106
  DropdownMenuPrimitive.RadioItem,
1997
2107
  {
1998
2108
  ref,
@@ -2000,13 +2110,13 @@ var DropdownMenuRadioItem = React17.forwardRef(({ className, children, ...props
2000
2110
  className: cn(MENU_INDICATOR_ITEM_CLASS, className),
2001
2111
  ...props,
2002
2112
  children: [
2003
- /* @__PURE__ */ jsx20("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx20(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx20(DotFilledIcon, { className: "h-4 w-4 fill-current" }) }) }),
2113
+ /* @__PURE__ */ jsx22("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx22(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx22(DotFilledIcon, { className: "h-4 w-4 fill-current" }) }) }),
2004
2114
  children
2005
2115
  ]
2006
2116
  }
2007
2117
  ));
2008
2118
  DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
2009
- var DropdownMenuLabel = React17.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx20(
2119
+ var DropdownMenuLabel = React18.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx22(
2010
2120
  DropdownMenuPrimitive.Label,
2011
2121
  {
2012
2122
  ref,
@@ -2016,7 +2126,7 @@ var DropdownMenuLabel = React17.forwardRef(({ className, inset, ...props }, ref)
2016
2126
  }
2017
2127
  ));
2018
2128
  DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
2019
- var DropdownMenuSeparator = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
2129
+ var DropdownMenuSeparator = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22(
2020
2130
  DropdownMenuPrimitive.Separator,
2021
2131
  {
2022
2132
  ref,
@@ -2029,7 +2139,7 @@ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
2029
2139
  var DropdownMenuShortcut = ({
2030
2140
  className,
2031
2141
  ...props
2032
- }) => /* @__PURE__ */ jsx20(
2142
+ }) => /* @__PURE__ */ jsx22(
2033
2143
  "span",
2034
2144
  {
2035
2145
  "data-slot": "dropdown-menu-shortcut",
@@ -2040,8 +2150,8 @@ var DropdownMenuShortcut = ({
2040
2150
  DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
2041
2151
 
2042
2152
  // src/editable-label.tsx
2043
- import { useCallback as useCallback2, useEffect as useEffect2, useRef as useRef2, useState as useState4 } from "react";
2044
- import { jsx as jsx21, jsxs as jsxs11 } from "react/jsx-runtime";
2153
+ import { useCallback as useCallback3, useEffect as useEffect3, useRef as useRef3, useState as useState5 } from "react";
2154
+ import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
2045
2155
  function EditableLabel({
2046
2156
  value,
2047
2157
  onCommit,
@@ -2061,22 +2171,22 @@ function EditableLabel({
2061
2171
  inputClassName
2062
2172
  }) {
2063
2173
  const controlled = activation === "controlled";
2064
- const [internalEditing, setInternalEditing] = useState4(false);
2174
+ const [internalEditing, setInternalEditing] = useState5(false);
2065
2175
  const editing = controlled ? !!editingProp : internalEditing;
2066
- const [draft, setDraft] = useState4(value);
2067
- const [error, setError] = useState4(null);
2068
- const [busy, setBusy] = useState4(false);
2069
- const inputRef = useRef2(null);
2070
- useEffect2(() => {
2176
+ const [draft, setDraft] = useState5(value);
2177
+ const [error, setError] = useState5(null);
2178
+ const [busy, setBusy] = useState5(false);
2179
+ const inputRef = useRef3(null);
2180
+ useEffect3(() => {
2071
2181
  if (!editing) setDraft(value);
2072
2182
  }, [value, editing]);
2073
- useEffect2(() => {
2183
+ useEffect3(() => {
2074
2184
  if (editing && inputRef.current) {
2075
2185
  inputRef.current.focus();
2076
2186
  if (selectOnEdit) inputRef.current.select();
2077
2187
  }
2078
2188
  }, [editing, selectOnEdit]);
2079
- const setEditing = useCallback2(
2189
+ const setEditing = useCallback3(
2080
2190
  (next) => {
2081
2191
  if (controlled) {
2082
2192
  onEditingChange?.(next);
@@ -2087,18 +2197,18 @@ function EditableLabel({
2087
2197
  },
2088
2198
  [controlled, onEditingChange]
2089
2199
  );
2090
- const startEdit = useCallback2(() => {
2200
+ const startEdit = useCallback3(() => {
2091
2201
  setDraft(value);
2092
2202
  setError(null);
2093
2203
  setEditing(true);
2094
2204
  }, [value, setEditing]);
2095
- const cancel = useCallback2(() => {
2205
+ const cancel = useCallback3(() => {
2096
2206
  setDraft(value);
2097
2207
  setError(null);
2098
2208
  setBusy(false);
2099
2209
  setEditing(false);
2100
2210
  }, [value, setEditing]);
2101
- const commit = useCallback2(() => {
2211
+ const commit = useCallback3(() => {
2102
2212
  if (busy) return;
2103
2213
  const trimmed = draft.trim();
2104
2214
  const next = trimmed || emptyFallback;
@@ -2148,8 +2258,8 @@ function EditableLabel({
2148
2258
  setEditing
2149
2259
  ]);
2150
2260
  if (editing) {
2151
- return /* @__PURE__ */ jsxs11("span", { className: cn("relative flex min-w-0 flex-1 items-center", className), children: [
2152
- /* @__PURE__ */ jsx21(
2261
+ return /* @__PURE__ */ jsxs12("span", { className: cn("relative flex min-w-0 flex-1 items-center", className), children: [
2262
+ /* @__PURE__ */ jsx23(
2153
2263
  "input",
2154
2264
  {
2155
2265
  ref: inputRef,
@@ -2189,12 +2299,12 @@ function EditableLabel({
2189
2299
  )
2190
2300
  }
2191
2301
  ),
2192
- busy && /* @__PURE__ */ jsx21(Loader2Icon, { className: "absolute right-1 h-3.5 w-3.5 matrx-spin text-muted-foreground" }),
2193
- error && /* @__PURE__ */ jsx21("span", { className: "absolute left-0 top-full mt-0.5 whitespace-nowrap text-xs text-destructive", children: error })
2302
+ busy && /* @__PURE__ */ jsx23(Loader2Icon, { className: "absolute right-1 h-3.5 w-3.5 matrx-spin text-muted-foreground" }),
2303
+ error && /* @__PURE__ */ jsx23("span", { className: "absolute left-0 top-full mt-0.5 whitespace-nowrap text-xs text-destructive", children: error })
2194
2304
  ] });
2195
2305
  }
2196
2306
  if (controlled) return null;
2197
- return /* @__PURE__ */ jsx21(
2307
+ return /* @__PURE__ */ jsx23(
2198
2308
  "button",
2199
2309
  {
2200
2310
  type: "button",
@@ -2228,8 +2338,8 @@ function EditableLabel({
2228
2338
  }
2229
2339
 
2230
2340
  // src/input.tsx
2231
- import * as React18 from "react";
2232
- import { jsx as jsx22, jsxs as jsxs12 } from "react/jsx-runtime";
2341
+ import * as React19 from "react";
2342
+ import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
2233
2343
  var getVariantStyles = (variant = "default") => {
2234
2344
  const baseStyles = `flex h-10 w-full border border-border bg-background text-foreground shadow-input rounded-md px-3 py-2 text-sm file:border-0 file:bg-transparent
2235
2345
  file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground
@@ -2257,9 +2367,9 @@ var getVariantStyles = (variant = "default") => {
2257
2367
  return baseStyles;
2258
2368
  }
2259
2369
  };
2260
- var Input = React18.forwardRef(
2370
+ var Input = React19.forwardRef(
2261
2371
  ({ className, type, variant = "default", ...props }, ref) => {
2262
- return /* @__PURE__ */ jsx22(
2372
+ return /* @__PURE__ */ jsx24(
2263
2373
  "input",
2264
2374
  {
2265
2375
  type,
@@ -2271,7 +2381,7 @@ var Input = React18.forwardRef(
2271
2381
  }
2272
2382
  );
2273
2383
  Input.displayName = "Input";
2274
- var EnterInput = React18.forwardRef(
2384
+ var EnterInput = React19.forwardRef(
2275
2385
  ({ onEnter, ...props }, ref) => {
2276
2386
  const handleKeyDown = (e) => {
2277
2387
  if (e.key === "Enter" && onEnter) {
@@ -2279,7 +2389,7 @@ var EnterInput = React18.forwardRef(
2279
2389
  onEnter();
2280
2390
  }
2281
2391
  };
2282
- return /* @__PURE__ */ jsx22(
2392
+ return /* @__PURE__ */ jsx24(
2283
2393
  Input,
2284
2394
  {
2285
2395
  ...props,
@@ -2295,11 +2405,11 @@ var EnterInput = React18.forwardRef(
2295
2405
  }
2296
2406
  );
2297
2407
  EnterInput.displayName = "EnterInput";
2298
- var BasicInput = React18.forwardRef(
2408
+ var BasicInput = React19.forwardRef(
2299
2409
  // `variant` is accepted (prop-compatible with Input) but intentionally
2300
2410
  // unused — and destructured so it never leaks onto the DOM element.
2301
2411
  ({ className, type, variant: _variant = "default", ...props }, ref) => {
2302
- return /* @__PURE__ */ jsx22(
2412
+ return /* @__PURE__ */ jsx24(
2303
2413
  "input",
2304
2414
  {
2305
2415
  type,
@@ -2314,10 +2424,10 @@ var BasicInput = React18.forwardRef(
2314
2424
  }
2315
2425
  );
2316
2426
  BasicInput.displayName = "BasicInput";
2317
- var InputWithPrefix = React18.forwardRef(({ prefix, className, wrapperClassName, ...props }, ref) => {
2318
- return /* @__PURE__ */ jsxs12("div", { className: cn("relative", wrapperClassName), children: [
2319
- prefix && /* @__PURE__ */ jsx22("div", { className: "absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground", children: prefix }),
2320
- /* @__PURE__ */ jsx22(
2427
+ var InputWithPrefix = React19.forwardRef(({ prefix, className, wrapperClassName, ...props }, ref) => {
2428
+ return /* @__PURE__ */ jsxs13("div", { className: cn("relative", wrapperClassName), children: [
2429
+ prefix && /* @__PURE__ */ jsx24("div", { className: "absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground", children: prefix }),
2430
+ /* @__PURE__ */ jsx24(
2321
2431
  Input,
2322
2432
  {
2323
2433
  ref,
@@ -2331,9 +2441,9 @@ InputWithPrefix.displayName = "InputWithPrefix";
2331
2441
 
2332
2442
  // src/label.tsx
2333
2443
  import * as LabelPrimitive from "@radix-ui/react-label";
2334
- import * as React19 from "react";
2335
- import { jsx as jsx23 } from "react/jsx-runtime";
2336
- var Label3 = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
2444
+ import * as React20 from "react";
2445
+ import { jsx as jsx25 } from "react/jsx-runtime";
2446
+ var Label3 = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx25(
2337
2447
  LabelPrimitive.Root,
2338
2448
  {
2339
2449
  ref,
@@ -2347,8 +2457,8 @@ var Label3 = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
2347
2457
  Label3.displayName = LabelPrimitive.Root.displayName;
2348
2458
 
2349
2459
  // src/overflow-toolbar.tsx
2350
- import { useLayoutEffect, useMemo, useRef as useRef3, useState as useState5 } from "react";
2351
- import { Fragment, jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
2460
+ import { useLayoutEffect, useMemo, useRef as useRef4, useState as useState6 } from "react";
2461
+ import { Fragment, jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
2352
2462
  var GAP_PX = 6;
2353
2463
  var TONE = {
2354
2464
  default: "border border-border bg-background hover:bg-accent text-foreground",
@@ -2370,16 +2480,16 @@ function ToolbarButton({
2370
2480
  action.hideLabel && !action.running ? "w-7 justify-center px-0" : "px-2",
2371
2481
  TONE[tone]
2372
2482
  );
2373
- const inner = /* @__PURE__ */ jsxs13(Fragment, { children: [
2374
- /* @__PURE__ */ jsx24(
2483
+ const inner = /* @__PURE__ */ jsxs14(Fragment, { children: [
2484
+ /* @__PURE__ */ jsx26(
2375
2485
  Icon2,
2376
2486
  {
2377
2487
  className: cn("w-3.5 h-3.5 shrink-0", action.running && "matrx-spin")
2378
2488
  }
2379
2489
  ),
2380
- showLabel && /* @__PURE__ */ jsx24("span", { children: text })
2490
+ showLabel && /* @__PURE__ */ jsx26("span", { children: text })
2381
2491
  ] });
2382
- const control = action.href && !action.disabled ? /* @__PURE__ */ jsx24(
2492
+ const control = action.href && !action.disabled ? /* @__PURE__ */ jsx26(
2383
2493
  "a",
2384
2494
  {
2385
2495
  href: action.href,
@@ -2389,7 +2499,7 @@ function ToolbarButton({
2389
2499
  "aria-label": action.label,
2390
2500
  children: inner
2391
2501
  }
2392
- ) : /* @__PURE__ */ jsx24(
2502
+ ) : /* @__PURE__ */ jsx26(
2393
2503
  "button",
2394
2504
  {
2395
2505
  type: "button",
@@ -2401,12 +2511,12 @@ function ToolbarButton({
2401
2511
  }
2402
2512
  );
2403
2513
  if (enableTooltip && action.hideLabel && renderTooltip) {
2404
- return /* @__PURE__ */ jsx24(Fragment, { children: renderTooltip(control, action.label) });
2514
+ return /* @__PURE__ */ jsx26(Fragment, { children: renderTooltip(control, action.label) });
2405
2515
  }
2406
2516
  return control;
2407
2517
  }
2408
2518
  function OverflowTrigger({ ariaLabel }) {
2409
- return /* @__PURE__ */ jsx24(
2519
+ return /* @__PURE__ */ jsx26(
2410
2520
  "button",
2411
2521
  {
2412
2522
  type: "button",
@@ -2417,7 +2527,7 @@ function OverflowTrigger({ ariaLabel }) {
2417
2527
  "inline-flex items-center justify-center h-7 w-7 rounded-md transition-colors",
2418
2528
  "border border-border bg-background hover:bg-accent text-foreground"
2419
2529
  ),
2420
- children: /* @__PURE__ */ jsx24(MoreHorizontalIcon, { className: "w-3.5 h-3.5" })
2530
+ children: /* @__PURE__ */ jsx26(MoreHorizontalIcon, { className: "w-3.5 h-3.5" })
2421
2531
  }
2422
2532
  );
2423
2533
  }
@@ -2433,10 +2543,10 @@ function OverflowToolbar({
2433
2543
  () => actions.filter((a) => !a.hidden),
2434
2544
  [actions]
2435
2545
  );
2436
- const containerRef = useRef3(null);
2437
- const ghostRef = useRef3(null);
2438
- const leadingRef = useRef3(null);
2439
- const [visibleCount, setVisibleCount] = useState5(visibleActions.length);
2546
+ const containerRef = useRef4(null);
2547
+ const ghostRef = useRef4(null);
2548
+ const leadingRef = useRef4(null);
2549
+ const [visibleCount, setVisibleCount] = useState6(visibleActions.length);
2440
2550
  const signature = visibleActions.map(
2441
2551
  (a) => `${a.id}:${a.hideLabel ? 1 : 0}:${a.running ? 1 : 0}:${a.runningLabel ?? ""}:${a.label}`
2442
2552
  ).join("|");
@@ -2477,22 +2587,22 @@ function OverflowToolbar({
2477
2587
  }, [signature, leading != null]);
2478
2588
  const shown = visibleActions.slice(0, visibleCount);
2479
2589
  const hidden = visibleActions.slice(visibleCount);
2480
- return /* @__PURE__ */ jsxs13("div", { ref: containerRef, className: cn("relative min-w-0", className), children: [
2481
- /* @__PURE__ */ jsxs13(
2590
+ return /* @__PURE__ */ jsxs14("div", { ref: containerRef, className: cn("relative min-w-0", className), children: [
2591
+ /* @__PURE__ */ jsxs14(
2482
2592
  "div",
2483
2593
  {
2484
2594
  ref: ghostRef,
2485
2595
  "aria-hidden": true,
2486
2596
  className: "pointer-events-none absolute left-0 top-0 flex items-center gap-1.5 opacity-0",
2487
2597
  children: [
2488
- visibleActions.map((a) => /* @__PURE__ */ jsx24(ToolbarButton, { action: a }, a.id)),
2489
- /* @__PURE__ */ jsx24(OverflowTrigger, { ariaLabel: overflowAriaLabel })
2598
+ visibleActions.map((a) => /* @__PURE__ */ jsx26(ToolbarButton, { action: a }, a.id)),
2599
+ /* @__PURE__ */ jsx26(OverflowTrigger, { ariaLabel: overflowAriaLabel })
2490
2600
  ]
2491
2601
  }
2492
2602
  ),
2493
- /* @__PURE__ */ jsxs13("div", { className: "flex items-center justify-end gap-1.5", children: [
2494
- leading != null && /* @__PURE__ */ jsx24("span", { ref: leadingRef, className: "shrink-0", children: leading }),
2495
- shown.map((a) => /* @__PURE__ */ jsx24(
2603
+ /* @__PURE__ */ jsxs14("div", { className: "flex items-center justify-end gap-1.5", children: [
2604
+ leading != null && /* @__PURE__ */ jsx26("span", { ref: leadingRef, className: "shrink-0", children: leading }),
2605
+ shown.map((a) => /* @__PURE__ */ jsx26(
2496
2606
  ToolbarButton,
2497
2607
  {
2498
2608
  action: a,
@@ -2503,7 +2613,7 @@ function OverflowToolbar({
2503
2613
  )),
2504
2614
  hidden.length > 0 && renderOverflowMenu({
2505
2615
  actions: hidden,
2506
- trigger: /* @__PURE__ */ jsx24(OverflowTrigger, { ariaLabel: overflowAriaLabel })
2616
+ trigger: /* @__PURE__ */ jsx26(OverflowTrigger, { ariaLabel: overflowAriaLabel })
2507
2617
  })
2508
2618
  ] })
2509
2619
  ] });
@@ -2511,20 +2621,20 @@ function OverflowToolbar({
2511
2621
 
2512
2622
  // src/progress.tsx
2513
2623
  import * as ProgressPrimitive from "@radix-ui/react-progress";
2514
- import * as React21 from "react";
2515
- import { jsx as jsx25 } from "react/jsx-runtime";
2624
+ import * as React22 from "react";
2625
+ import { jsx as jsx27 } from "react/jsx-runtime";
2516
2626
  var PROGRESS_TONES = {
2517
2627
  default: "bg-primary",
2518
2628
  success: "bg-success",
2519
2629
  warning: "bg-warning",
2520
2630
  destructive: "bg-destructive"
2521
2631
  };
2522
- var Progress = React21.forwardRef(({ className, tone = "default", indicatorClassName, ...props }, ref) => {
2632
+ var Progress = React22.forwardRef(({ className, tone = "default", indicatorClassName, ...props }, ref) => {
2523
2633
  const { value, max } = props;
2524
2634
  const ceiling = max ?? 100;
2525
2635
  const isIndeterminate = value === null || value === void 0;
2526
2636
  const pct = isIndeterminate ? 0 : Math.min(100, Math.max(0, value / ceiling * 100));
2527
- return /* @__PURE__ */ jsx25(
2637
+ return /* @__PURE__ */ jsx27(
2528
2638
  ProgressPrimitive.Root,
2529
2639
  {
2530
2640
  ref,
@@ -2534,7 +2644,7 @@ var Progress = React21.forwardRef(({ className, tone = "default", indicatorClass
2534
2644
  className
2535
2645
  ),
2536
2646
  ...props,
2537
- children: /* @__PURE__ */ jsx25(
2647
+ children: /* @__PURE__ */ jsx27(
2538
2648
  ProgressPrimitive.Indicator,
2539
2649
  {
2540
2650
  "data-slot": "progress-indicator",
@@ -2554,9 +2664,9 @@ Progress.displayName = ProgressPrimitive.Root.displayName;
2554
2664
 
2555
2665
  // src/scroll-area.tsx
2556
2666
  import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
2557
- import * as React22 from "react";
2558
- import { jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
2559
- var ScrollArea = React22.forwardRef(
2667
+ import * as React23 from "react";
2668
+ import { jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
2669
+ var ScrollArea = React23.forwardRef(
2560
2670
  ({
2561
2671
  className,
2562
2672
  children,
@@ -2565,7 +2675,7 @@ var ScrollArea = React22.forwardRef(
2565
2675
  scrollBarClassName,
2566
2676
  orientation = "vertical",
2567
2677
  ...props
2568
- }, ref) => /* @__PURE__ */ jsxs14(
2678
+ }, ref) => /* @__PURE__ */ jsxs15(
2569
2679
  ScrollAreaPrimitive.Root,
2570
2680
  {
2571
2681
  ref,
@@ -2573,7 +2683,7 @@ var ScrollArea = React22.forwardRef(
2573
2683
  className: cn("relative overflow-hidden", className),
2574
2684
  ...props,
2575
2685
  children: [
2576
- /* @__PURE__ */ jsx26(
2686
+ /* @__PURE__ */ jsx28(
2577
2687
  ScrollAreaPrimitive.Viewport,
2578
2688
  {
2579
2689
  ref: viewportRef,
@@ -2582,14 +2692,14 @@ var ScrollArea = React22.forwardRef(
2582
2692
  children
2583
2693
  }
2584
2694
  ),
2585
- /* @__PURE__ */ jsx26(ScrollBar, { orientation, className: scrollBarClassName }),
2586
- /* @__PURE__ */ jsx26(ScrollAreaPrimitive.Corner, {})
2695
+ /* @__PURE__ */ jsx28(ScrollBar, { orientation, className: scrollBarClassName }),
2696
+ /* @__PURE__ */ jsx28(ScrollAreaPrimitive.Corner, {})
2587
2697
  ]
2588
2698
  }
2589
2699
  )
2590
2700
  );
2591
2701
  ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
2592
- var ScrollBar = React22.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx26(
2702
+ var ScrollBar = React23.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx28(
2593
2703
  ScrollAreaPrimitive.ScrollAreaScrollbar,
2594
2704
  {
2595
2705
  ref,
@@ -2602,7 +2712,7 @@ var ScrollBar = React22.forwardRef(({ className, orientation = "vertical", ...pr
2602
2712
  className
2603
2713
  ),
2604
2714
  ...props,
2605
- children: /* @__PURE__ */ jsx26(
2715
+ children: /* @__PURE__ */ jsx28(
2606
2716
  ScrollAreaPrimitive.ScrollAreaThumb,
2607
2717
  {
2608
2718
  "data-slot": "scroll-area-thumb",
@@ -2614,7 +2724,7 @@ var ScrollBar = React22.forwardRef(({ className, orientation = "vertical", ...pr
2614
2724
  ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
2615
2725
 
2616
2726
  // src/score-ring.tsx
2617
- import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
2727
+ import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
2618
2728
  var DEFAULT_SCORE_THRESHOLDS = {
2619
2729
  good: 75,
2620
2730
  warning: 50
@@ -2645,7 +2755,7 @@ function ScoreRing({
2645
2755
  const circumference = 2 * Math.PI * radius;
2646
2756
  const boundedPct = pct === null ? 0 : Math.max(0, Math.min(100, pct));
2647
2757
  const dashOffset = circumference * (1 - boundedPct / 100);
2648
- return /* @__PURE__ */ jsxs15(
2758
+ return /* @__PURE__ */ jsxs16(
2649
2759
  "div",
2650
2760
  {
2651
2761
  className: cn(
@@ -2656,8 +2766,8 @@ function ScoreRing({
2656
2766
  role: "img",
2657
2767
  "aria-label": `${label ?? "Score"}: ${pct === null ? "not available" : `${pct} out of 100`}`,
2658
2768
  children: [
2659
- /* @__PURE__ */ jsxs15("svg", { viewBox: "0 0 100 100", className: "h-full w-full -rotate-90", children: [
2660
- /* @__PURE__ */ jsx27(
2769
+ /* @__PURE__ */ jsxs16("svg", { viewBox: "0 0 100 100", className: "h-full w-full -rotate-90", children: [
2770
+ /* @__PURE__ */ jsx29(
2661
2771
  "circle",
2662
2772
  {
2663
2773
  cx: "50",
@@ -2668,7 +2778,7 @@ function ScoreRing({
2668
2778
  fill: "none"
2669
2779
  }
2670
2780
  ),
2671
- pct !== null ? /* @__PURE__ */ jsx27(
2781
+ pct !== null ? /* @__PURE__ */ jsx29(
2672
2782
  "circle",
2673
2783
  {
2674
2784
  cx: "50",
@@ -2687,8 +2797,8 @@ function ScoreRing({
2687
2797
  }
2688
2798
  ) : null
2689
2799
  ] }),
2690
- /* @__PURE__ */ jsxs15("div", { className: "absolute flex flex-col items-center justify-center", children: [
2691
- /* @__PURE__ */ jsx27(
2800
+ /* @__PURE__ */ jsxs16("div", { className: "absolute flex flex-col items-center justify-center", children: [
2801
+ /* @__PURE__ */ jsx29(
2692
2802
  "span",
2693
2803
  {
2694
2804
  className: cn(
@@ -2698,7 +2808,7 @@ function ScoreRing({
2698
2808
  children: pct === null ? "\u2014" : `${pct}${suffix}`
2699
2809
  }
2700
2810
  ),
2701
- label ? /* @__PURE__ */ jsx27("span", { className: "max-w-[74px] truncate text-[9px] font-semibold uppercase tracking-wide text-muted-foreground", children: label }) : null
2811
+ label ? /* @__PURE__ */ jsx29("span", { className: "max-w-[74px] truncate text-[9px] font-semibold uppercase tracking-wide text-muted-foreground", children: label }) : null
2702
2812
  ] })
2703
2813
  ]
2704
2814
  }
@@ -2706,7 +2816,7 @@ function ScoreRing({
2706
2816
  }
2707
2817
 
2708
2818
  // src/segmented-control.tsx
2709
- import { jsx as jsx28 } from "react/jsx-runtime";
2819
+ import { jsx as jsx30 } from "react/jsx-runtime";
2710
2820
  function SegmentedControl({
2711
2821
  value,
2712
2822
  onValueChange,
@@ -2721,7 +2831,7 @@ function SegmentedControl({
2721
2831
  md: "h-9 text-sm",
2722
2832
  lg: "h-10 text-base"
2723
2833
  };
2724
- return /* @__PURE__ */ jsx28(
2834
+ return /* @__PURE__ */ jsx30(
2725
2835
  "div",
2726
2836
  {
2727
2837
  className: cn(
@@ -2732,7 +2842,7 @@ function SegmentedControl({
2732
2842
  role: "tablist",
2733
2843
  children: data.map((option) => {
2734
2844
  const isActive = value === option.value;
2735
- return /* @__PURE__ */ jsx28(
2845
+ return /* @__PURE__ */ jsx30(
2736
2846
  "button",
2737
2847
  {
2738
2848
  type: "button",
@@ -2759,8 +2869,8 @@ function SegmentedControl({
2759
2869
  // src/select.tsx
2760
2870
  import * as SelectPrimitive from "@radix-ui/react-select";
2761
2871
  import { cva as cva4 } from "class-variance-authority";
2762
- import * as React23 from "react";
2763
- import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
2872
+ import * as React24 from "react";
2873
+ import { jsx as jsx31, jsxs as jsxs17 } from "react/jsx-runtime";
2764
2874
  var Select = SelectPrimitive.Root;
2765
2875
  var SelectGroup = SelectPrimitive.Group;
2766
2876
  var SelectValue = SelectPrimitive.Value;
@@ -2779,7 +2889,7 @@ var selectTriggerVariants = cva4(
2779
2889
  }
2780
2890
  }
2781
2891
  );
2782
- var SelectTrigger = React23.forwardRef(({ className, children, hideArrow = false, size, ...props }, ref) => /* @__PURE__ */ jsxs16(
2892
+ var SelectTrigger = React24.forwardRef(({ className, children, hideArrow = false, size, ...props }, ref) => /* @__PURE__ */ jsxs17(
2783
2893
  SelectPrimitive.Trigger,
2784
2894
  {
2785
2895
  ref,
@@ -2787,12 +2897,12 @@ var SelectTrigger = React23.forwardRef(({ className, children, hideArrow = false
2787
2897
  ...props,
2788
2898
  children: [
2789
2899
  children,
2790
- !hideArrow && /* @__PURE__ */ jsx29(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx29(RadixChevronDownIcon, { className: "h-4 w-4 opacity-50" }) })
2900
+ !hideArrow && /* @__PURE__ */ jsx31(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx31(RadixChevronDownIcon, { className: "h-4 w-4 opacity-50" }) })
2791
2901
  ]
2792
2902
  }
2793
2903
  ));
2794
2904
  SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
2795
- var SelectScrollUpButton = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2905
+ var SelectScrollUpButton = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2796
2906
  SelectPrimitive.ScrollUpButton,
2797
2907
  {
2798
2908
  ref,
@@ -2801,11 +2911,11 @@ var SelectScrollUpButton = React23.forwardRef(({ className, ...props }, ref) =>
2801
2911
  className
2802
2912
  ),
2803
2913
  ...props,
2804
- children: /* @__PURE__ */ jsx29(RadixChevronUpIcon, {})
2914
+ children: /* @__PURE__ */ jsx31(RadixChevronUpIcon, {})
2805
2915
  }
2806
2916
  ));
2807
2917
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
2808
- var SelectScrollDownButton = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2918
+ var SelectScrollDownButton = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2809
2919
  SelectPrimitive.ScrollDownButton,
2810
2920
  {
2811
2921
  ref,
@@ -2814,11 +2924,11 @@ var SelectScrollDownButton = React23.forwardRef(({ className, ...props }, ref) =
2814
2924
  className
2815
2925
  ),
2816
2926
  ...props,
2817
- children: /* @__PURE__ */ jsx29(RadixChevronDownIcon, {})
2927
+ children: /* @__PURE__ */ jsx31(RadixChevronDownIcon, {})
2818
2928
  }
2819
2929
  ));
2820
2930
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
2821
- var SelectContent = React23.forwardRef(
2931
+ var SelectContent = React24.forwardRef(
2822
2932
  ({
2823
2933
  className,
2824
2934
  children,
@@ -2828,26 +2938,21 @@ var SelectContent = React23.forwardRef(
2828
2938
  ...props
2829
2939
  }, ref) => {
2830
2940
  const portalContainer = usePortalContainer(container);
2831
- return /* @__PURE__ */ jsx29(SelectPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs16(
2941
+ return /* @__PURE__ */ jsx31(SelectPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs17(
2832
2942
  SelectPrimitive.Content,
2833
2943
  {
2834
2944
  ref,
2835
2945
  className: cn(
2836
2946
  "relative z-[10001] max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md",
2837
2947
  animated && MOTION_POPPER,
2838
- // The resting gap from the trigger. It is the `translate` property
2839
- // (POPPER_OFFSET), never Tailwind translate utilities: those compose
2840
- // with `transform` on a v4 host and are REPLACED by it on a v3 one,
2841
- // so on v3 the animation ate the gap and the surface snapped 4px at
2842
- // the end. Same law as the centred dialog card — see motion.ts.
2843
- position === "popper" && POPPER_OFFSET,
2948
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
2844
2949
  className
2845
2950
  ),
2846
2951
  position,
2847
2952
  ...props,
2848
2953
  children: [
2849
- /* @__PURE__ */ jsx29(SelectScrollUpButton, {}),
2850
- /* @__PURE__ */ jsx29(
2954
+ /* @__PURE__ */ jsx31(SelectScrollUpButton, {}),
2955
+ /* @__PURE__ */ jsx31(
2851
2956
  SelectPrimitive.Viewport,
2852
2957
  {
2853
2958
  className: cn(
@@ -2857,14 +2962,14 @@ var SelectContent = React23.forwardRef(
2857
2962
  children
2858
2963
  }
2859
2964
  ),
2860
- /* @__PURE__ */ jsx29(SelectScrollDownButton, {})
2965
+ /* @__PURE__ */ jsx31(SelectScrollDownButton, {})
2861
2966
  ]
2862
2967
  }
2863
2968
  ) });
2864
2969
  }
2865
2970
  );
2866
2971
  SelectContent.displayName = SelectPrimitive.Content.displayName;
2867
- var SelectLabel = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2972
+ var SelectLabel = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2868
2973
  SelectPrimitive.Label,
2869
2974
  {
2870
2975
  ref,
@@ -2873,7 +2978,7 @@ var SelectLabel = React23.forwardRef(({ className, ...props }, ref) => /* @__PUR
2873
2978
  }
2874
2979
  ));
2875
2980
  SelectLabel.displayName = SelectPrimitive.Label.displayName;
2876
- var SelectItem = React23.forwardRef(({ className, children, description, ...props }, ref) => /* @__PURE__ */ jsxs16(
2981
+ var SelectItem = React24.forwardRef(({ className, children, description, ...props }, ref) => /* @__PURE__ */ jsxs17(
2877
2982
  SelectPrimitive.Item,
2878
2983
  {
2879
2984
  ref,
@@ -2884,14 +2989,14 @@ var SelectItem = React23.forwardRef(({ className, children, description, ...prop
2884
2989
  ),
2885
2990
  ...props,
2886
2991
  children: [
2887
- /* @__PURE__ */ jsx29("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx29(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx29(CheckIcon, { className: "h-4 w-4" }) }) }),
2888
- /* @__PURE__ */ jsx29(SelectPrimitive.ItemText, { children }),
2889
- description ? /* @__PURE__ */ jsx29("span", { className: "block text-xs leading-snug text-muted-foreground", children: description }) : null
2992
+ /* @__PURE__ */ jsx31("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx31(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx31(CheckIcon, { className: "h-4 w-4" }) }) }),
2993
+ /* @__PURE__ */ jsx31(SelectPrimitive.ItemText, { children }),
2994
+ description ? /* @__PURE__ */ jsx31("span", { className: "block text-xs leading-snug text-muted-foreground", children: description }) : null
2890
2995
  ]
2891
2996
  }
2892
2997
  ));
2893
2998
  SelectItem.displayName = SelectPrimitive.Item.displayName;
2894
- var SelectSeparator = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2999
+ var SelectSeparator = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
2895
3000
  SelectPrimitive.Separator,
2896
3001
  {
2897
3002
  ref,
@@ -2903,9 +3008,9 @@ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
2903
3008
 
2904
3009
  // src/separator.tsx
2905
3010
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
2906
- import * as React24 from "react";
2907
- import { jsx as jsx30 } from "react/jsx-runtime";
2908
- var Separator4 = React24.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx30(
3011
+ import * as React25 from "react";
3012
+ import { jsx as jsx32 } from "react/jsx-runtime";
3013
+ var Separator4 = React25.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx32(
2909
3014
  SeparatorPrimitive.Root,
2910
3015
  {
2911
3016
  ref,
@@ -2925,11 +3030,11 @@ Separator4.displayName = SeparatorPrimitive.Root.displayName;
2925
3030
  import * as SheetPrimitive from "@radix-ui/react-dialog";
2926
3031
  import { treeContainsComponent as treeContainsComponent4 } from "@ai-matrx/kit/react-tree";
2927
3032
  import { cva as cva5 } from "class-variance-authority";
2928
- import * as React25 from "react";
2929
- import { jsx as jsx31, jsxs as jsxs17 } from "react/jsx-runtime";
2930
- var SheetContentBase = React25.forwardRef(({ ...props }, ref) => {
3033
+ import * as React26 from "react";
3034
+ import { jsx as jsx33, jsxs as jsxs18 } from "react/jsx-runtime";
3035
+ var SheetContentBase = React26.forwardRef(({ ...props }, ref) => {
2931
3036
  const isModal = useRadixDialogModal();
2932
- return /* @__PURE__ */ jsx31(
3037
+ return /* @__PURE__ */ jsx33(
2933
3038
  SheetPrimitive.Content,
2934
3039
  {
2935
3040
  ...props,
@@ -2939,15 +3044,15 @@ var SheetContentBase = React25.forwardRef(({ ...props }, ref) => {
2939
3044
  );
2940
3045
  });
2941
3046
  SheetContentBase.displayName = "SheetContentBase";
2942
- var Sheet = React25.forwardRef(({ children, ...props }, _ref) => {
3047
+ var Sheet = React26.forwardRef(({ children, ...props }, _ref) => {
2943
3048
  const modal = props.modal ?? true;
2944
- return /* @__PURE__ */ jsx31(RadixDialogModalProvider, { modal, children: /* @__PURE__ */ jsx31(SheetPrimitive.Root, { ...props, modal, children }) });
3049
+ return /* @__PURE__ */ jsx33(RadixDialogModalProvider, { modal, children: /* @__PURE__ */ jsx33(SheetPrimitive.Root, { ...props, modal, children }) });
2945
3050
  });
2946
3051
  Sheet.displayName = "Sheet";
2947
3052
  var SheetTrigger = SheetPrimitive.Trigger;
2948
3053
  var SheetClose = SheetPrimitive.Close;
2949
3054
  var SheetPortal = SheetPrimitive.Portal;
2950
- var SheetOverlay = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
3055
+ var SheetOverlay = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx33(
2951
3056
  SheetPrimitive.Overlay,
2952
3057
  {
2953
3058
  className: cn(
@@ -2984,7 +3089,7 @@ var sheetVariants = cva5(
2984
3089
  }
2985
3090
  }
2986
3091
  );
2987
- var SheetDescription = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
3092
+ var SheetDescription = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx33(
2988
3093
  SheetPrimitive.Description,
2989
3094
  {
2990
3095
  ref,
@@ -2993,7 +3098,7 @@ var SheetDescription = React25.forwardRef(({ className, ...props }, ref) => /* @
2993
3098
  }
2994
3099
  ));
2995
3100
  SheetDescription.displayName = SheetPrimitive.Description.displayName;
2996
- var SheetContent = React25.forwardRef(
3101
+ var SheetContent = React26.forwardRef(
2997
3102
  ({
2998
3103
  side = "right",
2999
3104
  className,
@@ -3005,9 +3110,9 @@ var SheetContent = React25.forwardRef(
3005
3110
  ...props
3006
3111
  }, ref) => {
3007
3112
  const hasDescription = treeContainsComponent4(children, SheetDescription) || treeContainsComponent4(children, SheetPrimitive.Description);
3008
- return /* @__PURE__ */ jsxs17(SheetPortal, { children: [
3009
- !hideOverlay && /* @__PURE__ */ jsx31(SheetOverlay, { className: overlayClassName }),
3010
- /* @__PURE__ */ jsxs17(
3113
+ return /* @__PURE__ */ jsxs18(SheetPortal, { children: [
3114
+ !hideOverlay && /* @__PURE__ */ jsx33(SheetOverlay, { className: overlayClassName }),
3115
+ /* @__PURE__ */ jsxs18(
3011
3116
  SheetContentBase,
3012
3117
  {
3013
3118
  ref,
@@ -3019,9 +3124,9 @@ var SheetContent = React25.forwardRef(
3019
3124
  ...hasDescription ? {} : { "aria-describedby": void 0 },
3020
3125
  ...props,
3021
3126
  children: [
3022
- !hideCloseButton && /* @__PURE__ */ jsxs17(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
3023
- /* @__PURE__ */ jsx31(Cross2Icon, { className: "h-4 w-4" }),
3024
- /* @__PURE__ */ jsx31("span", { className: "sr-only", children: "Close" })
3127
+ !hideCloseButton && /* @__PURE__ */ jsxs18(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
3128
+ /* @__PURE__ */ jsx33(Cross2Icon, { className: "h-4 w-4" }),
3129
+ /* @__PURE__ */ jsx33("span", { className: "sr-only", children: "Close" })
3025
3130
  ] }),
3026
3131
  children
3027
3132
  ]
@@ -3034,7 +3139,7 @@ SheetContent.displayName = SheetPrimitive.Content.displayName;
3034
3139
  var SheetHeader = ({
3035
3140
  className,
3036
3141
  ...props
3037
- }) => /* @__PURE__ */ jsx31(
3142
+ }) => /* @__PURE__ */ jsx33(
3038
3143
  "div",
3039
3144
  {
3040
3145
  className: cn(
@@ -3048,7 +3153,7 @@ SheetHeader.displayName = "SheetHeader";
3048
3153
  var SheetFooter = ({
3049
3154
  className,
3050
3155
  ...props
3051
- }) => /* @__PURE__ */ jsx31(
3156
+ }) => /* @__PURE__ */ jsx33(
3052
3157
  "div",
3053
3158
  {
3054
3159
  className: cn(
@@ -3059,7 +3164,7 @@ var SheetFooter = ({
3059
3164
  }
3060
3165
  );
3061
3166
  SheetFooter.displayName = "SheetFooter";
3062
- var SheetTitle = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
3167
+ var SheetTitle = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx33(
3063
3168
  SheetPrimitive.Title,
3064
3169
  {
3065
3170
  ref,
@@ -3070,9 +3175,9 @@ var SheetTitle = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE
3070
3175
  SheetTitle.displayName = SheetPrimitive.Title.displayName;
3071
3176
 
3072
3177
  // src/skeleton.tsx
3073
- import { jsx as jsx32 } from "react/jsx-runtime";
3178
+ import { jsx as jsx34 } from "react/jsx-runtime";
3074
3179
  function Skeleton({ className, animated = true, ...props }) {
3075
- return /* @__PURE__ */ jsx32(
3180
+ return /* @__PURE__ */ jsx34(
3076
3181
  "div",
3077
3182
  {
3078
3183
  "data-slot": "skeleton",
@@ -3088,8 +3193,8 @@ function Skeleton({ className, animated = true, ...props }) {
3088
3193
 
3089
3194
  // src/switch.tsx
3090
3195
  import * as SwitchPrimitives from "@radix-ui/react-switch";
3091
- import * as React26 from "react";
3092
- import { jsx as jsx33 } from "react/jsx-runtime";
3196
+ import * as React27 from "react";
3197
+ import { jsx as jsx35 } from "react/jsx-runtime";
3093
3198
  var SWITCH_SIZES = {
3094
3199
  sm: {
3095
3200
  root: "h-4 w-9 border-border data-[state=unchecked]:bg-input",
@@ -3100,7 +3205,7 @@ var SWITCH_SIZES = {
3100
3205
  thumb: "h-4 w-4 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0"
3101
3206
  }
3102
3207
  };
3103
- var Switch = React26.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ jsx33(
3208
+ var Switch = React27.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ jsx35(
3104
3209
  SwitchPrimitives.Root,
3105
3210
  {
3106
3211
  ref,
@@ -3111,7 +3216,7 @@ var Switch = React26.forwardRef(({ className, size = "md", ...props }, ref) => /
3111
3216
  className
3112
3217
  ),
3113
3218
  ...props,
3114
- children: /* @__PURE__ */ jsx33(
3219
+ children: /* @__PURE__ */ jsx35(
3115
3220
  SwitchPrimitives.Thumb,
3116
3221
  {
3117
3222
  "data-slot": "switch-thumb",
@@ -3126,30 +3231,30 @@ var Switch = React26.forwardRef(({ className, size = "md", ...props }, ref) => /
3126
3231
  Switch.displayName = SwitchPrimitives.Root.displayName;
3127
3232
 
3128
3233
  // src/tabbed-bottom-sheet.tsx
3129
- import { useState as useState6 } from "react";
3130
- import { jsx as jsx34, jsxs as jsxs18 } from "react/jsx-runtime";
3234
+ import { useState as useState7 } from "react";
3235
+ import { jsx as jsx36, jsxs as jsxs19 } from "react/jsx-runtime";
3131
3236
  function TabbedBottomSheet({
3132
3237
  open,
3133
3238
  onOpenChange,
3134
3239
  title,
3135
3240
  tabs
3136
3241
  }) {
3137
- const [selectedTabId, setSelectedTabId] = useState6(null);
3138
- const [wasOpen, setWasOpen] = useState6(open);
3242
+ const [selectedTabId, setSelectedTabId] = useState7(null);
3243
+ const [wasOpen, setWasOpen] = useState7(open);
3139
3244
  if (open !== wasOpen) {
3140
3245
  setWasOpen(open);
3141
3246
  if (open) setSelectedTabId(null);
3142
3247
  }
3143
3248
  const selectedTab = selectedTabId ? tabs.find((tab) => tab.id === selectedTabId) : null;
3144
- return /* @__PURE__ */ jsx34(
3249
+ return /* @__PURE__ */ jsx36(
3145
3250
  BottomSheet,
3146
3251
  {
3147
3252
  open,
3148
3253
  onOpenChange,
3149
3254
  title,
3150
3255
  size: "full",
3151
- children: /* @__PURE__ */ jsxs18("div", { className: "matrx-mobile-sheet flex min-h-0 flex-1 flex-col", children: [
3152
- /* @__PURE__ */ jsx34(
3256
+ children: /* @__PURE__ */ jsxs19("div", { className: "matrx-mobile-sheet flex min-h-0 flex-1 flex-col", children: [
3257
+ /* @__PURE__ */ jsx36(
3153
3258
  BottomSheetHeader,
3154
3259
  {
3155
3260
  title: selectedTab ? selectedTab.label : title,
@@ -3157,19 +3262,19 @@ function TabbedBottomSheet({
3157
3262
  onBack: () => setSelectedTabId(null)
3158
3263
  }
3159
3264
  ),
3160
- selectedTab ? /* @__PURE__ */ jsx34("div", { className: "flex min-h-0 flex-1 flex-col overflow-hidden pb-safe", children: selectedTab.content }) : /* @__PURE__ */ jsx34(BottomSheetBody, { children: /* @__PURE__ */ jsx34("ul", { className: "divide-y divide-border", children: tabs.map((tab) => {
3265
+ selectedTab ? /* @__PURE__ */ jsx36("div", { className: "flex min-h-0 flex-1 flex-col overflow-hidden pb-safe", children: selectedTab.content }) : /* @__PURE__ */ jsx36(BottomSheetBody, { children: /* @__PURE__ */ jsx36("ul", { className: "divide-y divide-border", children: tabs.map((tab) => {
3161
3266
  const Icon2 = tab.icon;
3162
- return /* @__PURE__ */ jsx34("li", { children: /* @__PURE__ */ jsxs18(
3267
+ return /* @__PURE__ */ jsx36("li", { children: /* @__PURE__ */ jsxs19(
3163
3268
  "button",
3164
3269
  {
3165
3270
  type: "button",
3166
3271
  onClick: () => setSelectedTabId(tab.id),
3167
3272
  className: "flex w-full items-center gap-3 px-4 py-3.5 text-left transition-colors hover:bg-muted/60 active:bg-muted",
3168
3273
  children: [
3169
- Icon2 ? /* @__PURE__ */ jsx34(Icon2, { className: "h-5 w-5 shrink-0 text-muted-foreground" }) : null,
3170
- /* @__PURE__ */ jsx34("span", { className: "min-w-0 flex-1 text-base text-foreground", children: tab.label }),
3274
+ Icon2 ? /* @__PURE__ */ jsx36(Icon2, { className: "h-5 w-5 shrink-0 text-muted-foreground" }) : null,
3275
+ /* @__PURE__ */ jsx36("span", { className: "min-w-0 flex-1 text-base text-foreground", children: tab.label }),
3171
3276
  tab.trailing,
3172
- /* @__PURE__ */ jsx34(ChevronRightIcon, { className: "h-5 w-5 shrink-0 text-muted-foreground" })
3277
+ /* @__PURE__ */ jsx36(ChevronRightIcon, { className: "h-5 w-5 shrink-0 text-muted-foreground" })
3173
3278
  ]
3174
3279
  }
3175
3280
  ) }, tab.id);
@@ -3180,19 +3285,19 @@ function TabbedBottomSheet({
3180
3285
  }
3181
3286
 
3182
3287
  // src/table.tsx
3183
- import * as React27 from "react";
3184
- import { jsx as jsx35 } from "react/jsx-runtime";
3288
+ import * as React28 from "react";
3289
+ import { jsx as jsx37 } from "react/jsx-runtime";
3185
3290
  var TABLE_SIZES = {
3186
3291
  sm: { head: "px-2", cell: "p-2" },
3187
3292
  md: { head: "px-3", cell: "p-3" }
3188
3293
  };
3189
- var TableSizeContext = React27.createContext("md");
3294
+ var TableSizeContext = React28.createContext("md");
3190
3295
  function useTableSize() {
3191
- return React27.useContext(TableSizeContext);
3296
+ return React28.useContext(TableSizeContext);
3192
3297
  }
3193
- var Table = React27.forwardRef(
3298
+ var Table = React28.forwardRef(
3194
3299
  ({ className, size = "md", wrap = true, wrapperClassName, ...props }, ref) => {
3195
- const table = /* @__PURE__ */ jsx35(
3300
+ const table = /* @__PURE__ */ jsx37(
3196
3301
  "table",
3197
3302
  {
3198
3303
  ref,
@@ -3202,7 +3307,7 @@ var Table = React27.forwardRef(
3202
3307
  ...props
3203
3308
  }
3204
3309
  );
3205
- return /* @__PURE__ */ jsx35(TableSizeContext.Provider, { value: size, children: wrap ? /* @__PURE__ */ jsx35(
3310
+ return /* @__PURE__ */ jsx37(TableSizeContext.Provider, { value: size, children: wrap ? /* @__PURE__ */ jsx37(
3206
3311
  "div",
3207
3312
  {
3208
3313
  "data-slot": "table-wrapper",
@@ -3213,7 +3318,7 @@ var Table = React27.forwardRef(
3213
3318
  }
3214
3319
  );
3215
3320
  Table.displayName = "Table";
3216
- var TableHeader = React27.forwardRef(({ className, sticky = false, ...props }, ref) => /* @__PURE__ */ jsx35(
3321
+ var TableHeader = React28.forwardRef(({ className, sticky = false, ...props }, ref) => /* @__PURE__ */ jsx37(
3217
3322
  "thead",
3218
3323
  {
3219
3324
  ref,
@@ -3227,7 +3332,7 @@ var TableHeader = React27.forwardRef(({ className, sticky = false, ...props }, r
3227
3332
  }
3228
3333
  ));
3229
3334
  TableHeader.displayName = "TableHeader";
3230
- var TableBody = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
3335
+ var TableBody = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3231
3336
  "tbody",
3232
3337
  {
3233
3338
  ref,
@@ -3237,7 +3342,7 @@ var TableBody = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE_
3237
3342
  }
3238
3343
  ));
3239
3344
  TableBody.displayName = "TableBody";
3240
- var TableFooter = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
3345
+ var TableFooter = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3241
3346
  "tfoot",
3242
3347
  {
3243
3348
  ref,
@@ -3250,7 +3355,7 @@ var TableFooter = React27.forwardRef(({ className, ...props }, ref) => /* @__PUR
3250
3355
  }
3251
3356
  ));
3252
3357
  TableFooter.displayName = "TableFooter";
3253
- var TableRow = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
3358
+ var TableRow = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3254
3359
  "tr",
3255
3360
  {
3256
3361
  ref,
@@ -3263,9 +3368,9 @@ var TableRow = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__
3263
3368
  }
3264
3369
  ));
3265
3370
  TableRow.displayName = "TableRow";
3266
- var TableHead = React27.forwardRef(({ className, ...props }, ref) => {
3371
+ var TableHead = React28.forwardRef(({ className, ...props }, ref) => {
3267
3372
  const size = useTableSize();
3268
- return /* @__PURE__ */ jsx35(
3373
+ return /* @__PURE__ */ jsx37(
3269
3374
  "th",
3270
3375
  {
3271
3376
  ref,
@@ -3280,9 +3385,9 @@ var TableHead = React27.forwardRef(({ className, ...props }, ref) => {
3280
3385
  );
3281
3386
  });
3282
3387
  TableHead.displayName = "TableHead";
3283
- var TableCell = React27.forwardRef(({ className, ...props }, ref) => {
3388
+ var TableCell = React28.forwardRef(({ className, ...props }, ref) => {
3284
3389
  const size = useTableSize();
3285
- return /* @__PURE__ */ jsx35(
3390
+ return /* @__PURE__ */ jsx37(
3286
3391
  "td",
3287
3392
  {
3288
3393
  ref,
@@ -3297,7 +3402,7 @@ var TableCell = React27.forwardRef(({ className, ...props }, ref) => {
3297
3402
  );
3298
3403
  });
3299
3404
  TableCell.displayName = "TableCell";
3300
- var TableCaption = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
3405
+ var TableCaption = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3301
3406
  "caption",
3302
3407
  {
3303
3408
  ref,
@@ -3310,11 +3415,11 @@ TableCaption.displayName = "TableCaption";
3310
3415
 
3311
3416
  // src/tabs.tsx
3312
3417
  import * as TabsPrimitive from "@radix-ui/react-tabs";
3313
- import * as React28 from "react";
3314
- import { jsx as jsx36 } from "react/jsx-runtime";
3418
+ import * as React29 from "react";
3419
+ import { jsx as jsx38 } from "react/jsx-runtime";
3315
3420
  var Tabs = TabsPrimitive.Root;
3316
3421
  var TABS_TRIGGER_BASE = "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm";
3317
- var TabsList = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx36(
3422
+ var TabsList = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
3318
3423
  TabsPrimitive.List,
3319
3424
  {
3320
3425
  ref,
@@ -3327,7 +3432,7 @@ var TabsList = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__
3327
3432
  }
3328
3433
  ));
3329
3434
  TabsList.displayName = TabsPrimitive.List.displayName;
3330
- var TabsTrigger = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx36(
3435
+ var TabsTrigger = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
3331
3436
  TabsPrimitive.Trigger,
3332
3437
  {
3333
3438
  ref,
@@ -3341,7 +3446,7 @@ var TabsTrigger = React28.forwardRef(({ className, ...props }, ref) => /* @__PUR
3341
3446
  }
3342
3447
  ));
3343
3448
  TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
3344
- var TabsTriggerCore = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx36(
3449
+ var TabsTriggerCore = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
3345
3450
  TabsPrimitive.Trigger,
3346
3451
  {
3347
3452
  ref,
@@ -3351,7 +3456,7 @@ var TabsTriggerCore = React28.forwardRef(({ className, ...props }, ref) => /* @_
3351
3456
  }
3352
3457
  ));
3353
3458
  TabsTriggerCore.displayName = TabsPrimitive.Trigger.displayName;
3354
- var TabsContent = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx36(
3459
+ var TabsContent = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
3355
3460
  TabsPrimitive.Content,
3356
3461
  {
3357
3462
  ref,
@@ -3367,8 +3472,8 @@ var TabsContent = React28.forwardRef(({ className, ...props }, ref) => /* @__PUR
3367
3472
  TabsContent.displayName = TabsPrimitive.Content.displayName;
3368
3473
 
3369
3474
  // src/textarea.tsx
3370
- import * as React29 from "react";
3371
- import { jsx as jsx37, jsxs as jsxs19 } from "react/jsx-runtime";
3475
+ import * as React30 from "react";
3476
+ import { jsx as jsx39, jsxs as jsxs20 } from "react/jsx-runtime";
3372
3477
  var FILL_HEIGHT_REGEX = /(?:^|\s)(h-full|h-dvh|flex-1|grow)(?:\s|$)/;
3373
3478
  var FILL_WIDTH_REGEX = /(?:^|\s)(w-full|w-screen)(?:\s|$)/;
3374
3479
  function getStretchClasses(className) {
@@ -3381,7 +3486,7 @@ function getStretchClasses(className) {
3381
3486
  var TEXTAREA_ELEVATED_CLASS = "flex h-auto w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground shadow-textarea transition duration-400 placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50";
3382
3487
  var TEXTAREA_CONTROL_CLASS = "flex w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm text-foreground shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50";
3383
3488
  function useAutoGrow(ref, value, autoGrow = false, minHeight, maxHeight) {
3384
- React29.useEffect(() => {
3489
+ React30.useEffect(() => {
3385
3490
  if (!autoGrow || !ref.current) return;
3386
3491
  const textarea = ref.current;
3387
3492
  textarea.style.height = "auto";
@@ -3397,8 +3502,8 @@ function useAutoGrow(ref, value, autoGrow = false, minHeight, maxHeight) {
3397
3502
  }, [value, autoGrow, minHeight, maxHeight, ref]);
3398
3503
  }
3399
3504
  function useMergedTextareaRef(forwarded) {
3400
- const internal = React29.useRef(null);
3401
- const callback = React29.useCallback(
3505
+ const internal = React30.useRef(null);
3506
+ const callback = React30.useCallback(
3402
3507
  (node) => {
3403
3508
  internal.current = node;
3404
3509
  if (typeof forwarded === "function") forwarded(node);
@@ -3415,13 +3520,13 @@ function boxStyle(minHeight, maxHeight) {
3415
3520
  maxHeight: maxHeight ? `${maxHeight}px` : void 0
3416
3521
  };
3417
3522
  }
3418
- var Textarea = React29.forwardRef(
3523
+ var Textarea = React30.forwardRef(
3419
3524
  ({ className, autoGrow, minHeight, maxHeight, wrapperClassName, ...props }, forwarded) => {
3420
3525
  const { ref, callback } = useMergedTextareaRef(forwarded);
3421
3526
  const stretchClasses = getStretchClasses(className);
3422
3527
  const needsWrapper = Boolean(wrapperClassName || stretchClasses);
3423
3528
  useAutoGrow(ref, props.value, autoGrow, minHeight, maxHeight);
3424
- const textarea = /* @__PURE__ */ jsx37(
3529
+ const textarea = /* @__PURE__ */ jsx39(
3425
3530
  "textarea",
3426
3531
  {
3427
3532
  ref: callback,
@@ -3437,15 +3542,15 @@ var Textarea = React29.forwardRef(
3437
3542
  }
3438
3543
  );
3439
3544
  if (!needsWrapper) return textarea;
3440
- return /* @__PURE__ */ jsx37("div", { className: cn(stretchClasses, wrapperClassName), children: textarea });
3545
+ return /* @__PURE__ */ jsx39("div", { className: cn(stretchClasses, wrapperClassName), children: textarea });
3441
3546
  }
3442
3547
  );
3443
3548
  Textarea.displayName = "Textarea";
3444
- var BasicTextarea = React29.forwardRef(
3549
+ var BasicTextarea = React30.forwardRef(
3445
3550
  ({ className, autoGrow, minHeight, maxHeight, ...props }, forwarded) => {
3446
3551
  const { ref, callback } = useMergedTextareaRef(forwarded);
3447
3552
  useAutoGrow(ref, props.value, autoGrow, minHeight, maxHeight);
3448
- return /* @__PURE__ */ jsx37(
3553
+ return /* @__PURE__ */ jsx39(
3449
3554
  "textarea",
3450
3555
  {
3451
3556
  ref: callback,
@@ -3463,7 +3568,7 @@ var BasicTextarea = React29.forwardRef(
3463
3568
  }
3464
3569
  );
3465
3570
  BasicTextarea.displayName = "BasicTextarea";
3466
- var TextareaWithPrefix = React29.forwardRef(
3571
+ var TextareaWithPrefix = React30.forwardRef(
3467
3572
  ({
3468
3573
  prefix,
3469
3574
  className,
@@ -3475,13 +3580,13 @@ var TextareaWithPrefix = React29.forwardRef(
3475
3580
  }, forwarded) => {
3476
3581
  const { ref, callback } = useMergedTextareaRef(forwarded);
3477
3582
  useAutoGrow(ref, props.value, autoGrow, minHeight, maxHeight);
3478
- return /* @__PURE__ */ jsxs19(
3583
+ return /* @__PURE__ */ jsxs20(
3479
3584
  "div",
3480
3585
  {
3481
3586
  className: cn("relative", getStretchClasses(className), wrapperClassName),
3482
3587
  children: [
3483
- prefix ? /* @__PURE__ */ jsx37("div", { className: "pointer-events-none absolute left-3 top-3 z-10 text-muted-foreground", children: prefix }) : null,
3484
- /* @__PURE__ */ jsx37(
3588
+ prefix ? /* @__PURE__ */ jsx39("div", { className: "pointer-events-none absolute left-3 top-3 z-10 text-muted-foreground", children: prefix }) : null,
3589
+ /* @__PURE__ */ jsx39(
3485
3590
  "textarea",
3486
3591
  {
3487
3592
  ref: callback,
@@ -3505,16 +3610,16 @@ var TextareaWithPrefix = React29.forwardRef(
3505
3610
  TextareaWithPrefix.displayName = "TextareaWithPrefix";
3506
3611
 
3507
3612
  // src/use-scroll-fade.ts
3508
- import { useCallback as useCallback4, useEffect as useEffect4, useRef as useRef5, useState as useState7 } from "react";
3613
+ import { useCallback as useCallback5, useEffect as useEffect5, useRef as useRef6, useState as useState8 } from "react";
3509
3614
  var EPSILON = 2;
3510
3615
  function useScrollFade() {
3511
- const [state, setState] = useState7({
3616
+ const [state, setState] = useState8({
3512
3617
  top: false,
3513
3618
  bottom: false
3514
3619
  });
3515
- const nodeRef = useRef5(null);
3516
- const cleanupRef = useRef5(null);
3517
- const measure = useCallback4(() => {
3620
+ const nodeRef = useRef6(null);
3621
+ const cleanupRef = useRef6(null);
3622
+ const measure = useCallback5(() => {
3518
3623
  const el = nodeRef.current;
3519
3624
  if (!el) return;
3520
3625
  const overflowing = el.scrollHeight - el.clientHeight > EPSILON;
@@ -3526,7 +3631,7 @@ function useScrollFade() {
3526
3631
  (prev) => prev.top === next.top && prev.bottom === next.bottom ? prev : next
3527
3632
  );
3528
3633
  }, []);
3529
- const ref = useCallback4(
3634
+ const ref = useCallback5(
3530
3635
  (node) => {
3531
3636
  cleanupRef.current?.();
3532
3637
  cleanupRef.current = null;
@@ -3546,7 +3651,7 @@ function useScrollFade() {
3546
3651
  },
3547
3652
  [measure]
3548
3653
  );
3549
- useEffect4(() => () => cleanupRef.current?.(), []);
3654
+ useEffect5(() => () => cleanupRef.current?.(), []);
3550
3655
  return {
3551
3656
  ref,
3552
3657
  state,
@@ -3560,14 +3665,14 @@ function useScrollFade() {
3560
3665
 
3561
3666
  // src/hover-card.tsx
3562
3667
  import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
3563
- import * as React30 from "react";
3564
- import { jsx as jsx38 } from "react/jsx-runtime";
3668
+ import * as React31 from "react";
3669
+ import { jsx as jsx40 } from "react/jsx-runtime";
3565
3670
  var HoverCard = HoverCardPrimitive.Root;
3566
3671
  var HoverCardTrigger = HoverCardPrimitive.Trigger;
3567
- var HoverCardContent = React30.forwardRef(
3672
+ var HoverCardContent = React31.forwardRef(
3568
3673
  ({ className, align = "center", sideOffset = 4, container, animated = true, ...props }, ref) => {
3569
3674
  const resolved = usePortalContainer(container);
3570
- return /* @__PURE__ */ jsx38(HoverCardPrimitive.Portal, { container: resolved ?? null, children: /* @__PURE__ */ jsx38(
3675
+ return /* @__PURE__ */ jsx40(HoverCardPrimitive.Portal, { container: resolved ?? null, children: /* @__PURE__ */ jsx40(
3571
3676
  HoverCardPrimitive.Content,
3572
3677
  {
3573
3678
  ref,
@@ -3588,9 +3693,9 @@ HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
3588
3693
 
3589
3694
  // src/radio-group.tsx
3590
3695
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
3591
- import * as React31 from "react";
3592
- import { jsx as jsx39 } from "react/jsx-runtime";
3593
- var RadioGroupSizeContext = React31.createContext("md");
3696
+ import * as React32 from "react";
3697
+ import { jsx as jsx41 } from "react/jsx-runtime";
3698
+ var RadioGroupSizeContext = React32.createContext("md");
3594
3699
  var CONTROL_CLASSES = {
3595
3700
  sm: "h-3.5 w-3.5",
3596
3701
  md: "h-4 w-4",
@@ -3601,7 +3706,7 @@ var DOT_CLASSES = {
3601
3706
  md: "h-1.5 w-1.5",
3602
3707
  lg: "h-2 w-2"
3603
3708
  };
3604
- var RadioGroup3 = React31.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ jsx39(RadioGroupSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx39(
3709
+ var RadioGroup3 = React32.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ jsx41(RadioGroupSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx41(
3605
3710
  RadioGroupPrimitive.Root,
3606
3711
  {
3607
3712
  ref,
@@ -3611,10 +3716,10 @@ var RadioGroup3 = React31.forwardRef(({ className, size = "md", ...props }, ref)
3611
3716
  }
3612
3717
  ) }));
3613
3718
  RadioGroup3.displayName = RadioGroupPrimitive.Root.displayName;
3614
- var RadioGroupItem = React31.forwardRef(({ className, size, ...props }, ref) => {
3615
- const groupSize = React31.useContext(RadioGroupSizeContext);
3719
+ var RadioGroupItem = React32.forwardRef(({ className, size, ...props }, ref) => {
3720
+ const groupSize = React32.useContext(RadioGroupSizeContext);
3616
3721
  const resolved = size ?? groupSize;
3617
- return /* @__PURE__ */ jsx39(
3722
+ return /* @__PURE__ */ jsx41(
3618
3723
  RadioGroupPrimitive.Item,
3619
3724
  {
3620
3725
  ref,
@@ -3631,7 +3736,7 @@ var RadioGroupItem = React31.forwardRef(({ className, size, ...props }, ref) =>
3631
3736
  className
3632
3737
  ),
3633
3738
  ...props,
3634
- children: /* @__PURE__ */ jsx39(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx39(
3739
+ children: /* @__PURE__ */ jsx41(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx41(
3635
3740
  "div",
3636
3741
  {
3637
3742
  className: cn("rounded-full bg-primary-foreground", DOT_CLASSES[resolved])
@@ -3644,7 +3749,7 @@ RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
3644
3749
 
3645
3750
  // src/resizable.tsx
3646
3751
  import { Group as Group4, Panel, Separator as Separator5 } from "react-resizable-panels";
3647
- import { jsx as jsx40 } from "react/jsx-runtime";
3752
+ import { jsx as jsx42 } from "react/jsx-runtime";
3648
3753
  var HANDLE_SIZES = {
3649
3754
  xs: "w-0.5 [&[aria-orientation=horizontal]]:h-0.5 [&[aria-orientation=horizontal]]:w-full",
3650
3755
  sm: "w-1 [&[aria-orientation=horizontal]]:h-1 [&[aria-orientation=horizontal]]:w-full",
@@ -3658,7 +3763,7 @@ var HANDLE_SIZES = {
3658
3763
  var ResizablePanelGroup = ({
3659
3764
  className,
3660
3765
  ...props
3661
- }) => /* @__PURE__ */ jsx40(
3766
+ }) => /* @__PURE__ */ jsx42(
3662
3767
  Group4,
3663
3768
  {
3664
3769
  "data-slot": "resizable-group",
@@ -3673,7 +3778,7 @@ var ResizableHandle = ({
3673
3778
  size = "xs",
3674
3779
  className,
3675
3780
  ...props
3676
- }) => /* @__PURE__ */ jsx40(
3781
+ }) => /* @__PURE__ */ jsx42(
3677
3782
  Separator5,
3678
3783
  {
3679
3784
  "data-slot": "resizable-handle",
@@ -3693,15 +3798,15 @@ var ResizableHandle = ({
3693
3798
  className
3694
3799
  ),
3695
3800
  ...props,
3696
- children: withHandle ? /* @__PURE__ */ jsx40("div", { className: "z-10 flex h-8 w-4 items-center justify-center rounded-sm border bg-border group-aria-[orientation=horizontal]/handle:h-4 group-aria-[orientation=horizontal]/handle:w-8", children: /* @__PURE__ */ jsx40(DragHandleDots2Icon, { className: "h-2.5 w-2.5 group-aria-[orientation=horizontal]/handle:rotate-90" }) }) : null
3801
+ children: withHandle ? /* @__PURE__ */ jsx42("div", { className: "z-10 flex h-8 w-4 items-center justify-center rounded-sm border bg-border group-aria-[orientation=horizontal]/handle:h-4 group-aria-[orientation=horizontal]/handle:w-8", children: /* @__PURE__ */ jsx42(DragHandleDots2Icon, { className: "h-2.5 w-2.5 group-aria-[orientation=horizontal]/handle:rotate-90" }) }) : null
3697
3802
  }
3698
3803
  );
3699
3804
  ResizableHandle.displayName = "ResizableHandle";
3700
3805
 
3701
3806
  // src/slider.tsx
3702
3807
  import * as SliderPrimitive from "@radix-ui/react-slider";
3703
- import * as React32 from "react";
3704
- import { jsx as jsx41, jsxs as jsxs20 } from "react/jsx-runtime";
3808
+ import * as React33 from "react";
3809
+ import { jsx as jsx43, jsxs as jsxs21 } from "react/jsx-runtime";
3705
3810
  var TRACK_CLASSES = {
3706
3811
  sm: "h-1",
3707
3812
  md: "h-1.5",
@@ -3712,12 +3817,12 @@ var THUMB_CLASSES = {
3712
3817
  md: "h-4 w-4",
3713
3818
  lg: "h-5 w-5"
3714
3819
  };
3715
- var Slider = React32.forwardRef(({ className, size = "md", ...props }, ref) => {
3820
+ var Slider = React33.forwardRef(({ className, size = "md", ...props }, ref) => {
3716
3821
  const thumbCount = Math.max(
3717
3822
  1,
3718
3823
  (props.value ?? props.defaultValue ?? [0]).length
3719
3824
  );
3720
- return /* @__PURE__ */ jsxs20(
3825
+ return /* @__PURE__ */ jsxs21(
3721
3826
  SliderPrimitive.Root,
3722
3827
  {
3723
3828
  ref,
@@ -3729,7 +3834,7 @@ var Slider = React32.forwardRef(({ className, size = "md", ...props }, ref) => {
3729
3834
  ),
3730
3835
  ...props,
3731
3836
  children: [
3732
- /* @__PURE__ */ jsx41(
3837
+ /* @__PURE__ */ jsx43(
3733
3838
  SliderPrimitive.Track,
3734
3839
  {
3735
3840
  "data-slot": "slider-track",
@@ -3738,7 +3843,7 @@ var Slider = React32.forwardRef(({ className, size = "md", ...props }, ref) => {
3738
3843
  TRACK_CLASSES[size],
3739
3844
  "data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"
3740
3845
  ),
3741
- children: /* @__PURE__ */ jsx41(
3846
+ children: /* @__PURE__ */ jsx43(
3742
3847
  SliderPrimitive.Range,
3743
3848
  {
3744
3849
  "data-slot": "slider-range",
@@ -3747,7 +3852,7 @@ var Slider = React32.forwardRef(({ className, size = "md", ...props }, ref) => {
3747
3852
  )
3748
3853
  }
3749
3854
  ),
3750
- Array.from({ length: thumbCount }, (_, index) => /* @__PURE__ */ jsx41(
3855
+ Array.from({ length: thumbCount }, (_, index) => /* @__PURE__ */ jsx43(
3751
3856
  SliderPrimitive.Thumb,
3752
3857
  {
3753
3858
  "data-slot": "slider-thumb",
@@ -3774,8 +3879,8 @@ Slider.displayName = SliderPrimitive.Root.displayName;
3774
3879
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
3775
3880
  import * as TogglePrimitive from "@radix-ui/react-toggle";
3776
3881
  import { cva as cva6 } from "class-variance-authority";
3777
- import * as React33 from "react";
3778
- import { jsx as jsx42 } from "react/jsx-runtime";
3882
+ import * as React34 from "react";
3883
+ import { jsx as jsx44 } from "react/jsx-runtime";
3779
3884
  var toggleVariants = cva6(
3780
3885
  "inline-flex cursor-pointer items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
3781
3886
  {
@@ -3796,7 +3901,7 @@ var toggleVariants = cva6(
3796
3901
  }
3797
3902
  }
3798
3903
  );
3799
- var Toggle = React33.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx42(
3904
+ var Toggle = React34.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx44(
3800
3905
  TogglePrimitive.Root,
3801
3906
  {
3802
3907
  ref,
@@ -3806,21 +3911,21 @@ var Toggle = React33.forwardRef(({ className, variant, size, ...props }, ref) =>
3806
3911
  }
3807
3912
  ));
3808
3913
  Toggle.displayName = TogglePrimitive.Root.displayName;
3809
- var ToggleGroupContext = React33.createContext({ size: "default", variant: "default" });
3810
- var ToggleGroup = React33.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx42(
3914
+ var ToggleGroupContext = React34.createContext({ size: "default", variant: "default" });
3915
+ var ToggleGroup = React34.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx44(
3811
3916
  ToggleGroupPrimitive.Root,
3812
3917
  {
3813
3918
  ref,
3814
3919
  "data-slot": "toggle-group",
3815
3920
  className: cn("flex items-center justify-center gap-1", className),
3816
3921
  ...props,
3817
- children: /* @__PURE__ */ jsx42(ToggleGroupContext.Provider, { value: { variant, size }, children })
3922
+ children: /* @__PURE__ */ jsx44(ToggleGroupContext.Provider, { value: { variant, size }, children })
3818
3923
  }
3819
3924
  ));
3820
3925
  ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
3821
- var ToggleGroupItem = React33.forwardRef(({ className, children, variant, size, ...props }, ref) => {
3822
- const context = React33.useContext(ToggleGroupContext);
3823
- return /* @__PURE__ */ jsx42(
3926
+ var ToggleGroupItem = React34.forwardRef(({ className, children, variant, size, ...props }, ref) => {
3927
+ const context = React34.useContext(ToggleGroupContext);
3928
+ return /* @__PURE__ */ jsx44(
3824
3929
  ToggleGroupPrimitive.Item,
3825
3930
  {
3826
3931
  ref,
@@ -3841,14 +3946,14 @@ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
3841
3946
 
3842
3947
  // src/tooltip.tsx
3843
3948
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
3844
- import * as React34 from "react";
3845
- import { jsx as jsx43 } from "react/jsx-runtime";
3949
+ import * as React35 from "react";
3950
+ import { jsx as jsx45 } from "react/jsx-runtime";
3846
3951
  var TooltipProvider = TooltipPrimitive.Provider;
3847
3952
  var Tooltip = TooltipPrimitive.Root;
3848
3953
  var TooltipTrigger = TooltipPrimitive.Trigger;
3849
- var TooltipContent = React34.forwardRef(({ className, sideOffset = 4, container, animated = true, ...props }, ref) => {
3954
+ var TooltipContent = React35.forwardRef(({ className, sideOffset = 4, container, animated = true, ...props }, ref) => {
3850
3955
  const resolved = usePortalContainer(container);
3851
- return /* @__PURE__ */ jsx43(TooltipPrimitive.Portal, { container: resolved ?? null, children: /* @__PURE__ */ jsx43(
3956
+ return /* @__PURE__ */ jsx45(TooltipPrimitive.Portal, { container: resolved ?? null, children: /* @__PURE__ */ jsx45(
3852
3957
  TooltipPrimitive.Content,
3853
3958
  {
3854
3959
  ref,
@@ -3896,7 +4001,6 @@ export {
3896
4001
  BottomSheetFooter,
3897
4002
  BottomSheetHeader,
3898
4003
  Button,
3899
- CENTERED_DIALOG,
3900
4004
  Card,
3901
4005
  CardAction,
3902
4006
  CardContent,
@@ -3917,6 +4021,8 @@ export {
3917
4021
  CommandList,
3918
4022
  CommandSeparator,
3919
4023
  CommandShortcut,
4024
+ ConfirmDialog,
4025
+ ConfirmDialogHost,
3920
4026
  ContextMenu,
3921
4027
  ContextMenuCheckboxItem,
3922
4028
  ContextMenuContent,
@@ -3990,7 +4096,6 @@ export {
3990
4096
  MOTION_SHEET,
3991
4097
  MOTION_SPIN,
3992
4098
  OverflowToolbar,
3993
- POPPER_OFFSET,
3994
4099
  Popover,
3995
4100
  PopoverAnchor,
3996
4101
  PopoverContent,