@ai-matrx/design-system 0.13.0 → 0.14.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.cjs CHANGED
@@ -34,6 +34,7 @@ __export(src_exports, {
34
34
  ALL_MOTION_CLASSES: () => ALL_MOTION_CLASSES,
35
35
  ARCHIVE_FILTER_LABELS: () => ARCHIVE_FILTER_LABELS,
36
36
  ARCHIVE_FILTER_VALUES: () => ARCHIVE_FILTER_VALUES,
37
+ ARCHIVE_LABEL: () => ARCHIVE_LABEL,
37
38
  Accordion: () => Accordion,
38
39
  AccordionContent: () => AccordionContent,
39
40
  AccordionItem: () => AccordionItem,
@@ -54,6 +55,7 @@ __export(src_exports, {
54
55
  AlertDialogTrigger: () => AlertDialogTrigger,
55
56
  AlertTitle: () => AlertTitle,
56
57
  ArchiveFilter: () => ArchiveFilter,
58
+ ArchivedDisclosure: () => ArchivedDisclosure,
57
59
  Avatar: () => Avatar,
58
60
  AvatarFallback: () => AvatarFallback,
59
61
  AvatarImage: () => AvatarImage,
@@ -229,6 +231,7 @@ __export(src_exports, {
229
231
  TooltipProvider: () => TooltipProvider,
230
232
  TooltipTrigger: () => TooltipTrigger,
231
233
  alertVariants: () => alertVariants,
234
+ archiveFilterFromDisclosure: () => archiveFilterFromDisclosure,
232
235
  badgeVariants: () => badgeVariants,
233
236
  buttonVariants: () => buttonVariants,
234
237
  cn: () => cn,
@@ -285,6 +288,16 @@ function ChevronLeftIcon(props) {
285
288
  function ChevronRightIcon(props) {
286
289
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { ...lucideProps(props), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "m9 18 6-6-6-6" }) });
287
290
  }
291
+ function ChevronDownIcon(props) {
292
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { ...lucideProps(props), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "m6 9 6 6 6-6" }) });
293
+ }
294
+ function ArchiveIcon(props) {
295
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { ...lucideProps(props), children: [
296
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { width: "20", height: "5", x: "2", y: "3", rx: "1" }),
297
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8" }),
298
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M10 12h4" })
299
+ ] });
300
+ }
288
301
  function MoreHorizontalIcon(props) {
289
302
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { ...lucideProps(props), children: [
290
303
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "12", cy: "12", r: "1" }),
@@ -3159,11 +3172,15 @@ var React24 = __toESM(require("react"), 1);
3159
3172
  var import_jsx_runtime31 = require("react/jsx-runtime");
3160
3173
  var ARCHIVE_FILTER_VALUES = ["active", "archived", "all"];
3161
3174
  var DEFAULT_ARCHIVE_FILTER = "active";
3175
+ var ARCHIVE_LABEL = "Archived";
3162
3176
  var ARCHIVE_FILTER_LABELS = {
3163
3177
  active: "Active only",
3164
- archived: "Archived only",
3178
+ archived: `${ARCHIVE_LABEL} only`,
3165
3179
  all: "Active + archived"
3166
3180
  };
3181
+ function archiveFilterFromDisclosure(open) {
3182
+ return open ? "all" : DEFAULT_ARCHIVE_FILTER;
3183
+ }
3167
3184
  function toArchiveFilter(value, fallback = DEFAULT_ARCHIVE_FILTER) {
3168
3185
  return ARCHIVE_FILTER_VALUES.includes(value) ? value : fallback;
3169
3186
  }
@@ -3203,11 +3220,45 @@ function ArchiveFilter({
3203
3220
  ) });
3204
3221
  }
3205
3222
 
3223
+ // src/archived-disclosure.tsx
3224
+ var import_jsx_runtime32 = require("react/jsx-runtime");
3225
+ function ArchivedDisclosure({
3226
+ count,
3227
+ open,
3228
+ onOpenChange,
3229
+ children,
3230
+ label = ARCHIVE_LABEL,
3231
+ countLabel,
3232
+ keepWhileOpen = false,
3233
+ className,
3234
+ contentClassName
3235
+ }) {
3236
+ if (count <= 0 && !(open && keepWhileOpen)) return null;
3237
+ const parenthetical = countLabel === void 0 ? String(count) : countLabel;
3238
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: cn("min-w-0", className), children: [
3239
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
3240
+ "button",
3241
+ {
3242
+ type: "button",
3243
+ onClick: () => onOpenChange(!open),
3244
+ "aria-expanded": open,
3245
+ className: "flex w-full items-center gap-2 rounded-lg px-2 py-2 text-sm text-muted-foreground hover:bg-accent active:bg-accent",
3246
+ children: [
3247
+ open ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ChevronDownIcon, { className: "h-4 w-4 shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ChevronRightIcon, { className: "h-4 w-4 shrink-0" }),
3248
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ArchiveIcon, { className: "h-4 w-4 shrink-0" }),
3249
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "truncate", children: parenthetical === null ? label : `${label} (${parenthetical})` })
3250
+ ]
3251
+ }
3252
+ ),
3253
+ open && children ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: cn("mt-1", contentClassName), children }) : null
3254
+ ] });
3255
+ }
3256
+
3206
3257
  // src/select.tsx
3207
3258
  var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
3208
3259
  var import_class_variance_authority4 = require("class-variance-authority");
3209
3260
  var React25 = __toESM(require("react"), 1);
3210
- var import_jsx_runtime32 = require("react/jsx-runtime");
3261
+ var import_jsx_runtime33 = require("react/jsx-runtime");
3211
3262
  var Select = SelectPrimitive.Root;
3212
3263
  var SelectGroup = SelectPrimitive.Group;
3213
3264
  var SelectValue = SelectPrimitive.Value;
@@ -3226,7 +3277,7 @@ var selectTriggerVariants = (0, import_class_variance_authority4.cva)(
3226
3277
  }
