@assure-one/design-system 1.37.0 → 1.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +60 -16
  2. package/codemods/README.md +90 -16
  3. package/codemods/lib/entry-map.mjs +315 -0
  4. package/codemods/lib/registry.mjs +2 -0
  5. package/codemods/transforms/cm-01-entry-imports.mjs +202 -0
  6. package/codemods/transforms/cm-18-data-table-parts.mjs +234 -0
  7. package/dist/brand-theme-B6rem2II.d.ts +59 -0
  8. package/dist/css/components.css +1 -1
  9. package/dist/css/legacy-aliases.css +8 -0
  10. package/dist/css/tokens.css +14 -6
  11. package/dist/design-system-provider-BM_F1C13.d.ts +143 -0
  12. package/dist/icons/index.d.ts +441 -3
  13. package/dist/icons/index.js.map +1 -1
  14. package/dist/index-BAAuIQqP.d.ts +2579 -0
  15. package/dist/index-DxBjmBBp.d.ts +1038 -0
  16. package/dist/index.d.ts +1017 -3293
  17. package/dist/index.js +7598 -5906
  18. package/dist/index.js.map +1 -1
  19. package/dist/legacy/index.d.ts +9 -0
  20. package/dist/legacy/index.js +3 -0
  21. package/dist/legacy/index.js.map +1 -0
  22. package/dist/next/index.d.ts +2 -1
  23. package/dist/reference-BkDbrPIB.d.ts +310 -0
  24. package/dist/styles.css +1 -1
  25. package/dist/suite/index.d.ts +4 -0
  26. package/dist/suite/index.js +3 -0
  27. package/dist/suite/index.js.map +1 -0
  28. package/dist/{system-CyAVbHhM.d.ts → system-DfJIVBlJ.d.ts} +1 -310
  29. package/dist/tokens/index.d.ts +3 -61
  30. package/dist/tokens/index.js +3 -3
  31. package/dist/tokens/index.js.map +1 -1
  32. package/dist/{design-system-provider-C8UlFe52.d.ts → types-k_kjwipx.d.ts} +69 -142
  33. package/dist/vocab-DornLJbW.d.ts +76 -0
  34. package/docs/components.md +62 -32
  35. package/docs/components.registry.json +2415 -465
  36. package/docs/for-ai-agents.md +2 -0
  37. package/eslint-config/index.mjs +210 -0
  38. package/eslint-config/stylelint-rules.mjs +54 -0
  39. package/eslint-config/stylelint.mjs +73 -0
  40. package/package.json +21 -3
  41. package/public/brand/assure-audit-mark.svg +6 -0
  42. package/public/brand/assure-audit.svg +8 -0
  43. package/public/brand/assure-books-mark.svg +6 -0
  44. package/public/brand/assure-books.svg +8 -0
  45. package/public/brand/assure-pro-mark.svg +6 -0
  46. package/public/brand/assure-pro.svg +8 -0
  47. package/public/brand/assure-tax-mark.svg +6 -0
  48. package/public/brand/assure-tax.svg +8 -0
  49. package/public/brand/mycpe-teams-mark.svg +36 -0
  50. package/public/brand/mycpe-teams.svg +66 -0
  51. package/dist/index-vztxMSfl.d.ts +0 -512
package/dist/index.d.ts CHANGED
@@ -1,24 +1,29 @@
1
- export { C as ColorName, R as ReferenceTokens, S as SystemTokens, c as colors, r as radii, a as reference, s as shadows, b as spacing, d as surfaces, e as systemTokens, t as typography } from './system-CyAVbHhM.js';
1
+ export { C as ColorName, R as ReferenceTokens, c as colors, r as radii, a as reference, s as shadows, d as spacing, e as surfaces, t as typography } from './reference-BkDbrPIB.js';
2
+ export { S as SystemTokens, s as systemTokens } from './system-DfJIVBlJ.js';
2
3
  import * as React$1 from 'react';
3
- import { ReactNode, InputHTMLAttributes, HTMLAttributes, RefCallback, ReactElement, FieldsetHTMLAttributes, CSSProperties } from 'react';
4
+ import { ReactNode, InputHTMLAttributes, HTMLAttributes, RefCallback, ReactElement, FieldsetHTMLAttributes } from 'react';
4
5
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
5
6
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
7
  import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
7
- import { V as Variant, I as Intent, C as ControlSize, S as Shape } from './index-vztxMSfl.js';
8
- export { A as AlertCircleIcon, a as AlertTriangleIcon, b as AlertTriangleSolidIcon, c as ArchiveIcon, d as ArrowDownIcon, e as ArrowLeftIcon, f as ArrowRightIcon, g as ArrowRightSmallIcon, h as ArrowUpIcon, i as AtSignIcon, B as BarChartIcon, j as BellIcon, k as BoldIcon, l as BrainIcon, m as BriefcaseIcon, n as Building2Icon, o as BuildingIcon, p as CalendarIcon, q as ChatBubbleIcon, r as CheckCircle2Icon, s as CheckCircleSolidIcon, t as CheckIcon, u as ChevronDownIcon, v as ChevronLeftIcon, w as ChevronRightIcon, x as ChevronUpIcon, y as ChevronsDownUpIcon, z as ChevronsUpDownIcon, D as CircleDotIcon, E as CircleIcon, F as ClipboardCheckIcon, G as ClockIcon, H as CloseIcon, J as CommandIcon, K as CopyIcon, L as CornerDownLeftIcon, M as CreditCardIcon, N as DocumentIcon, O as DollarSignIcon, P as DownloadIcon, Q as ExternalLinkIcon, R as ExtractIcon, T as EyeIcon, U as EyeOffIcon, W as FileIcon, X as FileReturnIcon, Y as FileTextIcon, Z as FilterIcon, _ as FlagIcon, $ as FolderClosedIcon, a0 as FolderOpenIcon, a1 as FolderPlusIcon, a2 as FolderUpIcon, a3 as GlobeIcon, a4 as GoogleBrandIcon, a5 as GripVerticalIcon, a6 as HelpCircleIcon, a7 as HistoryIcon, a8 as HomeIcon, a9 as IconComponent, aa as IconDefinition, ab as IconProps, ac as IconSize, ad as InboxIcon, ae as InfoCircleSolidIcon, af as InfoIcon, ag as ItalicIcon, ah as KanbanIcon, ai as KeyIcon, aj as LandmarkIcon, ak as LayersIcon, al as LayoutDashboardIcon, am as LayoutGridIcon, an as LayoutListIcon, ao as LightningIcon, ap as Link2Icon, aq as LinkIcon, ar as ListChecksIcon, as as ListIcon, at as ListOrderedIcon, au as LoaderIcon, av as LockIcon, aw as LockKeyholeIcon, ax as LockOpenIcon, ay as LogOutIcon, az as MailIcon, aA as MapPinIcon, aB as MaximizeIcon, aC as MenuIcon, aD as MessageCircleIcon, aE as MessageCircleWarningIcon, aF as MicIcon, aG as MicrosoftBrandIcon, aH as MinimizeIcon, aI as MinusIcon, aJ as MonitorIcon, aK as MoonIcon, aL as MoreHorizontalIcon, aM as MoveIcon, aN as PaletteIcon, aO as PanelLeftCloseIcon, aP as PanelLeftIcon, aQ as PanelRightIcon, aR as PaperclipIcon, aS as PauseIcon, aT as PenSignIcon, aU as PenToolIcon, aV as PencilIcon, aW as PhoneIcon, aX as PlayIcon, aY as PlusIcon, aZ as ReceiptIcon, a_ as RefreshCwIcon, a$ as ReplyIcon, b0 as RotateCcwIcon, b1 as SaveIcon, b2 as SearchIcon, b3 as SendIcon, b4 as SettingsIcon, b5 as ShieldIcon, b6 as SigmaIcon, b7 as SlashIcon, b8 as SmartphoneIcon, b9 as SparkleIcon, ba as SparklesIcon, bb as StarIcon, bc as StopIcon, bd as StrikethroughIcon, be as SunIcon, bf as TableIcon, bg as TagIcon, bh as TeamIcon, bi as ThumbsDownIcon, bj as ThumbsUpIcon, bk as TimerIcon, bl as Trash2Icon, bm as TrashIcon, bn as TrashSolidIcon, bo as TrendingDownIcon, bp as TrendingUpIcon, bq as UnderlineIcon, br as UploadIcon, bs as UserCircleIcon, bt as UserIcon, bu as UsersIcon, bv as VideoIcon, bw as Volume2Icon, bx as VolumeXIcon, by as WorkflowIcon, bz as XCircleSolidIcon, bA as XIcon, bB as ZoomInIcon, bC as ZoomOutIcon, bD as createIcon } from './index-vztxMSfl.js';
8
+ import { V as Variant, I as Intent, C as ControlSize } from './vocab-DornLJbW.js';
9
+ export { S as Shape } from './vocab-DornLJbW.js';
9
10
  import * as class_variance_authority_types from 'class-variance-authority/types';
10
11
  import { VariantProps } from 'class-variance-authority';
11
12
  import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
12
13
  import * as AvatarPrimitive from '@radix-ui/react-avatar';
14
+ import { A as AvatarSlot, F as FileUploadSlot, I as InputSlot, N as NumberInputSlot, P as PhoneFieldSlot, S as SearchInputSlot, a as SelectSlot, T as TextareaSlot, B as BadgeSize, b as BadgeShape, D as DataTableSlot, c as TableProps } from './index-BAAuIQqP.js';
15
+ export { d as AIReceiptPanel, e as AIReceiptPanelProps, f as AIReceiptResult, g as AiDraftCard, h as AiDraftCardProps, i as AiDraftState, j as AlertDialogSlot, k as Assignee, l as AttentionItem, m as AttentionItemProps, n as AttentionUrgency, o as Badge, p as BadgeAppearance, q as BadgeAppearanceInput, r as BadgeLegacyVariant, s as BadgeProps, t as BadgeSlot, u as BadgeVariant, v as BadgeVariantsProps, w as Blockquote, x as BottomNav, y as BottomNavProps, z as BottomNavTab, C as ButtonSlot, E as CardSlot, G as CategoryDivider, H as CategoryDividerProps, J as CategoryTag, K as CategoryTagProps, L as CategoryTone, M as ChannelTabItem, O as ChannelTabs, Q as ChannelTabsProps, R as ChannelTone, U as CheckboxSlot, V as ChipSlot, W as ClientRailGroupHeader, X as ClientRailGroupHeaderProps, Y as ClientRailItem, Z as ClientRailItemProps, _ as CodeSlot, $ as ComboboxSlot, a0 as CommandSlot, a1 as ContextMenuSlot, a2 as Dash, a3 as DashGrid, a4 as DashGridProps, a5 as DashWidget, a6 as DataTable, a7 as DataTableBody, a8 as DataTableBodyProps, a9 as DataTableCell, aa as DataTableCellDue, ab as DataTableCellDueProps, ac as DataTableCellId, ad as DataTableCellMono, ae as DataTableCellName, af as DataTableCellProps, ag as DataTableCheckbox, ah as DataTableCheckboxProps, ai as DataTableHead, aj as DataTableHeadProps, ak as DataTableHeader, al as DataTableHeaderProps, am as DataTableProps, an as DataTableResultsCount, ao as DataTableResultsCountProps, ap as DataTableRow, aq as DataTableRowProps, ar as DataTableSearch, as as DataTableSearchProps, at as DataTableSpacer, au as DataTableSpacerProps, av as DataTableToolbar, aw as DataTableToolbarProps, ax as DataTableView, ay as DataTableViewColumn, az as DataTableViewFilter, aA as DataTableViewProps, aB as DataTableViewSelection, aC as DataTableViewSort, aD as DialogSlot, aE as DocumentChecklist, aF as DocumentChecklistFile, aG as DocumentChecklistItem, aH as DocumentChecklistProps, aI as DocumentChecklistStatus, aJ as DocumentFileCard, aK as DocumentFileCardProps, aL as DocumentFileLine, aM as DocumentFileLineProps, aN as DocumentFileRow, aO as DocumentFileRowProps, aP as DocumentItemState, aQ as DocumentRequestActivityKind, aR as DocumentRequestAssigneeOption, aS as DocumentRequestCard, aT as DocumentRequestCardProps, aU as DocumentRequestDetail, aV as DocumentRequestDetailActivityEvent, aW as DocumentRequestDetailComment, aX as DocumentRequestDetailDoc, aY as DocumentRequestDetailProps, aZ as DocumentRequestDetailTab, a_ as DocumentRequestField, a$ as DocumentRequestFieldProps, b0 as DocumentRequestItemSummary, b1 as DocumentRequestRequestedItem, b2 as DocumentRequestReviewStatusOption, b3 as DocumentRequestTone, b4 as DocumentRequestUpload, b5 as DocumentRequestUploadFile, b6 as DocumentRequestUploadProps, b7 as DocumentSource, b8 as DocumentSourceFilter, b9 as DocumentSourceFilterProps, ba as DocumentSourceFilterValue, bb as DocumentSourceTag, bc as DocumentSourceTagProps, bd as DocumentsWorkspaceLayout, be as DocumentsWorkspaceLayoutProps, bf as DropdownMenuSlot, bg as EmailMessageCard, bh as EmailMessageCardProps, bi as EmptyValue, bj as EngagementCard, bk as EngagementCardProps, bl as EngagementTimeline, bm as EngagementTimelineProps, bn as EngagementTimelineStep, bo as EngagementTimelineStepProps, bp as FieldSlot, bq as FieldsetSlot, br as FileChip, bs as FileChipProps, bt as FileKind, bu as HeadingSlot, bv as IconButtonSlot, bw as InlineSlot, bx as IntentBadge, by as IntentBadgeProps, bz as IntentTone, bA as KbdSlot, bB as LabelSlot, bC as LinkButtonSlot, bD as MissingDocumentItem, bE as MissingDocumentsPanel, bF as MissingDocumentsPanelProps, bG as MoneyCell, bH as NewMenu, bI as NewMenuAction, bJ as NewMenuGroup, bK as NewMenuProps, bL as PaginationSlot, bM as PillStatus, bN as PopoverSlot, bO as PressableSlot, bP as RadioGroupSlot, bQ as SERVICE_TONES, bR as Section, bS as SectionHead, bT as SectionHeader, bU as ServiceTone, bV as SheetSlot, bW as ShellSlot, bX as SideDrawerSlot, bY as SidebarBrandSwitcherSlot, bZ as SidebarSlot, b_ as SignatureEditor, b$ as SignatureEditorProps, c0 as SortDirection, c1 as StackSlot, c2 as StagePill, c3 as Stat, c4 as StatusBadgeSlot, c5 as StatusPill, c6 as StatusPillProps, c7 as SuggestionPills, c8 as SuggestionPillsProps, c9 as SurfaceSlot, ca as SwitchSlot, cb as Table, cc as TableBody, cd as TableBodyProps, ce as TableCaption, cf as TableCaptionProps, cg as TableCell, ch as TableCellAlign, ci as TableCellCommonProps, cj as TableCellProps, ck as TableFooter, cl as TableFooterProps, cm as TableHead, cn as TableHeadProps, co as TableHeader, cp as TableHeaderProps, cq as TableHeaderStyle, cr as TableRow, cs as TableRowData, ct as TableRowProps, cu as TableSlot, cv as TableSortDirection, cw as TableStickyEdge, cx as TableTone, cy as TagsCell, cz as TeamMemberSelect, cA as TextSlot, cB as ThemeBrand, cC as ThemeDensity, cD as ThemeDirection, cE as ThemeScheme, cF as ThemeScope, cG as ThemeScopeProps, cH as ThemeScopeValue, cI as TimeLogger, cJ as TimeLoggerActions, cK as TimeLoggerActionsProps, cL as TimeLoggerBillable, cM as TimeLoggerBillableProps, cN as TimeLoggerContextRow, cO as TimeLoggerContextRowProps, cP as TimeLoggerEntry, cQ as TimeLoggerEntryList, cR as TimeLoggerEntryListProps, cS as TimeLoggerEntryProps, cT as TimeLoggerField, cU as TimeLoggerFieldProps, cV as TimeLoggerFooter, cW as TimeLoggerFooterProps, cX as TimeLoggerHeader, cY as TimeLoggerHeaderProps, cZ as TimeLoggerNotes, c_ as TimeLoggerNotesProps, c$ as TimeLoggerPhase, d0 as TimeLoggerProps, d1 as TimeLoggerTier, d2 as TimeLoggerTimer, d3 as TimeLoggerTimerProps, d4 as TimelineState, d5 as ToastSlot, d6 as TooltipSlot, d7 as UseStopwatchReturn, d8 as badgeVariants, d9 as formatClock, da as formatCurrency, db as formatDuration, dc as parseDuration, dd as resolveBadgeAppearance, de as serviceToneLabel, df as serviceToneStyle, dg as useStopwatch } from './index-BAAuIQqP.js';
16
+ export { A as AgreementFirm, a as AgreementPaneHeading, b as AgreementPaneHeadingProps, c as AgreementStatus, d as AgreementStep, e as AgreementViewer, f as AgreementViewerProps, g as AssureAuditBrandIcon, h as AssureBooksBrandIcon, i as AssureProBrandIcon, j as AssureTaxBrandIcon, B as BRAND_PRODUCTS, k as BrandIconProps, l as BrandProduct, m as BrandScope, n as BrandScopeProps, o as BrandScopeProvider, C as ClientSelect, p as ClientSelectOption, q as ComingSoon, r as ComingSoonProps, D as DocumentDetailActions, s as DocumentDetailActionsProps, t as DocumentDetailBody, u as DocumentDetailBodyProps, v as DocumentDetailHeader, w as DocumentDetailHeaderProps, x as DocumentDetailMetaRow, y as DocumentDetailMetaRowProps, z as DocumentDetailPanel, E as DocumentDetailPanelProps, F as DocumentDetailRequester, G as DocumentDetailRequesterProps, H as DocumentDetailTitle, I as DocumentDetailTitleProps, J as DocumentList, K as DocumentListProps, L as DocumentListSection, M as DocumentListSectionProps, N as DocumentRow, O as DocumentRowProps, P as Grid, Q as GridColumn, R as GridInputType, S as GridProps, T as GridRow, U as GridValue, V as Logo, W as ProposalAddOn, X as ProposalAddOnProps, Y as ProposalBillingMode, Z as ProposalBillingRow, _ as ProposalBillingTerms, $ as ProposalBillingTermsProps, a0 as ProposalConsentGate, a1 as ProposalConsentGateProps, a2 as ProposalCustomPage, a3 as ProposalCustomPageKind, a4 as ProposalCustomPageProps, a5 as ProposalNote, a6 as ProposalNoteProps, a7 as ProposalPackageCard, a8 as ProposalPackageCardProps, a9 as ProposalPackageMode, aa as ProposalPaymentCapture, ab as ProposalPaymentCaptureProps, ac as ProposalPricingSummary, ad as ProposalPricingSummaryProps, ae as ProposalServiceRow, af as ProposalServiceRowProps, ag as ProposalSignatureBlock, ah as ProposalSignatureBlockProps, ai as ProposalSigner, aj as ProposalSignerList, ak as ProposalSignerListProps, al as ProposalSignerStatus, am as QUESTION_TYPES, an as QUESTION_TYPE_CONTRACT_VERSION, ao as QuestionAddressValue, ap as QuestionFileValue, aq as QuestionHelp, ar as QuestionLabeledColumn, as as QuestionLabeledRow, at as QuestionLabeledValue, au as QuestionNameValue, av as QuestionOption, aw as QuestionTableColumn, ax as QuestionTableRow, ay as QuestionType, az as Questions, aA as QuestionsProps, aB as SidebarBrandSwitcher, aC as SidebarBrandSwitcherExtra, aD as SidebarBrandSwitcherItem, aE as SidebarBrandSwitcherProps, aF as SidebarBrandSwitcherTile, aG as brandLabel, aH as brandScope, aI as useBrandScope } from './index-DxBjmBBp.js';
13
17
  import { DayPickerProps } from 'react-day-picker';
14
18
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
15
19
  import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
16
- import { C as CommandPaletteMessages, a as ConfirmMessages, b as CopyButtonMessages, F as FileUploadMessages, K as KeyboardShortcutsMessages, P as PaginationMessages, c as PhoneFieldMessages, S as SearchInputMessages, d as SelectMessages, T as ToastMessages, e as FieldMessages, f as ComboboxMessages } from './design-system-provider-C8UlFe52.js';
17
- export { g as DesignSystemProvider, D as DesignSystemProviderProps, h as DsDirection, i as DsMessageNamespace, j as DsMessages, k as DsMessagesOverride, I as ImageComponent, l as ImageComponentProps, L as LinkComponent, m as LinkComponentProps, n as TooltipDefaults, u as useDsMessages } from './design-system-provider-C8UlFe52.js';
20
+ import { C as CommandPaletteMessages, c as ConfirmMessages, d as CopyButtonMessages, E as ErrorStateMessages, F as FileUploadMessages, K as KeyboardShortcutsMessages, P as PaginationMessages, e as PhoneFieldMessages, S as SearchInputMessages, f as SelectMessages, T as ToastMessages, g as FieldMessages, h as ComboboxMessages, i as TableStatesMessages, j as DataTableMessages } from './types-k_kjwipx.js';
21
+ export { D as DsMessageNamespace, a as DsMessages, b as DsMessagesOverride, k as TableMessages } from './types-k_kjwipx.js';
18
22
  import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
19
23
  import * as DialogPrimitive from '@radix-ui/react-dialog';
20
24
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
21
25
  import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
26
+ export { AlertCircleIcon, AlertTriangleIcon, AlertTriangleSolidIcon, ArchiveIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AtSignIcon, BarChartIcon, BellIcon, BoldIcon, BrainIcon, BriefcaseIcon, Building2Icon, BuildingIcon, CalendarIcon, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsDownUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClipboardCheckIcon, ClockIcon, CloseIcon, CommandIcon, CopyIcon, CornerDownLeftIcon, CreditCardIcon, DocumentIcon, DollarSignIcon, DownloadIcon, ExternalLinkIcon, ExtractIcon, EyeIcon, EyeOffIcon, FileIcon, FileReturnIcon, FileTextIcon, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FolderUpIcon, GlobeIcon, GoogleBrandIcon, GripVerticalIcon, HelpCircleIcon, HistoryIcon, HomeIcon, IconComponent, IconDefinition, IconProps, IconSize, InboxIcon, InfoCircleSolidIcon, InfoIcon, ItalicIcon, KanbanIcon, KeyIcon, LandmarkIcon, LayersIcon, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, MailIcon, MapPinIcon, MaximizeIcon, MenuIcon, MessageCircleIcon, MessageCircleWarningIcon, MicIcon, MicrosoftBrandIcon, MinimizeIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PanelRightIcon, PaperclipIcon, PauseIcon, PenSignIcon, PenToolIcon, PencilIcon, PhoneIcon, PlayIcon, PlusIcon, ReceiptIcon, RefreshCwIcon, ReplyIcon, RotateCcwIcon, SaveIcon, SearchIcon, SendIcon, SettingsIcon, ShieldIcon, SigmaIcon, SlashIcon, SmartphoneIcon, SparkleIcon, SparklesIcon, StarIcon, StopIcon, StrikethroughIcon, SunIcon, TableIcon, TagIcon, TeamIcon, ThumbsDownIcon, ThumbsUpIcon, TimerIcon, Trash2Icon, TrashIcon, TrashSolidIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VideoIcon, Volume2Icon, VolumeXIcon, WorkflowIcon, XCircleSolidIcon, XIcon, ZoomInIcon, ZoomOutIcon, createIcon } from './icons/index.js';
22
27
  import * as LabelPrimitive from '@radix-ui/react-label';
23
28
  import * as PopoverPrimitive from '@radix-ui/react-popover';
24
29
  import * as ProgressPrimitive from '@radix-ui/react-progress';
@@ -32,8 +37,9 @@ import * as TabsPrimitive from '@radix-ui/react-tabs';
32
37
  import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
33
38
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
34
39
  import * as VisuallyHiddenPrimitive from '@radix-ui/react-visually-hidden';
40
+ export { a as DesignSystemProvider, D as DesignSystemProviderProps, b as DsDirection, I as ImageComponent, c as ImageComponentProps, L as LinkComponent, d as LinkComponentProps, T as TooltipDefaults, u as useDsMessages } from './design-system-provider-BM_F1C13.js';
35
41
  import { ClassValue } from 'clsx';
36
- import { BrandTheme } from './tokens/index.js';
42
+ import './brand-theme-B6rem2II.js';
37
43
 
38
44
  type AccordionProps = React$1.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root>;
39
45
  declare const Accordion: React$1.ForwardRefExoticComponent<AccordionProps & React$1.RefAttributes<HTMLDivElement>>;
@@ -41,466 +47,6 @@ declare const AccordionItem: React$1.ForwardRefExoticComponent<Omit<AccordionPri
41
47
  declare const AccordionTrigger: React$1.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
42
48
  declare const AccordionContent: React$1.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
43
49
 
