@lessly/ui 4.1.1 → 5.0.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
@@ -15,15 +15,19 @@ import {
15
15
  SheetPortal,
16
16
  SheetTitle,
17
17
  SheetTrigger,
18
+ SidebarDrawer,
18
19
  Tooltip,
19
20
  TooltipContent,
20
21
  TooltipProvider,
21
22
  TooltipTrigger,
22
23
  buttonVariants,
23
24
  cn,
25
+ railToggleLabel,
24
26
  useIsMobile,
25
- useSidebar
26
- } from "./chunk-LTHOLX7I.js";
27
+ useSidebar,
28
+ useSidebarDismiss,
29
+ useSidebarDrawer
30
+ } from "./chunk-OTYVKDP2.js";
27
31
 
28
32
  // src/components/auto-height.tsx
29
33
  import * as React from "react";
@@ -149,7 +153,10 @@ var DialogOverlay = React3.forwardRef(({ className, ...props }, ref) => /* @__PU
149
153
  {
150
154
  ref,
151
155
  className: cn(
152
- "fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
156
+ // The scrim's duration is the panel's, so the two arrive as one. Naming it is what makes
157
+ // `prefers-reduced-motion` reach the fade: `animate-in` reads `--tw-duration`, and an unset
158
+ // one falls to tw-animate-css's own literal 0.15s, which no media query can collapse.
159
+ "fixed inset-0 z-50 bg-black/50 duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
153
160
  className
154
161
  ),
155
162
  ...props
@@ -276,7 +283,7 @@ var DropdownMenuSubContent = React4.forwardRef(({ className, ...props }, ref) =>
276
283
  {
277
284
  ref,
278
285
  className: cn(
279
- "z-50 min-w-[8rem] overflow-hidden rounded-md border border-border-subtle bg-bg-elevated p-1 text-text-primary shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
286
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border border-border-subtle bg-bg-overlay p-1 text-text-primary shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
280
287
  className
281
288
  ),
282
289
  ...props
@@ -291,7 +298,7 @@ var DropdownMenuContent = React4.forwardRef(({ className, sideOffset = 4, collis
291
298
  collisionPadding,
292
299
  style: { maxHeight: "var(--radix-dropdown-menu-content-available-height, 24rem)", ...style },
293
300
  className: cn(
294
- "z-50 min-w-[8rem] overflow-y-auto overflow-x-hidden overscroll-contain rounded-md border border-border-subtle bg-bg-elevated p-1 text-text-primary shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
301
+ "z-50 min-w-[8rem] overflow-y-auto overflow-x-hidden overscroll-contain rounded-md border border-border-subtle bg-bg-overlay p-1 text-text-primary shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
295
302
  className
296
303
  ),
297
304
  ...props
@@ -1070,7 +1077,7 @@ var PopoverContent = React18.forwardRef(({ className, align = "center", sideOffs
1070
1077
  align,
1071
1078
  sideOffset,
1072
1079
  className: cn(
1073
- "z-50 w-72 rounded-md border border-border-subtle bg-bg-elevated p-4 text-text-primary shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1080
+ "z-50 w-72 rounded-md border border-border-subtle bg-bg-overlay p-4 text-text-primary shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1074
1081
  className
1075
1082
  ),
1076
1083
  ...props
@@ -1091,7 +1098,7 @@ var HoverCardContent = React19.forwardRef(({ className, align = "center", sideOf
1091
1098
  align,
1092
1099
  sideOffset,
1093
1100
  className: cn(
1094
- "z-50 w-64 rounded-md border border-border-subtle bg-bg-elevated p-4 text-text-primary shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1101
+ "z-50 w-64 rounded-md border border-border-subtle bg-bg-overlay p-4 text-text-primary shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1095
1102
  className
1096
1103
  ),
1097
1104
  ...props
@@ -1174,7 +1181,10 @@ var AlertDialogOverlay = React21.forwardRef(({ className, ...props }, ref) => /*
1174
1181
  {
1175
1182
  ref,
1176
1183
  className: cn(
1177
- "fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1184
+ // The scrim's duration is the panel's, so the two arrive as one. Naming it is what makes
1185
+ // `prefers-reduced-motion` reach the fade: `animate-in` reads `--tw-duration`, and an unset
1186
+ // one falls to tw-animate-css's own literal 0.15s, which no media query can collapse.
1187
+ "fixed inset-0 z-50 bg-black/50 duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1178
1188
  className
1179
1189
  ),
1180
1190
  ...props
@@ -1288,7 +1298,7 @@ var ContextMenuSubContent = React22.forwardRef(({ className, ...props }, ref) =>
1288
1298
  {
1289
1299
  ref,
1290
1300
  className: cn(
1291
- "z-50 min-w-[8rem] overflow-hidden rounded-md border border-border-subtle bg-bg-elevated p-1 text-text-primary shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
1301
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border border-border-subtle bg-bg-overlay p-1 text-text-primary shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
1292
1302
  className
1293
1303
  ),
1294
1304
  ...props
@@ -1300,7 +1310,7 @@ var ContextMenuContent = React22.forwardRef(({ className, ...props }, ref) => /*
1300
1310
  {
1301
1311
  ref,
1302
1312
  className: cn(
1303
- "z-50 min-w-[8rem] overflow-hidden rounded-md border border-border-subtle bg-bg-elevated p-1 text-text-primary shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1313
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border border-border-subtle bg-bg-overlay p-1 text-text-primary shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1304
1314
  className
1305
1315
  ),
1306
1316
  ...props
@@ -1392,7 +1402,7 @@ var Menubar = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__
1392
1402
  {
1393
1403
  ref,
1394
1404
  className: cn(
1395
- "flex h-10 items-center gap-1 rounded-md border border-border-subtle bg-bg-elevated p-1",
1405
+ "flex h-10 items-center gap-1 rounded-md border border-border-subtle bg-bg-overlay p-1",
1396
1406
  className
1397
1407
  ),
1398
1408
  ...props
@@ -1433,7 +1443,7 @@ var MenubarSubContent = React23.forwardRef(({ className, ...props }, ref) => /*
1433
1443
  {
1434
1444
  ref,
1435
1445
  className: cn(
1436
- "z-50 min-w-[8rem] overflow-hidden rounded-md border border-border-subtle bg-bg-elevated p-1 text-text-primary shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1446
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border border-border-subtle bg-bg-overlay p-1 text-text-primary shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1437
1447
  className
1438
1448
  ),
1439
1449
  ...props
@@ -1448,7 +1458,7 @@ var MenubarContent = React23.forwardRef(({ className, align = "start", alignOffs
1448
1458
  alignOffset,
1449
1459
  sideOffset,
1450
1460
  className: cn(
1451
- "z-50 min-w-[12rem] overflow-hidden rounded-md border border-border-subtle bg-bg-elevated p-1 text-text-primary shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1461
+ "z-50 min-w-[12rem] overflow-hidden rounded-md border border-border-subtle bg-bg-overlay p-1 text-text-primary shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1452
1462
  className
1453
1463
  ),
1454
1464
  ...props
@@ -1878,7 +1888,7 @@ var AccordionContent = React32.forwardRef(({ className, children, ...props }, re
1878
1888
  {
1879
1889
  ref,
1880
1890
  className: cn(
1881
- "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down"
1891
+ "overflow-hidden text-sm duration-200 data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down"
1882
1892
  ),
1883
1893
  ...props,
1884
1894
  children: /* @__PURE__ */ jsx39("div", { className: cn("pb-4 pt-0", className), children })
@@ -1897,7 +1907,16 @@ var CollapsibleContent2 = React33.forwardRef(({ className, ...props }, ref) => /
1897
1907
  {
1898
1908
  ref,
1899
1909
  className: cn(
1900
- "overflow-hidden text-sm data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down",
1910
+ // `duration-200` is not decoration and not the 200: it is what makes `prefers-reduced-motion`
1911
+ // reach the height. `animate-collapsible-*` reads `--tw-duration`, only a `duration-*` sets
1912
+ // it, and unset it falls to tw-animate-css's own literal 0.2s, which no media query can
1913
+ // collapse. The step resolves to `var(--motion-duration-normal)`, which the token layer takes
1914
+ // to 0ms, so a disclosure opens instantly for a reader who asked for that. Dialog, AlertDialog
1915
+ // and Sheet name theirs for the same reason. A caller's `className` merges into this element,
1916
+ // so a `duration-*` passed here replaces the step and a value the preset does not name
1917
+ // replaces the variable with a literal; `AccordionContent` puts its own `className` on the
1918
+ // padding box instead and cannot be overridden this way.
1919
+ "overflow-hidden text-sm duration-200 data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down",
1901
1920
  className
1902
1921
  ),
1903
1922
  ...props
@@ -2128,14 +2147,14 @@ var Command = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__
2128
2147
  {
2129
2148
  ref,
2130
2149
  className: cn(
2131
- "flex h-full w-full flex-col overflow-hidden rounded-md bg-bg-elevated text-text-primary",
2150
+ "flex h-full w-full flex-col overflow-hidden rounded-md bg-bg-overlay text-text-primary",
2132
2151
  className
2133
2152
  ),
2134
2153
  ...props
2135
2154
  }
2136
2155
  ));
2137
2156
  Command.displayName = CommandPrimitive.displayName;
2138
- var KeyCap = ({ children }) => /* @__PURE__ */ jsx44("kbd", { className: "inline-flex h-5 min-w-5 items-center justify-center rounded-sm border border-border-default bg-bg-elevated px-1 font-sans text-xs text-text-secondary", children });
2157
+ var KeyCap = ({ children }) => /* @__PURE__ */ jsx44("kbd", { className: "inline-flex h-5 min-w-5 items-center justify-center rounded-sm border border-border-default bg-bg-secondary px-1 font-sans text-xs text-text-secondary", children });
2139
2158
  var CommandKeyHints = () => /* @__PURE__ */ jsx44("div", { className: "flex items-center gap-4 border-t border-border-subtle bg-bg-sunken px-3 py-2 text-xs text-text-tertiary", children: [[["\u2191", "\u2193"], "to navigate"], [["\u21B5"], "to select"]].map(([keys, verb]) => /* @__PURE__ */ jsxs23("span", { className: "flex items-center gap-1.5", children: [
2140
2159
  /* @__PURE__ */ jsx44("span", { className: "flex items-center gap-1", children: keys.map((key) => /* @__PURE__ */ jsx44(KeyCap, { children: key }, key)) }),
2141
2160
  " ",
@@ -2167,7 +2186,7 @@ var CommandDialog = ({
2167
2186
  document.addEventListener("keydown", onKey);
2168
2187
  return () => document.removeEventListener("keydown", onKey);
2169
2188
  }, [shortcut, open, onOpenChange]);
2170
- return /* @__PURE__ */ jsx44(Dialog, { open, onOpenChange, ...props, children: /* @__PURE__ */ jsx44(DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ jsx44(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-text-tertiary [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children: groups ? /* @__PURE__ */ jsxs23(Fragment2, { children: [
2189
+ return /* @__PURE__ */ jsx44(Dialog, { open, onOpenChange, ...props, children: /* @__PURE__ */ jsx44(DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ jsx44(Command, { label: placeholder, className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-text-tertiary [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children: groups ? /* @__PURE__ */ jsxs23(Fragment2, { children: [
2171
2190
  /* @__PURE__ */ jsx44(CommandInput, { placeholder }),
2172
2191
  /* @__PURE__ */ jsxs23(CommandList, { className: "max-h-[420px]", children: [
2173
2192
  /* @__PURE__ */ jsx44(CommandEmpty, { children: empty }),
@@ -2342,7 +2361,7 @@ var NavigationMenuViewport = React38.forwardRef(({ className, ...props }, ref) =
2342
2361
  {
2343
2362
  ref,
2344
2363
  className: cn(
2345
- "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border border-border-subtle bg-bg-elevated text-text-primary shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
2364
+ "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border border-border-subtle bg-bg-overlay text-text-primary shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
2346
2365
  className
2347
2366
  ),
2348
2367
  ...props
@@ -2431,7 +2450,7 @@ var Toaster = ({ ...props }) => {
2431
2450
  className: "toaster group",
2432
2451
  toastOptions: {
2433
2452
  classNames: {
2434
- toast: "group toast bg-bg-elevated border border-border-subtle text-text-primary shadow-lg",
2453
+ toast: "group toast bg-bg-overlay border border-border-subtle text-text-primary shadow-lg",
2435
2454
  description: "text-text-secondary",
2436
2455
  actionButton: "bg-blue-400 text-text-on-brand",
2437
2456
  cancelButton: "bg-bg-secondary text-text-primary"
@@ -3300,8 +3319,10 @@ function ConfirmDialog({
3300
3319
  title,
3301
3320
  description,
3302
3321
  confirmLabel = "Confirm",
3322
+ continueLabel,
3303
3323
  cancelLabel = "Cancel",
3304
3324
  destructive = false,
3325
+ confirmFirst = false,
3305
3326
  confirmPhrase,
3306
3327
  stepUp,
3307
3328
  onConfirm,
@@ -3316,7 +3337,8 @@ function ConfirmDialog({
3316
3337
  const [stepped, setStepped] = React50.useState(false);
3317
3338
  const phraseId = `${React50.useId()}-phrase`;
3318
3339
  const phraseMet = !confirmPhrase || typed.trim().toLowerCase() === confirmPhrase.trim().toLowerCase();
3319
- const challenging = Boolean(stepUp) && (!confirmPhrase || stepped);
3340
+ const holdsPanel = Boolean(confirmPhrase) || confirmFirst;
3341
+ const challenging = Boolean(stepUp) && (!holdsPanel || stepped);
3320
3342
  const panelTitle = challenging ? stepUp?.title ?? title : title;
3321
3343
  const panelDescription = challenging ? stepUp?.description ?? description : description;
3322
3344
  const reset = () => {
@@ -3379,10 +3401,11 @@ function ConfirmDialog({
3379
3401
  codeLength: stepUp?.codeLength,
3380
3402
  onMethodChange: stepUp?.onMethodChange,
3381
3403
  confirmLabel,
3382
- backLabel: confirmPhrase ? "Back" : cancelLabel,
3404
+ destructive,
3405
+ backLabel: holdsPanel ? "Back" : cancelLabel,
3383
3406
  onBack: () => {
3384
3407
  setError(null);
3385
- if (confirmPhrase) setStepped(false);
3408
+ if (holdsPanel) setStepped(false);
3386
3409
  else setOpen(false);
3387
3410
  },
3388
3411
  verifying: busy,
@@ -3395,12 +3418,12 @@ function ConfirmDialog({
3395
3418
  /* @__PURE__ */ jsxs35(
3396
3419
  Button,
3397
3420
  {
3398
- variant: destructive ? "destructive-solid" : "default",
3421
+ variant: destructive && !stepUp ? "destructive-solid" : "default",
3399
3422
  disabled: busy || !phraseMet,
3400
3423
  onClick: () => stepUp ? setStepped(true) : void handleConfirm(),
3401
3424
  children: [
3402
3425
  busy && /* @__PURE__ */ jsx60(Loader22, { className: "size-4 animate-spin", "aria-hidden": "true" }),
3403
- confirmLabel
3426
+ stepUp ? continueLabel ?? confirmLabel : confirmLabel
3404
3427
  ]
3405
3428
  }
3406
3429
  )
@@ -4534,14 +4557,17 @@ function useFreshHighlight() {
4534
4557
  // src/components/quick-search-row.tsx
4535
4558
  import { Search as Search2 } from "lucide-react";
4536
4559
  import { jsx as jsx74, jsxs as jsxs48 } from "react/jsx-runtime";
4560
+ var DEFAULT_SHORTCUT = "\u2318K";
4537
4561
  function QuickSearchRow({
4538
4562
  onOpen,
4539
4563
  label = "Quick search",
4540
- shortcut = "\u2318K",
4564
+ shortcut,
4541
4565
  collapsed = false,
4542
4566
  icon
4543
4567
  }) {
4544
- const name = shortcut ? `${label} ${shortcut}` : label;
4568
+ const drawer = useSidebarDrawer();
4569
+ const stated = shortcut === void 0 ? drawer ? false : DEFAULT_SHORTCUT : shortcut;
4570
+ const name = stated ? `${label} ${stated}` : label;
4545
4571
  if (!collapsed) {
4546
4572
  return /* @__PURE__ */ jsxs48(
4547
4573
  "button",
@@ -4563,7 +4589,7 @@ function QuickSearchRow({
4563
4589
  children: [
4564
4590
  /* @__PURE__ */ jsx74("span", { className: "flex size-4 shrink-0 items-center justify-center [&_svg]:size-4", "aria-hidden": "true", children: icon ?? /* @__PURE__ */ jsx74(Search2, {}) }),
4565
4591
  /* @__PURE__ */ jsx74("span", { className: "min-w-0 flex-1 truncate", children: label }),
4566
- shortcut && /* @__PURE__ */ jsx74("span", { className: "shrink-0 text-xs font-medium text-text-tertiary", children: shortcut })
4592
+ stated && /* @__PURE__ */ jsx74("span", { className: "shrink-0 text-xs font-medium text-text-tertiary", children: stated })
4567
4593
  ]
4568
4594
  }
4569
4595
  );
@@ -4703,12 +4729,15 @@ function ItemLabel({ item, kind }) {
4703
4729
  }
4704
4730
  var MARK_SIZE = { md: "sm", sm: "xs" };
4705
4731
  var ICON_BOX = { md: "size-8 rounded-md", sm: "size-6 rounded-sm" };
4732
+ function MarkSlot({ size }) {
4733
+ return /* @__PURE__ */ jsx78("span", { "aria-hidden": "true", className: cn("shrink-0", ICON_BOX[size]) });
4734
+ }
4706
4735
  function Mark2({ item, kind, size, reserve }) {
4707
4736
  if (item.icon) {
4708
4737
  return /* @__PURE__ */ jsx78("span", { className: cn("flex shrink-0 items-center justify-center overflow-hidden", ICON_BOX[size]), "aria-hidden": "true", children: item.icon });
4709
4738
  }
4710
4739
  const name = nameOf(item);
4711
- if (!name) return reserve ? /* @__PURE__ */ jsx78("span", { "aria-hidden": "true", className: cn("shrink-0", ICON_BOX[size]) }) : null;
4740
+ if (!name) return reserve ? /* @__PURE__ */ jsx78(MarkSlot, { size }) : null;
4712
4741
  return /* @__PURE__ */ jsx78(EntityTile, { name, tone: kind === "product" ? "auto" : "neutral", size: MARK_SIZE[size] });
4713
4742
  }
4714
4743
  function OrgProductSwitcher({
@@ -4720,6 +4749,7 @@ function OrgProductSwitcher({
4720
4749
  onProductSelect,
4721
4750
  actions,
4722
4751
  trigger = "stacked",
4752
+ mark = "draw",
4723
4753
  className,
4724
4754
  ...props
4725
4755
  }) {
@@ -4788,7 +4818,7 @@ function OrgProductSwitcher({
4788
4818
  /* @__PURE__ */ jsx78(ChevronsUpDown3, { size: 14, "aria-hidden": "true", className: "shrink-0 text-text-tertiary" })
4789
4819
  ] })
4790
4820
  ) : /* @__PURE__ */ jsxs51(DropdownMenuTrigger, { "aria-label": ariaLabel, className: cn(triggerBox, className), children: [
4791
- triggerMark && /* @__PURE__ */ jsx78(Mark2, { item: triggerMark, kind: markKind, size: "md" }),
4821
+ triggerMark && (mark === "hold" ? /* @__PURE__ */ jsx78(MarkSlot, { size: "md" }) : /* @__PURE__ */ jsx78(Mark2, { item: triggerMark, kind: markKind, size: "md" })),
4792
4822
  orgLevel ? /* @__PURE__ */ jsx78("span", { className: "flex min-w-0 flex-1 flex-col", children: /* @__PURE__ */ jsx78(NameLine, { className: orgName ? "font-semibold text-text-primary" : "text-text-tertiary", children: orgName ?? NO_ORG_LABEL }) }) : /* @__PURE__ */ jsxs51("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
4793
4823
  orgName && /* @__PURE__ */ jsx78("span", { className: "truncate text-xs leading-[normal] text-text-tertiary", children: orgName }),
4794
4824
  /* @__PURE__ */ jsx78(NameLine, { className: productName ? "font-semibold text-text-primary" : "text-text-tertiary", children: productLabel })
@@ -4882,7 +4912,7 @@ function SidebarBackHeader({
4882
4912
  ...rowProps,
4883
4913
  children: [
4884
4914
  /* @__PURE__ */ jsx79("span", { className: arrowBox, children: /* @__PURE__ */ jsx79("span", { className: cn(arrowPlate, arrowClassName), ...arrowRest, children: /* @__PURE__ */ jsx79(Arrow, {}) }) }),
4885
- /* @__PURE__ */ jsx79("span", { className: cn(titleBox, titleClassName), ...titleRest, children: title })
4915
+ /* @__PURE__ */ jsx79("span", { className: cn(titleBox, titleClassName), ...titleRest, children: /* @__PURE__ */ jsx79("span", { "data-slot": "nav-row-label", children: title }) })
4886
4916
  ]
4887
4917
  }
4888
4918
  );
@@ -4906,7 +4936,7 @@ function SidebarBackHeader({
4906
4936
  onClick: onTitleClick,
4907
4937
  className: cn(titleBox, focusRing, titleClassName),
4908
4938
  ...titleRest,
4909
- children: title
4939
+ children: /* @__PURE__ */ jsx79("span", { "data-slot": "nav-row-label", children: title })
4910
4940
  }
4911
4941
  )
4912
4942
  ] });
@@ -5082,8 +5112,8 @@ Col.displayName = "Col";
5082
5112
  // src/components/page-column.tsx
5083
5113
  import { jsx as jsx83 } from "react/jsx-runtime";
5084
5114
  var WIDTH = {
5085
- reading: "grid gap-5 page-column",
5086
- full: "grid gap-5"
5115
+ reading: "grid grid-cols-1 gap-5 page-column",
5116
+ full: "grid grid-cols-1 gap-5"
5087
5117
  };
5088
5118
  function PageColumn({ className, width = "reading", ...props }) {
5089
5119
  return /* @__PURE__ */ jsx83("div", { "data-slot": "page-column", className: cn(WIDTH[width], className), ...props });
@@ -5779,6 +5809,7 @@ import { BellRing, Settings } from "lucide-react";
5779
5809
 
5780
5810
  // src/components/notification-row.tsx
5781
5811
  import * as React77 from "react";
5812
+ import { Check as Check11 } from "lucide-react";
5782
5813
 
5783
5814
  // src/components/notification-parts.tsx
5784
5815
  import { Check as Check10 } from "lucide-react";
@@ -5813,30 +5844,63 @@ function DeepLinkControl({
5813
5844
 
5814
5845
  // src/components/notification-row.tsx
5815
5846
  import { jsx as jsx91, jsxs as jsxs59 } from "react/jsx-runtime";
5847
+ var DENSITY = {
5848
+ compact: {
5849
+ card: "px-3 py-2.5",
5850
+ body: "line-clamp-2 text-xs",
5851
+ deepLink: "text-xs font-semibold",
5852
+ actionChip: "rounded-md px-2.5 py-1 text-xs font-medium",
5853
+ actionText: "text-xs font-semibold",
5854
+ titleSettled: ""
5855
+ },
5856
+ comfortable: {
5857
+ card: "px-4 py-3",
5858
+ body: "text-sm",
5859
+ deepLink: "text-sm font-medium",
5860
+ actionChip: "rounded-md px-3 py-1.5 text-sm font-medium",
5861
+ actionText: "text-sm font-semibold",
5862
+ titleSettled: "font-medium"
5863
+ }
5864
+ };
5816
5865
  var NotificationRow = React77.forwardRef(
5817
- ({ item, onItemClick, onActionClick, onMarkRead, formatAge, className, ...props }, ref) => {
5866
+ ({
5867
+ item,
5868
+ onItemClick,
5869
+ onActionClick,
5870
+ onMarkRead,
5871
+ formatAge,
5872
+ density = "compact",
5873
+ className,
5874
+ ...props
5875
+ }, ref) => {
5876
+ const drawn = DENSITY[density];
5818
5877
  const settled = isNotificationSettled(item);
5819
5878
  const unread = !settled && !item.read;
5820
5879
  const markable = Boolean(onMarkRead) && !item.read && item.cls !== "ephemeral";
5821
5880
  const actions = settled ? [] : item.actions ?? [];
5822
5881
  const stamp = item.createdAt ? item.createdAt instanceof Date ? item.createdAt : new Date(item.createdAt) : null;
5823
5882
  const age = stamp ? formatAge ? formatAge(stamp) : formatRelativeAge(stamp) : null;
5883
+ const receiptLine = density === "comfortable" ? item.receipt : void 0;
5824
5884
  return (
5825
5885
  // Three steps of one ladder, and every one of them a token a reader can read:
5826
5886
  // unread is the loudest, read is quieter, settled is quietest. An opacity is
5827
5887
  // not a step — it drags the text under the contrast floor with the row.
5888
+ //
5889
+ // The fill is `bg-bg-overlay` and the lift is the hairline, because the bell's
5890
+ // panel is `bg-bg-overlay` too and that is the top of the ladder: on it a fill
5891
+ // can only step down, and stepping down inverts between the themes.
5828
5892
  /* @__PURE__ */ jsxs59(
5829
5893
  "div",
5830
5894
  {
5831
5895
  ref,
5832
- className: cn("group rounded-lg bg-bg-surface px-3 py-2.5", className),
5896
+ className: cn("group rounded-lg border border-border-subtle bg-bg-overlay", drawn.card, className),
5833
5897
  ...props,
5834
5898
  children: [
5835
5899
  /* @__PURE__ */ jsxs59("div", { className: "flex items-start gap-2.5", children: [
5836
5900
  /* @__PURE__ */ jsxs59("div", { className: "min-w-0 flex-1", children: [
5837
5901
  /* @__PURE__ */ jsxs59("p", { className: "truncate text-xs text-text-tertiary", children: [
5838
5902
  /* @__PURE__ */ jsx91("span", { className: "font-semibold", children: item.source }),
5839
- item.receipt ? `, ${item.receipt}` : ""
5903
+ item.receipt && !receiptLine ? `, ${item.receipt}` : ""
5840
5904
  ] }),
5841
5905
  /* @__PURE__ */ jsx91(
5842
5906
  "button",
@@ -5845,7 +5909,7 @@ var NotificationRow = React77.forwardRef(
5845
5909
  onClick: () => onItemClick?.(item),
5846
5910
  className: cn(
5847
5911
  "mt-0.5 block cursor-pointer text-left text-sm leading-tight underline-offset-2 hover:underline",
5848
- settled ? "text-text-tertiary" : unread ? "font-semibold text-text-primary" : "text-text-secondary"
5912
+ settled ? cn("text-text-tertiary", drawn.titleSettled) : unread ? "font-semibold text-text-primary" : "text-text-secondary"
5849
5913
  ),
5850
5914
  children: item.title
5851
5915
  }
@@ -5854,7 +5918,8 @@ var NotificationRow = React77.forwardRef(
5854
5918
  "p",
5855
5919
  {
5856
5920
  className: cn(
5857
- "mt-0.5 line-clamp-2 text-xs",
5921
+ "mt-0.5",
5922
+ drawn.body,
5858
5923
  settled ? "text-text-tertiary" : "text-text-secondary"
5859
5924
  ),
5860
5925
  children: item.body
@@ -5866,7 +5931,11 @@ var NotificationRow = React77.forwardRef(
5866
5931
  markable && /* @__PURE__ */ jsx91(MarkReadButton, { title: item.title, onClick: () => onMarkRead(item.id) })
5867
5932
  ] })
5868
5933
  ] }),
5869
- (actions.length > 0 || item.deepLink) && /* @__PURE__ */ jsxs59("div", { className: "mt-2 flex flex-wrap items-center gap-x-4 gap-y-2", children: [
5934
+ (actions.length > 0 || item.deepLink || receiptLine) && /* @__PURE__ */ jsxs59("div", { className: "mt-2 flex flex-wrap items-center gap-x-4 gap-y-2", children: [
5935
+ receiptLine && /* @__PURE__ */ jsxs59("span", { className: "inline-flex items-center gap-1.5 text-sm text-text-tertiary", children: [
5936
+ /* @__PURE__ */ jsx91(Check11, { className: "size-3 shrink-0 text-text-success", "aria-hidden": "true" }),
5937
+ receiptLine
5938
+ ] }),
5870
5939
  actions.map((action) => {
5871
5940
  const chip = action.variant === "primary" || action.variant === "destructive";
5872
5941
  return /* @__PURE__ */ jsx91(
@@ -5878,9 +5947,19 @@ var NotificationRow = React77.forwardRef(
5878
5947
  className: cn(
5879
5948
  rowControlHitArea,
5880
5949
  "cursor-pointer",
5881
- chip ? "rounded-md px-2.5 py-1 text-xs font-medium transition-colors duration-fast" : "text-xs font-semibold text-text-secondary transition-opacity duration-fast hover:opacity-80",
5950
+ chip ? cn(drawn.actionChip, "transition-colors duration-fast") : cn(
5951
+ drawn.actionText,
5952
+ "text-text-secondary transition-opacity duration-fast hover:opacity-80"
5953
+ ),
5882
5954
  action.variant === "primary" && "bg-bg-brand text-text-on-brand hover:bg-bg-brand-hover",
5883
- action.variant === "destructive" && "bg-bg-elevated text-text-danger hover:bg-bg-sunken"
5955
+ // The pair stays two filled chips, and the red one is the red wash rather than
5956
+ // a grey step: `bg-bg-elevated` is the same hex as the row's own `bg-bg-overlay`
5957
+ // in dark (1.000:1), so it had no fill left there at all. The wash steps off the
5958
+ // row in both (1.171:1 light, 1.328:1 dark) and is what
5959
+ // `Guidelines/Controls/Destructive actions` puts a destructive control on. The
5960
+ // pointer takes it to the solid plate, which is a hover affordance and not the
5961
+ // resting signal that page argues about.
5962
+ action.variant === "destructive" && "bg-bg-danger-subtle text-text-danger hover:bg-bg-danger hover:text-text-on-danger"
5884
5963
  ),
5885
5964
  children: action.label
5886
5965
  },
@@ -5895,7 +5974,8 @@ var NotificationRow = React77.forwardRef(
5895
5974
  onClick: () => onItemClick?.(item),
5896
5975
  className: cn(
5897
5976
  rowControlHitArea,
5898
- "text-xs font-semibold text-text-brand transition-opacity duration-fast hover:opacity-80"
5977
+ drawn.deepLink,
5978
+ "text-text-brand transition-opacity duration-fast hover:opacity-80"
5899
5979
  )
5900
5980
  }
5901
5981
  )
@@ -5957,7 +6037,7 @@ var NotificationBell = React78.forwardRef(
5957
6037
  maxHeight: "var(--radix-popover-content-available-height, 32rem)",
5958
6038
  maxWidth: "var(--radix-popover-content-available-width, 380px)"
5959
6039
  },
5960
- className: "flex w-[380px] flex-col overflow-hidden p-0",
6040
+ className: "flex w-[380px] flex-col overflow-hidden rounded-xl p-0",
5961
6041
  children: [
5962
6042
  /* @__PURE__ */ jsxs60("div", { className: "flex shrink-0 items-center justify-between px-5 py-3", children: [
5963
6043
  /* @__PURE__ */ jsx92("span", { className: "text-sm font-bold text-text-primary", children: "Notification center" }),
@@ -6014,7 +6094,7 @@ NotificationBell.displayName = "NotificationBell";
6014
6094
 
6015
6095
  // src/components/notification-center.tsx
6016
6096
  import * as React79 from "react";
6017
- import { Check as Check11, Search as Search4 } from "lucide-react";
6097
+ import { Check as Check12, Search as Search4 } from "lucide-react";
6018
6098
  import { jsx as jsx93, jsxs as jsxs61 } from "react/jsx-runtime";
6019
6099
  var chipBase = "cursor-pointer rounded-md px-3 py-1.5 text-sm font-medium transition-colors duration-fast";
6020
6100
  var chipOn = "bg-bg-sunken font-semibold text-text-primary";
@@ -6061,7 +6141,7 @@ function CenterRow({
6061
6141
  item.body && /* @__PURE__ */ jsx93("p", { className: "mt-0.5 text-sm leading-snug text-text-secondary", children: item.body }),
6062
6142
  (item.receipt || item.deepLink) && /* @__PURE__ */ jsxs61("div", { className: "mt-2 flex flex-wrap items-center gap-x-4 gap-y-1.5", children: [
6063
6143
  item.receipt && /* @__PURE__ */ jsxs61("span", { className: "inline-flex items-center gap-1.5 text-sm text-text-tertiary", children: [
6064
- /* @__PURE__ */ jsx93(Check11, { className: "size-3 shrink-0 text-text-success", "aria-hidden": "true" }),
6144
+ /* @__PURE__ */ jsx93(Check12, { className: "size-3 shrink-0 text-text-success", "aria-hidden": "true" }),
6065
6145
  item.receipt
6066
6146
  ] }),
6067
6147
  item.deepLink && /* @__PURE__ */ jsx93(
@@ -6435,7 +6515,7 @@ import { X as X4 } from "lucide-react";
6435
6515
  import { jsx as jsx95, jsxs as jsxs63 } from "react/jsx-runtime";
6436
6516
  var chipBase2 = "cursor-pointer rounded-lg px-2.5 py-1 text-sm font-medium transition-colors duration-fast";
6437
6517
  var chipPrimary = "bg-bg-brand text-text-on-brand hover:bg-bg-brand-hover";
6438
- var chipDestructive = "bg-bg-elevated text-text-danger hover:bg-bg-surface";
6518
+ var chipDestructive = "bg-bg-danger-subtle text-text-danger hover:bg-bg-danger hover:text-text-on-danger";
6439
6519
  var linkAction = "cursor-pointer text-sm font-semibold text-text-brand transition-colors duration-fast hover:text-text-primary";
6440
6520
  var NotificationToast = React81.forwardRef(
6441
6521
  ({
@@ -6463,7 +6543,7 @@ var NotificationToast = React81.forwardRef(
6463
6543
  role: "status",
6464
6544
  "aria-live": item.severity === "critical" ? "assertive" : "polite",
6465
6545
  className: cn(
6466
- "rounded-2xl border border-border-subtle bg-bg-elevated p-4 shadow-(--menu-shadow)",
6546
+ "rounded-2xl border border-border-subtle bg-bg-overlay p-4 shadow-(--menu-shadow)",
6467
6547
  className
6468
6548
  ),
6469
6549
  children: [
@@ -6639,6 +6719,80 @@ var NotificationToaster = React82.forwardRef(
6639
6719
  );
6640
6720
  NotificationToaster.displayName = "NotificationToaster";
6641
6721
 
6722
+ // src/components/onboarding-screen-shell.tsx
6723
+ import * as React83 from "react";
6724
+
6725
+ // src/lib/auth-surface.ts
6726
+ var AUTH_GLOW_BG = "radial-gradient(560px 320px at 28% 16%, var(--auth-glow-a), transparent 68%),radial-gradient(520px 340px at 78% 90%, var(--auth-glow-b), transparent 66%),var(--bg-sunken)";
6727
+ var AUTH_FILLED_BUTTON = "flex h-[46px] w-full items-center justify-center gap-[11px] rounded-[10px] border border-transparent bg-text-primary px-[14px] text-[14.5px] font-semibold tracking-[-0.005em] text-bg-sunken transition-opacity duration-fast hover:opacity-[0.92] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-text-brand active:translate-y-px disabled:cursor-not-allowed disabled:opacity-[0.55]";
6728
+ var AUTH_QUIET_BUTTON = "flex h-[46px] w-full items-center justify-center gap-[11px] rounded-[10px] border border-border-default bg-transparent px-[14px] text-[14.5px] font-medium tracking-[-0.005em] text-text-secondary transition-colors duration-fast hover:bg-bg-secondary focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-text-brand";
6729
+ var AUTH_BUTTON_SHADOW = "var(--auth-btn-shadow)";
6730
+
6731
+ // src/components/onboarding-screen-shell.tsx
6732
+ import { jsx as jsx97, jsxs as jsxs64 } from "react/jsx-runtime";
6733
+ var CARD_WIDTH = {
6734
+ md: "max-w-[440px]",
6735
+ lg: "max-w-[560px]"
6736
+ };
6737
+ var OnboardingScreenShell = React83.forwardRef(
6738
+ ({
6739
+ logo,
6740
+ themeToggle = /* @__PURE__ */ jsx97(ThemeToggle, {}),
6741
+ title,
6742
+ description,
6743
+ footer,
6744
+ width = "md",
6745
+ children,
6746
+ className,
6747
+ ...props
6748
+ }, ref) => /* @__PURE__ */ jsxs64(
6749
+ "div",
6750
+ {
6751
+ ref,
6752
+ className: cn(
6753
+ "relative flex min-h-screen w-full flex-col items-center justify-center overflow-hidden px-6 py-12 text-text-primary",
6754
+ className
6755
+ ),
6756
+ style: { background: AUTH_GLOW_BG },
6757
+ ...props,
6758
+ children: [
6759
+ themeToggle && /* @__PURE__ */ jsx97("div", { className: "absolute right-6 top-6", children: themeToggle }),
6760
+ /* @__PURE__ */ jsxs64(
6761
+ "div",
6762
+ {
6763
+ className: cn(
6764
+ "relative w-full rounded-2xl bg-bg-surface px-[34px] pb-[30px] pt-[38px] text-center",
6765
+ CARD_WIDTH[width]
6766
+ ),
6767
+ style: {
6768
+ border: "1px solid var(--auth-card-border)",
6769
+ boxShadow: "var(--auth-card-shadow)"
6770
+ },
6771
+ children: [
6772
+ logo && /* @__PURE__ */ jsx97("div", { className: "mb-[22px] flex items-center justify-center text-xl font-bold leading-none tracking-[-0.02em] text-text-primary", children: logo }),
6773
+ title != null && /* @__PURE__ */ jsx97(
6774
+ "h1",
6775
+ {
6776
+ className: cn(
6777
+ "text-lg font-semibold leading-[1.25] tracking-[-0.015em] text-text-primary",
6778
+ // Without a description the headline itself carries the gap to the form.
6779
+ description ? "mb-[8px]" : "mb-[24px]"
6780
+ ),
6781
+ children: title
6782
+ }
6783
+ ),
6784
+ description && /* @__PURE__ */ jsx97("p", { className: "mx-auto mb-[24px] max-w-[320px] text-sm text-text-secondary", children: description }),
6785
+ /* @__PURE__ */ jsx97("div", { className: "text-left", children }),
6786
+ footer != null && /* @__PURE__ */ jsx97("div", { className: "mt-[24px] text-xs tracking-[0.005em] text-text-tertiary", children: footer })
6787
+ ]
6788
+ }
6789
+ )
6790
+ ]
6791
+ }
6792
+ )
6793
+ );
6794
+ OnboardingScreenShell.displayName = "OnboardingScreenShell";
6795
+
6642
6796
  // src/lib/countries.ts
6643
6797
  var COUNTRY_OPTIONS = [
6644
6798
  { value: "AF", label: "Afghanistan" },
@@ -6893,15 +7047,8 @@ var COUNTRY_OPTIONS = [
6893
7047
  ];
6894
7048
 
6895
7049
  // src/components/organization-onboarding-form.tsx
6896
- import * as React83 from "react";
6897
-
6898
- // src/lib/auth-surface.ts
6899
- var AUTH_FILLED_BUTTON = "flex h-[46px] w-full items-center justify-center gap-[11px] rounded-[10px] border border-transparent bg-text-primary px-[14px] text-[14.5px] font-semibold tracking-[-0.005em] text-bg-sunken transition-opacity duration-fast hover:opacity-[0.92] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-text-brand active:translate-y-px disabled:cursor-not-allowed disabled:opacity-[0.55]";
6900
- var AUTH_QUIET_BUTTON = "flex h-[46px] w-full items-center justify-center gap-[11px] rounded-[10px] border border-border-default bg-transparent px-[14px] text-[14.5px] font-medium tracking-[-0.005em] text-text-secondary transition-colors duration-fast hover:bg-bg-secondary focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-text-brand";
6901
- var AUTH_BUTTON_SHADOW = "var(--auth-btn-shadow)";
6902
-
6903
- // src/components/organization-onboarding-form.tsx
6904
- import { jsx as jsx97, jsxs as jsxs64 } from "react/jsx-runtime";
7050
+ import * as React84 from "react";
7051
+ import { jsx as jsx98, jsxs as jsxs65 } from "react/jsx-runtime";
6905
7052
  var CONTROLLER_SHARE_PCT = 50;
6906
7053
  var MAX_BENEFICIAL_OWNERS = 50;
6907
7054
  var REQUIRED_FIELD_LABELS = {
@@ -6916,7 +7063,7 @@ function isOwnershipViolation(violation) {
6916
7063
  return /ownership[_\s-]?confirmed/i.test(violation);
6917
7064
  }
6918
7065
  function RequiredMark() {
6919
- return /* @__PURE__ */ jsx97("span", { className: "text-text-danger", children: " *" });
7066
+ return /* @__PURE__ */ jsx98("span", { className: "text-text-danger", children: " *" });
6920
7067
  }
6921
7068
  function parseShare(raw) {
6922
7069
  if (!/^\d{1,3}$/.test(raw.trim())) return null;
@@ -6945,23 +7092,23 @@ function OrganizationOnboardingForm({
6945
7092
  onCancel,
6946
7093
  className
6947
7094
  }) {
6948
- const [name, setName] = React83.useState(defaultValues?.name ?? "");
6949
- const [legalName, setLegalName] = React83.useState(defaultValues?.legal_name ?? "");
6950
- const [ownerName, setOwnerName] = React83.useState(defaultValues?.owner_name ?? "");
6951
- const [countryOfIncorporation, setCountryOfIncorporation] = React83.useState(
7095
+ const [name, setName] = React84.useState(defaultValues?.name ?? "");
7096
+ const [legalName, setLegalName] = React84.useState(defaultValues?.legal_name ?? "");
7097
+ const [ownerName, setOwnerName] = React84.useState(defaultValues?.owner_name ?? "");
7098
+ const [countryOfIncorporation, setCountryOfIncorporation] = React84.useState(
6952
7099
  defaultValues?.country_of_incorporation ?? ""
6953
7100
  );
6954
- const [residencyCountry, setResidencyCountry] = React83.useState(
7101
+ const [residencyCountry, setResidencyCountry] = React84.useState(
6955
7102
  defaultValues?.residency_country ?? ""
6956
7103
  );
6957
- const [owners, setOwners] = React83.useState(
7104
+ const [owners, setOwners] = React84.useState(
6958
7105
  () => initialRows(defaultValues?.beneficial_owners)
6959
7106
  );
6960
- const [ownershipConfirmed, setOwnershipConfirmed] = React83.useState(false);
6961
- const [confirmationAttempted, setConfirmationAttempted] = React83.useState(false);
6962
- const [requiredAttempted, setRequiredAttempted] = React83.useState(false);
6963
- const nextKeyRef = React83.useRef(owners.length);
6964
- const submittingRef = React83.useRef(false);
7107
+ const [ownershipConfirmed, setOwnershipConfirmed] = React84.useState(false);
7108
+ const [confirmationAttempted, setConfirmationAttempted] = React84.useState(false);
7109
+ const [requiredAttempted, setRequiredAttempted] = React84.useState(false);
7110
+ const nextKeyRef = React84.useRef(owners.length);
7111
+ const submittingRef = React84.useRef(false);
6965
7112
  const trimmed = name.trim();
6966
7113
  const filledOwners = owners.filter((row) => !isRowBlank(row));
6967
7114
  const ownerShares = filledOwners.map((row) => parseShare(row.share));
@@ -7023,7 +7170,7 @@ function OrganizationOnboardingForm({
7023
7170
  ...needsOwnershipConfirmation ? { ownership_confirmed: ownershipConfirmed } : {}
7024
7171
  });
7025
7172
  };
7026
- React83.useEffect(() => {
7173
+ React84.useEffect(() => {
7027
7174
  submittingRef.current = false;
7028
7175
  }, [
7029
7176
  name,
@@ -7036,12 +7183,12 @@ function OrganizationOnboardingForm({
7036
7183
  submitting,
7037
7184
  serverError
7038
7185
  ]);
7039
- const countryField = (params) => /* @__PURE__ */ jsxs64("div", { className: "space-y-1.5", children: [
7040
- /* @__PURE__ */ jsxs64(Label2, { htmlFor: params.id, children: [
7186
+ const countryField = (params) => /* @__PURE__ */ jsxs65("div", { className: "space-y-1.5", children: [
7187
+ /* @__PURE__ */ jsxs65(Label2, { htmlFor: params.id, children: [
7041
7188
  params.label,
7042
- /* @__PURE__ */ jsx97(RequiredMark, {})
7189
+ /* @__PURE__ */ jsx98(RequiredMark, {})
7043
7190
  ] }),
7044
- /* @__PURE__ */ jsx97(
7191
+ /* @__PURE__ */ jsx98(
7045
7192
  Select,
7046
7193
  {
7047
7194
  id: params.id,
@@ -7054,13 +7201,13 @@ function OrganizationOnboardingForm({
7054
7201
  }
7055
7202
  )
7056
7203
  ] });
7057
- return /* @__PURE__ */ jsxs64("form", { onSubmit: handleSubmit, className: cn("space-y-4", className), children: [
7058
- /* @__PURE__ */ jsxs64("div", { className: "space-y-1.5", children: [
7059
- /* @__PURE__ */ jsxs64(Label2, { htmlFor: "create-org-name", children: [
7204
+ return /* @__PURE__ */ jsxs65("form", { onSubmit: handleSubmit, className: cn("space-y-4", className), children: [
7205
+ /* @__PURE__ */ jsxs65("div", { className: "space-y-1.5", children: [
7206
+ /* @__PURE__ */ jsxs65(Label2, { htmlFor: "create-org-name", children: [
7060
7207
  REQUIRED_FIELD_LABELS.name,
7061
- /* @__PURE__ */ jsx97(RequiredMark, {})
7208
+ /* @__PURE__ */ jsx98(RequiredMark, {})
7062
7209
  ] }),
7063
- /* @__PURE__ */ jsx97(
7210
+ /* @__PURE__ */ jsx98(
7064
7211
  Input,
7065
7212
  {
7066
7213
  id: "create-org-name",
@@ -7071,12 +7218,12 @@ function OrganizationOnboardingForm({
7071
7218
  }
7072
7219
  )
7073
7220
  ] }),
7074
- /* @__PURE__ */ jsxs64("div", { className: "space-y-1.5", children: [
7075
- /* @__PURE__ */ jsxs64(Label2, { htmlFor: "create-org-legal-name", children: [
7221
+ /* @__PURE__ */ jsxs65("div", { className: "space-y-1.5", children: [
7222
+ /* @__PURE__ */ jsxs65(Label2, { htmlFor: "create-org-legal-name", children: [
7076
7223
  REQUIRED_FIELD_LABELS.legalName,
7077
- /* @__PURE__ */ jsx97(RequiredMark, {})
7224
+ /* @__PURE__ */ jsx98(RequiredMark, {})
7078
7225
  ] }),
7079
- /* @__PURE__ */ jsx97(
7226
+ /* @__PURE__ */ jsx98(
7080
7227
  Input,
7081
7228
  {
7082
7229
  id: "create-org-legal-name",
@@ -7087,12 +7234,12 @@ function OrganizationOnboardingForm({
7087
7234
  }
7088
7235
  )
7089
7236
  ] }),
7090
- /* @__PURE__ */ jsxs64("div", { className: "space-y-1.5", children: [
7091
- /* @__PURE__ */ jsxs64(Label2, { htmlFor: "create-org-owner-name", children: [
7237
+ /* @__PURE__ */ jsxs65("div", { className: "space-y-1.5", children: [
7238
+ /* @__PURE__ */ jsxs65(Label2, { htmlFor: "create-org-owner-name", children: [
7092
7239
  REQUIRED_FIELD_LABELS.ownerName,
7093
- /* @__PURE__ */ jsx97(RequiredMark, {})
7240
+ /* @__PURE__ */ jsx98(RequiredMark, {})
7094
7241
  ] }),
7095
- /* @__PURE__ */ jsx97(
7242
+ /* @__PURE__ */ jsx98(
7096
7243
  Input,
7097
7244
  {
7098
7245
  id: "create-org-owner-name",
@@ -7115,10 +7262,10 @@ function OrganizationOnboardingForm({
7115
7262
  value: residencyCountry,
7116
7263
  onChange: setResidencyCountry
7117
7264
  }),
7118
- /* @__PURE__ */ jsxs64("div", { className: "space-y-2", children: [
7119
- /* @__PURE__ */ jsxs64("div", { className: "flex items-center justify-between", children: [
7120
- /* @__PURE__ */ jsx97(Label2, { children: "Beneficial owners" }),
7121
- /* @__PURE__ */ jsx97(
7265
+ /* @__PURE__ */ jsxs65("div", { className: "space-y-2", children: [
7266
+ /* @__PURE__ */ jsxs65("div", { className: "flex items-center justify-between", children: [
7267
+ /* @__PURE__ */ jsx98(Label2, { children: "Beneficial owners" }),
7268
+ /* @__PURE__ */ jsx98(
7122
7269
  Button,
7123
7270
  {
7124
7271
  type: "button",
@@ -7131,16 +7278,16 @@ function OrganizationOnboardingForm({
7131
7278
  }
7132
7279
  )
7133
7280
  ] }),
7134
- owners.length === 0 && /* @__PURE__ */ jsx97("p", { className: "text-xs text-text-tertiary", children: "List the natural persons who ultimately own or control the organization." }),
7135
- owners.map((row) => /* @__PURE__ */ jsxs64(
7281
+ owners.length === 0 && /* @__PURE__ */ jsx98("p", { className: "text-xs text-text-tertiary", children: "List the natural persons who ultimately own or control the organization." }),
7282
+ owners.map((row) => /* @__PURE__ */ jsxs65(
7136
7283
  "div",
7137
7284
  {
7138
7285
  "data-testid": `beneficial-owner-row-${row.key}`,
7139
7286
  className: "flex items-end gap-2",
7140
7287
  children: [
7141
- /* @__PURE__ */ jsxs64("div", { className: "flex-1 space-y-1", children: [
7142
- /* @__PURE__ */ jsx97(Label2, { htmlFor: `bo-name-${row.key}`, className: "text-xs", children: "Name" }),
7143
- /* @__PURE__ */ jsx97(
7288
+ /* @__PURE__ */ jsxs65("div", { className: "flex-1 space-y-1", children: [
7289
+ /* @__PURE__ */ jsx98(Label2, { htmlFor: `bo-name-${row.key}`, className: "text-xs", children: "Name" }),
7290
+ /* @__PURE__ */ jsx98(
7144
7291
  Input,
7145
7292
  {
7146
7293
  id: `bo-name-${row.key}`,
@@ -7150,9 +7297,9 @@ function OrganizationOnboardingForm({
7150
7297
  }
7151
7298
  )
7152
7299
  ] }),
7153
- /* @__PURE__ */ jsxs64("div", { className: "w-40 space-y-1", children: [
7154
- /* @__PURE__ */ jsx97(Label2, { htmlFor: `bo-country-${row.key}`, className: "text-xs", children: "Country" }),
7155
- /* @__PURE__ */ jsx97(
7300
+ /* @__PURE__ */ jsxs65("div", { className: "w-40 space-y-1", children: [
7301
+ /* @__PURE__ */ jsx98(Label2, { htmlFor: `bo-country-${row.key}`, className: "text-xs", children: "Country" }),
7302
+ /* @__PURE__ */ jsx98(
7156
7303
  Select,
7157
7304
  {
7158
7305
  id: `bo-country-${row.key}`,
@@ -7165,9 +7312,9 @@ function OrganizationOnboardingForm({
7165
7312
  }
7166
7313
  )
7167
7314
  ] }),
7168
- /* @__PURE__ */ jsxs64("div", { className: "w-24 space-y-1", children: [
7169
- /* @__PURE__ */ jsx97(Label2, { htmlFor: `bo-share-${row.key}`, className: "text-xs", children: "Share %" }),
7170
- /* @__PURE__ */ jsx97(
7315
+ /* @__PURE__ */ jsxs65("div", { className: "w-24 space-y-1", children: [
7316
+ /* @__PURE__ */ jsx98(Label2, { htmlFor: `bo-share-${row.key}`, className: "text-xs", children: "Share %" }),
7317
+ /* @__PURE__ */ jsx98(
7171
7318
  Input,
7172
7319
  {
7173
7320
  id: `bo-share-${row.key}`,
@@ -7178,7 +7325,7 @@ function OrganizationOnboardingForm({
7178
7325
  }
7179
7326
  )
7180
7327
  ] }),
7181
- /* @__PURE__ */ jsx97(
7328
+ /* @__PURE__ */ jsx98(
7182
7329
  Button,
7183
7330
  {
7184
7331
  type: "button",
@@ -7193,16 +7340,16 @@ function OrganizationOnboardingForm({
7193
7340
  },
7194
7341
  row.key
7195
7342
  )),
7196
- !ownersValid && /* @__PURE__ */ jsx97("p", { "data-testid": "beneficial-owners-error", className: "text-xs text-text-danger", children: "Every owner needs a name, a country and a share between 0 and 100." }),
7197
- shareSum > 100 && /* @__PURE__ */ jsxs64("p", { "data-testid": "beneficial-owners-sum-warning", className: "text-xs text-text-warning", children: [
7343
+ !ownersValid && /* @__PURE__ */ jsx98("p", { "data-testid": "beneficial-owners-error", className: "text-xs text-text-danger", children: "Every owner needs a name, a country and a share between 0 and 100." }),
7344
+ shareSum > 100 && /* @__PURE__ */ jsxs65("p", { "data-testid": "beneficial-owners-sum-warning", className: "text-xs text-text-warning", children: [
7198
7345
  "The listed shares add up to ",
7199
7346
  shareSum,
7200
7347
  "%, which is more than 100%."
7201
7348
  ] })
7202
7349
  ] }),
7203
- needsOwnershipConfirmation && /* @__PURE__ */ jsxs64("div", { className: "space-y-1", children: [
7204
- /* @__PURE__ */ jsxs64("div", { className: "flex items-start gap-2", children: [
7205
- /* @__PURE__ */ jsx97(
7350
+ needsOwnershipConfirmation && /* @__PURE__ */ jsxs65("div", { className: "space-y-1", children: [
7351
+ /* @__PURE__ */ jsxs65("div", { className: "flex items-start gap-2", children: [
7352
+ /* @__PURE__ */ jsx98(
7206
7353
  Checkbox,
7207
7354
  {
7208
7355
  id: "create-org-ownership-confirmed",
@@ -7212,19 +7359,19 @@ function OrganizationOnboardingForm({
7212
7359
  onCheckedChange: (value) => setOwnershipConfirmed(value === true)
7213
7360
  }
7214
7361
  ),
7215
- /* @__PURE__ */ jsxs64(
7362
+ /* @__PURE__ */ jsxs65(
7216
7363
  Label2,
7217
7364
  {
7218
7365
  htmlFor: "create-org-ownership-confirmed",
7219
7366
  className: "text-xs font-regular leading-snug",
7220
7367
  children: [
7221
7368
  "I confirm the ownership structure above is complete and correct",
7222
- /* @__PURE__ */ jsx97(RequiredMark, {})
7369
+ /* @__PURE__ */ jsx98(RequiredMark, {})
7223
7370
  ]
7224
7371
  }
7225
7372
  )
7226
7373
  ] }),
7227
- showConfirmationError && /* @__PURE__ */ jsx97(
7374
+ showConfirmationError && /* @__PURE__ */ jsx98(
7228
7375
  "p",
7229
7376
  {
7230
7377
  id: "create-org-ownership-error",
@@ -7234,13 +7381,13 @@ function OrganizationOnboardingForm({
7234
7381
  }
7235
7382
  )
7236
7383
  ] }),
7237
- showRequiredError && /* @__PURE__ */ jsx97(InlineError, { "data-testid": "create-org-required-error", children: missingRequired.length === 1 ? `${missingRequired[0]} is required` : `These fields are required: ${missingRequired.join(", ")}` }),
7238
- (serverError || otherViolations.length > 0) && /* @__PURE__ */ jsxs64(InlineError, { "data-testid": "create-org-server-error", children: [
7384
+ showRequiredError && /* @__PURE__ */ jsx98(InlineError, { "data-testid": "create-org-required-error", children: missingRequired.length === 1 ? `${missingRequired[0]} is required` : `These fields are required: ${missingRequired.join(", ")}` }),
7385
+ (serverError || otherViolations.length > 0) && /* @__PURE__ */ jsxs65(InlineError, { "data-testid": "create-org-server-error", children: [
7239
7386
  serverError,
7240
- otherViolations.length > 0 && /* @__PURE__ */ jsx97("ul", { "data-testid": "create-org-violations", className: "mt-1 list-disc pl-4", children: otherViolations.map((violation) => /* @__PURE__ */ jsx97("li", { children: violation }, violation)) })
7387
+ otherViolations.length > 0 && /* @__PURE__ */ jsx98("ul", { "data-testid": "create-org-violations", className: "mt-1 list-disc pl-4", children: otherViolations.map((violation) => /* @__PURE__ */ jsx98("li", { children: violation }, violation)) })
7241
7388
  ] }),
7242
- /* @__PURE__ */ jsxs64("div", { className: "space-y-2 pt-1", children: [
7243
- /* @__PURE__ */ jsx97(
7389
+ /* @__PURE__ */ jsxs65("div", { className: "space-y-2 pt-1", children: [
7390
+ /* @__PURE__ */ jsx98(
7244
7391
  "button",
7245
7392
  {
7246
7393
  type: "submit",
@@ -7251,14 +7398,14 @@ function OrganizationOnboardingForm({
7251
7398
  children: submitting ? "Creating\u2026" : submitLabel
7252
7399
  }
7253
7400
  ),
7254
- onCancel && /* @__PURE__ */ jsx97("button", { type: "button", onClick: onCancel, className: cn("cursor-pointer", AUTH_QUIET_BUTTON), children: "Cancel" })
7401
+ onCancel && /* @__PURE__ */ jsx98("button", { type: "button", onClick: onCancel, className: cn("cursor-pointer", AUTH_QUIET_BUTTON), children: "Cancel" })
7255
7402
  ] })
7256
7403
  ] });
7257
7404
  }
7258
7405
 
7259
7406
  // src/components/list-columns.tsx
7260
- import * as React84 from "react";
7261
- import { jsx as jsx98, jsxs as jsxs65 } from "react/jsx-runtime";
7407
+ import * as React85 from "react";
7408
+ import { jsx as jsx99, jsxs as jsxs66 } from "react/jsx-runtime";
7262
7409
  var CELL_WIDTH = { 20: "w-20", 24: "w-24", 28: "w-28", 32: "w-32" };
7263
7410
  var headerClass = "flex items-center gap-3 border-b border-border-subtle bg-bg-secondary px-4 py-1.5 text-xs text-text-tertiary";
7264
7411
  var cellsClass = "flex shrink-0 items-center gap-3";
@@ -7276,13 +7423,13 @@ function warnDuplicateKeys(columns, where) {
7276
7423
  seen.add(c.key);
7277
7424
  }
7278
7425
  }
7279
- var ListHeader = React84.forwardRef(function ListHeader2({ lead, columns, mark = true, trailing = true, className, ...props }, ref) {
7426
+ var ListHeader = React85.forwardRef(function ListHeader2({ lead, columns, mark = true, trailing = true, className, ...props }, ref) {
7280
7427
  warnDuplicateKeys(columns, "ListHeader");
7281
- return /* @__PURE__ */ jsxs65("div", { ref, className: cn(headerClass, className), ...props, children: [
7282
- mark && /* @__PURE__ */ jsx98("span", { className: "size-8 shrink-0", "aria-hidden": true }),
7283
- /* @__PURE__ */ jsx98("span", { className: "min-w-0 flex-1 truncate", children: lead }),
7284
- /* @__PURE__ */ jsx98("span", { className: cellsClass, children: columns.map((c) => /* @__PURE__ */ jsx98("span", { className: cn(CELL_WIDTH[c.width], cellClass), children: c.label }, c.key)) }),
7285
- trailing && /* @__PURE__ */ jsx98("span", { className: "size-4 shrink-0", "aria-hidden": true })
7428
+ return /* @__PURE__ */ jsxs66("div", { ref, className: cn(headerClass, className), ...props, children: [
7429
+ mark && /* @__PURE__ */ jsx99("span", { className: "size-8 shrink-0", "aria-hidden": true }),
7430
+ /* @__PURE__ */ jsx99("span", { className: "min-w-0 flex-1 truncate", children: lead }),
7431
+ /* @__PURE__ */ jsx99("span", { className: cellsClass, children: columns.map((c) => /* @__PURE__ */ jsx99("span", { className: cn(CELL_WIDTH[c.width], cellClass), children: c.label }, c.key)) }),
7432
+ trailing && /* @__PURE__ */ jsx99("span", { className: "size-4 shrink-0", "aria-hidden": true })
7286
7433
  ] });
7287
7434
  });
7288
7435
  function cellValue(values, column) {
@@ -7290,9 +7437,9 @@ function cellValue(values, column) {
7290
7437
  const value = values[column.key];
7291
7438
  return value === void 0 || value === null || value === "" ? column.fallback : value;
7292
7439
  }
7293
- var ListCells = React84.forwardRef(function ListCells2({ columns, values, className, ...props }, ref) {
7440
+ var ListCells = React85.forwardRef(function ListCells2({ columns, values, className, ...props }, ref) {
7294
7441
  warnDuplicateKeys(columns, "ListCells");
7295
- return /* @__PURE__ */ jsx98("span", { ref, className: cn(cellsClass, className), ...props, children: columns.map((c) => /* @__PURE__ */ jsx98(
7442
+ return /* @__PURE__ */ jsx99("span", { ref, className: cn(cellsClass, className), ...props, children: columns.map((c) => /* @__PURE__ */ jsx99(
7296
7443
  "span",
7297
7444
  {
7298
7445
  className: cn(CELL_WIDTH[c.width], cellClass, c.quiet && "text-text-tertiary"),
@@ -7305,9 +7452,9 @@ ListHeader.displayName = "ListHeader";
7305
7452
  ListCells.displayName = "ListCells";
7306
7453
 
7307
7454
  // src/components/theme-picker.tsx
7308
- import * as React85 from "react";
7309
- import { Check as Check12 } from "lucide-react";
7310
- import { jsx as jsx99, jsxs as jsxs66 } from "react/jsx-runtime";
7455
+ import * as React86 from "react";
7456
+ import { Check as Check13 } from "lucide-react";
7457
+ import { jsx as jsx100, jsxs as jsxs67 } from "react/jsx-runtime";
7311
7458
  var THEME_SWATCHES = {
7312
7459
  // --bg-surface --bg-sunken --bg-overlay --border-default --text-tertiary
7313
7460
  light: { canvas: "#f2f3f4", rail: "#e1e2e4", body: "#ffffff", quiet: "#bbbec7", strong: "#535a6e" },
@@ -7321,13 +7468,13 @@ var OPTIONS = [
7321
7468
  { value: "system", label: "Auto", name: "Auto, follows your device theme" }
7322
7469
  ];
7323
7470
  function Panels({ palette }) {
7324
- return /* @__PURE__ */ jsxs66("span", { className: "flex h-full gap-1.5 p-1.5", style: { background: palette.canvas }, children: [
7325
- /* @__PURE__ */ jsx99(
7471
+ return /* @__PURE__ */ jsxs67("span", { className: "flex h-full gap-1.5 p-1.5", style: { background: palette.canvas }, children: [
7472
+ /* @__PURE__ */ jsx100(
7326
7473
  "span",
7327
7474
  {
7328
7475
  className: "flex flex-col gap-1.5 p-1.5",
7329
7476
  style: { width: "28%", borderRadius: 5, background: palette.rail },
7330
- children: RAIL_BARS.map((w, i) => /* @__PURE__ */ jsx99(
7477
+ children: RAIL_BARS.map((w, i) => /* @__PURE__ */ jsx100(
7331
7478
  "span",
7332
7479
  {
7333
7480
  className: "rounded-full",
@@ -7337,12 +7484,12 @@ function Panels({ palette }) {
7337
7484
  ))
7338
7485
  }
7339
7486
  ),
7340
- /* @__PURE__ */ jsx99(
7487
+ /* @__PURE__ */ jsx100(
7341
7488
  "span",
7342
7489
  {
7343
7490
  className: "flex flex-1 flex-col gap-1.5 border p-2",
7344
7491
  style: { borderRadius: 5, background: palette.body, borderColor: palette.quiet },
7345
- children: BODY_BARS.map((w, i) => /* @__PURE__ */ jsx99(
7492
+ children: BODY_BARS.map((w, i) => /* @__PURE__ */ jsx100(
7346
7493
  "span",
7347
7494
  {
7348
7495
  className: "rounded-full",
@@ -7356,21 +7503,21 @@ function Panels({ palette }) {
7356
7503
  }
7357
7504
  var CUT = "polygon(0 0, -8px 0, -8px calc(100% + 8px), calc(100% + 8px) calc(100% + 8px), calc(100% + 8px) calc(100% - 16px), 100% calc(100% - 16px))";
7358
7505
  function AutoPanels() {
7359
- return /* @__PURE__ */ jsxs66("span", { className: "relative block h-full", children: [
7360
- /* @__PURE__ */ jsx99("span", { className: "absolute inset-0", children: /* @__PURE__ */ jsx99(Panels, { palette: THEME_SWATCHES.light }) }),
7361
- /* @__PURE__ */ jsx99("span", { className: "absolute inset-0", style: { clipPath: CUT }, children: /* @__PURE__ */ jsx99(Panels, { palette: THEME_SWATCHES.dark }) })
7506
+ return /* @__PURE__ */ jsxs67("span", { className: "relative block h-full", children: [
7507
+ /* @__PURE__ */ jsx100("span", { className: "absolute inset-0", children: /* @__PURE__ */ jsx100(Panels, { palette: THEME_SWATCHES.light }) }),
7508
+ /* @__PURE__ */ jsx100("span", { className: "absolute inset-0", style: { clipPath: CUT }, children: /* @__PURE__ */ jsx100(Panels, { palette: THEME_SWATCHES.dark }) })
7362
7509
  ] });
7363
7510
  }
7364
7511
  var previewClass = "block h-28 overflow-hidden rounded-lg border border-border-default";
7365
7512
  var cardClass = "grid cursor-pointer gap-2 rounded-lg p-1.5 text-left transition-colors duration-fast hover:bg-[var(--hov-bg)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus";
7366
7513
  var TRACK = { gridTemplateColumns: "repeat(auto-fit, minmax(8rem, 1fr))" };
7367
- var Picker = React85.forwardRef(function Picker2({ value, onValueChange, className, ...props }, ref) {
7368
- return /* @__PURE__ */ jsx99("div", { role: "group", "aria-label": "Theme", ...props, ref, className: cn("grid gap-4", className), style: { ...TRACK, ...props.style }, children: OPTIONS.map((o) => {
7514
+ var Picker = React86.forwardRef(function Picker2({ value, onValueChange, className, ...props }, ref) {
7515
+ return /* @__PURE__ */ jsx100("div", { role: "group", "aria-label": "Theme", ...props, ref, className: cn("grid gap-4", className), style: { ...TRACK, ...props.style }, children: OPTIONS.map((o) => {
7369
7516
  const selected = o.value === value;
7370
7517
  return (
7371
7518
  // Not a `Button` (Guidelines/When it isn't a Button): the preview is the control, and
7372
7519
  // `aria-pressed` is what says which one is on.
7373
- /* @__PURE__ */ jsxs66(
7520
+ /* @__PURE__ */ jsxs67(
7374
7521
  "button",
7375
7522
  {
7376
7523
  type: "button",
@@ -7379,8 +7526,8 @@ var Picker = React85.forwardRef(function Picker2({ value, onValueChange, classNa
7379
7526
  onClick: () => onValueChange(o.value),
7380
7527
  className: cardClass,
7381
7528
  children: [
7382
- /* @__PURE__ */ jsx99("span", { className: cn(previewClass, selected && "border-border-strong"), "aria-hidden": true, children: o.value === "system" ? /* @__PURE__ */ jsx99(AutoPanels, {}) : /* @__PURE__ */ jsx99(Panels, { palette: THEME_SWATCHES[o.value] }) }),
7383
- /* @__PURE__ */ jsxs66(
7529
+ /* @__PURE__ */ jsx100("span", { className: cn(previewClass, selected && "border-border-strong"), "aria-hidden": true, children: o.value === "system" ? /* @__PURE__ */ jsx100(AutoPanels, {}) : /* @__PURE__ */ jsx100(Panels, { palette: THEME_SWATCHES[o.value] }) }),
7530
+ /* @__PURE__ */ jsxs67(
7384
7531
  "span",
7385
7532
  {
7386
7533
  className: cn(
@@ -7388,7 +7535,7 @@ var Picker = React85.forwardRef(function Picker2({ value, onValueChange, classNa
7388
7535
  selected ? "font-semibold text-text-primary" : "text-text-secondary"
7389
7536
  ),
7390
7537
  children: [
7391
- /* @__PURE__ */ jsx99(Check12, { className: cn("size-4 shrink-0", !selected && "invisible"), "aria-hidden": true }),
7538
+ /* @__PURE__ */ jsx100(Check13, { className: cn("size-4 shrink-0", !selected && "invisible"), "aria-hidden": true }),
7392
7539
  o.label
7393
7540
  ]
7394
7541
  }
@@ -7400,9 +7547,9 @@ var Picker = React85.forwardRef(function Picker2({ value, onValueChange, classNa
7400
7547
  );
7401
7548
  }) });
7402
7549
  });
7403
- var WiredPicker = React85.forwardRef(function WiredPicker2({ onValueChange, ...props }, ref) {
7550
+ var WiredPicker = React86.forwardRef(function WiredPicker2({ onValueChange, ...props }, ref) {
7404
7551
  const { theme, setTheme } = useTheme();
7405
- return /* @__PURE__ */ jsx99(
7552
+ return /* @__PURE__ */ jsx100(
7406
7553
  Picker,
7407
7554
  {
7408
7555
  ...props,
@@ -7415,22 +7562,22 @@ var WiredPicker = React85.forwardRef(function WiredPicker2({ onValueChange, ...p
7415
7562
  }
7416
7563
  );
7417
7564
  });
7418
- var ThemePicker = React85.forwardRef(function ThemePicker2({ value, onValueChange, ...props }, ref) {
7419
- const controlled = React85.useRef(value !== void 0);
7565
+ var ThemePicker = React86.forwardRef(function ThemePicker2({ value, onValueChange, ...props }, ref) {
7566
+ const controlled = React86.useRef(value !== void 0);
7420
7567
  if (process.env.NODE_ENV !== "production" && controlled.current !== (value !== void 0)) {
7421
7568
  console.warn(
7422
7569
  "[ThemePicker] `value` went from " + (controlled.current ? "set to missing" : "missing to set") + " after mount. The picker stays " + (controlled.current ? "controlled" : "wired to the console theme") + " for its whole life: render it once its value is known, or leave `value` off entirely."
7423
7570
  );
7424
7571
  }
7425
- return controlled.current ? /* @__PURE__ */ jsx99(Picker, { ...props, ref, value: value ?? "system", onValueChange: onValueChange ?? (() => {
7426
- }) }) : /* @__PURE__ */ jsx99(WiredPicker, { ...props, ref, onValueChange });
7572
+ return controlled.current ? /* @__PURE__ */ jsx100(Picker, { ...props, ref, value: value ?? "system", onValueChange: onValueChange ?? (() => {
7573
+ }) }) : /* @__PURE__ */ jsx100(WiredPicker, { ...props, ref, onValueChange });
7427
7574
  });
7428
7575
  ThemePicker.displayName = "ThemePicker";
7429
7576
 
7430
7577
  // src/components/secret-reveal.tsx
7431
- import * as React86 from "react";
7578
+ import * as React87 from "react";
7432
7579
  import { Copy as Copy2, Download } from "lucide-react";
7433
- import { jsx as jsx100, jsxs as jsxs67 } from "react/jsx-runtime";
7580
+ import { jsx as jsx101, jsxs as jsxs68 } from "react/jsx-runtime";
7434
7581
  var asText = (value) => Array.isArray(value) ? value.join("\n") : value;
7435
7582
  var REVEALED = "A secret is on screen and will not be shown again.";
7436
7583
  var REFUSED = "The browser refused the clipboard. Select the value to copy it.";
@@ -7438,15 +7585,15 @@ function SecretValue({ value }) {
7438
7585
  if (Array.isArray(value)) {
7439
7586
  const half = Math.ceil(value.length / 2);
7440
7587
  const columns = [value.slice(0, half), value.slice(half)].filter((column) => column.length > 0);
7441
- return /* @__PURE__ */ jsx100("div", { className: "flex w-fit gap-x-12", children: columns.map((column, index) => (
7588
+ return /* @__PURE__ */ jsx101("div", { className: "flex w-fit gap-x-12", children: columns.map((column, index) => (
7442
7589
  // Neither the columns nor the values inside one are ever reordered, and two identical
7443
7590
  // values in a list are legal, so the index is the key and the value is not.
7444
- /* @__PURE__ */ jsx100("div", { className: "grid gap-y-1.5", children: column.map((line, row) => /* @__PURE__ */ jsx100("code", { className: "font-mono text-sm font-medium tabular-nums text-text-primary", children: line }, row)) }, index)
7591
+ /* @__PURE__ */ jsx101("div", { className: "grid gap-y-1.5", children: column.map((line, row) => /* @__PURE__ */ jsx101("code", { className: "font-mono text-sm font-medium tabular-nums text-text-primary", children: line }, row)) }, index)
7445
7592
  )) });
7446
7593
  }
7447
- return /* @__PURE__ */ jsx100("code", { className: "block break-all font-mono text-sm font-medium text-text-primary", children: value });
7594
+ return /* @__PURE__ */ jsx101("code", { className: "block break-all font-mono text-sm font-medium text-text-primary", children: value });
7448
7595
  }
7449
- var SecretReveal = React86.forwardRef(
7596
+ var SecretReveal = React87.forwardRef(
7450
7597
  ({
7451
7598
  value,
7452
7599
  caption,
@@ -7463,18 +7610,18 @@ var SecretReveal = React86.forwardRef(
7463
7610
  className,
7464
7611
  ...props
7465
7612
  }, ref) => {
7466
- const [takenText, setTakenText] = React86.useState(null);
7467
- const [refusedText, setRefusedText] = React86.useState(null);
7468
- const [announcedFor, setAnnouncedFor] = React86.useState(null);
7469
- const copyRef = React86.useRef(null);
7470
- const captionId = React86.useId();
7613
+ const [takenText, setTakenText] = React87.useState(null);
7614
+ const [refusedText, setRefusedText] = React87.useState(null);
7615
+ const [announcedFor, setAnnouncedFor] = React87.useState(null);
7616
+ const copyRef = React87.useRef(null);
7617
+ const captionId = React87.useId();
7471
7618
  const text = asText(value);
7472
7619
  const empty = text.length === 0;
7473
7620
  const taken = takenText === text;
7474
7621
  const refused = refusedText === text;
7475
- React86.useEffect(() => setAnnouncedFor(text), [text]);
7622
+ React87.useEffect(() => setAnnouncedFor(text), [text]);
7476
7623
  const announced = announcedFor === text ? REVEALED : "";
7477
- React86.useEffect(() => {
7624
+ React87.useEffect(() => {
7478
7625
  if (autoFocus) copyRef.current?.focus();
7479
7626
  }, [autoFocus]);
7480
7627
  const reportTaken = () => {
@@ -7500,12 +7647,12 @@ var SecretReveal = React86.forwardRef(
7500
7647
  reportTaken();
7501
7648
  onDownload?.();
7502
7649
  };
7503
- return /* @__PURE__ */ jsx100("div", { ref, className: cn("overflow-hidden rounded-lg bg-bg-sunken", className), ...props, children: /* @__PURE__ */ jsx100("div", { className: highlightClassName, ref: highlightRef, children: /* @__PURE__ */ jsxs67("div", { className: "grid gap-3 rounded-lg border border-border-strong px-4 py-3", children: [
7504
- /* @__PURE__ */ jsx100("span", { role: "status", className: "sr-only", children: announced }),
7505
- /* @__PURE__ */ jsx100("div", { id: captionId, className: "text-sm text-text-secondary", children: caption }),
7506
- /* @__PURE__ */ jsx100(SecretValue, { value }),
7507
- /* @__PURE__ */ jsxs67("div", { className: "flex flex-wrap items-center gap-2", children: [
7508
- /* @__PURE__ */ jsx100(
7650
+ return /* @__PURE__ */ jsx101("div", { ref, className: cn("overflow-hidden rounded-lg bg-bg-sunken", className), ...props, children: /* @__PURE__ */ jsx101("div", { className: highlightClassName, ref: highlightRef, children: /* @__PURE__ */ jsxs68("div", { className: "grid gap-3 rounded-lg border border-border-strong px-4 py-3", children: [
7651
+ /* @__PURE__ */ jsx101("span", { role: "status", className: "sr-only", children: announced }),
7652
+ /* @__PURE__ */ jsx101("div", { id: captionId, className: "text-sm text-text-secondary", children: caption }),
7653
+ /* @__PURE__ */ jsx101(SecretValue, { value }),
7654
+ /* @__PURE__ */ jsxs68("div", { className: "flex flex-wrap items-center gap-2", children: [
7655
+ /* @__PURE__ */ jsx101(
7509
7656
  Button,
7510
7657
  {
7511
7658
  ref: copyRef,
@@ -7513,12 +7660,12 @@ var SecretReveal = React86.forwardRef(
7513
7660
  "aria-describedby": captionId,
7514
7661
  variant: "outline",
7515
7662
  size: "sm",
7516
- icon: /* @__PURE__ */ jsx100(Copy2, {}),
7663
+ icon: /* @__PURE__ */ jsx101(Copy2, {}),
7517
7664
  children: copyLabel ?? (Array.isArray(value) ? "Copy all" : "Copy")
7518
7665
  }
7519
7666
  ),
7520
- onDownload && /* @__PURE__ */ jsx100(Button, { onClick: download, "aria-describedby": captionId, variant: "outline", size: "sm", icon: /* @__PURE__ */ jsx100(Download, {}), children: downloadLabel }),
7521
- /* @__PURE__ */ jsx100(
7667
+ onDownload && /* @__PURE__ */ jsx101(Button, { onClick: download, "aria-describedby": captionId, variant: "outline", size: "sm", icon: /* @__PURE__ */ jsx101(Download, {}), children: downloadLabel }),
7668
+ /* @__PURE__ */ jsx101(
7522
7669
  Button,
7523
7670
  {
7524
7671
  onClick: onConfirm,
@@ -7529,17 +7676,17 @@ var SecretReveal = React86.forwardRef(
7529
7676
  }
7530
7677
  )
7531
7678
  ] }),
7532
- refused && /* @__PURE__ */ jsx100("div", { role: "status", className: "text-xs text-text-tertiary", children: REFUSED })
7679
+ refused && /* @__PURE__ */ jsx101("div", { role: "status", className: "text-xs text-text-tertiary", children: REFUSED })
7533
7680
  ] }) }) });
7534
7681
  }
7535
7682
  );
7536
7683
  SecretReveal.displayName = "SecretReveal";
7537
7684
 
7538
7685
  // src/components/star-rating.tsx
7539
- import * as React87 from "react";
7686
+ import * as React88 from "react";
7540
7687
  import * as RadioGroupPrimitive2 from "@radix-ui/react-radio-group";
7541
7688
  import { Star } from "lucide-react";
7542
- import { jsx as jsx101 } from "react/jsx-runtime";
7689
+ import { jsx as jsx102 } from "react/jsx-runtime";
7543
7690
  var STAR_BOX = {
7544
7691
  sm: "size-4",
7545
7692
  md: "size-5",
@@ -7551,7 +7698,7 @@ var ROW_GAP = {
7551
7698
  lg: "gap-1.5"
7552
7699
  };
7553
7700
  var defaultItemLabel = (value, max) => `${value} out of ${max} stars`;
7554
- var StarGlyph = ({ filled, size }) => /* @__PURE__ */ jsx101(
7701
+ var StarGlyph = ({ filled, size }) => /* @__PURE__ */ jsx102(
7555
7702
  Star,
7556
7703
  {
7557
7704
  "aria-hidden": "true",
@@ -7562,7 +7709,7 @@ var StarGlyph = ({ filled, size }) => /* @__PURE__ */ jsx101(
7562
7709
  )
7563
7710
  }
7564
7711
  );
7565
- var StarRating = React87.forwardRef(
7712
+ var StarRating = React88.forwardRef(
7566
7713
  ({
7567
7714
  className,
7568
7715
  value,
@@ -7577,27 +7724,27 @@ var StarRating = React87.forwardRef(
7577
7724
  ...props
7578
7725
  }, ref) => {
7579
7726
  const stars = Array.from({ length: max }, (_, index) => index + 1);
7580
- const [mirror, setMirror] = React87.useState(defaultValue ?? 0);
7727
+ const [mirror, setMirror] = React88.useState(defaultValue ?? 0);
7581
7728
  const selected = value ?? mirror;
7582
- const [preview, setPreview] = React87.useState(null);
7729
+ const [preview, setPreview] = React88.useState(null);
7583
7730
  const shown = preview ?? selected;
7584
7731
  const commit = (next) => {
7585
7732
  setMirror(next);
7586
7733
  onValueChange?.(next);
7587
7734
  };
7588
7735
  if (readOnly) {
7589
- return /* @__PURE__ */ jsx101(
7736
+ return /* @__PURE__ */ jsx102(
7590
7737
  "div",
7591
7738
  {
7592
7739
  ref,
7593
7740
  role: "img",
7594
7741
  "aria-label": props["aria-label"] ?? itemLabel(selected, max),
7595
7742
  className: cn("inline-flex items-center", ROW_GAP[size], className),
7596
- children: stars.map((star) => /* @__PURE__ */ jsx101(StarGlyph, { filled: star <= selected, size }, star))
7743
+ children: stars.map((star) => /* @__PURE__ */ jsx102(StarGlyph, { filled: star <= selected, size }, star))
7597
7744
  }
7598
7745
  );
7599
7746
  }
7600
- return /* @__PURE__ */ jsx101(
7747
+ return /* @__PURE__ */ jsx102(
7601
7748
  RadioGroupPrimitive2.Root,
7602
7749
  {
7603
7750
  ref,
@@ -7614,7 +7761,7 @@ var StarRating = React87.forwardRef(
7614
7761
  orientation: "horizontal",
7615
7762
  loop: false,
7616
7763
  className: cn("inline-flex items-center", ROW_GAP[size], className),
7617
- children: stars.map((star) => /* @__PURE__ */ jsx101(
7764
+ children: stars.map((star) => /* @__PURE__ */ jsx102(
7618
7765
  RadioGroupPrimitive2.Item,
7619
7766
  {
7620
7767
  value: String(star),
@@ -7630,7 +7777,7 @@ var StarRating = React87.forwardRef(
7630
7777
  "rounded-md p-0.5 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus",
7631
7778
  "disabled:pointer-events-none disabled:opacity-50"
7632
7779
  ),
7633
- children: /* @__PURE__ */ jsx101(StarGlyph, { filled: star <= shown, size })
7780
+ children: /* @__PURE__ */ jsx102(StarGlyph, { filled: star <= shown, size })
7634
7781
  },
7635
7782
  star
7636
7783
  ))
@@ -7641,16 +7788,16 @@ var StarRating = React87.forwardRef(
7641
7788
  StarRating.displayName = "StarRating";
7642
7789
 
7643
7790
  // src/components/rating-scale.tsx
7644
- import * as React88 from "react";
7791
+ import * as React89 from "react";
7645
7792
  import * as RadioGroupPrimitive3 from "@radix-ui/react-radio-group";
7646
- import { jsx as jsx102, jsxs as jsxs68 } from "react/jsx-runtime";
7793
+ import { jsx as jsx103, jsxs as jsxs69 } from "react/jsx-runtime";
7647
7794
  var SLOT_BOX = {
7648
7795
  sm: "h-8 min-w-8 px-2 text-xs",
7649
7796
  md: "h-9 min-w-9 px-2 text-sm",
7650
7797
  lg: "h-11 min-w-11 px-3 text-base"
7651
7798
  };
7652
7799
  var defaultItemLabel2 = (value, _min, max) => `${value} out of ${max}`;
7653
- var RatingScale = React88.forwardRef(
7800
+ var RatingScale = React89.forwardRef(
7654
7801
  ({
7655
7802
  className,
7656
7803
  value,
@@ -7666,9 +7813,9 @@ var RatingScale = React88.forwardRef(
7666
7813
  ...props
7667
7814
  }, ref) => {
7668
7815
  const slots = Array.from({ length: Math.max(0, max - min + 1) }, (_, index) => min + index);
7669
- const [mirror, setMirror] = React88.useState(defaultValue);
7816
+ const [mirror, setMirror] = React89.useState(defaultValue);
7670
7817
  const selected = value ?? mirror;
7671
- const row = /* @__PURE__ */ jsx102("div", { className: cn("flex flex-wrap items-center gap-1.5", !endLabels && className), children: slots.map((slot) => {
7818
+ const row = /* @__PURE__ */ jsx103("div", { className: cn("flex flex-wrap items-center gap-1.5", !endLabels && className), children: slots.map((slot) => {
7672
7819
  const isSelected = slot === selected;
7673
7820
  const box = cn(
7674
7821
  "inline-flex items-center justify-center rounded-md border tabular-nums transition-colors duration-fast",
@@ -7676,9 +7823,9 @@ var RatingScale = React88.forwardRef(
7676
7823
  isSelected ? "border-border-strong font-semibold text-text-primary" : "border-field-border font-medium text-text-secondary"
7677
7824
  );
7678
7825
  if (readOnly) {
7679
- return /* @__PURE__ */ jsx102("span", { className: box, "aria-hidden": "true", children: slot }, slot);
7826
+ return /* @__PURE__ */ jsx103("span", { className: box, "aria-hidden": "true", children: slot }, slot);
7680
7827
  }
7681
- return /* @__PURE__ */ jsx102(
7828
+ return /* @__PURE__ */ jsx103(
7682
7829
  RadioGroupPrimitive3.Item,
7683
7830
  {
7684
7831
  value: String(slot),
@@ -7697,12 +7844,12 @@ var RatingScale = React88.forwardRef(
7697
7844
  slot
7698
7845
  );
7699
7846
  }) });
7700
- const ends = endLabels ? /* @__PURE__ */ jsxs68("div", { className: "flex items-center justify-between text-xs text-text-tertiary", children: [
7701
- /* @__PURE__ */ jsx102("span", { children: endLabels.low }),
7702
- /* @__PURE__ */ jsx102("span", { children: endLabels.high })
7847
+ const ends = endLabels ? /* @__PURE__ */ jsxs69("div", { className: "flex items-center justify-between text-xs text-text-tertiary", children: [
7848
+ /* @__PURE__ */ jsx103("span", { children: endLabels.low }),
7849
+ /* @__PURE__ */ jsx103("span", { children: endLabels.high })
7703
7850
  ] }) : null;
7704
7851
  if (readOnly) {
7705
- return /* @__PURE__ */ jsxs68(
7852
+ return /* @__PURE__ */ jsxs69(
7706
7853
  "div",
7707
7854
  {
7708
7855
  ref,
@@ -7716,7 +7863,7 @@ var RatingScale = React88.forwardRef(
7716
7863
  }
7717
7864
  );
7718
7865
  }
7719
- const group = /* @__PURE__ */ jsx102(
7866
+ const group = /* @__PURE__ */ jsx103(
7720
7867
  RadioGroupPrimitive3.Root,
7721
7868
  {
7722
7869
  ref,
@@ -7735,7 +7882,7 @@ var RatingScale = React88.forwardRef(
7735
7882
  }
7736
7883
  );
7737
7884
  if (!endLabels) return group;
7738
- return /* @__PURE__ */ jsxs68("div", { className: cn("flex flex-col gap-1.5", className), children: [
7885
+ return /* @__PURE__ */ jsxs69("div", { className: cn("flex flex-col gap-1.5", className), children: [
7739
7886
  group,
7740
7887
  ends
7741
7888
  ] });
@@ -7936,6 +8083,7 @@ export {
7936
8083
  NotificationSettings,
7937
8084
  NotificationToast,
7938
8085
  NotificationToaster,
8086
+ OnboardingScreenShell,
7939
8087
  OptionCard,
7940
8088
  OrgProductSwitcher,
7941
8089
  OrganizationOnboardingForm,
@@ -7980,6 +8128,7 @@ export {
7980
8128
  SheetTitle,
7981
8129
  SheetTrigger,
7982
8130
  SidebarBackHeader,
8131
+ SidebarDrawer,
7983
8132
  SidebarProductHeader,
7984
8133
  Skeleton,
7985
8134
  Slider,
@@ -8027,6 +8176,7 @@ export {
8027
8176
  isNotificationSettled,
8028
8177
  navigationMenuTriggerStyle,
8029
8178
  productStatusBadge,
8179
+ railToggleLabel,
8030
8180
  severityBadgeVariant,
8031
8181
  severityLabels,
8032
8182
  statusDotVariants,
@@ -8037,5 +8187,6 @@ export {
8037
8187
  useFreshHighlight,
8038
8188
  useIsMobile,
8039
8189
  useSidebar,
8190
+ useSidebarDismiss,
8040
8191
  useTheme
8041
8192
  };