@assure-one/design-system 1.41.2 → 1.43.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 (33) hide show
  1. package/dist/brand-scope-BOKu4iOc.d.ts +262 -0
  2. package/dist/{chunk-UAPQ7VTS.js → chunk-LUWPEBXZ.js} +283 -178
  3. package/dist/chunk-LUWPEBXZ.js.map +1 -0
  4. package/dist/{chunk-AF3QYJ24.js → chunk-TBDTXAFH.js} +6 -4
  5. package/dist/chunk-TBDTXAFH.js.map +1 -0
  6. package/dist/{chunk-JKNHNNNY.js → chunk-TYXT5C2B.js} +95 -11
  7. package/dist/chunk-TYXT5C2B.js.map +1 -0
  8. package/dist/{chunk-XN7OBLQR.js → chunk-XJKCKBHI.js} +20 -16
  9. package/dist/chunk-XJKCKBHI.js.map +1 -0
  10. package/dist/css/components.css +1 -1
  11. package/dist/css/tokens.css +4 -4
  12. package/dist/{data-table-view-ep8al7P9.d.ts → data-table-view-BWhKeUiw.d.ts} +186 -2
  13. package/dist/{design-system-provider-CfD2g2lY.d.ts → design-system-provider-Coe2S3Lh.d.ts} +1 -1
  14. package/dist/icons/index.d.ts +5 -1
  15. package/dist/icons/index.js +1 -1
  16. package/dist/index.d.ts +290 -455
  17. package/dist/index.js +636 -250
  18. package/dist/index.js.map +1 -1
  19. package/dist/legacy/index.d.ts +11 -4
  20. package/dist/legacy/index.js +3 -3
  21. package/dist/next/index.d.ts +2 -2
  22. package/dist/styles.css +1 -1
  23. package/dist/suite/index.d.ts +14 -3
  24. package/dist/suite/index.js +3 -3
  25. package/dist/{types-Coqw8iaS.d.ts → types-DlqmlVyZ.d.ts} +11 -1
  26. package/docs/components.md +11 -8
  27. package/docs/components.registry.json +89 -22
  28. package/package.json +1 -1
  29. package/dist/brand-scope-BOHId6BY.d.ts +0 -58
  30. package/dist/chunk-AF3QYJ24.js.map +0 -1
  31. package/dist/chunk-JKNHNNNY.js.map +0 -1
  32. package/dist/chunk-UAPQ7VTS.js.map +0 -1
  33. package/dist/chunk-XN7OBLQR.js.map +0 -1
@@ -1,8 +1,11 @@
1
1
  import * as React$1 from 'react';
2
2
  import { ReactNode } from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
- export { B as BRAND_PRODUCTS, a as BrandProduct, b as brandLabel } from '../brand-scope-BOHId6BY.js';
5
- import { C as ComingSoonMessages } from '../types-Coqw8iaS.js';
4
+ import { C as ComboboxSize } from '../brand-scope-BOKu4iOc.js';
5
+ export { B as BRAND_PRODUCTS, a as BrandProduct, b as brandLabel } from '../brand-scope-BOKu4iOc.js';
6
+ import { c as ComingSoonMessages } from '../types-DlqmlVyZ.js';
7
+ import '../vocab-DornLJbW.js';
8
+ import '../system-DfJIVBlJ.js';
6
9
 