44
- /**
45
- * `Code` parts, stamped as `data-slot="code[-<part>]"` (ADR-008). Inline, the
46
- * root is the `<code>`; as a block, the root is the `<pre>` and `content` the
47
- * `<code>` inside it. State on the root: `data-variant`.
48
- *
49
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
50
- */
51
- type CodeSlot = "root" | "content";
52
- /**
53
- * `Kbd` part, stamped as `data-slot="kbd"` (ADR-008). State on the root:
54
- * `data-variant`. `KbdHint` and `CommandPalette` render it.
55
- *
56
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
57
- */
58
- type KbdSlot = "root";
59
- /**
60
- * `Pressable` has one part, its root, stamped as `data-slot="pressable"`
61
- * (ADR-008): the element that carries the button behaviour, whether that is
62
- * the `<button>` it renders or the child it wraps with `asChild`. State on the
63
- * root: `data-disabled`, `data-pressed`. Components that compose it (`Button`
64
- * once it adopts the behaviour, a clickable `Surface`) declare their own parts.
65
- *
66
- * @experimental Slot names are experimental until ADR-008 is accepted (W3-03).
67
- */
68
- type PressableSlot = "root";
69
- /**
70
- * `Button` parts, stamped as `data-slot="button[-<part>]"` (ADR-008).
71
- * States on the root: `data-variant`, `data-size`, `data-disabled`, and the
72
- * pre-existing `data-loading="true"`.
73
- *
74
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
75
- */
76
- type ButtonSlot = "root" | "icon-start" | "icon-end" | "spinner";
77
- /**
78
- * `LinkButton` parts, stamped as `data-slot="link-button[-<part>]"` (ADR-008).
79
- * States on the root: `data-variant`, `data-size`.
80
- *
81
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
82
- */
83
- type LinkButtonSlot = "root" | "icon-start" | "icon-end";
84
- /**
85
- * `Badge` parts, stamped as `data-slot="badge[-<part>]"` (ADR-008).
86
- * States on the root: `data-variant`, `data-size`.
87
- *
88
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
89
- */
90
- type BadgeSlot = "root" | "dot" | "icon";
91
- /**
92
- * `Input` parts, stamped as `data-slot="input[-<part>]"` (ADR-008).
93
- * `root` is the `<input>` itself — the control frame, and the element
94
- * `className` lands on (`C-INPUT-CLASSNAME`). The wrappers around it are
95
- * private (target architecture §29.2).
96
- * States on the root: `data-variant`, `data-size`, `data-disabled`,
97
- * `data-invalid`. `description` is the `description` sugar's hint text (W4-05).
98
- *
99
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
100
- */
101
- type InputSlot = "root" | "label" | "icon-start" | "icon-end" | "password-toggle" | "description" | "error";
102
- /**
103
- * `Textarea` parts, stamped as `data-slot="textarea[-<part>]"` (ADR-008).
104
- * `root` is the `<textarea>`. States on the root: `data-variant`, `data-size`,
105
- * `data-disabled`, `data-invalid`. `description` is the `description` sugar's
106
- * hint text (W4-06).
107
- *
108
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
109
- */
110
- type TextareaSlot = "root" | "label" | "description" | "error" | "count";
111
- /**
112
- * `SearchInput` parts, stamped as `data-slot="search-input[-<part>]"`
113
- * (ADR-008). `root` is the positioning wrapper `className` lands on;
114
- * `control` is the `<input type="search">`.
115
- * States on the root: `data-size`, `data-disabled`.
116
- *
117
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
118
- */
119
- type SearchInputSlot = "root" | "control" | "icon" | "clear";
120
- /**
121
- * `Select` parts, stamped as `data-slot="select-<part>"` (ADR-008).
122
- * `SelectRoot` renders no element: `root` is the wrapper the options-driven
123
- * `Select clearable` renders around the trigger and the `clear` button (W4-08),
124
- * and exists only then. Radix's own `data-state`, `data-disabled`,
125
- * `data-placeholder` and `data-highlighted` are left as they are
126
- * (`P-DATA-STATE`); the trigger adds `data-size` when a `size` is set.
127
- *
128
- * `SelectValue` and `SelectGroup` are re-exported Radix components with no
129
- * wrapper of ours, so they carry no slot of their own. `value` is the span
130
- * the options-driven `Select` wraps Radix's value in when `classNames.value`
131
- * or `clearable` asks for it (Radix's own span drops `className`); a legacy
132
- * call renders no wrapper, so the `SelectTrigger > span` structure PRO selects
133
- * on stays as frozen by `C-DOM-10`.
134
- *
135
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
136
- */
137
- type SelectSlot = "root" | "trigger" | "value" | "icon" | "clear" | "content" | "viewport" | "item" | "item-indicator" | "label" | "separator" | "scroll-up-button" | "scroll-down-button";
138
- /**
139
- * `Checkbox` parts, stamped as `data-slot="checkbox[-<part>]"` (ADR-008).
140
- * `root` is the Radix root — the box, and the element `className` lands on.
141
- * Radix's `data-state` (`checked` / `unchecked` / `indeterminate`) is left as
142
- * it is; `data-shape` is not part of the state vocabulary, so the shape stays
143
- * a class until W4-13.
144
- *
145
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
146
- */
147
- type CheckboxSlot = "root" | "indicator" | "label";
148
- /**
149
- * `RadioGroup` / `RadioGroupItem` parts, stamped as
150
- * `data-slot="radio-group[-<part>]"` (ADR-008). `root` is the group,
151
- * `item` the radio. Radix's `data-state` is left as it is. With
152
- * `appearance="card"` (W4-14) the root carries `data-appearance="card"` and
153
- * every item is wrapped in a `card` holding the `label` (stretched over the
154
- * card, so the whole box is the click target) and an optional `description`.
155
- *
156
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
157
- */
158
- type RadioGroupSlot = "root" | "item" | "indicator" | "label" | "card" | "description";
159
- /**
160
- * `Switch` parts, stamped as `data-slot="switch[-<part>]"` (ADR-008).
161
- * `root` is the Radix root — the track, and the element `className` lands on;
162
- * the label wrapper is a private wrapper. States on the root: `data-size`.
163
- *
164
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
165
- */
166
- type SwitchSlot = "root" | "thumb" | "label";
167
- /**
168
- * `Label` parts, stamped as `data-slot="label[-<part>]"` (ADR-008).
169
- * `required` is the asterisk marker.
170
- *
171
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
172
- */
173
- type LabelSlot = "root" | "required";
174
- /**
175
- * `NumberInput` parts, stamped as `data-slot="number-input"` (ADR-008).
176
- * `root` is the `<input>` itself — the control frame and the element
177
- * `className` lands on, like `Input`. The hidden inputs `FormBridge` renders
178
- * next to it are not parts. States on the root: `data-variant`, `data-size`,
179
- * `data-disabled`, `data-invalid`.
180
- *
181
- * @experimental Slot names are experimental until ADR-008 is accepted (W4-21).
182
- */
183
- type NumberInputSlot = "root";
184
- /**
185
- * `PhoneField` parts, stamped as `data-slot="phone-field[-<part>]"` (ADR-008).
186
- * `root` is the row (the element `className` lands on), `number` the `tel`
187
- * `<input>` on the control chrome, `flag` a `CountryFlag` (the SVG, or its
188
- * placeholder while the flag set loads). `country` is the country picker: a
189
- * `Combobox`, stamped with its own anatomy and styled through
190
- * `classNames.country`. States on the root: `data-variant`, `data-size`,
191
- * `data-disabled`, `data-invalid`.
192
- *
193
- * @experimental Slot names are experimental until ADR-008 is accepted (W4-22).
194
- */
195
- type PhoneFieldSlot = "root" | "country" | "number" | "flag";
196
- /**
197
- * `FileUpload` parts, stamped as `data-slot="file-upload[-<part>]"` (ADR-008).
198
- * `dropzone` is the `<label>` that `C-DOM-04` freezes and that
199
- * `[&_[data-slot=file-upload-dropzone]]` replaces (target architecture §29.4).
200
- * States: `data-disabled` and `data-invalid` on the root, `data-disabled` and
201
- * `data-state="drag-over"` on the dropzone.
202
- *
203
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
204
- */
205
- type FileUploadSlot = "root" | "dropzone" | "input" | "error";
206
- /**
207
- * `Command` / `CommandPalette` parts, stamped as `data-slot="command-<part>"`
208
- * (ADR-008, W5-19). `overlay`, `content`, `title` and `description` are the
209
- * spotlight modal (`CommandDialog`); `root`, `input`, `list`, `empty`,
210
- * `group` and `item` are the command-list parts; `footer` is the
211
- * keyboard-hint strip `CommandPalette` renders below the list.
212
- *
213
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
214
- */
215
- type CommandSlot = "overlay" | "content" | "title" | "description" | "root" | "input" | "list" | "empty" | "group" | "item" | "footer";
216
- /**
217
- * `Dialog` parts, stamped as `data-slot="dialog-<part>"` (ADR-008). There is
218
- * no `root`: `Dialog` is Radix's non-rendering root. `close` is stamped on
219
- * both the built-in close button and `DialogClose`; they are the same part —
220
- * a control that dismisses the dialog. `body` is the scroll region between
221
- * header and footer (W5-05). States: `data-size` on the content, and
222
- * `data-variant="responsive"` when it presents as a bottom sheet below `sm`
223
- * (W5-09). Radix's `data-state` is left as it is (`P-DATA-STATE`).
224
- *
225
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
226
- */
227
- type DialogSlot = "overlay" | "content" | "header" | "title" | "description" | "body" | "footer" | "close";
228
- /**
229
- * `AlertDialog` parts, stamped as `data-slot="alert-dialog-<part>"`
230
- * (ADR-008). No `root` — Radix's root renders no element.
231
- *
232
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
233
- */
234
- type AlertDialogSlot = "overlay" | "content" | "header" | "title" | "description" | "footer" | "action" | "cancel";
235
- /**
236
- * `Sheet` parts, stamped as `data-slot="sheet-<part>"` (ADR-008).
237
- * `body` is the scroll region between header and footer (W5-07). States:
238
- * `data-size` on the content, carrying the `size` step (or the deprecated
239
- * `width` preset, C-SHEET-WIDTH; `default` when neither is given). The
240
- * `side` is not in the §29.2 vocabulary and stays a class.
241
- *
242
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
243
- */
244
- type SheetSlot = "overlay" | "content" | "header" | "title" | "description" | "body" | "footer" | "close";
245
- /**
246
- * `SideDrawer` parts, stamped as `data-slot="side-drawer[-<part>]"`
247
- * (ADR-008). `root` is the panel. The screen-reader-only Radix title that the
248
- * panel always renders is an accessibility fallback, not a part, so it carries
249
- * no slot. States: `data-size` on the root, carrying the `width` preset.
250
- *
251
- * `SideDrawer` itself is `C-SIDEDRAWER` and is replaced by `Sheet` in W5-08;
252
- * the slots exist so the two can be styled the same way in the meantime.
253
- *
254
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
255
- */
256
- type SideDrawerSlot = "overlay" | "root" | "header" | "heading" | "subtitle" | "close" | "body" | "footer";
257
- /**
258
- * `Popover` parts, stamped as `data-slot="popover-content"` (ADR-008).
259
- * `Popover`, `PopoverTrigger`, `PopoverAnchor` and `PopoverClose` are bare
260
- * Radix re-exports, so the content is the only part we render.
261
- *
262
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
263
- */
264
- type PopoverSlot = "content";
265
- /**
266
- * `DropdownMenu` parts, stamped as `data-slot="dropdown-menu-<part>"`
267
- * (ADR-008). No `root`, no `trigger`: both are bare Radix re-exports.
268
- * `destructive` items get no `data-intent` yet — W3-02 defines the intent
269
- * values, and this task does not invent them.
270
- *
271
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
272
- */
273
- type DropdownMenuSlot = "content" | "item" | "checkbox-item" | "radio-item" | "item-indicator" | "label" | "separator" | "shortcut" | "sub-trigger" | "sub-content";
274
- /**
275
- * `ContextMenu` parts, stamped as `data-slot="context-menu-<part>"`
276
- * (ADR-008). The same part names as `DropdownMenu`, which is what makes the
277
- * shared `Menu` internals of W5 a rename-free change for consumers.
278
- *
279
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
280
- */
281
- type ContextMenuSlot = "content" | "item" | "checkbox-item" | "radio-item" | "item-indicator" | "label" | "separator" | "shortcut" | "sub-trigger" | "sub-content";
282
- /**
283
- * `Tooltip` parts, stamped as `data-slot="tooltip-content"` (ADR-008).
284
- * `TooltipTrigger` is a bare Radix re-export.
285
- *
286
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
287
- */
288
- type TooltipSlot = "content";
289
- /**
290
- * `Toast` parts, stamped as `data-slot="toast[-<part>]"` (ADR-008).
291
- * `region` is the live region that `C-TOAST-ARIALABEL` currently locates by
292
- * `aria-label="Notifications"`; `data-slot="toast-region"` is the replacement
293
- * that guard moves to (W5-15). States: `data-variant` on the root; its
294
- * `data-state` (`open` / `closed`) already existed.
295
- *
296
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
297
- */
298
- type ToastSlot = "region" | "root" | "icon" | "title" | "description" | "action" | "close";
299
- /**
300
- * `Table` parts, stamped as `data-slot="table[-<part>]"` (ADR-008).
301
- * `root` is the `<table>` — the element `className` lands on; `wrapper` is the
302
- * overflow container that `wrapperClassName` styles today and
303
- * `classNames.wrapper` replaces (`C-CLASSNAME-PROPS`). `header` is `<thead>`
304
- * and `head` is a `<th>`, matching the `TableHeader` / `TableHead` component
305
- * names. Native table semantics are permanent (`P-NATIVE-TABLE`).
306
- *
307
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
308
- */
309
- type TableSlot = "root" | "wrapper" | "header" | "body" | "footer" | "row" | "head" | "cell" | "caption";
310
- /**
311
- * `DataTable*` parts, stamped as `data-slot="data-table[-<part>]"` (ADR-008).
312
- * These are `C-DT-PARTS`, the parallel copy of `Table*` that W6-03 folds back
313
- * in; the part names deliberately match `table`'s so that fold is a no-op for
314
- * a consumer's selectors (`header` = `<thead>` via `DataTableHead`, `head` =
315
- * the `<th>` via `DataTableHeader`).
316
- *
317
- * `head-button` is the sortable header's `<button>` that `C-DOM-13` freezes.
318
- * The four cell components share one `cell` part and are told apart by
319
- * `data-variant` (`name`, `mono`, `id`, `due`).
320
- *
321
- * `DataTableSearch` and `DataTablePagination` render an `Input` and a
322
- * `Pagination` with no wrapper of their own, so they carry those components'
323
- * slots (`data-slot="input"`, `data-slot="pagination"`) rather than one of
324
- * their own — stamping over it would delete the inner component's part name.
325
- * W6-06 gives the search its own `classNames.search` (`C-DOM-18`).
326
- *
327
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
328
- */
329
- type DataTableSlot = "root" | "toolbar" | "spacer" | "results-count" | "header" | "body" | "row" | "head" | "head-button" | "head-indicator" | "cell" | "checkbox-cell";
330
- /**
331
- * `Pagination` parts, stamped as `data-slot="pagination[-<part>]"` (ADR-008).
332
- * `root` is the `<nav>`. The current page carries `data-selected` alongside
333
- * its existing `aria-current="page"`.
334
- *
335
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
336
- */
337
- type PaginationSlot = "root" | "label" | "pages" | "previous" | "next" | "page" | "ellipsis";
338
- /**
339
- * `Shell` / `Main` / `Content` parts, stamped as `data-slot="shell[-<part>]"`
340
- * (ADR-008). Three elements, three names: the app frame, the column beside the
341
- * sidebar and the scrolling page region.
342
- *
343
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
344
- */
345
- type ShellSlot = "root" | "main" | "content";
346
- /**
347
- * `Sidebar` and its parts, stamped as `data-slot="sidebar[-<part>]"`
348
- * (ADR-008). This is the anatomy `C-DOM-06` is waiting for: PRO and TAX carry
349
- * identical copies of `group-data-[labels=hide]/sidebar:*` and
350
- * `[&>div:first-child]` overrides because there is no name for
351
- * `section-header`, `link-label` or `user` today.
352
- *
353
- * `group/sidebar`, `data-labels`, `data-state`, `data-peek`, `data-overlay`,
354
- * `data-collapsible` and `data-variant` on the root are **unchanged** — they
355
- * are the frozen part of `C-DOM-06`, and no state attribute is re-stamped over
356
- * them. W7-03 adds `data-collapsed` to the slots and the `SidebarSection`
357
- * header slot; this change only names the parts.
358
- *
359
- * `group` is a `SidebarLinkGroup`: `group-link` is its activating row,
360
- * `group-trigger` its chevron and `group-content` the collapsible body.
361
- * The `tone` props on `SidebarSection` and `SidebarLinkBadge` get no
362
- * `data-intent`: they are `C-TONE`, and W3-21 defines the intent values.
363
- *
364
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
365
- */
366
- type SidebarSlot = "root" | "trigger" | "pin" | "brand" | "brand-text" | "section" | "section-header" | "section-label" | "link" | "link-label" | "link-action" | "link-badge" | "group" | "group-link" | "group-trigger" | "group-content" | "footer" | "user" | "user-name" | "user-subtitle";
367
- /**
368
- * `SidebarBrandSwitcher` parts, stamped as
369
- * `data-slot="sidebar-brand-switcher[-<part>]"` (ADR-008). Its menu is a
370
- * `DropdownMenuContent` and keeps that component's slots; its `trailing`
371
- * children are rendered bare, with no wrapper of ours to name (W7-03 gives
372
- * them one).
373
- *
374
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
375
- */
376
- type SidebarBrandSwitcherSlot = "root" | "trigger" | "icon";
377
- /**
378
- * `Text` parts, stamped as `data-slot="text"` (ADR-008). One part: the
379
- * element that carries the role, and the element `className` lands on (with
380
- * `asChild`, the child the caller supplied).
381
- *
382
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-12).
383
- */
384
- type TextSlot = "root";
385
- /**
386
- * `Heading` parts, stamped as `data-slot="heading"` (ADR-008). One part: the
387
- * `<h1>`…`<h6>` itself, which is the element `className` lands on.
388
- *
389
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-13).
390
- */
391
- type HeadingSlot = "root";
392
- /**
393
- * `Stack` has one part, its root, stamped as `data-slot="stack"` (ADR-008).
394
- * No state attributes: a responsive `direction` has no single value to
395
- * stamp, and the primitive's job is spacing, not state.
396
- *
397
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-15).
398
- */
399
- type StackSlot = "root";
400
- /**
401
- * `Inline` has one part, its root, stamped as `data-slot="inline"` (ADR-008).
402
- *
403
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-15).
404
- */
405
- type InlineSlot = "root";
406
- /**
407
- * `Surface` has one part, its root, stamped as `data-slot="surface"`
408
- * (ADR-008). Composites built on it (Card, W3-17) declare their own parts.
409
- *
410
- * @experimental Slot names are experimental until ADR-008 is accepted (W2-16).
411
- */
412
- type SurfaceSlot = "root";
413
- /**
414
- * `Avatar` parts, stamped as `data-slot="avatar[-<part>]"` (ADR-008, W3-16).
415
- * `root` is the outer positioning wrapper — the element a consumer's
416
- * `shrink-0` / `mt-0.5` overrides are aimed at and `classNames.root` reaches;
417
- * `frame` is the circle (the Radix root: image and fallback clip to it), and
418
- * the element `className` and `ref` keep landing on behind the compatibility
419
- * entry (target architecture §29.1, ADR-008 decision 6 — the landing does not
420
- * move silently). `image` and `fallback` are the Radix image and fallback;
421
- * `status` is the corner dot, rendered only when `status` is set.
422
- * States on the root: `data-size`, `data-variant`.
423
- *
424
- * @experimental Slot names are experimental until ADR-008 is accepted (W3-16).
425
- */
426
- type AvatarSlot = "root" | "frame" | "image" | "fallback" | "status";
427
- /**
428
- * `Card` parts, stamped as `data-slot="card[-<part>]"` (ADR-008, W3-17). The
429
- * root is a `Surface` (W2-16) that stamps `card` over `surface`: a composite
430
- * declares its own parts. Each part is a real JSX component (`CardHeader`,
431
- * `CardTitle`, …) and takes `className` itself, so `Card` has no `classNames`
432
- * (ADR-008 decision 4). States on the root: `data-variant`.
433
- *
434
- * @experimental Slot names are experimental until ADR-008 is accepted (W3-17).
435
- */
436
- type CardSlot = "root" | "header" | "title" | "description" | "action" | "content" | "footer";
437
- /**
438
- * `StatusBadge` parts, stamped as `data-slot="status-badge[-<part>]"`
439
- * (ADR-008): the root, the `indicator` (dot, icon or spinner — one at a time)
440
- * and the `label`. States on the root: `data-variant`, `data-intent`,
441
- * `data-size`, `data-loading`.
442
- *
443
- * @experimental Slot names are experimental until ADR-008 is accepted (W3-14).
444
- */
445
- type StatusBadgeSlot = "root" | "indicator" | "label";
446
- /**
447
- * `IconButton` parts, stamped as `data-slot="icon-button[-<part>]"` (ADR-008):
448
- * the square root, the `icon` box and the `spinner` that replaces it while
449
- * loading. States on the root: `data-variant`, `data-intent`, `data-size`,
450
- * `data-disabled`, `data-loading`, `data-pressed`.
451
- *
452
- * @experimental Slot names are experimental until ADR-008 is accepted (W3-09).
453
- */
454
- type IconButtonSlot = "root" | "icon" | "spinner";
455
- /**
456
- * `Chip` parts, stamped as `data-slot="chip[-<part>]"` (ADR-008): the root
457
- * (the pressable itself, or the group that holds a pressable label and the
458
- * `remove` button), the leading `icon`, the `label`, the `count` and the
459
- * `remove` button. States on the root: `data-variant`, `data-intent`,
460
- * `data-size`, `data-disabled`, `data-pressed`.
461
- *
462
- * @experimental Slot names are experimental until ADR-008 is accepted (W3-15).
463
- */
464
- type ChipSlot = "root" | "icon" | "label" | "count" | "remove";
465
- /**
466
- * `Field` parts, stamped as `data-slot="field[-<part>]"` (ADR-008, W4-01):
467
- * the root (the layout wrapper, no chrome), the `label` (a `Label` rendered
468
- * inside a field stamps this over its own `label`, the way `Card` stamps
469
- * `card` over `surface`), its `required` asterisk and `optional` indicator,
470
- * the `description` and the `error`. The control is not a part: it keeps its
471
- * own anatomy (`input`, `select-trigger`, …) and is found by the field's id.
472
- * States on the root: `data-orientation`, `data-invalid`, `data-disabled`,
473
- * `data-required`.
474
- *
475
- * @experimental Slot names are experimental until ADR-008 is accepted (W4-01).
476
- */
477
- type FieldSlot = "root" | "label" | "required" | "optional" | "description" | "error";
478
- /**
479
- * `Fieldset` parts, stamped as `data-slot="fieldset[-<part>]"` (ADR-008,
480
- * W4-01): the `<fieldset>` root and its `<legend>`. States on the root:
481
- * `data-disabled`, `data-invalid`.
482
- *
483
- * @experimental Slot names are experimental until ADR-008 is accepted (W4-01).
484
- */
485
- type FieldsetSlot = "root" | "legend";
486
- /**
487
- * `Combobox` parts, stamped as `data-slot="combobox[-<part>]"` (ADR-008,
488
- * W4-10): the `root` (the frame that holds the control and its form bridge),
489
- * the `control` (the field-shaped box the popover anchors to), the `value`
490
- * (a custom `renderValue` node over the input), the `chips` row and its
491
- * `Chip`s in `multiple` mode, the `input` (the `role="combobox"` element that
492
- * keeps focus), the leading `icon`, the `clear` and `toggle` buttons; then
493
- * the portalled `content` with an optional `header`, the `list`
494
- * (`role="listbox"`), a `group` with its `group-heading`, each `item`
495
- * (`role="option"`, see `behavior/collection/item-attributes.ts`) and its
496
- * `item-indicator`, the `create` row, the `empty` and `loading` states and an
497
- * optional `footer`. States on the root: `data-state` (`open` · `closed`),
498
- * `data-disabled`, `data-invalid`, `data-size`.
499
- *
500
- * @experimental Slot names are experimental until ADR-008 is accepted (W4-10).
501
- */
502
- type ComboboxSlot = "root" | "control" | "value" | "chips" | "input" | "icon" | "clear" | "toggle" | "content" | "header" | "list" | "group" | "group-heading" | "item" | "item-indicator" | "create" | "empty" | "loading" | "footer";
503
-
504
50
  /**
505
51
  * L1a behaviour primitive (private). Not exported from the package.
506
52
  *
@@ -851,106 +397,6 @@ interface AvatarProps extends Omit<React$1.ComponentPropsWithoutRef<typeof Avata
851
397
  }
852
398
  declare const Avatar: React$1.ForwardRefExoticComponent<AvatarProps & React$1.RefAttributes<HTMLSpanElement>>;
853
399
 
854
- /** The emphasis subset a badge offers. @experimental */
855
- type BadgeVariant = Extract<Variant, "solid" | "soft" | "outline">;
856
- /** The badge's own size scale, spelled with the shared names (§17). @experimental */
857
- type BadgeSize = Extract<ControlSize, "xs" | "sm" | "md">;
858
- /** Corner treatment; omitted keeps today's corner (D1). @experimental */
859
- type BadgeShape = Extract<Shape, "rounded" | "pill">;
860
- /**
861
- * The one-axis words Badge accepted before W3-13. Each resolves to a
862
- * `{ variant, intent }` pair through `resolveBadgeAppearance` and renders the
863
- * same classes it always did.
864
- *
865
- * @deprecated Use `variant` (`solid | soft | outline`) with `intent` instead:
866
- * `default` → `solid` + `brand`, `secondary` → `soft` + `neutral`,
867
- * `destructive` → `soft` + `danger`, `success | warning | info` → `soft` +
868
- * the same word. `outline` is already an emphasis and is not deprecated.
869
- */
870
- type BadgeLegacyVariant = "default" | "secondary" | "destructive" | "success" | "warning" | "info";
871
- /** A resolved `{ variant, intent }` pair. @experimental */
872
- interface BadgeAppearance {
873
- variant: BadgeVariant;
874
- intent: Intent;
875
- }
876
- /** What a badge can be asked for: the two axes, either one, or a legacy word. @experimental */
877
- interface BadgeAppearanceInput {
878
- variant?: BadgeVariant | BadgeLegacyVariant | null | undefined;
879
- intent?: Intent | null | undefined;
880
- }
881
- /**
882
- * Resolves what a consumer asked for into the pair the class table is keyed by.
883
- *
884
- * - both axes: taken as given (a legacy `variant` word with an explicit
885
- * `intent` keeps the word's emphasis and takes the intent);
886
- * - `variant` only: the per-variant default intent, or the legacy pair;
887
- * - `intent` only: the per-intent default variant;
888
- * - nothing: `solid` + `brand`, today's default.
889
- *
890
- * @experimental
891
- */
892
- declare function resolveBadgeAppearance({ variant, intent, }?: BadgeAppearanceInput): BadgeAppearance;
893
- /** The inputs `badgeVariants` accepts (the legacy `variant` words included). @experimental */
894
- interface BadgeVariantsProps extends BadgeAppearanceInput {
895
- size?: BadgeSize | null | undefined;
896
- shape?: BadgeShape | null | undefined;
897
- class?: string | null | undefined;
898
- className?: string | null | undefined;
899
- }
900
- /**
901
- * The badge's class string, for consumers that style their own element.
902
- * Same call shape as before W3-13 (`variant`, `size`, `class`/`className`),
903
- * plus `intent` and `shape`; a legacy `variant` word yields the string it
904
- * always did.
905
- */
906
- declare function badgeVariants({ variant, intent, size, shape, class: classValue, className, }?: BadgeVariantsProps): string;
907
- interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
908
- /**
909
- * Visual emphasis: `solid` (filled), `soft` (tinted, the status look) or
910
- * `outline`. Omitted, it follows `intent` (brand is solid, the rest soft);
911
- * with neither prop the badge is `solid` + `brand`, as it always was.
912
- * The legacy one-axis words are accepted and deprecated (`BadgeLegacyVariant`).
913
- */
914
- variant?: BadgeVariant | BadgeLegacyVariant;
915
- /**
916
- * Semantic meaning → colour family. Omitted, it follows `variant`
917
- * (`solid` is brand, `soft` and `outline` are neutral).
918
- * @experimental
919
- */
920
- intent?: Intent;
921
- /** `xs` (10px text, W3-13), `sm` (default) or `md`. */
922
- size?: BadgeSize;
923
- /**
924
- * Corner treatment. Omitted keeps today's corner (`--radius-pill`);
925
- * `rounded` is the `radius.badge` role, `pill` is `radius.full` (D1).
926
- * @experimental
927
- */
928
- shape?: BadgeShape;
929
- /** Leading status dot, drawn in the text colour. */
930
- dot?: boolean;
931
- /** Leading 14px glyph. */
932
- icon?: React.ReactNode;
933
- }
934
- declare const Badge: React$1.ForwardRefExoticComponent<BadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
935
-
936
- /**
937
- * Blockquote — semantic quote with optional attribution. Uses `font-display`
938
- * (Inter) at a comfortable reading scale; smart quotes are wrapped automatically.
939
- */
940
- interface BlockquoteProps extends React.BlockquoteHTMLAttributes<HTMLQuoteElement> {
941
- author?: string;
942
- role?: string;
943
- }
944
- declare const Blockquote: React$1.ForwardRefExoticComponent<BlockquoteProps & React$1.RefAttributes<HTMLQuoteElement>>;
945
-
946
- interface BrandIconProps extends React.SVGAttributes<SVGElement> {
947
- size?: number;
948
- }
949
- declare function AssureProBrandIcon({ size, ...props }: BrandIconProps): react_jsx_runtime.JSX.Element;
950
- declare function AssureAuditBrandIcon({ size, ...props }: BrandIconProps): react_jsx_runtime.JSX.Element;
951
- declare function AssureBooksBrandIcon({ size, ...props }: BrandIconProps): react_jsx_runtime.JSX.Element;
952
- declare function AssureTaxBrandIcon({ size, ...props }: BrandIconProps): react_jsx_runtime.JSX.Element;
953
-
954
400
  /**
955
401
  * Breadcrumb — semantic navigation primitive. Uses the catalog `ChevronRightIcon` as the
956
402
  * default separator. Current page (BreadcrumbPage) leans on Pro purple to
@@ -966,6 +412,16 @@ declare const BreadcrumbList: React$1.ForwardRefExoticComponent<BreadcrumbListPr
966
412
  type BreadcrumbItemProps = React.HTMLAttributes<HTMLLIElement>;
967
413
  declare const BreadcrumbItem: React$1.ForwardRefExoticComponent<BreadcrumbItemProps & React$1.RefAttributes<HTMLLIElement>>;
968
414
  type BreadcrumbLinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement>;
415
+ /**
416
+ * A breadcrumb trail step.
417
+ *
418
+ * Renders through the provider's `linkComponent` when one is configured and an
419
+ * `href` is given (W7-05), so an app-shell breadcrumb routes client-side
420
+ * instead of triggering a full page load — the trail is the app's primary
421
+ * upward navigation, and in TAX it is where the page title lives. Without a
422
+ * provider, or without an `href`, it stays the plain `<a>` it has always been,
423
+ * so the default rendering is unchanged.
424
+ */
969
425
  declare const BreadcrumbLink: React$1.ForwardRefExoticComponent<BreadcrumbLinkProps & React$1.RefAttributes<HTMLAnchorElement>>;
970
426
  type BreadcrumbPageProps = React.HTMLAttributes<HTMLSpanElement>;
971
427
  declare const BreadcrumbPage: React$1.ForwardRefExoticComponent<BreadcrumbPageProps & React$1.RefAttributes<HTMLSpanElement>>;
@@ -1258,43 +714,6 @@ declare const CardContent: React$1.ForwardRefExoticComponent<React$1.HTMLAttribu
1258
714
  declare const CardFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
1259
715
  declare const CardAction: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
1260
716
 
1261
- /**
1262
- * CategoryDivider — THE category separator: a tone-tinted category pill, a
1263
- * flex-1 hairline rule, and an optional trailing count chip. Used to group a
1264
- * run of feed items / cards by service line. Per the ONE-brand rule, this tag
1265
- * is the *only* place per-service color is allowed — everything else stays on
1266
- * the single brand. Pure presentational.
1267
- *
1268
- * Tones map to the suite tints:
1269
- * brand → --color-brand-pro · audit → --color-brand-audit ·
1270
- * books → --color-brand-books · tax → --color-brand-tax ·
1271
- * neutral → --color-fg-3
1272
- */
1273
- declare const categoryTagVariants: (props?: ({
1274
- tone?: "brand" | "neutral" | "audit" | "books" | "tax" | null | undefined;
1275
- } & class_variance_authority_types.ClassProp) | undefined) => string;
1276
- type CategoryTone = NonNullable<VariantProps<typeof categoryTagVariants>["tone"]>;
1277
- interface CategoryTagProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof categoryTagVariants> {
1278
- /** Tag label text. */
1279
- label: string;
1280
- /** Optional leading icon rendered inside the pill. */
1281
- icon?: React.ReactNode;
1282
- }
1283
- /**
1284
- * CategoryTag — the standalone tone-tinted category pill, reusable in card
1285
- * headers and feed-item rows. Same atom CategoryDivider renders on its left.
1286
- */
1287
- declare const CategoryTag: React$1.ForwardRefExoticComponent<CategoryTagProps & React$1.RefAttributes<HTMLSpanElement>>;
1288
- interface CategoryDividerProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof categoryTagVariants> {
1289
- /** Category label shown in the tone-tinted tag. */
1290
- label: string;
1291
- /** Optional leading icon rendered inside the tag. */
1292
- icon?: React.ReactNode;
1293
- /** Optional item count → trailing neutral count chip. */
1294
- count?: number;
1295
- }
1296
- declare const CategoryDivider: React$1.ForwardRefExoticComponent<CategoryDividerProps & React$1.RefAttributes<HTMLDivElement>>;
1297
-
1298
717
  /** The states a checkbox renders: checked, unchecked, or partly checked. */
1299
718
  type CheckboxChecked = boolean | "indeterminate";
1300
719
  interface CheckboxProps extends Omit<React$1.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>, "checked" | "defaultChecked"> {
@@ -1325,43 +744,10 @@ interface CheckboxProps extends Omit<React$1.ComponentPropsWithoutRef<typeof Che
1325
744
  }
1326
745
  declare const Checkbox: React$1.ForwardRefExoticComponent<CheckboxProps & React$1.RefAttributes<HTMLButtonElement>>;
1327
746
 
1328
- type ClientSelectOption = {
1329
- id: string;
1330
- label: string;
1331
- email?: string;
1332
- };
1333
- interface ClientSelectProps {
1334
- clients: ClientSelectOption[];
1335
- value: string | null;
1336
- onChange: (clientId: string | null) => void;
1337
- name?: string;
1338
- error?: string;
1339
- className?: string;
1340
- placeholder?: string;
1341
- }
1342
- declare function ClientSelect({ clients, value, onChange, name, error, className, placeholder, }: ClientSelectProps): react_jsx_runtime.JSX.Element;
1343
- declare namespace ClientSelect {
1344
- var displayName: string;
1345
- }
1346
-
1347
747
  declare const Collapsible: React$1.ForwardRefExoticComponent<Omit<CollapsiblePrimitive.CollapsibleProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1348
748
  declare const CollapsibleTrigger: React$1.ForwardRefExoticComponent<Omit<CollapsiblePrimitive.CollapsibleTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
1349
749
  declare const CollapsibleContent: React$1.ForwardRefExoticComponent<Omit<CollapsiblePrimitive.CollapsibleContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1350
750
 
1351
- /**
1352
- * ComingSoon — placeholder pattern for unreleased modules. Pro-tinted icon
1353
- * halo, dashed Assure border, "In Development" pill.
1354
- *
1355
- * Public API preserved: `icon`, `title`, `description`, `features`.
1356
- */
1357
- interface ComingSoonProps extends React.HTMLAttributes<HTMLDivElement> {
1358
- icon: React.ReactNode;
1359
- title: string;
1360
- description: string;
1361
- features: string[];
1362
- }
1363
- declare const ComingSoon: React$1.ForwardRefExoticComponent<ComingSoonProps & React$1.RefAttributes<HTMLDivElement>>;
1364
-
1365
751
  interface CommandItem {
1366
752
  id: string;
1367
753
  label: string;
@@ -1854,55 +1240,6 @@ interface DismissibleChipProps extends Omit<React$1.ButtonHTMLAttributes<HTMLBut
1854
1240
  }
1855
1241
  declare const DismissibleChip: React$1.ForwardRefExoticComponent<DismissibleChipProps & React$1.RefAttributes<HTMLButtonElement>>;
1856
1242
 
1857
- /**
1858
- * DocumentSourceTag — provenance atom for a document row/card: how the file
1859
- * arrived. Mirrors StatusPill's shape (a `source` enum maps to label + icon +
1860
- * tone), so call sites read as `<DocumentSourceTag source="requested" />`
1861
- * instead of repeating the label/icon/colour triple.
1862
- *
1863
- * requested → brand tint · send glyph (client fulfilled a firm request)
1864
- * direct → outline · upload glyph (client uploaded unprompted)
1865
- * internal → neutral · shield glyph (firm-prepared, not client-visible)
1866
- *
1867
- * Pass `children` to override the label while keeping the mapped tone/icon,
1868
- * `icon` to swap the glyph, or `hideIcon` for a label-only tag.
1869
- */
1870
- type DocumentSource = "requested" | "direct" | "internal";
1871
- interface DocumentSourceTagProps extends React.HTMLAttributes<HTMLSpanElement> {
1872
- source: DocumentSource;
1873
- /** Override the leading glyph for the mapped source. */
1874
- icon?: React.ReactNode;
1875
- /** Render label-only, with no leading glyph. */
1876
- hideIcon?: boolean;
1877
- }
1878
- declare const DocumentSourceTag: React$1.ForwardRefExoticComponent<DocumentSourceTagProps & React$1.RefAttributes<HTMLSpanElement>>;
1879
-
1880
- /**
1881
- * DocumentsWorkspaceLayout — 3-pane CSS-grid shell for a firm Documents workspace.
1882
- *
1883
- * Renders three independently-scrolling columns: a clients rail, a folder tree,
1884
- * and a files area. The root fills its parent height and does not scroll itself.
1885
- * Each pane is a flex column container; consumers are responsible for placing
1886
- * their own scroll regions inside the slots.
1887
- *
1888
- * Responsive grid:
1889
- * Base (<lg): 2 visible columns — clientsRail + filesArea. The folderTree
1890
- * pane is hidden so it does not occupy the 2-column base template.
1891
- * lg (>=1024px): All 3 columns — 248px rail | 220px folders | remaining files.
1892
- * xl (>=1280px): Wider columns — 280px rail | 244px folders | remaining files.
1893
- *
1894
- * No padding is imposed on any pane; the consumer owns spacing inside each slot.
1895
- */
1896
- interface DocumentsWorkspaceLayoutProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
1897
- /** Left column — client list rail (always visible). */
1898
- clientsRail: React.ReactNode;
1899
- /** Middle column — folder/category tree (hidden below lg breakpoint). */
1900
- folderTree: React.ReactNode;
1901
- /** Right column — file list and preview area (always visible). */
1902
- filesArea: React.ReactNode;
1903
- }
1904
- declare const DocumentsWorkspaceLayout: React$1.ForwardRefExoticComponent<DocumentsWorkspaceLayoutProps & React$1.RefAttributes<HTMLDivElement>>;
1905
-
1906
1243
  /**
1907
1244
  * DonutChart — segmented SVG arc meter (the "Review control center" donut).
1908
1245
  *
@@ -2008,51 +1345,179 @@ declare const DropdownMenuShortcut: {
2008
1345
  * EmptyState — display headline (Inter), fg-3 description, icon tile on surface-2 with a
2009
1346
  * hairline ring (Polish 2 §3.10: the tile reads as a surface, the icon as content).
2010
1347
  *
2011
- * Public API preserved: `icon`, `title`, `description`, `action`.
1348
+ * Public API preserved: `icon`, `title`, `description`, `action`. `size="compact"`
1349
+ * (W6-08) is the in-table variant: less vertical padding, a smaller icon tile.
1350
+ * W7-13 adds `size="page"`, the `section` spelling of today's `default`,
1351
+ * `headingLevel` and `align` — 165 consumer files, plus PRO `CompactEmptyState`
1352
+ * (8) and TAX `CardEmpty` (6), all draw one of these three scales. Every
1353
+ * addition is additive; the default render is unchanged.
1354
+ */
1355
+ /**
1356
+ * The vertical scale of an `EmptyState`. `page` is a whole route, `section` a
1357
+ * panel body and `compact` an in-table row. `"default"` is the pre-W7-13
1358
+ * spelling of `section`, so existing call sites render identically.
2012
1359
  */
1360
+ type EmptyStateSize = "page" | "section" | "compact" | "default";
1361
+ /** Where the content sits on the cross axis. @experimental */
1362
+ type EmptyStateAlign = "center" | "start";
2013
1363
  interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {
2014
1364
  icon?: React.ReactNode;
2015
1365
  title: string;
2016
1366
  description?: string;
2017
1367
  action?: React.ReactNode;
1368
+ /** `page`, `section` (today's `default`) or `compact`. @default "section" @experimental */
1369
+ size?: EmptyStateSize;
1370
+ /**
1371
+ * The document-outline level of the title; the visual size does not change
1372
+ * with it. `3` is the tag the title has always rendered. @experimental
1373
+ */
1374
+ headingLevel?: HeadingLevel;
1375
+ /** `center` (today) or `start`, for a state inside a left-aligned panel. @default "center" @experimental */
1376
+ align?: EmptyStateAlign;
2018
1377
  }
2019
1378
  declare const EmptyState: React$1.ForwardRefExoticComponent<EmptyStateProps & React$1.RefAttributes<HTMLDivElement>>;
2020
1379
 
2021
1380
  /**
2022
- * FileChip — compact attachment row: a colored file-type tile, the file
2023
- * name, a "size · when" meta line, and an optional trailing action
2024
- * (View / Download). Used in the AI receipt panel, document mini-lists,
2025
- * and message attachments.
1381
+ * ErrorState — the failed-to-load counterpart of `EmptyState` (W6-08, grown by
1382
+ * W7-12): a danger-tinted icon tile, a title, an optional description, a retry
1383
+ * button when `onRetry` is given and an optional collapsible `details` block.
2026
1384
  *
2027
- * The tile tone keys off `kind`: documents are danger-tinted (PDF red),
2028
- * sheets success, images info, generic neutral — a quick visual file-type
2029
- * cue without a bespoke icon per extension.
1385
+ * W7-12 upstreams the shape all three products hand-rolled (PRO's wrapper, 116
1386
+ * importers; PORTAL's, 19; TAX `CardFailed`) — target architecture §36.
1387
+ * **Reporting (Sentry), stale-build detection and copy policy stay in the
1388
+ * product**: this component neither logs nor reloads, it only renders and calls
1389
+ * `onRetry`. Every new prop is additive and the default render is unchanged.
1390
+ *
1391
+ * @experimental
2030
1392
  */
2031
- type FileKind = "doc" | "sheet" | "image" | "generic";
2032
- interface FileChipProps extends React.HTMLAttributes<HTMLDivElement> {
2033
- name: string;
2034
- /** Right-side meta, e.g. "240 KB · uploaded just now". */
2035
- meta?: React.ReactNode;
2036
- kind?: FileKind;
2037
- /** Custom glyph inside the tile; defaults to a document icon. */
1393
+ /**
1394
+ * The vertical scale of an `ErrorState`. `page` is a full-route failure,
1395
+ * `section` a panel body and `compact` an in-table row. `"default"` is kept as
1396
+ * the pre-W7-12 spelling of `section`, so existing call sites render
1397
+ * identically.
1398
+ */
1399
+ type ErrorStateSize = "page" | "section" | "compact" | "default";
1400
+
1401
+ interface ErrorStateProps extends React.HTMLAttributes<HTMLDivElement> {
1402
+ /** Replaces the default warning glyph. */
2038
1403
  icon?: React.ReactNode;
2039
- /** Trailing action node (a Button / link). */
1404
+ /** Default `messages.errorState.title` (`"Something went wrong"`). */
1405
+ title?: string;
1406
+ description?: string;
1407
+ /** Renders a retry button (`messages.errorState.retry`, `"Try again"`) that calls it. */
1408
+ onRetry?: () => void;
1409
+ /** Overrides the retry button's label without touching the catalogue. @experimental */
1410
+ retryLabel?: React.ReactNode;
1411
+ /** Extra action rendered next to (or instead of) the retry button. */
2040
1412
  action?: React.ReactNode;
1413
+ /**
1414
+ * The technical detail behind the failure — a request id, a stack, the raw
1415
+ * message — rendered collapsed behind a "Show details" disclosure. What goes
1416
+ * in it (and whether it is reported) stays the product's call. @experimental
1417
+ */
1418
+ details?: React.ReactNode;
1419
+ /** Renders `details` open on mount. @default false @experimental */
1420
+ defaultDetailsOpen?: boolean;
1421
+ /**
1422
+ * The document-outline level of the title; the visual size does not change
1423
+ * with it. `3` is the tag the title has always rendered. @experimental
1424
+ */
1425
+ headingLevel?: HeadingLevel;
1426
+ /** `page`, `section` (today's `default`) or `compact`. @default "section" */
1427
+ size?: ErrorStateSize;
1428
+ /** Overrides of the copy (W5-22): prop > provider `messages.errorState` > English. */
1429
+ messages?: Partial<ErrorStateMessages>;
2041
1430
  }
2042
- declare const FileChip: React$1.ForwardRefExoticComponent<FileChipProps & React$1.RefAttributes<HTMLDivElement>>;
1431
+ declare const ErrorState: React$1.ForwardRefExoticComponent<ErrorStateProps & React$1.RefAttributes<HTMLDivElement>>;
2043
1432
 
2044
1433
  /**
2045
- * FileTypeBadge — a colored format square for a file type.
1434
+ * SectionCard — a `Card` with its header already composed (W7-14).
2046
1435
  *
2047
- * A static, presentational tile showing a short uppercase format token
2048
- * (PDF / IMG / DOC …) tinted by category. Consolidates the per-surface
2049
- * `FileTypeIcon` re-implementations (`.v2-fileic`, `.txq-ai-file-ico`,
2050
- * invoice/attachment tiles) into one primitive.
1436
+ * This is the surface the three products each hand-rolled: PRO `SettingsSection`
1437
+ * (×11) and `TileCard` (×14), TAX `DashboardCard` (×8) — a titled panel with an
1438
+ * optional sub-line, an optional trailing action and a body. It adds nothing to
1439
+ * `Card`; it is the four-part composition written once, so a titled panel is a
1440
+ * single element instead of six.
2051
1441
  *
2052
- * Color map (auto-derived from the resolved type):
2053
- * PDF → danger (red) · IMG/PNG/JPG → info (blue) · DOC/DOCX → accent (blue)
2054
- * XLS/XLSX/CSV → success (green) · PPT → warning · ZIP → neutral
2055
- * anything else → neutral
1442
+ * Deltas against the local components it replaces are listed in the W7-14 PR
1443
+ * (TAX's tally pill, `info` tooltip and `View all` link, PRO's `TileCard` hover)
1444
+ * stay product concerns and go in `actions`.
1445
+ *
1446
+ * @experimental
1447
+ */
1448
+ interface SectionCardProps extends Omit<CardProps, "title"> {
1449
+ /** The panel heading. Omit it for a bare `Card`. */
1450
+ title?: React.ReactNode;
1451
+ /** A sub-line under the title. */
1452
+ description?: React.ReactNode;
1453
+ /** Trailing header slot: a link, a menu, a tally — whatever the panel needs. */
1454
+ actions?: React.ReactNode;
1455
+ /**
1456
+ * The document-outline level of the title; the visual size does not change
1457
+ * with it. `3` is `CardTitle`'s own default; a panel directly under a page
1458
+ * `<h1>` wants `2`.
1459
+ * @default 3
1460
+ */
1461
+ headingLevel?: HeadingLevel;
1462
+ /** A bordered footer row under the body. */
1463
+ footer?: React.ReactNode;
1464
+ /**
1465
+ * Drops the body's padding, for a child that owns its own row insets (a list,
1466
+ * a table). TAX `DashboardCard flush` and PRO `TileCard`'s list bodies.
1467
+ * @default false
1468
+ */
1469
+ flush?: boolean;
1470
+ /** One class per part. */
1471
+ classNames?: {
1472
+ header?: string;
1473
+ title?: string;
1474
+ description?: string;
1475
+ content?: string;
1476
+ };
1477
+ }
1478
+ declare const SectionCard: React$1.ForwardRefExoticComponent<SectionCardProps & React$1.RefAttributes<HTMLDivElement>>;
1479
+
1480
+ /**
1481
+ * AvatarGroup — the overlapping avatar stack the products hand-rolled (W7-16;
1482
+ * PRO `AvatarStack`, 19 importers, TAX's assignee cluster). Children are
1483
+ * `Avatar`s; the group overlaps them, rings each one against the page so the
1484
+ * stack reads as separate faces, shows the first `max` and collapses the rest
1485
+ * into a `+N` bubble whose label comes from the messages catalogue.
1486
+ *
1487
+ * `size` is Avatar's own scale (W3-16) and is passed down to every child that
1488
+ * did not set one, so a stack is sized once.
1489
+ *
1490
+ * @experimental
1491
+ */
1492
+ type AvatarGroupSize = NonNullable<AvatarProps["size"]>;
1493
+ /** Props of `AvatarGroup`. @experimental */
1494
+ interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {
1495
+ /** `Avatar` elements. */
1496
+ children?: React.ReactNode;
1497
+ /** How many avatars to render before the overflow bubble. @default 4 */
1498
+ max?: number;
1499
+ /**
1500
+ * The real total, when more people exist than there are children (a list that
1501
+ * only fetched the first few). Defaults to the number of children.
1502
+ */
1503
+ total?: number;
1504
+ /** Avatar's size scale; applied to every child that has none. @default "sm" */
1505
+ size?: AvatarGroupSize;
1506
+ }
1507
+ declare const AvatarGroup: React$1.ForwardRefExoticComponent<AvatarGroupProps & React$1.RefAttributes<HTMLDivElement>>;
1508
+
1509
+ /**
1510
+ * FileTypeBadge — a colored format square for a file type.
1511
+ *
1512
+ * A static, presentational tile showing a short uppercase format token
1513
+ * (PDF / IMG / DOC …) tinted by category. Consolidates the per-surface
1514
+ * `FileTypeIcon` re-implementations (`.v2-fileic`, `.txq-ai-file-ico`,
1515
+ * invoice/attachment tiles) into one primitive.
1516
+ *
1517
+ * Color map (auto-derived from the resolved type):
1518
+ * PDF → danger (red) · IMG/PNG/JPG → info (blue) · DOC/DOCX → accent (blue)
1519
+ * XLS/XLSX/CSV → success (green) · PPT → warning · ZIP → neutral
1520
+ * anything else → neutral
2056
1521
  *
2057
1522
  * Pass `format` (or its alias `type`) with a format/extension token, or
2058
1523
  * `fileName` to derive the type from the extension. Override the auto color
@@ -2611,77 +2076,6 @@ interface LoadingRowsProps extends React.HTMLAttributes<HTMLDivElement> {
2611
2076
  }
2612
2077
  declare const LoadingRows: React$1.ForwardRefExoticComponent<LoadingRowsProps & React$1.RefAttributes<HTMLDivElement>>;
2613
2078
 
2614
- /**
2615
- * Logo — Assure suite wordmark. Renders the official product artwork when
2616
- * available, and falls back to a brand glyph + text lockup otherwise.
2617
- *
2618
- * The product suffix is configurable so the same component serves every
2619
- * Assure product. The default preserves the original "Assure Pro" output —
2620
- * existing consumers do not need to change anything.
2621
- *
2622
- * Public API:
2623
- * - `size`, `href`, `showText`, `inverted` (visual)
2624
- * - `productName` (the suffix text; `null` renders just "Assure")
2625
- * - `className`, `iconClassName`, `textClassName` (style overrides)
2626
- *
2627
- * The link and the wordmark image are the provider's `linkComponent` /
2628
- * `imageComponent` when a `DesignSystemProvider` supplies them (W5-21,
2629
- * ADR-010), else `next/link` / `next/image`; the static imports stay until 2.0
2630
- * (C-NEXT-PEER), so a Next.js app without a provider is unchanged.
2631
- *
2632
- * By default the lockup is a link (`href="/"`). Pass `href={null}` to render a
2633
- * non-interactive `<span>` wrapper instead — required when embedding the lockup
2634
- * inside another interactive element (a menu trigger `<button>`, a
2635
- * `DropdownMenuItem`) where a nested `<a>` would be invalid HTML or would race
2636
- * the parent's click handler.
2637
- */
2638
- declare const sizeStyles: {
2639
- readonly sm: {
2640
- readonly icon: 20;
2641
- readonly text: "ds:text-sm";
2642
- readonly gap: "ds:gap-2";
2643
- readonly assetHeight: 24;
2644
- };
2645
- readonly md: {
2646
- readonly icon: 24;
2647
- readonly text: "ds:text-[17px]";
2648
- readonly gap: "ds:gap-2.5";
2649
- readonly assetHeight: 30;
2650
- };
2651
- readonly lg: {
2652
- readonly icon: 32;
2653
- readonly text: "ds:text-xl";
2654
- readonly gap: "ds:gap-3";
2655
- readonly assetHeight: 40;
2656
- };
2657
- readonly xl: {
2658
- readonly icon: 40;
2659
- readonly text: "ds:text-2xl";
2660
- readonly gap: "ds:gap-3.5";
2661
- readonly assetHeight: 48;
2662
- };
2663
- };
2664
- interface LogoProps {
2665
- size?: keyof typeof sizeStyles;
2666
- /** Link target for the lockup. Pass `null` to render a non-interactive `<span>` wrapper (for embedding inside another interactive element). Defaults to `"/"`. */
2667
- href?: string | null;
2668
- showText?: boolean;
2669
- className?: string;
2670
- iconClassName?: string;
2671
- textClassName?: string;
2672
- /**
2673
- * Product suffix rendered after "Assure" (e.g. "Pro", "Audit"). Pass `null`
2674
- * to render just "Assure". A few products are standalone brands whose
2675
- * wordmark is the complete identity (e.g. "Teams" → myCPE Teams) — those
2676
- * render their own name with no "Assure" prefix. Defaults to "Pro" for
2677
- * backwards compatibility.
2678
- */
2679
- productName?: string | null;
2680
- /** When true, render on dark/brand surfaces (white "Assure" + lighter suffix). */
2681
- inverted?: boolean;
2682
- }
2683
- declare function Logo({ size, href, showText, className, iconClassName, textClassName, productName, inverted, }: LogoProps): react_jsx_runtime.JSX.Element;
2684
-
2685
2079
  /**
2686
2080
  * MasterDetailLayout — responsive list + detail two-pane scaffold.
2687
2081
  *
@@ -2710,7 +2104,16 @@ interface MasterDetailLayoutProps extends Omit<React.HTMLAttributes<HTMLDivEleme
2710
2104
  onBack?: () => void;
2711
2105
  /** Accessible label for the mobile back button. */
2712
2106
  backLabel?: string;
2713
- /** Width of the list column on desktop. Number is treated as px. */
2107
+ /**
2108
+ * Width of the list column on desktop. Number is treated as px. Written to
2109
+ * `--ds-master-detail-list-width` on the root, which is also the supported
2110
+ * CSS hook (W7-07, replaces the `[&>*:first-child]` width override of
2111
+ * C-DOM-03). The desktop width is now the pane's only width utility, so it
2112
+ * can no longer lose to `w-full` in a consumer's utility order — the bug the
2113
+ * workaround existed for. The pre-W7-07 `--master-list-width` is still
2114
+ * written and still read as the fallback, so anything that set it from
2115
+ * outside keeps working (C-DOM-03).
2116
+ */
2714
2117
  listWidth?: number | string;
2715
2118
  }