3227
3278
  }
3228
3279
  );
3229
- var SelectTrigger = React25.forwardRef(({ className, children, hideArrow = false, size, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
3280
+ var SelectTrigger = React25.forwardRef(({ className, children, hideArrow = false, size, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
3230
3281
  SelectPrimitive.Trigger,
3231
3282
  {
3232
3283
  ref,
@@ -3234,12 +3285,12 @@ var SelectTrigger = React25.forwardRef(({ className, children, hideArrow = false
3234
3285
  ...props,
3235
3286
  children: [
3236
3287
  children,
3237
- !hideArrow && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixChevronDownIcon, { className: "h-4 w-4 opacity-50" }) })
3288
+ !hideArrow && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(RadixChevronDownIcon, { className: "h-4 w-4 opacity-50" }) })
3238
3289
  ]
3239
3290
  }
3240
3291
  ));
3241
3292
  SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
3242
- var SelectScrollUpButton = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3293
+ var SelectScrollUpButton = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3243
3294
  SelectPrimitive.ScrollUpButton,
3244
3295
  {
3245
3296
  ref,
@@ -3248,11 +3299,11 @@ var SelectScrollUpButton = React25.forwardRef(({ className, ...props }, ref) =>
3248
3299
  className
3249
3300
  ),
3250
3301
  ...props,
3251
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixChevronUpIcon, {})
3302
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(RadixChevronUpIcon, {})
3252
3303
  }
3253
3304
  ));
3254
3305
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
3255
- var SelectScrollDownButton = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3306
+ var SelectScrollDownButton = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3256
3307
  SelectPrimitive.ScrollDownButton,
3257
3308
  {
3258
3309
  ref,
@@ -3261,7 +3312,7 @@ var SelectScrollDownButton = React25.forwardRef(({ className, ...props }, ref) =
3261
3312
  className
3262
3313
  ),
3263
3314
  ...props,
3264
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(RadixChevronDownIcon, {})
3315
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(RadixChevronDownIcon, {})
3265
3316
  }
3266
3317
  ));
3267
3318
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
@@ -3275,7 +3326,7 @@ var SelectContent = React25.forwardRef(
3275
3326
  ...props
3276
3327
  }, ref) => {
3277
3328
  const portalContainer = usePortalContainer(container);
3278
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
3329
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SelectPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
3279
3330
  SelectPrimitive.Content,
3280
3331
  {
3281
3332
  ref,
@@ -3293,8 +3344,8 @@ var SelectContent = React25.forwardRef(
3293
3344
  position,
3294
3345
  ...props,
3295
3346
  children: [
3296
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectScrollUpButton, {}),
3297
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3347
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SelectScrollUpButton, {}),
3348
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3298
3349
  SelectPrimitive.Viewport,
3299
3350
  {
3300
3351
  className: cn(
@@ -3304,14 +3355,14 @@ var SelectContent = React25.forwardRef(
3304
3355
  children
3305
3356
  }
3306
3357
  ),
3307
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectScrollDownButton, {})
3358
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SelectScrollDownButton, {})
3308
3359
  ]
3309
3360
  }
3310
3361
  ) });
3311
3362
  }
3312
3363
  );
3313
3364
  SelectContent.displayName = SelectPrimitive.Content.displayName;
3314
- var SelectLabel = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3365
+ var SelectLabel = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3315
3366
  SelectPrimitive.Label,
