@assure-one/design-system 1.30.0 → 1.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -201,6 +201,11 @@ var systemTokens = {
201
201
  accentHover: "var(--color-accent-hover)",
202
202
  accentActive: "var(--color-accent-active)",
203
203
  accentRing: "var(--color-accent-ring)",
204
+ /* Stable cross-product CTA; deliberately independent of [data-brand]. */
205
+ suiteAction: "var(--color-suite-action)",
206
+ suiteActionHover: "var(--color-suite-action-hover)",
207
+ suiteActionActive: "var(--color-suite-action-active)",
208
+ fgOnSuiteAction: "var(--color-fg-on-suite-action)",
204
209
  /* Brand — ambient product family; follows the active [data-brand] scope,
205
210
  defaulting to Pro. Prefer these (and the generated bg-brand / text-brand
206
211
  / border-brand-line / text-fg-on-brand utilities) for scope-aware chrome
@@ -349,6 +354,20 @@ var systemTokens = {
349
354
  fast: "var(--duration-fast)",
350
355
  normal: "var(--duration-normal)",
351
356
  slow: "var(--duration-slow)"
357
+ },
358
+ semantic: {
359
+ duration: {
360
+ press: "var(--motion-duration-press)",
361
+ feedback: "var(--motion-duration-feedback)",
362
+ overlay: "var(--motion-duration-overlay)",
363
+ spatial: "var(--motion-duration-spatial)",
364
+ deliberate: "var(--motion-duration-deliberate)"
365
+ },
366
+ ease: {
367
+ enter: "var(--motion-ease-enter)",
368
+ exit: "var(--motion-ease-exit)",
369
+ move: "var(--motion-ease-move)"
370
+ }
352
371
  }
353
372
  },
354
373
  layout: {
@@ -2732,6 +2751,14 @@ var AspectRatio = React39.forwardRef(function AspectRatio2({ className, ratio =
2732
2751
  );
2733
2752
  });
2734
2753
  AspectRatio.displayName = AspectRatioPrimitive.Root.displayName;
2754
+
2755
+ // src/lib/micro-interactions.ts
2756
+ var microInteractions = {
2757
+ control: "transition-[color,background-color,border-color,box-shadow] duration-[var(--motion-duration-feedback)] ease-[var(--motion-ease-enter)] motion-reduce:transition-none",
2758
+ pressable: "transition-[color,background-color,border-color,box-shadow,transform] duration-[var(--motion-duration-feedback)] ease-[var(--motion-ease-enter)] active:scale-[0.98] motion-reduce:transform-none motion-reduce:transition-none",
2759
+ selection: "transition-[color,background-color,border-color,box-shadow] duration-[var(--motion-duration-press)] ease-[var(--motion-ease-enter)] motion-reduce:transition-none",
2760
+ overlay: "transition-[opacity,transform] duration-[var(--motion-duration-overlay)] ease-[var(--motion-ease-enter)] motion-reduce:transform-none motion-reduce:transition-none",
2761
+ progress: "transition-[width,height,stroke-dashoffset,background-color] duration-[var(--motion-duration-deliberate)] ease-[var(--motion-ease-enter)] motion-reduce:transition-none"};
2735
2762
  var spinnerVariants = cva(
2736
2763
  "inline-flex shrink-0 items-center justify-center [&_svg]:motion-reduce:animate-none",
2737
2764
  {
@@ -2777,10 +2804,10 @@ Spinner.displayName = "Spinner";
2777
2804
  var buttonVariants = cva(
2778
2805
  cn(
2779
2806
  "inline-flex items-center justify-center rounded-btn font-medium whitespace-nowrap cursor-pointer",
2780
- "transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
2807
+ microInteractions.pressable,
2781
2808
  "focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]",
2782
- "disabled:pointer-events-none disabled:bg-bg-disabled disabled:text-fg-disabled",
2783
- "motion-reduce:transition-none",
2809
+ "disabled:pointer-events-none [&:disabled:not([data-loading=true])]:bg-bg-disabled [&:disabled:not([data-loading=true])]:text-fg-disabled",
2810
+ "data-[loading=true]:cursor-wait",
2784
2811
  "[&_svg]:size-4 [&_svg]:shrink-0"
2785
2812
  ),
2786
2813
  {
@@ -2792,14 +2819,17 @@ var buttonVariants = cva(
2792
2819
  success: "bg-success-fg text-fg-on-success hover:bg-success-fg-hover active:bg-success-fg-active",
2793
2820
  ghost: "bg-control-bg text-control-fg hover:bg-control-hover-bg hover:text-control-hover-fg",
2794
2821
  outline: "border border-control-border-strong bg-control-bg text-control-fg hover:bg-control-hover-bg hover:border-control-border-hover",
2795
- link: "bg-transparent text-accent underline-offset-4 hover:underline p-0 h-auto",
2796
- accent: "bg-accent text-fg-on-accent hover:bg-accent-hover active:bg-accent-active",
2822
+ link: "bg-transparent text-accent underline-offset-4 hover:underline p-0 h-auto active:scale-100",
2823
+ accent: "bg-suite-action text-fg-on-suite-action hover:bg-suite-action-hover active:bg-suite-action-active",
2797
2824
  dashed: "border-2 border-dashed border-control-border bg-control-bg text-control-muted-fg hover:border-control-border-hover hover:bg-control-hover-bg hover:text-control-hover-fg"
2798
2825
  },
2799
2826
  size: {
2800
2827
  sm: "h-8 px-3 text-[13px] gap-1.5",
2801
2828
  md: "h-10 px-4 text-sm gap-2",
2802
2829
  lg: "h-12 px-6 text-base gap-2",
2830
+ compact: "h-8 px-3 text-[13px] gap-1.5",
2831
+ default: "h-10 px-4 text-sm gap-2",
2832
+ comfortable: "h-12 px-6 text-base gap-2",
2803
2833
  // Icon-only sizes. Hit target ≥ 24px (WCAG 2.5.5 floor).
2804
2834
  // `icon-xs` / `icon-sm` are for dense in-row action stacks where
2805
2835
  // `size="icon"` (40×40) would visually crowd the row.
@@ -2835,6 +2865,8 @@ var Button = forwardRef(function Button2({
2835
2865
  {
2836
2866
  ref,
2837
2867
  disabled: disabled || loading,
2868
+ "aria-busy": loading || void 0,
2869
+ "data-loading": loading || void 0,
2838
2870
  className: cn(buttonVariants({ variant, size }), className),
2839
2871
  ...props,
2840
2872
  children: [
@@ -3523,7 +3555,7 @@ var Checkbox = React39.forwardRef(function Checkbox2({
3523
3555
  className: cn(
3524
3556
  "peer border-rule-strong bg-surface text-brand flex size-4 shrink-0 items-center justify-center border",
3525
3557
  shape === "circle" ? "rounded-full" : "rounded-[4px]",
3526
- "transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]",
3558
+ microInteractions.selection,
3527
3559
  "hover:border-fg-4",
3528
3560
  "focus-visible:[border-color:var(--focus-ring-border)] focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
3529
3561
  "data-[state=checked]:border-brand data-[state=checked]:bg-brand-bg",
@@ -3855,9 +3887,8 @@ var DialogOverlay = React39.forwardRef(({ className, ...props }, ref) => /* @__P
3855
3887
  ref,
3856
3888
  className: cn(
3857
3889
  "bg-overlay fixed inset-0 z-[var(--z-overlay)] backdrop-blur-[4px]",
3858
- "transition-opacity duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]",
3890
+ microInteractions.overlay,
3859
3891
  "data-[state=closed]:opacity-0 data-[state=open]:opacity-100",
3860
- "motion-reduce:transition-none",
3861
3892
  className
3862
3893
  ),
3863
3894
  ...props
@@ -3882,10 +3913,9 @@ var DialogContent = React39.forwardRef(({ size = "md", showCloseButton = true, c
3882
3913
  "rounded-card border-rule bg-surface shadow-pop border p-6",
3883
3914
  "font-body text-fg",
3884
3915
  // motion: scale + fade keyed off data-state
3885
- "transition-[opacity,transform] duration-[var(--duration-overlay)] ease-[var(--ease-out-quart)]",
3916
+ microInteractions.overlay,
3886
3917
  "data-[state=closed]:-translate-x-1/2 data-[state=closed]:-translate-y-[48%] data-[state=closed]:scale-95 data-[state=closed]:opacity-0",
3887
3918
  "data-[state=open]:-translate-x-1/2 data-[state=open]:-translate-y-1/2 data-[state=open]:scale-100 data-[state=open]:opacity-100",
3888
- "motion-reduce:transition-none",
3889
3919
  dialogSizeStyles[size],
3890
3920
  className
3891
3921
  ),
@@ -4429,10 +4459,9 @@ var PopoverContent = React39.forwardRef(({ className, align = "center", side = "
4429
4459
  sideOffset,
4430
4460
  className: cn(
4431
4461
  "rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] w-72 border p-4 outline-none",
4432
- "transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
4462
+ microInteractions.overlay,
4433
4463
  "data-[state=closed]:scale-95 data-[state=closed]:opacity-0",
4434
4464
  "data-[state=open]:scale-100 data-[state=open]:opacity-100",
4435
- "motion-reduce:transition-none",
4436
4465
  className
4437
4466
  ),
4438
4467
  ...props
@@ -4956,8 +4985,8 @@ var chipVariants = cva(
4956
4985
  {
4957
4986
  variants: {
4958
4987
  variant: {
4959
- primary: "bg-primary/10 text-primary hover:bg-primary/15",
4960
- neutral: "bg-muted text-fg-2 hover:bg-muted/80"
4988
+ primary: "bg-brand-bg text-brand hover:bg-brand-bg-hover",
4989
+ neutral: "bg-bg-2 text-fg-2 hover:bg-bg-3"
4961
4990
  }
4962
4991
  },
4963
4992
  defaultVariants: {
@@ -5609,7 +5638,7 @@ IconTile.displayName = "IconTile";
5609
5638
  var inputVariants = cva(
5610
5639
  [
5611
5640
  "flex w-full rounded-input border bg-surface font-body text-fg",
5612
- "transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]",
5641
+ microInteractions.control,
5613
5642
  "placeholder:text-fg-4",
5614
5643
  "focus-visible:outline-none focus-visible:[border-color:var(--focus-ring-border)]",
5615
5644
  "focus-visible:[box-shadow:var(--shadow-focus-ring)]",
@@ -5627,7 +5656,10 @@ var inputVariants = cva(
5627
5656
  inputSize: {
5628
5657
  sm: "h-8 px-2.5 py-1 text-xs",
5629
5658
  md: "h-9 px-3 py-2 text-[13px]",
5630
- lg: "h-11 px-3.5 py-2.5 text-sm"
5659
+ lg: "h-11 px-3.5 py-2.5 text-sm",
5660
+ compact: "h-8 px-2.5 py-1 text-[13px]",
5661
+ default: "h-10 px-3 py-2 text-sm",
5662
+ comfortable: "h-12 px-3.5 py-2.5 text-base"
5631
5663
  }
5632
5664
  },
5633
5665
  defaultVariants: {
@@ -5639,7 +5671,10 @@ var inputVariants = cva(
5639
5671
  var floatingLabelSize = {
5640
5672
  sm: "text-xs",
5641
5673
  md: "text-[13px]",
5642
- lg: "text-sm"
5674
+ lg: "text-sm",
5675
+ compact: "text-[13px]",
5676
+ default: "text-sm",
5677
+ comfortable: "text-base"
5643
5678
  };
5644
5679
  var Input = forwardRef(function Input2({
5645
5680
  label,
@@ -5726,7 +5761,6 @@ var Input = forwardRef(function Input2({
5726
5761
  onClick: () => setShowPassword((prev) => !prev),
5727
5762
  className: "text-fg-4 hover:text-fg absolute top-1/2 right-2.5 -translate-y-1/2 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none motion-reduce:transition-none",
5728
5763
  "aria-label": showPassword ? "Hide password" : "Show password",
5729
- tabIndex: -1,
5730
5764
  children: showPassword ? /* @__PURE__ */ jsx(EyeOffIcon, { className: "size-4", "aria-hidden": "true" }) : /* @__PURE__ */ jsx(EyeIcon, { className: "size-4", "aria-hidden": "true" })
5731
5765
  }