2716
2119
  declare const MasterDetailLayout: React$1.ForwardRefExoticComponent<MasterDetailLayoutProps & React$1.RefAttributes<HTMLDivElement>>;
@@ -2852,19 +2255,57 @@ declare namespace OTPInput {
2852
2255
  var displayName: string;
2853
2256
  }
2854
2257
 
2855
- interface PaginationProps extends React.HTMLAttributes<HTMLElement> {
2856
- currentPage: number;
2857
- totalPages: number;
2858
- onPageChange: (page: number) => void;
2258
+ interface PaginationProps extends Omit<React.HTMLAttributes<HTMLElement>, "onChange"> {
2259
+ /** 1-indexed current page. */
2260
+ page?: number;
2261
+ /** Total number of pages. Derived from `totalItems / pageSize` when omitted. */
2262
+ pageCount?: number;
2263
+ onPageChange?: (page: number) => void;
2264
+ /** How many page numbers to show on each side of the current page. Default 1. */
2859
2265
  siblingCount?: number;
2860
- /** Total item count — enables "Showing X–Y of Z" label */
2266
+ /** Total item count — enables the "1–10 of 47" label and derives `pageCount`. */
2861
2267
  totalItems?: number;
2862
- /** Items per page — used with totalItems for range display */
2268
+ /** Items per page — used with `totalItems` for the range label and `pageCount`. */
2863
2269
  pageSize?: number;
2270
+ /**
2271
+ * Page sizes the reader may pick from. When given (with `onPageSizeChange`) a
2272
+ * page-size `Select` renders after the context label. @experimental
2273
+ */
2274
+ pageSizeOptions?: readonly number[];
2275
+ /** Called with the new page size when the reader picks one. @experimental */
2276
+ onPageSizeChange?: (pageSize: number) => void;
2277
+ /**
2278
+ * Render nothing when there is a single page (or none). Default `true` —
2279
+ * today's behaviour; flipping the default is a 2.0 item. @experimental
2280
+ */
2281
+ hideOnSinglePage?: boolean;
2864
2282
  /** Overrides of the copy the pager renders (W5-22): prop > provider `messages.pagination` > English. */
2865
2283
  messages?: Partial<PaginationMessages>;
2284
+ /** @deprecated Use `page`. Removed in 3.0. */
2285
+ currentPage?: number;
2286
+ /** @deprecated Use `pageCount`. Removed in 3.0. */
2287
+ totalPages?: number;
2866
2288
  }
2867
2289
  declare const Pagination: React$1.ForwardRefExoticComponent<PaginationProps & React$1.RefAttributes<HTMLElement>>;
2290
+ interface DataTablePaginationProps extends Omit<PaginationProps, "page" | "totalItems" | "currentPage" | "totalPages"> {
2291
+ /** 1-indexed current page. */
2292
+ page?: number;
2293
+ /** Total number of items across all pages. */
2294
+ totalItems?: number;
2295
+ /** Items per page. Default 25. */
2296
+ pageSize?: number;
2297
+ /** @deprecated Use `page`. Removed in 3.0. */
2298
+ current?: number;
2299
+ /** @deprecated Use `totalItems`. Removed in 3.0. */
2300
+ total?: number;
2301
+ }
2302
+ /**
2303
+ * DataTablePagination — the pager under a `DataTable`. Since W6-09 a thin
2304
+ * alias of {@link Pagination}: page size defaults to 25, `pageCount` derives
2305
+ * from `totalItems / pageSize`, and the strip keeps its `mt-4` gap. The old
2306
+ * `current` / `total` names keep working as deprecated aliases.
2307
+ */
2308
+ declare const DataTablePagination: React$1.ForwardRefExoticComponent<DataTablePaginationProps & React$1.RefAttributes<HTMLElement>>;
2868
2309
 
2869
2310
  /**
2870
2311
  * PdfPreview — read-only, presentational PDF viewer.
@@ -3566,41 +3007,6 @@ declare namespace SearchSelect {
3566
3007
  var displayName: string;
3567
3008
  }
3568
3009
 
3569
- /**
3570
- * SectionHeader — title + description block for marketing-style sections.
3571
- * Uses Inter (`font-display`) with the spec's `-0.022em` letterspacing.
3572
- */
3573
- interface SectionHeaderProps {
3574
- title: string;
3575
- description?: string;
3576
- align?: "left" | "center";
3577
- className?: string;
3578
- }
3579
- declare function SectionHeader({ title, description, align, className, }: SectionHeaderProps): react_jsx_runtime.JSX.Element;
3580
-
3581
- /**
3582
- * Section — max-width centered wrapper for marketing/section content.
3583
- * The `--content-pad` token (32px) is the canonical app-content gutter,
3584
- * but Section keeps its 24px (`px-6`) gutter for narrower marketing pages.
3585
- */
3586
- declare const maxWidthStyles: {
3587
- readonly sm: "ds:max-w-3xl";
3588
- readonly md: "ds:max-w-4xl";
3589
- readonly lg: "ds:max-w-5xl";
3590
- readonly xl: "ds:max-w-6xl";
3591
- };
3592
- interface SectionProps extends React.HTMLAttributes<HTMLElement> {
3593
- maxWidth?: keyof typeof maxWidthStyles;
3594
- as?: "section" | "div";
3595
- }
3596
- declare const Section: React$1.ForwardRefExoticComponent<SectionProps & React$1.RefAttributes<HTMLElement>>;
3597
- interface SectionHeadProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
3598
- eyebrow?: React.ReactNode;
3599
- title?: React.ReactNode;
3600
- meta?: React.ReactNode;
3601
- }
3602
- declare const SectionHead: React$1.ForwardRefExoticComponent<SectionHeadProps & React$1.RefAttributes<HTMLDivElement>>;
3603
-
3604
3010
  /** Service tints — product hues, never intents (ADR-007 §2); reachable through `tone` only. */
3605
3011
  declare const SERVICE_FILL: {
3606
3012
  tax: string;
@@ -4224,17 +3630,6 @@ interface StarRatingProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "ro
4224
3630
  }
4225
3631
  declare const StarRating: React$1.ForwardRefExoticComponent<StarRatingProps & React$1.RefAttributes<HTMLDivElement>>;
4226
3632
 
4227
- /**
4228
- * Stat — paired numeric display + caption (the StatNum primitive).
4229
- * Numerals are set in `font-display` (Inter) at a fluid clamp size with
4230
- * `font-variant-numeric: tabular-nums` for vertical alignment.
4231
- */
4232
- interface StatProps extends React.HTMLAttributes<HTMLDivElement> {
4233
- value: string;
4234
- label: string;
4235
- }
4236
- declare const Stat: React$1.ForwardRefExoticComponent<StatProps & React$1.RefAttributes<HTMLDivElement>>;
4237
-
4238
3633
  /**
4239
3634
  * StatusDot — standalone attention / unread / presence dot.
4240
3635
  *
@@ -4307,33 +3702,6 @@ interface StatusIconProps extends Omit<React.SVGAttributes<SVGSVGElement>, "colo
4307
3702
  }
4308
3703
  declare function StatusIcon({ state, progress, color, size, className, ...props }: StatusIconProps): react_jsx_runtime.JSX.Element;
4309
3704
 
4310
- /**
4311
- * StatusPill — semantic status atom for engagement / document / signature
4312
- * lifecycles. It is a thin mapping over <Badge>: each known `status` picks
4313
- * the right variant + default label + dot, so call sites read as
4314
- * `<StatusPill status="needs-revision" />` instead of repeating the
4315
- * variant/label pairing everywhere.
4316
- *
4317
- * Mapping (per the portal spec):
4318
- * requested → warning "Requested"
4319
- * in-review → info "In review"
4320
- * needs-revision → danger "Needs revision"
4321
- * accepted/signed/
4322
- * approved/paid/
4323
- * received → success "Accepted" / "Signed" / "Received" / …
4324
- * draft/pending → secondary
4325
- * overdue → danger
4326
- *
4327
- * Pass `children` to override the label while keeping the mapped variant.
4328
- */
4329
- type PillStatus = "requested" | "in-review" | "needs-revision" | "accepted" | "signed" | "approved" | "paid" | "complete" | "received" | "draft" | "pending" | "overdue" | "declined" | "internal" | "shared";
4330
- interface StatusPillProps extends Omit<BadgeProps, "variant"> {
4331
- status: PillStatus;
4332
- /** Show a leading dot. Default `true` (status atoms read better with one). */
4333
- dot?: boolean;
4334
- }
4335
- declare const StatusPill: React$1.ForwardRefExoticComponent<StatusPillProps & React$1.RefAttributes<HTMLSpanElement>>;
4336
-
4337
3705
  /**
4338
3706
  * Stepper — custom progress indicator. No Radix equivalent.
4339
3707
  * Active step uses Pro purple; completed steps use the success palette;
@@ -4377,6 +3745,13 @@ interface StickyActionBarProps extends React.HTMLAttributes<HTMLDivElement> {
4377
3745
  hint?: React.ReactNode;
4378
3746
  /** Lift the bar above the 56px mobile tab bar + safe-area inset. */
4379
3747
  offsetForMobileNav?: boolean;
3748
+ /**
3749
+ * How the bar holds its place, the bottom-edge preset of `StickyStack`'s
3750
+ * `layerMode` (W7-08): `sticky` (default, today's behaviour) keeps it in
3751
+ * flow at the foot of its scroll container; `fixed` pins it to the viewport,
3752
+ * which is what a bar inside an `overflow` ancestor needs.
3753
+ */
3754
+ mode?: "sticky" | "fixed";
4380
3755
  }
4381
3756
  declare const StickyActionBar: React$1.ForwardRefExoticComponent<StickyActionBarProps & React$1.RefAttributes<HTMLDivElement>>;
4382
3757
 
@@ -4495,26 +3870,6 @@ interface SwitchProps extends Omit<React$1.ComponentPropsWithoutRef<typeof Switc
4495
3870
  }
4496
3871
  declare const Switch: React$1.ForwardRefExoticComponent<SwitchProps & React$1.RefAttributes<HTMLButtonElement>>;
4497
3872
 
4498
- interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {
4499
- /** Class for the wrapping `div` that handles overflow. */
4500
- wrapperClassName?: string;
4501
- }
4502
- declare const Table: React$1.ForwardRefExoticComponent<TableProps & React$1.RefAttributes<HTMLTableElement>>;
4503
- type TableHeaderProps = React.HTMLAttributes<HTMLTableSectionElement>;
4504
- declare const TableHeader: React$1.ForwardRefExoticComponent<TableHeaderProps & React$1.RefAttributes<HTMLTableSectionElement>>;
4505
- type TableBodyProps = React.HTMLAttributes<HTMLTableSectionElement>;
4506
- declare const TableBody: React$1.ForwardRefExoticComponent<TableBodyProps & React$1.RefAttributes<HTMLTableSectionElement>>;
4507
- type TableFooterProps = React.HTMLAttributes<HTMLTableSectionElement>;
4508
- declare const TableFooter: React$1.ForwardRefExoticComponent<TableFooterProps & React$1.RefAttributes<HTMLTableSectionElement>>;
4509
- type TableRowProps = React.HTMLAttributes<HTMLTableRowElement>;
4510
- declare const TableRow: React$1.ForwardRefExoticComponent<TableRowProps & React$1.RefAttributes<HTMLTableRowElement>>;
4511
- type TableHeadProps = React.ThHTMLAttributes<HTMLTableCellElement>;
4512
- declare const TableHead: React$1.ForwardRefExoticComponent<TableHeadProps & React$1.RefAttributes<HTMLTableCellElement>>;
4513
- type TableCellProps = React.TdHTMLAttributes<HTMLTableCellElement>;
4514
- declare const TableCell: React$1.ForwardRefExoticComponent<TableCellProps & React$1.RefAttributes<HTMLTableCellElement>>;
4515
- type TableCaptionProps = React.HTMLAttributes<HTMLTableCaptionElement>;
4516
- declare const TableCaption: React$1.ForwardRefExoticComponent<TableCaptionProps & React$1.RefAttributes<HTMLTableCaptionElement>>;
4517
-
4518
3873
  declare const Tabs: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
4519
3874
  declare const TabsList: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsListProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
