@proteos/ui 0.61.0 → 0.76.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.
Files changed (43) hide show
  1. package/dist/{chunk-NWGG5WFL.cjs → chunk-4ACELYEP.cjs} +23 -4
  2. package/dist/chunk-4ACELYEP.cjs.map +1 -0
  3. package/dist/{chunk-NSE4VW3Z.js → chunk-XRN5MNDX.js} +24 -5
  4. package/dist/chunk-XRN5MNDX.js.map +1 -0
  5. package/dist/index.cjs +811 -304
  6. package/dist/index.cjs.map +1 -1
  7. package/dist/index.d.cts +365 -15
  8. package/dist/index.d.ts +365 -15
  9. package/dist/index.js +537 -39
  10. package/dist/index.js.map +1 -1
  11. package/dist/{pdf-view-RRMAUK3L.cjs → pdf-view-2DSARHNQ.cjs} +7 -7
  12. package/dist/{pdf-view-RRMAUK3L.cjs.map → pdf-view-2DSARHNQ.cjs.map} +1 -1
  13. package/dist/{pdf-view-RQ2OZYHJ.js → pdf-view-2QU4FI37.js} +3 -3
  14. package/dist/{pdf-view-RQ2OZYHJ.js.map → pdf-view-2QU4FI37.js.map} +1 -1
  15. package/package.json +2 -2
  16. package/src/components/availability-calendar/availability-calendar.stories.tsx +78 -0
  17. package/src/components/availability-calendar/availability-calendar.test.tsx +89 -0
  18. package/src/components/availability-calendar/availability-calendar.tsx +182 -0
  19. package/src/components/availability-calendar/index.ts +5 -0
  20. package/src/components/button/button.stories.tsx +22 -1
  21. package/src/components/button/button.test.tsx +45 -1
  22. package/src/components/button/button.tsx +32 -2
  23. package/src/components/conversation-brief-card/conversation-brief-preview.tsx +176 -47
  24. package/src/components/conversation-brief-card/conversation-brief-review.test.tsx +58 -1
  25. package/src/components/data-table/data-table.test.tsx +65 -0
  26. package/src/components/data-table/data-table.tsx +33 -2
  27. package/src/components/glow-frame/glow-frame.stories.tsx +65 -0
  28. package/src/components/glow-frame/glow-frame.test.tsx +67 -0
  29. package/src/components/glow-frame/glow-frame.tsx +182 -0
  30. package/src/components/glow-frame/index.ts +2 -0
  31. package/src/components/stepper/index.ts +8 -0
  32. package/src/components/stepper/stepper.stories.tsx +84 -0
  33. package/src/components/stepper/stepper.test.tsx +79 -0
  34. package/src/components/stepper/stepper.tsx +127 -0
  35. package/src/components/time-slot-list/index.ts +2 -0
  36. package/src/components/time-slot-list/time-slot-list.stories.tsx +100 -0
  37. package/src/components/time-slot-list/time-slot-list.test.tsx +120 -0
  38. package/src/components/time-slot-list/time-slot-list.tsx +154 -0
  39. package/src/components/tooltip/tooltip.tsx +4 -1
  40. package/src/index.ts +4 -0
  41. package/src/styles.css +216 -0
  42. package/dist/chunk-NSE4VW3Z.js.map +0 -1
  43. package/dist/chunk-NWGG5WFL.cjs.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkNWGG5WFL_cjs = require('./chunk-NWGG5WFL.cjs');
3
+ var chunk4ACELYEP_cjs = require('./chunk-4ACELYEP.cjs');
4
4
  var lucideReact = require('lucide-react');
5
5
  var tailwindVariants = require('tailwind-variants');
6
6
  var reactAriaComponents = require('react-aria-components');
