@tailor-platform/app-shell 1.18.0 → 1.19.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.
@@ -124,7 +124,7 @@ declare interface ActionItem {
124
124
  * />
125
125
  * ```
126
126
  */
127
- export declare function ActionPanel({ title, actions, className }: ActionPanelProps): JSX.Element;
127
+ export declare function ActionPanel({ title, actions, emptyContent, className }: ActionPanelProps): JSX.Element;
128
128
 
129
129
  /**
130
130
  * Props for the ActionPanel component.
@@ -134,6 +134,12 @@ export declare interface ActionPanelProps {
134
134
  title: string;
135
135
  /** List of actions to render */
136
136
  actions: ActionItem[];
137
+ /**
138
+ * Content shown with consistent padding when actions is empty. Defaults to a localized "No actions available" message.
139
+ * Strings use the default body text styling; other React nodes render unchanged.
140
+ * Pass null to hide the empty content and its additional vertical spacing while keeping the card and title.
141
+ */
142
+ emptyContent?: ReactNode;
137
143
  /** Additional CSS classes for the card container */
138
144
  className?: string;
139
145
  }
@@ -151,7 +157,7 @@ declare type ActionsProps = React_2.ComponentProps<"div">;
151
157
  export declare const ActivityCard: typeof ActivityCardStandalone & {
152
158
  Root: typeof Root_3;
153
159
  Items: typeof Items;
154
- Item: typeof Item;
160
+ Item: typeof Item_2;
155
161
  };
156
162
 
157
163
  /**
@@ -239,6 +245,44 @@ export declare interface ActivityCardRootProps<T extends ActivityCardBaseItem> {
239
245
  */
240
246
  declare function ActivityCardStandalone({ items, title, maxVisible, overflowLabel, groupBy, className, }: ActivityCardProps): JSX.Element;
241
247
 
248
+ /** A reusable aggregation over selected row values, optionally followed by a result transformation. */
249
+ export declare type Aggregation<TRow, TResult = number | null> = (context: {
250
+ rows: readonly TRow[];
251
+ }) => TResult;
252
+
253
+ /**
254
+ * Create reusable callbacks over `{ rows }`, independent of UI and column definitions.
255
+ * Selectors choose each row's value; an optional transformer receives the final
256
+ * result once, including empty or invalid results. Neither callback should mutate rows.
257
+ */
258
+ export declare const aggregations: {
259
+ /** Sum finite selected numbers. Empty input returns zero; invalid input returns null. */
260
+ sum: {
261
+ <TRow>(selector: (row: TRow) => NumericValue, transformer?: undefined): Aggregation<TRow, number | null>;
262
+ <TRow, TResult>(selector: (row: TRow) => NumericValue, transformer: (value: number | null) => TResult): Aggregation<TRow, TResult>;
263
+ };
264
+ /** Average non-nullish finite selected numbers; empty or invalid input returns null. */
265
+ avg: {
266
+ <TRow>(selector: (row: TRow) => NumericValue, transformer?: undefined): Aggregation<TRow, number | null>;
267
+ <TRow, TResult>(selector: (row: TRow) => NumericValue, transformer: (value: number | null) => TResult): Aggregation<TRow, TResult>;
268
+ };
269
+ /** Minimum finite selected number; empty or invalid input returns null. */
270
+ min: {
271
+ <TRow>(selector: (row: TRow) => NumericValue, transformer?: undefined): Aggregation<TRow, number | null>;
272
+ <TRow, TResult>(selector: (row: TRow) => NumericValue, transformer: (value: number | null) => TResult): Aggregation<TRow, TResult>;
273
+ };
274
+ /** Maximum finite selected number; empty or invalid input returns null. */
275
+ max: {
276
+ <TRow>(selector: (row: TRow) => NumericValue, transformer?: undefined): Aggregation<TRow, number | null>;
277
+ <TRow, TResult>(selector: (row: TRow) => NumericValue, transformer: (value: number | null) => TResult): Aggregation<TRow, TResult>;
278
+ };
279
+ /** Count non-nullish selected values, including zero, false, and empty strings. */
280
+ count: {
281
+ <TRow>(selector: (row: TRow) => unknown, transformer?: undefined): Aggregation<TRow, number>;
282
+ <TRow, TResult>(selector: (row: TRow) => unknown, transformer: (value: number) => TResult): Aggregation<TRow, TResult>;
283
+ };
284
+ };
285
+
242
286
  export declare const AIChat: AIChatComponent;
243
287
 
244
288
  export declare type AIChatCompletionEvent = {
@@ -1060,7 +1104,7 @@ export declare interface BadgeProps extends React_2.HTMLAttributes<HTMLDivElemen
1060
1104
  export declare type BadgeVariant = NonNullable<BadgeProps["variant"]>;
1061
1105
 
1062
1106
  export declare const badgeVariants: (props?: ({
1063
- variant?: "default" | "error" | "success" | "warning" | "neutral" | "info" | "subtle-success" | "subtle-warning" | "subtle-error" | "subtle-info" | "outline-success" | "outline-warning" | "outline-error" | "outline-info" | "outline-neutral" | null | undefined;
1107
+ variant?: "default" | "error" | "success" | "warning" | "neutral" | "info" | "subtle-success" | "subtle-warning" | "subtle-error" | "subtle-info" | "subtle-neutral" | "outline-success" | "outline-warning" | "outline-error" | "outline-info" | "outline-neutral" | null | undefined;
1064
1108
  } & ClassProp) | undefined) => string;
1065
1109
 
1066
1110
  export { Blocker }
@@ -1215,16 +1259,45 @@ declare interface CellEditBase<TRow extends Record<string, unknown>, TValue, TDr
1215
1259
  * Observes editor drafts, including incomplete input and restored drafts on
1216
1260
  * cancellation. Direct inputs emit raw strings; choices emit selected values,
1217
1261
  * not search text or highlights. Updating `data` here is outside the supported
1218
- * coordination contract. The return value is ignored.
1262
+ * coordination contract. A failed change check retains its draft and blocks
1263
+ * confirmation; pending change checks finish before `onValueCommitted` runs.
1264
+ * Cancellation notifications cannot create a new cell error after discarding
1265
+ * the draft. Pass `error: false` for unobserved callback behavior.
1219
1266
  */
1220
1267
  onValueChange?: (row: TRow, draft: TDraft) => void;
1221
1268
  /**
1222
- * Notifies a changed, confirmed editor output, compared with current `data`.
1223
- * Empty cells confirm `null`. Confirmation does not imply business validation,
1224
- * adoption, or persistence; update `data` here to adopt it. Return values are
1225
- * ignored. Output types follow the editor, not the row field's runtime type.
1269
+ * Attempts to confirm a changed editor output, compared with current `data`.
1270
+ * Empty cells confirm `null`. A normal return or fulfilled Promise completes
1271
+ * the edit; throw/rejection retains the draft and error for correction or retry.
1272
+ * Focus may leave while pending. Update `data` here to adopt a successful value;
1273
+ * DataTable does not persist or roll back consumer state. Output types follow
1274
+ * the editor, not the row field's runtime type.
1226
1275
  */
1227
1276
  onValueCommitted: (row: TRow, value: TValue | null) => void;
1277
+ /**
1278
+ * Callback failures automatically open an error popover without moving focus.
1279
+ * Only non-empty `CellEditError` messages are displayed by the standard UI;
1280
+ * other failures use localized generic feedback. Translate messages before throwing.
1281
+ * Pass `false` to disable interception and retain eager edit completion, or
1282
+ * `render` to replace the popover's body. Closing the details retains the draft
1283
+ * and error; reopen with the error icon or Alt+ArrowDown. Esc closes open details
1284
+ * first, then restores current data and clears the error. The standard popover
1285
+ * adds no reset action; custom content may include consumer-owned actions.
1286
+ */
1287
+ error?: false | {
1288
+ render: (ctx: {
1289
+ row: TRow;
1290
+ error: unknown;
1291
+ }) => ReactNode;
1292
+ };
1293
+ }
1294
+
1295
+ /**
1296
+ * A cell-editing failure whose message is safe to display to the user.
1297
+ * Translate the message before throwing; other errors use generic feedback.
1298
+ */
1299
+ export declare class CellEditError extends globalThis.Error {
1300
+ name: string;
1228
1301
  }
1229
1302
 
1230
1303
  /** Row state passed to `edit.canEdit` alongside the row. */
@@ -1673,6 +1746,17 @@ declare interface ColumnBase<TRow extends Record<string, unknown>> {
1673
1746
  * across spread-then-override patterns like `column({ ...inferred, render })`.
1674
1747
  */
1675
1748
  render?: (row: TRow) => ReactNode;
1749
+ /**
1750
+ * Sets `className`, `style`, and `title` on the data cell's `<td>`, including
1751
+ * its padding, based on the row. Return `undefined` to keep the defaults.
1752
+ * Classes are merged with the built-in classes; CSS specificity still applies.
1753
+ * An inline `style.backgroundColor` remains visible during row hover and
1754
+ * selection, including on pinned cells. Use an opaque background for pinned
1755
+ * cells to prevent content bleeding through. Column `width` and sticky
1756
+ * positioning take precedence over `style`. Content stays owned by `render`;
1757
+ * events, refs, and cell spanning are not configurable through this hook.
1758
+ */
1759
+ cellProps?: (row: TRow) => Pick<ComponentProps<"td">, "className" | "style" | "title"> | undefined;
1676
1760
  /**
1677
1761
  * Custom header renderer.
1678
1762
  *
@@ -1685,6 +1769,40 @@ declare interface ColumnBase<TRow extends Record<string, unknown>> {
1685
1769
  * still driven by `label`, `sort`, and other column metadata.
1686
1770
  */
1687
1771
  header?: (ctx: HeaderRenderContext) => ReactNode;
1772
+ /**
1773
+ * Sets `className`, `style`, and `title` on this column's header `<th>`.
1774
+ * Receives the same context as `header`; return `undefined` to keep the defaults.
1775
+ * Classes are merged with the built-in classes; column `width` and sticky
1776
+ * positioning take precedence over `style`. Use an opaque background for
1777
+ * pinned headers. Content stays owned by `header` or the default renderer;
1778
+ * sorting and context-menu behavior are unchanged. Built-in selection,
1779
+ * expansion, and action headers are not affected.
1780
+ */
1781
+ headerProps?: (ctx: HeaderRenderContext) => Pick<ComponentProps<"th">, "className" | "style" | "title"> | undefined;
1782
+ /**
1783
+ * Content for this column's cell in a sticky table footer: a static string
1784
+ * or a renderer receiving the current `data.rows` (the current page, not all
1785
+ * records or only selected rows). `type` and `typeOptions` do not apply.
1786
+ *
1787
+ * A footer row appears when any visible column defines a footer, including
1788
+ * an empty string. Columns without one leave a blank cell; hidden columns'
1789
+ * callbacks are not called.
1790
+ * Loading keeps the footer row with skeletons without calling renderers.
1791
+ * Hidden during errors; loaded empty data receives `rows: []`.
1792
+ * Separate from `DataTable.Footer`, the pagination / bulk-action container.
1793
+ */
1794
+ footer?: string | ((ctx: FooterRenderContext<TRow>) => ReactNode);
1795
+ /**
1796
+ * Sets `className`, `style`, and `title` on this column's footer `<td>`.
1797
+ * Receives the same context as `footer`; return `undefined` to keep the defaults.
1798
+ * Classes are merged with the built-in classes; column `width` and sticky
1799
+ * positioning take precedence over `style`. Use an opaque background for
1800
+ * pinned footer cells. Content stays owned by `footer`; events, refs, and
1801
+ * cell spanning are not configurable through this hook.
1802
+ * Does not create a footer row by itself. Not called while loading, on errors,
1803
+ * or for hidden columns. Built-in utility footer cells are not affected.
1804
+ */
1805
+ footerProps?: (ctx: FooterRenderContext<TRow>) => Pick<ComponentProps<"td">, "className" | "style" | "title"> | undefined;
1688
1806
  /**
1689
1807
  * Stable identifier used for column visibility toggling, persisted layout
1690
1808
  * state, raw-value fallback (`row[col.id]`), and as the React key. Falls
@@ -2359,11 +2477,15 @@ export declare type ContextData = AppShellRegister extends {
2359
2477
  } ? T : Record<string, unknown>;
2360
2478
 
2361
2479
  /**
2362
- * A styled input control for the field.
2480
+ * A styled text input for the field.
2363
2481
  *
2364
- * Can be omitted when using another Base UI-backed AppShell input component
2365
- * (e.g. Select, Combobox, Autocomplete) as a sibling — those components
2366
- * register themselves with the Field context automatically.
2482
+ * Use it for plain text-like inputs, or pass a native element to `render`
2483
+ * (e.g. `render={<textarea />}`). `Select`, `Combobox`, `Autocomplete`,
2484
+ * `Checkbox`, `Textarea`, `DateField`, `DatePicker` and `DateRangePicker` go
2485
+ * directly under `Field.Root` instead: each draws its own frame and registers
2486
+ * with the Field context itself. Passing one to `render` draws a second frame
2487
+ * and logs a warning. `Input` does not connect to `Field.Root` — use
2488
+ * `Field.Control` in its place inside a field.
2367
2489
  */
2368
2490
  declare function Control({ className, ...props }: React_2.ComponentProps<typeof Field_2.Control>): JSX.Element;
2369
2491
 
@@ -2684,7 +2806,8 @@ export declare const DataTable: {
2684
2806
  /** Built-in column visibility, ordering, and pinning controls. */
2685
2807
  readonly ColumnSettings: typeof DataTableColumnSettings;
2686
2808
  /**
2687
- * Renders `<table>` with built-in `Headers` and `Body`.
2809
+ * Renders `<table>` with built-in headers, body, and a sticky footer row
2810
+ * when a visible column defines `footer`.
2688
2811
  * Place inside `DataTable.Root`.
2689
2812
  */
2690
2813
  readonly Table: typeof DataTableTable;
@@ -3706,6 +3829,23 @@ declare type DynamicLocales<Def extends Record<string, LabelValue>> = {
3706
3829
  [locale: string]: Partial<LabelDefinition<Def>> | undefined;
3707
3830
  };
3708
3831
 
3832
+ /**
3833
+ * The role each element component applies when no `variant` is given. They
3834
+ * follow `defaultTagNames`: body roles render `p`, label roles render `span`.
3835
+ * `div` is a block element like `p`, so it gets the default role of `Text`.
3836
+ */
3837
+ declare const elementDefaultVariants: {
3838
+ readonly h1: "heading-lg";
3839
+ readonly h2: "heading-md";
3840
+ readonly h3: "heading-sm";
3841
+ readonly h4: "heading-sm";
3842
+ readonly h5: "heading-sm";
3843
+ readonly h6: "heading-sm";
3844
+ readonly p: "body-md";
3845
+ readonly span: "label-md";
3846
+ readonly div: "body-md";
3847
+ };
3848
+
3709
3849
  /**
3710
3850
  * Behavior when a field value is empty/null/undefined
3711
3851
  */
@@ -4229,6 +4369,12 @@ declare namespace Footer_3 {
4229
4369
  var displayName: string;
4230
4370
  }
4231
4371
 
4372
+ /** Context passed to custom column `footer` renderers and `footerProps` callbacks. */
4373
+ export declare interface FooterRenderContext<TRow extends Record<string, unknown>> {
4374
+ /** Current `data.rows` (the current page, not all records or only selected rows). */
4375
+ rows: readonly TRow[];
4376
+ }
4377
+
4232
4378
  /**
4233
4379
  * A form element with consolidated error handling and validation.
4234
4380
  *
@@ -4553,17 +4699,20 @@ export declare interface GridProps extends React_2.ComponentProps<"div"> {
4553
4699
  justify?: "start" | "center" | "end" | "between" | "around" | "evenly";
4554
4700
  }
4555
4701
 
4702
+ /** An expandable group with optional separation of its heading action and expand control. */
4703
+ declare function Group({ title, icon, render, isActive, onClick, expandOnClick, defaultOpen, children, ...props }: GroupProps): JSX.Element;
4704
+
4556
4705
  /** Groups related menu items with the corresponding label. */
4557
- declare function Group({ ...props }: React_2.ComponentProps<typeof Menu_2.Group>): JSX.Element;
4706
+ declare function Group_2({ ...props }: React_2.ComponentProps<typeof Menu_2.Group>): JSX.Element;
4558
4707
 
4559
- declare namespace Group {
4708
+ declare namespace Group_2 {
4560
4709
  var displayName: string;
4561
4710
  }
4562
4711
 
4563
4712
  /** A related group of controls within a toolbar row. */
4564
- declare function Group_2({ className, ...props }: ToolbarGroupProps): JSX.Element;
4713
+ declare function Group_3({ className, ...props }: ToolbarGroupProps): JSX.Element;
4565
4714
 
4566
- declare namespace Group_2 {
4715
+ declare namespace Group_3 {
4567
4716
  var displayName: string;
4568
4717
  }
4569
4718
 
@@ -4574,6 +4723,23 @@ declare namespace GroupLabel {
4574
4723
  var displayName: string;
4575
4724
  }
4576
4725
 
4726
+ declare type GroupProps = Omit<React_2.ComponentProps<"li">, "title" | "onClick"> & {
4727
+ /** Group label with meaningful accessible text; do not nest interactive elements. */
4728
+ title: React_2.ReactNode;
4729
+ icon?: React_2.ReactNode;
4730
+ /** Replaces the main heading operation without changing expansion behavior. */
4731
+ render?: React_2.ReactElement;
4732
+ isActive?: boolean;
4733
+ /** Runs only for the heading operation, not children or a separate expand button. */
4734
+ onClick?: React_2.MouseEventHandler<HTMLButtonElement>;
4735
+ /** Whether clicking the heading toggles the child list; false requires an operation. @default true */
4736
+ expandOnClick?: boolean;
4737
+ /** Whether the child list starts expanded. @default true */
4738
+ defaultOpen?: boolean;
4739
+ } & ({
4740
+ expandOnClick?: true;
4741
+ } | RequiredOperation);
4742
+
4577
4743
  /**
4578
4744
  * Guard function type.
4579
4745
  * Guards are executed in order and stop on the first non-pass result.
@@ -4712,7 +4878,7 @@ declare type HeaderProps_2 = {
4712
4878
  };
4713
4879
 
4714
4880
  /**
4715
- * Context passed to custom `header` renderers.
4881
+ * Context passed to custom `header` renderers and `headerProps` callbacks.
4716
4882
  */
4717
4883
  export declare type HeaderRenderContext = NonSortableHeaderRenderContext | SortableHeaderRenderContext;
4718
4884
 
@@ -4806,16 +4972,19 @@ declare namespace Interval {
4806
4972
  */
4807
4973
  declare type IsEmptyObject<T> = keyof T extends never ? true : false;
4808
4974
 
4809
- declare function Item({ indicator, children, className }: ActivityCardItemProps): JSX.Element;
4975
+ /** A compact link or action row. No AppShell, router, or Sidebar provider is required. */
4976
+ declare function Item({ icon, children, disabled, render, tabIndex, className, ...props }: ItemProps): JSX.Element;
4977
+
4978
+ declare function Item_2({ indicator, children, className }: ActivityCardItemProps): JSX.Element;
4810
4979
 
4811
- declare namespace Item {
4980
+ declare namespace Item_2 {
4812
4981
  var displayName: string;
4813
4982
  }
4814
4983
 
4815
4984
  /** An individual interactive item in the menu. */
4816
- declare function Item_2({ className, ...props }: React_2.ComponentProps<typeof Menu_2.Item>): JSX.Element;
4985
+ declare function Item_3({ className, ...props }: React_2.ComponentProps<typeof Menu_2.Item>): JSX.Element;
4817
4986
 
4818
- declare namespace Item_2 {
4987
+ declare namespace Item_3 {
4819
4988
  var displayName: string;
4820
4989
  }
4821
4990
 
@@ -4831,6 +5000,24 @@ export declare interface ItemGroup<T> {
4831
5000
  items: T[];
4832
5001
  }
4833
5002
 
5003
+ /** Compact icon-and-label lists with links, actions, groups, sections, and separators. */
5004
+ export declare const ItemList: {
5005
+ Root: typeof ListRoot;
5006
+ Item: typeof Item;
5007
+ Group: typeof Group;
5008
+ Section: typeof Section;
5009
+ Separator: typeof Separator;
5010
+ };
5011
+
5012
+ declare type ItemProps = React_2.ComponentProps<"button"> & {
5013
+ /** Optional decorative leading icon. */
5014
+ icon?: React_2.ReactNode;
5015
+ /** Visual emphasis only; aria-current="page" also supplies active styling. */
5016
+ isActive?: boolean;
5017
+ /** Replaces the inner button, not the containing list item. */
5018
+ render?: React_2.ReactElement;
5019
+ } & RequiredOperation;
5020
+
4834
5021
  declare function Items<T extends ActivityCardBaseItem>({ children }: ActivityCardItemsProps<T>): JSX.Element;
4835
5022
 
4836
5023
  declare namespace Items {
@@ -5013,6 +5200,8 @@ declare namespace List {
5013
5200
  var displayName: string;
5014
5201
  }
5015
5202
 
5203
+ declare function ListRoot({ className, ...props }: React_2.ComponentProps<"ul">): JSX.Element;
5204
+
5016
5205
  declare type LoaderHandler = (args: LoaderFunctionArgs) => Promise<unknown> | unknown;
5017
5206
 
5018
5207
  declare type LocalizedString = string | ((locale: string) => string);
@@ -5038,14 +5227,14 @@ export declare const Menu: {
5038
5227
  Root: typeof Root_10;
5039
5228
  Trigger: typeof Trigger_3;
5040
5229
  Content: typeof Content_4;
5041
- Item: typeof Item_2;
5230
+ Item: typeof Item_3;
5042
5231
  LinkItem: typeof LinkItem;
5043
5232
  CheckboxItem: typeof CheckboxItem;
5044
5233
  CheckboxItemIndicator: typeof CheckboxItemIndicator;
5045
5234
  RadioItem: typeof RadioItem;
5046
5235
  RadioItemIndicator: typeof RadioItemIndicator;
5047
5236
  RadioGroup: typeof RadioGroup;
5048
- Group: typeof Group;
5237
+ Group: typeof Group_2;
5049
5238
  GroupLabel: typeof GroupLabel;
5050
5239
  Separator: typeof MenuSeparator;
5051
5240
  SubmenuRoot: typeof SubmenuRoot;
@@ -5264,6 +5453,8 @@ declare type NumberRangeSection<TField extends string = string> = FieldSectionBa
5264
5453
  unit?: ReactNode;
5265
5454
  };
5266
5455
 
5456
+ declare type NumericValue = number | null | undefined;
5457
+
5267
5458
  export declare type OpenCommandPaletteOptions = {
5268
5459
  /** Optional initial text to prefill into the palette input. */
5269
5460
  search?: string;
@@ -5597,6 +5788,12 @@ declare type ReasoningTriggerProps = Omit<ComponentProps<typeof DisclosureTrigge
5597
5788
  */
5598
5789
  export declare const redirectTo: (to: string) => GuardResult;
5599
5790
 
5791
+ declare type RequiredOperation = {
5792
+ onClick: React_2.MouseEventHandler<HTMLButtonElement>;
5793
+ } | {
5794
+ render: React_2.ReactElement;
5795
+ };
5796
+
5600
5797
  /** Color theme after resolving `system` to a concrete value. */
5601
5798
  export declare type ResolvedColorTheme = "light" | "dark";
5602
5799
 
@@ -6157,6 +6354,9 @@ export declare type SearchSource = {
6157
6354
  }) => Promise<CommandPaletteSearchResult[]>;
6158
6355
  };
6159
6356
 
6357
+ /** A static heading and a flat list, without group indentation or an expand control. */
6358
+ declare function Section({ title, children, className, ...props }: SectionProps): JSX.Element;
6359
+
6160
6360
  declare type SectionBase = {
6161
6361
  /** Stable and unique within the rail. Keys the layout and a11y ids. */
6162
6362
  id: string;
@@ -6172,6 +6372,10 @@ declare type SectionBase = {
6172
6372
  defaultCollapsed?: boolean;
6173
6373
  };
6174
6374
 
6375
+ declare type SectionProps = Omit<React_2.ComponentProps<"li">, "title"> & {
6376
+ title: string;
6377
+ };
6378
+
6175
6379
  /** Every section, in the user's layout. Scrolls; the header stays put. */
6176
6380
  declare function Sections({ className }: SectionsProps): JSX.Element;
6177
6381
 
@@ -6462,10 +6666,13 @@ declare namespace SelectValue {
6462
6666
  var displayName: string;
6463
6667
  }
6464
6668
 
6669
+ /** A decorative divider that remains a valid child of a list. */
6670
+ declare function Separator({ className, ...props }: Omit<React_2.ComponentProps<"li">, "children">): JSX.Element;
6671
+
6465
6672
  /** A vertical separator for groups within a horizontal toolbar row. */
6466
- declare function Separator({ className, ...props }: ToolbarSeparatorProps): JSX.Element;
6673
+ declare function Separator_2({ className, ...props }: ToolbarSeparatorProps): JSX.Element;
6467
6674
 
6468
- declare namespace Separator {
6675
+ declare namespace Separator_2 {
6469
6676
  var displayName: string;
6470
6677
  }
6471
6678
 
@@ -7279,16 +7486,22 @@ declare type TabsVariant = "default" | "line" | "capsule";
7279
7486
  * Text with a typography role. The role sets the size, line height, weight,
7280
7487
  * and letter spacing. It does not set the color or choose the heading level.
7281
7488
  *
7489
+ * `Text.h1` to `Text.h6`, `Text.p`, `Text.span`, and `Text.div` always render
7490
+ * their named element, with a default role for that element. They take
7491
+ * `variant`, the element's own attributes, and a ref, but not `render`.
7492
+ *
7282
7493
  * @example
7283
7494
  * ```tsx
7284
7495
  * import { Text } from "@tailor-platform/app-shell";
7285
7496
  *
7286
- * <Text variant="heading-md" render={<h3 />}>Line items</Text>
7287
- * <Text variant="body-md" className="text-muted-foreground">Orders sent this month.</Text>
7288
- * <Text variant="label-md" className="tabular-nums">1,240</Text>
7497
+ * <Text.h1>Purchase orders</Text.h1>
7498
+ * <Text.h3 variant="heading-md">Line items</Text.h3>
7499
+ * <Text.p className="text-muted-foreground">Orders sent this month.</Text.p>
7500
+ * <Text.span className="tabular-nums">1,240</Text.span>
7501
+ * <Text variant="label-md" render={<CustomLabel />}>Quantity</Text>
7289
7502
  * ```
7290
7503
  */
7291
- declare function Text_2({ className, variant, render, children, ref, ...props }: TextProps): React_2.ReactElement<unknown, string | React_2.JSXElementConstructor<any>>;
7504
+ declare const Text_2: TextComponent;
7292
7505
  export { Text_2 as Text }
7293
7506
 
7294
7507
  /**
@@ -7368,13 +7581,34 @@ export declare interface TextCellEditOptions<TRow extends Record<string, unknown
7368
7581
  options?: readonly SelectOption[];
7369
7582
  }
7370
7583
 
7584
+ /**
7585
+ * Keep the exported static API type explicit instead of relying on
7586
+ * `Object.assign(...)` inference, as `Layout` and `Autocomplete` do.
7587
+ */
7588
+ declare type TextComponent = typeof TextRoot & {
7589
+ [T in TextTagName]: TextElementComponent<T>;
7590
+ };
7591
+
7592
+ declare type TextElementComponent<T extends TextTagName> = {
7593
+ (props: TextElementProps<T>): React_2.JSX.Element;
7594
+ displayName?: string;
7595
+ };
7596
+
7597
+ declare type TextElementProps<T extends TextTagName> = React_2.ComponentProps<T> & VariantProps<typeof textVariants>;
7598
+
7371
7599
  export declare type TextProps = React_2.HTMLAttributes<HTMLElement> & VariantProps<typeof textVariants> & {
7372
7600
  /** Ref to the rendered element. */
7373
7601
  ref?: React_2.Ref<HTMLElement>;
7374
- /** Custom element to render as (Base UI render prop). Use it to set the heading level, for example `render={<h3 />}`. */
7602
+ /** Custom element to render as (Base UI render prop). Use it to compose with another component. For a plain HTML element, use `Text.h1` to `Text.h6`, `Text.p`, `Text.span`, or `Text.div`. */
7375
7603
  render?: React_2.ReactElement;
7376
7604
  };
7377
7605
 
7606
+ declare function TextRoot({ className, variant, render, children, ref, ...props }: TextProps): React_2.ReactElement<unknown, string | React_2.JSXElementConstructor<any>>;
7607
+
7608
+ declare namespace TextRoot {
7609
+ var displayName: string;
7610
+ }
7611
+
7378
7612
  /** Free text with one fixed operator. */
7379
7613
  declare type TextSection<TField extends string = string> = FieldSectionBase<TField> & {
7380
7614
  control: "text";
@@ -7386,6 +7620,8 @@ declare type TextSection<TField extends string = string> = FieldSectionBase<TFie
7386
7620
  minLength?: number;
7387
7621
  };
7388
7622
 
7623
+ declare type TextTagName = keyof typeof elementDefaultVariants;
7624
+
7389
7625
  declare const textVariants: (props?: ({
7390
7626
  variant?: "heading-lg" | "heading-md" | "heading-sm" | "body-md" | "body-sm" | "label-md" | "label-sm" | "code-sm" | "body-md-relaxed" | "body-sm-relaxed" | null | undefined;
7391
7627
  } & ClassProp) | undefined) => string;
@@ -7796,8 +8032,8 @@ declare function Tool({ className, children, ...props }: ToolProps): JSX.Element
7796
8032
  export declare const Toolbar: {
7797
8033
  Root: typeof Root_13;
7798
8034
  Row: typeof Row_2;
7799
- Group: typeof Group_2;
7800
- Separator: typeof Separator;
8035
+ Group: typeof Group_3;
8036
+ Separator: typeof Separator_2;
7801
8037
  };
7802
8038
 
7803
8039
  declare type ToolbarGroupProps = React_2.ComponentProps<"div">;
@@ -9212,37 +9448,37 @@ declare namespace Root {
9212
9448
  }
9213
9449
 
9214
9450
 
9215
- declare namespace Viewport {
9451
+ declare namespace Header {
9216
9452
  var displayName: string;
9217
9453
  }
9218
9454
 
9219
9455
 
9220
- declare namespace Row {
9456
+ declare namespace Body {
9221
9457
  var displayName: string;
9222
9458
  }
9223
9459
 
9224
9460
 
9225
- declare namespace Interval {
9461
+ declare namespace Footer {
9226
9462
  var displayName: string;
9227
9463
  }
9228
9464
 
9229
9465
 
9230
- declare namespace TimelineLink {
9466
+ declare namespace Row {
9231
9467
  var displayName: string;
9232
9468
  }
9233
9469
 
9234
9470
 
9235
- declare namespace Root {
9471
+ declare namespace Head {
9236
9472
  var displayName: string;
9237
9473
  }
9238
9474
 
9239
9475
 
9240
- declare namespace Image {
9476
+ declare namespace Cell {
9241
9477
  var displayName: string;
9242
9478
  }
9243
9479
 
9244
9480
 
9245
- declare namespace Fallback {
9481
+ declare namespace Caption {
9246
9482
  var displayName: string;
9247
9483
  }
9248
9484
 
@@ -9262,7 +9498,7 @@ declare namespace Description {
9262
9498
  }
9263
9499
 
9264
9500
 
9265
- declare namespace Provider {
9501
+ declare namespace TextRoot {
9266
9502
  var displayName: string;
9267
9503
  }
9268
9504
 
@@ -9272,82 +9508,67 @@ declare namespace Root {
9272
9508
  }
9273
9509
 
9274
9510
 
9275
- declare namespace Header {
9276
- var displayName: string;
9277
- }
9278
-
9279
-
9280
- declare namespace ClearAll {
9281
- var displayName: string;
9282
- }
9283
-
9284
-
9285
- declare namespace Sections {
9286
- var displayName: string;
9287
- }
9288
-
9289
-
9290
- declare namespace Trigger {
9511
+ declare namespace Image {
9291
9512
  var displayName: string;
9292
9513
  }
9293
9514
 
9294
9515
 
9295
- declare namespace Settings {
9516
+ declare namespace Fallback {
9296
9517
  var displayName: string;
9297
9518
  }
9298
9519
 
9299
9520
 
9300
- declare namespace Root {
9521
+ declare namespace SelectRoot {
9301
9522
  var displayName: string;
9302
9523
  }
9303
9524
 
9304
9525
 
9305
- declare namespace Header {
9526
+ declare namespace SelectTrigger {
9306
9527
  var displayName: string;
9307
9528
  }
9308
9529
 
9309
9530
 
9310
- declare namespace Content {
9531
+ declare namespace SelectValue {
9311
9532
  var displayName: string;
9312
9533
  }
9313
9534
 
9314
9535
 
9315
- declare namespace Root {
9536
+ declare namespace SelectContent {
9316
9537
  var displayName: string;
9317
9538
  }
9318
9539
 
9319
9540
 
9320
- declare namespace Header {
9541
+ declare namespace SelectItem {
9321
9542
  var displayName: string;
9322
9543
  }
9323
9544
 
9324
9545
 
9325
- declare namespace Body {
9546
+ declare namespace SelectGroup {
9326
9547
  var displayName: string;
9327
9548
  }
9328
9549
 
9329
9550
 
9330
- declare namespace Footer {
9551
+ declare namespace SelectGroupLabel {
9331
9552
  var displayName: string;
9332
9553
  }
9333
9554
 
9334
9555
 
9335
- declare namespace Row {
9556
+ declare namespace SelectSeparator {
9336
9557
  var displayName: string;
9337
9558
  }
9338
9559
 
9339
9560
 
9340
- declare namespace Head {
9561
+ declare namespace Root {
9341
9562
  var displayName: string;
9342
9563
  }
9343
9564
 
9344
9565
 
9345
- declare namespace Cell {
9566
+ declare namespace Header {
9346
9567
  var displayName: string;
9347
9568
  }
9348
9569
 
9349
9570
 
9350
- declare namespace Caption {
9571
+ declare namespace Content {
9351
9572
  var displayName: string;
9352
9573
  }
9353
9574
 
@@ -9587,52 +9808,47 @@ declare namespace Separator {
9587
9808
  }
9588
9809
 
9589
9810
 
9590
- declare namespace SelectRoot {
9591
- var displayName: string;
9592
- }
9593
-
9594
-
9595
- declare namespace SelectTrigger {
9811
+ declare namespace Provider {
9596
9812
  var displayName: string;
9597
9813
  }
9598
9814
 
9599
9815
 
9600
- declare namespace SelectValue {
9816
+ declare namespace Root {
9601
9817
  var displayName: string;
9602
9818
  }
9603
9819
 
9604
9820
 
9605
- declare namespace SelectContent {
9821
+ declare namespace Header {
9606
9822
  var displayName: string;
9607
9823
  }
9608
9824
 
9609
9825
 
9610
- declare namespace SelectItem {
9826
+ declare namespace ClearAll {
9611
9827
  var displayName: string;
9612
9828
  }
9613
9829
 
9614
9830
 
9615
- declare namespace SelectGroup {
9831
+ declare namespace Sections {
9616
9832
  var displayName: string;
9617
9833
  }
9618
9834
 
9619
9835
 
9620
- declare namespace SelectGroupLabel {
9836
+ declare namespace Provider {
9621
9837
  var displayName: string;
9622
9838
  }
9623
9839
 
9624
9840
 
9625
- declare namespace SelectSeparator {
9841
+ declare namespace Root {
9626
9842
  var displayName: string;
9627
9843
  }
9628
9844
 
9629
9845
 
9630
- declare namespace Provider {
9846
+ declare namespace Trigger {
9631
9847
  var displayName: string;
9632
9848
  }
9633
9849
 
9634
9850
 
9635
- declare namespace Root {
9851
+ declare namespace Content {
9636
9852
  var displayName: string;
9637
9853
  }
9638
9854
 
@@ -9642,7 +9858,7 @@ declare namespace Trigger {
9642
9858
  }
9643
9859
 
9644
9860
 
9645
- declare namespace Content {
9861
+ declare namespace Settings {
9646
9862
  var displayName: string;
9647
9863
  }
9648
9864
 
@@ -9732,6 +9948,16 @@ declare namespace ComboboxCollection {
9732
9948
  }
9733
9949
 
9734
9950
 
9951
+ declare namespace AutocompleteStandalone {
9952
+ var displayName: string;
9953
+ }
9954
+
9955
+
9956
+ declare namespace AutocompleteAsyncStandalone {
9957
+ var displayName: string;
9958
+ }
9959
+
9960
+
9735
9961
  declare namespace AutocompleteRoot {
9736
9962
  var displayName: string;
9737
9963
  }
@@ -9802,27 +10028,42 @@ declare namespace AutocompleteStatus {
9802
10028
  }
9803
10029
 
9804
10030
 
9805
- declare namespace AutocompleteStandalone {
10031
+ declare namespace DataTableRoot {
9806
10032
  var displayName: string;
9807
10033
  }
9808
10034
 
9809
10035
 
9810
- declare namespace AutocompleteAsyncStandalone {
10036
+ declare namespace DataTableTable {
9811
10037
  var displayName: string;
9812
10038
  }
9813
10039
 
9814
10040
 
9815
- declare namespace DataTableRoot {
10041
+ declare namespace DataTableFooter {
9816
10042
  var displayName: string;
9817
10043
  }
9818
10044
 
9819
10045
 
9820
- declare namespace DataTableTable {
10046
+ declare namespace Root {
9821
10047
  var displayName: string;
9822
10048
  }
9823
10049
 
9824
10050
 
9825
- declare namespace DataTableFooter {
10051
+ declare namespace Viewport {
10052
+ var displayName: string;
10053
+ }
10054
+
10055
+
10056
+ declare namespace Row {
10057
+ var displayName: string;
10058
+ }
10059
+
10060
+
10061
+ declare namespace Interval {
10062
+ var displayName: string;
10063
+ }
10064
+
10065
+
10066
+ declare namespace TimelineLink {
9826
10067
  var displayName: string;
9827
10068
  }
9828
10069