4520
3875
  declare const triggerVariants: (props?: ({
@@ -4525,24 +3880,6 @@ interface TabsTriggerProps extends React$1.ComponentPropsWithoutRef<typeof TabsP
4525
3880
  declare const TabsTrigger: React$1.ForwardRefExoticComponent<TabsTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
4526
3881
  declare const TabsContent: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
4527
3882
 
4528
- interface TeamMember {
4529
- id: string;
4530
- fullName: string;
4531
- }
4532
- interface TeamMemberSelectProps {
4533
- teamMembers: TeamMember[];
4534
- currentUserId?: string | null;
4535
- value: string;
4536
- onValueChange: (value: string) => void;
4537
- includeUnassigned?: boolean;
4538
- placeholder?: string;
4539
- className?: string;
4540
- }
4541
- declare function TeamMemberSelect({ teamMembers, currentUserId, value, onValueChange, includeUnassigned, placeholder, className, }: TeamMemberSelectProps): react_jsx_runtime.JSX.Element;
4542
- declare namespace TeamMemberSelect {
4543
- var displayName: string;
4544
- }
4545
-
4546
3883
  /**
4547
3884
  * The emphases a Textarea offers: the shared chrome's `default` and `ghost`
4548
3885
  * (spelled out, as on Input, so the public declaration names no unexported
@@ -4803,82 +4140,6 @@ interface VisuallyHiddenProps extends React.ComponentPropsWithoutRef<typeof Visu
4803
4140
  }
4804
4141
  declare const VisuallyHidden: React$1.ForwardRefExoticComponent<VisuallyHiddenProps & React$1.RefAttributes<HTMLSpanElement>>;
4805
4142
 
4806
- /**
4807
- * ChannelTabs — a controlled, pill-style tab strip for switching between
4808
- * communication channels (Chat / Email / SMS / Internal) on a thread surface.
4809
- *
4810
- * Each tab carries a colored status dot (toned per channel) and an optional
4811
- * unread count. The active tab gets the accent ring treatment; inactive tabs
4812
- * are quiet until hovered. The component is presentational and fully
4813
- * controlled — the consumer owns the active value and maps it to whatever
4814
- * backend channel group / compose channel the tab represents.
4815
- *
4816
- * <ChannelTabs
4817
- * value={tab}
4818
- * onChange={setTab}
4819
- * tabs={[
4820
- * { value: "chat", label: "Chat", tone: "success", count: 2 },
4821
- * { value: "email", label: "Email", tone: "info" },
4822
- * { value: "sms", label: "SMS", tone: "accent" },
4823
- * ]}
4824
- * />
4825
- *
4826
- * @since 1.5.0
4827
- */
4828
- /** Status-dot tone for a channel tab. Maps to a semantic color token. */
4829
- type ChannelTone = "brand" | "info" | "success" | "warning" | "muted" | "danger";
4830
- interface ChannelTabItem {
4831
- /** Stable identifier passed back to `onChange`. */
4832
- value: string;
4833
- /** Visible label. */
4834
- label: string;
4835
- /** Status-dot tone. Defaults to `muted`. */
4836
- tone?: ChannelTone;
4837
- /** Optional unread count — hidden when `0` or `undefined`. */
4838
- count?: number;
4839
- }
4840
- interface ChannelTabsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
4841
- /** The tabs to render. */
4842
- tabs: ChannelTabItem[];
4843
- /** Currently active tab `value`. */
4844
- value: string;
4845
- /** Fired with the picked tab's `value`. */
4846
- onChange: (value: string) => void;
4847
- }
4848
- declare function ChannelTabs({ tabs, value, onChange, className, ...props }: ChannelTabsProps): react_jsx_runtime.JSX.Element;
4849
- declare namespace ChannelTabs {
4850
- var displayName: string;
4851
- }
4852
-
4853
- /**
4854
- * IntentBadge — a small dashed-outline badge for an AI-classified intent
4855
- * (Document, Question, Payment, Scheduling, Urgent, FYI, Follow-up…).
4856
- *
4857
- * The dashed border is the signature: it reads as "machine-suggested, not
4858
- * yet confirmed", distinguishing it from the solid `StatusPill` used for
4859
- * authoritative state. Presentational and generic — the consumer owns the
4860
- * intent→tone→icon→label mapping in their own domain config and passes the
4861
- * resolved pieces in.
4862
- *
4863
- * <IntentBadge tone="info" icon={<FileIcon size={12} />}>Document</IntentBadge>
4864
- *
4865
- * @since 1.5.0
4866
- */
4867
- /** Color tone for an intent badge. */
4868
- type IntentTone = "brand" | "info" | "primary" | "success" | "warning" | "danger" | "muted";
4869
- interface IntentBadgeProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "children"> {
4870
- /** Color tone. Defaults to `muted`. */
4871
- tone?: IntentTone;
4872
- /** Optional leading glyph — pass a 12px icon. */
4873
- icon?: ReactNode;
4874
- /** Badge label. */
4875
- children: ReactNode;
4876
- }
4877
- declare function IntentBadge({ tone, icon, children, className, ...props }: IntentBadgeProps): react_jsx_runtime.JSX.Element;
4878
- declare namespace IntentBadge {
4879
- var displayName: string;
4880
- }
4881
-
4882
4143
  /**
4883
4144
  * The size of a run of text, named as a typography *role* — what the text is
4884
4145
  * (body copy, a field label, a caption…) — never as a pixel value. The twelve
@@ -5647,6 +4908,331 @@ interface OptionAccessors<TItem, TValue extends string = string> {
5647
4908
  getOptionKeywords?: (item: TItem) => readonly string[] | undefined;
5648
4909
  }
5649
4910
 
4911
+ /**
4912
+ * `useDataTable<TRow>()` (W6-04/W6-05; target architecture §35.2) — the
4913
+ * headless controller behind every data table.
4914
+ *
4915
+ * No DOM, no styling: the hook owns the six state slices a table needs —
4916
+ * **sorting · pagination · search · selection · columnVisibility · filters** —
4917
+ * each independently controllable (`value` + `onValueChange`) or uncontrolled
4918
+ * with a default, plus the whole-state pair `state` / `onStateChange` for a
4919
+ * product hook that mirrors the table into the URL. It derives the rows to
4920
+ * render (filtered → searched → sorted → paged) from typed column definitions
4921
+ * and hands back stable ids for the ARIA wiring the rendering layer adds.
4922
+ *
4923
+ * Why it exists: today `DataTableView` keeps sort, search and page in private
4924
+ * state, so TAX seeds it once through `initialSort` and *listens to header
4925
+ * clicks by header text* to keep the URL in step (`use-queue-view.ts`), and
4926
+ * PRO hand-rolls the same three states per table. Every slice here is
4927
+ * observable and settable, so those bridges become `sorting` +
4928
+ * `onSortingChange`.
4929
+ *
4930
+ * `manual` (W6-05) turns the row model off for server-side tables: the hook
4931
+ * then never sorts, filters, searches or pages `data` itself — it only holds
4932
+ * and emits state, and `rowCount` sizes the pager.
4933
+ *
4934
+ * Every state slice is plain JSON (arrays and records, no `Set`/`Map`), so it
4935
+ * can be written to a URL or storage as it is. Persisting column visibility is
4936
+ * the consumer's `onColumnVisibilityChange`; the design system never touches
4937
+ * `localStorage`.
4938
+ *
4939
+ * @experimental
4940
+ */
4941
+ /** Sort direction of one column; `null` on the sorting slice means unsorted. */
4942
+ type DataTableSortDirection = "asc" | "desc";
4943
+ /** What a column reads from a row: a property name or a function. */
4944
+ type DataTableAccessor<TRow> = keyof TRow | ((row: TRow) => unknown);
4945
+ /** A value the built-in comparator orders. `null`/`undefined` always sort last. */
4946
+ type DataTableSortValue = string | number | boolean | Date | null | undefined;
4947
+ /**
4948
+ * One column of a data table. `id` is the stable key the sorting and
4949
+ * column-visibility slices refer to and the ids for ARIA are derived from.
4950
+ *
4951
+ * @experimental
4952
+ */
4953
+ interface DataTableColumn<TRow> {
4954
+ /** Stable identifier: the key in `sorting`, `columnVisibility` and derived DOM ids. */
4955
+ id: string;
4956
+ /** Header content. Any node — not string-only, so a consumer never has to find a column by its text. */
4957
+ header: ReactNode;
4958
+ /** How the cell value is read. Defaults to `row[id]` when `id` is a key of the row. */
4959
+ accessor?: DataTableAccessor<TRow>;
4960
+ /** Cell renderer. Defaults to the accessor value rendered as text by the rendering layer. */
4961
+ cell?: (row: TRow, context: {
4962
+ value: unknown;
4963
+ rowId: string;
4964
+ index: number;
4965
+ }) => ReactNode;
4966
+ /** Whether the header offers sorting. Default `false`. */
4967
+ sortable?: boolean;
4968
+ /** Custom sort key (e.g. a numeric age behind a "5h ago" label). Defaults to the accessor value. */
4969
+ sortValue?: (row: TRow) => DataTableSortValue;
4970
+ /**
4971
+ * Whether the client-side search reads this column. Default `true` for a
4972
+ * column with an accessor. `searchText` overrides what is read.
4973
+ */
4974
+ searchable?: boolean;
4975
+ /** Text the client-side search matches for this column. Defaults to `String(value)`. */
4976
+ searchText?: (row: TRow) => string;
4977
+ /** Whether the columns menu may hide it. Default `true`. */
4978
+ hideable?: boolean;
4979
+ /** Layout hint for the rendering layer (W6-01 `TableCell align`). */
4980
+ align?: "start" | "center" | "end";
4981
+ /** Layout hint: right-aligned, tabular figures (W6-01 `TableCell numeric`). */
4982
+ numeric?: boolean;
4983
+ /** Layout hint: a CSS width for the column. */
4984
+ width?: string;
4985
+ }
4986
+ /**
4987
+ * One filter of a data table: which rows a value keeps, and the options the
4988
+ * rendering layer offers, in the shared {@link Option} model.
4989
+ *
4990
+ * @experimental
4991
+ */
4992
+ interface DataTableFilterDefinition<TRow, TValue extends string = string> {
4993
+ id: string;
4994
+ label: string;
4995
+ options: readonly Option<TValue>[];
4996
+ /** `true` keeps the row for the given value. Receives one value at a time, also for a multi-value filter. */
4997
+ match: (row: TRow, value: TValue) => boolean;
4998
+ /** Whether several values may be active (a row matches when any matches). Default `false`. */
4999
+ multiple?: boolean;
5000
+ }
5001
+ /** Sorting slice: one column and a direction, or `null` for unsorted. */
5002
+ interface DataTableSortingState {
5003
+ columnId: string;
5004
+ direction: DataTableSortDirection;
5005
+ }
5006
+ /** Pagination slice. `page` is 1-based, like `Pagination` and `DataTableView`. */
5007
+ interface DataTablePaginationState {
5008
+ page: number;
5009
+ pageSize: number;
5010
+ }
5011
+ /** Filters slice: filter id → active value(s). A missing key, `null` or `[]` means "all". */
5012
+ type DataTableFilterValue = string | readonly string[] | null;
5013
+ type DataTableFiltersState = Readonly<Record<string, DataTableFilterValue>>;
5014
+ /** Column-visibility slice: column id → shown. A missing key means shown. */
5015
+ type DataTableColumnVisibilityState = Readonly<Record<string, boolean>>;
5016
+ /** Selection slice: the ids of the selected rows, in selection order. */
5017
+ type DataTableSelectionState = readonly string[];
5018
+ /**
5019
+ * The whole serialisable state of a table, e.g. for a URL or storage mirror.
5020
+ *
5021
+ * @experimental
5022
+ */
5023
+ interface DataTableState {
5024
+ sorting: DataTableSortingState | null;
5025
+ pagination: DataTablePaginationState;
5026
+ search: string;
5027
+ selection: DataTableSelectionState;
5028
+ columnVisibility: DataTableColumnVisibilityState;
5029
+ filters: DataTableFiltersState;
5030
+ }
5031
+ /**
5032
+ * Options of {@link useDataTable}. Every slice accepts a controlled value, a
5033
+ * default, and a change callback; the whole-state `state` / `defaultState` /
5034
+ * `onStateChange` triple works alongside (a granular prop wins over `state`).
5035
+ *
5036
+ * @experimental
5037
+ */
5038
+ interface UseDataTableOptions<TRow> {
5039
+ /** The rows. In client mode the full set; in `manual` mode the current page as the server returned it. */
5040
+ data: readonly TRow[];
5041
+ columns: readonly DataTableColumn<TRow>[];
5042
+ /** Filter definitions (`filters` is the state). */
5043
+ filterDefinitions?: readonly DataTableFilterDefinition<TRow>[];
5044
+ /**
5045
+ * Stable id of a row. Defaults to `row.id` when it is a string or number,
5046
+ * otherwise the row's index (fine for static data; pass one for anything
5047
+ * that reorders).
5048
+ */
5049
+ getRowId?: (row: TRow, index: number) => string;
5050
+ /** Whether a row may be selected. Default: every row. */
5051
+ isRowSelectable?: (row: TRow) => boolean;
5052
+ /** Base id for the derived DOM ids (`getColumnId`, `getRowDomId`). Generated when omitted. */
5053
+ id?: string;
5054
+ /**
5055
+ * Server mode (W6-05): the hook never sorts, filters, searches or pages
5056
+ * `data` — it only holds and emits state. `rowCount` sizes the pager.
5057
+ * Default `false`.
5058
+ */
5059
+ manual?: boolean;
5060
+ /** Total number of rows matching the current search and filters, in `manual` mode. Defaults to `data.length`. */
5061
+ rowCount?: number;
5062
+ /**
5063
+ * Called by `selection.selectAllMatching()` in `manual` mode, where only the
5064
+ * server knows every matching id: receives the current state so the
5065
+ * consumer can resolve the ids and set the selection.
5066
+ */
5067
+ onSelectAllMatching?: (state: DataTableState) => void;
5068
+ /**
5069
+ * Whether changing the search or a filter returns to page 1. Default
5070
+ * `true` (today's `DataTableView`). Sorting never resets the page.
5071
+ */
5072
+ resetPageOnChange?: boolean;
5073
+ sorting?: DataTableSortingState | null;
5074
+ defaultSorting?: DataTableSortingState | null;
5075
+ onSortingChange?: (sorting: DataTableSortingState | null) => void;
5076
+ pagination?: DataTablePaginationState;
5077
+ defaultPagination?: Partial<DataTablePaginationState>;
5078
+ onPaginationChange?: (pagination: DataTablePaginationState) => void;
5079
+ search?: string;
5080
+ defaultSearch?: string;
5081
+ onSearchChange?: (search: string) => void;
5082
+ selection?: DataTableSelectionState;
5083
+ defaultSelection?: DataTableSelectionState;
5084
+ onSelectionChange?: (selection: DataTableSelectionState) => void;
5085
+ columnVisibility?: DataTableColumnVisibilityState;
5086
+ defaultColumnVisibility?: DataTableColumnVisibilityState;
5087
+ /** The persistence hook for column visibility: write it wherever the product keeps preferences. */
5088
+ onColumnVisibilityChange?: (columnVisibility: DataTableColumnVisibilityState) => void;
5089
+ filters?: DataTableFiltersState;
5090
+ defaultFilters?: DataTableFiltersState;
5091
+ onFiltersChange?: (filters: DataTableFiltersState) => void;
5092
+ /** Whole-state control. A granular prop (`sorting`, `search`, …) wins over the matching key. */
5093
+ state?: Partial<DataTableState>;
5094
+ defaultState?: Partial<DataTableState>;
5095
+ /** Called with the complete next state after any slice changes. */
5096
+ onStateChange?: (state: DataTableState) => void;
5097
+ }
5098
+ /** One row of the derived row model. */
5099
+ interface DataTableRowModel<TRow> {
5100
+ id: string;
5101
+ row: TRow;
5102
+ /** Index within the rows to render (the current page). */
5103
+ index: number;
5104
+ selected: boolean;
5105
+ selectable: boolean;
5106
+ }
5107
+ /** `aria-sort` value of a sortable header. `undefined` for a non-sortable column. */
5108
+ type DataTableAriaSort = "ascending" | "descending" | "none" | undefined;
5109
+ interface DataTableSortingApi {
5110
+ value: DataTableSortingState | null;
5111
+ set: (sorting: DataTableSortingState | null) => void;
5112
+ /** Direction of one column, `null` when it is not the sorted column. */
5113
+ getDirection: (columnId: string) => DataTableSortDirection | null;
5114
+ /** Advances one column through today's cycle: unsorted → asc → desc → unsorted. */
5115
+ toggle: (columnId: string) => void;
5116
+ /** `aria-sort` for a header (`"none"` for a sortable, unsorted column). */
5117
+ getAriaSort: (columnId: string) => DataTableAriaSort;
5118
+ }
5119
+ interface DataTablePaginationApi extends DataTablePaginationState {
5120
+ pageCount: number;
5121
+ /** Total rows matching the search and filters (`rowCount` in manual mode). */
5122
+ rowCount: number;
5123
+ /** 1-based index of the first and last row on the page; both `0` when empty. */
5124
+ rangeStart: number;
5125
+ rangeEnd: number;
5126
+ canPreviousPage: boolean;
5127
+ canNextPage: boolean;
5128
+ set: (pagination: DataTablePaginationState) => void;
5129
+ setPage: (page: number) => void;
5130
+ /** Changes the page size and returns to page 1. */
5131
+ setPageSize: (pageSize: number) => void;
5132
+ nextPage: () => void;
5133
+ previousPage: () => void;
5134
+ }
5135
+ interface DataTableSearchApi {
5136
+ value: string;
5137
+ set: (search: string) => void;
5138
+ clear: () => void;
5139
+ }
5140
+ interface DataTableSelectionApi {
5141
+ value: DataTableSelectionState;
5142
+ count: number;
5143
+ isSelected: (rowId: string) => boolean;
5144
+ set: (selection: DataTableSelectionState) => void;
5145
+ select: (rowId: string) => void;
5146
+ deselect: (rowId: string) => void;
5147
+ toggle: (rowId: string) => void;
5148
+ clear: () => void;
5149
+ /** Every selectable row on the current page is selected (false when there is none). */
5150
+ allPageSelected: boolean;
5151
+ /** Some, but not all, selectable rows on the current page are selected (the header checkbox's indeterminate). */
5152
+ somePageSelected: boolean;
5153
+ /** Selects (or clears) the selectable rows on the current page, keeping selections made elsewhere. */
5154
+ selectPage: () => void;
5155
+ deselectPage: () => void;
5156
+ togglePage: () => void;
5157
+ /**
5158
+ * Selects every row matching the search and filters. In client mode the
5159
+ * hook knows them; in `manual` mode it calls `onSelectAllMatching(state)`.
5160
+ */
5161
+ selectAllMatching: () => void;
5162
+ }
5163
+ interface DataTableColumnVisibilityApi {
5164
+ value: DataTableColumnVisibilityState;
5165
+ isVisible: (columnId: string) => boolean;
5166
+ set: (columnVisibility: DataTableColumnVisibilityState) => void;
5167
+ setVisible: (columnId: string, visible: boolean) => void;
5168
+ toggle: (columnId: string) => void;
5169
+ /** Shows every column again. */
5170
+ reset: () => void;
5171
+ }
5172
+ interface DataTableFiltersApi<TRow> {
5173
+ value: DataTableFiltersState;
5174
+ definitions: readonly DataTableFilterDefinition<TRow>[];
5175
+ /** Active value(s) of one filter; `null` when it is not narrowing. */
5176
+ get: (filterId: string) => DataTableFilterValue;
5177
+ set: (filterId: string, value: DataTableFilterValue) => void;
5178
+ clear: (filterId: string) => void;
5179
+ clearAll: () => void;
5180
+ /** Number of filters that are narrowing. */
5181
+ activeCount: number;
5182
+ }
5183
+ /**
5184
+ * What {@link useDataTable} returns.
5185
+ *
5186
+ * @experimental
5187
+ */
5188
+ interface DataTableController<TRow> {
5189
+ /** Base id of the derived DOM ids. */
5190
+ id: string;
5191
+ manual: boolean;
5192
+ /** The whole serialisable state. */
5193
+ state: DataTableState;
5194
+ /** Every column, in order. */
5195
+ allColumns: readonly DataTableColumn<TRow>[];
5196
+ /** The columns to render: `allColumns` minus the hidden ones. */
5197
+ columns: readonly DataTableColumn<TRow>[];
5198
+ /** The rows to render: filtered → searched → sorted → paged (client mode), or `data` as given (manual mode). */
5199
+ rows: readonly DataTableRowModel<TRow>[];
5200
+ /**
5201
+ * Every row matching the search and filters, sorted, across all pages
5202
+ * (client mode) — the scope of `selection.selectAllMatching()`; `data` as
5203
+ * given in manual mode.
5204
+ */
5205
+ matchingRows: readonly TRow[];
5206
+ /** Reads a cell through the column's accessor. */
5207
+ getCellValue: (row: TRow, column: DataTableColumn<TRow>) => unknown;
5208
+ /** Renders a cell: the column's `cell`, or the accessor value as text. */
5209
+ renderCell: (model: DataTableRowModel<TRow>, column: DataTableColumn<TRow>) => ReactNode;
5210
+ /** Stable DOM id for a column's header cell (`aria-describedby`, `headers`). */
5211
+ getColumnId: (columnId: string) => string;
5212
+ /** Stable DOM id for a row. */
5213
+ getRowDomId: (rowId: string) => string;
5214
+ sorting: DataTableSortingApi;
5215
+ pagination: DataTablePaginationApi;
5216
+ search: DataTableSearchApi;
5217
+ selection: DataTableSelectionApi;
5218
+ columnVisibility: DataTableColumnVisibilityApi;
5219
+ filters: DataTableFiltersApi<TRow>;
5220
+ }
5221
+ /**
5222
+ * The comparator `DataTableView` uses today: case-insensitive strings,
5223
+ * numbers and dates by value, `null`/`undefined` last in both directions.
5224
+ */
5225
+ declare function compareSortValues(a: DataTableSortValue, b: DataTableSortValue, direction: DataTableSortDirection): number;
5226
+ /** Advances through today's header cycle: unsorted → asc → desc → unsorted. */
5227
+ declare function nextSortDirection(current: DataTableSortDirection | null): DataTableSortDirection | null;
5228
+ /**
5229
+ * The headless data-table controller. See the module comment and
5230
+ * `docs/data-tables.md`.
5231
+ *
5232
+ * @experimental
5233
+ */
5234
+ declare function useDataTable<TRow>(options: UseDataTableOptions<TRow>): DataTableController<TRow>;
5235
+
5650
5236
  /** The English defaults (the `combobox` namespace of the catalogue). */
5651
5237
  declare const DEFAULT_COMBOBOX_MESSAGES: ComboboxMessages;
5652
5238
  /** The sizes a combobox offers: the shared control scale (A1). @experimental */
@@ -5800,862 +5386,43 @@ declare namespace MultiSelect {
5800
5386
  var displayName: string;
5801
5387
  }
5802
5388
 
5803
- /**
5804
- * AgreementViewer — the chrome + navigation shell for a multi-step, branded
5805
- * agreement / proposal (the "Signed Agreement Viewer"). It owns the header,
5806
- * the firm-branded cover rail, the section stepper, the signed / awaiting
5807
- * banner, the prev·dots·next footer, and the step state. Each step's body is
5808
- * consumer-owned `content` — the shell is deliberately content-agnostic so the
5809
- * same frame drives a tax proposal, an engagement letter, or an NDA.
5810
- *
5811
- * Step 0 is the cover: it shows the gradient firm rail. Steps 1+ show the
5812
- * light section rail with the stepper. One root attribute drives both:
5813
- * `data-view="cover" | "inner"`, derived from the current step.
5814
- *
5815
- * Branding: the whole composite themes from a single accent. Omit `accent` to
5816
- * inherit the suite accent; pass any CSS color (`accent="#1f8a5b"`) and the
5817
- * rail gradient, tints, stepper, dots, and CTAs all retrack — every shade is
5818
- * derived in `tokens.css` via color-mix off `--av-accent`.
5819
- *
5820
- * <AgreementViewer
5821
- * title="Comprehensive Individual Tax Services"
5822
- * firm={{ name: "Patel & Associates CPA", initials: "P&A" }}
5823
- * steps={[
5824
- * { id: "welcome", label: "Welcome", content: <Welcome /> },
5825
- * { id: "package", label: "Select a package", content: <Packages /> },
5826
- * …
5827
- * ]}
5828
- * onDownload={downloadPdf}
5829
- * />
5830
- *
5831
- * @since 1.12.0
5832
- */
5833
- type AgreementStatus = "signed" | "awaiting";
5834
- interface AgreementStep {
5835
- /** Stable key + stepper/dot identity. */
5389
+ type QuestionnairePanelStatus = "not-started" | "in-progress" | "complete" | "needs-review";
5390
+ interface QuestionnairePanelSection {
5836
5391
  id: string;
5837
- /** Section label shown in the stepper rail. */
5838
- label: string;
5839
- /** Node glyph in the stepper; defaults to the step number (or a home glyph
5840
- * for the cover step). */
5841
- icon?: ReactNode;
5842
- /** The step body — consumer-owned. */
5843
- content: ReactNode;
5844
- }
5845
- interface AgreementFirm {
5846
- /** Firm name shown on both rails. */
5847
- name: string;
5848
- /** Logo monogram (e.g. "P&A"). Falls back to the first letter of `name`. */
5849
- initials?: string;
5850
- /** Short line under the firm name on the cover rail. */
5851
- tagline?: string;
5852
- /** Subtitle under the firm name on the inner rail. Default "Your proposal". */
5853
- subtitle?: string;
5854
- /** Contact rows pinned to the bottom of the cover rail. */
5855
- contact?: {
5856
- phone?: ReactNode;
5857
- email?: ReactNode;
5858
- website?: ReactNode;
5859
- };
5392
+ title: string;
5393
+ description?: string;
5394
+ meta?: string;
5395
+ status?: QuestionnairePanelStatus;
5396
+ completedCount?: number;
5397
+ questionCount?: number;
5398
+ icon?: React.ReactNode;
5860
5399
  }
5861
- interface AgreementViewerProps {
5862
- /** Header title (the agreement name). */
5863
- title: ReactNode;
5864
- /** Small overline above the title. Default "Signed agreement". */
5865
- overline?: ReactNode;
5866
- /** Steps rendered as panes; index 0 is the cover. */
5867
- steps: AgreementStep[];
5868
- /** Firm branding for the rails. */
5869
- firm: AgreementFirm;
5870
- /** "signed" (read-only, all sections complete) or "awaiting" (in progress).
5871
- * Drives the banner tone + which stepper nodes read as done. Default "signed". */
5872
- status?: AgreementStatus;
5873
- /** Banner body override. Omit for the status-derived default; pass `null` to
5874
- * hide the banner entirely. */
5875
- banner?: ReactNode;
5876
- /** Brand accent override — any CSS color. Defaults to the suite accent. */
5877
- accent?: string;
5878
- /** Show the gradient firm rail on the cover step. Set false for a full-bleed
5879
- * cover (e.g. a centered title page). Default true. */
5880
- coverRail?: boolean;
5881
- /** Controlled current step index. */
5882
- step?: number;
5883
- /** Initial step when uncontrolled. Default 0. */
5884
- defaultStep?: number;
5885
- /** Notified on every step change (controlled or not). */
5886
- onStepChange?: (step: number) => void;
5887
- /** "Download PDF" handler — hides the button when omitted. */
5888
- onDownload?: () => void;
5889
- /** Close handler — hides the close button when omitted. */
5890
- onClose?: () => void;
5891
- /** Extra header actions, placed left of Download / Close. */
5892
- headerActions?: ReactNode;
5893
- className?: string;
5400
+ interface QuestionnairePanelGroup {
5401
+ id: string;
5402
+ title: string;
5403
+ icon?: React.ReactNode;
5404
+ sections: QuestionnairePanelSection[];
5405
+ defaultOpen?: boolean;
5894
5406
  }
5895
- declare const AgreementViewer: React$1.ForwardRefExoticComponent<AgreementViewerProps & React$1.RefAttributes<HTMLDivElement>>;
5896
- interface AgreementPaneHeadingProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
5897
- /** Accent overline, e.g. "Step 3 of 6". */
5898
- overline?: ReactNode;
5899
- /** The pane title. */
5900
- title: ReactNode;
5901
- /** Supporting line under the title. */
5902
- subtitle?: ReactNode;
5407
+ interface QuestionnairePanelProps extends Omit<React.HTMLAttributes<HTMLElement>, "onSelect"> {
5408
+ variant?: "cards" | "navigation";
5409
+ eyebrow?: string;
5410
+ title?: string;
5411
+ description?: string;
5412
+ sections?: QuestionnairePanelSection[];
5413
+ groups?: QuestionnairePanelGroup[];
5414
+ activeId?: string;
5415
+ onSelect?: (id: string) => void;
5903
5416
  }
5904
- declare const AgreementPaneHeading: React$1.ForwardRefExoticComponent<AgreementPaneHeadingProps & React$1.RefAttributes<HTMLDivElement>>;
5417
+ declare const QuestionnairePanel: React$1.ForwardRefExoticComponent<QuestionnairePanelProps & React$1.RefAttributes<HTMLElement>>;
5905
5418
 
5906
5419
  /**
5907
- * Proposal pricing building-blocks — the client-preview pieces a signing
5908
- * package's "Services & Pricing" config renders into. They compose inside an
5909
- * `AgreementViewer` step (where they inherit the firm `--av-accent`), or
5910
- * standalone inside a `[data-av-scope]` wrapper. Accent classes carry a suite
5911
- * fallback so a bare block still renders un-branded rather than transparent.
5912
- *
5913
- * - `ProposalServiceRow` — one line item (name · price · cadence, optional
5914
- * struck-through original for a discount).
5915
- * - `ProposalPackageCard` — a package the client chooses; `mode` switches the
5916
- * builder's three choice models (pick-one / add-on /
5917
- * always-included).
5918
- * - `ProposalPricingSummary`— the "review total" block: what's included, the
5919
- * billing schedule, discount savings, tax, total.
5920
- *
5921
- * @since 1.12.0
5922
- */
5923
- interface ProposalServiceRowProps extends React.HTMLAttributes<HTMLDivElement> {
5924
- /** Service name — the primary line. */
5925
- name: ReactNode;
5926
- /** Optional secondary description shown to the client. */
5927
- description?: ReactNode;
5928
- /** Formatted price, e.g. "$1,300" or "$50/mo". */
5929
- price?: ReactNode;
5930
- /** Pre-discount price, struck through before `price`. */
5931
- originalPrice?: ReactNode;
5932
- /** Leading marker. "check" (accent tick) or "none". Default "check". */
5933
- marker?: "check" | "none";
5934
- }
5935
- declare const ProposalServiceRow: React$1.ForwardRefExoticComponent<ProposalServiceRowProps & React$1.RefAttributes<HTMLDivElement>>;
5936
- type ProposalPackageMode = "choice" | "addon" | "included";
5937
- interface ProposalPackageCardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onSelect"> {
5938
- /** Package name. */
5939
- name: ReactNode;
5940
- /** Short count line, e.g. "Includes 4 services". */
5941
- summary?: ReactNode;
5942
- /** Formatted package price. */
5943
- price?: ReactNode;
5944
- /** Caption under the price, e.g. "Package total". */
5945
- priceCaption?: ReactNode;
5946
- /** Pre-discount price, struck through. */
5947
- originalPrice?: ReactNode;
5948
- /** Savings line, e.g. "You save $200". */
5949
- savings?: ReactNode;
5950
- /** How the client chooses this package. Default "choice". */
5951
- mode?: ProposalPackageMode;
5952
- /** Selected / added state (drives accent border + control label). */
5953
- selected?: boolean;
5954
- /** Corner badge, e.g. "Most popular". A "Selected"/"Added" badge is implied. */
5955
- badge?: ReactNode;
5956
- /** Label above the service rows. Default "Included services". */
5957
- servicesLabel?: ReactNode;
5958
- /** Service rows (`ProposalServiceRow`) or any content. */
5959
- children?: ReactNode;
5960
- /**
5961
- * Cap the service list's height (any CSS length, e.g. `"14rem"`). Past it the
5962
- * list scrolls rather than growing, so a package with many services keeps its
5963
- * select control in view instead of pushing it below the fold — and cards
5964
- * sitting in a row stay the same height.
5965
- *
5966
- * Omit for the previous behaviour: the list grows to fit.
5967
- */
5968
- servicesMaxHeight?: string;
5969
- /** Select / toggle handler — makes the card interactive. */
5970
- onSelect?: () => void;
5971
- disabled?: boolean;
5972
- }
5973
- declare const ProposalPackageCard: React$1.ForwardRefExoticComponent<ProposalPackageCardProps & React$1.RefAttributes<HTMLDivElement>>;
5974
- type ProposalBillingMode = "now" | "auto" | "review" | "manual" | "onetime";
5975
- interface ProposalBillingRow {
5976
- /** e.g. "Due today", "First payment", "Then, monthly", "Each invoice". */
5977
- label: ReactNode;
5978
- /** Formatted amount, e.g. "$2,526". */
5979
- amount?: ReactNode;
5980
- /** Cadence beside the amount, e.g. "/mo". */
5981
- cadence?: ReactNode;
5982
- /** Plain-language explanation of how/when this is charged. */
5983
- detail: ReactNode;
5984
- /** Drives the row icon. Default "now". */
5985
- mode?: ProposalBillingMode;
5986
- }
5987
- interface ProposalBillingTermsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
5988
- /** Heading. Default "How billing works". */
5989
- title?: ReactNode;
5990
- /** The billing steps the firm configured. */
5991
- rows: ProposalBillingRow[];
5992
- /** Show the "set by your firm — review only" footer. Default true. */
5993
- locked?: boolean;
5994
- }
5995
- /**
5996
- * ProposalBillingTerms — a read-only explanation of the payment arrangement the
5997
- * firm configured (auto-pay, charge-after-review, manual invoicing, one-time,
5998
- * or a mix). The client can see exactly what will be charged and when, but
5999
- * can't change it — the `locked` footer makes that explicit.
6000
- */
6001
- declare const ProposalBillingTerms: React$1.ForwardRefExoticComponent<ProposalBillingTermsProps & React$1.RefAttributes<HTMLDivElement>>;
6002
- interface ProposalAddOnProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "onToggle" | "name"> {
6003
- /** Add-on name. */
6004
- name: ReactNode;
6005
- /** Short description / cadence note under the name. */
6006
- description?: ReactNode;
6007
- /** Formatted price, e.g. "$150" or "$200". */
6008
- price?: ReactNode;
6009
- /** Cadence / billing note beside the price, e.g. "/mo" or "One-time". */
6010
- cadence?: ReactNode;
6011
- /** Added state. */
6012
- selected?: boolean;
6013
- /** Toggle handler. */
6014
- onToggle?: () => void;
6015
- }
6016
- /**
6017
- * ProposalAddOn — a compact, checkbox-style toggle for an optional add-on.
6018
- * Lighter than `ProposalPackageCard`: add-ons are secondary extras, so the
6019
- * whole row is one toggle (no separate badge + button), price right-aligned.
6020
- */
6021
- declare const ProposalAddOn: React$1.ForwardRefExoticComponent<ProposalAddOnProps & React$1.RefAttributes<HTMLButtonElement>>;
6022
- interface ProposalPricingSummaryProps extends React.HTMLAttributes<HTMLDivElement> {
6023
- /** "What's included" rows (`ProposalServiceRow`) — rendered in a 2-col grid. */
6024
- children?: ReactNode;
6025
- /** Billing schedule callout. */
6026
- billing?: {
6027
- title?: ReactNode;
6028
- caption?: ReactNode;
6029
- rows?: {
6030
- label: ReactNode;
6031
- value: ReactNode;
6032
- }[];
6033
- };
6034
- /** Discount savings line, e.g. "You save $200 (annual)". */
6035
- savings?: ReactNode;
6036
- /** Tax line value, e.g. "$192.00". `taxLabel` defaults to "Tax". */
6037
- tax?: ReactNode;
6038
- taxLabel?: ReactNode;
6039
- /** Pre-discount total, struck through next to `total`. */
6040
- originalTotal?: ReactNode;
6041
- /** Total due — used for a single-cadence engagement. Omit when `schedule` is set. */
6042
- total?: ReactNode;
6043
- /** Cadence suffix after the total, e.g. "/ year". */
6044
- cadence?: ReactNode;
6045
- /** Total row label. Default "Total due". */
6046
- totalLabel?: ReactNode;
6047
- /** First-payment + recurring breakdown. Use instead of `total` when billing
6048
- * mixes cadences (e.g. a yearly package + a monthly add-on): the amount due
6049
- * at signing reads prominently, with the ongoing charges listed below. */
6050
- schedule?: {
6051
- /** Amount charged at signing — the prominent figure. */
6052
- dueToday: ReactNode;
6053
- /** Label for the due-now figure. Default "Due today". */
6054
- dueTodayLabel?: ReactNode;
6055
- /** Caption under the due-now figure, e.g. "First payment, on acceptance". */
6056
- dueTodayCaption?: ReactNode;
6057
- /** Ongoing recurring charges, e.g. [{ label: "Then", amount: "$2,400", cadence: "/ year" }]. */
6058
- then?: {
6059
- label?: ReactNode;
6060
- amount: ReactNode;
6061
- cadence?: ReactNode;
6062
- }[];
6063
- };
6064
- }
6065
- declare const ProposalPricingSummary: React$1.ForwardRefExoticComponent<ProposalPricingSummaryProps & React$1.RefAttributes<HTMLDivElement>>;
6066
-
6067
- /**
6068
- * Proposal content building-blocks — the optional pieces a signing package's
6069
- * "custom pages" and recipient config render into on the client preview.
6070
- *
6071
- * - `ProposalCustomPage` — a titled custom page; `kind` switches the builder's
6072
- * Video / PDF / Text page types. The body (a video
6073
- * poster, a `PdfPreview`, or rich text) is slotted.
6074
- * - `ProposalNote` — a short callout shown alongside the agreement.
6075
- * - `ProposalSignerList` — the recipients/signers with role + status.
6076
- *
6077
- * Accent classes carry a suite fallback, so a bare block renders un-branded
6078
- * outside an `AgreementViewer` / `[data-av-scope]`.
6079
- *
6080
- * @since 1.12.0
6081
- */
6082
- type ProposalCustomPageKind = "video" | "pdf" | "text";
6083
- interface ProposalCustomPageProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
6084
- /** Builder custom-page type. */
6085
- kind: ProposalCustomPageKind;
6086
- /** Page title. */
6087
- title: ReactNode;
6088
- /** Supporting line under the title. */
6089
- caption?: ReactNode;
6090
- /** Overline label; defaults by kind ("Video" / "Document" / "Read"). */
6091
- label?: ReactNode;
6092
- /** Poster image for `kind="video"` — shown with a play overlay when no
6093
- * `children` are supplied. */
6094
- poster?: string;
6095
- /** Play handler — makes the video poster an actual button. */
6096
- onPlay?: () => void;
6097
- /** Body: a `PdfPreview`, rich text, or a custom embed. Replaces the built-in
6098
- * video poster when provided. */
6099
- children?: ReactNode;
6100
- }
6101
- declare const ProposalCustomPage: React$1.ForwardRefExoticComponent<ProposalCustomPageProps & React$1.RefAttributes<HTMLDivElement>>;
6102
- interface ProposalNoteProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
6103
- /** Optional bold lead line. */
6104
- title?: ReactNode;
6105
- /** Note body. */
6106
- children: ReactNode;
6107
- /** Visual tone. Default "accent". */
6108
- tone?: "accent" | "info";
6109
- /** Leading icon; defaults to an info glyph. */
6110
- icon?: ReactNode;
6111
- }
6112
- declare const ProposalNote: React$1.ForwardRefExoticComponent<ProposalNoteProps & React$1.RefAttributes<HTMLDivElement>>;
6113
- type ProposalSignerStatus = "signed" | "pending" | "viewed";
6114
- interface ProposalSigner {
6115
- name: string;
6116
- email?: string;
6117
- /** Role, e.g. "Signer", "Approver", "CC". */
6118
- role?: string;
6119
- status?: ProposalSignerStatus;
6120
- /** Status timestamp for the firm tracking view, e.g. "Signed Jun 6, 2:14 PM". */
6121
- at?: ReactNode;
6122
- }
6123
- interface ProposalSignerListProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
6124
- signers: ProposalSigner[];
6125
- /** Section label. Default "Recipients". */
6126
- title?: ReactNode;
6127
- }
6128
- declare const ProposalSignerList: React$1.ForwardRefExoticComponent<ProposalSignerListProps & React$1.RefAttributes<HTMLDivElement>>;
6129
-
6130
- /**
6131
- * Proposal signing building-blocks — the client-preview pieces for the
6132
- * agreement's final step.
6133
- *
6134
- * - `ProposalSignatureBlock` — the type/draw signature area; `signed` flips it
6135
- * to a read-only signed preview.
6136
- * - `ProposalConsentGate` — the "require explicit approval before signing"
6137
- * checkbox that gates the Sign CTA.
6138
- * - `ProposalPaymentCapture` — the "payment at signing" card/bank capture block.
6139
- *
6140
- * Presentational: persistence, signature canvas, and payment tokenization stay
6141
- * with the consumer. Accent classes carry a suite fallback.
6142
- *
6143
- * @since 1.12.0
6144
- */
6145
- interface ProposalSignatureBlockProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
6146
- /** Read-only signed preview — the recorded signer name + initials. */
6147
- signed?: boolean;
6148
- /** Recorded signer name (used in the `signed` read-only preview). */
6149
- name?: string;
6150
- /** Recorded initials; defaults to the name's initials. */
6151
- initials?: string;
6152
- /** Initial typed name when interactive (defaults to blank — the signer types). */
6153
- defaultName?: string;
6154
- /** Reports the typed name + initials as the signer types (interactive). */
6155
- onChange?: (value: {
6156
- name: string;
6157
- initials: string;
6158
- }) => void;
6159
- /** Placeholder shown in the signature face + name field when empty. */
6160
- placeholder?: string;
6161
- /** CSS font-family for the rendered signature face. Default a serif. */
6162
- signatureFont?: string;
6163
- /** Footer slot — typically the Sign CTA or a signed-on note. */
6164
- footer?: ReactNode;
6165
- }
6166
- declare const ProposalSignatureBlock: React$1.ForwardRefExoticComponent<ProposalSignatureBlockProps & React$1.RefAttributes<HTMLDivElement>>;
6167
- interface ProposalConsentGateProps extends React.HTMLAttributes<HTMLDivElement> {
6168
- /** Consent label (the explicit-approval statement). */
6169
- children: ReactNode;
6170
- /** Checkbox state. */
6171
- checked?: boolean;
6172
- onCheckedChange?: (checked: boolean) => void;
6173
- /** Already-signed read-only state — shows the signed note instead of the CTA. */
6174
- signed?: boolean;
6175
- /** Note shown when `signed`, e.g. "Signed on June 6, 2026". */
6176
- signedNote?: ReactNode;
6177
- /** Sign CTA handler — renders the button (disabled until `checked`). */
6178
- onSign?: () => void;
6179
- /** Sign CTA label. Default "Sign & approve". */
6180
- signLabel?: ReactNode;
6181
- /** Extra disable condition for the Sign CTA, e.g. a name not yet typed. */
6182
- disabled?: boolean;
6183
- }
6184
- declare const ProposalConsentGate: React$1.ForwardRefExoticComponent<ProposalConsentGateProps & React$1.RefAttributes<HTMLDivElement>>;
6185
- interface ProposalPaymentCaptureProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
6186
- /** Heading. Default "Payment at signing". */
6187
- title?: ReactNode;
6188
- /** Amount captured at signing, e.g. "$2,400". */
6189
- amount?: ReactNode;
6190
- /** Caption under the title, e.g. "Billed today on acceptance". */
6191
- caption?: ReactNode;
6192
- /** Method icon hint. Default "card". */
6193
- method?: "card" | "bank";
6194
- /** Saved method last-4 — renders a read-only "•••• 4242" line. */
6195
- capturedLast4?: string;
6196
- /** Custom form fields (replaces the placeholder when provided). */
6197
- children?: ReactNode;
6198
- }
6199
- declare const ProposalPaymentCapture: React$1.ForwardRefExoticComponent<ProposalPaymentCaptureProps & React$1.RefAttributes<HTMLDivElement>>;
6200
-
6201
- type QuestionnairePanelStatus = "not-started" | "in-progress" | "complete" | "needs-review";
6202
- interface QuestionnairePanelSection {
6203
- id: string;
6204
- title: string;
6205
- description?: string;
6206
- meta?: string;
6207
- status?: QuestionnairePanelStatus;
6208
- completedCount?: number;
6209
- questionCount?: number;
6210
- icon?: React.ReactNode;
6211
- }
6212
- interface QuestionnairePanelGroup {
6213
- id: string;
6214
- title: string;
6215
- icon?: React.ReactNode;
6216
- sections: QuestionnairePanelSection[];
6217
- defaultOpen?: boolean;
6218
- }
6219
- interface QuestionnairePanelProps extends Omit<React.HTMLAttributes<HTMLElement>, "onSelect"> {
6220
- variant?: "cards" | "navigation";
6221
- eyebrow?: string;
6222
- title?: string;
6223
- description?: string;
6224
- sections?: QuestionnairePanelSection[];
6225
- groups?: QuestionnairePanelGroup[];
6226
- activeId?: string;
6227
- onSelect?: (id: string) => void;
6228
- }
6229
- declare const QuestionnairePanel: React$1.ForwardRefExoticComponent<QuestionnairePanelProps & React$1.RefAttributes<HTMLElement>>;
6230
-
6231
- type QuestionType = "short-text" | "long-text" | "email" | "phone" | "ssn-sin" | "date" | "number" | "currency" | "percentage" | "single-choice" | "multi-choice" | "yes-no" | "dropdown" | "multi-select" | "address" | "file-upload" | "table" | "repeater" | "signature" | "section-header" | "consent-checkbox" | "name" | "labeled-table" | "number-stepper";
6232
- interface QuestionOption {
6233
- value: string;
6234
- label: string;
6235
- formLabel?: string;
6236
- helpText?: string;
6237
- disabled?: boolean;
6238
- }
6239
- interface QuestionAddressValue {
6240
- line1?: string;
6241
- line2?: string;
6242
- city?: string;
6243
- region?: string;
6244
- postalCode?: string;
6245
- country?: string;
6246
- }
6247
- /** Personal-name payload for the `name` variant. */
6248
- interface QuestionNameValue {
6249
- first?: string;
6250
- middle?: string;
6251
- last?: string;
6252
- suffix?: string;
6253
- }
6254
- /** Question-level help/tip rendered as a tooltip beside the title. */
6255
- interface QuestionHelp {
6256
- title?: string;
6257
- body: string;
6258
- }
6259
- interface QuestionTableColumn {
6260
- key: string;
6261
- label: string;
6262
- placeholder?: string;
6263
- inputType?: "text" | "number" | "date" | "currency";
6264
- }
6265
- type QuestionTableRow = Record<string, string>;
6266
- /** Column of the fixed `labeled-table` matrix. `width` is a relative grid weight. */
6267
- interface QuestionLabeledColumn {
6268
- key: string;
6269
- title: string;
6270
- width?: number;
6271
- inputType?: "text" | "number" | "date" | "currency";
6272
- }
6273
- /** Fixed row header (down the left edge) of the `labeled-table` matrix. */
6274
- interface QuestionLabeledRow {
6275
- key: string;
6276
- title: string;
6277
- }
6278
- /** Cell text for the `labeled-table` matrix, keyed rowKey → colKey → value. */
6279
- type QuestionLabeledValue = Record<string, Record<string, string>>;
6280
- interface QuestionFileValue {
6281
- name: string;
6282
- size?: number;
6283
- kind?: "doc" | "sheet" | "image" | "generic";
6284
- }
6285
- interface QuestionsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
6286
- index?: number;
6287
- title: string;
6288
- description?: string;
6289
- type?: QuestionType;
6290
- required?: boolean;
6291
- chrome?: "card" | "plain";
6292
- sectionLabel?: string;
6293
- hideHeader?: boolean;
6294
- options?: QuestionOption[];
6295
- value?: string;
6296
- values?: string[];
6297
- placeholder?: string;
6298
- help?: QuestionHelp;
6299
- addressValue?: QuestionAddressValue;
6300
- nameValue?: QuestionNameValue;
6301
- showSuffix?: boolean;
6302
- tableColumns?: QuestionTableColumn[];
6303
- tableRows?: QuestionTableRow[];
6304
- labeledColumns?: QuestionLabeledColumn[];
6305
- labeledRows?: QuestionLabeledRow[];
6306
- labeledValue?: QuestionLabeledValue;
6307
- files?: QuestionFileValue[];
6308
- accept?: string;
6309
- maxSize?: number;
6310
- multiple?: boolean;
6311
- currencySymbol?: string;
6312
- /** Lower bound for `number-stepper`, and for a count-driven `repeater`. */
6313
- min?: number;
6314
- /** Upper bound for `number-stepper`, and max item count for a count-driven `repeater`. */
6315
- max?: number;
6316
- step?: number;
6317
- /** When set on a `repeater`, renders a bounded stepper that drives the number of item grids. */
6318
- countLabel?: string;
6319
- /**
6320
- * Noun for each `repeater` entry card header, e.g. `"U.S. presence period"` →
6321
- * "U.S. presence period 1". Defaults to the generic "Item" when unset.
6322
- */
6323
- itemNoun?: string;
6324
- onValueChange?: (value: string) => void;
6325
- onValuesChange?: (values: string[]) => void;
6326
- onAddressChange?: (value: QuestionAddressValue) => void;
6327
- onNameChange?: (value: QuestionNameValue) => void;
6328
- onLabeledChange?: (value: QuestionLabeledValue) => void;
6329
- onTableRowsChange?: (rows: QuestionTableRow[]) => void;
6330
- onFilesSelected?: (files: File[]) => void;
6331
- /** When set, each uploaded file chip in the `file-upload` type shows a remove
6332
- * button that calls this with the file and its index. */
6333
- onFileRemove?: (file: QuestionFileValue, index: number) => void;
6334
- }
6335
- declare const Questions: React$1.ForwardRefExoticComponent<QuestionsProps & React$1.RefAttributes<HTMLDivElement>>;
6336
-
6337
- /**
6338
- * Grid — a labeled-rows × typed-columns matrix of editable cells.
6339
- *
6340
- * A fixed grid where every row has a header down the left edge and every
6341
- * column declares the input type its cells accept (text / number / currency
6342
- * / date). Each cell is an editable input; the whole matrix is a single
6343
- * controlled value keyed `rowKey → columnKey → string`.
6344
- *
6345
- * ┌───────────────┬──────────┬──────────┬──────────┐
6346
- * │ │ Taxpayer │ Spouse │ Notes │ ← typed columns
6347
- * ├───────────────┼──────────┼──────────┼──────────┤
6348
- * │ Wages (W-2) │ [ $ ___ ]│ [ $ ___ ]│ [ ___ ] │ ← labeled row
6349
- * │ Interest │ [ $ ___ ]│ [ $ ___ ]│ [ ___ ] │
6350
- * └───────────────┴──────────┴──────────┴──────────┘
6351
- *
6352
- * This is the standalone form of the `Questions` `labeled-table` type — that
6353
- * branch renders a `Grid` internally, so the two share one implementation and
6354
- * one value contract.
6355
- *
6356
- * Fully controlled: pass `columns`, `rows`, `value`, and `onChange`. The
6357
- * component never holds cell state itself.
6358
- */
6359
- /** Input type a column's cells accept. Drives keyboard, input mode, and affix. */
6360
- type GridInputType = "text" | "number" | "currency" | "date";
6361
- interface GridColumn {
6362
- /** Stable key; the second-level key in the value object. */
6363
- key: string;
6364
- /** Header text shown above the column. */
6365
- label: string;
6366
- /** Cell input type. Defaults to `"text"`. */
6367
- inputType?: GridInputType;
6368
- /** Relative grid weight for this column (a `fr` unit). Defaults to `1`. */
6369
- width?: number;
6370
- /** Placeholder for this column's empty cells. */
6371
- placeholder?: string;
6372
- }
6373
- interface GridRow {
6374
- /** Stable key; the first-level key in the value object. */
6375
- key: string;
6376
- /** Row header text shown down the left edge. */
6377
- label: string;
6378
- }
6379
- /** Cell values, keyed `rowKey → columnKey → value`. */
6380
- type GridValue = Record<string, Record<string, string>>;
6381
- interface GridProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
6382
- /** Typed columns, left-to-right. */
6383
- columns: GridColumn[];
6384
- /** Labeled rows, top-to-bottom. */
6385
- rows: GridRow[];
6386
- /** Controlled cell values (`rowKey → columnKey → value`). */
6387
- value: GridValue;
6388
- /** Called with the full next value object whenever any cell changes. */
6389
- onChange: (value: GridValue) => void;
6390
- /** Accessible name for the matrix (also prefixes each cell's aria-label). */
6391
- ariaLabel?: string;
6392
- /** Header text for the top-left corner cell (above the row headers). */
6393
- rowHeaderLabel?: string;
6394
- /** Prefix shown inside `currency` cells. Defaults to `"$"`. */
6395
- currencySymbol?: string;
6396
- /** Minimum matrix width in px before it scrolls horizontally. Defaults to `560`. */
6397
- minWidth?: number;
6398
- /** Disable every cell. */
6399
- disabled?: boolean;
6400
- }
6401
- declare const Grid: React$1.ForwardRefExoticComponent<GridProps & React$1.RefAttributes<HTMLDivElement>>;
6402
-
6403
- /**
6404
- * DocumentRequestUpload — one self-contained "please upload this document" row
6405
- * for an organizer or a document-request list: a label (with optional help +
6406
- * required flag), a drag-drop dropzone, and the list of already-uploaded files
6407
- * rendered as removable chips.
6408
- *
6409
- * It packages the `FileUpload` + `FileChip` primitives into the exact shape a
6410
- * document-request row needs — including the file **remove** affordance that
6411
- * the `Questions` `file-upload` type only exposes via its `onFileRemove` prop.
6412
- * Reach for `Questions type="file-upload"` when the upload is one field inside a
6413
- * larger question list; reach for this when a document request is the whole unit
6414
- * (its own card, its own awaiting/locked state).
6415
- *
6416
- * Fully presentational and controlled: the caller owns the file list and every
6417
- * handler.
6418
- */
6419
- interface DocumentRequestUploadFile {
6420
- /** Stable key. Falls back to `name` + `size` when omitted. */
6421
- id?: string;
6422
- /** File name shown on the chip. */
6423
- name: string;
6424
- /** Size in bytes; rendered as a human meta line when `meta` is not given. */
6425
- size?: number;
6426
- /** File-type tone for the chip tile. Defaults to `"doc"`. */
6427
- kind?: FileKind;
6428
- /** Overrides the derived "size" meta line (e.g. "2.1 MB · uploaded just now"). */
6429
- meta?: React.ReactNode;
6430
- }
6431
- interface DocumentRequestUploadProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
6432
- /** Row headline, e.g. "W-2 from each employer". */
6433
- label: string;
6434
- /** Optional supporting line under the label. */
6435
- description?: string;
6436
- /** Renders a "Required" pill next to the label. */
6437
- required?: boolean;
6438
- /** Optional help tooltip beside the label. */
6439
- help?: {
6440
- title?: string;
6441
- body: string;
6442
- };
6443
- /** Already-uploaded files, rendered as removable chips. */
6444
- files?: DocumentRequestUploadFile[];
6445
- /** New files chosen via the dropzone / picker. */
6446
- onFilesSelected?: (files: File[]) => void;
6447
- /** Remove an uploaded file. When omitted, chips have no remove button. */
6448
- onRemoveFile?: (file: DocumentRequestUploadFile, index: number) => void;
6449
- /** Dropzone `accept` list, e.g. ".pdf,.jpg,.png". */
6450
- accept?: string;
6451
- /** Max per-file size in bytes. */
6452
- maxSize?: number;
6453
- /** Allow selecting multiple files. Defaults to `true`. */
6454
- multiple?: boolean;
6455
- /** Locks the row: hides the dropzone and the remove buttons. */
6456
- disabled?: boolean;
6457
- /** Message shown in place of the dropzone when `disabled`. Defaults to a lock note. */
6458
- disabledHint?: string;
6459
- /** Card chrome or bare layout. Defaults to `"card"`. */
6460
- chrome?: "card" | "plain";
6461
- }
6462
- declare const DocumentRequestUpload: React$1.ForwardRefExoticComponent<DocumentRequestUploadProps & React$1.RefAttributes<HTMLDivElement>>;
6463
-
6464
- /**
6465
- * AIReceiptPanel — the portal "attach a receipt, auto-fill with AI" panel.
6466
- * Three states drive the whole surface:
6467
- *
6468
- * idle → dashed "Attach receipt" button
6469
- * reading → pulsing sparkle + "Reading your receipt…"
6470
- * done → "Auto-filled from receipt" badge, the file chip, and the
6471
- * extracted vendor / amount / date grid (each confirmed ✓)
6472
- *
6473
- * It is **controlled**: the consumer owns `state` and supplies `result`
6474
- * when done. The simulated extraction in the reference is just one driver;
6475
- * swap in real OCR/AI and the contract is unchanged — flip `state` to
6476
- * "reading", then to "done" with a `result`.
6477
- */
6478
- interface AIReceiptResult {
6479
- vendor: string;
6480
- amount: string;
6481
- date: string;
6482
- file: {
6483
- name: string;
6484
- meta?: React.ReactNode;
6485
- };
6486
- }
6487
- interface AIReceiptPanelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "results"> {
6488
- state?: "idle" | "reading" | "done";
6489
- /** Extracted fields, shown in the `done` state. */
6490
- result?: AIReceiptResult;
6491
- /** Fired when the idle attach button is pressed. */
6492
- onAttach?: () => void;
6493
- /** Fired when the done-state "Remove" link is pressed. */
6494
- onRemove?: () => void;
6495
- /** View action for the file chip (e.g. open the receipt). */
6496
- onViewFile?: () => void;
6497
- }
6498
- declare const AIReceiptPanel: React$1.ForwardRefExoticComponent<AIReceiptPanelProps & React$1.RefAttributes<HTMLDivElement>>;
6499
-
6500
- /**
6501
- * Practice service tones for the client portal. Each engagement surface
6502
- * (card, ring, timeline) is "toned per service": a fill color + a track
6503
- * tint. Rather than fork every primitive's `variant` enum, portal
6504
- * composites set these two CSS vars (`--tone`, `--tone-bg`) once on their
6505
- * root and let descendants read them via `[color:var(--tone)]` /
6506
- * `[background:var(--tone-bg)]`. One place owns the mapping; theming and
6507
- * dark mode flow through the underlying `--color-service-*` tokens.
6508
- */
6509
- type ServiceTone = "tax" | "audit" | "accounting" | "neutral";
6510
- /**
6511
- * CSS-var style object to spread on a service-toned root. Descendants read
6512
- * `var(--tone)` / `var(--tone-bg)`; the cast is required because
6513
- * `CSSProperties` doesn't type custom properties.
6514
- */
6515
- declare function serviceToneStyle(tone: ServiceTone): CSSProperties;
6516
- declare const SERVICE_TONES: ServiceTone[];
6517
- /** Human label for a tone, for chips and headings. */
6518
- declare const serviceToneLabel: Record<ServiceTone, string>;
6519
-
6520
- /**
6521
- * AttentionItem — one row in the portal "Needs your attention" feed:
6522
- * a toned icon tile, a title + supporting line, and a trailing action
6523
- * (custom node or a default chevron). Group these by service at the call
6524
- * site; the row itself just renders one item.
6525
- *
6526
- * Set `tone` to color the icon tile per service (or use a status tone via
6527
- * `urgency`). The whole row is a `<button>` when `onClick` is supplied.
6528
- */
6529
- type AttentionUrgency = "default" | "warning" | "danger";
6530
- interface AttentionItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
6531
- icon: React.ReactNode;
6532
- title: React.ReactNode;
6533
- description?: React.ReactNode;
6534
- /** Service tone for the icon tile (used when `urgency` is "default"). */
6535
- tone?: ServiceTone;
6536
- /** Status urgency — overrides the service tone for the tile. */
6537
- urgency?: AttentionUrgency;
6538
- /** Trailing slot; defaults to a chevron when the row is interactive. */
6539
- action?: React.ReactNode;
6540
- onClick?: () => void;
6541
- }
6542
- declare const AttentionItem: React$1.ForwardRefExoticComponent<AttentionItemProps & React$1.RefAttributes<HTMLDivElement>>;
6543
-
6544
- /**
6545
- * BottomNav — mobile tab bar for the client portal (desktop uses the
6546
- * sidebar instead). Fixed to the viewport bottom with safe-area padding;
6547
- * each tab is an icon + short label with an optional count/dot badge.
6548
- *
6549
- * Controlled via `value` + `onChange`. Keep it to 3–5 tabs — beyond that,
6550
- * labels truncate and the row gets cramped on a 390px screen.
6551
- */
6552
- interface BottomNavTab {
6553
- id: string;
6554
- label: string;
6555
- icon: React.ReactNode;
6556
- /** Numeric badge; `true` renders a dot. */
6557
- badge?: number | boolean;
6558
- }
6559
- interface BottomNavProps extends Omit<React.HTMLAttributes<HTMLElement>, "onChange"> {
6560
- tabs: BottomNavTab[];
6561
- value: string;
6562
- onChange: (id: string) => void;
6563
- }
6564
- declare const BottomNav: React$1.ForwardRefExoticComponent<BottomNavProps & React$1.RefAttributes<HTMLElement>>;
6565
-
6566
- /**
6567
- * DashGrid — drag-to-reorder widget grid for the firm dashboard. Each
6568
- * widget gets a 6-dot grab handle; dragging it over another widget moves
6569
- * it to that slot. The flat order is the source of truth; widgets flow
6570
- * row-major into a responsive CSS grid.
6571
- *
6572
- * Order is uncontrolled by default. Pass `storageKey` to persist it to
6573
- * `localStorage` — the initial order is read **once** in a lazy
6574
- * `useState` initializer (SSR-safe: no read on the server), and the grid
6575
- * carries `suppressHydrationWarning` because a persisted client order will
6576
- * legitimately differ from the server's default order on first paint.
6577
- * `onReorder` fires with the new id order on every move.
6578
- */
6579
- interface DashWidget {
6580
- id: string;
6581
- content: React.ReactNode;
6582
- /** Column span on the lg grid (1–3). Default 1. */
6583
- span?: 1 | 2 | 3;
6584
- }
6585
- interface DashGridProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onReorder"> {
6586
- widgets: DashWidget[];
6587
- /** Persist order under this `localStorage` key. Omit to disable persistence. */
6588
- storageKey?: string;
6589
- onReorder?: (orderedIds: string[]) => void;
6590
- /** Max columns on large screens. Default 3. */
6591
- columns?: 2 | 3 | 4;
6592
- }
6593
- declare const DashGrid: React$1.ForwardRefExoticComponent<DashGridProps & React$1.RefAttributes<HTMLDivElement>>;
6594
-
6595
- interface EngagementCardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
6596
- /** Service name, e.g. "Tax". */
6597
- service: string;
6598
- /** Service glyph (an icon node). */
6599
- serviceIcon?: React.ReactNode;
6600
- tone?: ServiceTone;
6601
- title: string;
6602
- /** Status node (typically a <StatusPill> or plain label). */
6603
- status?: React.ReactNode;
6604
- /** Current step index (1-based) and total. */
6605
- current: number;
6606
- steps: number;
6607
- /** Name of the current step, shown in the caption. */
6608
- stepLabel?: string;
6609
- /** Footer ETA content, e.g. "Est. completion Mar 14" or "Recurring engagement". */
6610
- eta?: React.ReactNode;
6611
- /** Show a ProgressRing instead of segments + percent. */
6612
- ring?: boolean;
6613
- onOpen?: () => void;
6614
- }
6615
- declare const EngagementCard: React$1.ForwardRefExoticComponent<EngagementCardProps & React$1.RefAttributes<HTMLDivElement>>;
6616
-
6617
- /**
6618
- * EngagementTimeline — vertical stepper for an engagement's lifecycle.
6619
- * Each step is a node + connector rail on the left and a body on the right.
6620
- *
6621
- * done → filled success node with a check + "Completed {date}" line
6622
- * active → toned ring node + "In progress" badge + inline actions
6623
- * todo → muted node + "Upcoming" badge
6624
- *
6625
- * The active node + badge read the service `--tone` set once on the
6626
- * container (see `serviceToneStyle`). Compose with `<EngagementTimelineStep>`
6627
- * children, mirroring the `<ActivityList>` / `<ActivityItem>` split.
6628
- */
6629
- type TimelineState = "done" | "active" | "todo";
6630
- interface EngagementTimelineProps extends React.HTMLAttributes<HTMLOListElement> {
6631
- /** Service tone for active nodes. */
6632
- tone?: ServiceTone;
6633
- }
6634
- declare const EngagementTimeline: React$1.ForwardRefExoticComponent<EngagementTimelineProps & React$1.RefAttributes<HTMLOListElement>>;
6635
- interface EngagementTimelineStepProps extends Omit<React.LiHTMLAttributes<HTMLLIElement>, "title"> {
6636
- state: TimelineState;
6637
- /** Step name. */
6638
- name: React.ReactNode;
6639
- /** 1-based index shown inside todo/active nodes. */
6640
- index: number;
6641
- /** Supporting copy under the name. */
6642
- note?: React.ReactNode;
6643
- /** Completion date, shown for `done` steps. */
6644
- date?: React.ReactNode;
6645
- /** Inline action row, shown for `active` steps. */
6646
- actions?: React.ReactNode;
6647
- /** Hide the connector below the node (last step). */
6648
- last?: boolean;
6649
- }
6650
- declare const EngagementTimelineStep: React$1.ForwardRefExoticComponent<EngagementTimelineStepProps & React$1.RefAttributes<HTMLLIElement>>;
6651
-
6652
- /**
6653
- * FolderTree — collapsible document tree (Documents panel / mobile sheet).
6654
- * Rows are chevron + folder + name + optional count. Each row has two
6655
- * intents and therefore two DOM elements (skill §4): the chevron is a
6656
- * `<button>` that only toggles expansion (so `aria-expanded` is accurate
6657
- * and is independently keyboard-reachable), and the body is a separate
6658
- * `<button>` that selects the folder.
5420
+ * FolderTree — collapsible document tree (Documents panel / mobile sheet).
5421
+ * Rows are chevron + folder + name + optional count. Each row has two
5422
+ * intents and therefore two DOM elements (skill §4): the chevron is a
5423
+ * `<button>` that only toggles expansion (so `aria-expanded` is accurate
5424
+ * and is independently keyboard-reachable), and the body is a separate
5425
+ * `<button>` that selects the folder.
6659
5426
  *
6660
5427
  * Sizing matches the firm Documents workspace: 12px name rows, a 13px
6661
5428
  * chevron column, 14px folder glyphs, and a flush-right tabular count pill.
@@ -6687,281 +5454,80 @@ interface FolderTreeProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "on
6687
5454
  }
6688
5455
  declare const FolderTree: React$1.ForwardRefExoticComponent<FolderTreeProps & React$1.RefAttributes<HTMLDivElement>>;
6689
5456
 
6690
- /**
6691
- * ClientRailItem — a client row in the firm Documents left rail.
6692
- *
6693
- * Renders as a full-width, left-aligned `<button>`. Displays the client
6694
- * avatar, name, an optional pending-documents indicator (purple dot +
6695
- * "N pending" label), a file-count chip, and a meta suffix (e.g. a relative
6696
- * timestamp).
6697
- *
6698
- * Active state highlights the row with `bg-brand-bg` and a 3 px left accent
6699
- * bar in the active brand colour. Hover (when not active) applies `bg-surface-2`.
6700
- *
6701
- * Spread standard `<button>` attributes (including `onClick`) directly.
6702
- */
6703
- interface ClientRailItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
6704
- /** Client or entity display name. */
6705
- name: string;
6706
- /** Optional avatar image URL — forwarded to the DS Avatar `src` prop. */
6707
- avatarSrc?: string;
6708
- /** Entity kind label, e.g. "Individual" or "Business". */
6709
- entityType: string;
6710
- /** Number of pending document requests; 0 / undefined → no pending badge. */
6711
- pendingCount?: number;
6712
- /** Total file count shown in the name-row chip. Omit to hide the chip. */
6713
- fileCount?: number;
6714
- /** Trailing meta node — typically a relative-time string like "2h ago". */
6715
- metaSuffix?: React.ReactNode;
6716
- /** Whether this row is the currently-selected client in the rail. */
6717
- active?: boolean;
6718
- }
6719
- declare const ClientRailItem: React$1.ForwardRefExoticComponent<ClientRailItemProps & React$1.RefAttributes<HTMLButtonElement>>;
6720
- /**
6721
- * ClientRailGroupHeader — section label row for the Documents left rail.
6722
- *
6723
- * When `accent` is true a 7 px pro-tone dot precedes the label and the text
6724
- * is coloured in the active brand colour — signals that the group contains clients with
6725
- * pending document requests. An optional `count` is appended as " · N".
6726
- */
6727
- interface ClientRailGroupHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
6728
- /** Group label text, e.g. "Awaiting documents" or "All clients". */
6729
- label: string;
6730
- /** Optional count appended as " · N" after the label. */
5457
+ /** One segment. @experimental */
5458
+ interface SegmentedControlOption<TValue extends string = string> {
5459
+ value: TValue;
5460
+ label: React$1.ReactNode;
5461
+ /** A quiet tally after the label, e.g. the number of rows in that view. */
6731
5462
  count?: number;
5463
+ /** A leading glyph, decorative. */
5464
+ icon?: React$1.ReactNode;
5465
+ disabled?: boolean;
5466
+ }
5467
+ /** @experimental */
5468
+ interface SegmentedControlProps<TValue extends string = string> {
5469
+ /** The segments, in reading order. */
5470
+ options: readonly SegmentedControlOption<TValue>[];
5471
+ value?: TValue;
5472
+ defaultValue?: TValue;
5473
+ onValueChange?: (value: TValue) => void;
6732
5474
  /**
6733
- * When true, renders a purple StatusDot before the label and colours the
6734
- * label in `text-brand` (the active brand colour). Use for "Awaiting documents" groups.
5475
+ * The accessible name of the group. Required unless the control sits in a
5476
+ * `Field` or a `Fieldset`, which names it instead.
6735
5477
  */
6736
- accent?: boolean;
6737
- }
6738
- declare const ClientRailGroupHeader: React$1.ForwardRefExoticComponent<ClientRailGroupHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
6739
-
6740
- interface DocumentFileRowProps extends React$1.HTMLAttributes<HTMLDivElement> {
6741
- name: string;
6742
- fileType: string;
6743
- size?: string;
6744
- date?: string;
6745
- by?: string;
6746
- status?: React$1.ReactNode;
6747
- nameAdornment?: React$1.ReactNode;
6748
- menu?: React$1.ReactNode;
6749
- selected?: boolean;
6750
- showCheckbox?: boolean;
6751
- onSelectedChange?: (checked: boolean) => void;
6752
- onOpen?: () => void;
6753
- }
6754
- type DocumentFileCardProps = DocumentFileRowProps;
6755
- declare const DocumentFileRow: React$1.ForwardRefExoticComponent<DocumentFileRowProps & React$1.RefAttributes<HTMLDivElement>>;
6756
- declare const DocumentFileCard: React$1.ForwardRefExoticComponent<DocumentFileRowProps & React$1.RefAttributes<HTMLDivElement>>;
6757
- declare const lineCaptionToneClass: {
6758
- readonly muted: "ds:text-fg-4";
6759
- readonly warning: "ds:text-warning-fg";
6760
- readonly danger: "ds:text-danger-fg";
6761
- };
6762
- interface DocumentFileLineProps extends React$1.HTMLAttributes<HTMLDivElement> {
6763
- /** The file's own name. */
6764
- name: string;
6765
- /** Drives the leading glyph colour ("pdf", "image/png", "xlsx", …). */
6766
- fileType?: string;
6767
- /** Small chip at the trailing edge — e.g. the classified document type. */
6768
- typeLabel?: React$1.ReactNode;
6769
- /** One muted status line under the name — e.g. "Categorizing…". */
6770
- caption?: React$1.ReactNode;
6771
- /** Colour tone for the caption. */
6772
- captionTone?: keyof typeof lineCaptionToneClass;
6773
- /** When set, a preview (eye) button is shown that calls this. */
6774
- onOpen?: () => void;
6775
- /** Accessible label for the preview button (defaults to `Preview {name}`). */
6776
- previewLabel?: string;
6777
- }
6778
- /**
6779
- * DocumentFileLine — a compact single-line file row for DENSE inline lists:
6780
- * the files collected under a checklist item, a "still sorting" group, or an
6781
- * "also received" list. Unlike {@link DocumentFileRow} it carries no checkbox,
6782
- * kebab menu, or size/date/by meta — just a file glyph, name, an optional type
6783
- * chip + caption, and an optional preview (eye) action. Purpose-built for
6784
- * {@link DocumentChecklist}; reach for `DocumentFileRow` when you need
6785
- * selection, a menu, or file metadata.
6786
- */
6787
- declare const DocumentFileLine: React$1.ForwardRefExoticComponent<DocumentFileLineProps & React$1.RefAttributes<HTMLDivElement>>;
6788
-
6789
- /**
6790
- * A checklist item's lifecycle, from the client's point of view:
6791
- * awaiting — expected, nothing uploaded yet
6792
- * in-review — a file arrived and is being categorized / verified
6793
- * received — the document is in
6794
- * complete — in and finalized
6795
- * not-applicable — the client marked it as not-needed
6796
- */
6797
- type DocumentChecklistStatus = "awaiting" | "in-review" | "received" | "complete" | "not-applicable";
6798
- /** A single collected file rendered under an item (or in the sorting/extra lists). */
6799
- interface DocumentChecklistFile extends Pick<DocumentFileLineProps, "name" | "fileType" | "typeLabel" | "caption" | "captionTone" | "onOpen"> {
6800
- id: string;
6801
- }
6802
- /** One expected document type on the checklist. */
6803
- interface DocumentChecklistItem {
6804
- id: string;
6805
- /** Plain-English label the client reads (e.g. "W-2"). */
6806
- label: string;
6807
- status: DocumentChecklistStatus;
6808
- /** Files classified into this slot (0..N). */
6809
- files?: DocumentChecklistFile[];
5478
+ "aria-label"?: string;
5479
+ "aria-labelledby"?: string;
5480
+ /** Segment look, as on `ToggleGroup`: `default` (default) or `outline`. */
5481
+ variant?: ToggleGroupVariant;
5482
+ /** Height on the shared control scale (A1). Omitted: `ToggleGroup`'s geometry. */
5483
+ size?: ToggleGroupSize;
5484
+ /** The form field name. Without it the control does not take part in a form. */
5485
+ name?: string;
5486
+ form?: string;
5487
+ required?: boolean;
5488
+ disabled?: boolean;
6810
5489
  /**
6811
- * Rendered under an awaiting row — the "I can't provide this" control (a
6812
- * caller-owned Select of missing-reason options). Kept as a slot so the
6813
- * composite stays presentational and product-agnostic.
5490
+ * Allow clicking the active segment to clear the value (`onValueChange`
5491
+ * then receives `""`). Default `false`: a segmented control always has an
5492
+ * answer.
6814
5493
  */
6815
- action?: React$1.ReactNode;
6816
- }
6817
- interface DocumentChecklistProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
6818
- items: DocumentChecklistItem[];
6819
- /** Section heading. */
6820
- title?: string;
6821
- /** Roll-up shown as a count + bar. Omit to hide the progress header. */
6822
- progress?: {
6823
- received: number;
6824
- total: number;
6825
- percent: number;
6826
- };
6827
- /** The upload dropzone, rendered at the very top of the single column. */
6828
- upload?: React$1.ReactNode;
6829
- /** Files still being sorted (not yet placed on a slot). */
6830
- reviewing?: DocumentChecklistFile[];
6831
- /** Recognized files that aren't on the checklist. */
6832
- extra?: DocumentChecklistFile[];
6833
- reviewingLabel?: string;
6834
- extraLabel?: string;
6835
- /** Rendered when there are no items at all. */
6836
- emptyState?: React$1.ReactNode;
6837
- }
6838
- /**
6839
- * DocumentChecklist — the client's single-column "your documents" experience.
6840
- *
6841
- * One scannable list: an upload dropzone on top, a progress roll-up, then every
6842
- * expected document as a row that moves through Awaiting → Reviewing → Received
6843
- * in place (state lives on the row, never in a separate bucket). Files still
6844
- * being sorted surface in a compact "we're sorting these" group, and recognized
6845
- * files that aren't on the checklist fall under an "also received" divider — so
6846
- * nothing an upload produced is ever hidden, and there is exactly one place to
6847
- * look.
6848
- *
6849
- * Fully controlled and presentational: the caller supplies `items`, `progress`,
6850
- * and slots (`upload`, per-row `action`, per-file `onOpen`). It consumes only
6851
- * semantic tokens, so `data-brand` retints it per product automatically.
6852
- */
6853
- declare const DocumentChecklist: React$1.ForwardRefExoticComponent<DocumentChecklistProps & React$1.RefAttributes<HTMLDivElement>>;
6854
-
6855
- /**
6856
- * DocumentRequestField — one numbered "document N" card inside the Request
6857
- * Documents modal. Renders a header badge, an optional remove button, and a
6858
- * three-field grid: document-type slot (caller-supplied), a required label
6859
- * input, and an optional note input.
6860
- *
6861
- * Props:
6862
- * - `index` — zero-based position; badge shows `index + 1`.
6863
- * - `typeControl` — ReactNode rendered in the Type field slot (pass a
6864
- * select, combobox, or disabled placeholder).
6865
- * - `label` — controlled value for the Label input.
6866
- * - `onLabelChange` — called with the new string on every keystroke.
6867
- * - `note` — controlled value for the Note input.
6868
- * - `onNoteChange` — called with the new string on every keystroke.
6869
- * - `onRemove` — when provided (and `canRemove` is true) a remove
6870
- * button appears in the header row.
6871
- * - `canRemove` — guards `onRemove`; set false when only one field
6872
- * remains so the user cannot delete the last entry.
6873
- */
6874
- interface DocumentRequestFieldProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
6875
- /** Zero-based index; displayed as `index + 1` in the badge and aria-labels. */
6876
- index: number;
6877
- /** Slot for the document-type control (select, combobox, disabled input, etc.). */
6878
- typeControl: React.ReactNode;
6879
- /** Controlled value for the Label field. */
6880
- label: string;
6881
- /** Called with the updated string whenever the Label input changes. */
6882
- onLabelChange: (value: string) => void;
6883
- /** Controlled value for the Note field. */
6884
- note: string;
6885
- /** Called with the updated string whenever the Note input changes. */
6886
- onNoteChange: (value: string) => void;
6887
- /** Callback to remove this card from the list. Only rendered when `canRemove` is also true. */
6888
- onRemove?: () => void;
6889
- /** Whether removal is permitted (e.g. false when this is the last card). */
6890
- canRemove?: boolean;
5494
+ allowDeselect?: boolean;
5495
+ className?: string;
5496
+ /** Classes for every segment. */
5497
+ itemClassName?: string;
6891
5498
  }