5732
5766
  ),
@@ -5871,7 +5905,7 @@ var Skeleton = forwardRef(function Skeleton2({ className, ...props }, ref) {
5871
5905
  "div",
5872
5906
  {
5873
5907
  ref,
5874
- className: cn("skeleton bg-bg-3 rounded-icon animate-pulse", className),
5908
+ className: cn("skeleton bg-bg-3 rounded-icon animate-pulse motion-reduce:animate-none", className),
5875
5909
  "aria-hidden": "true",
5876
5910
  ...props
5877
5911
  }
@@ -5883,7 +5917,7 @@ var SkeletonText = forwardRef(function SkeletonText2({ lines = 3, className, ...
5883
5917
  "div",
5884
5918
  {
5885
5919
  className: cn(
5886
- "skeleton bg-bg-3 rounded-icon h-4 animate-pulse",
5920
+ "skeleton bg-bg-3 rounded-icon h-4 animate-pulse motion-reduce:animate-none",
5887
5921
  i === lines - 1 && "w-3/4"
5888
5922
  )
5889
5923
  },
@@ -5897,7 +5931,7 @@ var SkeletonCircle = forwardRef(
5897
5931
  "div",
5898
5932
  {
5899
5933
  ref,
5900
- className: cn("skeleton bg-bg-3 animate-pulse rounded-full", className),
5934
+ className: cn("skeleton bg-bg-3 animate-pulse rounded-full motion-reduce:animate-none", className),
5901
5935
  style: { width: size, height: size },
5902
5936
  "aria-hidden": "true",
5903
5937
  ...props
@@ -7016,11 +7050,11 @@ function CountrySelect({
7016
7050
  type: "button",
7017
7051
  disabled,
7018
7052
  "aria-label": "Select country code",
7019
- className: "rounded-input flex h-9 w-[90px] shrink-0 items-center gap-1.5 border border-input bg-input-background px-2.5 text-sm text-foreground focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)] disabled:cursor-not-allowed disabled:opacity-50",
7053
+ className: "rounded-input flex h-9 w-[90px] shrink-0 items-center gap-1.5 border border-rule-strong bg-surface px-2.5 text-sm text-fg transition-colors focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none motion-reduce:transition-none disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled",
7020
7054
  children: [
7021
7055
  /* @__PURE__ */ jsx(CountryFlag, { iso: selected.iso }),
7022
- /* @__PURE__ */ jsx("span", { className: "text-xs tabular-nums text-muted-foreground", children: selected.dialCode }),
7023
- /* @__PURE__ */ jsx("svg", { className: "ml-auto size-3 shrink-0 text-muted-foreground", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ jsx("path", { d: "m6 9 6 6 6-6" }) })
7056
+ /* @__PURE__ */ jsx("span", { className: "text-xs tabular-nums text-fg-3", children: selected.dialCode }),
7057
+ /* @__PURE__ */ jsx(ChevronDownIcon, { className: "ml-auto size-3 shrink-0 text-fg-3", "aria-hidden": "true" })
7024
7058
  ]
7025
7059
  }
7026
7060
  ) }),
@@ -7031,7 +7065,7 @@ function CountrySelect({
7031
7065
  align: "start",
7032
7066
  sideOffset: 4,
7033
7067
  style: { zIndex: 9999, minWidth: 248 },
7034
- className: "rounded-card border border-border bg-popover shadow-xl outline-none",
7068
+ className: "rounded-card border border-rule bg-surface shadow-xl outline-none motion-reduce:transition-none",
7035
7069
  onOpenAutoFocus: (e) => {
7036
7070
  e.preventDefault();
7037
7071
  searchRef.current?.focus({ preventScroll: true });
@@ -7041,11 +7075,8 @@ function CountrySelect({
7041
7075
  if (e.key !== "Escape") e.stopPropagation();
7042
7076
  },
7043
7077
  children: [
7044
- /* @__PURE__ */ jsx("div", { className: "rounded-t-card border-b border-border px-3 py-2.5", children: /* @__PURE__ */ jsxs("div", { className: "rounded-input flex items-center gap-2 border border-input bg-input-background px-2.5", children: [
7045
- /* @__PURE__ */ jsxs("svg", { className: "size-3.5 shrink-0 text-muted-foreground", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [
7046
- /* @__PURE__ */ jsx("circle", { cx: "11", cy: "11", r: "8" }),
7047
- /* @__PURE__ */ jsx("path", { d: "m21 21-4.35-4.35" })
7048
- ] }),
7078
+ /* @__PURE__ */ jsx("div", { className: "rounded-t-card border-b border-rule px-3 py-2.5", children: /* @__PURE__ */ jsxs("div", { className: "rounded-input flex items-center gap-2 border border-rule-strong bg-surface px-2.5", children: [
7079
+ /* @__PURE__ */ jsx(SearchIcon, { className: "size-3.5 shrink-0 text-fg-3", "aria-hidden": "true" }),
7049
7080
  /* @__PURE__ */ jsx(
7050
7081
  "input",
7051
7082
  {
@@ -7054,7 +7085,7 @@ function CountrySelect({
7054
7085
  onChange: (e) => setSearch(e.target.value),
7055
7086
  onKeyDown: (e) => e.stopPropagation(),
7056
7087
  placeholder: "Search country or code...",
7057
- className: "h-8 flex-1 bg-transparent text-xs text-foreground placeholder:text-muted-foreground focus:outline-none"
7088
+ className: "h-8 flex-1 bg-transparent text-xs text-fg placeholder:text-fg-3 focus:outline-none"
7058
7089
  }
7059
7090
  )
7060
7091
  ] }) }),
@@ -7064,7 +7095,7 @@ function CountrySelect({
7064
7095
  className: "rounded-b-card max-h-56 overflow-y-auto",
7065
7096
  style: { overscrollBehavior: "contain" },
7066
7097
  onWheel: (e) => e.stopPropagation(),
7067
- children: filtered.length === 0 ? /* @__PURE__ */ jsx("p", { className: "px-4 py-3 text-center text-xs text-muted-foreground", children: "No countries found" }) : filtered.map((c) => /* @__PURE__ */ jsxs(
7098
+ children: filtered.length === 0 ? /* @__PURE__ */ jsx("p", { className: "px-4 py-3 text-center text-xs text-fg-3", children: "No countries found" }) : filtered.map((c) => /* @__PURE__ */ jsxs(
7068
7099
  "button",
7069
7100
  {
7070
7101
  type: "button",
@@ -7075,13 +7106,13 @@ function CountrySelect({
7075
7106
  setSearch("");
7076
7107
  },
7077
7108
  className: cn(
7078
- "flex w-full items-center gap-3 px-3 py-2 text-left transition-colors hover:bg-muted/60",
7079
- c.iso === value && "bg-primary/5"
7109
+ "flex w-full items-center gap-3 px-3 py-2 text-left transition-colors hover:bg-bg-2/60 motion-reduce:transition-none",
7110
+ c.iso === value && "bg-brand-bg"
7080
7111
  ),
7081
7112
  children: [
7082
7113
  /* @__PURE__ */ jsx(CountryFlag, { iso: c.iso }),
7083
- /* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-xs text-foreground", children: c.name }),
7084
- /* @__PURE__ */ jsx("span", { className: "shrink-0 text-xs tabular-nums text-muted-foreground", children: c.dialCode })
7114
+ /* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-xs text-fg", children: c.name }),
7115
+ /* @__PURE__ */ jsx("span", { className: "shrink-0 text-xs tabular-nums text-fg-3", children: c.dialCode })
7085
7116
  ]
7086
7117
  },
7087
7118
  c.iso
@@ -7120,7 +7151,7 @@ function PhoneCountryInput({
7120
7151
  }
7121
7152
  )
7122
7153
  ] }),
7123
- error && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-destructive", children: error })
7154
+ error && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-danger-fg", children: error })
7124
7155
  ] });
7125
7156
  }
7126
7157
  var BARS = [
@@ -7182,7 +7213,7 @@ function PriorityIcon({ priority, size = 16, className, ...props }) {
7182
7213
  );
7183
7214
  }
7184
7215
  var progressBarVariants = cva(
7185
- "h-full rounded-full transition-[width,background-color] duration-[var(--duration-slow)] ease-[var(--ease-out-quart)]",
7216
+ cn("h-full rounded-full", microInteractions.progress),
7186
7217
  {
7187
7218
  variants: {
7188
7219
  variant: {
@@ -7222,7 +7253,7 @@ var ProgressBar = forwardRef(function ProgressBar2({ value, max = 100, label, sh
7222
7253
  {
7223
7254
  className: cn(
7224
7255
  progressBarVariants({ variant: resolvedVariant }),
7225
- isIndeterminate && "absolute inset-y-0 left-0 w-1/3 animate-[progress-indeterminate_1.4s_var(--ease-out-quart)_infinite]"
7256
+ isIndeterminate && "absolute inset-y-0 left-0 w-1/3 animate-[progress-indeterminate_1.4s_var(--ease-out-quart)_infinite] motion-reduce:animate-none"
7226
7257
  ),
7227
7258
  style: isIndeterminate ? void 0 : { width: `${percentage}%` }
7228
7259
  }
@@ -7239,7 +7270,7 @@ var ProgressBar = forwardRef(function ProgressBar2({ value, max = 100, label, sh
7239
7270
  });
7240
7271
  ProgressBar.displayName = "ProgressBar";
7241
7272
  var progressRingVariants = cva(
7242
- "transition-[stroke-dashoffset,stroke] duration-[var(--duration-slow)] ease-[var(--ease-out-quart)]",
7273
+ "transition-[stroke-dashoffset,stroke] duration-[var(--duration-slow)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
7243
7274
  {
7244
7275
  variants: {
7245
7276
  variant: {
@@ -7324,7 +7355,7 @@ var RadioGroupItem = React39.forwardRef(function RadioGroupItem2({ className, la
7324
7355
  id,
7325
7356
  className: cn(
7326
7357
  "peer border-rule-strong bg-surface text-brand aspect-square size-4 shrink-0 rounded-full border",
7327
- "transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]",
7358
+ microInteractions.selection,
7328
7359
  "hover:border-fg-4",
7329
7360
  "focus-visible:[border-color:var(--focus-ring-border)] focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
7330
7361
  "data-[state=checked]:border-brand",
@@ -7601,7 +7632,8 @@ var RouteTransition = forwardRef(
7601
7632
  {
7602
7633
  className: cn(
7603
7634
  "animate-in fade-in-0 slide-in-from-bottom-2",
7604
- "duration-[var(--duration-normal)] ease-[var(--ease-out-quart)]"
7635
+ "duration-[var(--duration-normal)] ease-[var(--ease-out-quart)]",
7636
+ "motion-reduce:animate-none"
7605
7637
  ),
7606
7638
  children
7607
7639
  },
@@ -7672,8 +7704,7 @@ function useDebounce(value, delay = 300) {
7672
7704
  var searchInputVariants = cva(
7673
7705
  [
7674
7706
  "flex w-full rounded-input border border-rule-strong bg-surface font-body text-fg",
7675
- "transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
7676
- "motion-reduce:transition-none",
7707
+ microInteractions.control,
7677
7708
  "placeholder:text-fg-4",
7678
7709
  "focus-visible:outline-none focus-visible:[border-color:var(--focus-ring-border)]",
7679
7710
  "focus-visible:[box-shadow:var(--shadow-focus-ring)]",
@@ -7690,7 +7721,10 @@ var searchInputVariants = cva(
7690
7721
  // FilterChip at their `sm` tier in a toolbar row.
7691
7722
  sm: "h-8 pl-8 pr-8 text-[13px]",
7692
7723
  md: "h-9 pl-9 pr-9 text-[13px]",
7693
- lg: "h-11 pl-10 pr-10 text-sm"
7724
+ lg: "h-11 pl-10 pr-10 text-sm",
7725
+ compact: "h-8 pl-8 pr-8 text-[13px]",
7726
+ default: "h-10 pl-9 pr-9 text-sm",
7727
+ comfortable: "h-12 pl-10 pr-10 text-base"
7694
7728
  }
7695
7729
  },
7696
7730
  defaultVariants: {
@@ -7720,9 +7754,11 @@ var SearchInput = React39.forwardRef(
7720
7754
  onSearch?.(debouncedValue);
7721
7755
  }, [debouncedValue, onSearch]);
7722
7756
  const sz = inputSize ?? "md";
7723
- const iconLeftClass = sz === "sm" ? "left-2.5" : sz === "lg" ? "left-3" : "left-3";
7724
- const iconRightClass = sz === "sm" ? "right-2" : sz === "lg" ? "right-3" : "right-2.5";
7725
- const iconSizeClass = sz === "sm" ? "size-3.5" : "size-4";
7757
+ const isCompact = sz === "sm" || sz === "compact";
7758
+ const isComfortable = sz === "lg" || sz === "comfortable";
7759
+ const iconLeftClass = isCompact ? "left-2.5" : "left-3";
7760
+ const iconRightClass = isCompact ? "right-2" : isComfortable ? "right-3" : "right-2.5";
7761
+ const iconSizeClass = isCompact ? "size-3.5" : "size-4";
7726
7762
  return /* @__PURE__ */ jsxs("div", { className: cn("relative w-full", className), children: [
7727
7763
  /* @__PURE__ */ jsx(
7728
7764
  SearchIcon,
@@ -7755,14 +7791,12 @@ var SearchInput = React39.forwardRef(
7755
7791
  onClick: () => onValueChange(""),
7756
7792
  className: cn(
7757
7793
  "rounded-pill text-fg-4 absolute top-1/2 -translate-y-1/2 p-0.5",
7758
- "transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
7759
- "motion-reduce:transition-none",
7794
+ microInteractions.control,
7760
7795
  "hover:text-fg",
7761
7796
  "focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
7762
7797
  iconRightClass
7763
7798
  ),
7764
7799
  "aria-label": "Clear search",
7765
- tabIndex: -1,
7766
7800
  children: /* @__PURE__ */ jsx(XIcon, { className: iconSizeClass, "aria-hidden": "true" })
7767
7801
  }
7768
7802
  )
@@ -9598,8 +9632,8 @@ TabsList.displayName = TabsPrimitive.List.displayName;
9598
9632
  var triggerVariants = cva(
9599
9633
  cn(
9600
9634
  "inline-flex items-center justify-center gap-2 text-[13px] font-medium",
9601
- "text-fg-3 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
9602
- "motion-reduce:transition-none",
9635
+ "text-fg-3",
9636
+ microInteractions.selection,
9603
9637
  "focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]",
9604
9638
  "disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-fg-disabled",
9605
9639
  "hover:text-fg"
@@ -9712,6 +9746,7 @@ var textareaVariants = cva(
9712
9746
  [
9713
9747
  "flex w-full rounded-input border bg-surface font-body text-fg",
9714
9748
  "transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)]",
9749
+ "motion-reduce:transition-none",
9715
9750
  "placeholder:text-fg-4",
9716
9751
  "focus-visible:outline-none focus-visible:[border-color:var(--focus-ring-border)]",
9717
9752
  "focus-visible:[box-shadow:var(--shadow-focus-ring)]",
@@ -10140,8 +10175,8 @@ function ToastItem({ toast, onDismiss }) {
10140
10175
  var itemVariants = cva(
10141
10176
  cn(
10142
10177
  "inline-flex items-center justify-center rounded-pill px-3 py-1.5 text-[13px] font-medium",
10143
- "text-fg-3 transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
10144
- "motion-reduce:transition-none",
10178
+ "text-fg-3",
10179
+ microInteractions.selection,
10145
10180
  "hover:bg-bg-2 hover:text-fg",
10146
10181
  "focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]",
10147
10182
  "disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-bg-disabled disabled:text-fg-disabled",
@@ -10221,11 +10256,11 @@ var VisuallyHidden = forwardRef(
10221
10256
  VisuallyHidden.displayName = "VisuallyHidden";
10222
10257
  var TONE_DOT = {
10223
10258
  brand: "bg-brand",
10224
- info: "bg-info",
10225
- success: "bg-success",
10226
- warning: "bg-warning",
10227
- muted: "bg-muted-foreground/40",
10228
- danger: "bg-destructive"
10259
+ info: "bg-accent-2",
10260
+ success: "bg-success-fg",
10261
+ warning: "bg-warning-fg",
10262
+ muted: "bg-fg-4/40",
10263
+ danger: "bg-danger-fg"
10229
10264
  };
10230
10265
  function ChannelTabs({ tabs, value, onChange, className, ...props }) {
10231
10266
  return /* @__PURE__ */ jsx(
@@ -10233,7 +10268,7 @@ function ChannelTabs({ tabs, value, onChange, className, ...props }) {
10233
10268
  {
10234
10269
  role: "tablist",
10235
10270
  "aria-label": "Channel",
10236
- className: cn("flex items-center gap-1 border-b border-border bg-card px-3 py-2", className),
10271
+ className: cn("flex items-center gap-1 border-b border-rule bg-surface px-3 py-2", className),
10237
10272
  ...props,
10238
10273
  children: tabs.map((tab) => {
10239
10274
  const active = value === tab.value;
@@ -10246,9 +10281,9 @@ function ChannelTabs({ tabs, value, onChange, className, ...props }) {
10246
10281
  "aria-selected": active,
10247
10282
  onClick: () => onChange(tab.value),
10248
10283
  className: cn(
10249
- "flex items-center gap-2 rounded-md border px-3 py-1.5 text-sm font-medium transition-colors",
10250
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
10251
- active ? "border-brand bg-brand/5 text-brand" : "border-transparent text-muted-foreground hover:text-foreground"
10284
+ "flex items-center gap-2 rounded-md border px-3 py-1.5 text-sm font-medium transition-colors motion-reduce:transition-none",
10285
+ "focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
10286
+ active ? "border-brand bg-brand/5 text-brand" : "border-transparent text-fg-3 hover:text-fg"
10252
10287
  ),
10253
10288
  children: [
10254
10289
  /* @__PURE__ */ jsx(
@@ -10256,7 +10291,7 @@ function ChannelTabs({ tabs, value, onChange, className, ...props }) {
10256
10291
  {
10257
10292
  className: cn(
10258
10293
  "size-1.5 rounded-full",
10259
- active ? TONE_DOT[tab.tone ?? "muted"] : "bg-muted-foreground/40"
10294
+ active ? TONE_DOT[tab.tone ?? "muted"] : "bg-fg-4/40"
10260
10295
  ),
10261
10296
  "aria-hidden": true
10262
10297
  }
@@ -10267,7 +10302,7 @@ function ChannelTabs({ tabs, value, onChange, className, ...props }) {
10267
10302
  {
10268
10303
  className: cn(
10269
10304
  "ml-0.5 inline-flex h-4 min-w-4 items-center justify-center rounded-full px-1 text-[10px] font-semibold tabular-nums",
10270
- active ? "bg-background/60" : "bg-muted text-muted-foreground"
10305
+ active ? "bg-bg/60" : "bg-bg-2 text-fg-3"
10271
10306
  ),
10272
10307
  children: count
10273
10308
  }
@@ -10283,12 +10318,12 @@ function ChannelTabs({ tabs, value, onChange, className, ...props }) {
10283
10318
  ChannelTabs.displayName = "ChannelTabs";
10284
10319
  var TONE_STYLES = {
10285
10320
  brand: "bg-brand/10 text-brand border-brand/30",
10286
- info: "bg-info/10 text-info border-info/30",
10287
- primary: "bg-primary/10 text-primary border-primary/30",
10288
- success: "bg-success/10 text-success border-success/30",
10289
- warning: "bg-warning/10 text-warning border-warning/30",
10290
- danger: "bg-destructive/10 text-destructive border-destructive/30",
10291
- muted: "bg-muted text-muted-foreground border-border"
10321
+ info: "bg-accent-tint text-accent-2 border-accent/30",
10322
+ primary: "bg-brand-bg text-brand border-brand-line",
10323
+ success: "bg-success-bg text-success-fg border-success-line",
10324
+ warning: "bg-warning-bg text-warning-fg border-warning-line",
10325
+ danger: "bg-danger-bg text-danger-fg border-danger-line",
10326
+ muted: "bg-bg-2 text-fg-3 border-rule"
10292
10327
  };
10293
10328
  function IntentBadge({ tone = "muted", icon, children, className, ...props }) {
10294
10329
  return /* @__PURE__ */ jsxs(
@@ -11563,7 +11598,7 @@ var Grid = forwardRef(function Grid2({
11563
11598
  return /* @__PURE__ */ jsx("div", { ref, className: cn("overflow-x-auto", className), ...props, children: /* @__PURE__ */ jsxs(
11564
11599
  "div",
11565
11600
  {
11566
- role: "table",
11601
+ role: "group",
11567
11602
  "aria-label": ariaLabel,
11568
11603
  className: "grid gap-2",
11569
11604
  style: {
@@ -12139,6 +12174,7 @@ function QuestionOptionButton({
12139
12174
  className: cn(
12140
12175
  "group bg-surface flex w-full items-center gap-3 border text-left",
12141
12176
  "transition-[border-color,background-color,color,box-shadow,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
12177
+ "motion-reduce:transition-none",
12142
12178
  "focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
12143
12179
  "disabled:bg-bg-disabled disabled:text-fg-disabled disabled:cursor-not-allowed",
12144
12180
  compact ? "h-10 max-w-max rounded-[10px] px-3" : "min-h-16 rounded-[12px] px-7 py-4",
@@ -12152,7 +12188,7 @@ function QuestionOptionButton({
12152
12188
  {
12153
12189
  "aria-hidden": "true",
12154
12190
  className: cn(
12155
- "grid shrink-0 place-items-center rounded-full border transition-colors duration-[var(--duration-fast)]",
12191
+ "grid shrink-0 place-items-center rounded-full border transition-colors duration-[var(--duration-fast)] motion-reduce:transition-none",
12156
12192
  compact ? "size-5" : "size-4",
12157
12193
  selected ? "border-brand bg-brand text-fg-on-brand" : "border-rule-strong bg-surface group-hover:border-brand-line text-transparent"
12158
12194
  ),
@@ -12904,7 +12940,7 @@ var EngagementTimelineStep = forwardRef(
12904
12940
  }
12905
12941
  );
12906
12942
  EngagementTimelineStep.displayName = "EngagementTimelineStep";
12907
- var ROW_BASE = "group/row flex w-full items-center gap-1.5 rounded-lg px-2.5 py-1 text-left text-[12px] font-medium transition-colors duration-[120ms] motion-reduce:transition-none";
12943
+ var ROW_BASE = "group/row flex w-full items-center gap-1.5 rounded-lg px-2.5 py-1 text-left text-[12px] font-medium transition-colors duration-[var(--motion-duration-feedback)] motion-reduce:transition-none";
12908
12944
  var ROW_INACTIVE = "text-fg-2 hover:bg-surface-2 hover:text-fg";
12909
12945
  var ROW_ACTIVE = "bg-brand-bg text-brand font-semibold";
12910
12946
  var BADGE_BASE = "ml-auto min-w-[18px] rounded-full px-[5px] py-px text-center text-[10px] font-[650] tabular-nums";
@@ -12948,7 +12984,7 @@ var FolderTree = forwardRef(function FolderTree2({ nodes, activeId, onSelect, de
12948
12984
  toggle(node.id);
12949
12985
  },
12950
12986
  className: cn(
12951
- "shrink-0 text-fg-4 transition-transform duration-[150ms] motion-reduce:transition-none",
12987
+ "shrink-0 text-fg-4 transition-transform duration-[var(--motion-duration-feedback)] motion-reduce:transition-none",
12952
12988
  isOpen && "rotate-90"
12953
12989
  ),
12954
12990
  children: /* @__PURE__ */ jsx(ChevronRightIcon, { size: 13, "aria-hidden": "true" })
@@ -13011,7 +13047,7 @@ var ClientRailItem = forwardRef(
13011
13047
  // Layout
13012
13048
  "relative flex w-full items-center gap-[11px] border-b border-rule px-[14px] py-[11px] text-left",
13013
13049
  // Motion
13014
- "transition-colors duration-[120ms] motion-reduce:transition-none",
13050
+ "transition-colors duration-[var(--motion-duration-feedback)] motion-reduce:transition-none",
13015
13051
  // Cursor
13016
13052
  "cursor-pointer",
13017
13053
  // State — hover only when not active to avoid override
@@ -13143,7 +13179,7 @@ function CheckboxSlot({
13143
13179
  "div",
13144
13180
  {
13145
13181
  className: cn(
13146
- "shrink-0 transition-opacity duration-[120ms] motion-reduce:transition-none",
13182
+ "shrink-0 transition-opacity duration-[var(--motion-duration-feedback)] motion-reduce:transition-none",
13147
13183
  selected ? "opacity-100" : "opacity-0 group-hover:opacity-100",
13148
13184
  className
13149
13185
  ),
@@ -13170,7 +13206,7 @@ function MoreActions({ menu }) {
13170
13206
  type: "button",
13171
13207
  className: cn(
13172
13208
  "grid size-[30px] place-items-center rounded-[8px] text-fg-4",
13173
- "transition-colors duration-[120ms] motion-reduce:transition-none",
13209
+ "transition-colors duration-[var(--motion-duration-feedback)] motion-reduce:transition-none",
13174
13210
  "group-hover:text-fg-2 hover:bg-surface hover:text-brand hover:shadow-sm"
13175
13211
  ),
13176
13212
  "aria-label": "More actions",
@@ -13210,7 +13246,7 @@ var DocumentFileRow = React39.forwardRef(
13210
13246
  ref,
13211
13247
  className: cn(
13212
13248
  "group flex cursor-pointer items-center gap-[13px] border-b border-rule px-[14px] py-3",
13213
- "transition-colors duration-[120ms] motion-reduce:transition-none hover:bg-surface-2",
13249
+ "transition-colors duration-[var(--motion-duration-feedback)] motion-reduce:transition-none hover:bg-surface-2",
13214
13250
  selected && "bg-brand-bg",
13215
13251
  className
13216
13252
  ),
@@ -13277,7 +13313,7 @@ var DocumentFileCard = React39.forwardRef(
13277
13313
  ref,
13278
13314
  className: cn(
13279
13315
  "group relative cursor-pointer rounded-2xl border border-rule bg-surface p-3",
13280
- "transition-[border-color,box-shadow,transform] duration-[120ms] motion-reduce:transition-none",
13316
+ "transition-[border-color,box-shadow,transform] duration-[var(--motion-duration-feedback)] motion-reduce:transition-none",
13281
13317
  "hover:-translate-y-0.5 hover:border-rule-strong hover:shadow-sm",
13282
13318
  selected && "border-brand bg-brand-bg",
13283
13319
  className
@@ -13342,7 +13378,7 @@ var DocumentFileLine = React39.forwardRef(
13342
13378
  ref,
13343
13379
  className: cn(
13344
13380
  "flex items-center gap-2.5 rounded-[10px] px-2.5 py-2",
13345
- "transition-colors duration-[120ms] motion-reduce:transition-none hover:bg-surface-2",
13381
+ "transition-colors duration-[var(--motion-duration-feedback)] motion-reduce:transition-none hover:bg-surface-2",
13346
13382
  className
13347
13383
  ),
13348
13384
  ...props,
@@ -13377,7 +13413,7 @@ var DocumentFileLine = React39.forwardRef(
13377
13413
  onClick: onOpen,
13378
13414
  className: cn(
13379
13415
  "grid size-7 shrink-0 place-items-center rounded-lg text-fg-4",
13380
- "transition-colors duration-[120ms] motion-reduce:transition-none",
13416
+ "transition-colors duration-[var(--motion-duration-feedback)] motion-reduce:transition-none",
13381
13417
  "hover:bg-surface hover:text-brand",
13382
13418
  "focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]"
13383
13419
  ),
@@ -13451,7 +13487,7 @@ function ChecklistItemRow({ item }) {
13451
13487
  "div",
13452
13488
  {
13453
13489
  className: cn(
13454
- "rounded-xl border px-3.5 py-2.5 shadow-quiet transition-colors duration-[120ms] motion-reduce:transition-none",
13490
+ "rounded-xl border px-3.5 py-2.5 shadow-quiet transition-colors duration-[var(--motion-duration-feedback)] motion-reduce:transition-none",
13455
13491
  done ? "border-success-line/70 bg-success-bg/30" : item.status === "in-review" ? "border-warning-line/70 bg-warning-bg/25" : "border-rule bg-surface"
13456
13492
  ),
13457
13493
  children: [
@@ -13603,7 +13639,7 @@ var DocumentRequestField = forwardRef(
13603
13639
  className: cn(
13604
13640
  "ml-auto size-[26px] rounded-[7px] grid place-items-center",
13605
13641
  "text-fg-4",
13606
- "transition-colors duration-[120ms] motion-reduce:transition-none",
13642
+ "transition-colors duration-[var(--motion-duration-feedback)] motion-reduce:transition-none",
13607
13643
  "hover:bg-danger-bg hover:text-danger-fg",
13608
13644
  "focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]"
13609
13645
  ),
@@ -13975,7 +14011,7 @@ var Sidebar = React39.forwardRef(function Sidebar2({
13975
14011
  // movement) but well short of `--duration-slow` (which feels
13976
14012
  // sluggish). `will-change` hints the compositor so the column
13977
14013
  // doesn't repaint every frame mid-transition.
13978
- "transition-[width,box-shadow] duration-[220ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
14014
+ "transition-[width,box-shadow] duration-[var(--motion-duration-spatial)] ease-[var(--motion-ease-move)] motion-reduce:transition-none",
13979
14015
  "[will-change:width]",
13980
14016
  // Overlay (hover-peek OR programmatic peek-lock): float above the
13981
14017
  // canvas without reflowing layout. Driven by `data-overlay` so a
@@ -14143,7 +14179,7 @@ var SidebarBrandText = React39.forwardRef(
14143
14179
  // Smooth fade + width collapse on rail. Keeps the wordmark
14144
14180
  // legible up to the moment the column reaches rail width, then
14145
14181
  // fully drops out (visibility:hidden cuts hit-testing).
14146
- "transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
14182
+ "transition-[opacity,max-width] duration-[var(--motion-duration-spatial)] ease-[var(--motion-ease-move)] motion-reduce:transition-none",
14147
14183
  "max-w-[160px] opacity-100",
14148
14184
  "group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible",
14149
14185
  className
@@ -14189,7 +14225,7 @@ var SidebarSection = React39.forwardRef(
14189
14225
  {
14190
14226
  className: cn(
14191
14227
  "mb-1 flex items-center justify-between px-2.5 py-1",
14192
- "transition-opacity duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
14228
+ "transition-opacity duration-[var(--motion-duration-spatial)] ease-[var(--motion-ease-move)] motion-reduce:transition-none",
14193
14229
  "opacity-100",
14194
14230
  "group-data-[labels=hide]/sidebar:invisible group-data-[labels=hide]/sidebar:opacity-0"
14195
14231
  ),
@@ -14283,7 +14319,7 @@ var SidebarLink = React39.forwardRef(
14283
14319
  // auto margin, which is why "Billing$48k" rendered glued.
14284
14320
  // Single-line label clips via overflow; badge stays put.
14285
14321
  "flex min-w-0 flex-1 items-center gap-1.5 overflow-hidden whitespace-nowrap",
14286
- "transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
14322
+ "transition-[opacity,max-width] duration-[var(--motion-duration-spatial)] ease-[var(--motion-ease-move)] motion-reduce:transition-none",
14287
14323
  "max-w-full opacity-100",
14288
14324
  "group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible"
14289
14325
  ),
@@ -14315,7 +14351,7 @@ var SidebarLinkLabel = React39.forwardRef(
14315
14351
  // Fade + collapse instead of hard display:none so a single
14316
14352
  // 180ms opacity tween covers all labels in lockstep with the
14317
14353
  // 220ms aside-width transition — no snap on the last frame.
14318
- "transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
14354
+ "transition-[opacity,max-width] duration-[var(--motion-duration-spatial)] ease-[var(--motion-ease-move)] motion-reduce:transition-none",
14319
14355
  "max-w-full opacity-100",
14320
14356
  "group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible",
14321
14357
  className
@@ -14333,7 +14369,7 @@ var SidebarLinkAction = React39.forwardRef(
14333
14369
  {
14334
14370
  ref,
14335
14371
  className: cn(
14336
- "transition-opacity duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
14372
+ "transition-opacity duration-[var(--motion-duration-spatial)] ease-[var(--motion-ease-move)] motion-reduce:transition-none",
14337
14373
  "opacity-100",
14338
14374
  "group-data-[labels=hide]/sidebar:invisible group-data-[labels=hide]/sidebar:opacity-0",
14339
14375
  className
@@ -14436,7 +14472,7 @@ var SidebarLinkGroup = React39.forwardRef(
14436
14472
  // word boundary; collapses cleanly with the rail-mode max-width
14437
14473
  // animation since both rules only constrain visible content.
14438
14474
  "min-w-0 flex-1 line-clamp-1",
14439
- "transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
14475
+ "transition-[opacity,max-width] duration-[var(--motion-duration-spatial)] ease-[var(--motion-ease-move)] motion-reduce:transition-none",
14440
14476
  "max-w-full opacity-100",
14441
14477
  "group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible"
14442
14478
  ),
@@ -14525,7 +14561,7 @@ var SidebarUser = React39.forwardRef(function SidebarUser2({ name, subtitle, ava
14525
14561
  {
14526
14562
  className: cn(
14527
14563
  "min-w-0 leading-tight",
14528
- "transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
14564
+ "transition-[opacity,max-width] duration-[var(--motion-duration-spatial)] ease-[var(--motion-ease-move)] motion-reduce:transition-none",
14529
14565
  "max-w-full opacity-100",
14530
14566
  "group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible"
14531
14567
  ),
@@ -15211,7 +15247,10 @@ var DataTableResultsCount = forwardRef(
15211
15247
  "span",
15212
15248
  {
15213
15249
  ref,
15214
- className: cn("text-fg-4 mr-1 font-sans text-[11px] tabular-nums", className),
15250
+ className: cn(
15251
+ "text-fg-4 mr-1 shrink-0 font-sans text-[11px] whitespace-nowrap tabular-nums",
15252
+ className
15253
+ ),
15215
15254
  ...props,
15216
15255
  children: [
15217
15256
  current.toLocaleString(),
@@ -15243,7 +15282,8 @@ var DataTableRow = forwardRef(
15243
15282
  ref,
15244
15283
  "data-state": selected ? "selected" : void 0,
15245
15284
  className: cn(
15246
- "border-rule-soft border-b transition-colors duration-[var(--duration-instant)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
15285
+ "border-rule-soft border-b",
15286
+ microInteractions.selection,
15247
15287
  // Selected hover stays in the brand tint (G15) — when both states fire,
15248
15288
  // hover:bg-bg-2 was previously winning and dropping the row out of
15249
15289
  // the selected tint, which read as the row deselecting on hover.
@@ -16794,7 +16834,7 @@ var MessageBubble = forwardRef(function MessageBubble2({ avatar, name, timestamp
16794
16834
  "span",
16795
16835
  {
16796
16836
  className: cn(
16797
- "ml-auto opacity-0 transition-opacity",
16837
+ "ml-auto opacity-0 transition-opacity motion-reduce:transition-none",
16798
16838
  "group-hover/bubble:opacity-100 group-focus-within/bubble:opacity-100"
16799
16839
  ),
16800
16840
  children: actions
@@ -16904,7 +16944,7 @@ var MessageComposer = forwardRef(
16904
16944
  className: cn(
16905
16945
  "relative flex flex-col",
16906
16946
  "border-rule bg-input-background rounded-xl border",
16907
- "transition-shadow duration-150",
16947
+ "transition-shadow duration-[var(--motion-duration-feedback)] motion-reduce:transition-none",
16908
16948
  "focus-within:border-accent-ring focus-within:bg-surface focus-within:shadow-sm",
16909
16949
  isDisabled && "pointer-events-none opacity-60",
16910
16950
  className
@@ -16923,7 +16963,7 @@ var MessageComposer = forwardRef(
16923
16963
  "div",
16924
16964
  {
16925
16965
  "aria-hidden": "true",
16926
- className: "bg-bg-3 h-6 w-20 shrink-0 animate-pulse rounded-full"
16966
+ className: "bg-bg-3 h-6 w-20 shrink-0 animate-pulse rounded-full motion-reduce:animate-none"
16927
16967
  },
16928
16968
  i
16929
16969
  )) : chips.map((chip) => /* @__PURE__ */ jsx(
@@ -16935,7 +16975,7 @@ var MessageComposer = forwardRef(
16935
16975
  className: cn(
16936
16976
  "inline-flex h-6 shrink-0 items-center rounded-full px-2.5",
16937
16977
  "text-[11px] font-medium text-fg-2",
16938
- "bg-bg-2 transition-colors hover:bg-bg-3 hover:text-fg",
16978
+ "bg-bg-2 transition-colors hover:bg-bg-3 hover:text-fg motion-reduce:transition-none",
16939
16979
  "focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]"
16940
16980
  ),
16941
16981
  children: chip.label
@@ -16953,17 +16993,16 @@ var MessageComposer = forwardRef(
16953
16993
  className: "flex shrink-0 items-center justify-between gap-2 px-2 pb-1.5 pt-1",
16954
16994
  children: [
16955
16995
  /* @__PURE__ */ jsx("div", { className: "flex min-w-0 items-center gap-2", children: startSlot }),
16956
- /* @__PURE__ */ jsxs(
16996
+ /* @__PURE__ */ jsx(
16957
16997
  Button,
16958
16998
  {
16959
16999
  size: "sm",
16960
17000
  disabled: isSubmitDisabled,
17001
+ loading: submitting,
17002
+ iconLeft: /* @__PURE__ */ jsx(SendIcon, { size: 14, "aria-hidden": "true" }),
16961
17003
  onClick: onSubmit,
16962
17004
  className: "gap-1.5",
16963
- children: [
16964
- /* @__PURE__ */ jsx(SendIcon, { size: 14, "aria-hidden": "true" }),
16965
- submitting ? submittingLabel : submitLabel
16966
- ]
17005
+ children: submitting ? submittingLabel : submitLabel
16967
17006
  }
16968
17007
  )
16969
17008
  ]
@@ -18001,15 +18040,15 @@ function SuggestionPills({
18001
18040
  "div",
18002
18041
  {
18003
18042
  className: cn(
18004
- "ds-suggestion-bar flex items-center gap-2 overflow-x-auto border-t border-border/60 bg-gradient-to-b from-brand-soft/40 to-transparent px-4 py-2.5 [scrollbar-width:none]",
18043
+ "ds-suggestion-bar flex items-center gap-2 overflow-x-auto border-t border-rule/60 bg-gradient-to-b from-brand-bg/40 to-transparent px-4 py-2.5 motion-reduce:animate-none [scrollbar-width:none]",
18005
18044
  className
18006
18045
  ),
18007
18046
  children: [
18008
- /* @__PURE__ */ jsxs("span", { className: "flex shrink-0 items-center gap-1.5 text-[11px] font-medium text-muted-foreground", children: [
18047
+ /* @__PURE__ */ jsxs("span", { className: "flex shrink-0 items-center gap-1.5 text-[11px] font-medium text-fg-3", children: [
18009
18048
  /* @__PURE__ */ jsx(SparkleIcon, { className: "ds-suggestion-spark size-3.5 text-brand", "aria-hidden": "true" }),
18010
18049
  label
18011
18050
  ] }),
18012
- loading ? [0, 1].map((i) => /* @__PURE__ */ jsx("span", { className: "h-7 w-32 shrink-0 animate-pulse rounded-full bg-muted" }, i)) : suggestions.map((text, i) => /* @__PURE__ */ jsx(
18051
+ loading ? [0, 1].map((i) => /* @__PURE__ */ jsx("span", { className: "h-7 w-32 shrink-0 animate-pulse rounded-full bg-bg-2 motion-reduce:animate-none" }, i)) : suggestions.map((text, i) => /* @__PURE__ */ jsx(
18013
18052
  "button",
18014
18053
  {
18015
18054
  type: "button",
@@ -18017,10 +18056,10 @@ function SuggestionPills({
18017
18056
  title: text,
18018
18057
  style: { animationDelay: `${i * 110}ms` },
18019
18058
  className: cn(
18020
- "ds-suggestion-pill max-w-[260px] shrink-0 truncate whitespace-nowrap rounded-full border px-3.5 py-1.5 text-[12px] font-medium",
18021
- "border-brand/30 bg-brand-soft text-brand-soft-foreground shadow-[0_1px_6px_rgba(108,66,248,0.14)]",
18022
- "transition-all hover:-translate-y-0.5 hover:border-brand/50 hover:bg-brand/10 hover:shadow-[0_3px_10px_rgba(108,66,248,0.22)]",
18023
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background"
18059
+ "ds-suggestion-pill max-w-[260px] shrink-0 truncate whitespace-nowrap rounded-full border px-3.5 py-1.5 text-[12px] font-medium motion-reduce:animate-none",
18060
+ "border-brand/30 bg-brand-bg text-brand shadow-quiet",
18061
+ "transition-[color,background-color,border-color,box-shadow,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] hover:-translate-y-0.5 hover:border-brand/50 hover:bg-brand-bg-hover hover:shadow-card motion-reduce:transform-none motion-reduce:transition-none",
18062
+ "focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none"
18024
18063
  ),
18025
18064
  children: text
18026
18065
  },
@@ -18068,10 +18107,10 @@ function AiDraftCard({
18068
18107
  ] });
18069
18108
  }
18070
18109
  if (state === "error") {
18071
- return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border border-destructive/20 bg-destructive/5 p-3", className), children: [
18072
- /* @__PURE__ */ jsx("p", { className: "text-xs text-destructive", children: error ?? "Something went wrong." }),
18110
+ return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border border-danger-line bg-danger-bg p-3", className), children: [
18111
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-danger-fg", children: error ?? "Something went wrong." }),
18073
18112
  (onRetry || onDismiss) && /* @__PURE__ */ jsxs("div", { className: "mt-2 flex gap-2", children: [
18074
- onRetry && /* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: onRetry, className: "text-destructive", children: "Retry" }),
18113
+ onRetry && /* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: onRetry, className: "text-danger-fg", children: "Retry" }),
18075
18114
  onDismiss && /* @__PURE__ */ jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: onDismiss, children: "Dismiss" })
18076
18115
  ] })
18077
18116
  ] });
@@ -18080,7 +18119,7 @@ function AiDraftCard({
18080
18119
  /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2", !collapsed && "mb-2"), children: [
18081
18120
  /* @__PURE__ */ jsx(SparkleIcon, { size: 14, className: "text-brand" }),
18082
18121
  /* @__PURE__ */ jsx("span", { className: "text-xs font-bold text-brand", children: title }),
18083
- contextLine && /* @__PURE__ */ jsx("span", { className: "truncate text-xs text-muted-foreground", children: contextLine }),
18122
+ contextLine && /* @__PURE__ */ jsx("span", { className: "truncate text-xs text-fg-3", children: contextLine }),
18084
18123
  /* @__PURE__ */ jsx(
18085
18124
  "button",
18086
18125
  {
@@ -18089,14 +18128,23 @@ function AiDraftCard({
18089
18128
  "aria-expanded": !collapsed,
18090
18129
  "aria-label": collapsed ? "Expand AI draft" : "Collapse AI draft",
18091
18130
  title: collapsed ? "Show draft" : "Hide draft",
18092
- className: "ml-auto -mr-1 shrink-0 rounded p-1 text-brand/70 transition-colors hover:bg-brand/10 hover:text-brand focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
18093
- children: /* @__PURE__ */ jsx(ChevronDownIcon, { size: 16, className: cn("transition-transform", collapsed && "-rotate-90") })
18131
+ className: "ml-auto -mr-1 shrink-0 rounded p-1 text-brand/70 transition-colors hover:bg-brand-bg hover:text-brand focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none motion-reduce:transition-none",
18132
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, { size: 16, className: cn("transition-transform motion-reduce:transition-none", collapsed && "-rotate-90") })
18094
18133
  }
18095
18134
  )
18096
18135
  ] }),
18097
18136
  !collapsed && /* @__PURE__ */ jsxs(Fragment, { children: [
18098
- subject && /* @__PURE__ */ jsx("p", { className: "mb-1.5 text-sm font-semibold text-foreground", children: subject }),
18099
- /* @__PURE__ */ jsx("div", { className: "max-h-[140px] overflow-y-auto text-sm font-medium leading-relaxed text-foreground", children }),
18137
+ subject && /* @__PURE__ */ jsx("p", { className: "mb-1.5 text-sm font-semibold text-fg", children: subject }),
18138
+ /* @__PURE__ */ jsx(
18139
+ "div",
18140
+ {
18141
+ role: "region",
18142
+ "aria-label": `${title} content`,
18143
+ tabIndex: 0,
18144
+ className: "max-h-[140px] overflow-y-auto text-sm font-medium leading-relaxed text-fg focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
18145
+ children
18146
+ }
18147
+ ),
18100
18148
  actions && /* @__PURE__ */ jsx("div", { className: "mt-3 flex flex-wrap items-center gap-2", children: actions })
18101
18149
  ] })
18102
18150
  ] });
@@ -18138,36 +18186,36 @@ function EmailMessageCard({
18138
18186
  !isOutbound && avatar && /* @__PURE__ */ jsx("span", { className: "mt-7 shrink-0", children: avatar }),
18139
18187
  /* @__PURE__ */ jsxs("div", { className: cn("flex min-w-0 flex-col gap-1", isOutbound ? "items-end" : "items-start"), children: [
18140
18188
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 px-1", children: [
18141
- /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-foreground", children: senderName }),
18142
- /* @__PURE__ */ jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
18189
+ /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-fg", children: senderName }),
18190
+ /* @__PURE__ */ jsxs("span", { className: "text-[10px] text-fg-3", children: [
18143
18191
  "via ",
18144
18192
  via
18145
18193
  ] }),
18146
- /* @__PURE__ */ jsx("span", { className: "text-[10px] text-muted-foreground", children: "\xB7" }),
18147
- /* @__PURE__ */ jsx("span", { className: "text-[10px] text-muted-foreground", children: time })
18194
+ /* @__PURE__ */ jsx("span", { className: "text-[10px] text-fg-3", children: "\xB7" }),
18195
+ /* @__PURE__ */ jsx("span", { className: "text-[10px] text-fg-3", children: time })
18148
18196
  ] }),
18149
18197
  /* @__PURE__ */ jsxs(
18150
18198
  "div",
18151
18199
  {
18152
18200
  className: cn(
18153
- "w-full max-w-2xl overflow-hidden rounded-xl border bg-card shadow-sm",
18154
- isOutbound ? "border-brand/30" : "border-border"
18201
+ "w-full max-w-2xl overflow-hidden rounded-xl border bg-surface shadow-sm",
18202
+ isOutbound ? "border-brand/30" : "border-rule"
18155
18203
  ),
18156
18204
  children: [
18157
- /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2.5 border-b border-border bg-brand/5 px-3.5 py-2.5", children: [
18205
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2.5 border-b border-rule bg-brand-bg px-3.5 py-2.5", children: [
18158
18206
  /* @__PURE__ */ jsx("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-lg border border-brand/20 bg-brand/10 text-brand", children: /* @__PURE__ */ jsx(MailIcon, { size: 16 }) }),
18159
18207
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
18160
18208
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
18161
18209
  /* @__PURE__ */ jsx("span", { className: "shrink-0 rounded px-1.5 py-px text-[10px] font-bold uppercase tracking-wider text-brand", children: "Email" }),
18162
- subjectText && /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate text-sm font-semibold text-foreground", children: subjectText })
18210
+ subjectText && /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate text-sm font-semibold text-fg", children: subjectText })
18163
18211
  ] }),
18164
- /* @__PURE__ */ jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-1.5 text-[10px] text-muted-foreground", children: [
18212
+ /* @__PURE__ */ jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-1.5 text-[10px] text-fg-3", children: [
18165
18213
  /* @__PURE__ */ jsxs("span", { children: [
18166
18214
  "From ",
18167
- /* @__PURE__ */ jsx("span", { className: "font-medium text-foreground/80", children: senderName })
18215
+ /* @__PURE__ */ jsx("span", { className: "font-medium text-fg/80", children: senderName })
18168
18216
  ] }),
18169
18217
  ccCount > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
18170
- /* @__PURE__ */ jsx("span", { className: "text-muted-foreground/60", children: "\xB7" }),
18218
+ /* @__PURE__ */ jsx("span", { className: "text-fg-3/60", children: "\xB7" }),
18171
18219
  /* @__PURE__ */ jsxs("span", { children: [
18172
18220
  "Cc ",
18173
18221
  ccCount
@@ -18175,7 +18223,7 @@ function EmailMessageCard({
18175
18223
  ] })
18176
18224
  ] })
18177
18225
  ] }),
18178
- /* @__PURE__ */ jsx("span", { className: "shrink-0 whitespace-nowrap pt-0.5 text-[10px] text-muted-foreground", children: time })
18226
+ /* @__PURE__ */ jsx("span", { className: "shrink-0 whitespace-nowrap pt-0.5 text-[10px] text-fg-3", children: time })
18179
18227
  ] }),
18180
18228
  /* @__PURE__ */ jsxs("div", { className: "relative", children: [
18181
18229
  /* @__PURE__ */ jsx(
@@ -18183,13 +18231,13 @@ function EmailMessageCard({
18183
18231
  {
18184
18232
  ref: bodyRef,
18185
18233
  className: cn(
18186
- "px-4 py-3 text-sm leading-relaxed text-foreground",
18234
+ "px-4 py-3 text-sm leading-relaxed text-fg",
18187
18235
  clamped && "max-h-56 overflow-hidden"
18188
18236
  ),
18189
18237
  children
18190
18238
  }
18191
18239
  ),
18192
- clamped && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-x-0 bottom-0 h-14 bg-gradient-to-b from-transparent to-card" })
18240
+ clamped && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-x-0 bottom-0 h-14 bg-gradient-to-b from-transparent to-surface" })
18193
18241
  ] }),
18194
18242
  needsClamp && /* @__PURE__ */ jsxs(
18195
18243
  "button",
@@ -18197,14 +18245,14 @@ function EmailMessageCard({
18197
18245
  type: "button",
18198
18246
  onClick: () => setExpanded((v) => !v),
18199
18247
  "aria-expanded": expanded,
18200
- className: "flex w-full items-center justify-center gap-1.5 border-t border-border/60 bg-card py-1.5 text-xs font-medium text-brand transition-colors hover:bg-muted/40",
18248
+ className: "flex w-full items-center justify-center gap-1.5 border-t border-rule/60 bg-surface py-1.5 text-xs font-medium text-brand transition-colors hover:bg-bg-2/40 motion-reduce:transition-none",
18201
18249
  children: [
18202
18250
  expanded ? "Show less" : "Show full email",
18203
- /* @__PURE__ */ jsx(ChevronDownIcon, { size: 13, className: cn("transition-transform", expanded && "rotate-180") })
18251
+ /* @__PURE__ */ jsx(ChevronDownIcon, { size: 13, className: cn("transition-transform motion-reduce:transition-none", expanded && "rotate-180") })
18204
18252
  ]
18205
18253
  }
18206
18254
  ),
18207
- hasFooter && /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2 border-t border-border bg-muted/30 px-3 py-2", children: [
18255
+ hasFooter && /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2 border-t border-rule bg-bg-2/30 px-3 py-2", children: [
18208
18256
  /* @__PURE__ */ jsx("div", { className: "min-w-0", children: attachments }),
18209
18257
  /* @__PURE__ */ jsxs("div", { className: "ml-auto flex items-center gap-2", children: [
18210
18258
  status,
@@ -18232,8 +18280,8 @@ function SignatureEditor({
18232
18280
  className
18233
18281
  }) {
18234
18282
  return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col", className), children: [
18235
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-b border-border px-3 py-2", children: [
18236
- /* @__PURE__ */ jsx("p", { className: "text-xs font-semibold text-foreground", children: title }),
18283
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-b border-rule px-3 py-2", children: [
18284
+ /* @__PURE__ */ jsx("p", { className: "text-xs font-semibold text-fg", children: title }),
18237
18285
  onAddImage && /* @__PURE__ */ jsxs(
18238
18286
  Button,
18239
18287
  {
@@ -18251,8 +18299,8 @@ function SignatureEditor({
18251
18299
  }
18252
18300
  )
18253
18301
  ] }),
18254
- /* @__PURE__ */ jsx("div", { className: "p-3", children: loading ? /* @__PURE__ */ jsx("div", { className: "h-32 animate-pulse rounded-md bg-muted" }) : children }),
18255
- (onSave || onInsert) && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-2 border-t border-border px-3 py-2", children: [
18302
+ /* @__PURE__ */ jsx("div", { className: "p-3", children: loading ? /* @__PURE__ */ jsx("div", { className: "h-32 animate-pulse rounded-md bg-bg-2 motion-reduce:animate-none" }) : children }),
18303
+ (onSave || onInsert) && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-2 border-t border-rule px-3 py-2", children: [
18256
18304
  onSave && /* @__PURE__ */ jsx(
18257
18305
  Button,
18258
18306
  {
@@ -18400,7 +18448,7 @@ function DisplayMenu({
18400
18448
  showDot && /* @__PURE__ */ jsx(
18401
18449
  "span",
18402
18450
  {
18403
- className: "absolute -right-1 -top-1 size-2 rounded-full bg-foreground",
18451
+ className: "absolute -right-1 -top-1 size-2 rounded-full bg-fg",
18404
18452
  "aria-hidden": "true"
18405
18453
  }
18406
18454
  )
@@ -18424,8 +18472,8 @@ function DisplayMenu({
18424
18472
  }
18425
18473
  },
18426
18474
  children: /* @__PURE__ */ jsxs("div", { ref: panelRef, className: "relative", children: [
18427
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 border-b border-border px-2.5 py-1.5", children: [
18428
- /* @__PURE__ */ jsx(SearchIcon, { size: 13, className: "shrink-0 text-muted-foreground", "aria-hidden": "true" }),
18475
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 border-b border-rule px-2.5 py-1.5", children: [
18476
+ /* @__PURE__ */ jsx(SearchIcon, { size: 13, className: "shrink-0 text-fg-3", "aria-hidden": "true" }),
18429
18477
  /* @__PURE__ */ jsx(
18430
18478
  "input",
18431
18479
  {
@@ -18434,7 +18482,7 @@ function DisplayMenu({
18434
18482
  onChange: (e) => setRootQuery(e.target.value),
18435
18483
  placeholder: "Filter\u2026",
18436
18484
  "aria-label": "Filter options and values",
18437
- className: "h-6 w-full bg-transparent text-[13px] text-foreground outline-none placeholder:text-muted-foreground"
18485
+ className: "h-6 w-full bg-transparent text-[13px] text-fg outline-none placeholder:text-fg-3"
18438
18486
  }
18439
18487
  )
18440
18488
  ] }),
@@ -18460,19 +18508,19 @@ function DisplayMenu({
18460
18508
  setOpenKey(null);
18461
18509
  },
18462
18510
  onClick: () => section2.onSelect(option.key),
18463
- className: "flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-left text-[13px] transition-colors hover:bg-muted/60 focus-visible:bg-muted/60 focus-visible:outline-none",
18511
+ className: "flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-left text-[13px] transition-colors hover:bg-bg-2/60 focus-visible:bg-bg-2/60 focus-visible:outline-none motion-reduce:transition-none",
18464
18512
  children: [
18465
- section2.icon && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-muted-foreground", "aria-hidden": "true", children: section2.icon }),
18466
- /* @__PURE__ */ jsx("span", { className: "shrink-0 truncate text-muted-foreground", children: section2.label }),
18513
+ section2.icon && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-fg-3", "aria-hidden": "true", children: section2.icon }),
18514
+ /* @__PURE__ */ jsx("span", { className: "shrink-0 truncate text-fg-3", children: section2.label }),
18467
18515
  /* @__PURE__ */ jsx(
18468
18516
  ChevronRightIcon,
18469
18517
  {
18470
18518
  size: 12,
18471
- className: "shrink-0 text-muted-foreground",
18519
+ className: "shrink-0 text-fg-3",
18472
18520
  "aria-hidden": "true"
18473
18521
  }
18474
18522
  ),
18475
- /* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-foreground", children: option.label }),
18523
+ /* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-fg", children: option.label }),
18476
18524
  isActive && /* @__PURE__ */ jsx(CheckIcon, { size: 14, className: "shrink-0 text-brand" })
18477
18525
  ]
18478
18526
  },
@@ -18519,15 +18567,15 @@ function DisplayMenu({
18519
18567
  }
18520
18568
  },
18521
18569
  className: cn(
18522
- "flex min-w-0 flex-1 items-center gap-2 rounded-md px-2 py-1.5 text-left text-[13px] text-foreground transition-colors hover:bg-muted/60 focus-visible:bg-muted/60 focus-visible:outline-none",
18523
- isOpen && "bg-muted/60"
18570
+ "flex min-w-0 flex-1 items-center gap-2 rounded-md px-2 py-1.5 text-left text-[13px] text-fg transition-colors hover:bg-bg-2/60 focus-visible:bg-bg-2/60 focus-visible:outline-none motion-reduce:transition-none",
18571
+ isOpen && "bg-bg-2/60"
18524
18572
  ),
18525
18573
  children: [
18526
- section.icon && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-muted-foreground", "aria-hidden": "true", children: section.icon }),
18574
+ section.icon && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-fg-3", "aria-hidden": "true", children: section.icon }),
18527
18575
  /* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children: section.label }),
18528
18576
  section.mode === "multi" && count > 0 && /* @__PURE__ */ jsx("span", { className: "shrink-0 rounded-full bg-brand-bg px-1.5 text-[11px] font-medium text-brand", children: count }),
18529
- section.mode !== "multi" && valueLabel && /* @__PURE__ */ jsx("span", { className: "max-w-24 shrink-0 truncate text-[13px] text-muted-foreground", children: valueLabel }),
18530
- /* @__PURE__ */ jsx(ChevronRightIcon, { size: 13, className: "shrink-0 text-muted-foreground" })
18577
+ section.mode !== "multi" && valueLabel && /* @__PURE__ */ jsx("span", { className: "max-w-24 shrink-0 truncate text-[13px] text-fg-3", children: valueLabel }),
18578
+ /* @__PURE__ */ jsx(ChevronRightIcon, { size: 13, className: "shrink-0 text-fg-3" })
18531
18579
  ]
18532
18580
  }
18533
18581
  ),
@@ -18540,14 +18588,14 @@ function DisplayMenu({
18540
18588
  })
18541
18589
  }
18542
18590
  ),
18543
- /* @__PURE__ */ jsx("div", { className: "border-t border-border p-1", children: /* @__PURE__ */ jsxs(
18591
+ /* @__PURE__ */ jsx("div", { className: "border-t border-rule p-1", children: /* @__PURE__ */ jsxs(
18544
18592
  Button,
18545
18593
  {
18546
18594
  variant: "ghost",
18547
18595
  size: "sm",
18548
18596
  onClick: onReset,
18549
18597
  disabled: isAtDefault,
18550
- className: "h-7 w-full justify-start gap-1.5 px-2 text-xs text-muted-foreground hover:text-foreground",
18598
+ className: "h-7 w-full justify-start gap-1.5 px-2 text-xs text-fg-3 hover:text-fg",
18551
18599
  children: [
18552
18600
  /* @__PURE__ */ jsx(RotateCcwIcon, { size: 13 }),
18553
18601
  "Reset to default"
@@ -18566,7 +18614,7 @@ function DisplayMenu({
18566
18614
  // Column + overflow-hidden so the option list (the only flexible
18567
18615
  // part) absorbs the height cap, while the search box and Clear
18568
18616
  // footer stay pinned and fully visible.
18569
- "absolute z-50 flex flex-col overflow-hidden rounded-lg border border-border bg-popover shadow-md",
18617
+ "absolute z-50 flex flex-col overflow-hidden rounded-lg border border-rule bg-surface shadow-md motion-reduce:transition-none",
18570
18618
  // -mx-1 lets the flyout tuck against the panel so there's no
18571
18619
  // dead gap for the cursor to fall through on the way over.
18572
18620
  flyout.side === "left" ? "right-full -mr-1" : "left-full -ml-1"
@@ -18574,8 +18622,8 @@ function DisplayMenu({
18574
18622
  onMouseEnter: clearTimers,
18575
18623
  onMouseLeave: scheduleClose,
18576
18624
  children: [
18577
- showFlyoutSearch && /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-1.5 border-b border-border px-2.5 py-1.5", children: [
18578
- /* @__PURE__ */ jsx(SearchIcon, { size: 13, className: "shrink-0 text-muted-foreground", "aria-hidden": "true" }),
18625
+ showFlyoutSearch && /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-1.5 border-b border-rule px-2.5 py-1.5", children: [
18626
+ /* @__PURE__ */ jsx(SearchIcon, { size: 13, className: "shrink-0 text-fg-3", "aria-hidden": "true" }),
18579
18627
  /* @__PURE__ */ jsx(
18580
18628
  "input",
18581
18629
  {
@@ -18584,7 +18632,7 @@ function DisplayMenu({
18584
18632
  onChange: (e) => setSectionQuery(e.target.value),
18585
18633
  placeholder: `Filter ${activeSection.label.toLowerCase()}\u2026`,
18586
18634
  "aria-label": `Filter ${activeSection.label}`,
18587
- className: "h-6 w-full bg-transparent text-[13px] text-foreground outline-none placeholder:text-muted-foreground"
18635
+ className: "h-6 w-full bg-transparent text-[13px] text-fg outline-none placeholder:text-fg-3"
18588
18636
  }
18589
18637
  )
18590
18638
  ] }),
@@ -18619,8 +18667,8 @@ function DisplayMenu({
18619
18667
  }
18620
18668
  },
18621
18669
  className: cn(
18622
- "flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-[13px] transition-colors hover:bg-muted/60 focus-visible:bg-muted/60 focus-visible:outline-none",
18623
- isActive ? "text-foreground" : "text-muted-foreground hover:text-foreground"
18670
+ "flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-[13px] transition-colors hover:bg-bg-2/60 focus-visible:bg-bg-2/60 focus-visible:outline-none motion-reduce:transition-none",
18671
+ isActive ? "text-fg" : "text-fg-3 hover:text-fg"
18624
18672
  ),
18625
18673
  children: [
18626
18674
  isMulti && /* @__PURE__ */ jsx(
@@ -18629,7 +18677,7 @@ function DisplayMenu({
18629
18677
  "aria-hidden": "true",
18630
18678
  className: cn(
18631
18679
  "flex size-3.5 shrink-0 items-center justify-center rounded border transition-colors",
18632
- isActive ? "border-brand bg-brand text-fg-on-brand" : "border-border"
18680
+ isActive ? "border-brand bg-brand text-fg-on-brand" : "border-rule"
18633
18681
  ),
18634
18682
  children: isActive && /* @__PURE__ */ jsx(CheckIcon, { size: 10 })
18635
18683
  }
@@ -18641,13 +18689,13 @@ function DisplayMenu({
18641
18689
  option.key
18642
18690
  );
18643
18691
  }) }),
18644
- activeSection.mode === "multi" && activeSection.selected.size > 0 && activeSection.onClear && /* @__PURE__ */ jsx("div", { className: "shrink-0 border-t border-border p-1", children: /* @__PURE__ */ jsxs(
18692
+ activeSection.mode === "multi" && activeSection.selected.size > 0 && activeSection.onClear && /* @__PURE__ */ jsx("div", { className: "shrink-0 border-t border-rule p-1", children: /* @__PURE__ */ jsxs(
18645
18693
  Button,
18646
18694
  {
18647
18695
  variant: "ghost",
18648
18696
  size: "sm",
18649
18697
  onClick: activeSection.onClear,
18650
- className: "h-6 w-full justify-start px-2 text-[11px] text-muted-foreground hover:text-foreground",
18698
+ className: "h-6 w-full justify-start px-2 text-[11px] text-fg-3 hover:text-fg",
18651
18699
  children: [
18652
18700
  "Clear ",
18653
18701
  activeSection.selected.size,
@@ -18664,8 +18712,168 @@ function DisplayMenu({
18664
18712
  ] });
18665
18713
  }
18666
18714
  function EmptyRow({ label = "No matches" }) {
18667
- return /* @__PURE__ */ jsx("p", { className: "px-2 py-3 text-center text-[11px] text-muted-foreground", children: label });
18715
+ return /* @__PURE__ */ jsx("p", { className: "px-2 py-3 text-center text-[11px] text-fg-3", children: label });
18716
+ }
18717
+ var StickyStackContext = React39.createContext(null);
18718
+ function StickyStack({ layers, top = 0, children }) {
18719
+ const [layerHeights, setLayerHeights] = React39.useState({});
18720
+ const normalizedLayers = React39.useMemo(() => {
18721
+ const names = [...layers];
18722
+ if (new Set(names).size !== names.length) {
18723
+ throw new Error("StickyStack layer names must be unique.");
18724
+ }
18725
+ return names;
18726
+ }, [layers]);
18727
+ const setLayerHeight = React39.useCallback((name, height) => {
18728
+ setLayerHeights((current) => {
18729
+ if (current[name] === height) return current;
18730
+ return { ...current, [name]: height };
18731
+ });
18732
+ }, []);
18733
+ const value = React39.useMemo(
18734
+ () => ({ layers: normalizedLayers, layerHeights, setLayerHeight, top }),
18735
+ [layerHeights, normalizedLayers, setLayerHeight, top]
18736
+ );
18737
+ return /* @__PURE__ */ jsx(StickyStackContext, { value, children });
18668
18738
  }
18739
+ function useStickyStack(componentName) {
18740
+ const context = React39.use(StickyStackContext);
18741
+ if (!context) {
18742
+ throw new Error(`${componentName} must be rendered inside StickyStack.`);
18743
+ }
18744
+ return context;
18745
+ }
18746
+ function cssLength(value) {
18747
+ return typeof value === "number" ? `${value}px` : value ?? "0px";
18748
+ }
18749
+ function stackOffset(context, layerName, includeNamedLayer) {
18750
+ const { layers, layerHeights, top } = context;
18751
+ let endIndex = layers.length;
18752
+ if (layerName !== void 0) {
18753
+ const index = layers.indexOf(layerName);
18754
+ if (index === -1) {
18755
+ throw new Error(`Unknown StickyStack layer "${layerName}".`);
18756
+ }
18757
+ endIndex = includeNamedLayer ? index + 1 : index;
18758
+ }
18759
+ const measuredOffset = layers.slice(0, endIndex).reduce((total, name) => total + (layerHeights[name] ?? 0), 0);
18760
+ const base = cssLength(top);
18761
+ return measuredOffset === 0 ? base : `calc(${base} + ${measuredOffset}px)`;
18762
+ }
18763
+ var StickyStackLayer = React39.forwardRef(
18764
+ function StickyStackLayer2({ name, hostClassName, className, children, style, ...props }, forwardedRef) {
18765
+ const context = useStickyStack("StickyStackLayer");
18766
+ const { setLayerHeight } = context;
18767
+ const top = stackOffset(context, name, false);
18768
+ const hostRef = React39.useRef(null);
18769
+ const layerRef = React39.useRef(null);
18770
+ const [bounds, setBounds] = React39.useState({
18771
+ height: 0,
18772
+ left: 0,
18773
+ ready: false,
18774
+ width: 0
18775
+ });
18776
+ const setLayerRef = React39.useCallback(
18777
+ (node) => {
18778
+ layerRef.current = node;
18779
+ if (typeof forwardedRef === "function") forwardedRef(node);
18780
+ else if (forwardedRef) forwardedRef.current = node;
18781
+ },
18782
+ [forwardedRef]
18783
+ );
18784
+ const measure = React39.useCallback(() => {
18785
+ const host = hostRef.current;
18786
+ const layer = layerRef.current;
18787
+ if (!host || !layer) return;
18788
+ const hostRect = host.getBoundingClientRect();
18789
+ const layerRect = layer.getBoundingClientRect();
18790
+ const next = {
18791
+ height: Math.ceil(layerRect.height),
18792
+ left: hostRect.left,
18793
+ ready: hostRect.width > 0,
18794
+ width: hostRect.width
18795
+ };
18796
+ setBounds(
18797
+ (current) => current.height === next.height && current.left === next.left && current.ready === next.ready && current.width === next.width ? current : next
18798
+ );
18799
+ setLayerHeight(name, next.height);
18800
+ }, [name, setLayerHeight]);
18801
+ React39.useLayoutEffect(() => {
18802
+ measure();
18803
+ let frame = 0;
18804
+ const scheduleMeasure = () => {
18805
+ cancelAnimationFrame(frame);
18806
+ frame = requestAnimationFrame(measure);
18807
+ };
18808
+ const observer = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(scheduleMeasure);
18809
+ if (hostRef.current) observer?.observe(hostRef.current);
18810
+ if (layerRef.current) observer?.observe(layerRef.current);
18811
+ window.addEventListener("resize", scheduleMeasure);
18812
+ window.addEventListener("scroll", scheduleMeasure, true);
18813
+ return () => {
18814
+ cancelAnimationFrame(frame);
18815
+ observer?.disconnect();
18816
+ window.removeEventListener("resize", scheduleMeasure);
18817
+ window.removeEventListener("scroll", scheduleMeasure, true);
18818
+ setLayerHeight(name, 0);
18819
+ };
18820
+ }, [measure, name, setLayerHeight]);
18821
+ return /* @__PURE__ */ jsx(
18822
+ "div",
18823
+ {
18824
+ ref: hostRef,
18825
+ className: cn("relative", hostClassName),
18826
+ style: { height: bounds.ready ? bounds.height : void 0 },
18827
+ "data-sticky-stack-host": name,
18828
+ children: /* @__PURE__ */ jsx(
18829
+ "div",
18830
+ {
18831
+ ref: setLayerRef,
18832
+ className,
18833
+ style: {
18834
+ ...style,
18835
+ position: bounds.ready ? "fixed" : "sticky",
18836
+ top,
18837
+ left: bounds.ready ? bounds.left : void 0,
18838
+ width: bounds.ready ? bounds.width : void 0,
18839
+ boxSizing: "border-box",
18840
+ zIndex: style?.zIndex ?? "var(--z-sticky)"
18841
+ },
18842
+ "data-sticky-stack-layer": name,
18843
+ ...props,
18844
+ children
18845
+ }
18846
+ )
18847
+ }
18848
+ );
18849
+ }
18850
+ );
18851
+ StickyStackLayer.displayName = "StickyStackLayer";
18852
+ var StickyStackSticky = React39.forwardRef(
18853
+ function StickyStackSticky2({ after, className, style, ...props }, ref) {
18854
+ const context = useStickyStack("StickyStackSticky");
18855
+ const top = stackOffset(context, after, true);
18856
+ return /* @__PURE__ */ jsx(
18857
+ "div",
18858
+ {
18859
+ ref,
18860
+ className: cn("sticky", className),
18861
+ style: {
18862
+ ...style,
18863
+ top,
18864
+ zIndex: style?.zIndex ?? "calc(var(--z-sticky) - 1)"
18865
+ },
18866
+ "data-sticky-stack-sticky": "",
18867
+ ...props
18868
+ }
18869
+ );
18870
+ }
18871
+ );
18872
+ StickyStackSticky.displayName = "StickyStackSticky";
18873
+ var StickyStackSectionHeader = React39.forwardRef(function StickyStackSectionHeader2(props, ref) {
18874
+ return /* @__PURE__ */ jsx(StickyStackSticky, { ref, "data-sticky-stack-section-header": "", ...props });
18875
+ });
18876
+ StickyStackSectionHeader.displayName = "StickyStackSectionHeader";
18669
18877
  function brandScope(product) {
18670
18878
  return { "data-brand": product };
18671
18879
  }
@@ -18691,6 +18899,6 @@ var BrandScope = forwardRef(function BrandScope2({ product, children, ...props }
18691
18899
  });
18692
18900
  BrandScope.displayName = "BrandScope";
18693
18901
 
18694
- export { AIReceiptPanel, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityEventItem, ActivityItem, ActivityList, AgreementPaneHeading, AgreementViewer, AiDraftCard, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, AreaChart, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, Assignee, AssureAuditBrandIcon, AssureBooksBrandIcon, AssureProBrandIcon, AssureTaxBrandIcon, AtSignIcon, AttachmentChip, AttentionItem, Avatar, BRAND_PRODUCTS, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, BottomNav, BrandScope, BrandScopeProvider, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, BulkActionBar, BulkActionBarAction, BulkActionBarSeparator, Button, COUNTRY_CODES, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CategoryDivider, CategoryTag, ChannelTabs, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientRailGroupHeader, ClientRailItem, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content16 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CountryFlag, CountrySelect, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, Dash, DashGrid, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DataTableView, DatePicker, DateRangePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DisplayMenu, DocumentChecklist, DocumentDetailActions, DocumentDetailBody, DocumentDetailHeader, DocumentDetailMetaRow, DocumentDetailPanel, DocumentDetailRequester, DocumentDetailTitle, DocumentFileCard, DocumentFileLine, DocumentFileRow, DocumentIcon, DocumentList, DocumentListSection, DocumentRequestCard, DocumentRequestDetail, DocumentRequestField, DocumentRequestUpload, DocumentRow, DocumentSourceFilter, DocumentSourceTag, DocumentsWorkspaceLayout, DollarSignIcon, DonutChart, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmailMessageCard, EmptyState, EngagementCard, EngagementTimeline, EngagementTimelineStep, ExtractIcon, EyeIcon, EyeOffIcon, Eyebrow, FileChip, FileIcon, FileReturnIcon, FileTextIcon, FileTypeBadge, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FolderTree, FolderUpIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, Grid, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, IconTile, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, IntentBadge, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LandmarkIcon, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MasterDetailLayout, MenuIcon, MessageBubble, MessageBubbleAction, MessageBubbleTombstone, MessageCircleIcon, MessageCircleWarningIcon, MessageComposer, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MissingDocumentsPanel, MoneyCell, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, NewMenu, NotificationFilter, NotificationItem, NotificationList, NotificationPanel, NotificationPanelFooter, NotificationPanelHeader, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PauseIcon, PdfPreview, PenSignIcon, PenToolIcon, PencilIcon, PhoneCountryInput, PhoneIcon, PhoneInput, PlayIcon, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, PriorityIcon, ProgressBar, ProgressRing, ProposalAddOn, ProposalBillingTerms, ProposalConsentGate, ProposalCustomPage, ProposalNote, ProposalPackageCard, ProposalPaymentCapture, ProposalPricingSummary, ProposalServiceRow, ProposalSignatureBlock, ProposalSignerList, QuestionnairePanel, Questions, RadioGroup3 as RadioGroup, RadioGroupItem, RankedBars, ReceiptIcon, ReplyIcon, ResponsiveDialog, RotateCcwIcon, RouteTransition, SERVICE_TONES, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, SegmentedProgress, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectableKpiCard, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarBrandSwitcher, SidebarBrandSwitcherTile, SidebarBrandText, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarPinButton, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, SignatureEditor, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, Spinner, SpreadsheetPreview, StackedBarChart, StagePill, StarIcon, StarRating, Stat, StatusDot, StatusIcon, StatusPill, Stepper, StickyActionBar, StopIcon, StrikethroughIcon, SubmitButton, SuggestionPills, SuiteProgress, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TagsCell, TeamIcon, TeamMemberSelect, Textarea, TimeLogger, TimeLoggerActions, TimeLoggerBillable, TimeLoggerContextRow, TimeLoggerEntry, TimeLoggerEntryList, TimeLoggerField, TimeLoggerFooter, TimeLoggerHeader, TimeLoggerNotes, TimeLoggerTimer, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XCircleSolidIcon, XIcon, YEAR_DISPLAY_PLACEHOLDER, ZoomInIcon, ZoomOutIcon, alertVariants, applyMask, applyYearMask, attachmentChipVariants, badgeVariants, brandLabel, brandScope, buttonVariants, cardVariants, cn, colors, dateToIso, displayToIso, fileTypeBadgeVariants, fileTypeFromName, filterChipVariants, formatClock, formatCurrency, formatDuration, getFlagEmoji, iconTileVariants, inputVariants, isoToDate, isoToDisplay, isoToYear, labelVariants, parseDuration, parsePhoneForEditing, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, serviceToneLabel, serviceToneStyle, shadows, sidebarLinkBadgeVariants, spacing, spinnerVariants, starRatingVariants, statusDotVariants, suiteProgressFillVariants, surfaces, systemTokens, textareaVariants, typography, useBrandScope, useSidebarPeekLock, useSidebarState, useStopwatch, useToast, yearToIso };
18902
+ export { AIReceiptPanel, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityEventItem, ActivityItem, ActivityList, AgreementPaneHeading, AgreementViewer, AiDraftCard, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, AreaChart, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, Assignee, AssureAuditBrandIcon, AssureBooksBrandIcon, AssureProBrandIcon, AssureTaxBrandIcon, AtSignIcon, AttachmentChip, AttentionItem, Avatar, BRAND_PRODUCTS, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, BottomNav, BrandScope, BrandScopeProvider, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, BulkActionBar, BulkActionBarAction, BulkActionBarSeparator, Button, COUNTRY_CODES, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CategoryDivider, CategoryTag, ChannelTabs, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientRailGroupHeader, ClientRailItem, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content16 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CountryFlag, CountrySelect, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, Dash, DashGrid, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DataTableView, DatePicker, DateRangePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DisplayMenu, DocumentChecklist, DocumentDetailActions, DocumentDetailBody, DocumentDetailHeader, DocumentDetailMetaRow, DocumentDetailPanel, DocumentDetailRequester, DocumentDetailTitle, DocumentFileCard, DocumentFileLine, DocumentFileRow, DocumentIcon, DocumentList, DocumentListSection, DocumentRequestCard, DocumentRequestDetail, DocumentRequestField, DocumentRequestUpload, DocumentRow, DocumentSourceFilter, DocumentSourceTag, DocumentsWorkspaceLayout, DollarSignIcon, DonutChart, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmailMessageCard, EmptyState, EngagementCard, EngagementTimeline, EngagementTimelineStep, ExtractIcon, EyeIcon, EyeOffIcon, Eyebrow, FileChip, FileIcon, FileReturnIcon, FileTextIcon, FileTypeBadge, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FolderTree, FolderUpIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, Grid, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, IconTile, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, IntentBadge, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LandmarkIcon, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MasterDetailLayout, MenuIcon, MessageBubble, MessageBubbleAction, MessageBubbleTombstone, MessageCircleIcon, MessageCircleWarningIcon, MessageComposer, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MissingDocumentsPanel, MoneyCell, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, NewMenu, NotificationFilter, NotificationItem, NotificationList, NotificationPanel, NotificationPanelFooter, NotificationPanelHeader, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PauseIcon, PdfPreview, PenSignIcon, PenToolIcon, PencilIcon, PhoneCountryInput, PhoneIcon, PhoneInput, PlayIcon, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, PriorityIcon, ProgressBar, ProgressRing, ProposalAddOn, ProposalBillingTerms, ProposalConsentGate, ProposalCustomPage, ProposalNote, ProposalPackageCard, ProposalPaymentCapture, ProposalPricingSummary, ProposalServiceRow, ProposalSignatureBlock, ProposalSignerList, QuestionnairePanel, Questions, RadioGroup3 as RadioGroup, RadioGroupItem, RankedBars, ReceiptIcon, ReplyIcon, ResponsiveDialog, RotateCcwIcon, RouteTransition, SERVICE_TONES, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, SegmentedProgress, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectableKpiCard, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarBrandSwitcher, SidebarBrandSwitcherTile, SidebarBrandText, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarPinButton, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, SignatureEditor, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, Spinner, SpreadsheetPreview, StackedBarChart, StagePill, StarIcon, StarRating, Stat, StatusDot, StatusIcon, StatusPill, Stepper, StickyActionBar, StickyStack, StickyStackLayer, StickyStackSectionHeader, StickyStackSticky, StopIcon, StrikethroughIcon, SubmitButton, SuggestionPills, SuiteProgress, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TagsCell, TeamIcon, TeamMemberSelect, Textarea, TimeLogger, TimeLoggerActions, TimeLoggerBillable, TimeLoggerContextRow, TimeLoggerEntry, TimeLoggerEntryList, TimeLoggerField, TimeLoggerFooter, TimeLoggerHeader, TimeLoggerNotes, TimeLoggerTimer, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XCircleSolidIcon, XIcon, YEAR_DISPLAY_PLACEHOLDER, ZoomInIcon, ZoomOutIcon, alertVariants, applyMask, applyYearMask, attachmentChipVariants, badgeVariants, brandLabel, brandScope, buttonVariants, cardVariants, cn, colors, dateToIso, displayToIso, fileTypeBadgeVariants, fileTypeFromName, filterChipVariants, formatClock, formatCurrency, formatDuration, getFlagEmoji, iconTileVariants, inputVariants, isoToDate, isoToDisplay, isoToYear, labelVariants, parseDuration, parsePhoneForEditing, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, serviceToneLabel, serviceToneStyle, shadows, sidebarLinkBadgeVariants, spacing, spinnerVariants, starRatingVariants, statusDotVariants, suiteProgressFillVariants, surfaces, systemTokens, textareaVariants, typography, useBrandScope, useSidebarPeekLock, useSidebarState, useStopwatch, useToast, yearToIso };
18695
18903
  //# sourceMappingURL=index.js.map
18696
18904
  //# sourceMappingURL=index.js.map