@assure-one/design-system 1.23.0 → 1.26.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
@@ -2967,54 +2967,71 @@ function deriveFileType(name) {
2967
2967
  return name.slice(dot + 1).toUpperCase();
2968
2968
  }
2969
2969
  var AttachmentChip = forwardRef(
2970
- function AttachmentChip2({ name, fileType, meta, onView, onDownload, href, variant, className, ...props }, ref) {
2970
+ function AttachmentChip2({ name, fileType, meta, onView, onDownload, href, actions, variant, className, ...props }, ref) {
2971
2971
  const resolvedType = fileType ?? deriveFileType(name);
2972
2972
  const onAccent = variant === "onAccent";
2973
2973
  const actionClassName = onAccent ? "text-fg-on-brand hover:bg-white/20 hover:text-fg-on-brand" : void 0;
2974
2974
  const showView = Boolean(onView) || Boolean(href);
2975
- return /* @__PURE__ */ jsxs("div", { ref, className: cn(attachmentChipVariants({ variant }), className), ...props, children: [
2976
- /* @__PURE__ */ jsx(FileTypeBadge, { format: resolvedType, size: "md", className: "shrink-0" }),
2977
- /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
2978
- /* @__PURE__ */ jsx("p", { className: cn("truncate text-sm font-medium", onAccent ? "text-fg-on-brand" : "text-fg"), children: name }),
2979
- meta && /* @__PURE__ */ jsx("p", { className: cn("truncate text-xs", onAccent ? "text-fg-on-brand/75" : "text-fg-3"), children: meta })
2980
- ] }),
2981
- (showView || onDownload) && /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-0.5", children: [
2982
- showView && (onView ? /* @__PURE__ */ jsx(
2983
- Button,
2984
- {
2985
- type: "button",
2986
- variant: "ghost",
2987
- size: "icon-sm",
2988
- "aria-label": `View ${name}`,
2989
- onClick: onView,
2990
- className: actionClassName,
2991
- children: /* @__PURE__ */ jsx(EyeIcon, { size: 16 })
2992
- }
2993
- ) : /* @__PURE__ */ jsx(
2994
- Button,
2995
- {
2996
- asChild: true,
2997
- variant: "ghost",
2998
- size: "icon-sm",
2999
- "aria-label": `View ${name}`,
3000
- className: actionClassName,
3001
- children: /* @__PURE__ */ jsx("a", { href, target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ jsx(EyeIcon, { size: 16 }) })
3002
- }
3003
- )),
3004
- onDownload && /* @__PURE__ */ jsx(
3005
- Button,
3006
- {
3007
- type: "button",
3008
- variant: "ghost",
3009
- size: "icon-sm",
3010
- "aria-label": `Download ${name}`,
3011
- onClick: onDownload,
3012
- className: actionClassName,
3013
- children: /* @__PURE__ */ jsx(DownloadIcon, { size: 16 })
3014
- }
3015
- )
3016
- ] })
3017
- ] });
2975
+ return /* @__PURE__ */ jsxs(
2976
+ "div",
2977
+ {
2978
+ ref,
2979
+ className: cn(
2980
+ attachmentChipVariants({ variant }),
2981
+ // Scoped group so `actions` nodes can react to the variant. The chip
2982
+ // resolves its own atoms in JS, but consumer-passed children are
2983
+ // outside that — a group selector is the only hook they get.
2984
+ "group/attachment-chip",
2985
+ className
2986
+ ),
2987
+ ...props,
2988
+ "data-variant": onAccent ? "onAccent" : "default",
2989
+ children: [
2990
+ /* @__PURE__ */ jsx(FileTypeBadge, { format: resolvedType, size: "md", className: "shrink-0" }),
2991
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
2992
+ /* @__PURE__ */ jsx("p", { className: cn("truncate text-sm font-medium", onAccent ? "text-fg-on-brand" : "text-fg"), children: name }),
2993
+ meta && /* @__PURE__ */ jsx("p", { className: cn("truncate text-xs", onAccent ? "text-fg-on-brand/75" : "text-fg-3"), children: meta })
2994
+ ] }),
2995
+ (showView || onDownload || actions) && /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-0.5", children: [
2996
+ showView && (onView ? /* @__PURE__ */ jsx(
2997
+ Button,
2998
+ {
2999
+ type: "button",
3000
+ variant: "ghost",
3001
+ size: "icon-sm",
3002
+ "aria-label": `View ${name}`,
3003
+ onClick: onView,
3004
+ className: actionClassName,
3005
+ children: /* @__PURE__ */ jsx(EyeIcon, { size: 16 })
3006
+ }
3007
+ ) : /* @__PURE__ */ jsx(
3008
+ Button,
3009
+ {
3010
+ asChild: true,
3011
+ variant: "ghost",
3012
+ size: "icon-sm",
3013
+ "aria-label": `View ${name}`,
3014
+ className: actionClassName,
3015
+ children: /* @__PURE__ */ jsx("a", { href, target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ jsx(EyeIcon, { size: 16 }) })
3016
+ }
3017
+ )),
3018
+ onDownload && /* @__PURE__ */ jsx(
3019
+ Button,
3020
+ {
3021
+ type: "button",
3022
+ variant: "ghost",
3023
+ size: "icon-sm",
3024
+ "aria-label": `Download ${name}`,
3025
+ onClick: onDownload,
3026
+ className: actionClassName,
3027
+ children: /* @__PURE__ */ jsx(DownloadIcon, { size: 16 })
3028
+ }
3029
+ ),
3030
+ actions
3031
+ ] })
3032
+ ]
3033
+ }
3034
+ );
3018
3035
  }