6892
- declare const DocumentRequestField: React$1.ForwardRefExoticComponent<DocumentRequestFieldProps & React$1.RefAttributes<HTMLDivElement>>;
6893
-
6894
5499
  /**
6895
- * MissingDocumentsPanel — an AI insight card that surfaces documents still
6896
- * expected from a client within an engagement.
5500
+ * The single-select segmented control: a `ToggleGroup` preset with radio
5501
+ * semantics, a value that cannot be cleared, and per-segment counts.
6897
5502
  *
6898
- * Items carry one of three states that map to a `<StatusPill>` semantic:
6899
- * missing → "Requested" (warning)
6900
- * pending → "Pending" (secondary)
6901
- * received → "Received" (success)
6902
- *
6903
- * When no items remain, the panel renders a compact "All documents received"
6904
- * success line instead of an empty list.
6905
- *
6906
- * Pass `onRequest` to show a "Request missing" footer button. The panel is
6907
- * fully controlled — it renders whatever `items` you supply.
6908
- */
6909
- type DocumentItemState = "missing" | "pending" | "received";
6910
- interface MissingDocumentItem {
6911
- /** Document label shown in the row. */
6912
- label: string;
6913
- /** Optional due / expected date string (e.g. "Due Jun 20"). */
6914
- dueDate?: string;
6915
- /** Current fulfilment state for this document. */
6916
- state: DocumentItemState;
6917
- }
6918
- interface MissingDocumentsPanelProps extends React.HTMLAttributes<HTMLDivElement> {
6919
- /** List of expected documents and their current states. */
6920
- items: MissingDocumentItem[];
6921
- /** Subtitle below the panel title. */
6922
- subtitle?: string;
6923
- /** When provided a "Request missing" button is rendered in the footer. */
6924
- onRequest?: () => void;
6925
- }
6926
- declare const MissingDocumentsPanel: React$1.ForwardRefExoticComponent<MissingDocumentsPanelProps & React$1.RefAttributes<HTMLDivElement>>;
6927
-
6928
- /**
6929
- * NewMenu — the TopBar "+ New" create dropdown. A primary button opens a
6930
- * menu of create actions, optionally split into labelled groups (e.g.
6931
- * "Work" vs "People"). Thin composition over the DropdownMenu primitive;
6932
- * the surface, focus, and portal behavior all come from there.
5503
+ * @experimental
6933
5504
  */
6934
- interface NewMenuAction {
6935
- id: string;
6936
- label: React.ReactNode;
6937
- /** Supporting line under the label. */
6938
- description?: React.ReactNode;
6939
- icon?: React.ReactNode;
6940
- /** Keyboard hint, right-aligned (display only). */
6941
- shortcut?: string;
6942
- onSelect?: () => void;
6943
- }
6944
- interface NewMenuGroup {
6945
- label?: React.ReactNode;
6946
- actions: NewMenuAction[];
6947
- }
6948
- interface NewMenuProps {
6949
- /** Flat action list. Use `groups` instead for labelled sections. */
6950
- actions?: NewMenuAction[];
6951
- groups?: NewMenuGroup[];
6952
- /** Trigger label. Default "New". */
6953
- triggerLabel?: React.ReactNode;
6954
- /** Override the trigger entirely (still opens the menu). */
6955
- trigger?: React.ReactNode;
6956
- align?: "start" | "center" | "end";
6957
- }
6958
- declare const NewMenu: React$1.ForwardRefExoticComponent<NewMenuProps & React$1.RefAttributes<HTMLButtonElement>>;
5505
+ declare function SegmentedControl<TValue extends string = string>({ options, value, defaultValue, onValueChange, variant, size, name, form, required, disabled, allowDeselect, className, itemClassName, ...aria }: SegmentedControlProps<TValue>): react_jsx_runtime.JSX.Element;
6959
5506
 
6960
5507
  type ShellProps = React.HTMLAttributes<HTMLDivElement>;
6961
5508
  declare const Shell: React$1.ForwardRefExoticComponent<ShellProps & React$1.RefAttributes<HTMLDivElement>>;
6962
5509
  type MainProps = React.HTMLAttributes<HTMLElement>;
6963
5510
  declare const Main: React$1.ForwardRefExoticComponent<MainProps & React$1.RefAttributes<HTMLElement>>;
6964
5511
  interface ContentProps extends React.HTMLAttributes<HTMLDivElement> {
5512
+ /**
5513
+ * Padding of the scrolling content region.
5514
+ *
5515
+ * - `"default"` (the default) — the symmetric inset the token build writes
5516
+ * from the `layout` group (`--ds-layout-content-padding`, with the legacy
5517
+ * `--shell-*` / content-padding names kept for compat, W7-01). Unchanged
5518
+ * from 1.x.
5519
+ * - `"none"` — no inset at all, for a full-bleed screen (split view, map,
5520
+ * Kanban board, embedded editor) that owns its own padding. Replaces the
5521
+ * negative margins and important-flagged padding overrides the apps carry
5522
+ * today just to undo the default inset.
5523
+ *
5524
+ * `padTop` / `padBottom` still apply on top of either value, so
5525
+ * `padding="none"` with `padBottom="64px"` is a full-bleed region with a
5526
+ * scroll-end gutter.
5527
+ *
5528
+ * @experimental W7-01.
5529
+ */
5530
+ padding?: "default" | "none";
6965
5531
  /**
6966
5532
  * Override the top padding only. Use this when an app shell has its own
6967
5533
  * sticky header rhythm and needs a denser first row without reaching for
@@ -6982,7 +5548,7 @@ interface ContentProps extends React.HTMLAttributes<HTMLDivElement> {
6982
5548
  */
6983
5549
  padBottom?: string;
6984
5550
  }
6985
- declare const Content: React$1.ForwardRefExoticComponent<ContentProps & React$1.RefAttributes<HTMLDivElement>>;
5551
+ declare const Content$1: React$1.ForwardRefExoticComponent<ContentProps & React$1.RefAttributes<HTMLDivElement>>;
6986
5552
 
6987
5553
  type SidebarState = "expanded" | "rail";