@@ -33,7 +33,7 @@ function PopoverContent({
33
33
  offset,
34
34
  placement,
35
35
  ...props,
36
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
36
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
37
37
  "rounded-md border border-rule bg-surface",
38
38
  "shadow-[var(--shadow-float)]",
39
39
  "entering:animate-enter-slide-down",
@@ -52,7 +52,7 @@ function PopoverPanelHeader({
52
52
  return /* @__PURE__ */ jsxRuntime.jsx(
53
53
  "div",
54
54
  {
55
- className: chunkNWGG5WFL_cjs.cn(
55
+ className: chunk4ACELYEP_cjs.cn(
56
56
  "flex items-center justify-between gap-2",
57
57
  "px-3.5 py-2.5 border-b border-rule",
58
58
  className
@@ -65,7 +65,7 @@ function PopoverPanelBody({
65
65
  className,
66
66
  children
67
67
  }) {
68
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn("p-2", className), children });
68
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk4ACELYEP_cjs.cn("p-2", className), children });
69
69
  }
70
70
  function PopoverPanelFooter({
71
71
  className,
@@ -74,7 +74,7 @@ function PopoverPanelFooter({
74
74
  return /* @__PURE__ */ jsxRuntime.jsx(
75
75
  "div",
76
76
  {
77
- className: chunkNWGG5WFL_cjs.cn(
77
+ className: chunk4ACELYEP_cjs.cn(
78
78
  "flex items-center justify-between gap-2",
79
79
  "px-3.5 py-2.5 border-t border-rule",
80
80
  "bg-[color-mix(in_oklab,var(--color-surface-2)_60%,var(--color-surface))]",
@@ -157,10 +157,10 @@ function FileField({
157
157
  };
158
158
  if (!value) {
159
159
  if (isReadOnly) {
160
- return /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("text-ink-4", className), children: "\u2014" });
160
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk4ACELYEP_cjs.cn("text-ink-4", className), children: "\u2014" });
161
161
  }
162
162
  if (isUploading) {
163
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(dropZoneStyles({ isInvalid }), className), children: [
163
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk4ACELYEP_cjs.cn(dropZoneStyles({ isInvalid }), className), children: [
164
164
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-3.5 animate-spin", "aria-hidden": true }),
165
165
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-sans text-[12.5px]", children: "Uploading\u2026" })
166
166
  ] });
@@ -180,7 +180,7 @@ function FileField({
180
180
  {
181
181
  onSelect: handleSelect,
182
182
  ...acceptedFileTypes ? { acceptedFileTypes } : {},
183
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { variant: "ghost", size: "sm", children: "Browse" })
183
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunk4ACELYEP_cjs.Button, { variant: "ghost", size: "sm", children: "Browse" })
184
184
  }
185
185
  )
186
186
  ]
@@ -194,7 +194,7 @@ function FileField({
194
194
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, children: [
195
195
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cardStyles({ isClickable }), children: [
196
196
  /* @__PURE__ */ jsxRuntime.jsxs(
197
- chunkNWGG5WFL_cjs.Button,
197
+ chunk4ACELYEP_cjs.Button,
198
198
  {
199
199
  variant: "subtle",
200
200
  className: "m-0 flex min-w-0 flex-1 items-start gap-3 border-0 bg-transparent p-0 text-left hover:bg-transparent",
@@ -204,7 +204,7 @@ function FileField({
204
204
  /* @__PURE__ */ jsxRuntime.jsx(
205
205
  Icon,
206
206
  {
207
- className: chunkNWGG5WFL_cjs.cn("mt-0.5 size-5 shrink-0 text-ink-3", isUploading && "animate-spin"),
207
+ className: chunk4ACELYEP_cjs.cn("mt-0.5 size-5 shrink-0 text-ink-3", isUploading && "animate-spin"),
208
208
  "aria-hidden": true,
209
209
  strokeWidth: 1.6
210
210
  }
@@ -218,7 +218,7 @@ function FileField({
218
218
  ),
219
219
  !isReadOnly && onDelete && !isUploading ? /* @__PURE__ */ jsxRuntime.jsxs(Popover, { children: [
220
220
  /* @__PURE__ */ jsxRuntime.jsx(
221
- chunkNWGG5WFL_cjs.Button,
221
+ chunk4ACELYEP_cjs.Button,
222
222
  {
223
223
  "aria-label": "Remove file",
224
224
  size: "icon-sm",
@@ -238,13 +238,13 @@ function FileField({
238
238
  ) }),
239
239
  /* @__PURE__ */ jsxRuntime.jsx(PopoverPanelBody, { className: "px-3.5 py-3", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "m-0 font-sans text-[12px] leading-snug text-ink-2", children: "This removes the attachment from this record." }) }),
240
240
  /* @__PURE__ */ jsxRuntime.jsxs(PopoverPanelFooter, { children: [
241
- /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { variant: "ghost", size: "sm", onPress: close, children: "Cancel" }),
241
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4ACELYEP_cjs.Button, { variant: "ghost", size: "sm", onPress: close, children: "Cancel" }),
242
242
  /* @__PURE__ */ jsxRuntime.jsx(
243
- chunkNWGG5WFL_cjs.Button,
243
+ chunk4ACELYEP_cjs.Button,
244
244
  {
245
245
  variant: "primary",
246
246
  size: "sm",
247
- className: chunkNWGG5WFL_cjs.cn("bg-danger border-danger", "hover:bg-danger hover:border-danger"),
247
+ className: chunk4ACELYEP_cjs.cn("bg-danger border-danger", "hover:bg-danger hover:border-danger"),
248
248
  onPress: () => {
249
249
  onDelete();
250
250
  close();
@@ -294,17 +294,17 @@ function AttachmentChip({
294
294
  /* @__PURE__ */ jsxRuntime.jsx(
295
295
  Icon,
296
296
  {
297
- className: chunkNWGG5WFL_cjs.cn("size-3.5 shrink-0 text-ink-3", status === "uploading" && "animate-spin"),
297
+ className: chunk4ACELYEP_cjs.cn("size-3.5 shrink-0 text-ink-3", status === "uploading" && "animate-spin"),
298
298
  "aria-hidden": true
299
299
  }
300
300
  ),
301
301
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate", children: name }),
302
- meta ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("shrink-0", status !== "error" && "text-ink-4"), children: meta }) : null
302
+ meta ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk4ACELYEP_cjs.cn("shrink-0", status !== "error" && "text-ink-4"), children: meta }) : null
303
303
  ] });
304
304
  return /* @__PURE__ */ jsxRuntime.jsxs(
305
305
  "span",
306
306
  {
307
- className: chunkNWGG5WFL_cjs.cn(attachmentChipStyles({ status, isInteractive: Boolean(onPress) }), className),
307
+ className: chunk4ACELYEP_cjs.cn(attachmentChipStyles({ status, isInteractive: Boolean(onPress) }), className),
308
308
  title: errorMessage ?? name,
309
309
  children: [
310
310
  onPress ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -325,7 +325,7 @@ function AttachmentChip({
325
325
  event.stopPropagation();
326
326
  onRemove();
327
327
  },
328
- className: chunkNWGG5WFL_cjs.cn(
328
+ className: chunk4ACELYEP_cjs.cn(
329
329
  "inline-flex shrink-0 items-center justify-center",
330
330
  "size-4 rounded-[3px]",
331
331
  "cursor-pointer text-ink-3 hover:bg-surface-3 hover:text-ink",
@@ -396,11 +396,113 @@ function AttributeTypeIcon({
396
396
  {
397
397
  "aria-hidden": true,
398
398
  strokeWidth: strokeWidth ?? 1.6,
399
- className: chunkNWGG5WFL_cjs.cn("size-3.5", className),
399
+ className: chunk4ACELYEP_cjs.cn("size-3.5", className),
400
400
  ...props
401
401
  }
402
402
  );
403
403
  }
404
+ var availabilityCalendarStyles = tailwindVariants.tv({
405
+ slots: {
406
+ root: "flex flex-col",
407
+ header: "flex items-center justify-between mb-3.5",
408
+ heading: "font-sans text-[15px] text-ink tracking-[-0.01em]",
409
+ headingYear: "ml-1 text-ink-3",
410
+ nav: "flex gap-1",
411
+ navButton: [
412
+ "size-7 rounded-md inline-flex items-center justify-center cursor-pointer outline-none",
413
+ "text-ink-3 hovered:text-ink hovered:bg-surface-3 pressed:bg-surface-4",
414
+ "data-[focus-visible]:shadow-[var(--shadow-focus)]",
415
+ "data-[disabled]:opacity-40 data-[disabled]:cursor-default data-[disabled]:hover:bg-transparent"
416
+ ],
417
+ grid: "w-full border-separate border-spacing-1 table-fixed -m-1",
418
+ weekday: "font-mono text-[11px] font-medium uppercase tracking-[0.08em] text-ink-3 pb-2 text-center",
419
+ cell: [
420
+ "relative aspect-square flex items-center justify-center cursor-pointer outline-none",
421
+ "font-sans text-[14px] font-medium rounded-sm border border-transparent",
422
+ "transition-[background-color,color,border-color] duration-150",
423
+ // Available (the default when neither unavailable nor disabled).
424
+ "bg-surface-2 text-ink",
425
+ "data-[hovered]:bg-surface-3 data-[hovered]:border-rule-strong",
426
+ "data-[focus-visible]:shadow-[var(--shadow-focus)]",
427
+ // Selected: the one ink fill on the page.
428
+ "data-[selected]:bg-ink data-[selected]:text-surface data-[selected]:border-ink",
429
+ "data-[selected]:data-[hovered]:bg-ink data-[selected]:data-[hovered]:border-ink",
430
+ // Unavailable / past: quiet text, no fill, no hover.
431
+ "data-[unavailable]:bg-transparent data-[unavailable]:text-ink-4 data-[unavailable]:font-normal data-[unavailable]:cursor-default",
432
+ "data-[unavailable]:data-[hovered]:bg-transparent data-[unavailable]:data-[hovered]:border-transparent",
433
+ "data-[disabled]:bg-transparent data-[disabled]:text-ink-4 data-[disabled]:font-normal data-[disabled]:cursor-default",
434
+ "data-[disabled]:data-[hovered]:bg-transparent data-[disabled]:data-[hovered]:border-transparent",
435
+ // Days of the neighbouring months are blank in a month-aligned grid.
436
+ "data-[outside-month]:invisible"
437
+ ],
438
+ dot: "absolute bottom-1.5 left-1/2 -translate-x-1/2 size-1 rounded-full bg-current",
439
+ cellSkeleton: "absolute inset-0 rounded-sm"
440
+ },
441
+ variants: {
442
+ isLoading: {
443
+ true: { cell: "bg-transparent cursor-default" },
444
+ false: {}
445
+ }
446
+ },
447
+ defaultVariants: { isLoading: false }
448
+ });
449
+ function AvailabilityCalendar({
450
+ value,
451
+ onChange,
452
+ isLoading = false,
453
+ className,
454
+ isDateUnavailable,
455
+ weekdayStyle = "short",
456
+ ...props
457
+ }) {
458
+ const styles4 = availabilityCalendarStyles({ isLoading });
459
+ const unavailable = isLoading ? () => true : isDateUnavailable;
460
+ return /* @__PURE__ */ jsxRuntime.jsxs(
461
+ reactAriaComponents.Calendar,
462
+ {
463
+ ...props,
464
+ value,
465
+ onChange: (next) => onChange(next),
466
+ ...unavailable ? { isDateUnavailable: unavailable } : {},
467
+ visibleDuration: { months: 1 },
468
+ className: chunk4ACELYEP_cjs.cn(styles4.root(), className),
469
+ children: [
470
+ /* @__PURE__ */ jsxRuntime.jsxs("header", { className: styles4.header(), children: [
471
+ /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Heading, { className: styles4.heading(), children: /* @__PURE__ */ jsxRuntime.jsx(MonthHeading, { yearClassName: styles4.headingYear() }) }),
472
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles4.nav(), children: [
473
+ /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Button, { slot: "previous", "aria-label": "Previous month", className: styles4.navButton(), children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "size-4", "aria-hidden": "true" }) }),
474
+ /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Button, { slot: "next", "aria-label": "Next month", className: styles4.navButton(), children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "size-4", "aria-hidden": "true" }) })
475
+ ] })
476
+ ] }),
477
+ /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-busy": isLoading, children: /* @__PURE__ */ jsxRuntime.jsxs(reactAriaComponents.CalendarGrid, { weekdayStyle, className: styles4.grid(), children: [
478
+ /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.CalendarGridHeader, { children: (day) => /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.CalendarHeaderCell, { className: styles4.weekday(), children: day }) }),
479
+ /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.CalendarGridBody, { children: (date) => /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.CalendarCell, { date, className: styles4.cell(), children: ({ formattedDate, isToday, isOutsideMonth }) => isLoading && !isOutsideMonth ? /* @__PURE__ */ jsxRuntime.jsx(chunk4ACELYEP_cjs.Skeleton, { className: styles4.cellSkeleton() }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
480
+ formattedDate,
481
+ isToday && /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles4.dot(), "aria-hidden": "true" })
482
+ ] }) }) })
483
+ ] }) })
484
+ ]
485
+ }
486
+ );
487
+ }
488
+ function MonthHeading({ yearClassName }) {
489
+ const state = react.useContext(reactAriaComponents.CalendarStateContext);
490
+ if (!state) return null;
491
+ const start = state.visibleRange.start;
492
+ const date = start.toDate(state.timeZone);
493
+ const month = new Intl.DateTimeFormat(void 0, {
494
+ month: "long",
495
+ timeZone: state.timeZone
496
+ }).format(date);
497
+ const year = new Intl.DateTimeFormat(void 0, {
498
+ year: "numeric",
499
+ timeZone: state.timeZone
500
+ }).format(date);
501
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
502
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: month }),
503
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: yearClassName, children: year })
504
+ ] });
505
+ }
404
506
  var avatarStyles = tailwindVariants.tv({
405
507
  base: [
406
508
  "inline-grid place-items-center shrink-0 select-none overflow-hidden",
@@ -441,7 +543,7 @@ function Avatar({
441
543
  }) {
442
544
  const [failedSrc, setFailedSrc] = react.useState(null);
443
545
  const showsImage = Boolean(src) && failedSrc !== src;
444
- return /* @__PURE__ */ jsxRuntime.jsx("span", { ...props, className: chunkNWGG5WFL_cjs.cn(avatarStyles({ size, tone, shape }), className), children: showsImage ? /* @__PURE__ */ jsxRuntime.jsx(
546
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { ...props, className: chunk4ACELYEP_cjs.cn(avatarStyles({ size, tone, shape }), className), children: showsImage ? /* @__PURE__ */ jsxRuntime.jsx(
445
547
  "img",
446
548
  {
447
549
  src: src ?? void 0,
@@ -471,7 +573,7 @@ function AvatarGroup({
471
573
  }) {
472
574
  const shown = avatars.slice(0, max);
473
575
  const overflow = avatars.length - shown.length;
474
- return /* @__PURE__ */ jsxRuntime.jsxs("span", { ...props, className: chunkNWGG5WFL_cjs.cn(avatarGroupStyles({ size }), className), children: [
576
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { ...props, className: chunk4ACELYEP_cjs.cn(avatarGroupStyles({ size }), className), children: [
475
577
  shown.map((avatar, index) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full ring-[1.5px] ring-surface", children: /* @__PURE__ */ jsxRuntime.jsx(
476
578
  Avatar,
477
579
  {
@@ -647,7 +749,7 @@ function IconPicker({
647
749
  open(false);
648
750
  triggerRef.current?.focus();
649
751
  };
650
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn("grid grid-cols-1 gap-1.5 content-start", className), children: [
752
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk4ACELYEP_cjs.cn("grid grid-cols-1 gap-1.5 content-start", className), children: [
651
753
  label ? /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Label, { className: fieldLabelStyles, children: label }) : null,
652
754
  compact ? /* @__PURE__ */ jsxRuntime.jsx(
653
755
  "button",
@@ -661,7 +763,7 @@ function IconPicker({
661
763
  disabled: isDisabled,
662
764
  onClick: () => open(!isOpen),
663
765
  "data-invalid": isInvalid || void 0,
664
- className: chunkNWGG5WFL_cjs.cn(
766
+ className: chunk4ACELYEP_cjs.cn(
665
767
  styles4.box(),
666
768
  "flex shrink-0 items-center justify-center cursor-pointer",
667
769
  appearance === "cell" ? "size-[29px]" : COMPACT_SIZE[size],
@@ -680,7 +782,7 @@ function IconPicker({
680
782
  disabled: isDisabled,
681
783
  onClick: () => open(!isOpen),
682
784
  "data-invalid": isInvalid || void 0,
683
- className: chunkNWGG5WFL_cjs.cn(
785
+ className: chunk4ACELYEP_cjs.cn(
684
786
  // box carries no padding by contract — content is what gives a
685
787
  // single-element control its interior (padding, font, text-size).
686
788
  styles4.box(),
@@ -690,7 +792,7 @@ function IconPicker({
690
792
  ),
691
793
  children: [
692
794
  SelectedIcon ? /* @__PURE__ */ jsxRuntime.jsx(SelectedIcon, { "aria-hidden": true, className: "size-4 shrink-0 text-ink-2" }) : null,
693
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("min-w-0 flex-1 truncate", selectedName ? "text-ink" : "text-ink-4"), children: selectedName ?? placeholder }),
795
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk4ACELYEP_cjs.cn("min-w-0 flex-1 truncate", selectedName ? "text-ink" : "text-ink-4"), children: selectedName ?? placeholder }),
694
796
  /* @__PURE__ */ jsxRuntime.jsx(FieldCaret, {})
695
797
  ]
696
798
  }
@@ -705,7 +807,7 @@ function IconPicker({
705
807
  triggerRef,
706
808
  offset: 6,
707
809
  placement: "bottom start",
708
- className: chunkNWGG5WFL_cjs.cn(
810
+ className: chunk4ACELYEP_cjs.cn(
709
811
  "w-[316px] rounded-md border border-rule bg-surface p-2",
710
812
  "shadow-[var(--shadow-raised)]",
711
813
  "entering:animate-enter-slide-down",
@@ -716,7 +818,7 @@ function IconPicker({
716
818
  /* @__PURE__ */ jsxRuntime.jsxs(
717
819
  "div",
718
820
  {
719
- className: chunkNWGG5WFL_cjs.cn(
821
+ className: chunk4ACELYEP_cjs.cn(
720
822
  fieldControlStyles({ size: "sm" }).box(),
721
823
  "flex min-w-0 flex-1 items-center gap-1.5 px-2.5 py-1.5",
722
824
  "focus-within:border-accent focus-within:shadow-[var(--shadow-focus)]"
@@ -731,7 +833,7 @@ function IconPicker({
731
833
  value: query,
732
834
  onChange: (event) => search(event.target.value),
733
835
  placeholder: "Search icons\u2026",
734
- className: chunkNWGG5WFL_cjs.cn(
836
+ className: chunk4ACELYEP_cjs.cn(
735
837
  "min-w-0 flex-1 bg-transparent font-sans outline-none",
736
838
  "text-ink placeholder:text-ink-4",
737
839
  fieldTextStyles.sm
@@ -746,7 +848,7 @@ function IconPicker({
746
848
  {
747
849
  type: "button",
748
850
  onClick: () => pick(null),
749
- className: chunkNWGG5WFL_cjs.cn(
851
+ className: chunk4ACELYEP_cjs.cn(
750
852
  "flex shrink-0 items-center gap-1 rounded-[6px] px-2 py-1.5 cursor-pointer",
751
853
  "font-sans text-[12px] text-ink-3 transition-colors",
752
854
  "hover:bg-surface-2 hover:text-ink",
@@ -777,7 +879,7 @@ function IconPicker({
777
879
  if (next !== void 0) pick(next);
778
880
  },
779
881
  className: "grid grid-cols-8 gap-0.5 outline-none",
780
- renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn("col-span-8 px-2 py-3 text-center", fieldHintStyles), children: "No icons match" }),
882
+ renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk4ACELYEP_cjs.cn("col-span-8 px-2 py-3 text-center", fieldHintStyles), children: "No icons match" }),
781
883
  children: visible.map((name) => {
782
884
  const Icon = lucideReact.icons[name];
783
885
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -786,7 +888,7 @@ function IconPicker({
786
888
  id: name,
787
889
  textValue: name,
788
890
  "aria-label": name,
789
- className: chunkNWGG5WFL_cjs.cn(
891
+ className: chunk4ACELYEP_cjs.cn(
790
892
  "flex size-[34px] items-center justify-center rounded-[6px]",
791
893
  "cursor-pointer outline-none",
792
894
  "data-[hovered]:bg-surface-2 data-[focused]:bg-surface-2",
@@ -803,7 +905,7 @@ function IconPicker({
803
905
  )
804
906
  }
805
907
  ),
806
- hiddenCount > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("p", { className: chunkNWGG5WFL_cjs.cn("px-1 pt-2", fieldHintStyles), children: [
908
+ hiddenCount > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("p", { className: chunk4ACELYEP_cjs.cn("px-1 pt-2", fieldHintStyles), children: [
807
909
  hiddenCount.toLocaleString(),
808
910
  " more \u2014 keep scrolling, or search."
809
911
  ] }) : null
@@ -893,13 +995,13 @@ function Badge({
893
995
  {
894
996
  ...props,
895
997
  style: mergedStyle,
896
- className: chunkNWGG5WFL_cjs.cn(
998
+ className: chunk4ACELYEP_cjs.cn(
897
999
  badgeStyles({ variant: register2, shape, hasDot }),
898
1000
  showDot ? null : "before:hidden",
899
1001
  className
900
1002
  ),
901
1003
  children: [
902
- Icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { "aria-hidden": true, className: chunkNWGG5WFL_cjs.cn("size-3 shrink-0", ICON_TONE[register2]) }) : null,
1004
+ Icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { "aria-hidden": true, className: chunk4ACELYEP_cjs.cn("size-3 shrink-0", ICON_TONE[register2]) }) : null,
903
1005
  children,
904
1006
  actions ? (
905
1007
  // Pulled flush with the trailing edge so the chip still reads
@@ -921,7 +1023,7 @@ function BadgeAction({ label, onPress, isDisabled = false, children }) {
921
1023
  event.stopPropagation();
922
1024
  onPress();
923
1025
  },
924
- className: chunkNWGG5WFL_cjs.cn(
1026
+ className: chunk4ACELYEP_cjs.cn(
925
1027
  "inline-flex items-center justify-center shrink-0",
926
1028
  "size-3.5 rounded-full",
927
1029
  "text-current/70 hover:text-current hover:bg-current/10",
@@ -954,8 +1056,11 @@ function Tooltip({ className, offset = 6, ...props }) {
954
1056
  {
955
1057
  ...props,
956
1058
  offset,
957
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
958
- "z-50 max-w-xs",
1059
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
1060
+ // Above the floating chat / softphone windows (1100 / 1200) and their
1061
+ // full-screen workspace, like Select and Toast — a page inside the
1062
+ // window keeps its tooltips.
1063
+ "z-[1300] max-w-xs",
959
1064
  "rounded-md border border-rule bg-surface shadow-[var(--shadow-raised)]",
960
1065
  "px-2.5 py-1.5",
961
1066
  "font-mono text-[11.5px] text-ink-2",
@@ -1061,7 +1166,7 @@ function BadgeGroup({ children, className, ...props }) {
1061
1166
  {
1062
1167
  ...props,
1063
1168
  ref: rootRef,
1064
- className: chunkNWGG5WFL_cjs.cn(badgeGroupStyles({ isMeasuring: measuring }), className),
1169
+ className: chunk4ACELYEP_cjs.cn(badgeGroupStyles({ isMeasuring: measuring }), className),
1065
1170
  children: [
1066
1171
  shown.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx(
1067
1172
  "span",
@@ -1230,7 +1335,7 @@ function BadgeMultiSelect({
1230
1335
  setIsOpen(false);
1231
1336
  }
1232
1337
  };
1233
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn("grid grid-cols-1 gap-1.5 content-start", className), children: [
1338
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk4ACELYEP_cjs.cn("grid grid-cols-1 gap-1.5 content-start", className), children: [
1234
1339
  label ? /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Label, { className: fieldLabelStyles, children: label }) : null,
1235
1340
  /* @__PURE__ */ jsxRuntime.jsxs(
1236
1341
  "div",
@@ -1247,7 +1352,7 @@ function BadgeMultiSelect({
1247
1352
  onKeyDown: onTriggerKeyDown,
1248
1353
  "data-invalid": isInvalid || void 0,
1249
1354
  "data-disabled": isDisabled || void 0,
1250
- className: chunkNWGG5WFL_cjs.cn(
1355
+ className: chunk4ACELYEP_cjs.cn(
1251
1356
  styles4.box(),
1252
1357
  "flex items-stretch cursor-pointer",
1253
1358
  // Cell editor: one table row (29px under a 32px row) while the chips
@@ -1262,7 +1367,7 @@ function BadgeMultiSelect({
1262
1367
  "div",
1263
1368
  {
1264
1369
  ref: chipsRef,
1265
- className: chunkNWGG5WFL_cjs.cn(
1370
+ className: chunk4ACELYEP_cjs.cn(
1266
1371
  "flex flex-1 flex-wrap items-center gap-1.5 min-w-0",
1267
1372
  isCell && (hasWrapped ? "content-start overflow-y-auto" : "content-center overflow-hidden")
1268
1373
  ),
@@ -1270,7 +1375,7 @@ function BadgeMultiSelect({
1270
1375
  // No vertical padding — wrapper's p-1.5 + min-h-[size] govern the
1271
1376
  // overall height so it matches the Input/Select trigger at the same
1272
1377
  // size.
1273
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("text-ink-4 font-sans px-1", fieldTextStyles[size]), children: placeholder })
1378
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk4ACELYEP_cjs.cn("text-ink-4 font-sans px-1", fieldTextStyles[size]), children: placeholder })
1274
1379
  ) : selectedOptions.map((o) => /* @__PURE__ */ jsxRuntime.jsx(
1275
1380
  Badge,
1276
1381
  {
@@ -1306,7 +1411,7 @@ function BadgeMultiSelect({
1306
1411
  placement: "bottom start",
1307
1412
  isNonModal: true,
1308
1413
  shouldCloseOnInteractOutside: (element) => !triggerRef.current?.contains(element),
1309
- className: chunkNWGG5WFL_cjs.cn(
1414
+ className: chunk4ACELYEP_cjs.cn(
1310
1415
  // At least as wide as the trigger, wider when a badge needs it —
1311
1416
  // a narrow table column must not clip its own options.
1312
1417
  "min-w-[var(--trigger-width)] w-max max-w-[min(28rem,calc(100vw-2rem))]",
@@ -1335,14 +1440,14 @@ function BadgeMultiSelect({
1335
1440
  },
1336
1441
  autoFocus: "first",
1337
1442
  className: "outline-none max-h-72 overflow-auto",
1338
- renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn("px-3 py-2", fieldHintStyles), children: "All options selected" }),
1443
+ renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk4ACELYEP_cjs.cn("px-3 py-2", fieldHintStyles), children: "All options selected" }),
1339
1444
  children: listboxOptions.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
1340
1445
  reactAriaComponents.ListBoxItem,
1341
1446
  {
1342
1447
  id: option.id,
1343
1448
  textValue: option.label,
1344
1449
  ...option.isDisabled ? { isDisabled: true } : {},
1345
- className: chunkNWGG5WFL_cjs.cn(
1450
+ className: chunk4ACELYEP_cjs.cn(
1346
1451
  "group flex items-center gap-2.5",
1347
1452
  "rounded-[6px] px-2.5 py-1.5",
1348
1453
  "cursor-pointer outline-none select-none",
@@ -1369,7 +1474,7 @@ function Breadcrumbs({ items, separator = "/", className, ...props }) {
1369
1474
  reactAriaComponents.Breadcrumbs,
1370
1475
  {
1371
1476
  ...props,
1372
- className: chunkNWGG5WFL_cjs.cn(
1477
+ className: chunk4ACELYEP_cjs.cn(
1373
1478
  "flex items-center gap-2",
1374
1479
  "font-mono text-[12px] text-ink-3",
1375
1480
  // RAC renders Breadcrumbs as <ol> — neutralise list defaults.
@@ -1388,7 +1493,7 @@ function Breadcrumbs({ items, separator = "/", className, ...props }) {
1388
1493
  reactAriaComponents.Link,
1389
1494
  {
1390
1495
  href: item.href,
1391
- className: chunkNWGG5WFL_cjs.cn(
1496
+ className: chunk4ACELYEP_cjs.cn(
1392
1497
  "rounded-sm outline-none cursor-pointer",
1393
1498
  "transition-colors duration-150",
1394
1499
  "hover:text-ink",
@@ -1400,7 +1505,7 @@ function Breadcrumbs({ items, separator = "/", className, ...props }) {
1400
1505
  ) : /* @__PURE__ */ jsxRuntime.jsx(
1401
1506
  "span",
1402
1507
  {
1403
- className: chunkNWGG5WFL_cjs.cn(isLast && "text-ink font-semibold"),
1508
+ className: chunk4ACELYEP_cjs.cn(isLast && "text-ink font-semibold"),
1404
1509
  "aria-current": isLast ? "page" : void 0,
1405
1510
  children: item.label
1406
1511
  }
@@ -1438,7 +1543,7 @@ var cardStyles2 = tailwindVariants.tv({
1438
1543
  }
1439
1544
  });
1440
1545
  function Card({ variant, className, ...props }) {
1441
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunkNWGG5WFL_cjs.cn(cardStyles2({ variant }), className) });
1546
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunk4ACELYEP_cjs.cn(cardStyles2({ variant }), className) });
1442
1547
  }
1443
1548
  var pressableCardStyles = tailwindVariants.tv({
1444
1549
  extend: cardStyles2,
@@ -1456,7 +1561,7 @@ function PressableCard({ variant, className, ...props }) {
1456
1561
  reactAriaComponents.Button,
1457
1562
  {
1458
1563
  ...props,
1459
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
1564
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
1460
1565
  pressableCardStyles({ variant }),
1461
1566
  typeof className === "function" ? className(renderProps) : className
1462
1567
  )
@@ -1468,7 +1573,7 @@ function CardHeader({ className, ...props }) {
1468
1573
  "div",
1469
1574
  {
1470
1575
  ...props,
1471
- className: chunkNWGG5WFL_cjs.cn(
1576
+ className: chunk4ACELYEP_cjs.cn(
1472
1577
  "flex justify-between items-center",
1473
1578
  "px-5 py-3 border-b border-rule",
1474
1579
  "bg-[color-mix(in_oklab,var(--color-surface-2)_60%,var(--color-surface))]",
@@ -1479,14 +1584,14 @@ function CardHeader({ className, ...props }) {
1479
1584
  );
1480
1585
  }
1481
1586
  function CardContent({ className, ...props }) {
1482
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunkNWGG5WFL_cjs.cn("flex flex-col gap-3 p-5", className) });
1587
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunk4ACELYEP_cjs.cn("flex flex-col gap-3 p-5", className) });
1483
1588
  }
1484
1589
  function CardFooter({ className, ...props }) {
1485
1590
  return /* @__PURE__ */ jsxRuntime.jsx(
1486
1591
  "div",
1487
1592
  {
1488
1593
  ...props,
1489
- className: chunkNWGG5WFL_cjs.cn(
1594
+ className: chunk4ACELYEP_cjs.cn(
1490
1595
  "mt-auto flex justify-between items-center",
1491
1596
  "px-5 py-4",
1492
1597
  "font-mono text-[11.5px] text-ink-4",
@@ -1500,7 +1605,7 @@ function CardEyebrow({ className, ...props }) {
1500
1605
  "div",
1501
1606
  {
1502
1607
  ...props,
1503
- className: chunkNWGG5WFL_cjs.cn(
1608
+ className: chunk4ACELYEP_cjs.cn(
1504
1609
  "flex justify-between items-center",
1505
1610
  "font-mono text-[11px] uppercase tracking-[0.08em] text-ink-4",
1506
1611
  className
@@ -1513,7 +1618,7 @@ function CardTitle({ className, ...props }) {
1513
1618
  "h3",
1514
1619
  {
1515
1620
  ...props,
1516
- className: chunkNWGG5WFL_cjs.cn(
1621
+ className: chunk4ACELYEP_cjs.cn(
1517
1622
  "font-sans font-medium text-[20px] leading-[1.25] tracking-[-0.015em] text-ink",
1518
1623
  className
1519
1624
  )
@@ -1525,7 +1630,7 @@ function CardFeatureTitle({ className, ...props }) {
1525
1630
  "h3",
1526
1631
  {
1527
1632
  ...props,
1528
- className: chunkNWGG5WFL_cjs.cn(
1633
+ className: chunk4ACELYEP_cjs.cn(
1529
1634
  "font-sans font-medium text-[26px] leading-[1.2] tracking-[-0.02em] text-ink",
1530
1635
  className
1531
1636
  )
@@ -1533,7 +1638,7 @@ function CardFeatureTitle({ className, ...props }) {
1533
1638
  );
1534
1639
  }
1535
1640
  function CardBody({ className, ...props }) {
1536
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunkNWGG5WFL_cjs.cn("text-[14px] leading-[1.55] text-ink-3", className) });
1641
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunk4ACELYEP_cjs.cn("text-[14px] leading-[1.55] text-ink-3", className) });
1537
1642
  }
1538
1643
  var CHANNEL_ICONS = {
1539
1644
  slack: lucideReact.Hash,
@@ -1557,14 +1662,14 @@ function channelIcon(channel) {
1557
1662
  }
1558
1663
  function ChannelIcon({ channel, className, label }) {
1559
1664
  const Icon = channelIcon(channel);
1560
- return label !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: chunkNWGG5WFL_cjs.cn("size-4", className), role: "img", "aria-label": label }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: chunkNWGG5WFL_cjs.cn("size-4", className), "aria-hidden": true });
1665
+ return label !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: chunk4ACELYEP_cjs.cn("size-4", className), role: "img", "aria-label": label }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: chunk4ACELYEP_cjs.cn("size-4", className), "aria-hidden": true });
1561
1666
  }
1562
1667
  function Checkbox({ children, className, ...props }) {
1563
1668
  return /* @__PURE__ */ jsxRuntime.jsx(
1564
1669
  reactAriaComponents.Checkbox,
1565
1670
  {
1566
1671
  ...props,
1567
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
1672
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
1568
1673
  // `relative` so RAC's visually-hidden <input> — which is absolutely
1569
1674
  // positioned and is the element that actually receives focus — is
1570
1675
  // laid out against THIS checkbox. Without a positioned ancestor here
@@ -1582,7 +1687,7 @@ function Checkbox({ children, className, ...props }) {
1582
1687
  "span",
1583
1688
  {
1584
1689
  "aria-hidden": true,
1585
- className: chunkNWGG5WFL_cjs.cn(
1690
+ className: chunk4ACELYEP_cjs.cn(
1586
1691
  "relative inline-flex items-center justify-center shrink-0",
1587
1692
  "size-[18px] rounded-[4px] border bg-surface",
1588
1693
  "border-ink-4",
@@ -1599,7 +1704,7 @@ function Checkbox({ children, className, ...props }) {
1599
1704
  "svg",
1600
1705
  {
1601
1706
  viewBox: "0 0 12 12",
1602
- className: chunkNWGG5WFL_cjs.cn(
1707
+ className: chunk4ACELYEP_cjs.cn(
1603
1708
  "size-3 text-surface transition-opacity duration-150",
1604
1709
  renderProps.isSelected ? "opacity-100" : "opacity-0"
1605
1710
  ),
@@ -1636,7 +1741,7 @@ function CheckboxGroup({
1636
1741
  reactAriaComponents.CheckboxGroup,
1637
1742
  {
1638
1743
  ...props,
1639
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
1744
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
1640
1745
  "grid gap-2 content-start",
1641
1746
  typeof className === "function" ? className(renderProps) : className
1642
1747
  ),
@@ -1718,14 +1823,14 @@ function ColorInput({
1718
1823
  isInvalid: invalid,
1719
1824
  onBlur: settle,
1720
1825
  ...ariaLabel ? { "aria-label": ariaLabel } : {},
1721
- className: chunkNWGG5WFL_cjs.cn("grid grid-cols-1 gap-1.5 content-start", className),
1826
+ className: chunk4ACELYEP_cjs.cn("grid grid-cols-1 gap-1.5 content-start", className),
1722
1827
  children: [
1723
1828
  label ? /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Label, { className: fieldLabelStyles, children: label }) : null,
1724
1829
  /* @__PURE__ */ jsxRuntime.jsxs(
1725
1830
  "div",
1726
1831
  {
1727
1832
  "data-disabled": isDisabled || void 0,
1728
- className: chunkNWGG5WFL_cjs.cn(
1833
+ className: chunk4ACELYEP_cjs.cn(
1729
1834
  styles4.box(),
1730
1835
  "flex items-center gap-2",
1731
1836
  size === "sm" ? "pl-2" : "pl-2.5",
@@ -1739,7 +1844,7 @@ function ColorInput({
1739
1844
  "aria-label": "Pick color",
1740
1845
  disabled: isDisabled,
1741
1846
  onClick: () => nativeRef.current?.click(),
1742
- className: chunkNWGG5WFL_cjs.cn(
1847
+ className: chunk4ACELYEP_cjs.cn(
1743
1848
  "relative flex shrink-0 items-center justify-center rounded-sm border border-rule",
1744
1849
  "cursor-pointer outline-none",
1745
1850
  "focus-visible:ring-2 focus-visible:ring-[var(--color-accent)]",
@@ -1772,7 +1877,7 @@ function ColorInput({
1772
1877
  placeholder,
1773
1878
  spellCheck: false,
1774
1879
  autoComplete: "off",
1775
- className: chunkNWGG5WFL_cjs.cn(
1880
+ className: chunk4ACELYEP_cjs.cn(
1776
1881
  styles4.content(),
1777
1882
  "min-w-0 flex-1 bg-transparent font-mono outline-none",
1778
1883
  "pl-0",
@@ -1813,7 +1918,7 @@ function Combobox({
1813
1918
  {
1814
1919
  ...props,
1815
1920
  allowsEmptyCollection,
1816
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
1921
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
1817
1922
  "grid grid-cols-1 gap-1.5 content-start",
1818
1923
  typeof className === "function" ? className(renderProps) : className
1819
1924
  ),
@@ -1822,7 +1927,7 @@ function Combobox({
1822
1927
  /* @__PURE__ */ jsxRuntime.jsxs(
1823
1928
  "div",
1824
1929
  {
1825
- className: chunkNWGG5WFL_cjs.cn(
1930
+ className: chunk4ACELYEP_cjs.cn(
1826
1931
  // Box chrome on the wrapper; the inner <input> carries the padding
1827
1932
  // + font so the chevron button sits inside the same border + ring.
1828
1933
  styles4.box(),
@@ -1835,7 +1940,7 @@ function Combobox({
1835
1940
  reactAriaComponents.Input,
1836
1941
  {
1837
1942
  placeholder,
1838
- className: chunkNWGG5WFL_cjs.cn(
1943
+ className: chunk4ACELYEP_cjs.cn(
1839
1944
  "flex-1 min-w-0 bg-transparent outline-none",
1840
1945
  styles4.content(),
1841
1946
  inputClassName
@@ -1845,7 +1950,7 @@ function Combobox({
1845
1950
  /* @__PURE__ */ jsxRuntime.jsx(
1846
1951
  reactAriaComponents.Button,
1847
1952
  {
1848
- className: chunkNWGG5WFL_cjs.cn(
1953
+ className: chunk4ACELYEP_cjs.cn(
1849
1954
  "shrink-0 flex items-center justify-center",
1850
1955
  "size-7 rounded-pill",
1851
1956
  "text-ink-3 hover:text-ink outline-none cursor-pointer"
@@ -1862,7 +1967,7 @@ function Combobox({
1862
1967
  reactAriaComponents.Popover,
1863
1968
  {
1864
1969
  offset: 6,
1865
- className: chunkNWGG5WFL_cjs.cn(
1970
+ className: chunk4ACELYEP_cjs.cn(
1866
1971
  "min-w-[var(--trigger-width)]",
1867
1972
  "rounded-md border border-rule bg-surface p-1",
1868
1973
  "shadow-[var(--shadow-raised)]",
@@ -1873,7 +1978,7 @@ function Combobox({
1873
1978
  reactAriaComponents.ListBox,
1874
1979
  {
1875
1980
  className: "outline-none max-h-72 overflow-auto",
1876
- renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn("px-3 py-2", fieldHintStyles), children: emptyMessage }),
1981
+ renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk4ACELYEP_cjs.cn("px-3 py-2", fieldHintStyles), children: emptyMessage }),
1877
1982
  children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
1878
1983
  ComboboxItem,
1879
1984
  {
@@ -1901,7 +2006,7 @@ function TrailingSlot({ children }) {
1901
2006
  return /* @__PURE__ */ jsxRuntime.jsx(
1902
2007
  "span",
1903
2008
  {
1904
- className: chunkNWGG5WFL_cjs.cn(
2009
+ className: chunk4ACELYEP_cjs.cn(
1905
2010
  "ml-auto pl-2 shrink-0 inline-flex items-center",
1906
2011
  // Hidden by default; revealed when the row is hovered or
1907
2012
  // keyboard-focused. `group/combobox-item` is set on ComboboxItem.
@@ -1927,7 +2032,7 @@ function ComboboxItem(props) {
1927
2032
  reactAriaComponents.ListBoxItem,
1928
2033
  {
1929
2034
  ...props,
1930
- className: chunkNWGG5WFL_cjs.cn(
2035
+ className: chunk4ACELYEP_cjs.cn(
1931
2036
  // `group/combobox-item` exposes hover/focus state to the trailing
1932
2037
  // slot so it can reveal itself only when the row is engaged.
1933
2038
  "group/combobox-item",
@@ -2255,7 +2360,7 @@ function Kbd({ className, children, ...props }) {
2255
2360
  "kbd",
2256
2361
  {
2257
2362
  ...props,
2258
- className: chunkNWGG5WFL_cjs.cn(
2363
+ className: chunk4ACELYEP_cjs.cn(
2259
2364
  "inline-flex items-center justify-center",
2260
2365
  "font-mono text-[10.5px] leading-none text-ink-4",
2261
2366
  "bg-surface-2 border border-rule rounded-[4px]",
@@ -2275,7 +2380,7 @@ function CommandHint({ combo, tone = "subtle", className }) {
2275
2380
  return /* @__PURE__ */ jsxRuntime.jsx(
2276
2381
  Kbd,
2277
2382
  {
2278
- className: chunkNWGG5WFL_cjs.cn(tone === "prominent" && "bg-ink text-surface border-transparent", className),
2383
+ className: chunk4ACELYEP_cjs.cn(tone === "prominent" && "bg-ink text-surface border-transparent", className),
2279
2384
  children: label
2280
2385
  }
2281
2386
  );
@@ -2299,7 +2404,7 @@ function Command({ combo, target, className, label, children }) {
2299
2404
  },
2300
2405
  { label: () => label ?? accessibleName(resolveTarget()) }
2301
2406
  );
2302
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: wrapperRef, className: chunkNWGG5WFL_cjs.cn("relative inline-block", className), children: [
2407
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: wrapperRef, className: chunk4ACELYEP_cjs.cn("relative inline-block", className), children: [
2303
2408
  children,
2304
2409
  discoveryActive ? /* @__PURE__ */ jsxRuntime.jsx(
2305
2410
  "div",
@@ -2374,7 +2479,7 @@ function ConversationBriefCard({
2374
2479
  isOpenDisabled = false,
2375
2480
  className
2376
2481
  }) {
2377
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(styles.root(), className), children: [
2482
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk4ACELYEP_cjs.cn(styles.root(), className), children: [
2378
2483
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.icon(), children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Phone, { className: "size-4", "aria-hidden": true }) }),
2379
2484
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.body(), children: [
2380
2485
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: styles.eyebrow(), children: eyebrow }),
@@ -2412,7 +2517,7 @@ function Select({
2412
2517
  reactAriaComponents.Select,
2413
2518
  {
2414
2519
  ...props,
2415
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
2520
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
2416
2521
  "grid grid-cols-1 gap-1.5 content-start",
2417
2522
  typeof className === "function" ? className(renderProps) : className
2418
2523
  ),
@@ -2421,7 +2526,7 @@ function Select({
2421
2526
  /* @__PURE__ */ jsxRuntime.jsxs(
2422
2527
  reactAriaComponents.Button,
2423
2528
  {
2424
- className: chunkNWGG5WFL_cjs.cn(
2529
+ className: chunk4ACELYEP_cjs.cn(
2425
2530
  styles4.box(),
2426
2531
  styles4.content(),
2427
2532
  "flex items-center justify-between gap-3 text-left cursor-pointer",
@@ -2439,7 +2544,7 @@ function Select({
2439
2544
  reactAriaComponents.Popover,
2440
2545
  {
2441
2546
  offset: 6,
2442
- className: chunkNWGG5WFL_cjs.cn(
2547
+ className: chunk4ACELYEP_cjs.cn(
2443
2548
  // Match the trigger width exactly (RAC exposes --trigger-width on
2444
2549
  // the Popover when anchored to a Select button).
2445
2550
  "w-[var(--trigger-width)]",
@@ -2463,7 +2568,7 @@ function Select({
2463
2568
  },
2464
2569
  option.id
2465
2570
  )) }),
2466
- options.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn("px-3 py-2", fieldHintStyles), children: placeholder }) : null
2571
+ options.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk4ACELYEP_cjs.cn("px-3 py-2", fieldHintStyles), children: placeholder }) : null
2467
2572
  ]
2468
2573
  }
2469
2574
  )
@@ -2476,7 +2581,7 @@ function SelectItem(props) {
2476
2581
  reactAriaComponents.ListBoxItem,
2477
2582
  {
2478
2583
  ...props,
2479
- className: chunkNWGG5WFL_cjs.cn(
2584
+ className: chunk4ACELYEP_cjs.cn(
2480
2585
  "flex items-center justify-between gap-3",
2481
2586
  "rounded-[6px] px-3 py-2 text-[14px] text-ink-2",
2482
2587
  "cursor-pointer outline-none select-none",
@@ -2519,9 +2624,13 @@ function ConversationBriefPreview({
2519
2624
  contentClassName,
2520
2625
  renderContent,
2521
2626
  onEdit,
2522
- editor
2627
+ editor,
2628
+ aside,
2629
+ isMetaHidden = false,
2630
+ isSubjectHidden = false
2523
2631
  }) {
2524
2632
  const [pickedContactId, setPickedContactId] = react.useState("");
2633
+ const [isPickingTarget, setIsPickingTarget] = react.useState(false);
2525
2634
  const contact = contacts.find((entry) => entry.id === pickedContactId) ?? contacts[0] ?? null;
2526
2635
  const numbers = react.useMemo(() => contactPhoneNumbers(contact), [contact]);
2527
2636
  const [pickedNumber, setPickedNumber] = react.useState("");
@@ -2533,23 +2642,26 @@ function ConversationBriefPreview({
2533
2642
  react.useEffect(() => {
2534
2643
  onSelectionChangeRef.current?.(contact, phoneNumber);
2535
2644
  }, [contact, phoneNumber]);
2536
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn("flex flex-col gap-3", className), children: [
2537
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
2645
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk4ACELYEP_cjs.cn("flex flex-col gap-3", className), children: [
2646
+ isSubjectHidden ? null : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
2538
2647
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[14px] font-semibold text-ink", children: brief.subject || names || "Prepared conversation" }),
2539
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-mono text-[10.5px] text-ink-4", children: [
2648
+ isMetaHidden ? null : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-mono text-[10.5px] text-ink-4", children: [
2540
2649
  brief.subject ? names : "",
2541
2650
  brief.channel ? `Channel ${brief.channel}` : "Any channel",
2542
2651
  brief.type_key ? `Type ${brief.type_key}` : "",
2543
2652
  brief.status === "prepared" ? "Prepared" : brief.status === "used" ? "Call held" : "Discarded"
2544
2653
  ].filter(Boolean).join(" \xB7 ") })
2545
2654
  ] }),
2546
- editor ?? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "group/brief-content relative", children: [
2655
+ editor ?? // A flex column of its own so a host that gives the box `flex-1`
2656
+ // (the call window) gets a scrolling box that fills the remaining
2657
+ // height; in an unconstrained host (a modal) it just wraps.
2658
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "group/brief-content relative flex min-h-0 flex-1 flex-col", children: [
2547
2659
  /* @__PURE__ */ jsxRuntime.jsx(
2548
2660
  "div",
2549
2661
  {
2550
- className: chunkNWGG5WFL_cjs.cn(
2662
+ className: chunk4ACELYEP_cjs.cn(
2551
2663
  "rounded-md border border-rule-2 bg-surface-2/60 px-3 py-2.5",
2552
- "text-[13px] leading-relaxed text-ink-2 overflow-y-auto [scrollbar-width:thin]",
2664
+ "min-h-0 text-[13px] leading-relaxed text-ink-2 overflow-y-auto [scrollbar-width:thin]",
2553
2665
  renderContent ? null : "whitespace-pre-wrap",
2554
2666
  contentClassName
2555
2667
  ),
@@ -2561,7 +2673,7 @@ function ConversationBriefPreview({
2561
2673
  {
2562
2674
  "aria-label": "Edit brief",
2563
2675
  onPress: onEdit,
2564
- className: chunkNWGG5WFL_cjs.cn(
2676
+ className: chunk4ACELYEP_cjs.cn(
2565
2677
  "absolute right-1.5 top-1.5 inline-flex size-7 cursor-pointer items-center justify-center",
2566
2678
  "rounded-md bg-surface/80 text-ink-3 outline-none transition-opacity",
2567
2679
  "opacity-0 group-hover/brief-content:opacity-100 focus-visible:opacity-100",
@@ -2573,31 +2685,124 @@ function ConversationBriefPreview({
2573
2685
  ) : null
2574
2686
  ] }),
2575
2687
  onCall ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 border-t border-rule-2 pt-3", children: [
2576
- contacts.length > 1 ? /* @__PURE__ */ jsxRuntime.jsx(
2577
- Select,
2578
- {
2579
- "aria-label": "Who to call",
2580
- selectedKey: contact?.id ?? "",
2581
- onSelectionChange: (key) => {
2582
- setPickedContactId(String(key));
2583
- setPickedNumber("");
2584
- },
2585
- options: contacts.map((entry) => ({ id: entry.id, label: entry.name || entry.id }))
2586
- }
2587
- ) : null,
2588
- numbers.length > 1 ? /* @__PURE__ */ jsxRuntime.jsx(
2589
- Select,
2688
+ /* @__PURE__ */ jsxRuntime.jsxs(
2689
+ "div",
2590
2690
  {
2591
- "aria-label": "Number to call",
2592
- selectedKey: phoneNumber,
2593
- onSelectionChange: (key) => setPickedNumber(String(key)),
2594
- options: numbers.map((number) => ({ id: number, label: number }))
2691
+ className: chunk4ACELYEP_cjs.cn(
2692
+ "grid gap-3",
2693
+ aside ? "grid-cols-[minmax(0,1fr)_minmax(0,1fr)]" : "grid-cols-1"
2694
+ ),
2695
+ children: [
2696
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col gap-2", children: [
2697
+ isPickingTarget && (contacts.length > 1 || numbers.length > 1) ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col gap-1", children: [
2698
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-mono text-[10px] uppercase tracking-[0.08em] text-ink-4", children: "Calling" }),
2699
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-start gap-1.5", children: [
2700
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1.5", children: [
2701
+ contacts.length > 1 ? /* @__PURE__ */ jsxRuntime.jsx(
2702
+ Select,
2703
+ {
2704
+ "aria-label": "Who to call",
2705
+ size: "sm",
2706
+ autoFocus: true,
2707
+ selectedKey: contact?.id ?? "",
2708
+ onSelectionChange: (key) => {
2709
+ setPickedContactId(String(key));
2710
+ setPickedNumber("");
2711
+ const picked = contacts.find((entry) => entry.id === String(key));
2712
+ if (contactPhoneNumbers(picked).length <= 1) setIsPickingTarget(false);
2713
+ },
2714
+ options: contacts.map((entry) => ({
2715
+ id: entry.id,
2716
+ label: entry.name || entry.id
2717
+ }))
2718
+ }
2719
+ ) : null,
2720
+ numbers.length > 1 ? /* @__PURE__ */ jsxRuntime.jsx(
2721
+ Select,
2722
+ {
2723
+ "aria-label": "Number to dial",
2724
+ size: "sm",
2725
+ ...contacts.length > 1 ? {} : { autoFocus: true },
2726
+ selectedKey: phoneNumber,
2727
+ onSelectionChange: (key) => {
2728
+ if (key !== null) setPickedNumber(String(key));
2729
+ setIsPickingTarget(false);
2730
+ },
2731
+ options: numbers.map((number) => ({ id: number, label: number }))
2732
+ }
2733
+ ) : null
2734
+ ] }),
2735
+ /* @__PURE__ */ jsxRuntime.jsx(
2736
+ chunk4ACELYEP_cjs.Button,
2737
+ {
2738
+ variant: "ghost",
2739
+ size: "icon-sm",
2740
+ "aria-label": "Keep the current number",
2741
+ onPress: () => setIsPickingTarget(false),
2742
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { "aria-hidden": true })
2743
+ }
2744
+ )
2745
+ ] })
2746
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "group/dial flex min-w-0 flex-col gap-1", children: [
2747
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-mono text-[10px] uppercase tracking-[0.08em] text-ink-4", children: "Calling" }),
2748
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-9 min-w-0 items-center gap-2", children: [
2749
+ (() => {
2750
+ const hasChoice = contacts.length > 1 || numbers.length > 1;
2751
+ const valueText = phoneNumber ? contacts.length > 1 ? `${contact?.name || contact?.id} \xB7 ${phoneNumber}` : phoneNumber : contact ? `${contacts.length > 1 ? `${contact.name || contact.id} \xB7 ` : ""}no phone number on file` : "No contact to call.";
2752
+ const valueClassName = chunk4ACELYEP_cjs.cn(
2753
+ "min-w-0 truncate text-[12px] tabular-nums",
2754
+ phoneNumber ? "text-ink-2" : "text-warning"
2755
+ );
2756
+ const icon = /* @__PURE__ */ jsxRuntime.jsx(
2757
+ lucideReact.Phone,
2758
+ {
2759
+ className: chunk4ACELYEP_cjs.cn(
2760
+ "size-3 shrink-0",
2761
+ phoneNumber ? "text-ink-4" : "text-warning"
2762
+ ),
2763
+ "aria-hidden": true
2764
+ }
2765
+ );
2766
+ return hasChoice ? /* @__PURE__ */ jsxRuntime.jsxs(
2767
+ reactAriaComponents.Button,
2768
+ {
2769
+ className: chunk4ACELYEP_cjs.cn(
2770
+ "flex min-w-0 cursor-pointer items-center gap-2 rounded-sm text-left outline-none",
2771
+ "hover:text-ink focus-visible:shadow-[var(--shadow-focus)]"
2772
+ ),
2773
+ onPress: () => setIsPickingTarget(true),
2774
+ children: [
2775
+ icon,
2776
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: valueClassName, title: phoneNumber, children: valueText })
2777
+ ]
2778
+ }
2779
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2780
+ icon,
2781
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: valueClassName, title: phoneNumber, children: valueText })
2782
+ ] });
2783
+ })(),
2784
+ contacts.length > 1 || numbers.length > 1 ? /* @__PURE__ */ jsxRuntime.jsx(
2785
+ chunk4ACELYEP_cjs.Button,
2786
+ {
2787
+ variant: "ghost",
2788
+ size: "icon-sm",
2789
+ "aria-label": "Change the number to dial",
2790
+ className: "opacity-0 transition-opacity group-hover/dial:opacity-100 focus-visible:opacity-100",
2791
+ onPress: () => setIsPickingTarget(true),
2792
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pencil, { "aria-hidden": true })
2793
+ }
2794
+ ) : null
2795
+ ] })
2796
+ ] }),
2797
+ controls
2798
+ ] }),
2799
+ aside ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 min-w-0", children: aside }) : null
2800
+ ]
2595
2801
  }
2596
- ) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-mono text-[12px] text-ink-3", children: phoneNumber || (contact ? "This contact has no phone number on file." : "No contact to call.") }),
2597
- controls,
2802
+ ),
2598
2803
  callDisabledReason ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[12px] text-warning", children: callDisabledReason }) : null,
2599
2804
  isCallButtonHidden ? null : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsxs(
2600
- chunkNWGG5WFL_cjs.Button,
2805
+ chunk4ACELYEP_cjs.Button,
2601
2806
  {
2602
2807
  isDisabled: isCallDisabled || !isOpen || phoneNumber === "" || !contact,
2603
2808
  onPress: () => contact && onCall(contact, phoneNumber),
@@ -2627,7 +2832,7 @@ function ModalContent({
2627
2832
  {
2628
2833
  isDismissable,
2629
2834
  ...props,
2630
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
2835
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
2631
2836
  "fixed inset-0 z-50 flex items-center justify-center p-4",
2632
2837
  // Warm ink scrim — stays in the Proteos palette (no pure black).
2633
2838
  "bg-[color-mix(in_oklab,var(--color-ink)_40%,transparent)]",
@@ -2638,7 +2843,7 @@ function ModalContent({
2638
2843
  children: /* @__PURE__ */ jsxRuntime.jsx(
2639
2844
  reactAriaComponents.Modal,
2640
2845
  {
2641
- className: chunkNWGG5WFL_cjs.cn(
2846
+ className: chunk4ACELYEP_cjs.cn(
2642
2847
  "w-full max-w-lg",
2643
2848
  // Cap the panel at the viewport (minus the overlay's p-4) and lay it
2644
2849
  // out as a column so a tall body scrolls instead of overflowing the
@@ -2653,7 +2858,7 @@ function ModalContent({
2653
2858
  children: /* @__PURE__ */ jsxRuntime.jsx(
2654
2859
  reactAriaComponents.Dialog,
2655
2860
  {
2656
- className: chunkNWGG5WFL_cjs.cn("outline-none flex flex-col min-h-0 overflow-hidden", dialogClassName),
2861
+ className: chunk4ACELYEP_cjs.cn("outline-none flex flex-col min-h-0 overflow-hidden", dialogClassName),
2657
2862
  ...ariaLabel !== void 0 ? { "aria-label": ariaLabel } : {},
2658
2863
  children
2659
2864
  }
@@ -2664,7 +2869,7 @@ function ModalContent({
2664
2869
  );
2665
2870
  }
2666
2871
  function ModalHeader({ className, ...props }) {
2667
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunkNWGG5WFL_cjs.cn("shrink-0 px-5 pt-5 pb-3 flex flex-col gap-1.5", className) });
2872
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunk4ACELYEP_cjs.cn("shrink-0 px-5 pt-5 pb-3 flex flex-col gap-1.5", className) });
2668
2873
  }
2669
2874
  function ModalTitle({ className, ...props }) {
2670
2875
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -2672,7 +2877,7 @@ function ModalTitle({ className, ...props }) {
2672
2877
  {
2673
2878
  slot: "title",
2674
2879
  ...props,
2675
- className: chunkNWGG5WFL_cjs.cn(
2880
+ className: chunk4ACELYEP_cjs.cn(
2676
2881
  "font-sans font-medium text-[20px] leading-[1.25] tracking-[-0.015em] text-ink",
2677
2882
  className
2678
2883
  )
@@ -2680,14 +2885,14 @@ function ModalTitle({ className, ...props }) {
2680
2885
  );
2681
2886
  }
2682
2887
  function ModalDescription({ className, ...props }) {
2683
- return /* @__PURE__ */ jsxRuntime.jsx("p", { ...props, className: chunkNWGG5WFL_cjs.cn("text-[14px] leading-[1.55] text-ink-3", className) });
2888
+ return /* @__PURE__ */ jsxRuntime.jsx("p", { ...props, className: chunk4ACELYEP_cjs.cn("text-[14px] leading-[1.55] text-ink-3", className) });
2684
2889
  }
2685
2890
  function ModalBody({ className, ...props }) {
2686
2891
  return /* @__PURE__ */ jsxRuntime.jsx(
2687
2892
  "div",
2688
2893
  {
2689
2894
  ...props,
2690
- className: chunkNWGG5WFL_cjs.cn(
2895
+ className: chunk4ACELYEP_cjs.cn(
2691
2896
  // The scroll region: caps at the panel's spare height and scrolls when
2692
2897
  // the content is taller, leaving header + footer pinned.
2693
2898
  "min-h-0 overflow-y-auto px-5 py-3 flex flex-col gap-3 text-[14px] text-ink-2",
@@ -2701,7 +2906,7 @@ function ModalFooter({ className, ...props }) {
2701
2906
  "div",
2702
2907
  {
2703
2908
  ...props,
2704
- className: chunkNWGG5WFL_cjs.cn("shrink-0 flex justify-end items-center gap-2", "px-5 pt-3 pb-5", className)
2909
+ className: chunk4ACELYEP_cjs.cn("shrink-0 flex justify-end items-center gap-2", "px-5 pt-3 pb-5", className)
2705
2910
  }
2706
2911
  );
2707
2912
  }
@@ -2863,12 +3068,12 @@ function CurrencyInput({
2863
3068
  const selectedSymbol = currencyOptions.find((option) => option.code === code)?.symbol ?? code;
2864
3069
  const styles4 = fieldControlStyles({ size, appearance, ...isInvalid ? { invalid: true } : {} });
2865
3070
  const focusWithin = appearance === "cell" ? "focus-within:border-accent focus-within:shadow-none" : "focus-within:border-accent focus-within:shadow-[var(--shadow-focus)]";
2866
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn("grid grid-cols-1 gap-1.5 content-start", className), children: [
2867
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(styles4.box(), "flex items-center gap-1 pr-1", focusWithin), children: [
3071
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk4ACELYEP_cjs.cn("grid grid-cols-1 gap-1.5 content-start", className), children: [
3072
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk4ACELYEP_cjs.cn(styles4.box(), "flex items-center gap-1 pr-1", focusWithin), children: [
2868
3073
  /* @__PURE__ */ jsxRuntime.jsx(
2869
3074
  "input",
2870
3075
  {
2871
- className: chunkNWGG5WFL_cjs.cn(
3076
+ className: chunk4ACELYEP_cjs.cn(
2872
3077
  "min-w-0 flex-1 bg-transparent text-ink outline-none tabular-nums",
2873
3078
  styles4.content(),
2874
3079
  // Sit a touch lower than a standard field by trimming the vertical
@@ -2909,7 +3114,7 @@ function CurrencyInput({
2909
3114
  /* @__PURE__ */ jsxRuntime.jsxs(
2910
3115
  reactAriaComponents.Button,
2911
3116
  {
2912
- className: chunkNWGG5WFL_cjs.cn(
3117
+ className: chunk4ACELYEP_cjs.cn(
2913
3118
  "inline-flex h-6 shrink-0 items-center gap-0.5 rounded-md px-1.5",
2914
3119
  "text-ink-2 outline-none hover:bg-surface-2 hover:text-ink",
2915
3120
  "cursor-pointer focus-visible:shadow-[var(--shadow-focus)]",
@@ -2925,7 +3130,7 @@ function CurrencyInput({
2925
3130
  reactAriaComponents.Popover,
2926
3131
  {
2927
3132
  offset: 6,
2928
- className: chunkNWGG5WFL_cjs.cn(
3133
+ className: chunk4ACELYEP_cjs.cn(
2929
3134
  "min-w-[9rem] rounded-md border border-rule bg-surface p-1",
2930
3135
  "shadow-[var(--shadow-raised)]",
2931
3136
  "entering:animate-enter-slide-down",
@@ -2936,7 +3141,7 @@ function CurrencyInput({
2936
3141
  {
2937
3142
  id: option.code,
2938
3143
  textValue: `${option.symbol ?? ""} ${option.code}`,
2939
- className: chunkNWGG5WFL_cjs.cn(
3144
+ className: chunk4ACELYEP_cjs.cn(
2940
3145
  "flex items-center gap-2 rounded-[6px] px-2.5 py-1.5 text-[14px] text-ink-2",
2941
3146
  "cursor-pointer select-none outline-none",
2942
3147
  "data-[hovered]:bg-surface-2 data-[hovered]:text-ink",
@@ -2998,12 +3203,12 @@ function DateTimeCell({
2998
3203
  }
2999
3204
  function BooleanCell({ value, className }) {
3000
3205
  if (value === true) {
3001
- return /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-label": "true", className: chunkNWGG5WFL_cjs.cn("text-success", className), children: /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, {}) });
3206
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-label": "true", className: chunk4ACELYEP_cjs.cn("text-success", className), children: /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, {}) });
3002
3207
  }
3003
3208
  if (value === false) {
3004
- return /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-label": "false", className: chunkNWGG5WFL_cjs.cn("text-ink-4", className), children: /* @__PURE__ */ jsxRuntime.jsx(MinusIcon, {}) });
3209
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-label": "false", className: chunk4ACELYEP_cjs.cn("text-ink-4", className), children: /* @__PURE__ */ jsxRuntime.jsx(MinusIcon, {}) });
3005
3210
  }
3006
- return /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("text-ink-4", className), children: "\u2014" });
3211
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk4ACELYEP_cjs.cn("text-ink-4", className), children: "\u2014" });
3007
3212
  }
3008
3213
  function CheckIcon() {
3009
3214
  return /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -3022,7 +3227,7 @@ function MinusIcon() {
3022
3227
  }
3023
3228
  function TruncateCell({ value, title, className }) {
3024
3229
  const tooltip = title ?? (typeof value === "string" ? value : void 0);
3025
- return /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("truncate min-w-0", className), title: tooltip, children: value ?? "\u2014" });
3230
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk4ACELYEP_cjs.cn("truncate min-w-0", className), title: tooltip, children: value ?? "\u2014" });
3026
3231
  }
3027
3232
  function LinkCell({ children, onClick, className, ...props }) {
3028
3233
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -3033,7 +3238,7 @@ function LinkCell({ children, onClick, className, ...props }) {
3033
3238
  e.stopPropagation();
3034
3239
  onClick?.(e);
3035
3240
  },
3036
- className: chunkNWGG5WFL_cjs.cn(
3241
+ className: chunk4ACELYEP_cjs.cn(
3037
3242
  "text-ink underline decoration-rule underline-offset-2 hover:decoration-ink",
3038
3243
  className
3039
3244
  ),
@@ -3054,7 +3259,7 @@ var tableStyles = tailwindVariants.tv({
3054
3259
  defaultVariants: { variant: "panel" }
3055
3260
  });
3056
3261
  function Table({ variant, className, ...props }) {
3057
- return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "grid", ...props, className: chunkNWGG5WFL_cjs.cn(tableStyles({ variant }), className) });
3262
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "grid", ...props, className: chunk4ACELYEP_cjs.cn(tableStyles({ variant }), className) });
3058
3263
  }
3059
3264
  var tableHeaderStyles = tailwindVariants.tv({
3060
3265
  base: [
@@ -3070,7 +3275,7 @@ var tableHeaderStyles = tailwindVariants.tv({
3070
3275
  defaultVariants: { sticky: false }
3071
3276
  });
3072
3277
  function TableHeader({ sticky, className, ...props }) {
3073
- return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "row", ...props, className: chunkNWGG5WFL_cjs.cn(tableHeaderStyles({ sticky }), className) });
3278
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "row", ...props, className: chunk4ACELYEP_cjs.cn(tableHeaderStyles({ sticky }), className) });
3074
3279
  }
3075
3280
  var tableHeaderCellStyles = tailwindVariants.tv({
3076
3281
  base: [
@@ -3247,7 +3452,7 @@ function TableHeaderCell({
3247
3452
  style: { ...widthStyle, ...style },
3248
3453
  onClick: handleClick,
3249
3454
  onKeyDown: handleKeyDown,
3250
- className: chunkNWGG5WFL_cjs.cn(
3455
+ className: chunk4ACELYEP_cjs.cn(
3251
3456
  tableHeaderCellStyles({ align, interactive: isSortable, active, sticky }),
3252
3457
  "group/header",
3253
3458
  dragState.kind === "dragging" ? "opacity-40" : "",
@@ -3260,7 +3465,7 @@ function TableHeaderCell({
3260
3465
  ref: handleRef,
3261
3466
  "data-dnd-handle": "true",
3262
3467
  "aria-hidden": "true",
3263
- className: chunkNWGG5WFL_cjs.cn(
3468
+ className: chunk4ACELYEP_cjs.cn(
3264
3469
  "inline-flex items-center justify-center shrink-0 -ml-1.5",
3265
3470
  "cursor-grab active:cursor-grabbing text-ink-4",
3266
3471
  "opacity-0 group-hover/header:opacity-100 transition-opacity"
@@ -3271,7 +3476,7 @@ function TableHeaderCell({
3271
3476
  /* @__PURE__ */ jsxRuntime.jsxs(
3272
3477
  "span",
3273
3478
  {
3274
- className: chunkNWGG5WFL_cjs.cn(
3479
+ className: chunk4ACELYEP_cjs.cn(
3275
3480
  "flex items-center gap-[7px] min-w-0 flex-1",
3276
3481
  align === "right" ? "justify-end" : align === "center" ? "justify-center" : "justify-start"
3277
3482
  ),
@@ -3291,7 +3496,7 @@ function TableHeaderCell({
3291
3496
  e.stopPropagation();
3292
3497
  onRemove();
3293
3498
  },
3294
- className: chunkNWGG5WFL_cjs.cn(
3499
+ className: chunk4ACELYEP_cjs.cn(
3295
3500
  "inline-flex items-center justify-center shrink-0 size-4 rounded",
3296
3501
  "text-ink-4 hover:text-ink hover:bg-surface-2",
3297
3502
  "opacity-0 group-hover/header:opacity-100 focus-visible:opacity-100",
@@ -3304,7 +3509,7 @@ function TableHeaderCell({
3304
3509
  "div",
3305
3510
  {
3306
3511
  "aria-hidden": "true",
3307
- className: chunkNWGG5WFL_cjs.cn(
3512
+ className: chunk4ACELYEP_cjs.cn(
3308
3513
  "pointer-events-none absolute inset-y-0 z-10 w-0.5 bg-accent",
3309
3514
  dragState.edge === "left" ? "-left-px" : "-right-px"
3310
3515
  )
@@ -3329,7 +3534,7 @@ function TableHeaderCell({
3329
3534
  onPointerDown: startResize,
3330
3535
  onKeyDown: resizeByKey,
3331
3536
  onClick: (e) => e.stopPropagation(),
3332
- className: chunkNWGG5WFL_cjs.cn(
3537
+ className: chunk4ACELYEP_cjs.cn(
3333
3538
  "group/resize absolute inset-y-0 -right-1 z-10 w-2 cursor-col-resize outline-none",
3334
3539
  "flex justify-center"
3335
3540
  ),
@@ -3337,7 +3542,7 @@ function TableHeaderCell({
3337
3542
  "span",
3338
3543
  {
3339
3544
  "aria-hidden": "true",
3340
- className: chunkNWGG5WFL_cjs.cn(
3545
+ className: chunk4ACELYEP_cjs.cn(
3341
3546
  "h-full w-0.5 transition-colors",
3342
3547
  isResizing ? "bg-accent" : "bg-transparent group-hover/resize:bg-accent group-focus-visible/resize:bg-accent"
3343
3548
  )
@@ -3358,7 +3563,7 @@ function SortIcon({ dir, active }) {
3358
3563
  height: "11",
3359
3564
  viewBox: "0 0 8 11",
3360
3565
  "aria-hidden": "true",
3361
- className: chunkNWGG5WFL_cjs.cn("shrink-0", active ? "text-accent" : "text-ink-4"),
3566
+ className: chunk4ACELYEP_cjs.cn("shrink-0", active ? "text-accent" : "text-ink-4"),
3362
3567
  children: [
3363
3568
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 0.5 L7.5 4 L0.5 4 Z", fill: "currentColor", opacity: dir === "asc" ? 1 : 0.22 }),
3364
3569
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 10.5 L0.5 7 L7.5 7 Z", fill: "currentColor", opacity: dir === "desc" ? 1 : 0.22 })
@@ -3372,7 +3577,7 @@ function TableHeaderSpacer({ className, ...props }) {
3372
3577
  {
3373
3578
  "aria-hidden": "true",
3374
3579
  ...props,
3375
- className: chunkNWGG5WFL_cjs.cn("flex-1 h-[36px] border-r-0", "bg-transparent pointer-events-none", className)
3580
+ className: chunk4ACELYEP_cjs.cn("flex-1 h-[36px] border-r-0", "bg-transparent pointer-events-none", className)
3376
3581
  }
3377
3582
  );
3378
3583
  }
@@ -3392,7 +3597,7 @@ var tableBodyStyles = tailwindVariants.tv({
3392
3597
  base: ["flex-1 min-h-0 overflow-auto relative", ...scrollbarChrome]
3393
3598
  });
3394
3599
  function TableBody({ className, ref, ...props }) {
3395
- return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "rowgroup", ref, ...props, className: chunkNWGG5WFL_cjs.cn(tableBodyStyles(), className) });
3600
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "rowgroup", ref, ...props, className: chunk4ACELYEP_cjs.cn(tableBodyStyles(), className) });
3396
3601
  }
3397
3602
  var tableScrollerStyles = tailwindVariants.tv({
3398
3603
  base: ["relative flex-1 min-h-0 overflow-auto", ...scrollbarChrome]
@@ -3404,7 +3609,7 @@ function TableScroller({ className, ref, ...props }) {
3404
3609
  role: "presentation",
3405
3610
  ref,
3406
3611
  ...props,
3407
- className: chunkNWGG5WFL_cjs.cn(tableScrollerStyles(), className)
3612
+ className: chunk4ACELYEP_cjs.cn(tableScrollerStyles(), className)
3408
3613
  }
3409
3614
  );
3410
3615
  }
@@ -3456,7 +3661,7 @@ function TableRow({
3456
3661
  onClick?.(e);
3457
3662
  onRowClick?.(e);
3458
3663
  },
3459
- className: chunkNWGG5WFL_cjs.cn(tableRowStyles({ alt, interactive, absolute }), className)
3664
+ className: chunk4ACELYEP_cjs.cn(tableRowStyles({ alt, interactive, absolute }), className)
3460
3665
  }
3461
3666
  );
3462
3667
  }
@@ -3510,7 +3715,7 @@ function TableCell({
3510
3715
  role: "gridcell",
3511
3716
  ...props,
3512
3717
  style: { ...widthStyle, ...style },
3513
- className: chunkNWGG5WFL_cjs.cn(tableCellStyles({ align, mono, ink, sticky }), className)
3718
+ className: chunk4ACELYEP_cjs.cn(tableCellStyles({ align, mono, ink, sticky }), className)
3514
3719
  }
3515
3720
  );
3516
3721
  }
@@ -3525,7 +3730,7 @@ function DataTableEmpty({
3525
3730
  "div",
3526
3731
  {
3527
3732
  role: "status",
3528
- className: chunkNWGG5WFL_cjs.cn(
3733
+ className: chunk4ACELYEP_cjs.cn(
3529
3734
  "flex flex-col items-center justify-center gap-2",
3530
3735
  "px-5 py-16 text-center",
3531
3736
  "font-sans text-[13px] text-ink-3",
@@ -3545,7 +3750,7 @@ function DataTableError({ error, onRetry, className }) {
3545
3750
  "div",
3546
3751
  {
3547
3752
  role: "alert",
3548
- className: chunkNWGG5WFL_cjs.cn(
3753
+ className: chunk4ACELYEP_cjs.cn(
3549
3754
  "flex flex-col items-center justify-center gap-3",
3550
3755
  "px-5 py-16 text-center",
3551
3756
  "font-sans text-[13px] text-ink-3",
@@ -3554,7 +3759,7 @@ function DataTableError({ error, onRetry, className }) {
3554
3759
  children: [
3555
3760
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-danger text-[14px]", children: "Something went wrong" }),
3556
3761
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-ink-3 max-w-[48ch] font-mono text-[12px]", children: error.message }),
3557
- onRetry ? /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { variant: "ghost", size: "sm", onPress: onRetry, children: "Retry" }) : null
3762
+ onRetry ? /* @__PURE__ */ jsxRuntime.jsx(chunk4ACELYEP_cjs.Button, { variant: "ghost", size: "sm", onPress: onRetry, children: "Retry" }) : null
3558
3763
  ]
3559
3764
  }
3560
3765
  );
@@ -3573,7 +3778,7 @@ function DataTableSkeleton({
3573
3778
  TableCell,
3574
3779
  {
3575
3780
  width: w,
3576
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Skeleton, { shape: "text", className: "h-3 max-w-[60%]" })
3781
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunk4ACELYEP_cjs.Skeleton, { shape: "text", className: "h-3 max-w-[60%]" })
3577
3782
  },
3578
3783
  colIdx
3579
3784
  ))
@@ -3616,6 +3821,8 @@ function DataTable({
3616
3821
  onSortingChange,
3617
3822
  rowHeight = DEFAULT_ROW_HEIGHT,
3618
3823
  overscan = 8,
3824
+ scrollRestorationId,
3825
+ initialScrollOffset,
3619
3826
  onRowClick,
3620
3827
  zebra = true,
3621
3828
  emptyState,
@@ -3778,7 +3985,10 @@ function DataTable({
3778
3985
  return items;
3779
3986
  }, [tableRows, groupBy]);
3780
3987
  const scrollerRef = react.useRef(null);
3988
+ const mountedSorting = react.useRef(sorting);
3781
3989
  react.useEffect(() => {
3990
+ if (sorting === mountedSorting.current) return;
3991
+ mountedSorting.current = sorting;
3782
3992
  scrollerRef.current?.scrollTo({ top: 0 });
3783
3993
  }, [sorting]);
3784
3994
  const listRef = react.useRef(null);
@@ -3793,7 +4003,8 @@ function DataTable({
3793
4003
  getScrollElement: () => scrollerRef.current,
3794
4004
  estimateSize: (index) => listItems[index]?.kind === "group" ? headingHeight : rowHeight,
3795
4005
  overscan,
3796
- scrollMargin: listOffset
4006
+ scrollMargin: listOffset,
4007
+ ...initialScrollOffset !== void 0 ? { initialOffset: initialScrollOffset } : {}
3797
4008
  });
3798
4009
  const sentinelRef = useInfiniteScrollSentinel({
3799
4010
  onIntersect: () => {
@@ -3852,12 +4063,13 @@ function DataTable({
3852
4063
  {
3853
4064
  ...ariaLabel !== void 0 ? { "aria-label": ariaLabel } : {},
3854
4065
  variant,
3855
- className: chunkNWGG5WFL_cjs.cn("flex-1 min-h-0", className),
4066
+ className: chunk4ACELYEP_cjs.cn("flex-1 min-h-0", className),
3856
4067
  children: /* @__PURE__ */ jsxRuntime.jsx(
3857
4068
  TableScroller,
3858
4069
  {
3859
4070
  ref: scrollerRef,
3860
- className: chunkNWGG5WFL_cjs.cn("scroll-pt-[36px]", bodyAfter ? "scroll-pb-8" : void 0),
4071
+ ...scrollRestorationId !== void 0 ? { "data-scroll-restoration-id": scrollRestorationId } : {},
4072
+ className: chunk4ACELYEP_cjs.cn("scroll-pt-[36px]", bodyAfter ? "scroll-pb-8" : void 0),
3861
4073
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", style: { minWidth: minPanelWidth }, children: [
3862
4074
  headerGroups.map((group) => /* @__PURE__ */ jsxRuntime.jsxs(TableHeader, { sticky: true, children: [
3863
4075
  group.headers.map((header) => {
@@ -3903,6 +4115,11 @@ function DataTable({
3903
4115
  {
3904
4116
  ref: listRef,
3905
4117
  role: "presentation",
4118
+ "aria-busy": query.isPlaceholderData ? true : void 0,
4119
+ className: chunk4ACELYEP_cjs.cn(
4120
+ "transition-opacity duration-150 motion-reduce:transition-none",
4121
+ query.isPlaceholderData && "opacity-50"
4122
+ ),
3906
4123
  style: { height: totalSize, position: "relative", width: "100%" },
3907
4124
  children: virtualItems.map((vRow) => {
3908
4125
  const item = listItems[vRow.index];
@@ -3944,7 +4161,7 @@ function DataTable({
3944
4161
  /* @__PURE__ */ jsxRuntime.jsx(
3945
4162
  "div",
3946
4163
  {
3947
- className: chunkNWGG5WFL_cjs.cn(
4164
+ className: chunk4ACELYEP_cjs.cn(
3948
4165
  "sticky bottom-0 z-[4] flex items-center h-8 px-0.5",
3949
4166
  "border-t border-rule-2 bg-bg"
3950
4167
  ),
@@ -3964,7 +4181,7 @@ function GroupHeaderRow({ style, children }) {
3964
4181
  {
3965
4182
  absolute: true,
3966
4183
  style,
3967
- className: chunkNWGG5WFL_cjs.cn(
4184
+ className: chunk4ACELYEP_cjs.cn(
3968
4185
  "bg-surface-2 border-b border-rule",
3969
4186
  "font-mono text-[11px] uppercase tracking-[0.06em] text-ink-3"
3970
4187
  ),
@@ -3986,7 +4203,7 @@ function DataRow({
3986
4203
  const cells = row.getVisibleCells().map((cell) => {
3987
4204
  const meta = cell.column.columnDef.meta;
3988
4205
  const cellSize = cell.column.getSize() || void 0;
3989
- const cellClassName = chunkNWGG5WFL_cjs.cn(
4206
+ const cellClassName = chunk4ACELYEP_cjs.cn(
3990
4207
  columnBorders ? "border-r border-rule-2" : void 0,
3991
4208
  meta?.cellClassName
3992
4209
  );
@@ -4029,7 +4246,7 @@ function LoaderRow() {
4029
4246
  return /* @__PURE__ */ jsxRuntime.jsxs(
4030
4247
  "div",
4031
4248
  {
4032
- className: chunkNWGG5WFL_cjs.cn(
4249
+ className: chunk4ACELYEP_cjs.cn(
4033
4250
  "flex items-center justify-center gap-3",
4034
4251
  "h-8 font-mono text-[11px] tracking-[0.04em]",
4035
4252
  "text-ink-4"
@@ -4089,7 +4306,7 @@ function CalendarGlyph() {
4089
4306
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5.5 2V5M10.5 2V5", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round" })
4090
4307
  ] });
4091
4308
  }
4092
- function ChevronLeft() {
4309
+ function ChevronLeft2() {
4093
4310
  return /* @__PURE__ */ jsxRuntime.jsx("svg", { "aria-hidden": true, viewBox: "0 0 12 12", className: "size-3", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
4094
4311
  "path",
4095
4312
  {
@@ -4101,7 +4318,7 @@ function ChevronLeft() {
4101
4318
  }
4102
4319
  ) });
4103
4320
  }
4104
- function ChevronRight() {
4321
+ function ChevronRight2() {
4105
4322
  return /* @__PURE__ */ jsxRuntime.jsx("svg", { "aria-hidden": true, viewBox: "0 0 12 12", className: "size-3", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
4106
4323
  "path",
4107
4324
  {
@@ -4121,12 +4338,12 @@ function CalendarSurface() {
4121
4338
  {
4122
4339
  slot: "previous",
4123
4340
  "aria-label": "Previous month",
4124
- className: chunkNWGG5WFL_cjs.cn(
4341
+ className: chunk4ACELYEP_cjs.cn(
4125
4342
  "size-7 rounded-md inline-flex items-center justify-center",
4126
4343
  "text-ink-3 hover:text-ink hover:bg-surface-2 cursor-pointer outline-none",
4127
4344
  "focus-visible:shadow-[var(--shadow-focus)]"
4128
4345
  ),
4129
- children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeft, {})
4346
+ children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeft2, {})
4130
4347
  }
4131
4348
  ),
4132
4349
  /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Heading, { className: "font-sans font-medium text-[14px] text-ink tracking-[-0.01em]" }),
@@ -4135,12 +4352,12 @@ function CalendarSurface() {
4135
4352
  {
4136
4353
  slot: "next",
4137
4354
  "aria-label": "Next month",
4138
- className: chunkNWGG5WFL_cjs.cn(
4355
+ className: chunk4ACELYEP_cjs.cn(
4139
4356
  "size-7 rounded-md inline-flex items-center justify-center",
4140
4357
  "text-ink-3 hover:text-ink hover:bg-surface-2 cursor-pointer outline-none",
4141
4358
  "focus-visible:shadow-[var(--shadow-focus)]"
4142
4359
  ),
4143
- children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRight, {})
4360
+ children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRight2, {})
4144
4361
  }
4145
4362
  )
4146
4363
  ] }),
@@ -4148,7 +4365,7 @@ function CalendarSurface() {
4148
4365
  /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.CalendarGridHeader, { children: (day) => /* @__PURE__ */ jsxRuntime.jsx(
4149
4366
  reactAriaComponents.CalendarHeaderCell,
4150
4367
  {
4151
- className: chunkNWGG5WFL_cjs.cn(
4368
+ className: chunk4ACELYEP_cjs.cn(
4152
4369
  "font-mono text-[10.5px] uppercase tracking-[0.08em] text-ink-4",
4153
4370
  "pb-2 text-center"
4154
4371
  ),
@@ -4159,7 +4376,7 @@ function CalendarSurface() {
4159
4376
  reactAriaComponents.CalendarCell,
4160
4377
  {
4161
4378
  date,
4162
- className: chunkNWGG5WFL_cjs.cn(
4379
+ className: chunk4ACELYEP_cjs.cn(
4163
4380
  // aspect-square + table-fixed makes each cell a perfect
4164
4381
  // square that scales with popover width.
4165
4382
  "aspect-square flex items-center justify-center cursor-pointer",
@@ -4193,7 +4410,7 @@ function DatePicker({
4193
4410
  reactAriaComponents.DatePicker,
4194
4411
  {
4195
4412
  ...props,
4196
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
4413
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
4197
4414
  "grid grid-cols-1 gap-1.5 content-start",
4198
4415
  typeof className === "function" ? className(renderProps) : className
4199
4416
  ),
@@ -4202,7 +4419,7 @@ function DatePicker({
4202
4419
  /* @__PURE__ */ jsxRuntime.jsxs(
4203
4420
  reactAriaComponents.Group,
4204
4421
  {
4205
- className: chunkNWGG5WFL_cjs.cn(
4422
+ className: chunk4ACELYEP_cjs.cn(
4206
4423
  // Box chrome on the wrapper; the DateInput inside carries padding +
4207
4424
  // font so the calendar trigger sits inside the same border + ring.
4208
4425
  styles4.box(),
@@ -4213,7 +4430,7 @@ function DatePicker({
4213
4430
  /* @__PURE__ */ jsxRuntime.jsx(
4214
4431
  reactAriaComponents.DateInput,
4215
4432
  {
4216
- className: chunkNWGG5WFL_cjs.cn(
4433
+ className: chunk4ACELYEP_cjs.cn(
4217
4434
  "flex-1 flex items-center min-w-0 text-ink",
4218
4435
  styles4.content(),
4219
4436
  // Tabular alignment for date segments — overrides content's
@@ -4224,7 +4441,7 @@ function DatePicker({
4224
4441
  reactAriaComponents.DateSegment,
4225
4442
  {
4226
4443
  segment,
4227
- className: chunkNWGG5WFL_cjs.cn(
4444
+ className: chunk4ACELYEP_cjs.cn(
4228
4445
  "px-px tabular-nums outline-none select-none",
4229
4446
  "data-[placeholder]:text-ink-4",
4230
4447
  "data-[type=literal]:text-ink-4",
@@ -4239,7 +4456,7 @@ function DatePicker({
4239
4456
  /* @__PURE__ */ jsxRuntime.jsx(
4240
4457
  reactAriaComponents.Button,
4241
4458
  {
4242
- className: chunkNWGG5WFL_cjs.cn(
4459
+ className: chunk4ACELYEP_cjs.cn(
4243
4460
  "shrink-0 inline-flex items-center justify-center",
4244
4461
  "size-7 rounded-md",
4245
4462
  "text-ink-3 hover:text-ink hover:bg-surface-2",
@@ -4259,7 +4476,7 @@ function DatePicker({
4259
4476
  reactAriaComponents.Popover,
4260
4477
  {
4261
4478
  offset: 6,
4262
- className: chunkNWGG5WFL_cjs.cn(
4479
+ className: chunk4ACELYEP_cjs.cn(
4263
4480
  // Match the anchoring field's width exactly. `--trigger-width` is
4264
4481
  // set by RAC on the Popover when it's inside a DatePicker. Floor at
4265
4482
  // 18rem so the calendar stays legible when the input is unusually
@@ -4278,7 +4495,7 @@ function DatePicker({
4278
4495
  }
4279
4496
  );
4280
4497
  }
4281
- var segmentStyles = chunkNWGG5WFL_cjs.cn(
4498
+ var segmentStyles = chunk4ACELYEP_cjs.cn(
4282
4499
  "px-px tabular-nums outline-none select-none",
4283
4500
  "data-[placeholder]:text-ink-4",
4284
4501
  "data-[type=literal]:text-ink-4",
@@ -4309,7 +4526,7 @@ function PopoverTimeField({
4309
4526
  children: /* @__PURE__ */ jsxRuntime.jsx(
4310
4527
  reactAriaComponents.DateInput,
4311
4528
  {
4312
- className: chunkNWGG5WFL_cjs.cn(
4529
+ className: chunk4ACELYEP_cjs.cn(
4313
4530
  "inline-flex items-center rounded-md border border-rule bg-surface px-2.5 py-1.5",
4314
4531
  "font-mono text-[13px] text-ink",
4315
4532
  "focus-within:border-accent focus-within:shadow-[var(--shadow-focus)]",
@@ -4348,7 +4565,7 @@ function DateTimePicker({
4348
4565
  granularity,
4349
4566
  hideTimeZone,
4350
4567
  shouldCloseOnSelect,
4351
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
4568
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
4352
4569
  "grid grid-cols-1 gap-1.5 content-start",
4353
4570
  typeof className === "function" ? className(renderProps) : className
4354
4571
  ),
@@ -4357,7 +4574,7 @@ function DateTimePicker({
4357
4574
  /* @__PURE__ */ jsxRuntime.jsxs(
4358
4575
  reactAriaComponents.Group,
4359
4576
  {
4360
- className: chunkNWGG5WFL_cjs.cn(
4577
+ className: chunk4ACELYEP_cjs.cn(
4361
4578
  // Box chrome on the wrapper; the DateInput inside carries padding +
4362
4579
  // font so the calendar trigger sits inside the same border + ring.
4363
4580
  styles4.box(),
@@ -4368,7 +4585,7 @@ function DateTimePicker({
4368
4585
  /* @__PURE__ */ jsxRuntime.jsx(
4369
4586
  reactAriaComponents.DateInput,
4370
4587
  {
4371
- className: chunkNWGG5WFL_cjs.cn(
4588
+ className: chunk4ACELYEP_cjs.cn(
4372
4589
  "flex-1 flex items-center min-w-0 text-ink",
4373
4590
  styles4.content(),
4374
4591
  // Tabular alignment for date/time segments — overrides content's
@@ -4381,7 +4598,7 @@ function DateTimePicker({
4381
4598
  /* @__PURE__ */ jsxRuntime.jsx(
4382
4599
  reactAriaComponents.Button,
4383
4600
  {
4384
- className: chunkNWGG5WFL_cjs.cn(
4601
+ className: chunk4ACELYEP_cjs.cn(
4385
4602
  "shrink-0 inline-flex items-center justify-center",
4386
4603
  "size-7 rounded-md",
4387
4604
  "text-ink-3 hover:text-ink hover:bg-surface-2",
@@ -4401,7 +4618,7 @@ function DateTimePicker({
4401
4618
  reactAriaComponents.Popover,
4402
4619
  {
4403
4620
  offset: 6,
4404
- className: chunkNWGG5WFL_cjs.cn(
4621
+ className: chunk4ACELYEP_cjs.cn(
4405
4622
  // Match the anchoring field's width exactly. `--trigger-width` is
4406
4623
  // set by RAC on the Popover when it's inside a DatePicker. Floor at
4407
4624
  // 18rem so the calendar stays legible when the input is unusually
@@ -4471,7 +4688,7 @@ function DraftMessageCard({
4471
4688
  isPreviewDisabled = false,
4472
4689
  className
4473
4690
  }) {
4474
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(styles2.root(), className), children: [
4691
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk4ACELYEP_cjs.cn(styles2.root(), className), children: [
4475
4692
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles2.icon(), children: /* @__PURE__ */ jsxRuntime.jsx(ChannelIcon, { channel }) }),
4476
4693
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles2.body(), children: [
4477
4694
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: styles2.eyebrow(), children: eyebrow }),
@@ -4592,7 +4809,7 @@ function MultiSelect({
4592
4809
  openPopover(true);
4593
4810
  }
4594
4811
  };
4595
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn("grid grid-cols-1 gap-1.5 content-start", className), children: [
4812
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk4ACELYEP_cjs.cn("grid grid-cols-1 gap-1.5 content-start", className), children: [
4596
4813
  label ? /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Label, { className: fieldLabelStyles, children: label }) : null,
4597
4814
  /* @__PURE__ */ jsxRuntime.jsxs(
4598
4815
  "div",
@@ -4608,7 +4825,7 @@ function MultiSelect({
4608
4825
  onKeyDown: onTriggerKeyDown,
4609
4826
  "data-invalid": isInvalid || void 0,
4610
4827
  "data-disabled": isDisabled || void 0,
4611
- className: chunkNWGG5WFL_cjs.cn(
4828
+ className: chunk4ACELYEP_cjs.cn(
4612
4829
  styles4.box(),
4613
4830
  "flex flex-wrap items-center gap-1.5 cursor-pointer",
4614
4831
  minHeight,
@@ -4623,7 +4840,7 @@ function MultiSelect({
4623
4840
  // No vertical padding — wrapper's p-1.5 + min-h-[size] govern the
4624
4841
  // overall height so it matches the Input/Select trigger at the same
4625
4842
  // size.
4626
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("text-ink-4 font-sans px-1", fieldTextStyles[size]), children: placeholder })
4843
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk4ACELYEP_cjs.cn("text-ink-4 font-sans px-1", fieldTextStyles[size]), children: placeholder })
4627
4844
  ) : selectedOptions.map((o) => /* @__PURE__ */ jsxRuntime.jsx(Chip, { onRemove: () => remove(o.id), isDisabled, children: o.content ?? o.label }, o.id)),
4628
4845
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto pr-1", children: /* @__PURE__ */ jsxRuntime.jsx(FieldCaret, {}) })
4629
4846
  ]
@@ -4639,7 +4856,7 @@ function MultiSelect({
4639
4856
  triggerRef,
4640
4857
  offset: 6,
4641
4858
  placement: "bottom start",
4642
- className: chunkNWGG5WFL_cjs.cn(
4859
+ className: chunk4ACELYEP_cjs.cn(
4643
4860
  "w-[var(--trigger-width)]",
4644
4861
  // The popover element itself takes focus when opened programmatically
4645
4862
  // (defaultOpen) — no browser outline around the whole panel.
@@ -4657,7 +4874,7 @@ function MultiSelect({
4657
4874
  onChange: (e) => updateSearch(e.target.value),
4658
4875
  placeholder: "Search\u2026",
4659
4876
  "aria-label": "Search options",
4660
- className: chunkNWGG5WFL_cjs.cn(
4877
+ className: chunk4ACELYEP_cjs.cn(
4661
4878
  "w-full bg-transparent outline-none rounded-[6px] px-2 py-1.5",
4662
4879
  "font-sans text-[13px] text-ink placeholder:text-ink-4"
4663
4880
  )
@@ -4678,14 +4895,14 @@ function MultiSelect({
4678
4895
  onSelectionChange(keys);
4679
4896
  },
4680
4897
  className: "outline-none max-h-72 overflow-auto",
4681
- renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn("px-3 py-2", fieldHintStyles), children: needle !== "" ? "No matches" : "All options selected" }),
4898
+ renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk4ACELYEP_cjs.cn("px-3 py-2", fieldHintStyles), children: needle !== "" ? "No matches" : "All options selected" }),
4682
4899
  children: listboxOptions.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
4683
4900
  reactAriaComponents.ListBoxItem,
4684
4901
  {
4685
4902
  id: option.id,
4686
4903
  textValue: option.label,
4687
4904
  ...option.isDisabled ? { isDisabled: true } : {},
4688
- className: chunkNWGG5WFL_cjs.cn(
4905
+ className: chunk4ACELYEP_cjs.cn(
4689
4906
  "group flex items-center gap-2.5",
4690
4907
  "rounded-[6px] px-3 py-2 text-[14px] text-ink-2",
4691
4908
  "cursor-pointer outline-none select-none",
@@ -4715,7 +4932,7 @@ function Chip({
4715
4932
  return /* @__PURE__ */ jsxRuntime.jsxs(
4716
4933
  "span",
4717
4934
  {
4718
- className: chunkNWGG5WFL_cjs.cn(
4935
+ className: chunk4ACELYEP_cjs.cn(
4719
4936
  "inline-flex items-center gap-1.5",
4720
4937
  "pl-2 pr-1 py-0.5 rounded-[6px]",
4721
4938
  "bg-surface-2 border border-rule",
@@ -4733,7 +4950,7 @@ function Chip({
4733
4950
  e.stopPropagation();
4734
4951
  onRemove();
4735
4952
  },
4736
- className: chunkNWGG5WFL_cjs.cn(
4953
+ className: chunk4ACELYEP_cjs.cn(
4737
4954
  "inline-flex items-center justify-center shrink-0",
4738
4955
  "size-4 rounded-[3px]",
4739
4956
  "text-ink-3 hover:text-ink hover:bg-surface-3 cursor-pointer",
@@ -4913,7 +5130,7 @@ function MessageComposer({
4913
5130
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-[18px] py-3", children: /* @__PURE__ */ jsxRuntime.jsx(
4914
5131
  "p",
4915
5132
  {
4916
- className: chunkNWGG5WFL_cjs.cn(
5133
+ className: chunk4ACELYEP_cjs.cn(
4917
5134
  "rounded-[10px] border border-rule bg-surface-2 px-3.5 py-2.5",
4918
5135
  "text-[12.5px] text-ink-3 text-center"
4919
5136
  ),
@@ -4938,7 +5155,7 @@ function MessageComposer({
4938
5155
  }
4939
5156
  ) : null;
4940
5157
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-[18px] pb-3.5 pt-1", children: [
4941
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(messageComposerStyles(), className), children: [
5158
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk4ACELYEP_cjs.cn(messageComposerStyles(), className), children: [
4942
5159
  connectionPicker ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 border-b border-rule-2 px-3.5 py-1.5", children: [
4943
5160
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: ROW_LABEL, children: "Via" }),
4944
5161
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -5042,7 +5259,7 @@ function MessageComposer({
5042
5259
  rows: 1,
5043
5260
  onChange: (event) => onValueChange({ ...value, text: event.target.value }),
5044
5261
  onKeyDown: onKeyDown2,
5045
- className: chunkNWGG5WFL_cjs.cn(
5262
+ className: chunk4ACELYEP_cjs.cn(
5046
5263
  "w-full resize-none bg-transparent outline-none",
5047
5264
  "min-h-[40px] max-h-48 text-[14px] leading-[1.5] text-ink placeholder:text-ink-4",
5048
5265
  bodyClassName
@@ -5059,7 +5276,7 @@ function MessageComposer({
5059
5276
  if (files) onAddFiles(Array.from(files));
5060
5277
  },
5061
5278
  children: /* @__PURE__ */ jsxRuntime.jsx(
5062
- chunkNWGG5WFL_cjs.Button,
5279
+ chunk4ACELYEP_cjs.Button,
5063
5280
  {
5064
5281
  variant: "subtle",
5065
5282
  size: "icon-md",
@@ -5078,7 +5295,7 @@ function MessageComposer({
5078
5295
  "aria-label": "Send",
5079
5296
  isDisabled: !canSend || isSending,
5080
5297
  onPress: () => void submit(),
5081
- className: chunkNWGG5WFL_cjs.cn(
5298
+ className: chunk4ACELYEP_cjs.cn(
5082
5299
  "grid place-items-center size-8 rounded-[8px] cursor-pointer",
5083
5300
  "bg-accent text-tile-fg transition-opacity duration-150",
5084
5301
  "disabled:opacity-40 disabled:cursor-default",
@@ -5393,10 +5610,10 @@ function DraftMessageComposer({
5393
5610
  [message?.attachments]
5394
5611
  );
5395
5612
  if (phase === "loading") {
5396
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn(styles3.root(), className), children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: styles3.terminal(), children: "Loading draft\u2026" }) });
5613
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk4ACELYEP_cjs.cn(styles3.root(), className), children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: styles3.terminal(), children: "Loading draft\u2026" }) });
5397
5614
  }
5398
5615
  if (phase === "load-error") {
5399
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn(styles3.root(), className), children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: styles3.terminal(), children: [
5616
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk4ACELYEP_cjs.cn(styles3.root(), className), children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: styles3.terminal(), children: [
5400
5617
  loadError ?? "Loading the draft failed.",
5401
5618
  " ",
5402
5619
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -5411,9 +5628,9 @@ function DraftMessageComposer({
5411
5628
  }
5412
5629
  if (phase === "terminal" || !message) {
5413
5630
  const line = terminalKind === "sent" ? "This draft was sent." : terminalKind === "rejected" ? "This draft was rejected." : terminalKind === "failed" ? `Sending failed${message?.error ? ` \u2014 ${message.error}` : ""}.` : "This message is not a reviewable draft.";
5414
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn(styles3.root(), className), "data-draft-terminal": terminalKind, children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: styles3.terminal(), children: line }) });
5631
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk4ACELYEP_cjs.cn(styles3.root(), className), "data-draft-terminal": terminalKind, children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: styles3.terminal(), children: line }) });
5415
5632
  }
5416
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(styles3.root(), className), children: [
5633
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk4ACELYEP_cjs.cn(styles3.root(), className), children: [
5417
5634
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles3.header(), children: [
5418
5635
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles3.badge(), children: "Draft \xB7 awaiting review" }),
5419
5636
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles3.sender(), children: [
@@ -5455,7 +5672,7 @@ function DraftMessageComposer({
5455
5672
  isConfirmingReject ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
5456
5673
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12.5px] text-ink-3", children: "Reject draft?" }),
5457
5674
  /* @__PURE__ */ jsxRuntime.jsx(
5458
- chunkNWGG5WFL_cjs.Button,
5675
+ chunk4ACELYEP_cjs.Button,
5459
5676
  {
5460
5677
  size: "sm",
5461
5678
  variant: "ghost",
@@ -5464,9 +5681,9 @@ function DraftMessageComposer({
5464
5681
  children: "Confirm reject"
5465
5682
  }
5466
5683
  ),
5467
- /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { size: "sm", variant: "subtle", onPress: () => setIsConfirmingReject(false), children: "Cancel" })
5684
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4ACELYEP_cjs.Button, { size: "sm", variant: "subtle", onPress: () => setIsConfirmingReject(false), children: "Cancel" })
5468
5685
  ] }) : /* @__PURE__ */ jsxRuntime.jsx(
5469
- chunkNWGG5WFL_cjs.Button,
5686
+ chunk4ACELYEP_cjs.Button,
5470
5687
  {
5471
5688
  size: "sm",
5472
5689
  variant: "ghost",
@@ -5476,7 +5693,7 @@ function DraftMessageComposer({
5476
5693
  }
5477
5694
  ),
5478
5695
  /* @__PURE__ */ jsxRuntime.jsx(
5479
- chunkNWGG5WFL_cjs.Button,
5696
+ chunk4ACELYEP_cjs.Button,
5480
5697
  {
5481
5698
  size: "sm",
5482
5699
  variant: "subtle",
@@ -5634,7 +5851,7 @@ function EmptyState({
5634
5851
  className
5635
5852
  }) {
5636
5853
  const styles4 = emptyStateStyles({ size });
5637
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(styles4.root(), className), children: [
5854
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk4ACELYEP_cjs.cn(styles4.root(), className), children: [
5638
5855
  icon ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles4.art(), children: icon }) : null,
5639
5856
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles4.title(), children: title }),
5640
5857
  description ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles4.description(), children: description }) : null,
@@ -5646,7 +5863,7 @@ function ErrorAnimation({ className }) {
5646
5863
  "div",
5647
5864
  {
5648
5865
  "aria-hidden": true,
5649
- className: chunkNWGG5WFL_cjs.cn("size-24 text-danger motion-safe:animate-status-pop", className),
5866
+ className: chunk4ACELYEP_cjs.cn("size-24 text-danger motion-safe:animate-status-pop", className),
5650
5867
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleX, { className: "size-full", strokeWidth: 1.5 })
5651
5868
  }
5652
5869
  );
@@ -5669,13 +5886,13 @@ function FileViewerFallbackCard({
5669
5886
  const Icon = iconForContentType(contentType);
5670
5887
  const size = formatFileSize(sizeInBytes);
5671
5888
  const meta = [size, note].filter(Boolean).join(" \xB7 ");
5672
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(fileViewerFallbackCardStyles(), className), children: [
5889
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk4ACELYEP_cjs.cn(fileViewerFallbackCardStyles(), className), children: [
5673
5890
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md bg-surface-2 text-ink-3", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { "aria-hidden": true, className: "size-4" }) }),
5674
5891
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-1 flex-col", children: [
5675
5892
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate font-sans text-[13px] font-medium text-ink", children: name }),
5676
5893
  errorMessage ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate font-sans text-[12px] text-danger", children: errorMessage }) : meta ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate font-sans text-[12px] text-ink-3", children: meta }) : null
5677
5894
  ] }),
5678
- onDownload ? /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { variant: "ghost", size: "icon-sm", "aria-label": `Download ${name}`, onPress: onDownload, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { "aria-hidden": true }) }) : null
5895
+ onDownload ? /* @__PURE__ */ jsxRuntime.jsx(chunk4ACELYEP_cjs.Button, { variant: "ghost", size: "icon-sm", "aria-label": `Download ${name}`, onPress: onDownload, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { "aria-hidden": true }) }) : null
5679
5896
  ] });
5680
5897
  }
5681
5898
  var imageLightboxStyles = tailwindVariants.tv({
@@ -5712,7 +5929,7 @@ function ImageLightbox({ isOpen, onOpenChange, src, name, onDownload }) {
5712
5929
  /* @__PURE__ */ jsxRuntime.jsxs(
5713
5930
  "div",
5714
5931
  {
5715
- className: chunkNWGG5WFL_cjs.cn(
5932
+ className: chunk4ACELYEP_cjs.cn(
5716
5933
  "flex items-center gap-1.5",
5717
5934
  "rounded-[8px] border border-rule bg-surface py-1 pl-3 pr-1",
5718
5935
  "shadow-[var(--shadow-float)]"
@@ -5720,7 +5937,7 @@ function ImageLightbox({ isOpen, onOpenChange, src, name, onDownload }) {
5720
5937
  children: [
5721
5938
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "max-w-[320px] truncate font-sans text-[12.5px] text-ink", children: name }),
5722
5939
  onDownload ? /* @__PURE__ */ jsxRuntime.jsx(
5723
- chunkNWGG5WFL_cjs.Button,
5940
+ chunk4ACELYEP_cjs.Button,
5724
5941
  {
5725
5942
  variant: "ghost",
5726
5943
  size: "icon-sm",
@@ -5729,7 +5946,7 @@ function ImageLightbox({ isOpen, onOpenChange, src, name, onDownload }) {
5729
5946
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { "aria-hidden": true })
5730
5947
  }
5731
5948
  ) : null,
5732
- /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { slot: "close", variant: "ghost", size: "icon-sm", "aria-label": "Close", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { "aria-hidden": true }) })
5949
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4ACELYEP_cjs.Button, { slot: "close", variant: "ghost", size: "icon-sm", "aria-label": "Close", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { "aria-hidden": true }) })
5733
5950
  ]
5734
5951
  }
5735
5952
  )
@@ -5769,7 +5986,7 @@ function VideoView({ name, src }) {
5769
5986
  /* @__PURE__ */ jsxRuntime.jsx("video", { controls: true, src, "aria-label": name, className: "h-full w-full object-contain" })
5770
5987
  );
5771
5988
  }
5772
- var PdfView = react.lazy(() => import('./pdf-view-RRMAUK3L.cjs'));
5989
+ var PdfView = react.lazy(() => import('./pdf-view-2DSARHNQ.cjs'));
5773
5990
  var fileViewerStyles = tailwindVariants.tv({
5774
5991
  base: [
5775
5992
  "relative flex w-full flex-col overflow-hidden",
@@ -5809,8 +6026,120 @@ function FileViewer({
5809
6026
  }
5810
6027
  );
5811
6028
  if (kind === "none" || errorMessage || isOversized) return fallback;
5812
- const skeleton = /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Skeleton, { "aria-label": `Loading preview of ${name}`, className: "h-full w-full rounded-none" });
5813
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn(fileViewerStyles(), className), style: { height: heightPx }, children: !src ? skeleton : kind === "image" ? /* @__PURE__ */ jsxRuntime.jsx(ImageView, { name, src, ...onDownload ? { onDownload } : {} }) : kind === "video" ? /* @__PURE__ */ jsxRuntime.jsx(VideoView, { name, src }) : /* @__PURE__ */ jsxRuntime.jsx(react.Suspense, { fallback: skeleton, children: /* @__PURE__ */ jsxRuntime.jsx(PdfView, { name, src, ...onDownload ? { onDownload } : {} }) }) });
6029
+ const skeleton = /* @__PURE__ */ jsxRuntime.jsx(chunk4ACELYEP_cjs.Skeleton, { "aria-label": `Loading preview of ${name}`, className: "h-full w-full rounded-none" });
6030
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk4ACELYEP_cjs.cn(fileViewerStyles(), className), style: { height: heightPx }, children: !src ? skeleton : kind === "image" ? /* @__PURE__ */ jsxRuntime.jsx(ImageView, { name, src, ...onDownload ? { onDownload } : {} }) : kind === "video" ? /* @__PURE__ */ jsxRuntime.jsx(VideoView, { name, src }) : /* @__PURE__ */ jsxRuntime.jsx(react.Suspense, { fallback: skeleton, children: /* @__PURE__ */ jsxRuntime.jsx(PdfView, { name, src, ...onDownload ? { onDownload } : {} }) }) });
6031
+ }
6032
+ var glowFrameStyles = tailwindVariants.tv({
6033
+ slots: {
6034
+ room: "glow-room flex min-h-0 flex-col",
6035
+ frame: "glow-frame flex min-h-0 flex-1 flex-col"
6036
+ }
6037
+ });
6038
+ var FADE_MS = 700;
6039
+ var FLASH_MS = 900;
6040
+ var REROLL_MS = 250;
6041
+ var HUES = [1, 2, 3, 4, 5, 6];
6042
+ function GlowFrame({ status, className, children }) {
6043
+ const isWorking = status === "working";
6044
+ const { run, isResting } = useBeams(isWorking);
6045
+ const flash = useFlash(status);
6046
+ const strokesRef = useReroll(flash);
6047
+ const styles4 = glowFrameStyles();
6048
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk4ACELYEP_cjs.cn(styles4.room(), className), children: /* @__PURE__ */ jsxRuntime.jsxs(
6049
+ "div",
6050
+ {
6051
+ className: styles4.frame(),
6052
+ "data-status": status,
6053
+ "data-working": isWorking ? "true" : "false",
6054
+ "data-flashing": flash !== 0 ? "true" : "false",
6055
+ children: [
6056
+ children,
6057
+ isResting ? null : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "glow-fx", "aria-hidden": "true", "data-glow": "beams", children: [
6058
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "glow-orb", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "glow-dot glow-a" }) }),
6059
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "glow-orb", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "glow-dot glow-b" }) }),
6060
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "glow-beams", children: [
6061
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "glow-blob glow-tail glow-a" }),
6062
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "glow-blob glow-lead glow-a" }),
6063
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "glow-blob glow-tail glow-b" }),
6064
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "glow-blob glow-lead glow-b" })
6065
+ ] })
6066
+ ] }, `beams-${run}`),
6067
+ flash !== 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
6068
+ "div",
6069
+ {
6070
+ ref: strokesRef,
6071
+ className: "glow-flash",
6072
+ "aria-hidden": "true",
6073
+ "data-glow": "flash",
6074
+ children: [
6075
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "glow-ring glow-ring-1" }),
6076
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "glow-stroke glow-stroke-2", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "glow-ring glow-ring-2" }) }),
6077
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "glow-stroke glow-stroke-3", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "glow-ring glow-ring-3" }) }),
6078
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "glow-stroke glow-stroke-4", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "glow-ring glow-ring-4" }) })
6079
+ ]
6080
+ },
6081
+ `flash-${flash}`
6082
+ ) : null
6083
+ ]
6084
+ }
6085
+ ) });
6086
+ }
6087
+ function useBeams(isWorking) {
6088
+ const [run, setRun] = react.useState(0);
6089
+ const [isResting, setIsResting] = react.useState(!isWorking);
6090
+ const wasWorking = react.useRef(isWorking);
6091
+ react.useEffect(() => {
6092
+ if (isWorking) {
6093
+ if (!wasWorking.current) setRun((n) => n + 1);
6094
+ wasWorking.current = true;
6095
+ setIsResting(false);
6096
+ return;
6097
+ }
6098
+ wasWorking.current = false;
6099
+ const timer = window.setTimeout(() => setIsResting(true), FADE_MS + 50);
6100
+ return () => window.clearTimeout(timer);
6101
+ }, [isWorking]);
6102
+ return { run, isResting };
6103
+ }
6104
+ function useFlash(status) {
6105
+ const [flash, setFlash] = react.useState(0);
6106
+ const previous = react.useRef(status);
6107
+ react.useEffect(() => {
6108
+ const was = previous.current;
6109
+ previous.current = status;
6110
+ if (!(was === "working" && status === "ready")) return;
6111
+ setFlash((n) => n + 1);
6112
+ }, [status]);
6113
+ react.useEffect(() => {
6114
+ if (flash === 0) return;
6115
+ const timer = window.setTimeout(() => setFlash(0), FLASH_MS);
6116
+ return () => window.clearTimeout(timer);
6117
+ }, [flash]);
6118
+ return flash;
6119
+ }
6120
+ function useReroll(flash) {
6121
+ const ref = react.useRef(null);
6122
+ react.useEffect(() => {
6123
+ if (flash === 0) return;
6124
+ if (window.matchMedia?.("(prefers-reduced-motion: reduce)").matches) return;
6125
+ const reroll = () => {
6126
+ const rings = ref.current?.querySelectorAll(".glow-ring");
6127
+ if (!rings) return;
6128
+ const stops = HUES.map((hue) => ({ hue, at: Math.random() * 100 })).sort(
6129
+ (a, b) => a.at - b.at
6130
+ );
6131
+ for (const ring of rings) {
6132
+ stops.forEach((stop, i) => {
6133
+ ring.style.setProperty(`--glow-p${i + 1}`, `${stop.at.toFixed(2)}%`);
6134
+ ring.style.setProperty(`--glow-k${i + 1}`, `var(--color-glow-${stop.hue})`);
6135
+ });
6136
+ }
6137
+ };
6138
+ reroll();
6139
+ const timer = window.setInterval(reroll, REROLL_MS);
6140
+ return () => window.clearInterval(timer);
6141
+ }, [flash]);
6142
+ return ref;
5814
6143
  }
5815
6144
  var imageAttachmentStyles = tailwindVariants.tv({
5816
6145
  base: [
@@ -5833,7 +6162,7 @@ function ImageAttachment({
5833
6162
  {
5834
6163
  "aria-label": `Preview ${name}`,
5835
6164
  ...onPress ? { onPress } : {},
5836
- className: chunkNWGG5WFL_cjs.cn(imageAttachmentStyles(), className),
6165
+ className: chunk4ACELYEP_cjs.cn(imageAttachmentStyles(), className),
5837
6166
  children: [
5838
6167
  src ? (
5839
6168
  // Kept in the DOM (invisible) while loading so onLoad still fires
@@ -5846,14 +6175,14 @@ function ImageAttachment({
5846
6175
  loading: "lazy",
5847
6176
  onLoad: () => setLoadedSrc(src),
5848
6177
  onError: () => onLoadError?.(),
5849
- className: chunkNWGG5WFL_cjs.cn(
6178
+ className: chunk4ACELYEP_cjs.cn(
5850
6179
  "block max-h-[220px] max-w-[280px] object-contain",
5851
6180
  !isLoaded && "invisible absolute inset-0"
5852
6181
  )
5853
6182
  }
5854
6183
  )
5855
6184
  ) : null,
5856
- !isLoaded ? /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Skeleton, { className: "h-[140px] w-[200px]" }) : null
6185
+ !isLoaded ? /* @__PURE__ */ jsxRuntime.jsx(chunk4ACELYEP_cjs.Skeleton, { className: "h-[140px] w-[200px]" }) : null
5857
6186
  ]
5858
6187
  }
5859
6188
  );
@@ -5884,7 +6213,7 @@ function Input({
5884
6213
  reactAriaComponents.TextField,
5885
6214
  {
5886
6215
  ...props,
5887
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
6216
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
5888
6217
  "grid grid-cols-1 gap-1.5 content-start",
5889
6218
  typeof className === "function" ? className(renderProps) : className
5890
6219
  ),
@@ -5895,7 +6224,7 @@ function Input({
5895
6224
  {
5896
6225
  ...inputProps,
5897
6226
  placeholder: placeholder ?? "",
5898
- className: chunkNWGG5WFL_cjs.cn(styles4.box(), styles4.content(), inputClassName)
6227
+ className: chunk4ACELYEP_cjs.cn(styles4.box(), styles4.content(), inputClassName)
5899
6228
  }
5900
6229
  ),
5901
6230
  description ? /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Text, { slot: "description", className: fieldHintStyles, children: description }) : null,
@@ -5913,7 +6242,7 @@ function MenuPopover({ className, offset = 4, placement = "bottom start", ...pro
5913
6242
  offset,
5914
6243
  placement,
5915
6244
  ...props,
5916
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
6245
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
5917
6246
  "min-w-[200px] p-1 bg-surface border border-rule rounded-md",
5918
6247
  "shadow-[var(--shadow-float)] outline-none z-[1200]",
5919
6248
  "entering:animate-enter-zoom",
@@ -5928,14 +6257,14 @@ function Menu({ className, ...props }) {
5928
6257
  reactAriaComponents.Menu,
5929
6258
  {
5930
6259
  ...props,
5931
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
6260
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
5932
6261
  "flex flex-col gap-px outline-none",
5933
6262
  typeof className === "function" ? className(renderProps) : className
5934
6263
  )
5935
6264
  }
5936
6265
  );
5937
6266
  }
5938
- var menuItemStyles = chunkNWGG5WFL_cjs.cn(
6267
+ var menuItemStyles = chunk4ACELYEP_cjs.cn(
5939
6268
  "flex items-center gap-2.5 px-2.5 py-1.5 rounded-md cursor-pointer outline-none",
5940
6269
  "font-sans text-[13px] text-ink-2 select-none",
5941
6270
  "hover:bg-surface-2 hover:text-ink focus:bg-surface-2 focus:text-ink",
@@ -5949,7 +6278,7 @@ function MenuItem({ icon, hasSubmenu, children, className, ...props }) {
5949
6278
  reactAriaComponents.MenuItem,
5950
6279
  {
5951
6280
  ...props,
5952
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(menuItemStyles, typeof className === "function" ? className(renderProps) : className),
6281
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(menuItemStyles, typeof className === "function" ? className(renderProps) : className),
5953
6282
  children: [
5954
6283
  icon ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex shrink-0 items-center", children: icon }) : null,
5955
6284
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 truncate", children }),
@@ -5971,7 +6300,7 @@ function NavSection({
5971
6300
  "data-testid": dataTestid
5972
6301
  }) {
5973
6302
  const hasHead = label !== void 0 || count !== void 0 || action !== void 0;
5974
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn("mt-[18px] first:mt-1", className), "data-testid": dataTestid, children: [
6303
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk4ACELYEP_cjs.cn("mt-[18px] first:mt-1", className), "data-testid": dataTestid, children: [
5975
6304
  hasHead ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between px-2 pt-1 pb-2", children: [
5976
6305
  label !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-[10.5px] uppercase tracking-[0.08em] text-ink-4", children: label }) : /* @__PURE__ */ jsxRuntime.jsx("span", {}),
5977
6306
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
@@ -6026,7 +6355,7 @@ function NavItem({ icon, badge, isActive, className, children, ...props }) {
6026
6355
  reactAriaComponents.Button,
6027
6356
  {
6028
6357
  ...props,
6029
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
6358
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
6030
6359
  navItemStyles({ isActive, isNested }),
6031
6360
  typeof className === "function" ? className(renderProps) : className
6032
6361
  ),
@@ -6035,7 +6364,7 @@ function NavItem({ icon, badge, isActive, className, children, ...props }) {
6035
6364
  "span",
6036
6365
  {
6037
6366
  "aria-hidden": true,
6038
- className: chunkNWGG5WFL_cjs.cn(
6367
+ className: chunk4ACELYEP_cjs.cn(
6039
6368
  "grid place-items-center shrink-0 size-4",
6040
6369
  isActive ? "text-accent" : "text-ink-3",
6041
6370
  "[&>svg]:size-4"
@@ -6050,12 +6379,12 @@ function NavItem({ icon, badge, isActive, className, children, ...props }) {
6050
6379
  );
6051
6380
  }
6052
6381
  function NavGroup({ icon, label, children, className, ...props }) {
6053
- return /* @__PURE__ */ jsxRuntime.jsxs(reactAriaComponents.Disclosure, { ...props, className: chunkNWGG5WFL_cjs.cn("group/nav-group my-px", className), children: [
6382
+ return /* @__PURE__ */ jsxRuntime.jsxs(reactAriaComponents.Disclosure, { ...props, className: chunk4ACELYEP_cjs.cn("group/nav-group my-px", className), children: [
6054
6383
  /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Heading, { className: "m-0", children: /* @__PURE__ */ jsxRuntime.jsxs(
6055
6384
  reactAriaComponents.Button,
6056
6385
  {
6057
6386
  slot: "trigger",
6058
- className: chunkNWGG5WFL_cjs.cn(
6387
+ className: chunk4ACELYEP_cjs.cn(
6059
6388
  "flex w-full items-center gap-2.5",
6060
6389
  "px-2 py-[7px] rounded-[7px]",
6061
6390
  "text-[13.5px] tracking-[-0.005em] text-ink-2 text-left",
@@ -6099,7 +6428,7 @@ function NavGroup({ icon, label, children, className, ...props }) {
6099
6428
  /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.DisclosurePanel, { children: /* @__PURE__ */ jsxRuntime.jsx(
6100
6429
  "div",
6101
6430
  {
6102
- className: chunkNWGG5WFL_cjs.cn(
6431
+ className: chunk4ACELYEP_cjs.cn(
6103
6432
  "relative pl-[22px] py-px",
6104
6433
  // Vertical guide rule — sits under where the parent's icon center
6105
6434
  // would be (14px from the panel's left edge).
@@ -6123,7 +6452,7 @@ function Orb({ size = "sm", state = "solving", speed, theme, className, label })
6123
6452
  size: design,
6124
6453
  ...speed !== void 0 ? { speed } : {},
6125
6454
  ...theme !== void 0 ? { theme } : {},
6126
- className: chunkNWGG5WFL_cjs.cn("inline-block shrink-0", className),
6455
+ className: chunk4ACELYEP_cjs.cn("inline-block shrink-0", className),
6127
6456
  ...px !== design ? { style: { width: px, height: px } } : {},
6128
6457
  ...label ? { "aria-label": label } : { "aria-hidden": true }
6129
6458
  }
@@ -6146,10 +6475,10 @@ var progressBarStyles = tailwindVariants.tv({
6146
6475
  });
6147
6476
  function ProgressBar({ size, className, ...props }) {
6148
6477
  const { track, fill } = progressBarStyles({ size });
6149
- return /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.ProgressBar, { ...props, className: chunkNWGG5WFL_cjs.cn("block", className), children: ({ percentage, isIndeterminate }) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: track(), children: isIndeterminate ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn(fill(), "absolute w-[35%] animate-indeterminate-progress") }) : /* @__PURE__ */ jsxRuntime.jsx(
6478
+ return /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.ProgressBar, { ...props, className: chunk4ACELYEP_cjs.cn("block", className), children: ({ percentage, isIndeterminate }) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: track(), children: isIndeterminate ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk4ACELYEP_cjs.cn(fill(), "absolute w-[35%] animate-indeterminate-progress") }) : /* @__PURE__ */ jsxRuntime.jsx(
6150
6479
  "div",
6151
6480
  {
6152
- className: chunkNWGG5WFL_cjs.cn(fill(), "transition-[width] duration-150"),
6481
+ className: chunk4ACELYEP_cjs.cn(fill(), "transition-[width] duration-150"),
6153
6482
  style: { width: `${percentage ?? 0}%` }
6154
6483
  }
6155
6484
  ) }) });
@@ -6199,7 +6528,7 @@ function ProgressRing({ size, className, ...props }) {
6199
6528
  const { box, stroke } = GEOMETRY[resolvedSize];
6200
6529
  const center = box / 2;
6201
6530
  const radius = (box - stroke) / 2;
6202
- return /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.ProgressBar, { ...props, className: chunkNWGG5WFL_cjs.cn(root(), className), children: ({ percentage, valueText, isIndeterminate }) => {
6531
+ return /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.ProgressBar, { ...props, className: chunk4ACELYEP_cjs.cn(root(), className), children: ({ percentage, valueText, isIndeterminate }) => {
6203
6532
  const shown = isIndeterminate ? 25 : Math.max(0, Math.min(100, percentage ?? 0));
6204
6533
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
6205
6534
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -6207,7 +6536,7 @@ function ProgressRing({ size, className, ...props }) {
6207
6536
  {
6208
6537
  "aria-hidden": true,
6209
6538
  viewBox: `0 0 ${box} ${box}`,
6210
- className: chunkNWGG5WFL_cjs.cn(svg(), isIndeterminate && "animate-spin"),
6539
+ className: chunk4ACELYEP_cjs.cn(svg(), isIndeterminate && "animate-spin"),
6211
6540
  children: [
6212
6541
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: center, cy: center, r: radius, strokeWidth: stroke, className: track() }),
6213
6542
  shown > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -6244,7 +6573,7 @@ function RadioGroup({
6244
6573
  {
6245
6574
  ...props,
6246
6575
  orientation,
6247
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
6576
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
6248
6577
  "grid gap-2 content-start",
6249
6578
  typeof className === "function" ? className(renderProps) : className
6250
6579
  ),
@@ -6253,7 +6582,7 @@ function RadioGroup({
6253
6582
  /* @__PURE__ */ jsxRuntime.jsx(
6254
6583
  "div",
6255
6584
  {
6256
- className: chunkNWGG5WFL_cjs.cn(
6585
+ className: chunk4ACELYEP_cjs.cn(
6257
6586
  orientation === "horizontal" ? "flex flex-wrap items-center gap-x-4 gap-y-2" : "grid gap-3"
6258
6587
  ),
6259
6588
  children
@@ -6270,7 +6599,7 @@ function Radio({ children, className, ...props }) {
6270
6599
  reactAriaComponents.Radio,
6271
6600
  {
6272
6601
  ...props,
6273
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
6602
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
6274
6603
  // `relative` for the same reason as Checkbox / Switch: RAC's
6275
6604
  // visually-hidden <input> is absolutely positioned and must resolve
6276
6605
  // against this radio, not a far-away shell, or focusing it scrolls
@@ -6285,7 +6614,7 @@ function Radio({ children, className, ...props }) {
6285
6614
  "span",
6286
6615
  {
6287
6616
  "aria-hidden": true,
6288
- className: chunkNWGG5WFL_cjs.cn(
6617
+ className: chunk4ACELYEP_cjs.cn(
6289
6618
  "relative inline-flex items-center justify-center shrink-0",
6290
6619
  "size-[18px] rounded-full border bg-surface border-ink-4",
6291
6620
  "transition-[border-color,box-shadow] duration-150",
@@ -6296,7 +6625,7 @@ function Radio({ children, className, ...props }) {
6296
6625
  children: /* @__PURE__ */ jsxRuntime.jsx(
6297
6626
  "span",
6298
6627
  {
6299
- className: chunkNWGG5WFL_cjs.cn(
6628
+ className: chunk4ACELYEP_cjs.cn(
6300
6629
  "block size-[10px] rounded-full bg-accent",
6301
6630
  "transition-opacity duration-150 opacity-0",
6302
6631
  "group-data-[selected]:opacity-100"
@@ -6340,7 +6669,7 @@ function AttributePicker({
6340
6669
  autoFocus,
6341
6670
  size,
6342
6671
  ...isDisabled !== void 0 ? { isDisabled } : {},
6343
- className: chunkNWGG5WFL_cjs.cn("w-full", className)
6672
+ className: chunk4ACELYEP_cjs.cn("w-full", className)
6344
6673
  }
6345
6674
  );
6346
6675
  }
@@ -6609,7 +6938,7 @@ function ChipItem({
6609
6938
  }
6610
6939
  );
6611
6940
  }
6612
- return /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("font-mono text-[12px] text-ink max-w-[10rem] truncate"), children: formatValue(field, operator, value) });
6941
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk4ACELYEP_cjs.cn("font-mono text-[12px] text-ink max-w-[10rem] truncate"), children: formatValue(field, operator, value) });
6613
6942
  }
6614
6943
  function Em({ children }) {
6615
6944
  return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-[12px] text-ink-4", children });
@@ -6695,7 +7024,7 @@ function SegmentedControl({
6695
7024
  orientation,
6696
7025
  value: value === null ? null : String(value),
6697
7026
  onChange: (next) => onChange(next),
6698
- className: chunkNWGG5WFL_cjs.cn(styles4.group(), className),
7027
+ className: chunk4ACELYEP_cjs.cn(styles4.group(), className),
6699
7028
  children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
6700
7029
  reactAriaComponents.Radio,
6701
7030
  {
@@ -6770,14 +7099,14 @@ function TagInput({
6770
7099
  onChange(value.slice(0, -1));
6771
7100
  }
6772
7101
  };
6773
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn("grid grid-cols-1 gap-1.5 content-start", className), children: [
7102
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk4ACELYEP_cjs.cn("grid grid-cols-1 gap-1.5 content-start", className), children: [
6774
7103
  label ? /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: inputId, className: fieldLabelStyles, children: label }) : null,
6775
7104
  /* @__PURE__ */ jsxRuntime.jsx(
6776
7105
  "div",
6777
7106
  {
6778
7107
  "data-invalid": isInvalid || void 0,
6779
7108
  "data-disabled": isDisabled || void 0,
6780
- className: chunkNWGG5WFL_cjs.cn(
7109
+ className: chunk4ACELYEP_cjs.cn(
6781
7110
  styles4.box(),
6782
7111
  "flex",
6783
7112
  // Cell editor: one table row (29px under a 32px row) while the chips
@@ -6791,7 +7120,7 @@ function TagInput({
6791
7120
  "div",
6792
7121
  {
6793
7122
  ref: chipsRef,
6794
- className: chunkNWGG5WFL_cjs.cn(
7123
+ className: chunk4ACELYEP_cjs.cn(
6795
7124
  "flex flex-1 flex-wrap items-center gap-1.5 min-w-0",
6796
7125
  isCell && (hasWrapped ? "content-start overflow-y-auto" : "content-center overflow-hidden")
6797
7126
  ),
@@ -6830,7 +7159,7 @@ function TagInput({
6830
7159
  onBlur: commit,
6831
7160
  disabled: isDisabled,
6832
7161
  placeholder: value.length === 0 ? placeholder : "",
6833
- className: chunkNWGG5WFL_cjs.cn(
7162
+ className: chunk4ACELYEP_cjs.cn(
6834
7163
  "flex-1 min-w-[6rem] bg-transparent outline-none",
6835
7164
  "font-sans text-ink placeholder:text-ink-4",
6836
7165
  fieldTextStyles[size],
@@ -6963,7 +7292,7 @@ function FilterValueInput({
6963
7292
  onChange: (next) => onChange(next ? next.toString() : ""),
6964
7293
  autoFocus,
6965
7294
  ...isDisabled !== void 0 ? { isDisabled } : {},
6966
- className: chunkNWGG5WFL_cjs.cn("w-full", className)
7295
+ className: chunk4ACELYEP_cjs.cn("w-full", className)
6967
7296
  }
6968
7297
  );
6969
7298
  }
@@ -6980,7 +7309,7 @@ function FilterValueInput({
6980
7309
  ...autoFocus ? { autoFocus: true } : {}
6981
7310
  },
6982
7311
  ...isDisabled !== void 0 ? { isDisabled } : {},
6983
- className: chunkNWGG5WFL_cjs.cn("w-full", className)
7312
+ className: chunk4ACELYEP_cjs.cn("w-full", className)
6984
7313
  }
6985
7314
  );
6986
7315
  })();
@@ -7020,7 +7349,7 @@ function EnumSingleValue({
7020
7349
  },
7021
7350
  ...isDisabled !== void 0 ? { isDisabled } : {},
7022
7351
  ...autoFocus ? { autoFocus: true } : {},
7023
- className: chunkNWGG5WFL_cjs.cn("w-full", className)
7352
+ className: chunk4ACELYEP_cjs.cn("w-full", className)
7024
7353
  }
7025
7354
  );
7026
7355
  }
@@ -7049,7 +7378,7 @@ function EnumMultiValue({
7049
7378
  placeholder: "Select values\u2026",
7050
7379
  ...isDisabled !== void 0 ? { isDisabled } : {},
7051
7380
  ...autoFocus ? { autoFocus: true } : {},
7052
- className: chunkNWGG5WFL_cjs.cn("w-full", className)
7381
+ className: chunk4ACELYEP_cjs.cn("w-full", className)
7053
7382
  }
7054
7383
  );
7055
7384
  }
@@ -7107,7 +7436,7 @@ function OperatorPicker({
7107
7436
  size,
7108
7437
  ...isDisabled !== void 0 ? { isDisabled } : {},
7109
7438
  ...autoFocus ? { autoFocus: true } : {},
7110
- className: chunkNWGG5WFL_cjs.cn("w-full", className),
7439
+ className: chunk4ACELYEP_cjs.cn("w-full", className),
7111
7440
  triggerClassName: "min-w-0"
7112
7441
  }
7113
7442
  );
@@ -7137,7 +7466,7 @@ function FilterRow({
7137
7466
  return /* @__PURE__ */ jsxRuntime.jsxs(
7138
7467
  "div",
7139
7468
  {
7140
- className: chunkNWGG5WFL_cjs.cn(
7469
+ className: chunk4ACELYEP_cjs.cn(
7141
7470
  "group flex items-center gap-2 px-1.5 py-1 rounded-sm",
7142
7471
  "hover:bg-[color-mix(in_oklab,var(--color-surface-2)_50%,var(--color-surface))]"
7143
7472
  ),
@@ -7145,7 +7474,7 @@ function FilterRow({
7145
7474
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-12 shrink-0 inline-flex justify-end pr-1", children: /* @__PURE__ */ jsxRuntime.jsx(
7146
7475
  "span",
7147
7476
  {
7148
- className: chunkNWGG5WFL_cjs.cn(
7477
+ className: chunk4ACELYEP_cjs.cn(
7149
7478
  "font-mono text-[10.5px] tracking-[0.08em]",
7150
7479
  index === 0 ? "text-ink-4" : "text-accent-ink"
7151
7480
  ),
@@ -7213,7 +7542,7 @@ function FilterRow({
7213
7542
  onClick: onWrap,
7214
7543
  "aria-label": "Wrap in group",
7215
7544
  title: "Wrap in a group with the opposite operator",
7216
- className: chunkNWGG5WFL_cjs.cn(
7545
+ className: chunk4ACELYEP_cjs.cn(
7217
7546
  "shrink-0 size-6 inline-flex items-center justify-center rounded-sm",
7218
7547
  "text-ink-4 hover:text-ink hover:bg-surface-2 cursor-pointer outline-none",
7219
7548
  "opacity-0 group-hover:opacity-100 focus-visible:opacity-100"
@@ -7240,7 +7569,7 @@ function FilterRow({
7240
7569
  type: "button",
7241
7570
  onClick: onRemove,
7242
7571
  "aria-label": field ? "Remove filter" : "Cancel",
7243
- className: chunkNWGG5WFL_cjs.cn(
7572
+ className: chunk4ACELYEP_cjs.cn(
7244
7573
  "shrink-0 size-6 inline-flex items-center justify-center rounded-sm",
7245
7574
  "text-ink-4 hover:text-danger hover:bg-surface-2 cursor-pointer outline-none",
7246
7575
  field ? "opacity-0 group-hover:opacity-100 focus-visible:opacity-100" : "opacity-100"
@@ -7369,7 +7698,7 @@ function GroupAddControls({
7369
7698
  {
7370
7699
  type: "button",
7371
7700
  onClick: onAddFilter,
7372
- className: chunkNWGG5WFL_cjs.cn(
7701
+ className: chunk4ACELYEP_cjs.cn(
7373
7702
  "inline-flex items-center gap-1.5 px-2 py-1 rounded-sm",
7374
7703
  "text-ink-2 hover:bg-surface-2 hover:text-ink cursor-pointer outline-none"
7375
7704
  ),
@@ -7397,7 +7726,7 @@ function GroupAddControls({
7397
7726
  type: "button",
7398
7727
  onClick: onAddGroup,
7399
7728
  title: "Add a nested group with its own logical operator",
7400
- className: chunkNWGG5WFL_cjs.cn(
7729
+ className: chunk4ACELYEP_cjs.cn(
7401
7730
  "inline-flex items-center gap-1.5 px-2 py-1 rounded-sm",
7402
7731
  "text-ink-2 hover:bg-surface-2 hover:text-ink cursor-pointer outline-none"
7403
7732
  ),
@@ -7443,7 +7772,7 @@ function NestedGroup({
7443
7772
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-12 shrink-0 inline-flex justify-end pr-1 pt-2", children: /* @__PURE__ */ jsxRuntime.jsx(
7444
7773
  "span",
7445
7774
  {
7446
- className: chunkNWGG5WFL_cjs.cn(
7775
+ className: chunk4ACELYEP_cjs.cn(
7447
7776
  "font-mono text-[10.5px] tracking-[0.08em]",
7448
7777
  index === 0 ? "text-ink-4" : "text-accent-ink"
7449
7778
  ),
@@ -7453,7 +7782,7 @@ function NestedGroup({
7453
7782
  /* @__PURE__ */ jsxRuntime.jsxs(
7454
7783
  "div",
7455
7784
  {
7456
- className: chunkNWGG5WFL_cjs.cn(
7785
+ className: chunk4ACELYEP_cjs.cn(
7457
7786
  "flex-1 min-w-0 rounded-sm border border-rule",
7458
7787
  "bg-[color-mix(in_oklab,var(--color-surface-2)_60%,var(--color-surface))]"
7459
7788
  ),
@@ -7480,7 +7809,7 @@ function NestedGroup({
7480
7809
  type: "button",
7481
7810
  onClick: onRemove,
7482
7811
  "aria-label": "Remove group",
7483
- className: chunkNWGG5WFL_cjs.cn(
7812
+ className: chunk4ACELYEP_cjs.cn(
7484
7813
  "size-6 inline-flex items-center justify-center rounded-sm",
7485
7814
  "text-ink-4 hover:text-danger hover:bg-surface cursor-pointer outline-none"
7486
7815
  ),
@@ -7723,7 +8052,7 @@ function RecordFilterBuilderPanel({
7723
8052
  type: "button",
7724
8053
  onClick: onExpand,
7725
8054
  title: "Show filter chips inline above the table",
7726
- className: chunkNWGG5WFL_cjs.cn(
8055
+ className: chunk4ACELYEP_cjs.cn(
7727
8056
  "inline-flex items-center gap-1 px-2 py-1 rounded-sm",
7728
8057
  "font-mono text-[11.5px] text-ink-3 hover:text-ink hover:bg-surface-2",
7729
8058
  "cursor-pointer outline-none"
@@ -7753,7 +8082,7 @@ function RecordFilterBuilderPanel({
7753
8082
  type: "button",
7754
8083
  onClick: onClose,
7755
8084
  "aria-label": "Close",
7756
- className: chunkNWGG5WFL_cjs.cn(
8085
+ className: chunk4ACELYEP_cjs.cn(
7757
8086
  "size-6 inline-flex items-center justify-center rounded-sm",
7758
8087
  "text-ink-3 hover:text-ink hover:bg-surface-2 cursor-pointer outline-none"
7759
8088
  ),
@@ -7788,7 +8117,7 @@ function RecordFilterBuilderPanel({
7788
8117
  /* @__PURE__ */ jsxRuntime.jsxs(
7789
8118
  "div",
7790
8119
  {
7791
- className: chunkNWGG5WFL_cjs.cn(
8120
+ className: chunk4ACELYEP_cjs.cn(
7792
8121
  "flex items-center justify-between px-3.5 py-2.5 border-t border-rule rounded-b-md",
7793
8122
  "bg-[color-mix(in_oklab,var(--color-surface-2)_60%,var(--color-surface))]"
7794
8123
  ),
@@ -7799,7 +8128,7 @@ function RecordFilterBuilderPanel({
7799
8128
  type: "button",
7800
8129
  onClick: clearAll,
7801
8130
  disabled: totalChildren === 0,
7802
- className: chunkNWGG5WFL_cjs.cn(
8131
+ className: chunk4ACELYEP_cjs.cn(
7803
8132
  "font-mono text-[11.5px] text-ink-3 hover:text-ink",
7804
8133
  "disabled:opacity-40 disabled:pointer-events-none",
7805
8134
  "outline-none cursor-pointer"
@@ -7809,7 +8138,7 @@ function RecordFilterBuilderPanel({
7809
8138
  ),
7810
8139
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
7811
8140
  onSaveView ? /* @__PURE__ */ jsxRuntime.jsxs(
7812
- chunkNWGG5WFL_cjs.Button,
8141
+ chunk4ACELYEP_cjs.Button,
7813
8142
  {
7814
8143
  variant: "ghost",
7815
8144
  size: "sm",
@@ -7837,7 +8166,7 @@ function RecordFilterBuilderPanel({
7837
8166
  ]
7838
8167
  }
7839
8168
  ) : null,
7840
- /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { variant: "cta", size: "sm", onPress: onClose, children: "Done" })
8169
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4ACELYEP_cjs.Button, { variant: "cta", size: "sm", onPress: onClose, children: "Done" })
7841
8170
  ] })
7842
8171
  ]
7843
8172
  }
@@ -7911,11 +8240,11 @@ function RecordFilterButton({
7911
8240
  type: "button",
7912
8241
  "data-filter-trigger": "collapsed",
7913
8242
  onClick: () => setOpen((v) => !v),
7914
- className: chunkNWGG5WFL_cjs.cn(
8243
+ className: chunk4ACELYEP_cjs.cn(
7915
8244
  "inline-flex items-center gap-1.5 px-3 py-1.5 rounded-md border",
7916
8245
  "font-mono text-[12px] cursor-pointer outline-none",
7917
8246
  "focus-visible:shadow-[var(--shadow-focus)]",
7918
- hasFilters ? chunkNWGG5WFL_cjs.cn(
8247
+ hasFilters ? chunk4ACELYEP_cjs.cn(
7919
8248
  "border-[color-mix(in_oklab,var(--color-accent)_35%,var(--color-rule))]",
7920
8249
  "bg-[color-mix(in_oklab,var(--color-accent)_8%,var(--color-surface))]",
7921
8250
  "text-accent-ink"
@@ -8014,7 +8343,7 @@ function RecordFilterChips({
8014
8343
  logicalOperator: filter.logicalOperator === "and" ? "or" : "and"
8015
8344
  }),
8016
8345
  title: "Toggle joiner",
8017
- className: chunkNWGG5WFL_cjs.cn(
8346
+ className: chunk4ACELYEP_cjs.cn(
8018
8347
  "inline-flex items-center px-1.5 py-0.5 rounded-sm border border-dashed border-rule",
8019
8348
  "font-mono text-[10.5px] tracking-[0.08em] text-ink-3",
8020
8349
  "hover:text-ink hover:border-ink-4 cursor-pointer outline-none"
@@ -8087,7 +8416,7 @@ function RecordFilterChips({
8087
8416
  elements: elements.filter((_, idx) => idx !== i)
8088
8417
  });
8089
8418
  },
8090
- className: chunkNWGG5WFL_cjs.cn(
8419
+ className: chunk4ACELYEP_cjs.cn(
8091
8420
  "size-5 inline-flex items-center justify-center rounded-[3px]",
8092
8421
  "text-ink-4 hover:text-ink hover:bg-surface-2 cursor-pointer outline-none"
8093
8422
  ),
@@ -8132,7 +8461,7 @@ function GroupPill({ group }) {
8132
8461
  return /* @__PURE__ */ jsxRuntime.jsxs(
8133
8462
  "span",
8134
8463
  {
8135
- className: chunkNWGG5WFL_cjs.cn(
8464
+ className: chunk4ACELYEP_cjs.cn(
8136
8465
  "inline-flex items-center gap-1.5 px-2 py-1 rounded-sm border border-dashed border-rule",
8137
8466
  "bg-[color-mix(in_oklab,var(--color-surface-2)_60%,var(--color-surface))]"
8138
8467
  ),
@@ -8170,7 +8499,7 @@ function CollapseToggle({ onClick }) {
8170
8499
  {
8171
8500
  type: "button",
8172
8501
  onClick,
8173
- className: chunkNWGG5WFL_cjs.cn(
8502
+ className: chunk4ACELYEP_cjs.cn(
8174
8503
  "inline-flex items-center gap-1",
8175
8504
  "font-mono text-[11px] uppercase tracking-[0.08em]",
8176
8505
  "text-ink-3 hover:text-ink cursor-pointer outline-none"
@@ -8230,7 +8559,7 @@ function Chip2({
8230
8559
  setEditing((v) => !v);
8231
8560
  }
8232
8561
  },
8233
- className: chunkNWGG5WFL_cjs.cn(
8562
+ className: chunk4ACELYEP_cjs.cn(
8234
8563
  "group inline-flex items-center gap-1.5 pl-2 pr-1 py-1 rounded-sm border cursor-pointer",
8235
8564
  editing ? "border-accent shadow-[var(--shadow-focus)] bg-surface" : "border-rule bg-surface hover:border-ink-4"
8236
8565
  ),
@@ -8263,7 +8592,7 @@ function Chip2({
8263
8592
  onRemove();
8264
8593
  if (editing) setEditing(false);
8265
8594
  },
8266
- className: chunkNWGG5WFL_cjs.cn(
8595
+ className: chunk4ACELYEP_cjs.cn(
8267
8596
  "ml-0.5 size-4 inline-flex items-center justify-center rounded-[3px]",
8268
8597
  "text-ink-4 hover:text-ink hover:bg-surface-2 cursor-pointer outline-none"
8269
8598
  ),
@@ -8344,7 +8673,7 @@ function ChipMiniEditor({
8344
8673
  onChange: onChangeValue
8345
8674
  }
8346
8675
  ) }),
8347
- /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { type: "submit", variant: "cta", size: "sm", className: "shrink-0", children: "Save" })
8676
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4ACELYEP_cjs.Button, { type: "submit", variant: "cta", size: "sm", className: "shrink-0", children: "Save" })
8348
8677
  ]
8349
8678
  }
8350
8679
  );
@@ -8356,7 +8685,7 @@ function InlineAddFilter({ onClick }) {
8356
8685
  type: "button",
8357
8686
  "data-filter-trigger": "expanded",
8358
8687
  onClick,
8359
- className: chunkNWGG5WFL_cjs.cn(
8688
+ className: chunk4ACELYEP_cjs.cn(
8360
8689
  "inline-flex items-center gap-1 px-2 py-1 rounded-sm",
8361
8690
  "text-ink-3 hover:bg-surface-2 hover:text-ink cursor-pointer outline-none"
8362
8691
  ),
@@ -8423,25 +8752,25 @@ var recordUpdateRowStyles = tailwindVariants.tv({
8423
8752
  defaultVariants: { state: "changed" }
8424
8753
  });
8425
8754
  function RecordUpdate({ className, children, ...props }) {
8426
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunkNWGG5WFL_cjs.cn(recordUpdateStyles().root(), className), children });
8755
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunk4ACELYEP_cjs.cn(recordUpdateStyles().root(), className), children });
8427
8756
  }
8428
8757
  function RecordUpdateSummary({
8429
8758
  className,
8430
8759
  children,
8431
8760
  ...props
8432
8761
  }) {
8433
- return /* @__PURE__ */ jsxRuntime.jsx("p", { ...props, className: chunkNWGG5WFL_cjs.cn(recordUpdateStyles().summary(), className), children });
8762
+ return /* @__PURE__ */ jsxRuntime.jsx("p", { ...props, className: chunk4ACELYEP_cjs.cn(recordUpdateStyles().summary(), className), children });
8434
8763
  }
8435
8764
  function RecordUpdateRows({
8436
8765
  className,
8437
8766
  children,
8438
8767
  ...props
8439
8768
  }) {
8440
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunkNWGG5WFL_cjs.cn(recordUpdateStyles().rows(), className), children });
8769
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunk4ACELYEP_cjs.cn(recordUpdateStyles().rows(), className), children });
8441
8770
  }
8442
8771
  function RecordUpdateErrors({ errors, className, ...props }) {
8443
8772
  if (errors.length === 0) return null;
8444
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ...props, role: "alert", className: chunkNWGG5WFL_cjs.cn(recordUpdateStyles().errors(), className), children: [
8773
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ...props, role: "alert", className: chunk4ACELYEP_cjs.cn(recordUpdateStyles().errors(), className), children: [
8445
8774
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, { className: "size-4 shrink-0 mt-px", "aria-hidden": true }),
8446
8775
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-1 min-w-0", children: errors.map((error) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: error }, error)) })
8447
8776
  ] });
@@ -8451,7 +8780,7 @@ function RecordUpdateFooter({
8451
8780
  children,
8452
8781
  ...props
8453
8782
  }) {
8454
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunkNWGG5WFL_cjs.cn(recordUpdateStyles().footer(), className), children });
8783
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunk4ACELYEP_cjs.cn(recordUpdateStyles().footer(), className), children });
8455
8784
  }
8456
8785
  function RecordUpdateRow({
8457
8786
  label,
@@ -8478,14 +8807,14 @@ function RecordUpdateRow({
8478
8807
  ...props,
8479
8808
  "data-state": state,
8480
8809
  ...errorMessage ? { "aria-invalid": true } : {},
8481
- className: chunkNWGG5WFL_cjs.cn(styles4.root(), className),
8810
+ className: chunk4ACELYEP_cjs.cn(styles4.root(), className),
8482
8811
  children: [
8483
8812
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles4.labelRow(), children: [
8484
8813
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: label }),
8485
8814
  state === "unresolved" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles4.tag(), children: unresolvedLabel }) : null,
8486
8815
  state === "rejected" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles4.tag(), children: rejectedLabel }) : null,
8487
8816
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto flex items-center", children: isRemoved ? onRestore && /* @__PURE__ */ jsxRuntime.jsx(
8488
- chunkNWGG5WFL_cjs.Button,
8817
+ chunk4ACELYEP_cjs.Button,
8489
8818
  {
8490
8819
  variant: "ghost",
8491
8820
  size: "icon-sm",
@@ -8493,7 +8822,7 @@ function RecordUpdateRow({
8493
8822
  onPress: onRestore,
8494
8823
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Undo2, {})
8495
8824
  }
8496
- ) : onRemove && /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { variant: "ghost", size: "icon-sm", "aria-label": removeLabel, onPress: onRemove, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, {}) }) })
8825
+ ) : onRemove && /* @__PURE__ */ jsxRuntime.jsx(chunk4ACELYEP_cjs.Button, { variant: "ghost", size: "icon-sm", "aria-label": removeLabel, onPress: onRemove, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, {}) }) })
8497
8826
  ] }),
8498
8827
  isRemoved ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles4.removed(), children: removedText }) : from === void 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles4.to(), children: to }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles4.cells(), children: [
8499
8828
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles4.from(), children: from }),
@@ -8534,16 +8863,91 @@ function Separator({
8534
8863
  {
8535
8864
  ...props,
8536
8865
  orientation,
8537
- className: chunkNWGG5WFL_cjs.cn(separatorStyles({ orientation, variant }), className)
8866
+ className: chunk4ACELYEP_cjs.cn(separatorStyles({ orientation, variant }), className)
8538
8867
  }
8539
8868
  );
8540
8869
  }
8870
+ var stepperStyles = tailwindVariants.tv({
8871
+ slots: {
8872
+ root: "flex min-w-0 flex-wrap items-center gap-y-2 m-0 list-none p-0",
8873
+ item: "flex items-center",
8874
+ trigger: [
8875
+ "inline-flex items-center gap-[7px] rounded-sm border-0 bg-transparent p-0",
8876
+ "cursor-pointer select-none outline-none",
8877
+ "transition-colors duration-150",
8878
+ "data-[focus-visible]:shadow-[var(--shadow-focus)]",
8879
+ "data-[disabled]:cursor-default"
8880
+ ],
8881
+ marker: [
8882
+ "grid size-[18px] shrink-0 place-items-center rounded-pill border-[1.5px]",
8883
+ "font-mono text-[10px] font-medium leading-none",
8884
+ "transition-[background-color,border-color,color] duration-150",
8885
+ "[&_svg]:size-[11px]"
8886
+ ],
8887
+ label: "whitespace-nowrap text-[13px]",
8888
+ connector: "mx-2.5 h-px w-6 shrink-0 bg-rule"
8889
+ },
8890
+ variants: {
8891
+ orientation: {
8892
+ horizontal: {},
8893
+ vertical: {
8894
+ root: "flex-col flex-nowrap items-stretch gap-y-0",
8895
+ item: "flex-col items-start",
8896
+ // Centered under the 18px marker (9px in, minus half the line).
8897
+ connector: "mx-0 my-1 ml-[8.5px] h-4 w-px"
8898
+ }
8899
+ },
8900
+ state: {
8901
+ completed: {
8902
+ marker: "border-accent bg-accent text-surface",
8903
+ label: "text-ink-2 group-data-[hovered]:text-ink"
8904
+ },
8905
+ current: {
8906
+ marker: "border-accent bg-accent text-surface",
8907
+ label: "font-medium text-accent"
8908
+ },
8909
+ upcoming: {
8910
+ marker: "border-rule-strong bg-transparent text-ink-3",
8911
+ label: "text-ink-3 group-data-[hovered]:text-ink"
8912
+ }
8913
+ },
8914
+ isSelected: {
8915
+ true: { label: "underline decoration-accent/40 underline-offset-4" },
8916
+ false: {}
8917
+ }
8918
+ },
8919
+ defaultVariants: { orientation: "horizontal", state: "upcoming", isSelected: false }
8920
+ });
8921
+ function Stepper({ orientation, className, ...props }) {
8922
+ const { root } = stepperStyles({ orientation });
8923
+ return /* @__PURE__ */ jsxRuntime.jsx("ol", { ...props, className: chunk4ACELYEP_cjs.cn(root(), className) });
8924
+ }
8925
+ function StepperStep({
8926
+ state,
8927
+ orientation,
8928
+ index,
8929
+ icon,
8930
+ isSelected = false,
8931
+ isLast = false,
8932
+ children,
8933
+ className,
8934
+ ...props
8935
+ }) {
8936
+ const styles4 = stepperStyles({ orientation, state, isSelected });
8937
+ return /* @__PURE__ */ jsxRuntime.jsxs("li", { "aria-current": state === "current" ? "step" : void 0, className: styles4.item(), children: [
8938
+ /* @__PURE__ */ jsxRuntime.jsxs(reactAriaComponents.Button, { ...props, className: chunk4ACELYEP_cjs.cn("group", styles4.trigger(), className), children: [
8939
+ /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: styles4.marker(), children: state === "completed" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { strokeWidth: 2.5 }) : icon ?? index + 1 }),
8940
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles4.label(), children })
8941
+ ] }),
8942
+ !isLast && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: styles4.connector() })
8943
+ ] });
8944
+ }
8541
8945
  function SuccessAnimation({ className }) {
8542
8946
  return /* @__PURE__ */ jsxRuntime.jsx(
8543
8947
  "div",
8544
8948
  {
8545
8949
  "aria-hidden": true,
8546
- className: chunkNWGG5WFL_cjs.cn("size-24 text-success motion-safe:animate-status-pop", className),
8950
+ className: chunk4ACELYEP_cjs.cn("size-24 text-success motion-safe:animate-status-pop", className),
8547
8951
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheck, { className: "size-full", strokeWidth: 1.5 })
8548
8952
  }
8549
8953
  );
@@ -8562,7 +8966,7 @@ function Switch({
8562
8966
  {
8563
8967
  ...props,
8564
8968
  ...describedBy ? { "aria-describedby": describedBy } : {},
8565
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
8969
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
8566
8970
  // `relative`: RAC's visually-hidden <input> is absolutely positioned;
8567
8971
  // without a positioned label it escapes an overflow-auto ancestor and
8568
8972
  // its containing block becomes the page shell, so focusing it (any
@@ -8578,7 +8982,7 @@ function Switch({
8578
8982
  "span",
8579
8983
  {
8580
8984
  "aria-hidden": true,
8581
- className: chunkNWGG5WFL_cjs.cn(
8985
+ className: chunk4ACELYEP_cjs.cn(
8582
8986
  "relative inline-block shrink-0",
8583
8987
  "w-[38px] h-[22px] rounded-pill border",
8584
8988
  "bg-surface-3 border-rule",
@@ -8589,7 +8993,7 @@ function Switch({
8589
8993
  children: /* @__PURE__ */ jsxRuntime.jsx(
8590
8994
  "span",
8591
8995
  {
8592
- className: chunkNWGG5WFL_cjs.cn(
8996
+ className: chunk4ACELYEP_cjs.cn(
8593
8997
  "absolute top-[1px] left-[1px]",
8594
8998
  "block size-[18px] rounded-full bg-surface",
8595
8999
  "transition-transform duration-200",
@@ -8610,7 +9014,7 @@ function Switch({
8610
9014
  "span",
8611
9015
  {
8612
9016
  id: descriptionId,
8613
- className: chunkNWGG5WFL_cjs.cn(
9017
+ className: chunk4ACELYEP_cjs.cn(
8614
9018
  fieldHintStyles,
8615
9019
  "leading-[1.45]",
8616
9020
  // Track (38px) + gap-3 (12px): the copy starts under the label text.
@@ -8657,7 +9061,7 @@ function Root({ size, className, children, ...props }) {
8657
9061
  reactAriaComponents.Tabs,
8658
9062
  {
8659
9063
  ...props,
8660
- className: (rp) => chunkNWGG5WFL_cjs.cn(styles4.root(), typeof className === "function" ? className(rp) : className),
9064
+ className: (rp) => chunk4ACELYEP_cjs.cn(styles4.root(), typeof className === "function" ? className(rp) : className),
8661
9065
  children
8662
9066
  }
8663
9067
  );
@@ -8668,7 +9072,7 @@ function List({ size, className, children, ...props }) {
8668
9072
  reactAriaComponents.TabList,
8669
9073
  {
8670
9074
  ...props,
8671
- className: (rp) => chunkNWGG5WFL_cjs.cn(styles4.list(), typeof className === "function" ? className(rp) : className),
9075
+ className: (rp) => chunk4ACELYEP_cjs.cn(styles4.list(), typeof className === "function" ? className(rp) : className),
8672
9076
  children
8673
9077
  }
8674
9078
  );
@@ -8679,7 +9083,7 @@ function Trigger({ size, className, children, ...props }) {
8679
9083
  reactAriaComponents.Tab,
8680
9084
  {
8681
9085
  ...props,
8682
- className: (rp) => chunkNWGG5WFL_cjs.cn(styles4.trigger(), typeof className === "function" ? className(rp) : className),
9086
+ className: (rp) => chunk4ACELYEP_cjs.cn(styles4.trigger(), typeof className === "function" ? className(rp) : className),
8683
9087
  children
8684
9088
  }
8685
9089
  );
@@ -8690,7 +9094,7 @@ function Panel({ className, children, ...props }) {
8690
9094
  reactAriaComponents.TabPanel,
8691
9095
  {
8692
9096
  ...props,
8693
- className: (rp) => chunkNWGG5WFL_cjs.cn(styles4.panel(), typeof className === "function" ? className(rp) : className),
9097
+ className: (rp) => chunk4ACELYEP_cjs.cn(styles4.panel(), typeof className === "function" ? className(rp) : className),
8694
9098
  children
8695
9099
  }
8696
9100
  );
@@ -8718,7 +9122,7 @@ var textShimmerStyles = tailwindVariants.tv({
8718
9122
  defaultVariants: { tone: "muted" }
8719
9123
  });
8720
9124
  function TextShimmer({ tone, className, children, ...props }) {
8721
- return /* @__PURE__ */ jsxRuntime.jsx("span", { ...props, className: chunkNWGG5WFL_cjs.cn(textShimmerStyles({ tone }), className), children });
9125
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { ...props, className: chunk4ACELYEP_cjs.cn(textShimmerStyles({ tone }), className), children });
8722
9126
  }
8723
9127
  function Textarea({
8724
9128
  label,
@@ -8738,7 +9142,7 @@ function Textarea({
8738
9142
  reactAriaComponents.TextField,
8739
9143
  {
8740
9144
  ...props,
8741
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
9145
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
8742
9146
  "grid grid-cols-1 gap-1.5 content-start",
8743
9147
  typeof className === "function" ? className(renderProps) : className
8744
9148
  ),
@@ -8750,7 +9154,7 @@ function Textarea({
8750
9154
  ...textareaProps,
8751
9155
  rows,
8752
9156
  placeholder: placeholder ?? "",
8753
- className: chunkNWGG5WFL_cjs.cn(
9157
+ className: chunk4ACELYEP_cjs.cn(
8754
9158
  // Same hairline chrome as Input, but allow vertical resize and set a
8755
9159
  // sensible minimum height so short content doesn't collapse.
8756
9160
  styles4.box(),
@@ -8781,7 +9185,7 @@ function TimeField({
8781
9185
  reactAriaComponents.TimeField,
8782
9186
  {
8783
9187
  ...props,
8784
- className: (renderProps) => chunkNWGG5WFL_cjs.cn(
9188
+ className: (renderProps) => chunk4ACELYEP_cjs.cn(
8785
9189
  "grid grid-cols-1 gap-1.5 content-start",
8786
9190
  typeof className === "function" ? className(renderProps) : className
8787
9191
  ),
@@ -8790,7 +9194,7 @@ function TimeField({
8790
9194
  /* @__PURE__ */ jsxRuntime.jsx(
8791
9195
  reactAriaComponents.DateInput,
8792
9196
  {
8793
- className: chunkNWGG5WFL_cjs.cn(
9197
+ className: chunk4ACELYEP_cjs.cn(
8794
9198
  styles4.box(),
8795
9199
  styles4.content(),
8796
9200
  "flex items-center min-w-0 text-ink",
@@ -8803,7 +9207,7 @@ function TimeField({
8803
9207
  reactAriaComponents.DateSegment,
8804
9208
  {
8805
9209
  segment,
8806
- className: chunkNWGG5WFL_cjs.cn(
9210
+ className: chunk4ACELYEP_cjs.cn(
8807
9211
  "px-px tabular-nums outline-none select-none",
8808
9212
  "data-[placeholder]:text-ink-4",
8809
9213
  "data-[type=literal]:text-ink-4",
@@ -8821,6 +9225,100 @@ function TimeField({
8821
9225
  }
8822
9226
  );
8823
9227
  }
9228
+ var timeSlotListStyles = tailwindVariants.tv({
9229
+ slots: {
9230
+ group: "flex flex-col gap-2",
9231
+ row: "flex gap-2 min-w-0",
9232
+ item: [
9233
+ "flex-1 min-h-9 px-3 inline-flex items-center justify-center cursor-pointer outline-none",
9234
+ "font-sans text-[13.5px] font-medium text-ink rounded-md",
9235
+ "bg-surface border border-rule-strong",
9236
+ "transition-[background-color,color,border-color,box-shadow] duration-150",
9237
+ "hovered:bg-surface-2 hovered:border-ink-3",
9238
+ "pressed:bg-surface-3",
9239
+ "selected:border-ink selected:bg-surface selected:shadow-[inset_0_0_0_1px_var(--color-ink)]",
9240
+ "selected:hovered:bg-surface",
9241
+ "data-[focus-visible]:shadow-[var(--shadow-focus)]",
9242
+ "selected:data-[focus-visible]:shadow-[var(--shadow-focus),inset_0_0_0_1px_var(--color-ink)]",
9243
+ // Taken while you looked: dashed and quiet.
9244
+ "data-[disabled]:border-dashed data-[disabled]:border-rule data-[disabled]:text-ink-4",
9245
+ "data-[disabled]:cursor-default data-[disabled]:bg-transparent"
9246
+ ],
9247
+ confirm: "flex-1 min-h-9",
9248
+ empty: [
9249
+ "rounded-md border border-rule-2 bg-surface-2 px-4 py-5 text-center",
9250
+ "font-sans text-[13px] text-ink-3"
9251
+ ]
9252
+ },
9253
+ variants: {
9254
+ columns: {
9255
+ 1: { group: "grid grid-cols-1" },
9256
+ 2: { group: "grid grid-cols-2" }
9257
+ }
9258
+ },
9259
+ defaultVariants: { columns: 1 }
9260
+ });
9261
+ function TimeSlotList({
9262
+ items,
9263
+ selectedId,
9264
+ onSelect,
9265
+ confirmLabel,
9266
+ onConfirm,
9267
+ emptyMessage = "Nothing available.",
9268
+ columns,
9269
+ autoFocus = false,
9270
+ isDisabled = false,
9271
+ className,
9272
+ orientation = "vertical",
9273
+ ...props
9274
+ }) {
9275
+ const styles4 = timeSlotListStyles({ columns });
9276
+ if (items.length === 0) {
9277
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "status", className: chunk4ACELYEP_cjs.cn(styles4.empty(), className), children: emptyMessage });
9278
+ }
9279
+ const focusTarget = selectedId ?? items.find((item) => !item.isDisabled)?.id ?? null;
9280
+ return /* @__PURE__ */ jsxRuntime.jsx(
9281
+ reactAriaComponents.ToggleButtonGroup,
9282
+ {
9283
+ ...props,
9284
+ orientation,
9285
+ selectionMode: "single",
9286
+ disallowEmptySelection: true,
9287
+ isDisabled,
9288
+ selectedKeys: selectedId === null ? /* @__PURE__ */ new Set() : /* @__PURE__ */ new Set([selectedId]),
9289
+ onSelectionChange: (keys) => {
9290
+ const [next] = Array.from(keys);
9291
+ if (next !== void 0) onSelect(next);
9292
+ },
9293
+ className: chunk4ACELYEP_cjs.cn(styles4.group(), className),
9294
+ children: items.map((item) => {
9295
+ const isSelected = item.id === selectedId;
9296
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles4.row(), children: [
9297
+ /* @__PURE__ */ jsxRuntime.jsx(
9298
+ reactAriaComponents.ToggleButton,
9299
+ {
9300
+ id: item.id,
9301
+ ...item.isDisabled ? { isDisabled: true } : {},
9302
+ ...autoFocus && item.id === focusTarget ? { autoFocus: true } : {},
9303
+ className: styles4.item(),
9304
+ children: item.label
9305
+ }
9306
+ ),
9307
+ isSelected && confirmLabel && /* @__PURE__ */ jsxRuntime.jsx(
9308
+ chunk4ACELYEP_cjs.Button,
9309
+ {
9310
+ variant: "cta",
9311
+ className: styles4.confirm(),
9312
+ isDisabled,
9313
+ onPress: () => onConfirm?.(item.id),
9314
+ children: confirmLabel
9315
+ }
9316
+ )
9317
+ ] }, String(item.id));
9318
+ })
9319
+ }
9320
+ );
9321
+ }
8824
9322
  function createToastQueue(options = {}) {
8825
9323
  return new reactAriaComponents.UNSTABLE_ToastQueue({ maxVisibleToasts: options.maxVisibleToasts ?? 3 });
8826
9324
  }
@@ -8857,7 +9355,7 @@ function ToastRegion({ queue, className }) {
8857
9355
  reactAriaComponents.UNSTABLE_ToastRegion,
8858
9356
  {
8859
9357
  queue,
8860
- className: chunkNWGG5WFL_cjs.cn(
9358
+ className: chunk4ACELYEP_cjs.cn(
8861
9359
  "fixed bottom-4 right-4 z-[1300] flex flex-col-reverse gap-2 outline-none",
8862
9360
  className
8863
9361
  ),
@@ -8876,7 +9374,7 @@ function ToastRegion({ queue, className }) {
8876
9374
  {
8877
9375
  slot: "close",
8878
9376
  "aria-label": "Dismiss",
8879
- className: chunkNWGG5WFL_cjs.cn(
9377
+ className: chunk4ACELYEP_cjs.cn(
8880
9378
  "shrink-0 inline-flex items-center justify-center size-6 rounded-md",
8881
9379
  "text-ink-4 hover:text-ink hover:bg-surface-2 cursor-pointer outline-none",
8882
9380
  "focus-visible:shadow-focus"
@@ -8892,23 +9390,23 @@ function ToastRegion({ queue, className }) {
8892
9390
 
8893
9391
  Object.defineProperty(exports, "Button", {
8894
9392
  enumerable: true,
8895
- get: function () { return chunkNWGG5WFL_cjs.Button; }
9393
+ get: function () { return chunk4ACELYEP_cjs.Button; }
8896
9394
  });
8897
9395
  Object.defineProperty(exports, "Skeleton", {
8898
9396
  enumerable: true,
8899
- get: function () { return chunkNWGG5WFL_cjs.Skeleton; }
9397
+ get: function () { return chunk4ACELYEP_cjs.Skeleton; }
8900
9398
  });
8901
9399
  Object.defineProperty(exports, "buttonStyles", {
8902
9400
  enumerable: true,
8903
- get: function () { return chunkNWGG5WFL_cjs.buttonStyles; }
9401
+ get: function () { return chunk4ACELYEP_cjs.buttonStyles; }
8904
9402
  });
8905
9403
  Object.defineProperty(exports, "cn", {
8906
9404
  enumerable: true,
8907
- get: function () { return chunkNWGG5WFL_cjs.cn; }
9405
+ get: function () { return chunk4ACELYEP_cjs.cn; }
8908
9406
  });
8909
9407
  Object.defineProperty(exports, "skeletonStyles", {
8910
9408
  enumerable: true,
8911
- get: function () { return chunkNWGG5WFL_cjs.skeletonStyles; }
9409
+ get: function () { return chunk4ACELYEP_cjs.skeletonStyles; }
8912
9410
  });
8913
9411
  exports.ATTRIBUTE_TYPES = ATTRIBUTE_TYPES;
8914
9412
  exports.ATTRIBUTE_TYPE_ICONS = ATTRIBUTE_TYPE_ICONS;
@@ -8916,6 +9414,7 @@ exports.AttachmentChip = AttachmentChip;
8916
9414
  exports.AttributePicker = AttributePicker;
8917
9415
  exports.AttributeType = AttributeType;
8918
9416
  exports.AttributeTypeIcon = AttributeTypeIcon;
9417
+ exports.AvailabilityCalendar = AvailabilityCalendar;
8919
9418
  exports.Avatar = Avatar;
8920
9419
  exports.AvatarGroup = AvatarGroup;
8921
9420
  exports.Badge = Badge;
@@ -8967,6 +9466,7 @@ exports.FileViewer = FileViewer;
8967
9466
  exports.FileViewerFallbackCard = FileViewerFallbackCard;
8968
9467
  exports.FilterRow = FilterRow;
8969
9468
  exports.FilterValueInput = FilterValueInput;
9469
+ exports.GlowFrame = GlowFrame;
8970
9470
  exports.IconPicker = IconPicker;
8971
9471
  exports.ImageAttachment = ImageAttachment;
8972
9472
  exports.ImageLightbox = ImageLightbox;
@@ -9021,6 +9521,8 @@ exports.SELECTION_COLUMN_ID = SELECTION_COLUMN_ID;
9021
9521
  exports.SegmentedControl = SegmentedControl;
9022
9522
  exports.Select = Select;
9023
9523
  exports.Separator = Separator;
9524
+ exports.Stepper = Stepper;
9525
+ exports.StepperStep = StepperStep;
9024
9526
  exports.SubmenuTrigger = SubmenuTrigger;
9025
9527
  exports.SuccessAnimation = SuccessAnimation;
9026
9528
  exports.Switch = Switch;
@@ -9037,6 +9539,7 @@ exports.TagInput = TagInput;
9037
9539
  exports.TextShimmer = TextShimmer;
9038
9540
  exports.Textarea = Textarea;
9039
9541
  exports.TimeField = TimeField;
9542
+ exports.TimeSlotList = TimeSlotList;
9040
9543
  exports.ToastRegion = ToastRegion;
9041
9544
  exports.Tooltip = Tooltip;
9042
9545
  exports.TooltipTrigger = TooltipTrigger;
@@ -9048,6 +9551,7 @@ exports.addPendingLeaf = addPendingLeaf;
9048
9551
  exports.addSubgroup = addSubgroup;
9049
9552
  exports.arityOf = arityOf;
9050
9553
  exports.attachmentChipStyles = attachmentChipStyles;
9554
+ exports.availabilityCalendarStyles = availabilityCalendarStyles;
9051
9555
  exports.avatarGroupStyles = avatarGroupStyles;
9052
9556
  exports.avatarStyles = avatarStyles;
9053
9557
  exports.badgeGroupOverflowStyles = badgeGroupOverflowStyles;
@@ -9077,6 +9581,7 @@ exports.fitBadgeCount = fitBadgeCount;
9077
9581
  exports.formatFileSize = formatFileSize;
9078
9582
  exports.formatValue = formatValue;
9079
9583
  exports.getPlatform = getPlatform;
9584
+ exports.glowFrameStyles = glowFrameStyles;
9080
9585
  exports.iconForContentType = iconForContentType;
9081
9586
  exports.imageAttachmentStyles = imageAttachmentStyles;
9082
9587
  exports.imageLightboxStyles = imageLightboxStyles;
@@ -9109,6 +9614,7 @@ exports.resolveLucideIcon = resolveLucideIcon;
9109
9614
  exports.resolveLucideIconName = resolveLucideIconName;
9110
9615
  exports.segmentedControlStyles = segmentedControlStyles;
9111
9616
  exports.setJoiner = setJoiner;
9617
+ exports.stepperStyles = stepperStyles;
9112
9618
  exports.subscribeDraftMessageOutcome = subscribeDraftMessageOutcome;
9113
9619
  exports.summaryFor = summaryFor;
9114
9620
  exports.tableCellStyles = tableCellStyles;
@@ -9116,6 +9622,7 @@ exports.tableHeaderCellStyles = tableHeaderCellStyles;
9116
9622
  exports.tabsStyles = tabsStyles;
9117
9623
  exports.terminalKindFor = terminalKindFor;
9118
9624
  exports.textShimmerStyles = textShimmerStyles;
9625
+ exports.timeSlotListStyles = timeSlotListStyles;
9119
9626
  exports.toastStyles = toastStyles;
9120
9627
  exports.updateLeaf = updateLeaf;
9121
9628
  exports.updateSubgroup = updateSubgroup;