3019
3036
  );
3020
3037
  AttachmentChip.displayName = "AttachmentChip";
@@ -5619,8 +5636,14 @@ var inputVariants = cva(
5619
5636
  }
5620
5637
  }
5621
5638
  );
5639
+ var floatingLabelSize = {
5640
+ sm: "text-xs",
5641
+ md: "text-[13px]",
5642
+ lg: "text-sm"
5643
+ };
5622
5644
  var Input = forwardRef(function Input2({
5623
5645
  label,
5646
+ floatingLabel,
5624
5647
  error,
5625
5648
  prefixIcon,
5626
5649
  suffixIcon,
@@ -5629,6 +5652,7 @@ var Input = forwardRef(function Input2({
5629
5652
  type = "text",
5630
5653
  className,
5631
5654
  id: providedId,
5655
+ placeholder,
5632
5656
  ...props
5633
5657
  }, ref) {
5634
5658
  const generatedId = useId();
@@ -5637,8 +5661,10 @@ var Input = forwardRef(function Input2({
5637
5661
  const [showPassword, setShowPassword] = useState(false);
5638
5662
  const isPassword = type === "password";
5639
5663
  const inputType = isPassword && showPassword ? "text" : type;
5664
+ const isFloating = !!floatingLabel && !!label;
5665
+ const resolvedPlaceholder = isFloating ? placeholder ?? " " : placeholder;
5640
5666
  return /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
5641
- label && /* @__PURE__ */ jsx("label", { htmlFor: id, className: "text-fg mb-1.5 block text-[13px] leading-none font-medium", children: label }),
5667
+ label && !isFloating && /* @__PURE__ */ jsx("label", { htmlFor: id, className: "text-fg mb-1.5 block text-[13px] leading-none font-medium", children: label }),
5642
5668
  /* @__PURE__ */ jsxs("div", { className: "relative", children: [
5643
5669
  prefixIcon && /* @__PURE__ */ jsx(
5644
5670
  "span",
@@ -5654,17 +5680,45 @@ var Input = forwardRef(function Input2({
5654
5680
  ref,
5655
5681
  id,
5656
5682
  type: inputType,
5683
+ placeholder: resolvedPlaceholder,
5657
5684
  "aria-invalid": !!error || void 0,
5658
5685
  "aria-describedby": error ? errorId : void 0,
5659
5686
  className: cn(
5660
5687
  inputVariants({ variant, inputSize }),
5661
5688
  prefixIcon && "pl-9",
5662
5689
  (suffixIcon || isPassword) && "pr-9",
5690
+ isFloating && "peer placeholder:text-transparent focus:placeholder:text-fg-4",
5663
5691
  className
5664
5692
  ),
5665
5693
  ...props
5666
5694
  }
5667
5695
  ),
5696
+ isFloating && // Rendered after the input because `peer-*` compiles to a sibling
5697
+ // combinator; absolute positioning keeps the visual order intact.
5698
+ /* @__PURE__ */ jsx(
5699
+ "label",
5700
+ {
5701
+ htmlFor: id,
5702
+ className: cn(
5703
+ "pointer-events-none absolute left-3 origin-left px-1 leading-none",
5704
+ "bg-surface text-fg-4",
5705
+ "top-1/2 -translate-y-1/2",
5706
+ "transition-[top,transform,color] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
5707
+ "motion-reduce:transition-none",
5708
+ // Floated by focus or by content. Both branches declare the same
5709
+ // values, so their relative order in the emitted CSS is moot.
5710
+ "peer-focus:top-0 peer-focus:scale-[0.85]",
5711
+ "peer-[:not(:placeholder-shown)]:top-0 peer-[:not(:placeholder-shown)]:scale-[0.85]",
5712
+ // Colours are split on `:not(:focus)` so the two rules can never
5713
+ // both match, which would otherwise be an ordering coin flip.
5714
+ "peer-focus:text-brand",
5715
+ "peer-[:not(:placeholder-shown):not(:focus)]:text-fg-3",
5716
+ floatingLabelSize[inputSize ?? "md"],
5717
+ prefixIcon && "left-9"
5718
+ ),
5719
+ children: label
5720
+ }
5721
+ ),
5668
5722
  isPassword && /* @__PURE__ */ jsx(
5669
5723
  "button",
5670
5724
  {
@@ -6962,7 +7016,7 @@ function CountrySelect({
6962
7016
  type: "button",
6963
7017
  disabled,
6964
7018
  "aria-label": "Select country code",
6965
- className: "flex h-10 w-[90px] shrink-0 items-center gap-1.5 rounded-lg 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",
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",
6966
7020
  children: [
6967
7021
  /* @__PURE__ */ jsx(CountryFlag, { iso: selected.iso }),
6968
7022
  /* @__PURE__ */ jsx("span", { className: "text-xs tabular-nums text-muted-foreground", children: selected.dialCode }),
@@ -6977,7 +7031,7 @@ function CountrySelect({
6977
7031
  align: "start",
6978
7032
  sideOffset: 4,
6979
7033
  style: { zIndex: 9999, minWidth: 248 },
6980
- className: "rounded-xl border border-border bg-popover shadow-xl outline-none",
7034
+ className: "rounded-card border border-border bg-popover shadow-xl outline-none",
6981
7035
  onOpenAutoFocus: (e) => {
6982
7036
  e.preventDefault();
6983
7037
  searchRef.current?.focus({ preventScroll: true });
@@ -6987,7 +7041,7 @@ function CountrySelect({
6987
7041
  if (e.key !== "Escape") e.stopPropagation();
6988
7042
  },
6989
7043
  children: [
6990
- /* @__PURE__ */ jsx("div", { className: "rounded-t-xl border-b border-border px-3 py-2.5", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 rounded-lg border border-input bg-input-background px-2.5", 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: [
6991
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: [
6992
7046
  /* @__PURE__ */ jsx("circle", { cx: "11", cy: "11", r: "8" }),
6993
7047
  /* @__PURE__ */ jsx("path", { d: "m21 21-4.35-4.35" })
@@ -7007,7 +7061,7 @@ function CountrySelect({
7007
7061
  /* @__PURE__ */ jsx(
7008
7062
  "div",
7009
7063
  {
7010
- className: "max-h-56 overflow-y-auto rounded-b-xl",
7064
+ className: "rounded-b-card max-h-56 overflow-y-auto",
7011
7065
  style: { overscrollBehavior: "contain" },
7012
7066
  onWheel: (e) => e.stopPropagation(),
7013
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(
@@ -7786,6 +7840,7 @@ function SearchSelect({
7786
7840
  return order.map((g) => [g, byGroup.get(g)]);
7787
7841
  }, [filtered]);
7788
7842
  const hasGroups = React39.useMemo(() => groups.some(([g]) => g != null), [groups]);
7843
+ const hasLeadingDot = React39.useMemo(() => options.some((o) => !!o.color), [options]);
7789
7844
  const pinnedSet = React39.useMemo(() => new Set(pinnedGroups ?? []), [pinnedGroups]);
7790
7845
  const chips = React39.useMemo(() => {
7791
7846
  if (!groupFilter || !hasGroups) return [];
@@ -8098,7 +8153,7 @@ function SearchSelect({
8098
8153
  style: { backgroundColor: option.color },
8099
8154
  "aria-hidden": "true"
8100
8155
  }
8101
- ) : /* @__PURE__ */ jsx(
8156
+ ) : hasLeadingDot && /* @__PURE__ */ jsx(
8102
8157
  CheckIcon,
8103
8158
  {
8104
8159
  className: "size-4 shrink-0 text-transparent",
@@ -18190,6 +18245,401 @@ function SignatureEditor({
18190
18245
  ] });
18191
18246
  }
18192
18247
  SignatureEditor.displayName = "SignatureEditor";
18248
+ var SEARCH_THRESHOLD = 8;
18249
+ var HOVER_OPEN_MS = 90;
18250
+ var HOVER_CLOSE_MS = 220;
18251
+ var FLYOUT_WIDTH = 224;
18252
+ var DEFAULT_GUTTER_PX = 24;
18253
+ function DisplayMenu({
18254
+ sections,
18255
+ onReset,
18256
+ isAtDefault,
18257
+ tooltip = "Filters, grouping, ordering, columns",
18258
+ dataTour,
18259
+ triggerIcon,
18260
+ triggerLabel = "Display",
18261
+ className,
18262
+ gutterPx = DEFAULT_GUTTER_PX
18263
+ }) {
18264
+ const [open, setOpen] = useState(false);
18265
+ const [openKey, setOpenKey] = useState(null);
18266
+ const [flyout, setFlyout] = useState({
18267
+ top: 0,
18268
+ side: "left"
18269
+ });
18270
+ const [panelShift, setPanelShift] = useState(0);
18271
+ const [rootQuery, setRootQuery] = useState("");
18272
+ const [sectionQuery, setSectionQuery] = useState("");
18273
+ const panelRef = useRef(null);
18274
+ const triggerRef = useRef(null);
18275
+ const rowRefs = useRef(/* @__PURE__ */ new Map());
18276
+ const openTimer = useRef(null);
18277
+ const closeTimer = useRef(null);
18278
+ const flyoutRef = useRef(null);
18279
+ const clearTimers = useCallback(() => {
18280
+ if (openTimer.current) clearTimeout(openTimer.current);
18281
+ if (closeTimer.current) clearTimeout(closeTimer.current);
18282
+ openTimer.current = null;
18283
+ closeTimer.current = null;
18284
+ }, []);
18285
+ useEffect(() => clearTimers, [clearTimers]);
18286
+ const positionFor = useCallback((key) => {
18287
+ const panel = panelRef.current;
18288
+ const row = rowRefs.current.get(key);
18289
+ if (!panel || !row) return;
18290
+ const panelRect = panel.getBoundingClientRect();
18291
+ const rowRect = row.getBoundingClientRect();
18292
+ const maxTop = Math.max(0, window.innerHeight - panelRect.top - 24 - 120);
18293
+ const top = Math.min(Math.max(rowRect.top - panelRect.top - 4, 0), maxTop);
18294
+ const side = panelRect.left >= FLYOUT_WIDTH + 16 ? "left" : "right";
18295
+ setFlyout({ top, side });
18296
+ }, []);
18297
+ const openSection = useCallback(
18298
+ (key) => {
18299
+ clearTimers();
18300
+ positionFor(key);
18301
+ setOpenKey(key);
18302
+ setSectionQuery("");
18303
+ },
18304
+ [clearTimers, positionFor]
18305
+ );
18306
+ const scheduleOpen = useCallback(
18307
+ (key) => {
18308
+ clearTimers();
18309
+ if (key === openKey) return;
18310
+ if (openKey !== null) {
18311
+ openSection(key);
18312
+ return;
18313
+ }
18314
+ openTimer.current = setTimeout(() => openSection(key), HOVER_OPEN_MS);
18315
+ },
18316
+ [clearTimers, openKey, openSection]
18317
+ );
18318
+ const scheduleClose = useCallback(() => {
18319
+ clearTimers();
18320
+ closeTimer.current = setTimeout(() => setOpenKey(null), HOVER_CLOSE_MS);
18321
+ }, [clearTimers]);
18322
+ useEffect(() => {
18323
+ if (!open) {
18324
+ clearTimers();
18325
+ setOpenKey(null);
18326
+ setRootQuery("");
18327
+ setSectionQuery("");
18328
+ setPanelShift(0);
18329
+ }
18330
+ }, [open, clearTimers]);
18331
+ useEffect(() => {
18332
+ if (!open) return;
18333
+ const reposition = () => {
18334
+ const trigger = triggerRef.current;
18335
+ if (!trigger) return;
18336
+ const viewport = document.documentElement.clientWidth;
18337
+ const shift = viewport - gutterPx - trigger.getBoundingClientRect().right;
18338
+ setPanelShift(Math.max(0, Math.round(shift)));
18339
+ };
18340
+ reposition();
18341
+ window.addEventListener("resize", reposition);
18342
+ return () => window.removeEventListener("resize", reposition);
18343
+ }, [open, gutterPx]);
18344
+ const activeSection = useMemo(
18345
+ () => sections.find((s) => s.key === openKey) ?? null,
18346
+ [sections, openKey]
18347
+ );
18348
+ const rootRows = useMemo(() => {
18349
+ const q = rootQuery.trim().toLowerCase();
18350
+ if (!q) return sections.map((section) => ({ kind: "section", section }));
18351
+ const rows = [];
18352
+ for (const section of sections) {
18353
+ if (section.label.toLowerCase().includes(q)) rows.push({ kind: "section", section });
18354
+ }
18355
+ for (const section of sections) {
18356
+ if (section.content) continue;
18357
+ for (const option of section.options) {
18358
+ if (option.label.toLowerCase().includes(q)) rows.push({ kind: "option", section, option });
18359
+ }
18360
+ }
18361
+ return rows;
18362
+ }, [sections, rootQuery]);
18363
+ const sectionRows = useMemo(() => {
18364
+ if (!activeSection) return [];
18365
+ const q = sectionQuery.trim().toLowerCase();
18366
+ return q ? activeSection.options.filter((o) => o.label.toLowerCase().includes(q)) : activeSection.options;
18367
+ }, [activeSection, sectionQuery]);
18368
+ const showFlyoutSearch = !!activeSection && !activeSection.content && (activeSection.searchable ?? activeSection.options.length > SEARCH_THRESHOLD);
18369
+ const anySelected = sections.some((s) => s.mode === "multi" && s.selected.size > 0);
18370
+ const showDot = !isAtDefault || anySelected;
18371
+ return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
18372
+ /* @__PURE__ */ jsxs(Tooltip, { delayMs: 300, children: [
18373
+ /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
18374
+ Button,
18375
+ {
18376
+ ref: triggerRef,
18377
+ variant: "outline",
18378
+ size: "sm",
18379
+ "aria-label": showDot ? `${triggerLabel} (customised)` : triggerLabel,
18380
+ "data-tour": dataTour,
18381
+ className: cn("relative shrink-0", className),
18382
+ children: [
18383
+ triggerIcon,
18384
+ triggerLabel,
18385
+ showDot && /* @__PURE__ */ jsx(
18386
+ "span",
18387
+ {
18388
+ className: "absolute -right-1 -top-1 size-2 rounded-full bg-foreground",
18389
+ "aria-hidden": "true"
18390
+ }
18391
+ )
18392
+ ]
18393
+ }
18394
+ ) }) }),
18395
+ /* @__PURE__ */ jsx(TooltipContent, { children: tooltip })
18396
+ ] }),
18397
+ /* @__PURE__ */ jsx(
18398
+ PopoverContent,
18399
+ {
18400
+ align: "end",
18401
+ sideOffset: 6,
18402
+ style: panelShift ? { transform: `translateX(${panelShift}px)` } : void 0,
18403
+ className: "w-64 overflow-visible p-0",
18404
+ onKeyDown: (e) => {
18405
+ if (e.key === "Escape" && openKey) {
18406
+ e.preventDefault();
18407
+ e.stopPropagation();
18408
+ setOpenKey(null);
18409
+ }
18410
+ },
18411
+ children: /* @__PURE__ */ jsxs("div", { ref: panelRef, className: "relative", children: [
18412
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 border-b border-border px-2.5 py-1.5", children: [
18413
+ /* @__PURE__ */ jsx(SearchIcon, { size: 13, className: "shrink-0 text-muted-foreground", "aria-hidden": "true" }),
18414
+ /* @__PURE__ */ jsx(
18415
+ "input",
18416
+ {
18417
+ type: "text",
18418
+ value: rootQuery,
18419
+ onChange: (e) => setRootQuery(e.target.value),
18420
+ placeholder: "Filter\u2026",
18421
+ "aria-label": "Filter options and values",
18422
+ className: "h-6 w-full bg-transparent text-[13px] text-foreground outline-none placeholder:text-muted-foreground"
18423
+ }
18424
+ )
18425
+ ] }),
18426
+ /* @__PURE__ */ jsx("div", { role: "menu", "aria-label": triggerLabel, className: "max-h-80 overflow-y-auto p-1", children: rootRows.length === 0 ? /* @__PURE__ */ jsx(EmptyRow, {}) : rootRows.map((row) => {
18427
+ if (row.kind === "option") {
18428
+ const { section: section2, option } = row;
18429
+ const isActive = section2.selected.has(option.key);
18430
+ const isMulti = section2.mode === "multi";
18431
+ return /* @__PURE__ */ jsxs(
18432
+ "button",
18433
+ {
18434
+ type: "button",
18435
+ role: isMulti ? "menuitemcheckbox" : "menuitemradio",
18436
+ "aria-checked": isActive,
18437
+ onMouseEnter: () => {
18438
+ clearTimers();
18439
+ setOpenKey(null);
18440
+ },
18441
+ onClick: () => section2.onSelect(option.key),
18442
+ 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",
18443
+ children: [
18444
+ section2.icon && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-muted-foreground", "aria-hidden": "true", children: section2.icon }),
18445
+ /* @__PURE__ */ jsx("span", { className: "shrink-0 truncate text-muted-foreground", children: section2.label }),
18446
+ /* @__PURE__ */ jsx(
18447
+ ChevronRightIcon,
18448
+ {
18449
+ size: 12,
18450
+ className: "shrink-0 text-muted-foreground",
18451
+ "aria-hidden": "true"
18452
+ }
18453
+ ),
18454
+ /* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-foreground", children: option.label }),
18455
+ isActive && /* @__PURE__ */ jsx(CheckIcon, { size: 14, className: "shrink-0 text-brand" })
18456
+ ]
18457
+ },
18458
+ `${section2.key}:${option.key}`
18459
+ );
18460
+ }
18461
+ const { section } = row;
18462
+ const count = section.selected.size;
18463
+ const valueLabel = section.summary ?? (section.mode === "single" ? section.options.find((o) => section.selected.has(o.key))?.label ?? "" : "");
18464
+ const isOpen = section.key === openKey;
18465
+ return (
18466
+ /* Hover handlers sit on the wrapper so the cursor can cross
18467
+ * the gap to `section.trailing` without closing the flyout.
18468
+ * The wrapper is not itself a control — the button inside is,
18469
+ * and it carries the keyboard equivalent (ArrowRight / Enter /
18470
+ * Space open the same flyout). Nothing here is mouse-only. */
18471
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions
18472
+ /* @__PURE__ */ jsxs(
18473
+ "div",
18474
+ {
18475
+ ref: (el) => {
18476
+ if (el) rowRefs.current.set(section.key, el);
18477
+ else rowRefs.current.delete(section.key);
18478
+ },
18479
+ className: "flex items-center gap-0.5",
18480
+ onMouseEnter: () => scheduleOpen(section.key),
18481
+ onMouseLeave: scheduleClose,
18482
+ children: [
18483
+ /* @__PURE__ */ jsxs(
18484
+ "button",
18485
+ {
18486
+ type: "button",
18487
+ role: "menuitem",
18488
+ "aria-haspopup": "menu",
18489
+ "aria-expanded": isOpen,
18490
+ onClick: () => openSection(section.key),
18491
+ onKeyDown: (e) => {
18492
+ if (e.key === "ArrowRight" || e.key === "Enter" || e.key === " ") {
18493
+ e.preventDefault();
18494
+ openSection(section.key);
18495
+ requestAnimationFrame(
18496
+ () => flyoutRef.current?.querySelector("input, [role='menuitemcheckbox'], [role='menuitemradio']")?.focus()
18497
+ );
18498
+ }
18499
+ },
18500
+ className: cn(
18501
+ "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",
18502
+ isOpen && "bg-muted/60"
18503
+ ),
18504
+ children: [
18505
+ section.icon && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-muted-foreground", "aria-hidden": "true", children: section.icon }),
18506
+ /* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children: section.label }),
18507
+ 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 }),
18508
+ section.mode !== "multi" && valueLabel && /* @__PURE__ */ jsx("span", { className: "max-w-24 shrink-0 truncate text-[13px] text-muted-foreground", children: valueLabel }),
18509
+ /* @__PURE__ */ jsx(ChevronRightIcon, { size: 13, className: "shrink-0 text-muted-foreground" })
18510
+ ]
18511
+ }
18512
+ ),
18513
+ section.trailing
18514
+ ]
18515
+ },
18516
+ section.key
18517
+ )
18518
+ );
18519
+ }) }),
18520
+ /* @__PURE__ */ jsx("div", { className: "border-t border-border p-1", children: /* @__PURE__ */ jsxs(
18521
+ Button,
18522
+ {
18523
+ variant: "ghost",
18524
+ size: "sm",
18525
+ onClick: onReset,
18526
+ disabled: isAtDefault,
18527
+ className: "h-7 w-full justify-start gap-1.5 px-2 text-xs text-muted-foreground hover:text-foreground",
18528
+ children: [
18529
+ /* @__PURE__ */ jsx(RotateCcwIcon, { size: 13 }),
18530
+ "Reset to default"
18531
+ ]
18532
+ }
18533
+ ) }),
18534
+ activeSection && /* @__PURE__ */ jsxs(
18535
+ "div",
18536
+ {
18537
+ ref: flyoutRef,
18538
+ role: "menu",
18539
+ "aria-label": activeSection.label,
18540
+ tabIndex: -1,
18541
+ style: { top: flyout.top, width: FLYOUT_WIDTH },
18542
+ className: cn(
18543
+ "absolute z-50 rounded-lg border border-border bg-popover shadow-md",
18544
+ // -mx-1 lets the flyout tuck against the panel so there's no
18545
+ // dead gap for the cursor to fall through on the way over.
18546
+ flyout.side === "left" ? "right-full -mr-1" : "left-full -ml-1"
18547
+ ),
18548
+ onMouseEnter: clearTimers,
18549
+ onMouseLeave: scheduleClose,
18550
+ children: [
18551
+ showFlyoutSearch && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 border-b border-border px-2.5 py-1.5", children: [
18552
+ /* @__PURE__ */ jsx(SearchIcon, { size: 13, className: "shrink-0 text-muted-foreground", "aria-hidden": "true" }),
18553
+ /* @__PURE__ */ jsx(
18554
+ "input",
18555
+ {
18556
+ type: "text",
18557
+ value: sectionQuery,
18558
+ onChange: (e) => setSectionQuery(e.target.value),
18559
+ placeholder: `Filter ${activeSection.label.toLowerCase()}\u2026`,
18560
+ "aria-label": `Filter ${activeSection.label}`,
18561
+ className: "h-6 w-full bg-transparent text-[13px] text-foreground outline-none placeholder:text-muted-foreground"
18562
+ }
18563
+ )
18564
+ ] }),
18565
+ /* @__PURE__ */ jsx("div", { className: "max-h-64 overflow-y-auto p-1", children: activeSection.content ? (
18566
+ /* Consumer-supplied controls (date range, numeric bound).
18567
+ * Rendered raw — the section owns its own labelling and
18568
+ * layout; the flyout only provides the surface. */
18569
+ /* @__PURE__ */ jsx("div", { className: "p-1.5", children: activeSection.content })
18570
+ ) : sectionRows.length === 0 ? /* @__PURE__ */ jsx(
18571
+ EmptyRow,
18572
+ {
18573
+ label: activeSection.options.length === 0 ? "Nothing to filter by" : "No matches"
18574
+ }
18575
+ ) : sectionRows.map((option) => {
18576
+ const isActive = activeSection.selected.has(option.key);
18577
+ const isMulti = activeSection.mode === "multi";
18578
+ return /* @__PURE__ */ jsxs(
18579
+ "button",
18580
+ {
18581
+ type: "button",
18582
+ role: isMulti ? "menuitemcheckbox" : "menuitemradio",
18583
+ "aria-checked": isActive,
18584
+ onClick: () => {
18585
+ activeSection.onSelect(option.key);
18586
+ if (!isMulti) setOpenKey(null);
18587
+ },
18588
+ onKeyDown: (e) => {
18589
+ if (e.key === "ArrowLeft") {
18590
+ e.preventDefault();
18591
+ setOpenKey(null);
18592
+ rowRefs.current.get(activeSection.key)?.querySelector("button")?.focus();
18593
+ }
18594
+ },
18595
+ className: cn(
18596
+ "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",
18597
+ isActive ? "text-foreground" : "text-muted-foreground hover:text-foreground"
18598
+ ),
18599
+ children: [
18600
+ isMulti && /* @__PURE__ */ jsx(
18601
+ "span",
18602
+ {
18603
+ "aria-hidden": "true",
18604
+ className: cn(
18605
+ "flex size-3.5 shrink-0 items-center justify-center rounded border transition-colors",
18606
+ isActive ? "border-brand bg-brand text-fg-on-brand" : "border-border"
18607
+ ),
18608
+ children: isActive && /* @__PURE__ */ jsx(CheckIcon, { size: 10 })
18609
+ }
18610
+ ),
18611
+ /* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children: option.label }),
18612
+ !isMulti && isActive && /* @__PURE__ */ jsx(CheckIcon, { size: 14, className: "shrink-0 text-brand" })
18613
+ ]
18614
+ },
18615
+ option.key
18616
+ );
18617
+ }) }),
18618
+ activeSection.mode === "multi" && activeSection.selected.size > 0 && activeSection.onClear && /* @__PURE__ */ jsx("div", { className: "border-t border-border p-1", children: /* @__PURE__ */ jsxs(
18619
+ Button,
18620
+ {
18621
+ variant: "ghost",
18622
+ size: "sm",
18623
+ onClick: activeSection.onClear,
18624
+ className: "h-6 w-full justify-start px-2 text-[11px] text-muted-foreground hover:text-foreground",
18625
+ children: [
18626
+ "Clear ",
18627
+ activeSection.selected.size,
18628
+ " selected"
18629
+ ]
18630
+ }
18631
+ ) })
18632
+ ]
18633
+ }
18634
+ )
18635
+ ] })
18636
+ }
18637
+ )
18638
+ ] });
18639
+ }
18640
+ function EmptyRow({ label = "No matches" }) {
18641
+ return /* @__PURE__ */ jsx("p", { className: "px-2 py-3 text-center text-[11px] text-muted-foreground", children: label });
18642
+ }
18193
18643
  function brandScope(product) {
18194
18644
  return { "data-brand": product };
18195
18645
  }
@@ -18215,6 +18665,6 @@ var BrandScope = forwardRef(function BrandScope2({ product, children, ...props }
18215
18665
  });
18216
18666
  BrandScope.displayName = "BrandScope";
18217
18667
 
18218
- 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, 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 };
18668
+ 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 };
18219
18669
  //# sourceMappingURL=index.js.map
18220
18670
  //# sourceMappingURL=index.js.map