6988
5554
  interface SidebarContextValue {
@@ -7009,14 +5575,49 @@ declare function useSidebarState(): SidebarContextValue;
7009
5575
  interface SidebarProviderProps {
7010
5576
  children?: React$1.ReactNode;
7011
5577
  state?: SidebarState;
5578
+ /**
5579
+ * The state of the first render, in uncontrolled mode. Read on the server
5580
+ * (from a cookie) and passed down, this is the hydration-safe way to restore
5581
+ * a collapsed sidebar: the server and the client's first render agree, so no
5582
+ * `data-state` mismatch and no `useId` drift (W7-02).
5583
+ */
7012
5584
  defaultState?: SidebarState;
7013
5585
  onStateChange?: (next: SidebarState) => void;
7014
- /** Persist the user's intent across reloads under this localStorage key. */
5586
+ /** Persist the user's intent across reloads under this key. See `storage`. */
7015
5587
  storageKey?: string;
5588
+ /**
5589
+ * Where `storageKey` persists.
5590
+ *
5591
+ * - `"localStorage"` (default) — 1.x behaviour. Readable only in the
5592
+ * browser, so the stored value lands one render *after* hydration and a
5593
+ * non-default state flashes for a frame.
5594
+ * - `"cookie"` — writes `storageKey=<state>; path=/; max-age=1y;
5595
+ * samesite=lax` on every change, so the *server* can read it back:
5596
+ *
5597
+ * ```tsx
5598
+ * // app/layout.tsx (Next.js server component)
5599
+ * const pinned = (await cookies()).get("sidebar")?.value;
5600
+ * return (
5601
+ * <SidebarProvider
5602
+ * storageKey="sidebar"
5603
+ * storage="cookie"
5604
+ * defaultState={pinned === "rail" ? "rail" : "expanded"}
5605
+ * >
5606
+ * {children}
5607
+ * </SidebarProvider>
5608
+ * );
5609
+ * ```
5610
+ *
5611
+ * The first paint is already correct, nothing is read before hydration,
5612
+ * and the app needs no wrapper of its own.
5613
+ *
5614
+ * @experimental W7-02.
5615
+ */
5616
+ storage?: "localStorage" | "cookie";
7016
5617
  /** Global toggle shortcut. Pass `null` to disable. Defaults to `Mod+\`. */
7017
5618
  shortcut?: string | null;
7018
5619
  }
7019
- declare function SidebarProvider({ children, state: controlled, defaultState, onStateChange, storageKey, shortcut, }: SidebarProviderProps): react_jsx_runtime.JSX.Element;
5620
+ declare function SidebarProvider({ children, state: controlled, defaultState, onStateChange, storageKey, storage, shortcut, }: SidebarProviderProps): react_jsx_runtime.JSX.Element;
7020
5621
  declare namespace SidebarProvider {
7021
5622
  var displayName: string;
7022
5623
  }
@@ -7094,6 +5695,20 @@ interface SidebarSectionProps extends React$1.HTMLAttributes<HTMLDivElement> {
7094
5695
  * Mirrors the `tone` API on `<SidebarLinkBadge>`.
7095
5696
  */
7096
5697
  tone?: "pro" | "muted";
5698
+ /**
5699
+ * Trailing slot in the section's header row, beside the label — an "add"
5700
+ * icon button, a count, a disclosure. The header row is already a
5701
+ * `justify-between` flex row, so this lands at its right edge, and it hides
5702
+ * with the rest of the header in rail mode.
5703
+ *
5704
+ * Rendered bare, with no wrapper of ours, and only when a header row exists
5705
+ * (`label` or `headerActions` present) — so a section without it keeps the
5706
+ * exact 1.x DOM `C-DOM-06` freezes (the header row stays the section's first
5707
+ * child div).
5708
+ *
5709
+ * @experimental W7-03.
5710
+ */
5711
+ headerActions?: React$1.ReactNode;
7097
5712
  }
7098
5713
  declare const SidebarSection: React$1.ForwardRefExoticComponent<SidebarSectionProps & React$1.RefAttributes<HTMLDivElement>>;
7099
5714
  interface SidebarLinkProps extends React$1.AnchorHTMLAttributes<HTMLAnchorElement> {
@@ -7170,153 +5785,31 @@ interface SidebarUserProps extends React$1.HTMLAttributes<HTMLDivElement> {
7170
5785
  avatarSrc?: string | null;
7171
5786
  }
7172
5787
  declare const SidebarUser: React$1.ForwardRefExoticComponent<SidebarUserProps & React$1.RefAttributes<HTMLDivElement>>;
7173
-
7174
- interface SidebarBrandSwitcherItem {
7175
- /** Stable id used as React key and for `data-item` on each row. */
7176
- id: string;
7177
- /** Primary display name, e.g. "Assure Audit". */
7178
- name: string;
7179
- /** Sub-line under the name, e.g. "Audit fieldwork". */
7180
- tagline?: string;
7181
- /**
7182
- * Short label rendered inside the default tile glyph (first character
7183
- * is used, à la "A" for "Audit"). Ignored when `glyph` is supplied.
7184
- */
7185
- short?: string;
7186
- /**
7187
- * Accent for the default tile background. A Tailwind class string
7188
- * (e.g. `"bg-[#5b3bc4]"`) — the consumer owns brand color values, the
7189
- * DS just composes them. Ignored when `glyph` is supplied.
7190
- */
7191
- tone?: string;
7192
- /**
7193
- * Pre-rendered tile glyph. When provided, replaces the default
7194
- * "first letter on `tone` swatch" tile entirely. Use for items that
7195
- * have a real mark instead of a letter.
7196
- */
7197
- glyph?: React$1.ReactNode;
7198
- /**
7199
- * Full-width identity node rendered in place of the tile + `name`
7200
- * — e.g. a product wordmark lockup (`<Logo href={null} …>`). When present
7201
- * the row omits the tile and the `name` text; `tagline` still renders
7202
- * beneath it. When absent the row falls back to tile + `name`.
7203
- *
7204
- * Framework-neutral like the rest of this composite: pass whatever element
7205
- * your stack renders (a DS `Logo`, a plain `<img>`, an inline SVG). The DS
7206
- * does not bind to it.
7207
- */
7208
- identity?: React$1.ReactNode;
5788
+ interface SidebarDrawerProps {
5789
+ /** Controlled open state. */
5790
+ open?: boolean;
5791
+ /** Initial open state when uncontrolled. */
5792
+ defaultOpen?: boolean;
5793
+ onOpenChange?: (open: boolean) => void;
7209
5794
  /**
7210
- * False marks the item as not-yet-available; rendered disabled with
7211
- * a "Soon" badge by default (override via `unavailableBadge`).
5795
+ * Accessible name of the drawer. Defaults to `sidebar.navigation`
5796
+ * ("Navigation") from the provider's messages.
7212
5797
  */
7213
- available?: boolean;
7214
- /** Pass-through onto the row's `data-item` for analytics / e2e hooks. */
7215
- dataAttr?: string;
5798
+ label?: string;
5799
+ /** Extra classes on the sliding panel. */
5800
+ className?: string;
5801
+ children?: React$1.ReactNode;
7216
5802
  }
7217
5803
  /**
7218
- * An external launcher row appended after the "Switch to" list — a non-suite
7219
- * entry with no availability / "Soon" semantics (e.g. a partner product reached
7220
- * by its own autologin URL rather than the suite's switch model). Vendor color
7221
- * lives in the consumer-owned `glyph`, keeping brand hex out of the DS.
5804
+ * Off-canvas sidebar for small viewports.
5805
+ *
5806
+ * @experimental W7-04. The desktop `Sidebar` is unchanged; this is an
5807
+ * additional mount point whose panel geometry may still change.
7222
5808
  */
7223
- interface SidebarBrandSwitcherExtra {
7224
- /** Stable id — React key and default `data-item`. */
7225
- id: string;
7226
- /** Left glyph (a consumer-owned mark/tile). Vendor color belongs here. */
7227
- glyph?: React$1.ReactNode;
7228
- /**
7229
- * Full-width identity node rendered in place of the `glyph` + `name` — e.g. a
7230
- * product wordmark lockup (`<Logo href={null} …>`) — mirroring
7231
- * `SidebarBrandSwitcherItem.identity`. Use it so an external launcher row
7232
- * reads at the same size and on the same line as the suite product rows.
7233
- * When present, `tagline` still renders beneath it and `glyph`/`name` are
7234
- * omitted. Consumer-owned and framework-neutral like the rest of this slot.
7235
- */
7236
- identity?: React$1.ReactNode;
7237
- /** Primary display name, e.g. "myCPE One". */
7238
- name: React$1.ReactNode;
7239
- /** Sub-line under the name. */
7240
- tagline?: React$1.ReactNode;
7241
- /** Invoked when the row is selected. The DS holds no opinion on what it does. */
7242
- onSelect: () => void;
7243
- /** Pass-through onto the row's `data-item` for analytics / e2e hooks. */
7244
- dataAttr?: string;
7245
- }
7246
- interface SidebarBrandSwitcherProps {
7247
- /**
7248
- * Brand glyph rendered at the left edge of the trigger (e.g. an
7249
- * `<img>` of the product mark). Consumer-supplied so the DS does
7250
- * not bind to a framework-specific image element.
7251
- */
7252
- brand?: React$1.ReactNode;
7253
- /** Wordmark / label rendered next to the brand glyph in the trigger. */
7254
- label: React$1.ReactNode;
7255
- /**
7256
- * The currently-active item. Pinned at the top of the menu and
7257
- * excluded from the "Switch to" list automatically.
7258
- */
7259
- current: SidebarBrandSwitcherItem;
7260
- /**
7261
- * Full item list including `current`. Order is preserved in the
7262
- * "Switch to" section; the current entry is filtered out.
7263
- */
7264
- items: SidebarBrandSwitcherItem[];
7265
- /**
7266
- * Called when a non-current, available item is selected. Receives the
7267
- * full item so consumers can route, open a new window, or trigger an
7268
- * SSO handoff — the DS holds no opinion on what "switch" means.
7269
- */
7270
- onLaunch?: (item: SidebarBrandSwitcherItem) => void | Promise<void>;
7271
- /**
7272
- * External launcher rows appended after the "Switch to" list — non-suite
7273
- * entries with no availability / "Soon" semantics. Each renders a consumer
7274
- * `glyph` + name + tagline and calls its own `onSelect`.
7275
- */
7276
- extras?: SidebarBrandSwitcherExtra[];
7277
- /**
7278
- * Optional predicate reporting whether an item is mid-launch from an
7279
- * external source (e.g. a suite-focus provider that drives the launch itself).
7280
- * ORed with the row's internal launching state to show the "Opening…" badge
7281
- * and to guard against a double launch. Absent → only internal state applies.
7282
- */
7283
- isLaunching?: (item: SidebarBrandSwitcherItem) => boolean;
7284
- /** Label above the current row. Defaults to "Currently using". */
7285
- currentSectionLabel?: React$1.ReactNode;
7286
- /** Label above the others list. Defaults to "Switch to". */
7287
- switchSectionLabel?: React$1.ReactNode;
7288
- /** Label at the very top of the menu. Defaults to "Suite". */
7289
- menuLabel?: React$1.ReactNode;
7290
- /** Badge text next to the current item. Defaults to "Current". */
7291
- currentBadge?: React$1.ReactNode;
7292
- /** Badge text on unavailable items. Defaults to "Soon". */
7293
- unavailableBadge?: React$1.ReactNode;
7294
- /** Accessible label on the trigger button. Defaults to "Switch product". */
7295
- triggerLabel?: string;
7296
- /** Extra classes applied to the outer brand-row wrapper. */
7297
- className?: string;
7298
- /** Extra classes applied to the trigger button. */
7299
- triggerClassName?: string;
7300
- /** Extra classes applied to the dropdown content panel. */
7301
- contentClassName?: string;
7302
- /**
7303
- * Extra classes applied to the current row, each "Switch to" product row, and
7304
- * each `extras` launcher row. Lets a consumer reproduce bespoke row
7305
- * padding/height via tailwind-merge without the DS owning that geometry, and
7306
- * keeps launcher rows aligned with the product rows.
7307
- */
7308
- rowClassName?: string;
7309
- /**
7310
- * Slot rendered to the right of the trigger inside the brand row.
7311
- * Typical use: drop a `<SidebarPinButton/>` here.
7312
- */
7313
- trailing?: React$1.ReactNode;
7314
- }
7315
- declare const SidebarBrandSwitcher: React$1.ForwardRefExoticComponent<SidebarBrandSwitcherProps & React$1.RefAttributes<HTMLDivElement>>;
7316
- interface SidebarBrandSwitcherTileProps {
7317
- item: SidebarBrandSwitcherItem;
5809
+ declare function SidebarDrawer({ open, defaultOpen, onOpenChange, label, className, children, }: SidebarDrawerProps): react_jsx_runtime.JSX.Element;
5810
+ declare namespace SidebarDrawer {
5811
+ var displayName: string;
7318
5812
  }
7319
- declare function SidebarBrandSwitcherTile({ item }: SidebarBrandSwitcherTileProps): react_jsx_runtime.JSX.Element;
7320
5813
 
7321
5814
  /**
7322
5815
  * AppHeader — sticky 56px-tall top bar mounted inside `<Main>`, above
@@ -7380,6 +5873,29 @@ interface PageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, "title
7380
5873
  actions?: React.ReactNode;
7381
5874
  /** Slot below the description for pills, specs, separators. */
7382
5875
  meta?: React.ReactNode;
5876
+ /**
5877
+ * The outline level of the title — which of `<h1>`…`<h6>` renders (W7-06).
5878
+ * Defaults to `1`: a page header is the page's heading.
5879
+ *
5880
+ * Set it when the header sits inside a screen that already owns its `<h1>`
5881
+ * (a detail pane, a step in a wizard, a dialog body) so the document outline
5882
+ * stays correct without the title changing size. Semantic only — the visual
5883
+ * scale is `titleSize`.
5884
+ *
5885
+ * @experimental W7-06.
5886
+ */
5887
+ headingLevel?: HeadingLevel;
5888
+ /**
5889
+ * The title's visual role, one of the `Heading` role tokens.
5890
+ *
5891
+ * Omit it for the 1.x page-title metrics (26px / 1.25 / -0.025em, weight
5892
+ * inherited), which stay the default so nothing moves. Pass one — usually
5893
+ * `"title-page"` — to render the role token instead, which is what removes
5894
+ * the 30 distinct `h1` class strings the apps carry today.
5895
+ *
5896
+ * @experimental W7-06.
5897
+ */
5898
+ titleSize?: HeadingSize;
7383
5899
  }
7384
5900
  declare const PageHeader: React$1.ForwardRefExoticComponent<PageHeaderProps & React$1.RefAttributes<HTMLElement>>;
7385
5901
  type PageHeaderSpecProps = React.HTMLAttributes<HTMLSpanElement>;
@@ -7504,271 +6020,63 @@ interface SelectableKpiCardProps extends Omit<React.ButtonHTMLAttributes<HTMLBut
7504
6020
  declare const KpiCard: React$1.ForwardRefExoticComponent<KpiCardProps & React$1.RefAttributes<HTMLDivElement>>;
7505
6021
  declare const SelectableKpiCard: React$1.ForwardRefExoticComponent<SelectableKpiCardProps & React$1.RefAttributes<HTMLButtonElement>>;
7506
6022
 
7507
- interface DataTableProps extends React.HTMLAttributes<HTMLDivElement> {
7508
- /** When true, renders the table card with a flat top edge so it
7509
- * visually attaches to a `<DataTableToolbar>` above it. */
7510
- withToolbar?: boolean;
7511
- }
7512
- /**
7513
- * DataTable — outer wrapper. Children are typically:
7514
- * <DataTableToolbar /> + <table> + <DataTablePagination />.
7515
- *
7516
- * The `<table>` is hand-written by the consumer; this wrapper renders
7517
- * the surface card chrome on its descendant `<table>` element via a
7518
- * Tailwind arbitrary-variant selector. When `withToolbar` is set, the
7519
- * top corners flatten so the table visually joins the toolbar above.
7520
- *
7521
- * Children render in document order — toolbar (if any) then `<table>`
7522
- * then pagination — with the table card and the pagination not sharing
7523
- * a background.
7524
- */
7525
- declare const DataTable: React$1.ForwardRefExoticComponent<DataTableProps & React$1.RefAttributes<HTMLDivElement>>;
7526
- type DataTableToolbarProps = React.HTMLAttributes<HTMLDivElement>;
7527
- /**
7528
- * DataTableToolbar — header strip at the top of the table card. The outer
7529
- * frame is owned by `<DataTable>`, so this is just a row with a bottom
7530
- * divider separating it from the table below.
7531
- */
7532
- declare const DataTableToolbar: React$1.ForwardRefExoticComponent<DataTableToolbarProps & React$1.RefAttributes<HTMLDivElement>>;
7533
- interface DataTableSearchProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size"> {
7534
- /** Override the default placeholder. */
7535
- placeholder?: string;
6023
+ /** Props shared by every table state. @experimental */
6024
+ interface TableStateProps extends React.HTMLAttributes<HTMLTableSectionElement> {
6025
+ /** How many columns the table has — the state spans them all. */
6026
+ columns: number;
6027
+ /** Overrides of the copy (W5-22): prop > provider `messages.tableStates` > English. */
6028
+ messages?: Partial<TableStatesMessages>;
7536
6029
  }
7537
- /**
7538
- * DataTableSearch — small search input slot inside the toolbar. Wraps
7539
- * the `Input` primitive at `inputSize="sm"` with a leading search icon.
7540
- */
7541
- declare const DataTableSearch: React$1.ForwardRefExoticComponent<DataTableSearchProps & React$1.RefAttributes<HTMLInputElement>>;
7542
- type DataTableSpacerProps = React.HTMLAttributes<HTMLSpanElement>;
7543
- /** DataTableSpacer — `flex-1` spacer for arranging toolbar items. */
7544
- declare const DataTableSpacer: React$1.ForwardRefExoticComponent<DataTableSpacerProps & React$1.RefAttributes<HTMLSpanElement>>;
7545
- interface DataTableResultsCountProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "children"> {
7546
- current: number;
7547
- total: number;
7548
- }
7549
- /**
7550
- * DataTableResultsCount — small "12 of 247" indicator. Mono + tabular.
7551
- */
7552
- declare const DataTableResultsCount: React$1.ForwardRefExoticComponent<DataTableResultsCountProps & React$1.RefAttributes<HTMLSpanElement>>;
7553
- /**
7554
- * DataTableHead — wraps `<thead>`. Renders the surface-2 header row
7555
- * with the rule-bottom divider (`.data-table th` styling lives on the
7556
- * `DataTableHeader` cells themselves).
7557
- */
7558
- type DataTableHeadProps = React.HTMLAttributes<HTMLTableSectionElement>;
7559
- declare const DataTableHead: React$1.ForwardRefExoticComponent<DataTableHeadProps & React$1.RefAttributes<HTMLTableSectionElement>>;
7560
- type DataTableBodyProps = React.HTMLAttributes<HTMLTableSectionElement>;
7561
- /** DataTableBody — wraps `<tbody>`. Last row drops its bottom border. */
7562
- declare const DataTableBody: React$1.ForwardRefExoticComponent<DataTableBodyProps & React$1.RefAttributes<HTMLTableSectionElement>>;
7563
- interface DataTableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {
7564
- /** Pro-tinted highlight for the current selection. */
7565
- selected?: boolean;
7566
- }
7567
- /**
7568
- * DataTableRow — `<tr>` with hover styling. `selected` switches the
7569
- * row to the Pro-bg highlight (matches `data-[state=selected]` on the
7570
- * Table primitive).
7571
- */
7572
- declare const DataTableRow: React$1.ForwardRefExoticComponent<DataTableRowProps & React$1.RefAttributes<HTMLTableRowElement>>;
7573
- type SortDirection = "asc" | "desc";
7574
- interface DataTableHeaderProps extends React.ThHTMLAttributes<HTMLTableCellElement> {
7575
- /** When true, the cell becomes a clickable button that toggles sort
7576
- * state and renders a chevron indicator. */
7577
- sortable?: boolean;
7578
- /** Initial sort direction when the header mounts in a sorted state. */
7579
- defaultSort?: SortDirection;
7580
- /** Optional controlled sort state. When provided, `onSortChange` should
7581
- * also be wired up — the header becomes fully controlled. */
7582
- sort?: SortDirection | null;
7583
- /** Fires whenever the user clicks a sortable header. */
7584
- onSortChange?: (sort: SortDirection | null) => void;
7585
- }
7586
- /**
7587
- * DataTableHeader — `<th>` cell. Sentence-case label in the body font
7588
- * (Plus Jakarta Sans, 14px) with optional sort indicator. Sort cycle
7589
- * when uncontrolled:
7590
- * unsorted → asc → desc → unsorted (3-state).
7591
- * `defaultSort` seeds the initial state. Pass `sort` + `onSortChange`
7592
- * for fully-controlled usage when an upstream store owns the sort.
7593
- */
7594
- declare const DataTableHeader: React$1.ForwardRefExoticComponent<DataTableHeaderProps & React$1.RefAttributes<HTMLTableCellElement>>;
7595
- type DataTableCellProps = React.TdHTMLAttributes<HTMLTableCellElement>;
7596
- /** DataTableCell — default cell, 13px / fg-2. */
7597
- declare const DataTableCell: React$1.ForwardRefExoticComponent<DataTableCellProps & React$1.RefAttributes<HTMLTableCellElement>>;
7598
- /**
7599
- * DataTableCellName — primary identifier of the row. Display font,
7600
- * fg color, medium weight.
7601
- */
7602
- declare const DataTableCellName: React$1.ForwardRefExoticComponent<DataTableCellProps & React$1.RefAttributes<HTMLTableCellElement>>;
7603
- /**
7604
- * DataTableCellMono — currency / IDs / numerics. Body font (Plus Jakarta
7605
- * Sans) with tabular numerals so columns of figures stay aligned.
7606
- */
7607
- declare const DataTableCellMono: React$1.ForwardRefExoticComponent<DataTableCellProps & React$1.RefAttributes<HTMLTableCellElement>>;
7608
- /**
7609
- * DataTableCellId — muted ID (EIN, UUID, "5h ago") in the body font
7610
- * (Plus Jakarta Sans) with tabular numerals.
7611
- */
7612
- declare const DataTableCellId: React$1.ForwardRefExoticComponent<DataTableCellProps & React$1.RefAttributes<HTMLTableCellElement>>;
7613
- interface DataTableCellDueProps extends Omit<React.TdHTMLAttributes<HTMLTableCellElement>, "children"> {
7614
- /** Date this row is due. */
7615
- value: Date;
7616
- /** Optional override for the displayed label (defaults to the
7617
- * formatted date). */
7618
- children?: ReactNode;
6030
+ interface TableLoadingProps extends TableStateProps {
6031
+ /** How many skeleton rows to render. Default 5. */
6032
+ rows?: number;
6033
+ /**
6034
+ * The width of the skeleton bar in each column (any CSS length or
6035
+ * percentage), cycled when shorter than `columns`. Default a varied set so
6036
+ * the rows read as text of different lengths.
6037
+ */
6038
+ widths?: readonly string[];
6039
+ /** Accessible name announced while loading. Default `messages.tableStates.loading` (`"Loading"`). */
6040
+ label?: string;
7619
6041
  }
7620
6042
  /**
7621
- * DataTableCellDue — accepts a Date and auto-colors:
7622
- * diff < 0 → text-danger-fg (overdue)
7623
- * diff < 14d → text-warning-fg (due-near)
7624
- * otherwise → text-fg-3 (default)
6043
+ * TableLoading — `<tbody aria-busy>` of skeleton rows sized to the columns.
6044
+ * The bars are the `Skeleton` primitive (Polish 2 shimmer, static under
6045
+ * reduced motion) and `aria-hidden`; the body carries the busy state and name.
7625
6046
  *
7626
- * The 14-day threshold and day-rounding (`Math.floor`) match the
7627
- * `.cell-due-near` / `.cell-due-overdue` CSS classes in the mockup.
7628
- */
7629
- declare const DataTableCellDue: React$1.ForwardRefExoticComponent<DataTableCellDueProps & React$1.RefAttributes<HTMLTableCellElement>>;
7630
- interface DataTableCheckboxProps extends Omit<React.TdHTMLAttributes<HTMLTableCellElement>, "onChange" | "defaultChecked"> {
7631
- /** Forwarded to the inner `Checkbox` primitive. */
7632
- checked?: boolean | "indeterminate";
7633
- defaultChecked?: boolean | "indeterminate";
7634
- onCheckedChange?: (checked: boolean | "indeterminate") => void;
7635
- /** Accessible label for the checkbox (e.g. "Select row Acme Corp."). */
7636
- ariaLabel?: string;
7637
- disabled?: boolean;
7638
- /** Render the cell as `<th>` (for the select-all header) instead of `<td>`. */
7639
- asHeader?: boolean;
7640
- }
7641
- /**
7642
- * DataTableCheckbox — `<td>` containing the row-selection checkbox.
7643
- * Tightened to a 32px column with no right padding to match
7644
- * `.row-checkbox` in the spec.
6047
+ * @experimental
7645
6048
  */
7646
- declare const DataTableCheckbox: React$1.ForwardRefExoticComponent<DataTableCheckboxProps & React$1.RefAttributes<HTMLTableCellElement>>;
7647
- interface DataTablePaginationProps extends Omit<React.HTMLAttributes<HTMLElement>, "onChange"> {
7648
- /** 1-indexed current page. */
7649
- current: number;
7650
- /** Total number of items across all pages. */
7651
- total: number;
7652
- /** Items per page. Default 25. */
7653
- pageSize?: number;
7654
- onPageChange?: (page: number) => void;
7655
- siblingCount?: number;
6049
+ declare const TableLoading: React$1.ForwardRefExoticComponent<TableLoadingProps & React$1.RefAttributes<HTMLTableSectionElement>>;
6050
+ interface TableEmptyProps extends TableStateProps {
6051
+ icon?: ReactNode;
6052
+ /** Default `messages.tableStates.empty` (`"No results"`). */
6053
+ title?: string;
6054
+ description?: string;
6055
+ action?: ReactNode;
7656
6056
  }
7657
6057
  /**
7658
- * DataTablePagination — full pagination strip. Wraps the existing
7659
- * `Pagination` primitive: derives `pageCount` from `total / pageSize`
7660
- * and forwards the page label ("1–25 of 327"). Page size defaults to
7661
- * 25 (the consumer contract did not specify; this matches the most
7662
- * common firm-app table page size).
7663
- */
7664
- declare const DataTablePagination: React$1.ForwardRefExoticComponent<DataTablePaginationProps & React$1.RefAttributes<HTMLElement>>;
7665
-
7666
- /**
7667
- * DataTableView — config-driven table on top of the composition
7668
- * `DataTable*` primitives. Every list/table screen is just a config:
7669
- * `columns` + `data` (+ optional `filters` / `searchKeys` / sort). The
7670
- * wrapper owns the search / filter / sort / pagination *state*; the table
7671
- * chrome, sortable headers, and pagination all come from the existing
7672
- * `DataTable` family (no fork, no second table chrome).
6058
+ * TableEmpty — one full-width row holding a compact `EmptyState`.
7673
6059
  *
7674
- * It complements — does not replace — the composition API: reach for the
7675
- * raw `DataTable*` parts when a screen needs bespoke cells or layout; reach
7676
- * for `DataTableView` when the table is "columns + rows + the usual
7677
- * toolbar." Render helpers (`StagePill`, `Assignee`, `MoneyCell`,
7678
- * `TagsCell`) cover the recurring cell shapes.
6060
+ * @experimental
7679
6061
  */
7680
- type TableRowData = Record<string, unknown>;
7681
- interface DataTableViewColumn<Row extends TableRowData> {
7682
- key: string;
7683
- header: string;
7684
- /** Column width. Fixed px (`"120px"`) sets a hard width; a grid-style
7685
- * `"minmax(190px,1.5fr)"` is read as a `min-width` and the column flexes. */
7686
- width?: string;
7687
- sortable?: boolean;
7688
- align?: "right";
7689
- /** Custom sort accessor (e.g. a numeric `lastDays` behind a "5h ago" label). */
7690
- sortValue?: (row: Row) => string | number | null | undefined;
7691
- /** Custom cell renderer; defaults to the raw field value. */
7692
- render?: (row: Row) => ReactNode;
7693
- }
7694
- interface DataTableViewFilter<Row extends TableRowData> {
7695
- key: string;
7696
- label?: string;
7697
- allLabel?: string;
7698
- options: (string | {
7699
- value: string;
7700
- label: string;
7701
- })[];
7702
- match: (row: Row, value: string) => boolean;
7703
- }
7704
- /**
7705
- * Row selection. Controlled: the caller owns the id set, so a selection can
7706
- * outlive a filter change (or be cleared on one) — that policy belongs to the
7707
- * screen, not the table.
7708
- */
7709
- interface DataTableViewSelection<Row extends TableRowData> {
7710
- /** Ids of selected rows, keyed by `rowKey`. May include rows not currently visible. */
7711
- selectedIds: ReadonlySet<string>;
7712
- onSelectionChange: (selectedIds: Set<string>) => void;
7713
- /**
7714
- * Rows the caller will not accept — e.g. an already-sent record. They render a
7715
- * disabled checkbox and are excluded from select-all, so "all" never selects
7716
- * something the action would reject.
7717
- */
7718
- isRowSelectable?: (row: Row) => boolean;
7719
- /**
7720
- * What the header checkbox covers. **Required decision, not a default to
7721
- * ignore:** with 132 filtered rows across 9 pages, "select all" meaning *this
7722
- * page* and meaning *all 132* are different features, and a table that guesses
7723
- * eventually acts on 132 records when the user saw 15.
7724
- * `"page"` (default) — the rows currently on screen.
7725
- * `"filtered"` — every row matching the active search and filters.
7726
- */
7727
- selectAllScope?: "page" | "filtered";
7728
- /** Accessible label for a row's checkbox, e.g. ``(row) => `Select ${row.name}` ``. */
7729
- rowLabel?: (row: Row) => string;
7730
- }
7731
- interface DataTableViewProps<Row extends TableRowData> {
7732
- columns: DataTableViewColumn<Row>[];
7733
- data: Row[];
7734
- filters?: DataTableViewFilter<Row>[];
7735
- searchKeys?: string[];
7736
- searchPlaceholder?: string;
7737
- initialSort?: {
7738
- key: string;
7739
- dir: SortDirection;
7740
- } | null;
7741
- onRowClick?: (row: Row) => void;
7742
- rowKey?: string;
7743
- pageSize?: number;
7744
- /** Plural noun for the footer / empty state, e.g. "clients". */
7745
- itemLabel?: string;
7746
- /** Opt in to row selection. Omit it and the table renders exactly as before. */
7747
- selection?: DataTableViewSelection<Row>;
7748
- className?: string;
7749
- }
7750
- declare function DataTableView<Row extends TableRowData>({ columns, data, filters, searchKeys, searchPlaceholder, initialSort, onRowClick, rowKey, pageSize, itemLabel, selection, className, }: DataTableViewProps<Row>): react_jsx_runtime.JSX.Element;
7751
- type TableTone = "slate" | "blue" | "violet" | "amber" | "ok" | "rose";
7752
- /** Em-dash placeholder for empty cells. */
7753
- declare function Dash(): react_jsx_runtime.JSX.Element;
7754
- /** StagePill — colored stage/status pill for `column.render`. */
7755
- declare function StagePill({ tone, dot, children, }: {
7756
- tone?: TableTone;
7757
- dot?: boolean;
7758
- children: ReactNode;
7759
- }): react_jsx_runtime.JSX.Element;
7760
- /** Assignee — grey avatar + name, or "Unassigned". */
7761
- declare function Assignee({ name }: {
7762
- name?: string | null;
7763
- }): react_jsx_runtime.JSX.Element;
7764
- /** MoneyCell — `$1,234` or an em-dash when falsy/zero. */
7765
- declare function MoneyCell({ value }: {
7766
- value?: number | null;
7767
- }): react_jsx_runtime.JSX.Element;
7768
- /** TagsCell — first tag + "+N" overflow. */
7769
- declare function TagsCell({ items }: {
7770
- items?: string[];
7771
- }): react_jsx_runtime.JSX.Element;
6062
+ declare const TableEmpty: React$1.ForwardRefExoticComponent<TableEmptyProps & React$1.RefAttributes<HTMLTableSectionElement>>;
6063
+ interface TableErrorProps extends Omit<TableStateProps, "messages"> {
6064
+ /** Overrides of the copy (W5-22): prop > provider `messages.errorState` > English. */
6065
+ messages?: Partial<ErrorStateMessages>;
6066
+ icon?: ReactNode;
6067
+ /** Default `messages.errorState.title` (`"Something went wrong"`). */
6068
+ title?: string;
6069
+ description?: string;
6070
+ /** Renders the retry button (`"Try again"`) that calls it. */
6071
+ onRetry?: () => void;
6072
+ action?: ReactNode;
6073
+ }
6074
+ /**
6075
+ * TableError — one full-width row holding a compact `ErrorState` with retry.
6076
+ *
6077
+ * @experimental
6078
+ */
6079
+ declare const TableError: React$1.ForwardRefExoticComponent<TableErrorProps & React$1.RefAttributes<HTMLTableSectionElement>>;
7772
6080
 
7773
6081
  /**
7774
6082
  * Detail layout composites — two-column layout: a sticky left rail (the
@@ -7798,330 +6106,6 @@ declare const DetailSpineStats: React$1.ForwardRefExoticComponent<DetailSpineSta
7798
6106
  type DetailMainProps = React.HTMLAttributes<HTMLElement>;
7799
6107
  declare const DetailMain: React$1.ForwardRefExoticComponent<DetailMainProps & React$1.RefAttributes<HTMLElement>>;
7800
6108
 
7801
- /**
7802
- * DocumentDetailPanel — the right-hand inspector for a document request
7803
- * (the "FY2025 PBC — Receivables & Fixed Assets" panel). Presentational
7804
- * compound: the app owns data, tab state, and every action handler;
7805
- * compose only the rows a surface needs.
7806
- *
7807
- * <DocumentDetailPanel>
7808
- * <DocumentDetailHeader
7809
- * status={<Badge variant="success">Provided</Badge>}
7810
- * tags={<>…</>}
7811
- * onClose={close}
7812
- * >
7813
- * <DocumentDetailTitle>FY2025 PBC — Receivables & Fixed Assets</DocumentDetailTitle>
7814
- * <DocumentDetailRequester
7815
- * org="Acme Manufacturing LLC" avatar="AM"
7816
- * requestedBy="Maya Auditor" time="5d ago"
7817
- * />
7818
- * <DocumentDetailMetaRow>…due chip…2 assigned…</DocumentDetailMetaRow>
7819
- * <DocumentDetailActions>…Edit / Lock / Status / Delete…</DocumentDetailActions>
7820
- * </DocumentDetailHeader>
7821
- * <DocumentDetailBody>
7822
- * <Tabs>…</Tabs>
7823
- * <DocumentList>
7824
- * <DocumentListSection label="Client uploads" count={2}>
7825
- * <DocumentRow fileName="…" meta="…" actions={<…/>} />
7826
- * </DocumentListSection>
7827
- * </DocumentList>
7828
- * </DocumentDetailBody>
7829
- * </DocumentDetailPanel>
7830
- *
7831
- * Tabs (Documents / Comments / Activity) use the `Tabs` primitive — this
7832
- * composite doesn't reinvent them. Status / priority chips are `Badge`s.
7833
- */
7834
- type DocumentDetailPanelProps = React.HTMLAttributes<HTMLElement>;
7835
- declare const DocumentDetailPanel: React$1.ForwardRefExoticComponent<DocumentDetailPanelProps & React$1.RefAttributes<HTMLElement>>;
7836
- interface DocumentDetailHeaderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
7837
- /** Leading chips — folder, priority, classification (left of the bar). */
7838
- tags?: React.ReactNode;
7839
- /** Status pill, right-aligned (e.g. a "Provided" success Badge). */
7840
- status?: React.ReactNode;
7841
- onClose?: () => void;
7842
- }
7843
- declare const DocumentDetailHeader: React$1.ForwardRefExoticComponent<DocumentDetailHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
7844
- type DocumentDetailTitleProps = React.HTMLAttributes<HTMLHeadingElement>;
7845
- declare const DocumentDetailTitle: React$1.ForwardRefExoticComponent<DocumentDetailTitleProps & React$1.RefAttributes<HTMLHeadingElement>>;
7846
- interface DocumentDetailRequesterProps extends React.HTMLAttributes<HTMLDivElement> {
7847
- /** Image src, or initials/name passed through to <Avatar>. */
7848
- avatar: string;
7849
- /** Client / organisation name — the primary line. */
7850
- org: string;
7851
- /** Who requested the document. */
7852
- requestedBy: string;
7853
- /** Relative time, e.g. "5d ago". */
7854
- time: string;
7855
- }
7856
- declare const DocumentDetailRequester: React$1.ForwardRefExoticComponent<DocumentDetailRequesterProps & React$1.RefAttributes<HTMLDivElement>>;
7857
- type DocumentDetailMetaRowProps = React.HTMLAttributes<HTMLDivElement>;
7858
- declare const DocumentDetailMetaRow: React$1.ForwardRefExoticComponent<DocumentDetailMetaRowProps & React$1.RefAttributes<HTMLDivElement>>;
7859
- type DocumentDetailActionsProps = React.HTMLAttributes<HTMLDivElement>;
7860
- declare const DocumentDetailActions: React$1.ForwardRefExoticComponent<DocumentDetailActionsProps & React$1.RefAttributes<HTMLDivElement>>;
7861
- type DocumentDetailBodyProps = React.HTMLAttributes<HTMLDivElement>;
7862
- declare const DocumentDetailBody: React$1.ForwardRefExoticComponent<DocumentDetailBodyProps & React$1.RefAttributes<HTMLDivElement>>;
7863
- type DocumentListProps = React.HTMLAttributes<HTMLDivElement>;
7864
- declare const DocumentList: React$1.ForwardRefExoticComponent<DocumentListProps & React$1.RefAttributes<HTMLDivElement>>;
7865
- interface DocumentListSectionProps extends React.HTMLAttributes<HTMLElement> {
7866
- /** Section label, e.g. "Client uploads". */
7867
- label: React.ReactNode;
7868
- /** Count shown next to the label. */
7869
- count?: number;
7870
- /** Trailing slot, right-aligned (e.g. an "Upload" button). */
7871
- action?: React.ReactNode;
7872
- }
7873
- declare const DocumentListSection: React$1.ForwardRefExoticComponent<DocumentListSectionProps & React$1.RefAttributes<HTMLElement>>;
7874
- interface DocumentRowProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
7875
- /** File name — the row's primary line. */
7876
- fileName: string;
7877
- /** Secondary line, e.g. "320 KB · Jun 11, 2026 · Acme Manufacturing". */
7878
- meta?: React.ReactNode;
7879
- /** Leading file-type icon; defaults to a neutral document glyph. */
7880
- icon?: React.ReactNode;
7881
- /** Render the row in its approved state — a green file-icon chip plus an
7882
- * "Approved" tag after the file name. */
7883
- approved?: boolean;
7884
- /** Render the row in its rejected state — a red file-icon chip plus a
7885
- * "Rejected" tag after the file name. Ignored when `approved` is set. */
7886
- rejected?: boolean;
7887
- /** Trailing action controls (Extract / preview / download / delete). */
7888
- actions?: React.ReactNode;
7889
- }
7890
- declare const DocumentRow: React$1.ForwardRefExoticComponent<DocumentRowProps & React$1.RefAttributes<HTMLDivElement>>;
7891
-
7892
- /**
7893
- * DocumentRequestCard + DocumentRequestDetail — the firm "Requests" surface.
7894
- *
7895
- * Both are presentational: the app owns data fetching, tab/preview state, and
7896
- * every action handler, and passes plain data + callbacks. They wrap the
7897
- * `DocumentDetail*` kit, the icon set, the tab primitives, and the assignee
7898
- * dropdown so a consuming app imports two components instead of ~40 parts.
7899
- */
7900
- type DocumentRequestTone = "warning" | "success" | "danger" | "muted";
7901
- interface DocumentRequestItemSummary {
7902
- /** Stable id for the row key. */
7903
- id: string;
7904
- /** Requested-document label, e.g. "AR aging (12/31/2025)". */
7905
- label: string;
7906
- /** Short type chip, e.g. "Schedule". */
7907
- docType?: string;
7908
- /** Status text, e.g. "Received". */
7909
- statusLabel: string;
7910
- /** Status colour. */
7911
- statusTone: DocumentRequestTone;
7912
- }
7913
- interface DocumentRequestCardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onClick" | "title"> {
7914
- /** Request headline. */
7915
- title: string;
7916
- /** Free-form category chip. */
7917
- category?: string;
7918
- /** Renders the urgent triangle when true. */
7919
- highPriority?: boolean;
7920
- /** Relative due chip + tone, e.g. `{ text: "Due in 6d", tone: "warning" }`. */
7921
- due?: {
7922
- text: string;
7923
- tone: DocumentRequestTone;
7924
- };
7925
- /** Optional request description rendered as a quote. */
7926
- comment?: string;
7927
- /** Fulfilled item count (numerator of the progress pill). */
7928
- fulfilledCount: number;
7929
- /** Total item count (denominator of the progress pill). */
7930
- totalCount: number;
7931
- /** Requested items rendered as rows. */
7932
- items: DocumentRequestItemSummary[];
7933
- /** Assignee display names for the footer avatar stack. */
7934
- assignees?: string[];
7935
- /** Open the request detail. */
7936
- onOpen: () => void;
7937
- }
7938
- declare const DocumentRequestCard: React$1.ForwardRefExoticComponent<DocumentRequestCardProps & React$1.RefAttributes<HTMLDivElement>>;
7939
- type DocumentRequestDetailTab = "documents" | "comments" | "activity";
7940
- type DocumentRequestActivityKind = "assigned" | "unassigned" | "added" | "uploaded" | "priority" | "created" | "reminded" | "updated" | "commented" | "cancelled" | "received" | "approved" | "needs_revision" | "locked" | "unlocked" | "status";
7941
- interface DocumentRequestDetailDoc {
7942
- /** Stable id for the row key. */
7943
- id: string;
7944
- /** File name shown as the row's primary line. */
7945
- fileName: string;
7946
- /** Secondary meta line (size · date · uploader). */
7947
- meta?: React.ReactNode;
7948
- /** Highlight the row (e.g. its preview is open). */
7949
- active?: boolean;
7950
- /** Firm review verdict — `true` renders the row in its approved state
7951
- * (green icon + "Approved" tag) and hides the approve action. */
7952
- approved?: boolean;
7953
- /** Firm review verdict — `true` renders the row in its rejected state
7954
- * (red icon + "Rejected" tag). Ignored when `approved` is set. */
7955
- rejected?: boolean;
7956
- /** Approve this document. Renders a tick action before Preview while the
7957
- * doc is not yet approved; omit to hide the affordance. */
7958
- onApprove?: () => void;
7959
- onPreview?: () => void;
7960
- onDownload?: () => void;
7961
- onDelete?: () => void;
7962
- }
7963
- interface DocumentRequestRequestedItem {
7964
- /** Stable id for the row key. */
7965
- id: string;
7966
- /** Requested-document label, e.g. "AR aging (12/31/2025)". */
7967
- label: string;
7968
- /** Short type chip, e.g. "Schedule". */
7969
- docType?: string;
7970
- /** Status text, e.g. "Received". */
7971
- statusLabel: string;
7972
- /** Status colour (drives the dot + label). */
7973
- statusTone: DocumentRequestTone;
7974
- /** Client upload(s) fulfilling this item; empty means still awaiting. */
7975
- documents: DocumentRequestDetailDoc[];
7976
- }
7977
- interface DocumentRequestDetailComment {
7978
- /** Stable id for the row key. */
7979
- id: string;
7980
- /** Author display name. */
7981
- author: string;
7982
- /** True for a firm author (vs a client contact) — drives the badge. */
7983
- isFirm: boolean;
7984
- /** Render a "(You)" suffix for the current user. */
7985
- you?: boolean;
7986
- /** Relative time. */
7987
- time: string;
7988
- /** Comment body. */
7989
- body: string;
7990
- }
7991
- interface DocumentRequestDetailActivityEvent {
7992
- /** Stable id for the row key. */
7993
- id: string;
7994
- /** Event kind — selects the leading icon. */
7995
- kind: DocumentRequestActivityKind;
7996
- /** Rendered event text (may include bolded names). */
7997
- text: React.ReactNode;
7998
- /** Relative time. */
7999
- time: string;
8000
- }
8001
- interface DocumentRequestAssigneeOption {
8002
- /** Firm-user id. */
8003
- id: string;
8004
- /** Display name. */
8005
- name: string;
8006
- /** Whether currently assigned. */
8007
- selected: boolean;
8008
- }
8009
- interface DocumentRequestReviewStatusOption {
8010
- /** Stored value (e.g. "provided"). */
8011
- value: string;
8012
- /** Human label (e.g. "Provided"). */
8013
- label: string;
8014
- /** Tailwind background class for the leading status dot (e.g. "bg-info-fg"). */
8015
- color?: string;
8016
- }
8017
- interface DocumentRequestDetailProps {
8018
- /** Request headline. */
8019
- title: string;
8020
- /** Category chip (left of the header bar). */
8021
- category?: string;
8022
- /** Renders a "High priority" chip. */
8023
- highPriority?: boolean;
8024
- /** Status pill text, right-aligned. */
8025
- statusLabel?: string;
8026
- /** Status pill colour. */
8027
- statusVariant?: BadgeProps["variant"];
8028
- /** Requester block. */
8029
- requester: {
8030
- org: string;
8031
- avatar?: string;
8032
- requestedBy: string;
8033
- time: string;
8034
- };
8035
- /** Due chip text + absolute date. */
8036
- due?: {
8037
- text: string;
8038
- dateLabel?: string;
8039
- };
8040
- /** Assignee options for the picker; `selected` marks the current set. */
8041
- assignees: DocumentRequestAssigneeOption[];
8042
- /** Toggle one assignee (omit to render the avatar stack read-only). */
8043
- onToggleAssignee?: (id: string) => void;
8044
- /** Show the Edit / Lock / Status / Delete action row (firm only). */
8045
- canEdit?: boolean;
8046
- onEdit?: () => void;
8047
- onDelete?: () => void;
8048
- onClose?: () => void;
8049
- /** Whether the request is frozen (drives the Lock/Unlock button label + icon). */
8050
- isLocked?: boolean;
8051
- /** Toggle the lock (omit to hide the Lock button). */
8052
- onToggleLock?: () => void;
8053
- /** The firm's current review verdict (radio-selected in the Status menu). */
8054
- reviewStatus?: string | null;
8055
- /** Selectable review-status options for the Status menu. */
8056
- reviewStatusOptions?: DocumentRequestReviewStatusOption[];
8057
- /** Set the review verdict, or `null` to clear it (omit to hide the Status button). */
8058
- onSetReviewStatus?: (value: string | null) => void;
8059
- /** Controlled active tab. */
8060
- tab?: DocumentRequestDetailTab;
8061
- /** Uncontrolled initial tab (defaults to "documents"). */
8062
- defaultTab?: DocumentRequestDetailTab;
8063
- onTabChange?: (tab: DocumentRequestDetailTab) => void;
8064
- /** Documents tab — flat client-uploaded vault docs. Used only as a fallback
8065
- * when `requestedItems` is omitted. */
8066
- clientUploads?: DocumentRequestDetailDoc[];
8067
- /** Documents tab — firm reference documents. */
8068
- firmDocuments: DocumentRequestDetailDoc[];
8069
- /** Documents tab — requested items with the client upload(s) fulfilling each.
8070
- * When provided, the tab renders a per-item grouped view (each requested
8071
- * document, its status, and the uploads against it) instead of the flat
8072
- * client-uploads list. */
8073
- requestedItems?: DocumentRequestRequestedItem[];
8074
- /** Client uploads not tied to any current item — rendered as a trailing
8075
- * "Other uploads" group in the grouped view. */
8076
- otherUploads?: DocumentRequestDetailDoc[];
8077
- /** Upload affordance for the firm-documents section (omit to hide). */
8078
- onUploadFirmDocument?: () => void;
8079
- /** Comments tab thread. */
8080
- comments: DocumentRequestDetailComment[];
8081
- /** Controlled composer value. */
8082
- commentDraft: string;
8083
- onCommentDraftChange: (value: string) => void;
8084
- onSubmitComment: () => void;
8085
- /** Disable the composer (e.g. lacking permission). */
8086
- commentDisabled?: boolean;
8087
- /** In-flight comment submit. */
8088
- commentPending?: boolean;
8089
- /** Activity tab events, newest-first as desired by the caller. */
8090
- activity: DocumentRequestDetailActivityEvent[];
8091
- className?: string;
8092
- }
8093
- declare const DocumentRequestDetail: React$1.ForwardRefExoticComponent<DocumentRequestDetailProps & React$1.RefAttributes<HTMLElement>>;
8094
-
8095
- /**
8096
- * DocumentSourceFilter — segmented single-select for a files toolbar: scope the
8097
- * list to a provenance bucket. Wraps ToggleGroup (so it inherits roving-focus
8098
- * keyboard nav + the pro-tint active state) and reuses the same `source` →
8099
- * glyph mapping as DocumentSourceTag, plus an "all" aggregate segment.
8100
- *
8101
- * all → (no glyph) every document
8102
- * requested → send glyph client fulfilled a firm request
8103
- * direct → upload glyph client uploaded unprompted
8104
- * internal → shield glyph firm-prepared, not client-visible
8105
- *
8106
- * Controlled: pass `value` + `onValueChange`. `counts` adds a trailing badge per
8107
- * segment; `hideIcons` renders label-only segments.
8108
- */
8109
- type DocumentSourceFilterValue = "all" | DocumentSource;
8110
- interface DocumentSourceFilterProps {
8111
- /** Currently active segment. */
8112
- value: DocumentSourceFilterValue;
8113
- /** Fired when a segment is chosen (re-selecting the active one is ignored). */
8114
- onValueChange: (value: DocumentSourceFilterValue) => void;
8115
- /** Per-segment item counts, rendered as a trailing badge. */
8116
- counts?: Partial<Record<DocumentSourceFilterValue, number>>;
8117
- /** Render label-only segments, with no leading glyph. */
8118
- hideIcons?: boolean;
8119
- className?: string;
8120
- /** Accessible name for the group. */
8121
- "aria-label"?: string;
8122
- }
8123
- declare const DocumentSourceFilter: React$1.ForwardRefExoticComponent<DocumentSourceFilterProps & React$1.RefAttributes<HTMLDivElement>>;
8124
-
8125
6109
  /**
8126
6110
  * ActivityList — vertical feed of activity rows.
8127
6111
  *
@@ -8442,8 +6426,21 @@ interface NotificationItemProps extends Omit<React.ButtonHTMLAttributes<HTMLButt
8442
6426
  body?: React.ReactNode;
8443
6427
  /** Quiet caption shown before the client chip on the meta line. */
8444
6428
  typeLabel?: React.ReactNode;
8445
- /** Client / account name — rendered as an outline chip on the meta line. */
6429
+ /**
6430
+ * Client / account name — rendered as an outline `Badge` on the meta line.
6431
+ *
6432
+ * @deprecated Product vocabulary in a generic component. Use `meta`, which
6433
+ * takes the same node and renders the same chip by default (W7-11).
6434
+ */
8446
6435
  client?: React.ReactNode;
6436
+ /**
6437
+ * Generic slot between `typeLabel` and `time` on the meta line — whatever
6438
+ * this row is *about* (a client, a matter, an engagement). A string or
6439
+ * number renders in the same outline chip `client` used, so replacing
6440
+ * `client` with `meta` is a zero-diff rename; any other node renders raw,
6441
+ * for a row that needs its own chip, link or avatar there.
6442
+ */
6443
+ meta?: React.ReactNode;
8447
6444
  /** Preformatted relative time, e.g. "8m ago". Sits on the meta line. */
8448
6445
  time?: React.ReactNode;
8449
6446
  /** People-driven rows: shows the sender avatar instead of the icon tile. */
@@ -8464,133 +6461,6 @@ declare const NotificationItem: React$1.ForwardRefExoticComponent<NotificationIt
8464
6461
  type NotificationPanelFooterProps = React.ButtonHTMLAttributes<HTMLButtonElement>;
8465
6462
  declare const NotificationPanelFooter: React$1.ForwardRefExoticComponent<NotificationPanelFooterProps & React$1.RefAttributes<HTMLButtonElement>>;
8466
6463
 
8467
- /** Running-clock format from milliseconds → `H:MM:SS`. */
8468
- declare function formatClock(ms: number): string;
8469
- /** Compact duration from seconds → `Xh Ym` (e.g. `2h 10m`, `45m`, `3h`). */
8470
- declare function formatDuration(totalSeconds: number): string;
8471
- /** Parse human input (`3h 20m`, `1:30`, `45m`, bare `90` → minutes) → seconds, or `null`. */
8472
- declare function parseDuration(input: string): number | null;
8473
- /** Currency format used by the billing rows; falls back to `$0.00` for bad ISO codes. */
8474
- declare function formatCurrency(amount: number, currency?: string): string;
8475
- type TimeLoggerPhase = "idle" | "running" | "paused" | "stopped";
8476
- interface UseStopwatchReturn {
8477
- phase: TimeLoggerPhase;
8478
- elapsedMs: number;
8479
- isRunning: boolean;
8480
- /** Begin running, optionally seeded with an offset (e.g. a parsed manual entry). */
8481
- start: (fromMs?: number) => void;
8482
- pause: () => void;
8483
- resume: () => void;
8484
- /** Freeze and mark complete; elapsed is preserved for saving. */
8485
- stop: () => void;
8486
- /** Return to idle at zero. */
8487
- reset: () => void;
8488
- }
8489
- declare function useStopwatch(): UseStopwatchReturn;
8490
- interface TimeLoggerProps extends React$1.HTMLAttributes<HTMLDivElement> {
8491
- /**
8492
- * Layout direction.
8493
- * - `"vertical"` (default) — the stacked panel; rows separated by top
8494
- * rules. For popovers and side panels.
8495
- * - `"horizontal"` — a single compact bar; segments sit side by side,
8496
- * separated by left rules. For an app top/bottom bar. Exposed as
8497
- * `data-orientation` so segment atoms flip their divider via
8498
- * `group-data-[orientation=horizontal]/timelogger`.
8499
- */
8500
- orientation?: "vertical" | "horizontal";
8501
- }
8502
- declare const TimeLogger: React$1.ForwardRefExoticComponent<TimeLoggerProps & React$1.RefAttributes<HTMLDivElement>>;
8503
- interface TimeLoggerHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
8504
- title?: React$1.ReactNode;
8505
- icon?: React$1.ReactNode;
8506
- /** Minutes logged today. With `goalMinutes`, renders the `Xh / Yh` figure + seam. */
8507
- loggedMinutes?: number;
8508
- /** Daily goal in minutes. Omit to hide the goal figure and the progress seam. */
8509
- goalMinutes?: number;
8510
- }
8511
- declare const TimeLoggerHeader: React$1.ForwardRefExoticComponent<TimeLoggerHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
8512
- interface TimeLoggerContextRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
8513
- client: React$1.ReactNode;
8514
- engagement?: React$1.ReactNode;
8515
- /** Leading slot, e.g. an `<Avatar variant="branded" />`. */
8516
- avatar?: React$1.ReactNode;
8517
- onClientSelect?: () => void;
8518
- /** Right-aligned slot — an assignee avatar + menu, or a `<TeamMemberSelect>`. */
8519
- member?: React$1.ReactNode;
8520
- }
8521
- declare const TimeLoggerContextRow: React$1.ForwardRefExoticComponent<TimeLoggerContextRowProps & React$1.RefAttributes<HTMLDivElement>>;
8522
- interface TimeLoggerTimerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onChange"> {
8523
- phase: TimeLoggerPhase;
8524
- elapsedMs: number;
8525
- /** Manual-entry text, shown only while idle. Controlled. */
8526
- value?: string;
8527
- onValueChange?: (value: string) => void;
8528
- placeholder?: string;
8529
- onStart?: () => void;
8530
- onPause?: () => void;
8531
- onResume?: () => void;
8532
- onStop?: () => void;
8533
- }
8534
- declare const TimeLoggerTimer: React$1.ForwardRefExoticComponent<TimeLoggerTimerProps & React$1.RefAttributes<HTMLDivElement>>;
8535
- interface TimeLoggerFieldProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "onSelect"> {
8536
- icon?: React$1.ReactNode;
8537
- /** Small caption above the value. */
8538
- label?: React$1.ReactNode;
8539
- onSelect?: () => void;
8540
- /** Trailing node; defaults to a chevron when interactive. Pass `null` to suppress. */
8541
- trailing?: React$1.ReactNode;
8542
- /** Render the value in the muted placeholder colour. */
8543
- muted?: boolean;
8544
- }
8545
- declare const TimeLoggerField: React$1.ForwardRefExoticComponent<TimeLoggerFieldProps & React$1.RefAttributes<HTMLElement>>;
8546
- interface TimeLoggerNotesProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "value" | "onChange"> {
8547
- value?: string;
8548
- onValueChange?: (value: string) => void;
8549
- icon?: React$1.ReactNode;
8550
- }
8551
- declare const TimeLoggerNotes: React$1.ForwardRefExoticComponent<TimeLoggerNotesProps & React$1.RefAttributes<HTMLInputElement>>;
8552
- interface TimeLoggerTier {
8553
- id: string;
8554
- name: React$1.ReactNode;
8555
- /** Hourly rate in the panel currency; shown in the tier menu's right column. */
8556
- rate: number;
8557
- }
8558
- interface TimeLoggerBillableProps extends React$1.HTMLAttributes<HTMLDivElement> {
8559
- billable: boolean;
8560
- onBillableChange?: (billable: boolean) => void;
8561
- /** Defaults to "Billable" / "Non-billable" derived from `billable`. */
8562
- label?: React$1.ReactNode;
8563
- /** Pricing tiers shown in the settings pop-view. Omit to hide the gear. */
8564
- tiers?: TimeLoggerTier[];
8565
- tierId?: string;
8566
- onTierChange?: (id: string) => void;
8567
- /** ISO currency for tier-rate formatting. Default `"USD"`. */
8568
- currency?: string;
8569
- /** Computed amount readout (rate × time). Pass a formatted node, or omit. */
8570
- amount?: React$1.ReactNode;
8571
- }
8572
- declare const TimeLoggerBillable: React$1.ForwardRefExoticComponent<TimeLoggerBillableProps & React$1.RefAttributes<HTMLDivElement>>;
8573
- type TimeLoggerActionsProps = React$1.HTMLAttributes<HTMLDivElement>;
8574
- declare const TimeLoggerActions: React$1.ForwardRefExoticComponent<TimeLoggerActionsProps & React$1.RefAttributes<HTMLDivElement>>;
8575
- interface TimeLoggerEntryListProps extends React$1.HTMLAttributes<HTMLDivElement> {
8576
- /** Day group caption, e.g. "Fri, May 29". */
8577
- dayLabel?: React$1.ReactNode;
8578
- /** Right-aligned day subtotal, e.g. "2h 10m". */
8579
- total?: React$1.ReactNode;
8580
- }
8581
- declare const TimeLoggerEntryList: React$1.ForwardRefExoticComponent<TimeLoggerEntryListProps & React$1.RefAttributes<HTMLDivElement>>;
8582
- interface TimeLoggerEntryProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
8583
- title: React$1.ReactNode;
8584
- /** Secondary line — time range, billable amount, etc. */
8585
- meta?: React$1.ReactNode;
8586
- duration: React$1.ReactNode;
8587
- onResume?: () => void;
8588
- onDelete?: () => void;
8589
- }
8590
- declare const TimeLoggerEntry: React$1.ForwardRefExoticComponent<TimeLoggerEntryProps & React$1.RefAttributes<HTMLDivElement>>;
8591
- type TimeLoggerFooterProps = React$1.HTMLAttributes<HTMLDivElement>;
8592
- declare const TimeLoggerFooter: React$1.ForwardRefExoticComponent<TimeLoggerFooterProps & React$1.RefAttributes<HTMLDivElement>>;
8593
-
8594
6464
  /**
8595
6465
  * Toolbar — horizontal row of controls used above lists, dashboards, etc.
8596
6466
  * FilterChip is a simpler atom than `MultiFilterPill` — single filter,
@@ -8686,226 +6556,6 @@ type KbdHintProps = React.HTMLAttributes<HTMLElement>;
8686
6556
  */