3316
3367
  {
3317
3368
  ref,
@@ -3320,7 +3371,7 @@ var SelectLabel = React25.forwardRef(({ className, ...props }, ref) => /* @__PUR
3320
3371
  }
3321
3372
  ));
3322
3373
  SelectLabel.displayName = SelectPrimitive.Label.displayName;
3323
- var SelectItem = React25.forwardRef(({ className, children, description, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
3374
+ var SelectItem = React25.forwardRef(({ className, children, description, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
3324
3375
  SelectPrimitive.Item,
3325
3376
  {
3326
3377
  ref,
@@ -3331,14 +3382,14 @@ var SelectItem = React25.forwardRef(({ className, children, description, ...prop
3331
3382
  ),
3332
3383
  ...props,
3333
3384
  children: [
3334
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(CheckIcon, { className: "h-4 w-4" }) }) }),
3335
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectPrimitive.ItemText, { children }),
3336
- description ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "block text-xs leading-snug text-muted-foreground", children: description }) : null
3385
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CheckIcon, { className: "h-4 w-4" }) }) }),
3386
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SelectPrimitive.ItemText, { children }),
3387
+ description ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "block text-xs leading-snug text-muted-foreground", children: description }) : null
3337
3388
  ]
3338
3389
  }
3339
3390
  ));
3340
3391
  SelectItem.displayName = SelectPrimitive.Item.displayName;
3341
- var SelectSeparator = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3392
+ var SelectSeparator = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3342
3393
  SelectPrimitive.Separator,
3343
3394
  {
3344
3395
  ref,
@@ -3351,8 +3402,8 @@ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
3351
3402
  // src/separator.tsx
3352
3403
  var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"), 1);
3353
3404
  var React26 = __toESM(require("react"), 1);
3354
- var import_jsx_runtime33 = require("react/jsx-runtime");
3355
- var Separator4 = React26.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3405
+ var import_jsx_runtime34 = require("react/jsx-runtime");
3406
+ var Separator4 = React26.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3356
3407
  SeparatorPrimitive.Root,
3357
3408
  {
3358
3409
  ref,
@@ -3373,10 +3424,10 @@ var SheetPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
3373
3424
  var import_react_tree4 = require("@ai-matrx/kit/react-tree");
3374
3425
  var import_class_variance_authority5 = require("class-variance-authority");
3375
3426
  var React27 = __toESM(require("react"), 1);
3376
- var import_jsx_runtime34 = require("react/jsx-runtime");
3427
+ var import_jsx_runtime35 = require("react/jsx-runtime");
3377
3428
  var SheetContentBase = React27.forwardRef(({ ...props }, ref) => {
3378
3429
  const isModal = useRadixDialogModal();
3379
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3430
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3380
3431
  SheetPrimitive.Content,
3381
3432
  {
3382
3433
  ...props,
@@ -3388,13 +3439,13 @@ var SheetContentBase = React27.forwardRef(({ ...props }, ref) => {
3388
3439
  SheetContentBase.displayName = "SheetContentBase";
3389
3440
  var Sheet = React27.forwardRef(({ children, ...props }, _ref) => {
3390
3441
  const modal = props.modal ?? true;
3391
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(RadixDialogModalProvider, { modal, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SheetPrimitive.Root, { ...props, modal, children }) });
3442
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(RadixDialogModalProvider, { modal, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SheetPrimitive.Root, { ...props, modal, children }) });
3392
3443
  });
3393
3444
  Sheet.displayName = "Sheet";
3394
3445
  var SheetTrigger = SheetPrimitive.Trigger;
3395
3446
  var SheetClose = SheetPrimitive.Close;
3396
3447
  var SheetPortal = SheetPrimitive.Portal;
3397
- var SheetOverlay = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3448
+ var SheetOverlay = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3398
3449
  SheetPrimitive.Overlay,
3399
3450
  {
3400
3451
  className: cn(
@@ -3431,7 +3482,7 @@ var sheetVariants = (0, import_class_variance_authority5.cva)(
3431
3482
  }
3432
3483
  }
3433
3484
  );
3434
- var SheetDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3485
+ var SheetDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3435
3486
  SheetPrimitive.Description,
3436
3487
  {
3437
3488
  ref,
@@ -3452,9 +3503,9 @@ var SheetContent = React27.forwardRef(
3452
3503
  ...props
3453
3504
  }, ref) => {
3454
3505
  const hasDescription = (0, import_react_tree4.treeContainsComponent)(children, SheetDescription) || (0, import_react_tree4.treeContainsComponent)(children, SheetPrimitive.Description);
3455
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(SheetPortal, { children: [
3456
- !hideOverlay && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SheetOverlay, { className: overlayClassName }),
3457
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
3506
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(SheetPortal, { children: [
3507
+ !hideOverlay && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SheetOverlay, { className: overlayClassName }),
3508
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
3458
3509
  SheetContentBase,
3459
3510
  {
3460
3511
  ref,
@@ -3466,9 +3517,9 @@ var SheetContent = React27.forwardRef(
3466
3517
  ...hasDescription ? {} : { "aria-describedby": void 0 },
3467
3518
  ...props,
3468
3519
  children: [
3469
- !hideCloseButton && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(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: [
3470
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Cross2Icon, { className: "h-4 w-4" }),
3471
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "sr-only", children: "Close" })
3520
+ !hideCloseButton && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(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: [
3521
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Cross2Icon, { className: "h-4 w-4" }),
3522
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "sr-only", children: "Close" })
3472
3523
  ] }),
3473
3524
  children
3474
3525
  ]
@@ -3481,7 +3532,7 @@ SheetContent.displayName = SheetPrimitive.Content.displayName;
3481
3532
  var SheetHeader = ({
3482
3533
  className,
3483
3534
  ...props
3484
- }) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3535
+ }) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3485
3536
  "div",
3486
3537
  {
3487
3538
  className: cn(
@@ -3495,7 +3546,7 @@ SheetHeader.displayName = "SheetHeader";
3495
3546
  var SheetFooter = ({
3496
3547
  className,
3497
3548
  ...props
3498
- }) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3549
+ }) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3499
3550
  "div",
3500
3551
  {
3501
3552
  "data-slot": "sheet-footer",
@@ -3507,7 +3558,7 @@ var SheetFooter = ({
3507
3558
  }
3508
3559
  );
3509
3560
  SheetFooter.displayName = "SheetFooter";
3510
- var SheetTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3561
+ var SheetTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3511
3562
  SheetPrimitive.Title,
3512
3563
  {
3513
3564
  ref,
@@ -3518,9 +3569,9 @@ var SheetTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE
3518
3569
  SheetTitle.displayName = SheetPrimitive.Title.displayName;
3519
3570
 
3520
3571
  // src/skeleton.tsx
3521
- var import_jsx_runtime35 = require("react/jsx-runtime");
3572
+ var import_jsx_runtime36 = require("react/jsx-runtime");
3522
3573
  function Skeleton({ className, animated = true, ...props }) {
3523
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3574
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3524
3575
  "div",
3525
3576
  {
3526
3577
  "data-slot": "skeleton",
@@ -3537,7 +3588,7 @@ function Skeleton({ className, animated = true, ...props }) {
3537
3588
  // src/switch.tsx
3538
3589
  var SwitchPrimitives = __toESM(require("@radix-ui/react-switch"), 1);
3539
3590
  var React28 = __toESM(require("react"), 1);
3540
- var import_jsx_runtime36 = require("react/jsx-runtime");
3591
+ var import_jsx_runtime37 = require("react/jsx-runtime");
3541
3592
  var SWITCH_SIZES = {
3542
3593
  sm: {
3543
3594
  root: "h-4 w-9 border-border data-[state=unchecked]:bg-input",
@@ -3548,7 +3599,7 @@ var SWITCH_SIZES = {
3548
3599
  thumb: "h-4 w-4 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0"
3549
3600
  }
3550
3601
  };
3551
- var Switch = React28.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3602
+ var Switch = React28.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3552
3603
  SwitchPrimitives.Root,
3553
3604
  {
3554
3605
  ref,
@@ -3559,7 +3610,7 @@ var Switch = React28.forwardRef(({ className, size = "md", ...props }, ref) => /
3559
3610
  className
3560
3611
  ),
3561
3612
  ...props,
3562
- children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3613
+ children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3563
3614
  SwitchPrimitives.Thumb,
3564
3615
  {
3565
3616
  "data-slot": "switch-thumb",
@@ -3574,14 +3625,14 @@ var Switch = React28.forwardRef(({ className, size = "md", ...props }, ref) => /
3574
3625
  Switch.displayName = SwitchPrimitives.Root.displayName;
3575
3626
 
3576
3627
  // src/organization-picker.tsx
3577
- var import_jsx_runtime37 = require("react/jsx-runtime");
3628
+ var import_jsx_runtime38 = require("react/jsx-runtime");
3578
3629
  function OrganizationAbbreviation({
3579
3630
  abbreviation,
3580
3631
  name,
3581
3632
  className
3582
3633
  }) {
3583
3634
  const mark = abbreviation && abbreviation.trim() || name.trim().slice(0, 1) || "?";
3584
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3635
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3585
3636
  "span",
3586
3637
  {
3587
3638
  className: cn(
@@ -3608,20 +3659,20 @@ function OrganizationPicker({
3608
3659
  }) {
3609
3660
  const active = organizations.find((o) => o.id === activeOrganizationId) ?? null;
3610
3661
  const isDefault = (id) => !!defaultOrganizationId && id === defaultOrganizationId;
3611
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: cn("flex flex-col", className), "data-slot": "organization-picker", children: [
3612
- !hideHeading && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "px-2 py-1.5 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground", children: "Organization" }),
3613
- loading ? /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "space-y-1 px-1 py-1", "aria-busy": "true", "aria-label": "Loading organizations", children: [
3614
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Skeleton, { className: "h-7 rounded-md" }),
3615
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Skeleton, { className: "h-7 rounded-md" })
3616
- ] }) : loadFailed ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "px-2 py-2 text-xs text-destructive", role: "alert", children: "Could not load organizations." }) : organizations.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "px-2 py-2 text-xs text-muted-foreground", children: "Your account is not a member of any organization. Ask an administrator to add you to one." }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
3617
- active ? /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("p", { className: "px-2 pb-1 text-[11px] text-muted-foreground", "data-slot": "organization-picker-status", children: [
3662
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: cn("flex flex-col", className), "data-slot": "organization-picker", children: [
3663
+ !hideHeading && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "px-2 py-1.5 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground", children: "Organization" }),
3664
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "space-y-1 px-1 py-1", "aria-busy": "true", "aria-label": "Loading organizations", children: [
3665
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Skeleton, { className: "h-7 rounded-md" }),
3666
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Skeleton, { className: "h-7 rounded-md" })
3667
+ ] }) : loadFailed ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "px-2 py-2 text-xs text-destructive", role: "alert", children: "Could not load organizations." }) : organizations.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "px-2 py-2 text-xs text-muted-foreground", children: "Your account is not a member of any organization. Ask an administrator to add you to one." }) : /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
3668
+ active ? /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("p", { className: "px-2 pb-1 text-[11px] text-muted-foreground", "data-slot": "organization-picker-status", children: [
3618
3669
  "Working in",
3619
3670
  " ",
3620
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "font-medium text-foreground", children: active.name })
3621
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "px-2 pb-1 text-[11px] text-destructive", "data-slot": "organization-picker-status", children: "No organization selected \u2014 pick one below." }),
3622
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("ul", { className: "max-h-72 overflow-y-auto", role: "listbox", "aria-label": "Organizations", children: organizations.map((org) => {
3671
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "font-medium text-foreground", children: active.name })
3672
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "px-2 pb-1 text-[11px] text-destructive", "data-slot": "organization-picker-status", children: "No organization selected \u2014 pick one below." }),
3673
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("ul", { className: "max-h-72 overflow-y-auto", role: "listbox", "aria-label": "Organizations", children: organizations.map((org) => {
3623
3674
  const isActive = org.id === activeOrganizationId;
3624
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("li", { role: "none", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
3675
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("li", { role: "none", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
3625
3676
  "button",
3626
3677
  {
3627
3678
  type: "button",
@@ -3638,7 +3689,7 @@ function OrganizationPicker({
3638
3689
  itemClassName
3639
3690
  ),
3640
3691
  children: [
3641
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3692
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3642
3693
  OrganizationAbbreviation,
3643
3694
  {
3644
3695
  abbreviation: org.abbreviation,
@@ -3649,9 +3700,9 @@ function OrganizationPicker({
3649
3700
  )
3650
3701
  }
3651
3702
  ),
3652
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "min-w-0 flex-1 truncate", children: org.name }),
3653
- org.isPersonal && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "shrink-0 rounded-full bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground", children: "Personal" }),
3654
- isDefault(org.id) && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3703
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "min-w-0 flex-1 truncate", children: org.name }),
3704
+ org.isPersonal && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "shrink-0 rounded-full bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground", children: "Personal" }),
3705
+ isDefault(org.id) && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3655
3706
  StarIcon,
3656
3707
  {
3657
3708
  className: "h-[13px] w-[13px] shrink-0 fill-warning text-warning",
@@ -3660,14 +3711,14 @@ function OrganizationPicker({
3660
3711
  role: "img"
3661
3712
  }
3662
3713
  ),
3663
- isActive && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(LucideCheckIcon, { className: "h-[15px] w-[15px] shrink-0 text-primary" })
3714
+ isActive && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(LucideCheckIcon, { className: "h-[15px] w-[15px] shrink-0 text-primary" })
3664
3715
  ]
3665
3716
  }
3666
3717
  ) }, org.id);
3667
3718
  }) }),
3668
- onSetDefault && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
3669
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "my-1 border-t border-border" }),
3670
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3719
+ onSetDefault && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
3720
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "my-1 border-t border-border" }),
3721
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3671
3722
  DefaultOrganizationSwitch,
3672
3723
  {
3673
3724
  active,
@@ -3685,17 +3736,17 @@ function DefaultOrganizationSwitch({
3685
3736
  onChange
3686
3737
  }) {
3687
3738
  const disabled = !active;
3688
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
3739
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
3689
3740
  "div",
3690
3741
  {
3691
3742
  className: "flex items-center justify-between gap-3 rounded-md px-2 py-1.5",
3692
3743
  "data-slot": "organization-picker-default",
3693
3744
  children: [
3694
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "min-w-0", children: [
3695
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-xs font-medium text-foreground", children: "Set as my default" }),
3696
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "truncate text-[11px] text-muted-foreground", children: disabled ? "Select an organization first" : checked ? `Next startup opens ${active.name}` : "Auto-select this at startup" })
3745
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "min-w-0", children: [
3746
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-xs font-medium text-foreground", children: "Set as my default" }),
3747
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "truncate text-[11px] text-muted-foreground", children: disabled ? "Select an organization first" : checked ? `Next startup opens ${active.name}` : "Auto-select this at startup" })
3697
3748
  ] }),
3698
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3749
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3699
3750
  Switch,
3700
3751
  {
3701
3752
  checked,
@@ -3711,7 +3762,7 @@ function DefaultOrganizationSwitch({
3711
3762
 
3712
3763
  // src/tabbed-bottom-sheet.tsx
3713
3764
  var import_react4 = require("react");
3714
- var import_jsx_runtime38 = require("react/jsx-runtime");
3765
+ var import_jsx_runtime39 = require("react/jsx-runtime");
3715
3766
  function TabbedBottomSheet({
3716
3767
  open,
3717
3768
  onOpenChange,
@@ -3725,15 +3776,15 @@ function TabbedBottomSheet({
3725
3776
  if (open) setSelectedTabId(null);
3726
3777
  }
3727
3778
  const selectedTab = selectedTabId ? tabs.find((tab) => tab.id === selectedTabId) : null;
3728
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3779
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3729
3780
  BottomSheet,
3730
3781
  {
3731
3782
  open,
3732
3783
  onOpenChange,
3733
3784
  title,
3734
3785
  size: "full",
3735
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "matrx-mobile-sheet flex min-h-0 flex-1 flex-col", children: [
3736
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3786
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "matrx-mobile-sheet flex min-h-0 flex-1 flex-col", children: [
3787
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3737
3788
  BottomSheetHeader,
3738
3789
  {
3739
3790
  title: selectedTab ? selectedTab.label : title,
@@ -3741,19 +3792,19 @@ function TabbedBottomSheet({
3741
3792
  onBack: () => setSelectedTabId(null)
3742
3793
  }
3743
3794
  ),
3744
- selectedTab ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "flex min-h-0 flex-1 flex-col overflow-hidden pb-safe", children: selectedTab.content }) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(BottomSheetBody, { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("ul", { className: "divide-y divide-border", children: tabs.map((tab) => {
3795
+ selectedTab ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "flex min-h-0 flex-1 flex-col overflow-hidden pb-safe", children: selectedTab.content }) : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(BottomSheetBody, { children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("ul", { className: "divide-y divide-border", children: tabs.map((tab) => {
3745
3796
  const Icon2 = tab.icon;
3746
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
3797
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
3747
3798
  "button",
3748
3799
  {
3749
3800
  type: "button",
3750
3801
  onClick: () => setSelectedTabId(tab.id),
3751
3802
  className: "flex w-full items-center gap-3 px-4 py-3.5 text-left transition-colors hover:bg-muted/60 active:bg-muted",
3752
3803
  children: [
3753
- Icon2 ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Icon2, { className: "h-5 w-5 shrink-0 text-muted-foreground" }) : null,
3754
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "min-w-0 flex-1 text-base text-foreground", children: tab.label }),
3804
+ Icon2 ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Icon2, { className: "h-5 w-5 shrink-0 text-muted-foreground" }) : null,
3805
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "min-w-0 flex-1 text-base text-foreground", children: tab.label }),
3755
3806
  tab.trailing,
3756
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ChevronRightIcon, { className: "h-5 w-5 shrink-0 text-muted-foreground" })
3807
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(ChevronRightIcon, { className: "h-5 w-5 shrink-0 text-muted-foreground" })
3757
3808
  ]
3758
3809
  }
3759
3810
  ) }, tab.id);
@@ -3765,7 +3816,7 @@ function TabbedBottomSheet({
3765
3816
 
3766
3817
  // src/table.tsx
3767
3818
  var React29 = __toESM(require("react"), 1);
3768
- var import_jsx_runtime39 = require("react/jsx-runtime");
3819
+ var import_jsx_runtime40 = require("react/jsx-runtime");
3769
3820
  var TABLE_SIZES = {
3770
3821
  sm: { head: "px-2", cell: "p-2" },
3771
3822
  md: { head: "px-3", cell: "p-3" }
@@ -3776,7 +3827,7 @@ function useTableSize() {
3776
3827
  }
3777
3828
  var Table = React29.forwardRef(
3778
3829
  ({ className, size = "md", wrap = true, wrapperClassName, ...props }, ref) => {
3779
- const table = /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3830
+ const table = /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3780
3831
  "table",
3781
3832
  {
3782
3833
  ref,
@@ -3786,7 +3837,7 @@ var Table = React29.forwardRef(
3786
3837
  ...props
3787
3838
  }
3788
3839
  );
3789
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(TableSizeContext.Provider, { value: size, children: wrap ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3840
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(TableSizeContext.Provider, { value: size, children: wrap ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3790
3841
  "div",
3791
3842
  {
3792
3843
  "data-slot": "table-wrapper",
@@ -3797,7 +3848,7 @@ var Table = React29.forwardRef(
3797
3848
  }
3798
3849
  );
3799
3850
  Table.displayName = "Table";
3800
- var TableHeader = React29.forwardRef(({ className, sticky = false, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3851
+ var TableHeader = React29.forwardRef(({ className, sticky = false, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3801
3852
  "thead",
3802
3853
  {
3803
3854
  ref,
@@ -3811,7 +3862,7 @@ var TableHeader = React29.forwardRef(({ className, sticky = false, ...props }, r
3811
3862
  }
3812
3863
  ));
3813
3864
  TableHeader.displayName = "TableHeader";
3814
- var TableBody = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3865
+ var TableBody = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3815
3866
  "tbody",
3816
3867
  {
3817
3868
  ref,
@@ -3821,7 +3872,7 @@ var TableBody = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE_
3821
3872
  }
3822
3873
  ));
3823
3874
  TableBody.displayName = "TableBody";
3824
- var TableFooter = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3875
+ var TableFooter = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3825
3876
  "tfoot",
3826
3877
  {
3827
3878
  ref,
@@ -3834,7 +3885,7 @@ var TableFooter = React29.forwardRef(({ className, ...props }, ref) => /* @__PUR
3834
3885
  }
3835
3886
  ));
3836
3887
  TableFooter.displayName = "TableFooter";
3837
- var TableRow = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3888
+ var TableRow = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3838
3889
  "tr",
3839
3890
  {
3840
3891
  ref,
@@ -3849,7 +3900,7 @@ var TableRow = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__
3849
3900
  TableRow.displayName = "TableRow";
3850
3901
  var TableHead = React29.forwardRef(({ className, ...props }, ref) => {
3851
3902
  const size = useTableSize();
3852
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3903
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3853
3904
  "th",
3854
3905
  {
3855
3906
  ref,
@@ -3866,7 +3917,7 @@ var TableHead = React29.forwardRef(({ className, ...props }, ref) => {
3866
3917
  TableHead.displayName = "TableHead";
3867
3918
  var TableCell = React29.forwardRef(({ className, ...props }, ref) => {
3868
3919
  const size = useTableSize();
3869
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3920
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3870
3921
  "td",
3871
3922
  {
3872
3923
  ref,
@@ -3881,7 +3932,7 @@ var TableCell = React29.forwardRef(({ className, ...props }, ref) => {
3881
3932
  );
3882
3933
  });
3883
3934
  TableCell.displayName = "TableCell";
3884
- var TableCaption = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3935
+ var TableCaption = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3885
3936
  "caption",
3886
3937
  {
3887
3938
  ref,
@@ -3895,10 +3946,10 @@ TableCaption.displayName = "TableCaption";
3895
3946
  // src/tabs.tsx
3896
3947
  var TabsPrimitive = __toESM(require("@radix-ui/react-tabs"), 1);
3897
3948
  var React30 = __toESM(require("react"), 1);
3898
- var import_jsx_runtime40 = require("react/jsx-runtime");
3949
+ var import_jsx_runtime41 = require("react/jsx-runtime");
3899
3950
  var Tabs = TabsPrimitive.Root;
3900
3951
  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";
3901
- var TabsList = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3952
+ var TabsList = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3902
3953
  TabsPrimitive.List,
3903
3954
  {
3904
3955
  ref,
@@ -3911,7 +3962,7 @@ var TabsList = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__
3911
3962
  }
3912
3963
  ));
3913
3964
  TabsList.displayName = TabsPrimitive.List.displayName;
3914
- var TabsTrigger = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3965
+ var TabsTrigger = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3915
3966
  TabsPrimitive.Trigger,
3916
3967
  {
3917
3968
  ref,
@@ -3925,7 +3976,7 @@ var TabsTrigger = React30.forwardRef(({ className, ...props }, ref) => /* @__PUR
3925
3976
  }
3926
3977
  ));
3927
3978
  TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
3928
- var TabsTriggerCore = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3979
+ var TabsTriggerCore = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3929
3980
  TabsPrimitive.Trigger,
3930
3981
  {
3931
3982
  ref,
@@ -3935,7 +3986,7 @@ var TabsTriggerCore = React30.forwardRef(({ className, ...props }, ref) => /* @_
3935
3986
  }
3936
3987
  ));
3937
3988
  TabsTriggerCore.displayName = TabsPrimitive.Trigger.displayName;
3938
- var TabsContent = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3989
+ var TabsContent = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3939
3990
  TabsPrimitive.Content,
3940
3991
  {
3941
3992
  ref,
@@ -3952,7 +4003,7 @@ TabsContent.displayName = TabsPrimitive.Content.displayName;
3952
4003
 
3953
4004
  // src/textarea.tsx
3954
4005
  var React31 = __toESM(require("react"), 1);
3955
- var import_jsx_runtime41 = require("react/jsx-runtime");
4006
+ var import_jsx_runtime42 = require("react/jsx-runtime");
3956
4007
  var FILL_HEIGHT_REGEX = /(?:^|\s)(h-full|h-dvh|flex-1|grow)(?:\s|$)/;
3957
4008
  var FILL_WIDTH_REGEX = /(?:^|\s)(w-full|w-screen)(?:\s|$)/;
3958
4009
  function getStretchClasses(className) {
@@ -4005,7 +4056,7 @@ var Textarea = React31.forwardRef(
4005
4056
  const stretchClasses = getStretchClasses(className);
4006
4057
  const needsWrapper = Boolean(wrapperClassName || stretchClasses);
4007
4058
  useAutoGrow(ref, props.value, autoGrow, minHeight, maxHeight);
4008
- const textarea = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
4059
+ const textarea = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
4009
4060
  "textarea",
4010
4061
  {
4011
4062
  ref: callback,
@@ -4021,7 +4072,7 @@ var Textarea = React31.forwardRef(
4021
4072
  }
4022
4073
  );
4023
4074
  if (!needsWrapper) return textarea;
4024
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: cn(stretchClasses, wrapperClassName), children: textarea });
4075
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: cn(stretchClasses, wrapperClassName), children: textarea });
4025
4076
  }
4026
4077
  );
4027
4078
  Textarea.displayName = "Textarea";
@@ -4029,7 +4080,7 @@ var BasicTextarea = React31.forwardRef(
4029
4080
  ({ className, autoGrow, minHeight, maxHeight, ...props }, forwarded) => {
4030
4081
  const { ref, callback } = useMergedTextareaRef(forwarded);
4031
4082
  useAutoGrow(ref, props.value, autoGrow, minHeight, maxHeight);
4032
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
4083
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
4033
4084
  "textarea",
4034
4085
  {
4035
4086
  ref: callback,
@@ -4059,13 +4110,13 @@ var TextareaWithPrefix = React31.forwardRef(
4059
4110
  }, forwarded) => {
4060
4111
  const { ref, callback } = useMergedTextareaRef(forwarded);
4061
4112
  useAutoGrow(ref, props.value, autoGrow, minHeight, maxHeight);
4062
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
4113
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
4063
4114
  "div",
4064
4115
  {
4065
4116
  className: cn("relative", getStretchClasses(className), wrapperClassName),
4066
4117
  children: [
4067
- prefix ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "pointer-events-none absolute left-3 top-3 z-10 text-muted-foreground", children: prefix }) : null,
4068
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
4118
+ prefix ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "pointer-events-none absolute left-3 top-3 z-10 text-muted-foreground", children: prefix }) : null,
4119
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
4069
4120
  "textarea",
4070
4121
  {
4071
4122
  ref: callback,
@@ -4145,13 +4196,13 @@ function useScrollFade() {
4145
4196
  // src/hover-card.tsx
4146
4197
  var HoverCardPrimitive = __toESM(require("@radix-ui/react-hover-card"), 1);
4147
4198
  var React32 = __toESM(require("react"), 1);
4148
- var import_jsx_runtime42 = require("react/jsx-runtime");
4199
+ var import_jsx_runtime43 = require("react/jsx-runtime");
4149
4200
  var HoverCard = HoverCardPrimitive.Root;
4150
4201
  var HoverCardTrigger = HoverCardPrimitive.Trigger;
4151
4202
  var HoverCardContent = React32.forwardRef(
4152
4203
  ({ className, align = "center", sideOffset = 4, container, animated = true, ...props }, ref) => {
4153
4204
  const resolved = usePortalContainer(container);
4154
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(HoverCardPrimitive.Portal, { container: resolved ?? null, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
4205
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(HoverCardPrimitive.Portal, { container: resolved ?? null, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
4155
4206
  HoverCardPrimitive.Content,
4156
4207
  {
4157
4208
  ref,
@@ -4173,7 +4224,7 @@ HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
4173
4224
  // src/radio-group.tsx
4174
4225
  var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
4175
4226
  var React33 = __toESM(require("react"), 1);
4176
- var import_jsx_runtime43 = require("react/jsx-runtime");
4227
+ var import_jsx_runtime44 = require("react/jsx-runtime");
4177
4228
  var RadioGroupSizeContext = React33.createContext("md");
4178
4229
  var CONTROL_CLASSES = {
4179
4230
  sm: "h-3.5 w-3.5",
@@ -4185,7 +4236,7 @@ var DOT_CLASSES = {
4185
4236
  md: "h-1.5 w-1.5",
4186
4237
  lg: "h-2 w-2"
4187
4238
  };
4188
- var RadioGroup3 = React33.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(RadioGroupSizeContext.Provider, { value: size, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
4239
+ var RadioGroup3 = React33.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(RadioGroupSizeContext.Provider, { value: size, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
4189
4240
  RadioGroupPrimitive.Root,
4190
4241
  {
4191
4242
  ref,
@@ -4198,7 +4249,7 @@ RadioGroup3.displayName = RadioGroupPrimitive.Root.displayName;
4198
4249
  var RadioGroupItem = React33.forwardRef(({ className, size, ...props }, ref) => {
4199
4250
  const groupSize = React33.useContext(RadioGroupSizeContext);
4200
4251
  const resolved = size ?? groupSize;
4201
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
4252
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
4202
4253
  RadioGroupPrimitive.Item,
4203
4254
  {
4204
4255
  ref,
@@ -4215,7 +4266,7 @@ var RadioGroupItem = React33.forwardRef(({ className, size, ...props }, ref) =>
4215
4266
  className
4216
4267
  ),
4217
4268
  ...props,
4218
- children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
4269
+ children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
4219
4270
  "div",
4220
4271
  {
4221
4272
  className: cn("rounded-full bg-primary-foreground", DOT_CLASSES[resolved])
@@ -4228,7 +4279,7 @@ RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
4228
4279
 
4229
4280
  // src/resizable.tsx
4230
4281
  var import_react_resizable_panels = require("react-resizable-panels");
4231
- var import_jsx_runtime44 = require("react/jsx-runtime");
4282
+ var import_jsx_runtime45 = require("react/jsx-runtime");
4232
4283
  var HANDLE_SIZES = {
4233
4284
  xs: "w-0.5 [&[aria-orientation=horizontal]]:h-0.5 [&[aria-orientation=horizontal]]:w-full",
4234
4285
  sm: "w-1 [&[aria-orientation=horizontal]]:h-1 [&[aria-orientation=horizontal]]:w-full",
@@ -4242,7 +4293,7 @@ var HANDLE_SIZES = {
4242
4293
  var ResizablePanelGroup = ({
4243
4294
  className,
4244
4295
  ...props
4245
- }) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
4296
+ }) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4246
4297
  import_react_resizable_panels.Group,
4247
4298
  {
4248
4299
  "data-slot": "resizable-group",
@@ -4257,7 +4308,7 @@ var ResizableHandle = ({
4257
4308
  size = "xs",
4258
4309
  className,
4259
4310
  ...props
4260
- }) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
4311
+ }) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4261
4312
  import_react_resizable_panels.Separator,
4262
4313
  {
4263
4314
  "data-slot": "resizable-handle",
@@ -4277,7 +4328,7 @@ var ResizableHandle = ({
4277
4328
  className
4278
4329
  ),
4279
4330
  ...props,
4280
- children: withHandle ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("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__ */ (0, import_jsx_runtime44.jsx)(DragHandleDots2Icon, { className: "h-2.5 w-2.5 group-aria-[orientation=horizontal]/handle:rotate-90" }) }) : null
4331
+ children: withHandle ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("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__ */ (0, import_jsx_runtime45.jsx)(DragHandleDots2Icon, { className: "h-2.5 w-2.5 group-aria-[orientation=horizontal]/handle:rotate-90" }) }) : null
4281
4332
  }