7
10
  interface BrandIconProps extends React.SVGAttributes<SVGElement> {
8
11
  size?: number;
@@ -25,8 +28,16 @@ interface ClientSelectProps {
25
28
  error?: string;
26
29
  className?: string;
27
30
  placeholder?: string;
31
+ /**
32
+ * Height, padding, font and glyph size from the shared control scale (A1,
33
+ * ADR-013), forwarded to the underlying `Combobox`. Default `md` — today's
34
+ * frozen 36px row, byte for byte.
35
+ *
36
+ * @experimental
37
+ */
38
+ size?: ComboboxSize | undefined;
28
39
  }
29
- declare function ClientSelect({ clients, value, onChange, name, error, className, placeholder, }: ClientSelectProps): react_jsx_runtime.JSX.Element;
40
+ declare function ClientSelect({ clients, value, onChange, name, error, className, placeholder, size, }: ClientSelectProps): react_jsx_runtime.JSX.Element;
30
41
  declare namespace ClientSelect {
31
42
  var displayName: string;
32
43
  }
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- export { AgreementPaneHeading, AgreementViewer, AssureAuditBrandIcon, AssureBooksBrandIcon, AssureProBrandIcon, AssureTaxBrandIcon, BRAND_PRODUCTS, ClientSelect, ComingSoon, Grid, Logo, ProposalAddOn, ProposalBillingTerms, ProposalConsentGate, ProposalCustomPage, ProposalNote, ProposalPackageCard, ProposalPaymentCapture, ProposalPricingSummary, ProposalServiceRow, ProposalSignatureBlock, ProposalSignerList, QUESTION_TYPES, QUESTION_TYPE_CONTRACT_VERSION, Questions, SidebarBrandSwitcher, SidebarBrandSwitcherTile, brandLabel } from '../chunk-JKNHNNNY.js';
3
- export { DocumentDetailActions, DocumentDetailBody, DocumentDetailHeader, DocumentDetailMetaRow, DocumentDetailPanel, DocumentDetailRequester, DocumentDetailTitle, DocumentList, DocumentListSection, DocumentRow } from '../chunk-XN7OBLQR.js';
4
- import '../chunk-AF3QYJ24.js';
2
+ export { AgreementPaneHeading, AgreementViewer, AssureAuditBrandIcon, AssureBooksBrandIcon, AssureProBrandIcon, AssureTaxBrandIcon, BRAND_PRODUCTS, ClientSelect, ComingSoon, Grid, Logo, ProposalAddOn, ProposalBillingTerms, ProposalConsentGate, ProposalCustomPage, ProposalNote, ProposalPackageCard, ProposalPaymentCapture, ProposalPricingSummary, ProposalServiceRow, ProposalSignatureBlock, ProposalSignerList, QUESTION_TYPES, QUESTION_TYPE_CONTRACT_VERSION, Questions, SidebarBrandSwitcher, SidebarBrandSwitcherTile, brandLabel } from '../chunk-TYXT5C2B.js';
3
+ export { DocumentDetailActions, DocumentDetailBody, DocumentDetailHeader, DocumentDetailMetaRow, DocumentDetailPanel, DocumentDetailRequester, DocumentDetailTitle, DocumentList, DocumentListSection, DocumentRow } from '../chunk-XJKCKBHI.js';
4
+ import '../chunk-TBDTXAFH.js';
5
5
  import '../chunk-EUHGZA6Q.js';
6
6
  import '../chunk-YRHRVOLV.js';
7
7
  //# sourceMappingURL=index.js.map
@@ -363,6 +363,15 @@ interface TableMessages {
363
363
  */
364
364
  region: string;
365
365
  }
366
+ /** The copy a `TableDensityToggle` renders. @experimental */
367
+ interface TableDensityMessages {
368
+ /** The group's accessible name. Default `"Row density"`. */
369
+ label: string;
370
+ /** The comfortable item's accessible name and tooltip. Default `"Detailed view"`. */
371
+ comfortable: string;
372
+ /** The compact item's accessible name and tooltip. Default `"Compact view"`. */
373
+ compact: string;
374
+ }
366
375
  /** The copy a `StackedBarChart` renders. @experimental */
367
376
  interface StackedBarChartMessages {
368
377
  /**
@@ -482,6 +491,7 @@ interface DsMessages {
482
491
  errorState: ErrorStateMessages;
483
492
  tableStates: TableStatesMessages;
484
493
  table: TableMessages;
494
+ tableDensity: TableDensityMessages;
485
495
  stackedBarChart: StackedBarChartMessages;
486
496
  pdfPreview: PdfPreviewMessages;
487
497
  spreadsheetPreview: SpreadsheetPreviewMessages;
@@ -500,4 +510,4 @@ type DsMessagesOverride = {
500
510
  [N in DsMessageNamespace]?: Partial<DsMessages[N]>;
501
511
  };
502
512
 
503
- export type { ComingSoonMessages as C, DsMessageNamespace as D, ErrorStateMessages as E, FileUploadMessages as F, KeyboardShortcutsMessages as K, PaginationMessages as P, SearchInputMessages as S, TableMessages as T, DsMessages as a, DsMessagesOverride as b, CommandPaletteMessages as c, ConfirmMessages as d, CopyButtonMessages as e, PhoneFieldMessages as f, SelectMessages as g, ToastMessages as h, FieldMessages as i, ComboboxMessages as j, TableStatesMessages as k, DataTableMessages as l };
513
+ export type { ComboboxMessages as C, DsMessageNamespace as D, ErrorStateMessages as E, FileUploadMessages as F, KeyboardShortcutsMessages as K, PaginationMessages as P, SelectMessages as S, TableMessages as T, DsMessages as a, DsMessagesOverride as b, ComingSoonMessages as c, CommandPaletteMessages as d, ConfirmMessages as e, CopyButtonMessages as f, PhoneFieldMessages as g, SearchInputMessages as h, TableDensityMessages as i, ToastMessages as j, FieldMessages as k, TableStatesMessages as l, DataTableMessages as m };
@@ -2,7 +2,7 @@
2
2
 
3
3
  <!-- Generated by `pnpm docs:catalogue` from api/*.api.md and docs/components.registry.json. Do not edit by hand; edit the registry and regenerate. -->
4
4
 
5
- Every public component of `@assure-one/design-system`, in one place: **491 component exports** — 180 component families with 228 compound parts, and 166 icons — plus the hooks, utilities, tokens and testing helpers the package exports. The list is derived from the API reports, so a public component cannot be missing from this page (`pnpm docs:catalogue --check` runs in `pnpm test:contracts`).
5
+ Every public component of `@assure-one/design-system`, in one place: **496 component exports** — 183 component families with 228 compound parts, and 168 icons — plus the hooks, utilities, tokens and testing helpers the package exports. The list is derived from the API reports, so a public component cannot be missing from this page (`pnpm docs:catalogue --check` runs in `pnpm test:contracts`).
6
6
 
7
7
  **How to use this page.** Start from the ["Pick a component"](#pick-a-component) table with the UI need you have, or from ["Never hand-roll"](#never-hand-roll) with the raw element you were about to write; links land on the category section that holds the row. Every row links to the story that shows the states. The short rulebook for agents and new contributors is [`docs/for-ai-agents.md`](./for-ai-agents.md).
8
8
 
@@ -140,8 +140,8 @@ Controls that carry a value into a form. Every one binds to `Field` through `use
140
140
  | **PhoneInput** (deprecated)<br>since 0.0.0 | Only in code that already uses it: US-only phone formatting on the `Input` chrome. | New code — `PhoneField` (deprecated, removed in 3.0). | — | [PhoneField](#forms), [Input](#forms) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/phone-input.stories.tsx) |
141
141
  | **PhoneCountryInput** (deprecated)<br>parts: `CountrySelect` (deprecated), `CountryFlag` (deprecated)<br>since 1.1.0 | Only in code that already uses it: the pre-PhoneField country `Select` + `tel` input pair; `parsePhoneForEditing` seeds it from a stored E.164 string. | New code — `PhoneField` (its country picker is a `Combobox`; deprecated, removed in 3.0). | — | [PhoneField](#forms), [COUNTRY_CODES](#hooks-utilities) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/phone-country-input.stories.tsx) |
142
142
  | **FileUpload**<br>since 0.0.0 | Pick or drop files: accept/multiple/max size, file list with remove, keyboard-focusable input, Field binding. | The upload belongs to a client document request (`DocumentRequestUpload`) or you only show already-uploaded files (`AttachmentChip`, `FileChip`). | `<input type="file">`, `drop-zone div with onDrop` | [DocumentRequestUpload](#forms), [AttachmentChip](#data-display), [FileTypeBadge](#data-display) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/file-upload.stories.tsx) |
143
- | **DatePicker**<br>since 0.0.0 | One date (or a year in year mode) typed with a mask or picked from a `Calendar` popover; ISO `YYYY-MM-DD` value, `onValueChange`, deterministic `en-US` display. | A range (`DateRangePicker`) or an always-visible calendar (`Calendar`). | `<input type="date">` | [DateRangePicker](#forms), [Calendar](#forms), [isoToDisplay](#hooks-utilities) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/date-picker.stories.tsx) |
144
- | **DateRangePicker**<br>since 0.11.0 | A from/to pair in one control; posts `${name}_from` / `${name}_to`. | A single date (`DatePicker`) or two independent dates in a form (two `DatePicker`s in a `Fieldset`). | `two <input type="date">` | [DatePicker](#forms), [Calendar](#forms) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/date-range-picker.stories.tsx) |
143
+ | **DatePicker**<br>since 0.0.0 | One date (or a year in year mode) typed with a mask or picked from a `Calendar` popover; ISO `YYYY-MM-DD` value, `onValueChange`, deterministic `en-US` display, `size`. | A range (`DateRangePicker`) or an always-visible calendar (`Calendar`). | `<input type="date">` | [DateRangePicker](#forms), [Calendar](#forms), [isoToDisplay](#hooks-utilities) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/date-picker.stories.tsx) |
144
+ | **DateRangePicker**<br>since 0.11.0 | A from/to pair in one control; posts `${name}_from` / `${name}_to`; `size`. | A single date (`DatePicker`) or two independent dates in a form (two `DatePicker`s in a `Fieldset`). | `two <input type="date">` | [DatePicker](#forms), [Calendar](#forms) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/date-range-picker.stories.tsx) |
145
145
  | **Calendar**<br>since 0.0.0 | An inline month grid (react-day-picker) for choosing a day or range without a popover. | The date belongs in a form field (`DatePicker`, `DateRangePicker`). | — | [DatePicker](#forms), [DateRangePicker](#forms) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/calendar.stories.tsx) |
146
146
  | **Checkbox**<br>since 0.0.0 | A boolean or one of several independent choices; `checked` accepts `"indeterminate"` for select-all; native form participation. | The change applies immediately as a setting (`Switch`) or the choices are exclusive (`RadioGroup`). | `<input type="checkbox">` | [Switch](#forms), [RadioGroup](#forms), [DataTable](#data-display) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/checkbox.stories.tsx) |
147
147
  | **RadioGroup**<br>parts: `RadioGroupItem`<br>since 0.0.0 | Exclusive choice among a few visible options in a form; wrap in `Fieldset` for the legend. | More than about six options (`Select`) or an immediate view switch (`ToggleGroup`). | `<input type="radio">` | [Fieldset](#forms), [ToggleGroup](#selection), [Select](#selection) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/radio-group.stories.tsx) |
@@ -170,9 +170,9 @@ Pick one or many from a set: dropdowns, comboboxes, toggle groups, chips and fil
170
170
  | **Select**<br>parts: `SelectRoot`, `SelectTrigger`, `SelectValue`, `SelectContent`, `SelectItem`, `SelectGroup`, `SelectLabel`, `SelectSeparator`, `SelectScrollUpButton`, `SelectScrollDownButton`<br>since 0.0.0 | One of a short static list in a dropdown: the sealed `Select` takes `options`; the `Select*` parts compose custom items. Empty value is a real empty (no sentinel option), `size`, `classNames`, Field binding. | The user should type to filter, the list is long or async (`Combobox`), several values (`MultiSelect`), or a few options that can all be visible (`RadioGroup`, `ToggleGroup`). | `<select>`, `<option>` | [Combobox](#selection), [MultiSelect](#selection), [ClientSelect](#selection), [TeamMemberSelect](#selection) | — |
171
171
  | **Combobox** (experimental)<br>also: `DEFAULT_COMBOBOX_MESSAGES`<br>since unreleased | A searchable pick: one input, a portalled listbox, the `Option<T>` model (`{ value, label }`), async loading and empty messages, single or `multiple`. | A short static list (`Select`) or free text with suggestions that need not match (`Input` + `Popover`). | `<input list> + <datalist>`, `<select> with a search box` | [Select](#selection), [MultiSelect](#selection), [SearchSelect](#selection) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/combobox.stories.tsx) |
172
172
  | **MultiSelect** (experimental)<br>since unreleased | Several of many options with search: `Combobox` in `multiple` mode with selected chips. | A handful of options that should all be visible (`MultiSelectField`) or one value (`Combobox`, `Select`). | `<select multiple>` | [Combobox](#selection), [MultiSelectField](#forms), [Chip](#selection) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/multi-select.stories.tsx) |
173
- | **SearchSelect** (deprecated)<br>since 0.0.0 | Only in code that already uses it: the pre-Combobox searchable select with `{ id, label }` options (contract C-SEARCHSELECT). | New code — `Combobox` with `Option` (deprecated, removed in 3.0; CM-08 rewrites single-mode call sites). | — | [Combobox](#selection), [MultiSelect](#selection) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/search-select.stories.tsx) |
174
- | **ClientSelect** (`/suite`)<br>since 0.0.0 | Pick one client: searchable name and email rows on the `Combobox` primitive, long names truncated. | Clients fetched per keystroke (`Combobox` with async options) or any other entity (`Select`). | — | [Select](#selection), [TeamMemberSelect](#selection), [Combobox](#selection) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/client-select.stories.tsx) |
175
- | **TeamMemberSelect** (deprecated) (`/legacy`)<br>since 0.0.0 | Pick an assignee: avatar and name rows on the `Select` primitive, with an unassigned option. | Several assignees (`MultiSelect`) or any other entity (`Select`). | — | [Select](#selection), [ClientSelect](#selection), [DataTableView](#data-display) | [story](https://github.com/Assure-One/design-system/blob/main/src/legacy/team-member-select.stories.tsx) |
173
+ | **SearchSelect** (deprecated)<br>since 0.0.0 | Only in code that already uses it: the pre-Combobox searchable select with `{ id, label }` options (contract C-SEARCHSELECT), `size` (forwarded to `Combobox`). | New code — `Combobox` with `Option` (deprecated, removed in 3.0; CM-08 rewrites single-mode call sites). | — | [Combobox](#selection), [MultiSelect](#selection) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/search-select.stories.tsx) |
174
+ | **ClientSelect** (`/suite`)<br>since 0.0.0 | Pick one client: searchable name and email rows on the `Combobox` primitive, long names truncated, `size` (forwarded to `Combobox`). | Clients fetched per keystroke (`Combobox` with async options) or any other entity (`Select`). | — | [Select](#selection), [TeamMemberSelect](#selection), [Combobox](#selection) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/client-select.stories.tsx) |
175
+ | **TeamMemberSelect** (deprecated) (`/legacy`)<br>since 0.0.0 | Pick an assignee: avatar and name rows on the `Select` primitive, with an unassigned option, `size` (forwarded to `Select`). | Several assignees (`MultiSelect`) or any other entity (`Select`). | — | [Select](#selection), [ClientSelect](#selection), [DataTableView](#data-display) | [story](https://github.com/Assure-One/design-system/blob/main/src/legacy/team-member-select.stories.tsx) |
176
176
  | **ToggleGroup**<br>parts: `ToggleGroupItem`<br>since 0.0.0 | A view or mode switch with immediate effect (list/grid, day/week), single or multiple, roving focus. | The choice is a form value (`RadioGroup`, `MultiSelectField`) or navigation between panels (`Tabs`). | `group of <button aria-pressed>` | [Tabs](#navigation), [RadioGroup](#forms), [DocumentSourceFilter](#selection) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/toggle-group.stories.tsx) |
177
177
  | **Chip** (experimental)<br>also: `chipVariants`, `resolveChipStyle`<br>since 1.35.0 | A removable, toggleable or clickable token: applied filters, tags, selected values; `variant` × `intent` × `size`, `onRemove`, `pressed`. | A static label (`Badge`), a status (`StatusBadge`) or a file (`FileChip`, `AttachmentChip`). | `<span class="rounded-full …"><button>×</button></span>` | [DismissibleChip](#selection), [Badge](#data-display), [Toolbar](#actions), [MultiSelect](#selection) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/chip.stories.tsx) |
178
178
  | **DismissibleChip**<br>since 0.4.0 | Only in code that already uses it: a label with a remove button. | New code — `Chip` with `onRemove` covers it with the shared variants and sizes. | — | [Chip](#selection) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/dismissible-chip.stories.tsx) |
@@ -290,6 +290,7 @@ Show records and status: tables, key/value grids, badges, dots, avatars, lists a
290
290
  | **AvatarGroup**<br>since 1.38.0 | An overlapping stack of `Avatar`s with a `+N` overflow bubble: `max` caps the faces, `total` carries the real count, `size` cascades from Avatar's scale. | A single person (`Avatar`) or a list that needs names (`DescriptionList`). | `flex row of avatars with negative margins and a +N circle` | [Avatar](#data-display), [TeamMemberSelect](#selection) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/avatar-group.stories.tsx) |
291
291
  | **StarRating**<br>also: `starRatingVariants`<br>since 0.0.0 | A display-only rating: fractional stars, `max`, sized variants. | Capturing a rating (compose `RadioGroup` or `ToggleGroup` with star icons). | — | [Badge](#data-display), [KpiCard](#data-display) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/star-rating.stories.tsx) |
292
292
  | **Table**<br>parts: `TableHeader`, `TableBody`, `TableFooter`, `TableRow`, `TableHead`, `TableCell`, `TableCaption`<br>since 0.0.0 | A bare semantic table with the design system's row, header and caption styling. | A records table with toolbar, sorting and pagination (`DataTable`, `DataTableView`) or an editable matrix (`Grid`). | `<table>`, `<tr>`, `<td>`, `<th>` | [DataTable](#data-display), [DataTableView](#data-display), [MetadataGrid](#data-display) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/table.stories.tsx) |
293
+ | **TableDensityToggle** (experimental)<br>also: `useTableDensity`<br>since unreleased | A table's own toolbar control for row density — pairs with `useTableDensity` and `<Table density>`. Two icon items, "Detailed" and "Compact", each with an accessible name and a tooltip. | A generic view-mode switch unrelated to table rows (ToggleGroup directly, or SegmentedControl). | — | [Table](#data-display), [ToggleGroup](#selection) | [story](https://github.com/Assure-One/design-system/blob/main/src/primitives/table-density-toggle.stories.tsx) |
293
294
  | **DataTable**<br>parts: `DataTableToolbar`, `DataTableSearch`, `DataTableSpacer`, `DataTableResultsCount`, `DataTableHead`, `DataTableHeader`, `DataTableBody`, `DataTableRow`, `DataTableCell`, `DataTableCellName`, `DataTableCellMono`, `DataTableCellId`, `DataTableCellDue`, `DataTableCheckbox`, `DataTablePagination`<br>since 0.3.0 | The composable records table: card frame, toolbar with search and count, sortable headers, typed cells (name, mono, id, due), row checkbox, pagination. | A config-driven table is enough (`DataTableView`) or the table is a plain semantic one (`Table`). | `<table> + hand-rolled toolbar and pager` | [DataTableView](#data-display), [Table](#data-display), [BulkActionBar](#actions), [LoadingRows](#feedback), [TableLoading](#data-display) | [story](https://github.com/Assure-One/design-system/blob/main/src/composites/data-table.stories.tsx) |
294
295
  | **TableLoading** (experimental)<br>since 1.38.0 | The `<tbody aria-busy>` of a data table while its rows load: skeleton rows sized to the columns. Slots in place of `DataTableBody`. | A list outside a table (`LoadingRows`) or a single shape (`Skeleton`). | `<tbody> of hand-rolled skeleton <td>s` | [TableEmpty](#data-display), [TableError](#data-display), [DataTable](#data-display), [LoadingRows](#feedback) | [story](https://github.com/Assure-One/design-system/blob/main/src/composites/data-table-states.stories.tsx) |
295
296
  | **TableEmpty** (experimental)<br>since 1.38.0 | The `<tbody>` of a data table with no rows: one full-width row holding a compact `EmptyState`. | An empty panel outside a table (`EmptyState`). | `<tr><td colSpan> with centred grey text` | [TableLoading](#data-display), [TableError](#data-display), [EmptyState](#feedback), [DataTable](#data-display) | [story](https://github.com/Assure-One/design-system/blob/main/src/composites/data-table-states.stories.tsx) |
@@ -345,14 +346,14 @@ Every glyph comes from the catalogue; never inline an `<svg>` or add `lucide-rea
345
346
 
346
347
  ### Icons (experimental)
347
348
 
348
- The UI glyph catalogue: Lucide glyphs on the 24-unit grid, `currentColor` strokes at 2, `aria-hidden` unless titled. Import from `@assure-one/design-system/icons` (server-safe) or the root. 164 exports, plus `createIcon`.
349
+ The UI glyph catalogue: Lucide glyphs on the 24-unit grid, `currentColor` strokes at 2, `aria-hidden` unless titled. Import from `@assure-one/design-system/icons` (server-safe) or the root. 166 exports, plus `createIcon`.
349
350
 
350
351
  **Use when:** Any glyph in a control, a list row, a status, an empty state; `createIcon` to register a one-off glyph in the same contract.
351
352
  **Don't use when:** You need a product mark (brand icon family or `Logo`), a state-driven glyph (`StatusIcon`, `PriorityIcon`) or an illustration.
352
353
  **Replaces:** `<svg>`, `lucide-react`
353
354
  **Story:** [src/primitives/icons.stories.tsx](https://github.com/Assure-One/design-system/blob/main/src/primitives/icons.stories.tsx)
354
355
 
355
- `AlertCircleIcon` · `AlertTriangleIcon` · `AlertTriangleSolidIcon` · `ArchiveIcon` · `ArrowDownIcon` · `ArrowLeftIcon` · `ArrowRightIcon` · `ArrowUpIcon` · `ArrowUpRightIcon` · `AtSignIcon` · `BanIcon` · `BarChartIcon` · `BellIcon` · `BoldIcon` · `BrainIcon` · `BriefcaseIcon` · `Building2Icon` · `BuildingIcon` · `CalculatorIcon` · `CalendarIcon` · `CameraIcon` · `ChatBubbleIcon` · `CheckCheckIcon` · `CheckCircle2Icon` · `CheckCircleSolidIcon` · `CheckIcon` · `ChevronDownIcon` · `ChevronLeftIcon` · `ChevronRightIcon` · `ChevronsDownUpIcon` · `ChevronsLeftIcon` · `ChevronsRightIcon` · `ChevronsUpDownIcon` · `ChevronUpIcon` · `CircleDotIcon` · `CircleIcon` · `ClipboardCheckIcon` · `ClockIcon` · `CommandIcon` · `CopyIcon` · `CornerDownLeftIcon` · `CreditCardIcon` · `DocumentIcon` · `DollarSignIcon` · `DownloadIcon` · `ExternalLinkIcon` · `ExtractIcon` · `EyeIcon` · `EyeOffIcon` · `FileChartColumnIcon` · `FileIcon` · `FileReturnIcon` · `FileTextIcon` · `FilterIcon` · `FlagIcon` · `FolderClosedIcon` · `FolderDownIcon` · `FolderOpenIcon` · `FolderPlusIcon` · `FolderUpIcon` · `GlobeIcon` · `GraduationCapIcon` · `GripHorizontalIcon` · `GripVerticalIcon` · `HelpCircleIcon` · `HistoryIcon` · `HomeIcon` · `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` · `MessageCircleMoreIcon` · `MessageCircleWarningIcon` · `MicIcon` · `MinimizeIcon` · `MinusIcon` · `MonitorIcon` · `MoonIcon` · `MoreHorizontalIcon` · `MoreVerticalIcon` · `MousePointer2Icon` · `MoveIcon` · `PaletteIcon` · `PanelLeftCloseIcon` · `PanelLeftIcon` · `PanelRightCloseIcon` · `PanelRightIcon` · `PaperclipIcon` · `PauseIcon` · `PencilIcon` · `PenSignIcon` · `PenToolIcon` · `PhoneIcon` · `PlayIcon` · `PlusIcon` · `ReceiptIcon` · `RefreshCwIcon` · `ReplyIcon` · `RotateCcwIcon` · `SaveIcon` · `SearchIcon` · `SendIcon` · `SettingsIcon` · `ShieldIcon` · `SigmaIcon` · `SlashIcon` · `SmartphoneIcon` · `SparkleIcon` · `SparklesIcon` · `SquarePlayIcon` · `StarIcon` · `StopIcon` · `StrikethroughIcon` · `SunIcon` · `TableIcon` · `TagIcon` · `TeamIcon` · `ThumbsDownIcon` · `ThumbsUpIcon` · `TimerIcon` · `Trash2Icon` · `TrashIcon` · `TrashSolidIcon` · `TrendingDownIcon` · `TrendingUpIcon` · `TypeIcon` · `UnderlineIcon` · `UploadIcon` · `UserCircleIcon` · `UserIcon` · `UsersIcon` · `VideoIcon` · `Volume2Icon` · `VolumeXIcon` · `WorkflowIcon` · `XCircleSolidIcon` · `XIcon` · `ZoomInIcon` · `ZoomOutIcon`
356
+ `AlertCircleIcon` · `AlertTriangleIcon` · `AlertTriangleSolidIcon` · `ArchiveIcon` · `ArrowDownIcon` · `ArrowLeftIcon` · `ArrowRightIcon` · `ArrowUpIcon` · `ArrowUpRightIcon` · `AtSignIcon` · `BanIcon` · `BarChartIcon` · `BellIcon` · `BoldIcon` · `BrainIcon` · `BriefcaseIcon` · `Building2Icon` · `BuildingIcon` · `CalculatorIcon` · `CalendarIcon` · `CameraIcon` · `ChatBubbleIcon` · `CheckCheckIcon` · `CheckCircle2Icon` · `CheckCircleSolidIcon` · `CheckIcon` · `ChevronDownIcon` · `ChevronLeftIcon` · `ChevronRightIcon` · `ChevronsDownUpIcon` · `ChevronsLeftIcon` · `ChevronsRightIcon` · `ChevronsUpDownIcon` · `ChevronUpIcon` · `CircleDotIcon` · `CircleIcon` · `ClipboardCheckIcon` · `ClockIcon` · `CommandIcon` · `CopyIcon` · `CornerDownLeftIcon` · `CreditCardIcon` · `DocumentIcon` · `DollarSignIcon` · `DownloadIcon` · `ExternalLinkIcon` · `ExtractIcon` · `EyeIcon` · `EyeOffIcon` · `FileChartColumnIcon` · `FileIcon` · `FileReturnIcon` · `FileTextIcon` · `FilterIcon` · `FlagIcon` · `FolderClosedIcon` · `FolderDownIcon` · `FolderOpenIcon` · `FolderPlusIcon` · `FolderUpIcon` · `GlobeIcon` · `GraduationCapIcon` · `GripHorizontalIcon` · `GripVerticalIcon` · `HelpCircleIcon` · `HistoryIcon` · `HomeIcon` · `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` · `MessageCircleMoreIcon` · `MessageCircleWarningIcon` · `MicIcon` · `MinimizeIcon` · `MinusIcon` · `MonitorIcon` · `MoonIcon` · `MoreHorizontalIcon` · `MoreVerticalIcon` · `MousePointer2Icon` · `MoveIcon` · `PaletteIcon` · `PanelLeftCloseIcon` · `PanelLeftIcon` · `PanelRightCloseIcon` · `PanelRightIcon` · `PaperclipIcon` · `PauseIcon` · `PencilIcon` · `PenSignIcon` · `PenToolIcon` · `PhoneIcon` · `PlayIcon` · `PlusIcon` · `ReceiptIcon` · `RefreshCwIcon` · `ReplyIcon` · `RotateCcwIcon` · `Rows4Icon` · `RowsIcon` · `SaveIcon` · `SearchIcon` · `SendIcon` · `SettingsIcon` · `ShieldIcon` · `SigmaIcon` · `SlashIcon` · `SmartphoneIcon` · `SparkleIcon` · `SparklesIcon` · `SquarePlayIcon` · `StarIcon` · `StopIcon` · `StrikethroughIcon` · `SunIcon` · `TableIcon` · `TagIcon` · `TeamIcon` · `ThumbsDownIcon` · `ThumbsUpIcon` · `TimerIcon` · `Trash2Icon` · `TrashIcon` · `TrashSolidIcon` · `TrendingDownIcon` · `TrendingUpIcon` · `TypeIcon` · `UnderlineIcon` · `UploadIcon` · `UserCircleIcon` · `UserIcon` · `UsersIcon` · `VideoIcon` · `Volume2Icon` · `VolumeXIcon` · `WorkflowIcon` · `XCircleSolidIcon` · `XIcon` · `ZoomInIcon` · `ZoomOutIcon`
356
357
 
357
358
  Deprecated aliases (same drawing under an older name): `ArrowRightSmallIcon`, `CloseIcon`.
358
359
 
@@ -389,6 +390,8 @@ The application frame and full-screen composites: shell, sidebar, header, brand
389
390
  | **BrandScope**<br>parts: `BrandScopeProvider`<br>also: `BRAND_PRODUCTS`, `brandLabel`, `brandScope`, `useBrandScope`<br>since 1.18.0 | Theme a subtree as a product: stamps `data-brand` and provides it so portalled surfaces re-stamp themselves; `brandScope(product)` for the attribute alone. | Colouring by service line (`serviceToneStyle`) or by status (`intent`). | — | [Shell](#shell-screens), [SidebarBrandSwitcher](#shell-screens) | [docs](https://github.com/Assure-One/design-system/blob/main/docs/integration/css.md) |
390
391
  | **AgreementViewer** (`/suite`)<br>parts: `AgreementPaneHeading` (`/suite`)<br>since 1.12.0 | The client-facing agreement / proposal viewer: cover, steps, firm accent scope for the proposal blocks. | Previewing a PDF (`PdfPreview`). | — | [ProposalPackageCard](#data-display), [ProposalSignatureBlock](#forms), [ProposalSignerList](#data-display) | [story](https://github.com/Assure-One/design-system/blob/main/src/composites/agreement-viewer.stories.tsx) |
391
392
  | **SidebarDrawer** (experimental)<br>since 1.38.0 | The sidebar nav off-canvas on small viewports: the same tree in a left-hand Sheet, with the focus trap, scroll lock and dismissal the overlay parts already provide. | Desktop widths (`Sidebar`) or a bottom tab bar (`BottomNav`). | — | [Sidebar](#shell-screens), [Sheet](#overlays), [Shell](#shell-screens) | [story](https://github.com/Assure-One/design-system/blob/main/src/composites/sidebar.stories.tsx) |
393
+ | **AppSidebar** (experimental)<br>since unreleased | A data-driven app nav: sections/items configured as data instead of hand-nested SidebarSection/SidebarLink JSX. Active item is the longest-matching href; a group opens automatically when a child is active. | A bespoke nav with per-row logic beyond icon/label/badge/children (compose Sidebar's parts directly). | — | [AppSidebarNav](#shell-screens), [Sidebar](#shell-screens), [SidebarBrandSwitcher](#shell-screens), [SidebarDrawer](#shell-screens) | [story](https://github.com/Assure-One/design-system/blob/main/src/composites/app-sidebar.stories.tsx) |
394
+ | **AppSidebarNav** (experimental)<br>since unreleased | The same `sections` config as AppSidebar, rendered without a Sidebar root — drop it inside SidebarDrawer for the mobile nav. | The desktop column (use AppSidebar itself). | — | [AppSidebar](#shell-screens), [SidebarDrawer](#shell-screens) | [story](https://github.com/Assure-One/design-system/blob/main/src/composites/app-sidebar.stories.tsx) |
392
395
 
393
396
  ## Hooks/utilities
394
397
 
@@ -794,26 +794,49 @@
794
794
  },
795
795
  "InfoHint": {
796
796
  "category": "data display",
797
- "useWhen": "The \u24d8 beside a label or a figure (W7-15): `label` names what the hint is about, `children` is the explanation, `presentation=\"tooltip\"` (default) or `\"popover\"` for an explanation with a paragraph or a link. The trigger is a real `IconButton`, so the hint is reachable by keyboard and by touch.",
797
+ "useWhen": "The ⓘ beside a label or a figure (W7-15): `label` names what the hint is about, `children` is the explanation, `presentation=\"tooltip\"` (default) or `\"popover\"` for an explanation with a paragraph or a link. The trigger is a real `IconButton`, so the hint is reachable by keyboard and by touch.",
798
798
  "dontUseWhen": "The text belongs in the layout (`FieldDescription` under a field) or the surface is a rich hover preview (`HoverCard`).",
799
- "replacesRawHtml": ["<svg title>", "<span title>"],
800
- "related": ["Tooltip", "Popover", "IconButton", "FieldDescription"],
799
+ "replacesRawHtml": [
800
+ "<svg title>",
801
+ "<span title>"
802
+ ],
803
+ "related": [
804
+ "Tooltip",
805
+ "Popover",
806
+ "IconButton",
807
+ "FieldDescription"
808
+ ],
801
809
  "since": "unreleased"
802
810
  },
803
811
  "PeoplePicker": {
804
812
  "category": "selection",
805
813
  "useWhen": "Pick a person or people from the firm's roster (W7-10): `people`, single or `multiple`, avatars with an optional second line, an \"assign to me\" shortcut from `currentUserId`, and an `unassignedLabel` row that reports `null`. Search, keyboard, `Field` binding and form submission come from `Combobox`.",
806
814
  "dontUseWhen": "The options are not people (`Combobox`, `MultiSelect`), or a plain roster select with no roster affordances is enough (`Select`). `TeamMemberSelect` is the predecessor it replaces.",
807
- "replacesRawHtml": ["hand-rolled assignee popover with checkboxes"],
808
- "related": ["Combobox", "MultiSelect", "Avatar", "TeamMemberSelect"],
815
+ "replacesRawHtml": [
816
+ "hand-rolled assignee popover with checkboxes"
817
+ ],
818
+ "related": [
819
+ "Combobox",
820
+ "MultiSelect",
821
+ "Avatar",
822
+ "TeamMemberSelect"
823
+ ],
809
824
  "since": "unreleased"
810
825
  },
811
826
  "SegmentedControl": {
812
827
  "category": "selection",
813
828
  "useWhen": "One of a few mutually exclusive views or scopes, shown side by side (W7-17): `options` with an optional `count` per segment, `size` on the control scale, radio semantics and arrow-key movement from `ToggleGroup`. The active segment cannot be cleared by clicking it again.",
814
829
  "dontUseWhen": "The set is long or open-ended (`Select`, `Combobox`), more than one may be active (`ToggleGroup type=\"multiple\"`), or the segments switch page regions rather than a value (`Tabs`).",
815
- "replacesRawHtml": ["pill Tabs used as a filter", "<div> of <button> with a manual active class"],
816
- "related": ["ToggleGroup", "Tabs", "Select", "MultiFilterPill"],
830
+ "replacesRawHtml": [
831
+ "pill Tabs used as a filter",
832
+ "<div> of <button> with a manual active class"
833
+ ],
834
+ "related": [
835
+ "ToggleGroup",
836
+ "Tabs",
837
+ "Select",
838
+ "MultiFilterPill"
839
+ ],
817
840
  "since": "unreleased"
818
841
  },
819
842
  "Input": {
@@ -960,7 +983,7 @@
960
983
  },
961
984
  "DatePicker": {
962
985
  "category": "forms",
963
- "useWhen": "One date (or a year in year mode) typed with a mask or picked from a `Calendar` popover; ISO `YYYY-MM-DD` value, `onValueChange`, deterministic `en-US` display.",
986
+ "useWhen": "One date (or a year in year mode) typed with a mask or picked from a `Calendar` popover; ISO `YYYY-MM-DD` value, `onValueChange`, deterministic `en-US` display, `size`.",
964
987
  "dontUseWhen": "A range (`DateRangePicker`) or an always-visible calendar (`Calendar`).",
965
988
  "replacesRawHtml": [
966
989
  "<input type=\"date\">"
@@ -974,7 +997,7 @@
974
997
  },
975
998
  "DateRangePicker": {
976
999
  "category": "forms",
977
- "useWhen": "A from/to pair in one control; posts `${name}_from` / `${name}_to`.",
1000
+ "useWhen": "A from/to pair in one control; posts `${name}_from` / `${name}_to`; `size`.",
978
1001
  "dontUseWhen": "A single date (`DatePicker`) or two independent dates in a form (two `DatePicker`s in a `Fieldset`).",
979
1002
  "replacesRawHtml": [
980
1003
  "two <input type=\"date\">"
@@ -1098,18 +1121,24 @@
1098
1121
  "since": "1.17.0"
1099
1122
  },
1100
1123
  "QUESTION_TYPES": {
1101
- "category": "hooks/utilities",
1102
- "useWhen": "Runtime list of every questionnaire question type the DS renders — validate or switch over types from API data.",
1103
- "dontUseWhen": "Rendering a question — use `Questions` / `QuestionnairePanel`.",
1104
- "related": ["QUESTION_TYPE_CONTRACT_VERSION", "Questions"],
1105
- "since": "1.39.0"
1124
+ "category": "hooks/utilities",
1125
+ "useWhen": "Runtime list of every questionnaire question type the DS renders — validate or switch over types from API data.",
1126
+ "dontUseWhen": "Rendering a question — use `Questions` / `QuestionnairePanel`.",
1127
+ "related": [
1128
+ "QUESTION_TYPE_CONTRACT_VERSION",
1129
+ "Questions"
1130
+ ],
1131
+ "since": "1.39.0"
1106
1132
  },
1107
1133
  "QUESTION_TYPE_CONTRACT_VERSION": {
1108
- "category": "hooks/utilities",
1109
- "useWhen": "Check which version of the question-type contract the installed DS implements before trusting a stored questionnaire.",
1110
- "dontUseWhen": "Rendering a question — use `Questions` / `QuestionnairePanel`.",
1111
- "related": ["QUESTION_TYPES", "Questions"],
1112
- "since": "1.39.0"
1134
+ "category": "hooks/utilities",
1135
+ "useWhen": "Check which version of the question-type contract the installed DS implements before trusting a stored questionnaire.",
1136
+ "dontUseWhen": "Rendering a question — use `Questions` / `QuestionnairePanel`.",
1137
+ "related": [
1138
+ "QUESTION_TYPES",
1139
+ "Questions"
1140
+ ],
1141
+ "since": "1.39.0"
1113
1142
  },
1114
1143
  "MessageComposer": {
1115
1144
  "category": "forms",
@@ -1256,7 +1285,7 @@
1256
1285
  },
1257
1286
  "SearchSelect": {
1258
1287
  "category": "selection",
1259
- "useWhen": "Only in code that already uses it: the pre-Combobox searchable select with `{ id, label }` options (contract C-SEARCHSELECT).",
1288
+ "useWhen": "Only in code that already uses it: the pre-Combobox searchable select with `{ id, label }` options (contract C-SEARCHSELECT), `size` (forwarded to `Combobox`).",
1260
1289
  "dontUseWhen": "New code — `Combobox` with `Option` (deprecated, removed in 3.0; CM-08 rewrites single-mode call sites).",
1261
1290
  "related": [
1262
1291
  "Combobox",
@@ -1266,7 +1295,7 @@
1266
1295
  },
1267
1296
  "ClientSelect": {
1268
1297
  "category": "selection",
1269
- "useWhen": "Pick one client: searchable name and email rows on the `Combobox` primitive, long names truncated.",
1298
+ "useWhen": "Pick one client: searchable name and email rows on the `Combobox` primitive, long names truncated, `size` (forwarded to `Combobox`).",
1270
1299
  "dontUseWhen": "Clients fetched per keystroke (`Combobox` with async options) or any other entity (`Select`).",
1271
1300
  "related": [
1272
1301
  "Select",
@@ -1277,7 +1306,7 @@
1277
1306
  },
1278
1307
  "TeamMemberSelect": {
1279
1308
  "category": "selection",
1280
- "useWhen": "Pick an assignee: avatar and name rows on the `Select` primitive, with an unassigned option.",
1309
+ "useWhen": "Pick an assignee: avatar and name rows on the `Select` primitive, with an unassigned option, `size` (forwarded to `Select`).",
1281
1310
  "dontUseWhen": "Several assignees (`MultiSelect`) or any other entity (`Select`).",
1282
1311
  "related": [
1283
1312
  "Select",
@@ -2386,6 +2415,20 @@
2386
2415
  ],
2387
2416
  "since": "0.0.0"
2388
2417
  },
2418
+ "TableDensityToggle": {
2419
+ "category": "data display",
2420
+ "parts": [],
2421
+ "useWhen": "A table's own toolbar control for row density — pairs with `useTableDensity` and `<Table density>`. Two icon items, \"Detailed\" and \"Compact\", each with an accessible name and a tooltip.",
2422
+ "dontUseWhen": "A generic view-mode switch unrelated to table rows (ToggleGroup directly, or SegmentedControl).",
2423
+ "related": [
2424
+ "Table",
2425
+ "ToggleGroup"
2426
+ ],
2427
+ "since": "unreleased",
2428
+ "hooks": [
2429
+ "useTableDensity"
2430
+ ]
2431
+ },
2389
2432
  "DataTable": {
2390
2433
  "category": "data display",
2391
2434
  "parts": [
@@ -3335,6 +3378,30 @@
3335
3378
  ],
3336
3379
  "status": "experimental",
3337
3380
  "since": "1.38.0"
3381
+ },
3382
+ "AppSidebar": {
3383
+ "category": "shell/screens",
3384
+ "parts": [],
3385
+ "useWhen": "A data-driven app nav: sections/items configured as data instead of hand-nested SidebarSection/SidebarLink JSX. Active item is the longest-matching href; a group opens automatically when a child is active.",
3386
+ "dontUseWhen": "A bespoke nav with per-row logic beyond icon/label/badge/children (compose Sidebar's parts directly).",
3387
+ "related": [
3388
+ "AppSidebarNav",
3389
+ "Sidebar",
3390
+ "SidebarBrandSwitcher",
3391
+ "SidebarDrawer"
3392
+ ],
3393
+ "since": "unreleased"
3394
+ },
3395
+ "AppSidebarNav": {
3396
+ "category": "shell/screens",
3397
+ "parts": [],
3398
+ "useWhen": "The same `sections` config as AppSidebar, rendered without a Sidebar root — drop it inside SidebarDrawer for the mobile nav.",
3399
+ "dontUseWhen": "The desktop column (use AppSidebar itself).",
3400
+ "related": [
3401
+ "AppSidebar",
3402
+ "SidebarDrawer"
3403
+ ],
3404
+ "since": "unreleased"
3338
3405
  }
3339
3406
  },
3340
3407
  "entries": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@assure-one/design-system",
3
- "version": "1.41.2",
3
+ "version": "1.43.0",
4
4
  "description": "Assure One design system — tokens, primitives, and patterns for the Assure Suite.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,
@@ -1,58 +0,0 @@
1
- import * as React$1 from 'react';
2
- import * as react_jsx_runtime from 'react/jsx-runtime';
3
-
4
- /**
5
- * Brand scope — ambient product theming.
6
- *
7
- * The `brand` color family (bg-brand, hover:bg-brand-hover, bg-brand-bg,
8
- * border-brand-line, text-fg-on-brand, plus the accent/focus/primary
9
- * interaction tokens) follows the nearest `[data-brand]` scope and defaults to
10
- * Pro. Authors type the STATE only; the product comes from the scope. Set it
11
- * once high in the tree — ideally on the same root as the `.dark` class
12
- * (`<html>`/`<body>`) — so Radix-portalled surfaces inherit it through the DOM.
13
- *
14
- * <html data-brand="tax"> // whole shell renders teal
15
- * <div {...brandScope("audit")}> // a subtree renders blue
16
- *
17
- * For the rarer case of multiple scopes on one page WITH portalled content
18
- * (a Dialog/Popover that escapes its scoped subtree to document.body), wrap the
19
- * region in <BrandScope> / <BrandScopeProvider> and have the portalled
20
- * `*Content` re-stamp `data-brand={useBrandScope()}` on its own element.
21
- */
22
- type BrandProduct = "pro" | "audit" | "books" | "tax";
23
- /**
24
- * `data-brand` attribute object to spread on any element (mirrors
25
- * `serviceToneStyle`). This is the primary API for opting a subtree into a
26
- * product without naming the product in a utility class.
27
- */
28
- declare function brandScope(product: BrandProduct): {
29
- "data-brand": BrandProduct;
30
- };
31
- /** Every product, in suite order — for switchers and story matrices. */
32
- declare const BRAND_PRODUCTS: BrandProduct[];
33
- /** Human label for a product, for switchers and headings. */
34
- declare const brandLabel: Record<BrandProduct, string>;
35
- /**
36
- * Provides the active product to descendants so portalled surfaces can
37
- * re-stamp `data-brand` on themselves via {@link useBrandScope}. Purely a
38
- * structural carrier — the visual theming still comes from the `[data-brand]`
39
- * attribute in the DOM, not from this context.
40
- */
41
- declare function BrandScopeProvider({ product, children, }: {
42
- product: BrandProduct;
43
- children: React.ReactNode;
44
- }): react_jsx_runtime.JSX.Element;
45
- /** Read the ambient product from the nearest provider (defaults to Pro). */
46
- declare function useBrandScope(): BrandProduct;
47
- interface BrandScopeProps extends React.HTMLAttributes<HTMLDivElement> {
48
- /** The product this subtree renders as. */
49
- product: BrandProduct;
50
- }
51
- /**
52
- * Convenience wrapper that stamps `data-brand` on a `<div>` AND provides the
53
- * product via context, so a portalled descendant can re-stamp itself. Use
54
- * `brandScope()` directly when you want the attribute on your own element.
55
- */
56
- declare const BrandScope: React$1.ForwardRefExoticComponent<BrandScopeProps & React$1.RefAttributes<HTMLDivElement>>;
57
-
58
- export { BRAND_PRODUCTS as B, type BrandProduct as a, brandLabel as b, BrandScope as c, type BrandScopeProps as d, BrandScopeProvider as e, brandScope as f, useBrandScope as u };