8687
6557
  declare const KbdHint: React$1.ForwardRefExoticComponent<KbdHintProps & React$1.RefAttributes<HTMLElement>>;
8688
6558
 
8689
- /**
8690
- * SuggestionPills — a horizontal strip of AI quick-reply pills, typically
8691
- * floated above a message composer when the last inbound message warrants a
8692
- * fast response.
8693
- *
8694
- * The pills materialise with a staggered "magic smoke" entrance (the bar
8695
- * rises, the sparkle pulses, each pill puffs in) driven by the shipped
8696
- * `.ds-suggestion-*` classes — motion is suppressed under
8697
- * `prefers-reduced-motion`. Presentational and controlled: the consumer
8698
- * supplies the suggestion strings and a pick handler.
8699
- *
8700
- * <SuggestionPills
8701
- * suggestions={["Sounds good — thanks!", "Could you send the W-2?"]}
8702
- * onPick={(text) => editor.insert(text)}
8703
- * loading={generating}
8704
- * />
8705
- *
8706
- * Returns `null` when not loading and there are no suggestions, so it can be
8707
- * rendered unconditionally.
8708
- *
8709
- * @since 1.5.0
8710
- */
8711
- interface SuggestionPillsProps {
8712
- /** Suggestion strings to render as pills. */
8713
- suggestions: string[];
8714
- /** Fired with the picked suggestion text. */
8715
- onPick: (text: string) => void;
8716
- /** Show skeleton pills while suggestions are being generated. */
8717
- loading?: boolean;
8718
- /** Strip label. Default: `"Smart replies"`. */
8719
- label?: string;
8720
- /** Extra classes on the bar. */
8721
- className?: string;
8722
- }
8723
- declare function SuggestionPills({ suggestions, onPick, loading, label, className, }: SuggestionPillsProps): react_jsx_runtime.JSX.Element | null;
8724
- declare namespace SuggestionPills {
8725
- var displayName: string;
8726
- }
8727
-
8728
- /**
8729
- * AiDraftCard — the "lit-from-within" slab that presents an AI-generated
8730
- * message draft inside a composer.
8731
- *
8732
- * It owns four visual states behind one prop:
8733
- * - `loading` / `refining` — a sparkle + shimmer skeleton over the flowing
8734
- * neon `.ds-ai-surface`.
8735
- * - `error` — a quiet destructive panel with an optional Retry and a
8736
- * Dismiss.
8737
- * - `ready` — the collapsible draft: header (sparkle, "AI Draft",
8738
- * optional context line, collapse toggle), an optional subject line, the
8739
- * draft `children`, and a footer `actions` slot.
8740
- *
8741
- * Presentational only — the consumer supplies the draft text as `children`
8742
- * and the action buttons (Insert / Regenerate / Shorter / …) as `actions`.
8743
- * The card re-expands automatically whenever fresh `children` arrive (keyed
8744
- * off `resetCollapseKey`) so a refined draft is never hidden behind a stale
8745
- * collapsed state.
8746
- *
8747
- * <AiDraftCard
8748
- * state="ready"
8749
- * contextLine="Replying to Jane"
8750
- * subject="Re: Your 2024 return"
8751
- * resetCollapseKey={draftText}
8752
- * actions={<><Button size="sm">Insert</Button>…</>}
8753
- * >
8754
- * <p className="whitespace-pre-wrap">{draftText}</p>
8755
- * </AiDraftCard>
8756
- *
8757
- * @since 1.5.0
8758
- */
8759
- type AiDraftState = "loading" | "refining" | "error" | "ready";
8760
- interface AiDraftCardProps {
8761
- /** Which visual state to render. */
8762
- state: AiDraftState;
8763
- /** Header title. Default: `"AI Draft"`. */
8764
- title?: string;
8765
- /** Optional muted context line in the header (e.g. "Replying to Jane"). */
8766
- contextLine?: ReactNode;
8767
- /** Optional bold subject line shown above the body (email drafts). */
8768
- subject?: ReactNode;
8769
- /** The draft body — typically a `<p className="whitespace-pre-wrap">`. */
8770
- children?: ReactNode;
8771
- /** Footer action buttons (Insert / Regenerate / Discard …). */
8772
- actions?: ReactNode;
8773
- /** Error message — shown when `state="error"`. */
8774
- error?: ReactNode;
8775
- /** Retry handler — adds a Retry button to the error panel. */
8776
- onRetry?: () => void;
8777
- /** Dismiss handler for the error panel. */
8778
- onDismiss?: () => void;
8779
- /** Re-expands the card whenever this value changes (pass the draft text so
8780
- * a freshly generated/refined draft is always revealed). */
8781
- resetCollapseKey?: unknown;
8782
- className?: string;
8783
- }
8784
- declare function AiDraftCard({ state, title, contextLine, subject, children, actions, error, onRetry, onDismiss, resetCollapseKey, className, }: AiDraftCardProps): react_jsx_runtime.JSX.Element;
8785
- declare namespace AiDraftCard {
8786
- var displayName: string;
8787
- }
8788
-
8789
- /**
8790
- * EmailMessageCard — renders an email message as an envelope-style card
8791
- * (header strip / readable body / footer) inside a conversation thread,
8792
- * replacing the "rich HTML stuffed into a chat bubble" anti-pattern.
8793
- *
8794
- * Anatomy:
8795
- * - a meta line ("Name via Email · 3:42 PM") above the card,
8796
- * - a tinted header strip with a mail glyph, the "EMAIL" eyebrow, the
8797
- * subject, a "From …" / optional "Cc N" sub-line, and the time,
8798
- * - a readable body (`children`) that auto-clamps past `clampHeight` with a
8799
- * gradient fade and a "Show full email" toggle,
8800
- * - an optional footer carrying `attachments`, a `status` slot, and
8801
- * `actions` (e.g. a Reply button).
8802
- *
8803
- * Presentational only. The consumer sanitises and renders the email HTML as
8804
- * `children`, supplies the avatar, and brings its own attachment chips /
8805
- * status indicator / Reply control via slots. Direction flips the layout:
8806
- * outbound aligns right with a brand-tinted border; inbound aligns left.
8807
- *
8808
- * <EmailMessageCard
8809
- * direction="inbound"
8810
- * senderName="Jane Cooper"
8811
- * subject="Question about my W-2"
8812
- * time="3:42 PM"
8813
- * avatar={<Avatar name="Jane Cooper" size="xs" />}
8814
- * ccCount={2}
8815
- * attachments={<AttachmentChip … />}
8816
- * actions={<Button size="sm" variant="outline">Reply</Button>}
8817
- * >
8818
- * <div dangerouslySetInnerHTML={{ __html: safeHtml }} />
8819
- * </EmailMessageCard>
8820
- *
8821
- * @since 1.5.0
8822
- */
8823
- interface EmailMessageCardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
8824
- /** Message direction — flips alignment and border treatment. */
8825
- direction: "inbound" | "outbound";
8826
- /** Sender display name. */
8827
- senderName: string;
8828
- /** Email subject — omitted for replies without one. */
8829
- subject?: string;
8830
- /** Pre-formatted send time (e.g. "3:42 PM"). */
8831
- time: string;
8832
- /** Channel label in the meta line. Default: `"Email"`. */
8833
- via?: string;
8834
- /** Avatar node — rendered for inbound messages only. */
8835
- avatar?: ReactNode;
8836
- /** Cc recipient count — shows a "Cc N" indicator when > 0. */
8837
- ccCount?: number;
8838
- /** Sanitised email body (HTML node or plain text). */
8839
- children: ReactNode;
8840
- /** Footer attachment chips. */
8841
- attachments?: ReactNode;
8842
- /** Footer status slot (delivery state). */
8843
- status?: ReactNode;
8844
- /** Footer actions (e.g. Reply). */
8845
- actions?: ReactNode;
8846
- /** Body height (px) above which the clamp/expand toggle appears. Default 240. */
8847
- clampHeight?: number;
8848
- }
8849
- declare function EmailMessageCard({ direction, senderName, subject, time, via, avatar, ccCount, children, attachments, status, actions, clampHeight, className, ...props }: EmailMessageCardProps): react_jsx_runtime.JSX.Element;
8850
- declare namespace EmailMessageCard {
8851
- var displayName: string;
8852
- }
8853
-
8854
- /**
8855
- * SignatureEditor — the panel chrome for editing a personal email signature
8856
- * (rich text, links, and an inline banner image). Designed to live inside a
8857
- * Popover anchored to a "Pen" affordance in the email composer, but it's just
8858
- * a self-contained card so it works in a Dialog or settings page too.
8859
- *
8860
- * Like `MessageComposer`, DS owns the CHROME and the consumer owns the
8861
- * EDITOR: pass your rich-text editor (Tiptap, contenteditable, etc.) as
8862
- * `children`. The panel supplies the titled header with an "Add image"
8863
- * action, a body region (with a loading skeleton), and a Save / Insert
8864
- * footer. All actions are slots/handlers — persistence, image upload, and
8865
- * insertion logic stay with the consumer.
8866
- *
8867
- * <Popover>
8868
- * <PopoverContent className="w-96 p-0">
8869
- * <SignatureEditor
8870
- * loading={loading}
8871
- * addingImage={uploading}
8872
- * onAddImage={pickImage}
8873
- * saving={saving}
8874
- * onSave={save}
8875
- * onInsert={insert}
8876
- * >
8877
- * <RichTextEditor ref={editorRef} />
8878
- * </SignatureEditor>
8879
- * </PopoverContent>
8880
- * </Popover>
8881
- *
8882
- * @since 1.5.0
8883
- */
8884
- interface SignatureEditorProps {
8885
- /** Panel title. Default: `"Email signature"`. */
8886
- title?: string;
8887
- /** The editor — a rich-text input the consumer owns. */
8888
- children: ReactNode;
8889
- /** Show a loading skeleton in place of the editor (while the saved
8890
- * signature is being fetched). */
8891
- loading?: boolean;
8892
- /** "Add image" handler — hides the button when omitted. */
8893
- onAddImage?: () => void;
8894
- /** Spinner + disabled state on the "Add image" button while uploading. */
8895
- addingImage?: boolean;
8896
- /** Save handler — hides the Save button when omitted. */
8897
- onSave?: () => void;
8898
- /** Spinner + disabled state on Save. */
8899
- saving?: boolean;
8900
- /** Insert handler — hides the Insert button when omitted. */
8901
- onInsert?: () => void;
8902
- className?: string;
8903
- }
8904
- declare function SignatureEditor({ title, children, loading, onAddImage, addingImage, onSave, saving, onInsert, className, }: SignatureEditorProps): react_jsx_runtime.JSX.Element;
8905
- declare namespace SignatureEditor {
8906
- var displayName: string;
8907
- }
8908
-
8909
6559
  interface DisplayMenuOption {
8910
6560
  key: string;
8911
6561
  label: string;
@@ -8949,9 +6599,13 @@ interface DisplayMenuProps {
8949
6599
  triggerLabel?: string;
8950
6600
  /** Extra classes for the trigger button. */
8951
6601
  className?: string;
8952
- /** @deprecated Ignored since 1.30. The panel now anchors to the trigger, so
8953
- * there is no gutter to pin to. Consumers that measured a gutter to drag the
8954
- * panel back under its button can delete that plumbing and this prop. */
6602
+ /**
6603
+ * @deprecated Ignored since 1.30 and removed in 2.0 (C-SELECT-DEAD). The
6604
+ * panel anchors to the trigger, so there is no gutter to pin to. Passing it
6605
+ * logs a one-time development warning; consumers that measured a gutter to
6606
+ * drag the panel back under its button can delete that plumbing and this
6607
+ * prop.
6608
+ */
8955
6609
  gutterPx?: number;
8956
6610
  /** Which side of the panel the section flyouts open on. `"auto"` (default)
8957
6611
  * opens left whenever the panel has room there — the usual case for a
@@ -8960,13 +6614,28 @@ interface DisplayMenuProps {
8960
6614
  * free space is on the right. */
8961
6615
  flyoutSide?: "auto" | "left" | "right";
8962
6616
  }
8963
- declare function DisplayMenu({ sections, onReset, isAtDefault, tooltip, dataTour, triggerIcon, triggerLabel, className, flyoutSide, }: DisplayMenuProps): react_jsx_runtime.JSX.Element;
6617
+ declare function DisplayMenu({ sections, onReset, isAtDefault, tooltip, dataTour, triggerIcon, triggerLabel, className, gutterPx, flyoutSide, }: DisplayMenuProps): react_jsx_runtime.JSX.Element;
8964
6618
 
6619
+ /**
6620
+ * How a layer holds its place (W7-08, upstreamed from Tax's fork):
6621
+ *
6622
+ * - `fixed` (default, today's behaviour) — the layer is measured and pinned
6623
+ * with `position: fixed` to the width and left edge of an in-flow spacer.
6624
+ * Correct for page chrome that must escape an ancestor's overflow.
6625
+ * - `sticky` — the layer stays in flow with `position: sticky`. The offset
6626
+ * arithmetic is identical, but nothing is measured into a spacer and the
6627
+ * width is the layer's own, which is what a layer inside a scroll container
6628
+ * or a transformed ancestor needs (`position: fixed` anchors to that
6629
+ * ancestor instead of the viewport there).
6630
+ */
6631
+ type StickyStackLayerMode = "fixed" | "sticky";
8965
6632
  interface StickyStackProps {
8966
6633
  /** Fixed layers in visual top-to-bottom order. */
8967
6634
  layers: readonly string[];
8968
6635
  /** Offset above the first layer, usually the app-shell header height. */
8969
6636
  top?: React$1.CSSProperties["top"];
6637
+ /** Default {@link StickyStackLayerMode} for every layer. Default `fixed`. */
6638
+ layerMode?: StickyStackLayerMode;
8970
6639
  children: React$1.ReactNode;
8971
6640
  }
8972
6641
  /**
@@ -8974,12 +6643,14 @@ interface StickyStackProps {
8974
6643
  * heights. Layers can live in different descendants as long as they share this
8975
6644
  * provider.
8976
6645
  */
8977
- declare function StickyStack({ layers, top, children }: StickyStackProps): react_jsx_runtime.JSX.Element;
6646
+ declare function StickyStack({ layers, top, layerMode, children, }: StickyStackProps): react_jsx_runtime.JSX.Element;
8978
6647
  interface StickyStackLayerProps extends React$1.HTMLAttributes<HTMLDivElement> {
8979
6648
  /** Name declared in the parent StickyStack layers array. */
8980
6649
  name: string;
8981
6650
  /** Classes applied to the in-flow spacer/measurement host. */
8982
6651
  hostClassName?: string;
6652
+ /** Override the stack's {@link StickyStackLayerMode} for this layer. */
6653
+ layerMode?: StickyStackLayerMode;
8983
6654
  }
8984
6655
  /**
8985
6656
  * A measured fixed layer with an automatic in-flow spacer. The fixed surface
@@ -9049,6 +6720,187 @@ declare namespace ConfirmHost {
9049
6720
  var displayName: string;
9050
6721
  }
9051
6722
 
6723
+ interface DataTablePatternProps<TRow> extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
6724
+ /** The controller from `useDataTable`. */
6725
+ table: DataTableController<TRow>;
6726
+ children?: ReactNode;
6727
+ /** Render the selection column (checkbox per row, select-page in the header). */
6728
+ selectable?: boolean;
6729
+ /** Rows are loading: `Content` renders the `Loading` slot (`aria-busy`). */
6730
+ loading?: boolean;
6731
+ /** Loading failed: `Content` renders the `Error` slot; a string is its description. */
6732
+ error?: boolean | string;
6733
+ /** Renders the retry button of the `Error` slot. */
6734
+ onRetry?: () => void;
6735
+ /**
6736
+ * Sticky chrome: the toolbar and the header row stay visible while the
6737
+ * page scrolls a long table (`--ds-data-table-sticky-top` offsets both
6738
+ * under a fixed app header). The table's own wrapper stops scrolling
6739
+ * horizontally in this mode — sticky positioning needs the page to be the
6740
+ * scroll container.
6741
+ */
6742
+ sticky?: boolean;
6743
+ /** One class per part (ADR-008): `toolbar`, `search`, `filters`, `columns-menu`, `content`, `bulk-actions`, `pagination`. */
6744
+ classNames?: Partial<Record<DataTableSlot, string>>;
6745
+ /** Overrides of the copy the slots render (W5-22): prop > provider `messages.dataTable` > English. */
6746
+ messages?: Partial<DataTableMessages>;
6747
+ ref?: React.Ref<HTMLDivElement>;
6748
+ }
6749
+ /** Root: the card frame and the context every slot reads. */
6750
+ declare function Root<TRow>({ table, children, selectable, loading, error, onRetry, sticky, classNames, messages: messagesOverride, className, style, ref, ...props }: DataTablePatternProps<TRow>): react_jsx_runtime.JSX.Element;
6751
+ type DataTablePatternToolbarProps = React.HTMLAttributes<HTMLDivElement>;
6752
+ interface DataTablePatternSearchProps extends Omit<SearchInputProps, "value" | "onValueChange" | "size"> {
6753
+ /** Default `sm`. */
6754
+ size?: SearchInputProps["size"];
6755
+ }
6756
+ type DataTablePatternFiltersProps = React.HTMLAttributes<HTMLDivElement>;
6757
+ interface DataTablePatternColumnsMenuProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "children"> {
6758
+ /** The trigger label. Default `messages.dataTable.columns` ("Columns"). */
6759
+ label?: ReactNode;
6760
+ }
6761
+ interface DataTablePatternContentProps<TRow> extends Omit<TableProps, "children" | "stickyHeader"> {
6762
+ /** Makes each row a click target (`TableRow interactive`). */
6763
+ onRowClick?: (row: TRow, model: DataTableRowModel<TRow>) => void;
6764
+ /** The accessible name of a row's selection checkbox. Default `messages.dataTable.selectRow`. */
6765
+ getRowLabel?: (row: TRow) => string;
6766
+ /** What renders while `loading`. Default `<DataTablePattern.Loading />`. */
6767
+ loading?: ReactNode;
6768
+ /** What renders on `error`. Default `<DataTablePattern.Error />`. */
6769
+ error?: ReactNode;
6770
+ /** What renders when there are no rows. Default `<DataTablePattern.Empty />`. */
6771
+ empty?: ReactNode;
6772
+ }
6773
+ /**
6774
+ * Content: the `Table` — header row from the visible columns (sort wired to
6775
+ * the controller), the selection column when the root is `selectable`, and
6776
+ * the body: rows, or the loading / error / empty state.
6777
+ */
6778
+ declare function Content<TRow>({ onRowClick, getRowLabel, loading: loadingSlot, error: errorSlot, empty: emptySlot, className, wrapperClassName, ...props }: DataTablePatternContentProps<TRow>): react_jsx_runtime.JSX.Element;
6779
+ type DataTablePatternEmptyProps = Omit<TableEmptyProps, "columns">;
6780
+ type DataTablePatternLoadingProps = Omit<TableLoadingProps, "columns">;
6781
+ type DataTablePatternErrorProps = Omit<TableErrorProps, "columns">;
6782
+ type DataTablePatternPaginationProps = Omit<PaginationProps, "page" | "pageCount" | "onPageChange" | "totalItems" | "pageSize" | "currentPage" | "totalPages">;
6783
+ interface DataTablePatternBulkActionsProps extends Omit<BulkActionBarProps, "selectedCount" | "onClear" | "variant"> {
6784
+ /** Default: clears the controller's selection. */
6785
+ onClear?: () => void;
6786
+ }
6787
+ /** BulkActions: the inline `BulkActionBar`, shown while rows are selected. */
6788
+ declare function BulkActions({ onClear, className, ...props }: DataTablePatternBulkActionsProps): react_jsx_runtime.JSX.Element;
6789
+ declare namespace BulkActions {
6790
+ var displayName: string;
6791
+ }
6792
+ /**
6793
+ * The compound records table (W6-06). See the module comment.
6794
+ *
6795
+ * @experimental
6796
+ */
6797
+ declare const DataTablePattern: typeof Root & {
6798
+ Toolbar: React$1.ForwardRefExoticComponent<DataTablePatternToolbarProps & React$1.RefAttributes<HTMLDivElement>>;
6799
+ Search: React$1.ForwardRefExoticComponent<DataTablePatternSearchProps & React$1.RefAttributes<HTMLInputElement>>;
6800
+ Filters: React$1.ForwardRefExoticComponent<DataTablePatternFiltersProps & React$1.RefAttributes<HTMLDivElement>>;
6801
+ ColumnsMenu: React$1.ForwardRefExoticComponent<DataTablePatternColumnsMenuProps & React$1.RefAttributes<HTMLButtonElement>>;
6802
+ Content: typeof Content;
6803
+ Empty: React$1.ForwardRefExoticComponent<DataTablePatternEmptyProps & React$1.RefAttributes<HTMLTableSectionElement>>;
6804
+ Loading: React$1.ForwardRefExoticComponent<DataTablePatternLoadingProps & React$1.RefAttributes<HTMLTableSectionElement>>;
6805
+ Error: React$1.ForwardRefExoticComponent<DataTablePatternErrorProps & React$1.RefAttributes<HTMLTableSectionElement>>;
6806
+ Pagination: React$1.ForwardRefExoticComponent<DataTablePatternPaginationProps & React$1.RefAttributes<HTMLElement>>;
6807
+ BulkActions: typeof BulkActions;
6808
+ };
6809
+
6810
+ /** How the explanation is surfaced. @experimental */
6811
+ type InfoHintPresentation = "tooltip" | "popover";
6812
+ /** @experimental */
6813
+ interface InfoHintProps {
6814
+ /**
6815
+ * The accessible name of the trigger — what the hint is *about*, e.g.
6816
+ * "About billing cadence". Required: an icon alone is not a name.
6817
+ */
6818
+ label: string;
6819
+ /** The explanation. Plain text for a tooltip, any node for a popover. */
6820
+ children: React$1.ReactNode;
6821
+ /** `tooltip` (default) or `popover`. */
6822
+ presentation?: InfoHintPresentation;
6823
+ /** Replaces the ⓘ glyph. */
6824
+ icon?: React$1.ReactNode;
6825
+ /** Trigger size on the shared control scale (A1). Default `xs`. */
6826
+ size?: ControlSize;
6827
+ /** Side the tooltip or popover opens on. Default `top`. */
6828
+ side?: "top" | "right" | "bottom" | "left";
6829
+ /** Classes for the trigger. */
6830
+ className?: string;
6831
+ /** Controlled open state (`popover` only). */
6832
+ open?: boolean;
6833
+ onOpenChange?: (open: boolean) => void;
6834
+ }
6835
+ /**
6836
+ * The recurring info-hint: an icon trigger whose explanation is a tooltip or
6837
+ * a popover, reachable by keyboard and by touch.
6838
+ *
6839
+ * @experimental
6840
+ */
6841
+ declare function InfoHint({ label, children, presentation, icon, size, side, className, open, onOpenChange, }: InfoHintProps): react_jsx_runtime.JSX.Element;
6842
+
6843
+ /** A person the picker can offer. @experimental */
6844
+ interface Person {
6845
+ /** The value submitted and reported — a user id. */
6846
+ id: string;
6847
+ name: string;
6848
+ /** Avatar image; the initials of `name` are the fallback. */
6849
+ avatarSrc?: string | null;
6850
+ /** A second line under the name (email, role, team). */
6851
+ description?: string;
6852
+ disabled?: boolean;
6853
+ }
6854
+ /** The `Combobox` props the picker owns itself. */
6855
+ type OwnedProps = "options" | "multiple" | "value" | "defaultValue" | "onValueChange" | "renderOption" | "renderValue" | "header" | "getOptionValue" | "getOptionLabel" | "getOptionDisabled" | "getOptionKeywords";
6856
+ /** What both modes share. @experimental */
6857
+ interface PeoplePickerBaseProps extends Omit<ComboboxProps<Person, string>, OwnedProps | "size"> {
6858
+ /** The people to choose from. */
6859
+ people: readonly Person[];
6860
+ /** Outer height on the shared control scale (A1). Default `md`. */
6861
+ size?: ComboboxSize;
6862
+ /**
6863
+ * The signed-in user's id. Present: an "assign to me" row sits above the
6864
+ * list. That person does not need to be in `people`.
6865
+ */
6866
+ currentUserId?: string;
6867
+ /**
6868
+ * Label of the "assign to me" row. Default: the `peoplePicker.assignToMe`
6869
+ * message ("Assign to me").
6870
+ */
6871
+ assignToMeLabel?: React$1.ReactNode;
6872
+ /** Rendered instead of the built-in "assign to me" row, in the same slot. */
6873
+ assignToMeSlot?: React$1.ReactNode;
6874
+ }
6875
+ /** @experimental */
6876
+ interface PeoplePickerSingleProps extends PeoplePickerBaseProps {
6877
+ multiple?: false;
6878
+ value?: string | null;
6879
+ defaultValue?: string | null;
6880
+ onValueChange?: (value: string | null) => void;
6881
+ /**
6882
+ * Offer a row that reports `null` — nobody assigned. Single mode only
6883
+ * (a multi picker empties itself by removing its chips).
6884
+ */
6885
+ unassignedLabel?: React$1.ReactNode;
6886
+ }
6887
+ /** @experimental */
6888
+ interface PeoplePickerMultipleProps extends PeoplePickerBaseProps {
6889
+ multiple: true;
6890
+ value?: readonly string[];
6891
+ defaultValue?: readonly string[];
6892
+ onValueChange?: (value: string[]) => void;
6893
+ }
6894
+ /** @experimental */
6895
+ type PeoplePickerProps = PeoplePickerSingleProps | PeoplePickerMultipleProps;
6896
+ /**
6897
+ * The shared people picker: `Combobox` + `Avatar`, single or multiple, with
6898
+ * the "assign to me" and "unassigned" affordances every product wrote.
6899
+ *
6900
+ * @experimental
6901
+ */
6902
+ declare function PeoplePicker(props: PeoplePickerProps): react_jsx_runtime.JSX.Element;
6903
+
9052
6904
  declare function cn(...inputs: ClassValue[]): string;
9053
6905
 
9054
6906
  /**
@@ -9074,132 +6926,4 @@ declare function getAssetBasePath(): string;
9074
6926
  /** Resolve a root-relative design system asset against the configured base. */
9075
6927
  declare function assetPath(path: string): string;
9076
6928
 