4282
4333
  );
4283
4334
  ResizableHandle.displayName = "ResizableHandle";
@@ -4285,7 +4336,7 @@ ResizableHandle.displayName = "ResizableHandle";
4285
4336
  // src/slider.tsx
4286
4337
  var SliderPrimitive = __toESM(require("@radix-ui/react-slider"), 1);
4287
4338
  var React34 = __toESM(require("react"), 1);
4288
- var import_jsx_runtime45 = require("react/jsx-runtime");
4339
+ var import_jsx_runtime46 = require("react/jsx-runtime");
4289
4340
  var TRACK_CLASSES = {
4290
4341
  sm: "h-1",
4291
4342
  md: "h-1.5",
@@ -4301,7 +4352,7 @@ var Slider = React34.forwardRef(({ className, size = "md", ...props }, ref) => {
4301
4352
  1,
4302
4353
  (props.value ?? props.defaultValue ?? [0]).length
4303
4354
  );
4304
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
4355
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
4305
4356
  SliderPrimitive.Root,
4306
4357
  {
4307
4358
  ref,
@@ -4313,7 +4364,7 @@ var Slider = React34.forwardRef(({ className, size = "md", ...props }, ref) => {
4313
4364
  ),
4314
4365
  ...props,
4315
4366
  children: [
4316
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4367
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
4317
4368
  SliderPrimitive.Track,
4318
4369
  {
4319
4370
  "data-slot": "slider-track",
@@ -4322,7 +4373,7 @@ var Slider = React34.forwardRef(({ className, size = "md", ...props }, ref) => {
4322
4373
  TRACK_CLASSES[size],
4323
4374
  "data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"
4324
4375
  ),
4325
- children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4376
+ children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
4326
4377
  SliderPrimitive.Range,
4327
4378
  {
4328
4379
  "data-slot": "slider-range",
@@ -4331,7 +4382,7 @@ var Slider = React34.forwardRef(({ className, size = "md", ...props }, ref) => {
4331
4382
  )
4332
4383
  }
4333
4384
  ),
4334
- Array.from({ length: thumbCount }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4385
+ Array.from({ length: thumbCount }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
4335
4386
  SliderPrimitive.Thumb,
4336
4387
  {
4337
4388
  "data-slot": "slider-thumb",
@@ -4359,7 +4410,7 @@ var ToggleGroupPrimitive = __toESM(require("@radix-ui/react-toggle-group"), 1);
4359
4410
  var TogglePrimitive = __toESM(require("@radix-ui/react-toggle"), 1);
4360
4411
  var import_class_variance_authority6 = require("class-variance-authority");
4361
4412
  var React35 = __toESM(require("react"), 1);
4362
- var import_jsx_runtime46 = require("react/jsx-runtime");
4413
+ var import_jsx_runtime47 = require("react/jsx-runtime");
4363
4414
  var toggleVariants = (0, import_class_variance_authority6.cva)(
4364
4415
  "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",
4365
4416
  {
@@ -4380,7 +4431,7 @@ var toggleVariants = (0, import_class_variance_authority6.cva)(
4380
4431
  }
4381
4432
  }
4382
4433
  );
4383
- var Toggle = React35.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
4434
+ var Toggle = React35.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
4384
4435
  TogglePrimitive.Root,
4385
4436
  {
4386
4437
  ref,
@@ -4391,20 +4442,20 @@ var Toggle = React35.forwardRef(({ className, variant, size, ...props }, ref) =>
4391
4442
  ));
4392
4443
  Toggle.displayName = TogglePrimitive.Root.displayName;
4393
4444
  var ToggleGroupContext = React35.createContext({ size: "default", variant: "default" });
4394
- var ToggleGroup = React35.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
4445
+ var ToggleGroup = React35.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
4395
4446
  ToggleGroupPrimitive.Root,
4396
4447
  {
4397
4448
  ref,
4398
4449
  "data-slot": "toggle-group",
4399
4450
  className: cn("flex items-center justify-center gap-1", className),
4400
4451
  ...props,
4401
- children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
4452
+ children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
4402
4453
  }
4403
4454
  ));
4404
4455
  ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
4405
4456
  var ToggleGroupItem = React35.forwardRef(({ className, children, variant, size, ...props }, ref) => {
4406
4457
  const context = React35.useContext(ToggleGroupContext);
4407
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
4458
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
4408
4459
  ToggleGroupPrimitive.Item,
4409
4460
  {
4410
4461
  ref,
@@ -4426,13 +4477,13 @@ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
4426
4477
  // src/tooltip.tsx
4427
4478
  var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"), 1);
4428
4479
  var React36 = __toESM(require("react"), 1);
4429
- var import_jsx_runtime47 = require("react/jsx-runtime");
4480
+ var import_jsx_runtime48 = require("react/jsx-runtime");
4430
4481
  var TooltipProvider = TooltipPrimitive.Provider;
4431
4482
  var Tooltip = TooltipPrimitive.Root;
4432
4483
  var TooltipTrigger = TooltipPrimitive.Trigger;
4433
4484
  var TooltipContent = React36.forwardRef(({ className, sideOffset = 4, container, animated = true, ...props }, ref) => {
4434
4485
  const resolved = usePortalContainer(container);
4435
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(TooltipPrimitive.Portal, { container: resolved ?? null, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
4486
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(TooltipPrimitive.Portal, { container: resolved ?? null, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
4436
4487
  TooltipPrimitive.Content,
4437
4488
  {
4438
4489
  ref,