9077
- /**
9078
- * Brand scope — ambient product theming.
9079
- *
9080
- * The `brand` color family (bg-brand, hover:bg-brand-hover, bg-brand-bg,
9081
- * border-brand-line, text-fg-on-brand, plus the accent/focus/primary
9082
- * interaction tokens) follows the nearest `[data-brand]` scope and defaults to
9083
- * Pro. Authors type the STATE only; the product comes from the scope. Set it
9084
- * once high in the tree — ideally on the same root as the `.dark` class
9085
- * (`<html>`/`<body>`) — so Radix-portalled surfaces inherit it through the DOM.
9086
- *
9087
- * <html data-brand="tax"> // whole shell renders teal
9088
- * <div {...brandScope("audit")}> // a subtree renders blue
9089
- *
9090
- * For the rarer case of multiple scopes on one page WITH portalled content
9091
- * (a Dialog/Popover that escapes its scoped subtree to document.body), wrap the
9092
- * region in <BrandScope> / <BrandScopeProvider> and have the portalled
9093
- * `*Content` re-stamp `data-brand={useBrandScope()}` on its own element.
9094
- */
9095
- type BrandProduct = "pro" | "audit" | "books" | "tax";
9096
- /**
9097
- * `data-brand` attribute object to spread on any element (mirrors
9098
- * `serviceToneStyle`). This is the primary API for opting a subtree into a
9099
- * product without naming the product in a utility class.
9100
- */
9101
- declare function brandScope(product: BrandProduct): {
9102
- "data-brand": BrandProduct;
9103
- };
9104
- /** Every product, in suite order — for switchers and story matrices. */
9105
- declare const BRAND_PRODUCTS: BrandProduct[];
9106
- /** Human label for a product, for switchers and headings. */
9107
- declare const brandLabel: Record<BrandProduct, string>;
9108
- /**
9109
- * Provides the active product to descendants so portalled surfaces can
9110
- * re-stamp `data-brand` on themselves via {@link useBrandScope}. Purely a
9111
- * structural carrier — the visual theming still comes from the `[data-brand]`
9112
- * attribute in the DOM, not from this context.
9113
- */
9114
- declare function BrandScopeProvider({ product, children, }: {
9115
- product: BrandProduct;
9116
- children: React.ReactNode;
9117
- }): react_jsx_runtime.JSX.Element;
9118
- /** Read the ambient product from the nearest provider (defaults to Pro). */
9119
- declare function useBrandScope(): BrandProduct;
9120
- interface BrandScopeProps extends React.HTMLAttributes<HTMLDivElement> {
9121
- /** The product this subtree renders as. */
9122
- product: BrandProduct;
9123
- }
9124
- /**
9125
- * Convenience wrapper that stamps `data-brand` on a `<div>` AND provides the
9126
- * product via context, so a portalled descendant can re-stamp itself. Use
9127
- * `brandScope()` directly when you want the attribute on your own element.
9128
- */
9129
- declare const BrandScope: React$1.ForwardRefExoticComponent<BrandScopeProps & React$1.RefAttributes<HTMLDivElement>>;
9130
-
9131
- /**
9132
- * Theme scope — the host dimensions a subtree renders with (W5-02).
9133
- *
9134
- * The design system's scopes are DOM attributes: `[data-ds-scheme]`,
9135
- * `[data-ds-brand]`, `[data-ds-density]`, `dir`, and the `--ds-*` style a
9136
- * runtime brand writes (`createBrandTheme`). Set on the document root they
9137
- * reach everything, portalled overlays included. Set on a *subtree* they stop
9138
- * at the subtree: a Dialog or Popover opened from inside it renders in
9139
- * `document.body`, outside the scope, and comes up in the root theme.
9140
- *
9141
- * `ThemeScope` fixes that. It stamps the attributes on its own element, as a
9142
- * hand-written scope would, **and** registers them in context, so the shared
9143
- * `Portal` (`primitives/behavior/portal.tsx`) can re-stamp the same attributes
9144
- * and runtime-brand style on the container wrapper it mounts portalled content
9145
- * into. Nested scopes merge: a `density="compact"` scope inside a `brand="tax"`
9146
- * one propagates both.
9147
- *
9148
- * Apps that scope the document root need none of this; the portal path is
9149
- * unchanged for them (no wrapper is created).
9150
- */
9151
- /** The scheme a subtree renders with (`[data-ds-scheme]`). */
9152
- type ThemeScheme = "light" | "dark";
9153
- /** A built-in brand scope (`[data-ds-brand]`). */
9154
- type ThemeBrand = "pro" | "audit" | "books" | "tax";
9155
- /** The density scope (`[data-ds-density]`, W2-06). */
9156
- type ThemeDensity = "comfortable" | "compact";
9157
- /** Text direction (`dir`). */
9158
- type ThemeDirection = "ltr" | "rtl";
9159
- /**
9160
- * The dimensions a scope sets. Every field is optional; an unset field is
9161
- * inherited from the enclosing scope, then from the document.
9162
- *
9163
- * @experimental
9164
- */
9165
- interface ThemeScopeValue {
9166
- scheme?: ThemeScheme;
9167
- brand?: ThemeBrand;
9168
- density?: ThemeDensity;
9169
- dir?: ThemeDirection;
9170
- /**
9171
- * A registered runtime brand: the object `createBrandTheme()` returns. It is
9172
- * applied as inline `--ds-*` style on the scope element and re-applied on
9173
- * portalled content.
9174
- */
9175
- brandTheme?: BrandTheme;
9176
- }
9177
- /** Props of {@link ThemeScope}. @experimental */
9178
- interface ThemeScopeProps extends ThemeScopeValue, Omit<React.HTMLAttributes<HTMLDivElement>, "dir"> {
9179
- children?: ReactNode;
9180
- }
9181
- /**
9182
- * A `<div>` that scopes the host dimensions of its subtree — scheme, brand,
9183
- * density, direction and a runtime brand — and propagates them into every
9184
- * overlay opened from inside it (Dialog, Sheet, Popover, Tooltip, menus,
9185
- * Select, Toast …), which would otherwise render in the document's theme.
9186
- *
9187
- * ```tsx
9188
- * <ThemeScope brand="tax" density="compact">
9189
- * <Popover>…</Popover> // its content renders as compact Tax, too
9190
- * </ThemeScope>
9191
- *
9192
- * <ThemeScope brandTheme={createBrandTheme({ brand: firm.primary })}>
9193
- * <Dialog>…</Dialog> // the runtime brand follows the dialog to <body>
9194
- * </ThemeScope>
9195
- * ```
9196
- *
9197
- * Nothing changes for apps that scope `<html>` or `<body>`: no wrapper is
9198
- * created around portalled content when no `ThemeScope` encloses it.
9199
- *
9200
- * @experimental W5-02. The public shape follows decision D7 for the runtime
9201
- * brand seed.
9202
- */
9203
- declare const ThemeScope: React$1.ForwardRefExoticComponent<ThemeScopeProps & React$1.RefAttributes<HTMLDivElement>>;
9204
-
9205
- export { AIReceiptPanel, type AIReceiptPanelProps, type AIReceiptResult, Accordion, AccordionContent, AccordionItem, AccordionTrigger, type ActivityDotVariant, ActivityEventItem, type ActivityEventItemProps, ActivityItem, type ActivityItemProps, ActivityList, type ActivityListProps, type AgreementFirm, AgreementPaneHeading, type AgreementPaneHeadingProps, type AgreementStatus, type AgreementStep, AgreementViewer, type AgreementViewerProps, AiDraftCard, type AiDraftCardProps, type AiDraftState, Alert, AlertDescription, AlertDialog, AlertDialogAction, type AlertDialogActionProps, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, type AlertDialogSlot, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, AppHeader, AppHeaderActions, type AppHeaderActionsProps, AppHeaderBreadcrumb, type AppHeaderBreadcrumbProps, type AppHeaderProps, AppHeaderSearch, type AppHeaderSearchProps, AppHeaderTitle, type AppHeaderTitleProps, AreaChart, type AreaChartProps, type AreaPoint, AspectRatio, Assignee, AssureAuditBrandIcon, AssureBooksBrandIcon, AssureProBrandIcon, AssureTaxBrandIcon, AttachmentChip, type AttachmentChipProps, AttentionItem, type AttentionItemProps, type AttentionUrgency, Avatar, type AvatarProps, type AvatarSlot, BRAND_PRODUCTS, Badge, type BadgeAppearance, type BadgeAppearanceInput, type BadgeLegacyVariant, type BadgeProps, type BadgeShape, type BadgeSize, type BadgeSlot, type BadgeVariant, type BadgeVariantsProps, Blockquote, BottomNav, type BottomNavProps, type BottomNavTab, type BrandIconProps, type BrandProduct, BrandScope, type BrandScopeProps, BrandScopeProvider, Breadcrumb, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbList, type BreadcrumbListProps, BreadcrumbPage, type BreadcrumbPageProps, type BreadcrumbProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, BulkActionBar, BulkActionBarAction, type BulkActionBarActionProps, type BulkActionBarProps, BulkActionBarSeparator, type BulkActionBarVariant, Button, type ButtonEmphasis, type ButtonIconProps, type ButtonIconSize, type ButtonIntent, type ButtonIntentAlias, type ButtonLegacyVariant, type ButtonLook, type ButtonProps, type ButtonSize, type ButtonSizeAlias, type ButtonSlot, type ButtonStyle, type ButtonVariant, type ButtonVariantsProps, COUNTRY_CODES, Calendar, type CalendarBaseProps, type CalendarCaptionLayout, type CalendarHighlight, type CalendarHighlightColor, type CalendarProps, type CalendarRange, type CalendarRangeProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, type CardSlot, CardTitle, type CardTitleProps, type CardVariants, CategoryDivider, type CategoryDividerProps, CategoryTag, type CategoryTagProps, type CategoryTone, type CellValue, type ChannelTabItem, ChannelTabs, type ChannelTabsProps, type ChannelTone, Checkbox, type CheckboxChecked, type CheckboxProps, type CheckboxSlot, Chip, type ChipIntent, type ChipProps, type ChipSize, type ChipSlot, type ChipStyle, type ChipVariant, ClientRailGroupHeader, type ClientRailGroupHeaderProps, ClientRailItem, type ClientRailItemProps, ClientSelect, type ClientSelectOption, Code, type CodeProps, type CodeSlot, type CodeVariant, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, type ComboboxBaseProps, type ComboboxClassNames, ComboboxMessages, type ComboboxMultipleProps, type ComboboxOptionState, type ComboboxProps, type ComboboxSelectionControls, type ComboboxSingleProps, type ComboboxSize, type ComboboxSlot, ComingSoon, type ComingSoonProps, type CommandItem, CommandPalette, CommandPaletteMessages, type CommandSlot, ConfirmActionButton, type ConfirmActionButtonProps, ConfirmDialog, type ConfirmDialogProps, type ConfirmFn, ConfirmHost, type ConfirmHostProps, type ConfirmInitialFocus, type ConfirmIntent, ConfirmMessages, type ConfirmOptions, type ConfirmPresentation, type ConfirmResult, Content, type ContentProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, type ContextMenuSlot, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ControlSize, CopyButton, type CountryCode, CountryFlag, CountrySelect, DATE_DISPLAY_PLACEHOLDER, DEFAULT_COMBOBOX_MESSAGES, DEFAULT_PHONE_FIELD_MESSAGES, DangerAction, type DangerActionProps, Dash, DashGrid, type DashGridProps, type DashWidget, DataItem, DataTable, DataTableBody, type DataTableBodyProps, DataTableCell, DataTableCellDue, type DataTableCellDueProps, DataTableCellId, DataTableCellMono, DataTableCellName, type DataTableCellProps, DataTableCheckbox, type DataTableCheckboxProps, DataTableHead, type DataTableHeadProps, DataTableHeader, type DataTableHeaderProps, DataTablePagination, type DataTablePaginationProps, type DataTableProps, DataTableResultsCount, type DataTableResultsCountProps, DataTableRow, type DataTableRowProps, DataTableSearch, type DataTableSearchProps, type DataTableSlot, DataTableSpacer, type DataTableSpacerProps, DataTableToolbar, type DataTableToolbarProps, DataTableView, type DataTableViewColumn, type DataTableViewFilter, type DataTableViewProps, type DataTableViewSelection, type DatePattern, DatePicker, type DatePickerProps, type DateRangeNames, DateRangePicker, type DateRangePickerProps, type DateRangeValue, DetailGrid, type DetailGridProps, DetailMain, type DetailMainProps, DetailSpine, DetailSpineHeader, type DetailSpineHeaderProps, type DetailSpineProps, DetailSpineSection, type DetailSpineSectionProps, DetailSpineStats, type DetailSpineStatsProps, Dialog, DialogBody, type DialogBodyProps, DialogClose, DialogContent, type DialogContentProps, DialogDescription, DialogFooter, DialogHeader, type DialogHeight, type DialogMessages, DialogOverlay, DialogPortal, type DialogPresentation, type DialogSize, type DialogSlot, DialogTitle, DialogTrigger, DismissibleChip, DisplayMenu, type DisplayMenuOption, type DisplayMenuProps, type DisplayMenuSection, DocumentChecklist, type DocumentChecklistFile, type DocumentChecklistItem, type DocumentChecklistProps, type DocumentChecklistStatus, DocumentDetailActions, type DocumentDetailActionsProps, DocumentDetailBody, type DocumentDetailBodyProps, DocumentDetailHeader, type DocumentDetailHeaderProps, DocumentDetailMetaRow, type DocumentDetailMetaRowProps, DocumentDetailPanel, type DocumentDetailPanelProps, DocumentDetailRequester, type DocumentDetailRequesterProps, DocumentDetailTitle, type DocumentDetailTitleProps, DocumentFileCard, type DocumentFileCardProps, DocumentFileLine, type DocumentFileLineProps, DocumentFileRow, type DocumentFileRowProps, type DocumentItemState, DocumentList, type DocumentListProps, DocumentListSection, type DocumentListSectionProps, type DocumentRequestActivityKind, type DocumentRequestAssigneeOption, DocumentRequestCard, type DocumentRequestCardProps, DocumentRequestDetail, type DocumentRequestDetailActivityEvent, type DocumentRequestDetailComment, type DocumentRequestDetailDoc, type DocumentRequestDetailProps, type DocumentRequestDetailTab, DocumentRequestField, type DocumentRequestFieldProps, type DocumentRequestItemSummary, type DocumentRequestRequestedItem, type DocumentRequestReviewStatusOption, type DocumentRequestTone, DocumentRequestUpload, type DocumentRequestUploadFile, type DocumentRequestUploadProps, DocumentRow, type DocumentRowProps, type DocumentSource, DocumentSourceFilter, type DocumentSourceFilterProps, type DocumentSourceFilterValue, DocumentSourceTag, type DocumentSourceTagProps, DocumentsWorkspaceLayout, type DocumentsWorkspaceLayoutProps, DonutChart, type DonutChartProps, type DonutSegment, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, type DropdownMenuSlot, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmailMessageCard, type EmailMessageCardProps, EmptyState, type EmptyStateProps, EngagementCard, type EngagementCardProps, EngagementTimeline, type EngagementTimelineProps, EngagementTimelineStep, type EngagementTimelineStepProps, Eyebrow, type EyebrowProps, Field, FieldControl, type FieldControlProps, type FieldControlWiring, FieldDescription, type FieldDescriptionProps, FieldError, type FieldErrorProps, FieldMessages, type FieldOrientation, type FieldProps, type FieldSlot, Fieldset, FieldsetLegend, type FieldsetLegendProps, type FieldsetProps, type FieldsetSlot, FileChip, type FileChipProps, type FileKind, FileTypeBadge, type FileTypeBadgeProps, type FileTypeTone, FileUpload, FileUploadMessages, type FileUploadProps, type FileUploadSlot, type FileUploadVariant, FilterChip, type FilterChipProps, type FolderNode, FolderTree, type FolderTreeProps, FormError, FormSection, FormSuccess, Grid, type GridColumn, type GridInputType, type GridProps, type GridRow, type GridValue, Heading, type HeadingLevel, type HeadingProps, type HeadingSize, type HeadingSlot, HoverCard, HoverCardContent, type HoverCardContentProps, type HoverCardPadding, HoverCardPortal, HoverCardTrigger, type HoverCardWidth, ICON_TILE_TONE_TO_INTENT, IconAction, type IconActionProps, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonSlot, type IconButtonTooltipSide, IconTile, type IconTileIntent, type IconTileProps, type IconTileSize, type IconTileSuiteTone, type IconTileTone, type IconTileVariantProps, Inline, type InlineProps, type InlineSlot, Input, type InputProps$1 as InputProps, type InputSize, type InputSizeAlias, type InputSlot, type InputVariant, type InputVariants, type InputVariantsOptions, Intent, IntentBadge, type IntentBadgeProps, type IntentTone, Kanban, KanbanCard, type KanbanCardProps, KanbanColumn, type KanbanColumnProps, type KanbanProps, Kbd, type KbdGlyph, KbdHint, type KbdHintProps, type KbdProps, type KbdSlot, type KbdVariant, type KeyboardShortcut, type KeyboardShortcutSection, KeyboardShortcutsDialog, type KeyboardShortcutsDialogProps, KeyboardShortcutsMessages, KpiCard, type KpiCardProps, type KpiDelta, Label, type LabelSlot, type LayoutAlign, type LayoutBreakpoint, type LayoutGap, type LayoutJustify, LinkAction, type LinkActionProps, LinkButton, type LinkButtonProps$1 as LinkButtonProps, type LinkButtonSlot, LoadingRows, Logo, Main, type MainProps, MasterDetailLayout, type MasterDetailLayoutProps, MessageBubble, MessageBubbleAction, type MessageBubbleActionProps, type MessageBubbleProps, MessageBubbleTombstone, type MessageBubbleTombstoneProps, MessageComposer, type MessageComposerProps, MetadataGrid, type MissingDocumentItem, MissingDocumentsPanel, type MissingDocumentsPanelProps, MoneyCell, MultiFilterPill, MultiSelect, MultiSelectField, type MultiSelectProps, MutedSpec, type MutedSpecProps, NewMenu, type NewMenuAction, type NewMenuGroup, type NewMenuProps, NotificationFilter, type NotificationFilterProps, type NotificationFilterValue, NotificationItem, type NotificationItemProps, NotificationList, type NotificationListProps, NotificationPanel, NotificationPanelFooter, type NotificationPanelFooterProps, NotificationPanelHeader, type NotificationPanelHeaderProps, type NotificationPanelProps, NumberInput, type NumberInputProps, type NumberInputSlot, Numeric, type NumericProps, OTPInput, type OTPInputProps, type OnlyStatuses, type Option, type OptionAccessors, PROGRESS_LEGACY_TO_INTENT, PageHeader, type PageHeaderProps, PageHeaderSep, type PageHeaderSepProps, PageHeaderSpec, type PageHeaderSpecProps, Pagination, type PaginationProps, type PaginationSlot, PdfPreview, type PdfPreviewProps, PhoneCountryInput, PhoneField, type PhoneFieldChangeDetails, PhoneFieldMessages, type PhoneFieldProps, type PhoneFieldSlot, PhoneInput, type PillStatus, Popover, PopoverAnchor, PopoverClose, PopoverContent, type PopoverContentProps, type PopoverPadding, PopoverPortal, type PopoverSlot, PopoverTrigger, type PopoverWidth, Pressable, type PressableProps, type PressableSlot, PrimaryAction, type PrimaryActionProps, type Priority, PriorityIcon, type PriorityIconProps, ProgressBar, type ProgressBarProps, type ProgressBarVariant, type ProgressBarVariantProps, type ProgressIntent, type ProgressLegacyColour, ProgressRing, type ProgressRingProps, type ProgressRingVariant, type ProgressRingVariantProps, type PromptFn, type PromptOptions, ProposalAddOn, type ProposalAddOnProps, type ProposalBillingMode, type ProposalBillingRow, ProposalBillingTerms, type ProposalBillingTermsProps, ProposalConsentGate, type ProposalConsentGateProps, ProposalCustomPage, type ProposalCustomPageKind, type ProposalCustomPageProps, ProposalNote, type ProposalNoteProps, ProposalPackageCard, type ProposalPackageCardProps, type ProposalPackageMode, ProposalPaymentCapture, type ProposalPaymentCaptureProps, ProposalPricingSummary, type ProposalPricingSummaryProps, ProposalServiceRow, type ProposalServiceRowProps, ProposalSignatureBlock, type ProposalSignatureBlockProps, type ProposalSigner, ProposalSignerList, type ProposalSignerListProps, type ProposalSignerStatus, type QuestionAddressValue, type QuestionFileValue, type QuestionHelp, type QuestionLabeledColumn, type QuestionLabeledRow, type QuestionLabeledValue, type QuestionNameValue, type QuestionOption, type QuestionTableColumn, type QuestionTableRow, type QuestionType, QuestionnairePanel, type QuestionnairePanelGroup, type QuestionnairePanelProps, type QuestionnairePanelSection, type QuestionnairePanelStatus, Questions, type QuestionsProps, type QuickReplyChip, RadioGroup, type RadioGroupAppearance, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, type RadioGroupSlot, type RankedBar, RankedBars, type RankedBarsProps, type Responsive, ResponsiveDialog, type ResponsiveDialogProps, RouteTransition, type RouteTransitionProps, SERVICE_TONES, SPINNER_TONE_TO_INTENT, STATUS_DOT_TONE_TO_INTENT, ScrollArea, ScrollBar, SearchInput, SearchInputMessages, type SearchInputProps, type SearchInputSize, type SearchInputSlot, type SearchInputVariants, type SearchInputVariantsOptions, SearchSelect, type SearchSelectOption, type SearchSelectProps, SecondaryAction, type SecondaryActionProps, Section, SectionHead, SectionHeader, SegmentedProgress, type SegmentedProgressProps, type SegmentedServiceTone, type SegmentedTone, Select, type SelectClassNames, SelectContent, type SelectContentProps, SelectGroup, SelectItem, SelectLabel, SelectMessages, type SelectOption, type SelectProps, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, type SelectSize, type SelectSlot, SelectTrigger, type SelectTriggerProps, SelectValue, SelectableKpiCard, type SelectableKpiCardProps, Separator, type ServiceTone, Shape, Sheet, SheetBody, type SheetBodyProps, SheetClose, SheetContent, type SheetContentProps, SheetDescription, SheetFooter, SheetHeader, type SheetMessages, SheetOverlay, SheetPortal, type SheetSide, type SheetSize, type SheetSlot, SheetTitle, SheetTrigger, type SheetWidth, Shell, type ShellProps, type ShellSlot, SideDrawer, type SideDrawerSlot, Sidebar, SidebarBrand, type SidebarBrandProps, SidebarBrandSwitcher, type SidebarBrandSwitcherExtra, type SidebarBrandSwitcherItem, type SidebarBrandSwitcherProps, type SidebarBrandSwitcherSlot, SidebarBrandSwitcherTile, SidebarBrandText, type SidebarBrandTextProps, SidebarFooter, type SidebarFooterProps, SidebarLink, SidebarLinkAction, type SidebarLinkActionProps, SidebarLinkBadge, type SidebarLinkBadgeProps, type SidebarLinkBadgeVariants, SidebarLinkGroup, type SidebarLinkGroupProps, SidebarLinkLabel, type SidebarLinkLabelProps, type SidebarLinkProps, SidebarPinButton, type SidebarPinButtonProps, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarSection, type SidebarSectionProps, type SidebarSlot, type SidebarState, SidebarTrigger, type SidebarTriggerProps, SidebarUser, type SidebarUserProps, SignatureEditor, type SignatureEditorProps, Skeleton, SkeletonCircle, SkeletonText, Slider, type SliderProps, type SliderSize, type SortDirection, Spinner, type SpinnerIntent, type SpinnerProps, type SpinnerSize, type SpinnerTone, type SpinnerVariantProps, SpreadsheetPreview, type SpreadsheetPreviewProps, Stack, type StackDirection, type StackProps, type StackSlot, StackedBarChart, type StackedBarChartProps, type StackedBarDatum, type StackedBarSeries, StagePill, StarRating, type StarRatingProps, Stat, StatusBadge, type StatusBadgeProps, type StatusBadgeSlot, StatusDot, type StatusDotIntent, type StatusDotProps, type StatusDotSize, type StatusDotTone, type StatusDotVariantProps, StatusIcon, type StatusIconProps, type StatusMap, StatusPill, type StatusPillProps, type StatusPresentation, type StatusState, type Step, Stepper, type StepperProps, StickyActionBar, type StickyActionBarProps, StickyStack, StickyStackLayer, type StickyStackLayerProps, type StickyStackProps, StickyStackSectionHeader, type StickyStackSectionHeaderProps, StickyStackSticky, type StickyStackStickyProps, SubmitButton, SuggestionPills, type SuggestionPillsProps, SuiteProgress, type SuiteProgressFillVariantProps, type SuiteProgressProps, type SuiteProgressSize, type SuiteProgressSuiteTone, type SuiteProgressTone, Surface, type SurfaceElevation, type SurfacePadding, type SurfaceProps, type SurfaceRadius, type SurfaceSlot, Switch, type SwitchProps, type SwitchSize, type SwitchSlot, Table, TableBody, type TableBodyProps, TableCaption, type TableCaptionProps, TableCell, type TableCellProps, TableFooter, type TableFooterProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, type TableProps, TableRow, type TableRowData, type TableRowProps, type TableSlot, type TableTone, Tabs, TabsContent, TabsList, TabsTrigger, TagsCell, TeamMemberSelect, Text, type TextColor, type TextProps, type TextSize, type TextSlot, type TextWeight, Textarea, type TextareaProps, type TextareaSize, type TextareaSlot, type TextareaVariant, type TextareaVariants, type TextareaVariantsOptions, type ThemeBrand, type ThemeDensity, type ThemeDirection, type ThemeScheme, ThemeScope, type ThemeScopeProps, type ThemeScopeValue, TimeLogger, TimeLoggerActions, type TimeLoggerActionsProps, TimeLoggerBillable, type TimeLoggerBillableProps, TimeLoggerContextRow, type TimeLoggerContextRowProps, TimeLoggerEntry, TimeLoggerEntryList, type TimeLoggerEntryListProps, type TimeLoggerEntryProps, TimeLoggerField, type TimeLoggerFieldProps, TimeLoggerFooter, type TimeLoggerFooterProps, TimeLoggerHeader, type TimeLoggerHeaderProps, TimeLoggerNotes, type TimeLoggerNotesProps, type TimeLoggerPhase, type TimeLoggerProps, type TimeLoggerTier, TimeLoggerTimer, type TimeLoggerTimerProps, type TimelineState, type ToastAction, type ToastContextValue, ToastMessages, type ToastOptions, ToastProvider, type ToastSlot, type ToastVariant, ToggleGroup, type ToggleGroupFormProps, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, type ToggleGroupSize, type ToggleGroupVariant, Toolbar, type ToolbarProps, Tooltip, TooltipContent, type TooltipContentProps, type TooltipMaxWidth, TooltipPortal, type TooltipProps, TooltipProvider, type TooltipSlot, TooltipTrigger, type UseFieldControlProps, type UseStopwatchReturn, Variant, VisuallyHidden, YEAR_DISPLAY_PLACEHOLDER, alertVariants, applyMask, applyYearMask, assetPath, attachmentChipVariants, badgeVariants, brandLabel, brandScope, buttonVariants, cardVariants, chipVariants, cn, dateToIso, defineStatusMap, displayToIso, fileTypeBadgeVariants, fileTypeFromName, filterChipVariants, formatClock, formatCurrency, formatDuration, getAssetBasePath, getFlagEmoji, iconButtonVariants, resolveIconTileVariants as iconTileVariants, inputVariants, isoToDate, isoToDisplay, isoToYear, labelVariants, parseDuration, parsePhoneForEditing, progressBarVariants, progressRingVariants, resolveBadgeAppearance, resolveButtonStyle, resolveChipStyle, searchInputVariants, serviceToneLabel, serviceToneStyle, setAssetBasePath, sidebarLinkBadgeVariants, spinnerVariants, starRatingVariants, statusDotVariants, suiteProgressFillVariants, textareaVariants, useBrandScope, useConfirm, useFieldControl, usePrompt, useSidebarPeekLock, useSidebarState, useStopwatch, useToast, yearToIso };
6929
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, type ActivityDotVariant, ActivityEventItem, type ActivityEventItemProps, ActivityItem, type ActivityItemProps, ActivityList, type ActivityListProps, Alert, AlertDescription, AlertDialog, AlertDialogAction, type AlertDialogActionProps, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, AppHeader, AppHeaderActions, type AppHeaderActionsProps, AppHeaderBreadcrumb, type AppHeaderBreadcrumbProps, type AppHeaderProps, AppHeaderSearch, type AppHeaderSearchProps, AppHeaderTitle, type AppHeaderTitleProps, AreaChart, type AreaChartProps, type AreaPoint, AspectRatio, AttachmentChip, type AttachmentChipProps, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarGroupSize, type AvatarProps, AvatarSlot, BadgeShape, BadgeSize, Breadcrumb, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbList, type BreadcrumbListProps, BreadcrumbPage, type BreadcrumbPageProps, type BreadcrumbProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, BulkActionBar, BulkActionBarAction, type BulkActionBarActionProps, type BulkActionBarProps, BulkActionBarSeparator, type BulkActionBarVariant, Button, type ButtonEmphasis, type ButtonIconProps, type ButtonIconSize, type ButtonIntent, type ButtonIntentAlias, type ButtonLegacyVariant, type ButtonLook, type ButtonProps, type ButtonSize, type ButtonSizeAlias, type ButtonStyle, type ButtonVariant, type ButtonVariantsProps, COUNTRY_CODES, Calendar, type CalendarBaseProps, type CalendarCaptionLayout, type CalendarHighlight, type CalendarHighlightColor, type CalendarProps, type CalendarRange, type CalendarRangeProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, type CardTitleProps, type CardVariants, type CellValue, Checkbox, type CheckboxChecked, type CheckboxProps, Chip, type ChipIntent, type ChipProps, type ChipSize, type ChipStyle, type ChipVariant, Code, type CodeProps, type CodeVariant, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, type ComboboxBaseProps, type ComboboxClassNames, ComboboxMessages, type ComboboxMultipleProps, type ComboboxOptionState, type ComboboxProps, type ComboboxSelectionControls, type ComboboxSingleProps, type ComboboxSize, type CommandItem, CommandPalette, CommandPaletteMessages, ConfirmActionButton, type ConfirmActionButtonProps, ConfirmDialog, type ConfirmDialogProps, type ConfirmFn, ConfirmHost, type ConfirmHostProps, type ConfirmInitialFocus, type ConfirmIntent, ConfirmMessages, type ConfirmOptions, type ConfirmPresentation, type ConfirmResult, Content$1 as Content, type ContentProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ControlSize, CopyButton, type CountryCode, CountryFlag, CountrySelect, DATE_DISPLAY_PLACEHOLDER, DEFAULT_COMBOBOX_MESSAGES, DEFAULT_PHONE_FIELD_MESSAGES, DangerAction, type DangerActionProps, DataItem, type DataTableAccessor, type DataTableAriaSort, type DataTableColumn, type DataTableColumnVisibilityApi, type DataTableColumnVisibilityState, type DataTableController, type DataTableFilterDefinition, type DataTableFilterValue, type DataTableFiltersApi, type DataTableFiltersState, DataTablePagination, type DataTablePaginationApi, type DataTablePaginationProps, type DataTablePaginationState, DataTablePattern, type DataTablePatternBulkActionsProps, type DataTablePatternColumnsMenuProps, type DataTablePatternContentProps, type DataTablePatternEmptyProps, type DataTablePatternErrorProps, type DataTablePatternFiltersProps, type DataTablePatternLoadingProps, type DataTablePatternPaginationProps, type DataTablePatternProps, type DataTablePatternSearchProps, type DataTablePatternToolbarProps, type DataTableRowModel, type DataTableSearchApi, type DataTableSelectionApi, type DataTableSelectionState, DataTableSlot, type DataTableSortDirection, type DataTableSortValue, type DataTableSortingApi, type DataTableSortingState, type DataTableState, type DatePattern, DatePicker, type DatePickerProps, type DateRangeNames, DateRangePicker, type DateRangePickerProps, type DateRangeValue, DetailGrid, type DetailGridProps, DetailMain, type DetailMainProps, DetailSpine, DetailSpineHeader, type DetailSpineHeaderProps, type DetailSpineProps, DetailSpineSection, type DetailSpineSectionProps, DetailSpineStats, type DetailSpineStatsProps, Dialog, DialogBody, type DialogBodyProps, DialogClose, DialogContent, type DialogContentProps, DialogDescription, DialogFooter, DialogHeader, type DialogHeight, type DialogMessages, DialogOverlay, DialogPortal, type DialogPresentation, type DialogSize, DialogTitle, DialogTrigger, DismissibleChip, DisplayMenu, type DisplayMenuOption, type DisplayMenuProps, type DisplayMenuSection, DonutChart, type DonutChartProps, type DonutSegment, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateAlign, type EmptyStateProps, type EmptyStateSize, ErrorState, ErrorStateMessages, type ErrorStateProps, type ErrorStateSize, Eyebrow, type EyebrowProps, Field, FieldControl, type FieldControlProps, type FieldControlWiring, FieldDescription, type FieldDescriptionProps, FieldError, type FieldErrorProps, FieldMessages, type FieldOrientation, type FieldProps, Fieldset, FieldsetLegend, type FieldsetLegendProps, type FieldsetProps, FileTypeBadge, type FileTypeBadgeProps, type FileTypeTone, FileUpload, FileUploadMessages, type FileUploadProps, FileUploadSlot, type FileUploadVariant, FilterChip, type FilterChipProps, type FolderNode, FolderTree, type FolderTreeProps, FormError, FormSection, FormSuccess, Heading, type HeadingLevel, type HeadingProps, type HeadingSize, HoverCard, HoverCardContent, type HoverCardContentProps, type HoverCardPadding, HoverCardPortal, HoverCardTrigger, type HoverCardWidth, ICON_TILE_TONE_TO_INTENT, IconAction, type IconActionProps, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonTooltipSide, IconTile, type IconTileIntent, type IconTileProps, type IconTileSize, type IconTileSuiteTone, type IconTileTone, type IconTileVariantProps, InfoHint, type InfoHintPresentation, type InfoHintProps, Inline, type InlineProps, Input, type InputProps$1 as InputProps, type InputSize, type InputSizeAlias, InputSlot, type InputVariant, type InputVariants, type InputVariantsOptions, Intent, Kanban, KanbanCard, type KanbanCardProps, KanbanColumn, type KanbanColumnProps, type KanbanProps, Kbd, type KbdGlyph, KbdHint, type KbdHintProps, type KbdProps, type KbdVariant, type KeyboardShortcut, type KeyboardShortcutSection, KeyboardShortcutsDialog, type KeyboardShortcutsDialogProps, KeyboardShortcutsMessages, KpiCard, type KpiCardProps, type KpiDelta, Label, type LayoutAlign, type LayoutBreakpoint, type LayoutGap, type LayoutJustify, LinkAction, type LinkActionProps, LinkButton, type LinkButtonProps$1 as LinkButtonProps, LoadingRows, Main, type MainProps, MasterDetailLayout, type MasterDetailLayoutProps, MessageBubble, MessageBubbleAction, type MessageBubbleActionProps, type MessageBubbleProps, MessageBubbleTombstone, type MessageBubbleTombstoneProps, MessageComposer, type MessageComposerProps, MetadataGrid, MultiFilterPill, MultiSelect, MultiSelectField, type MultiSelectProps, MutedSpec, type MutedSpecProps, NotificationFilter, type NotificationFilterProps, type NotificationFilterValue, NotificationItem, type NotificationItemProps, NotificationList, type NotificationListProps, NotificationPanel, NotificationPanelFooter, type NotificationPanelFooterProps, NotificationPanelHeader, type NotificationPanelHeaderProps, type NotificationPanelProps, NumberInput, type NumberInputProps, NumberInputSlot, Numeric, type NumericProps, OTPInput, type OTPInputProps, type OnlyStatuses, type Option, type OptionAccessors, PROGRESS_LEGACY_TO_INTENT, PageHeader, type PageHeaderProps, PageHeaderSep, type PageHeaderSepProps, PageHeaderSpec, type PageHeaderSpecProps, Pagination, PaginationMessages, type PaginationProps, PdfPreview, type PdfPreviewProps, PeoplePicker, type PeoplePickerMultipleProps, type PeoplePickerProps, type PeoplePickerSingleProps, type Person, PhoneCountryInput, PhoneField, type PhoneFieldChangeDetails, PhoneFieldMessages, type PhoneFieldProps, PhoneFieldSlot, PhoneInput, Popover, PopoverAnchor, PopoverClose, PopoverContent, type PopoverContentProps, type PopoverPadding, PopoverPortal, PopoverTrigger, type PopoverWidth, Pressable, type PressableProps, PrimaryAction, type PrimaryActionProps, type Priority, PriorityIcon, type PriorityIconProps, ProgressBar, type ProgressBarProps, type ProgressBarVariant, type ProgressBarVariantProps, type ProgressIntent, type ProgressLegacyColour, ProgressRing, type ProgressRingProps, type ProgressRingVariant, type ProgressRingVariantProps, type PromptFn, type PromptOptions, QuestionnairePanel, type QuestionnairePanelGroup, type QuestionnairePanelProps, type QuestionnairePanelSection, type QuestionnairePanelStatus, type QuickReplyChip, RadioGroup, type RadioGroupAppearance, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, type RankedBar, RankedBars, type RankedBarsProps, type Responsive, ResponsiveDialog, type ResponsiveDialogProps, RouteTransition, type RouteTransitionProps, SPINNER_TONE_TO_INTENT, STATUS_DOT_TONE_TO_INTENT, ScrollArea, ScrollBar, SearchInput, SearchInputMessages, type SearchInputProps, type SearchInputSize, SearchInputSlot, type SearchInputVariants, type SearchInputVariantsOptions, SearchSelect, type SearchSelectOption, type SearchSelectProps, SecondaryAction, type SecondaryActionProps, SectionCard, type SectionCardProps, SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, SegmentedProgress, type SegmentedProgressProps, type SegmentedServiceTone, type SegmentedTone, Select, type SelectClassNames, SelectContent, type SelectContentProps, SelectGroup, SelectItem, SelectLabel, SelectMessages, type SelectOption, type SelectProps, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, type SelectSize, SelectSlot, SelectTrigger, type SelectTriggerProps, SelectValue, SelectableKpiCard, type SelectableKpiCardProps, Separator, Sheet, SheetBody, type SheetBodyProps, SheetClose, SheetContent, type SheetContentProps, SheetDescription, SheetFooter, SheetHeader, type SheetMessages, SheetOverlay, SheetPortal, type SheetSide, type SheetSize, SheetTitle, SheetTrigger, type SheetWidth, Shell, type ShellProps, SideDrawer, Sidebar, SidebarBrand, type SidebarBrandProps, SidebarBrandText, type SidebarBrandTextProps, SidebarDrawer, type SidebarDrawerProps, SidebarFooter, type SidebarFooterProps, SidebarLink, SidebarLinkAction, type SidebarLinkActionProps, SidebarLinkBadge, type SidebarLinkBadgeProps, type SidebarLinkBadgeVariants, SidebarLinkGroup, type SidebarLinkGroupProps, SidebarLinkLabel, type SidebarLinkLabelProps, type SidebarLinkProps, SidebarPinButton, type SidebarPinButtonProps, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarSection, type SidebarSectionProps, type SidebarState, SidebarTrigger, type SidebarTriggerProps, SidebarUser, type SidebarUserProps, Skeleton, SkeletonCircle, SkeletonText, Slider, type SliderProps, type SliderSize, Spinner, type SpinnerIntent, type SpinnerProps, type SpinnerSize, type SpinnerTone, type SpinnerVariantProps, SpreadsheetPreview, type SpreadsheetPreviewProps, Stack, type StackDirection, type StackProps, StackedBarChart, type StackedBarChartProps, type StackedBarDatum, type StackedBarSeries, StarRating, type StarRatingProps, StatusBadge, type StatusBadgeProps, StatusDot, type StatusDotIntent, type StatusDotProps, type StatusDotSize, type StatusDotTone, type StatusDotVariantProps, StatusIcon, type StatusIconProps, type StatusMap, type StatusPresentation, type StatusState, type Step, Stepper, type StepperProps, StickyActionBar, type StickyActionBarProps, StickyStack, StickyStackLayer, type StickyStackLayerMode, type StickyStackLayerProps, type StickyStackProps, StickyStackSectionHeader, type StickyStackSectionHeaderProps, StickyStackSticky, type StickyStackStickyProps, SubmitButton, SuiteProgress, type SuiteProgressFillVariantProps, type SuiteProgressProps, type SuiteProgressSize, type SuiteProgressSuiteTone, type SuiteProgressTone, Surface, type SurfaceElevation, type SurfacePadding, type SurfaceProps, type SurfaceRadius, Switch, type SwitchProps, type SwitchSize, TableEmpty, type TableEmptyProps, TableError, type TableErrorProps, TableLoading, type TableLoadingProps, TableProps, type TableStateProps, TableStatesMessages, Tabs, TabsContent, TabsList, TabsTrigger, Text, type TextColor, type TextProps, type TextSize, type TextWeight, Textarea, type TextareaProps, type TextareaSize, TextareaSlot, type TextareaVariant, type TextareaVariants, type TextareaVariantsOptions, type ToastAction, type ToastContextValue, ToastMessages, type ToastOptions, ToastProvider, type ToastVariant, ToggleGroup, type ToggleGroupFormProps, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, type ToggleGroupSize, type ToggleGroupVariant, Toolbar, type ToolbarProps, Tooltip, TooltipContent, type TooltipContentProps, type TooltipMaxWidth, TooltipPortal, type TooltipProps, TooltipProvider, TooltipTrigger, type UseDataTableOptions, type UseFieldControlProps, Variant, VisuallyHidden, YEAR_DISPLAY_PLACEHOLDER, alertVariants, applyMask, applyYearMask, assetPath, attachmentChipVariants, buttonVariants, cardVariants, chipVariants, cn, compareSortValues, dateToIso, defineStatusMap, displayToIso, fileTypeBadgeVariants, fileTypeFromName, filterChipVariants, getAssetBasePath, getFlagEmoji, iconButtonVariants, resolveIconTileVariants as iconTileVariants, inputVariants, isoToDate, isoToDisplay, isoToYear, labelVariants, nextSortDirection, parsePhoneForEditing, progressBarVariants, progressRingVariants, resolveButtonStyle, resolveChipStyle, searchInputVariants, setAssetBasePath, sidebarLinkBadgeVariants, spinnerVariants, starRatingVariants, statusDotVariants, suiteProgressFillVariants, textareaVariants, useConfirm, useDataTable, useFieldControl, usePrompt, useSidebarPeekLock, useSidebarState, useToast, yearToIso };