prime-ui-kit 0.21.2 → 0.21.4

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 (171) hide show
  1. package/README.md +2 -2
  2. package/THIRD_PARTY_NOTICES +13 -0
  3. package/dist/chunks/{chunk-T7IEJSTH.js → chunk-HMLQCKRL.js} +36 -0
  4. package/dist/chunks/{chunk-7JYPFRZ3.js → chunk-PFASPQSJ.js} +393 -354
  5. package/dist/chunks/{chunk-SQGPQOUO.js → chunk-SUGCIPD7.js} +1 -1
  6. package/dist/chunks/{chunk-ME4VEAQ5.js → chunk-UNNQITFE.js} +2132 -1619
  7. package/dist/chunks/{chunk-VQ3UCVDV.js → chunk-WGXXPJDR.js} +5 -2
  8. package/dist/color-picker.js +3 -3
  9. package/dist/components/chat-list/ChatList.d.ts +4 -3
  10. package/dist/components/command-menu/CommandMenu.d.ts +1 -4
  11. package/dist/components/composer/Composer.d.ts +1 -1
  12. package/dist/components/data-table/DataTable.d.ts +9 -7
  13. package/dist/components/data-table/Footer.d.ts +7 -3
  14. package/dist/components/datepicker/DatepickerPanel.d.ts +2 -2
  15. package/dist/components/dnd/labels.d.ts +2 -0
  16. package/dist/components/field-list/FieldList.d.ts +2 -4
  17. package/dist/components/file-upload/FileUpload.d.ts +1 -9
  18. package/dist/components/index.d.ts +2 -2
  19. package/dist/components/input/Input.d.ts +1 -1
  20. package/dist/components/kanban/Kanban.d.ts +0 -2
  21. package/dist/components/list/List.d.ts +7 -1
  22. package/dist/components/login-form/LoginForm.d.ts +5 -1
  23. package/dist/components/message/Message.d.ts +5 -1
  24. package/dist/components/message/MessageParts.d.ts +7 -2
  25. package/dist/components/rich-text/RichText.d.ts +12 -4
  26. package/dist/components/select/selectContext.d.ts +0 -2
  27. package/dist/components/smart-filter/SmartFilter.d.ts +1 -5
  28. package/dist/components/sparkline/Sparkline.d.ts +50 -8
  29. package/dist/components/tag-select/TagSelect.d.ts +0 -2
  30. package/dist/components/textarea/Textarea.d.ts +2 -2
  31. package/dist/icon-set.d.ts +5 -1
  32. package/dist/icon-set.js +8 -2
  33. package/dist/icons/glyph.d.ts +12 -1
  34. package/dist/icons/glyphs/telegram.d.ts +2 -0
  35. package/dist/icons/glyphs/vk.d.ts +2 -0
  36. package/dist/icons/glyphs/whatsapp.d.ts +2 -0
  37. package/dist/icons/registry.d.ts +8 -1
  38. package/dist/index.css +1 -1
  39. package/dist/index.js +7 -3
  40. package/dist/internal/ToolRow.d.ts +3 -1
  41. package/dist/internal/autofill.d.ts +30 -0
  42. package/dist/internal/barPlan.d.ts +7 -1
  43. package/dist/internal/blockStack.d.ts +7 -0
  44. package/dist/internal/overlay/DialogParts.d.ts +8 -6
  45. package/dist/internal/richText.d.ts +32 -1
  46. package/dist/internal/textFormatting.d.ts +2 -2
  47. package/dist/layout/page/Page.d.ts +2 -1
  48. package/dist/skill/SKILL.md +3 -2
  49. package/dist/skill/api-contract.md +2 -1
  50. package/dist/skill/cheatsheet.md +1 -1
  51. package/dist/skill/checklist.md +8 -1
  52. package/dist/skill/choosing.md +76 -5
  53. package/dist/skill/components.md +2 -2
  54. package/dist/skill/composition.md +108 -20
  55. package/dist/skill/foundations.md +1 -1
  56. package/dist/skill/layouts.md +4 -4
  57. package/dist/skill/reference/components/button/examples/in-form.tsx +0 -1
  58. package/dist/skill/reference/components/card/COMPONENT.md +1 -1
  59. package/dist/skill/reference/components/card/examples/screen.tsx +9 -11
  60. package/dist/skill/reference/components/chat-list/COMPONENT.md +6 -5
  61. package/dist/skill/reference/components/chat-list/examples/structure.tsx +4 -4
  62. package/dist/skill/reference/components/command-menu/COMPONENT.md +1 -2
  63. package/dist/skill/reference/components/command-menu/examples/states.tsx +1 -1
  64. package/dist/skill/reference/components/composer/COMPONENT.md +5 -4
  65. package/dist/skill/reference/components/composer/examples/formatting.tsx +1 -1
  66. package/dist/skill/reference/components/data-table/COMPONENT.md +17 -16
  67. package/dist/skill/reference/components/data-table/examples/server.tsx +2 -1
  68. package/dist/skill/reference/components/datepicker/COMPONENT.md +2 -2
  69. package/dist/skill/reference/components/dnd/COMPONENT.md +2 -1
  70. package/dist/skill/reference/components/drawer/COMPONENT.md +9 -6
  71. package/dist/skill/reference/components/drawer/examples/screen.tsx +1 -5
  72. package/dist/skill/reference/components/drawer/examples/tab-switcher.tsx +158 -0
  73. package/dist/skill/reference/components/field-list/COMPONENT.md +7 -7
  74. package/dist/skill/reference/components/field-list/examples/limits.tsx +2 -2
  75. package/dist/skill/reference/components/file-upload/COMPONENT.md +8 -12
  76. package/dist/skill/reference/components/file-upload/examples/gallery.tsx +2 -2
  77. package/dist/skill/reference/components/file-upload/examples/in-form.tsx +2 -4
  78. package/dist/skill/reference/components/file-upload/examples/narrow.tsx +1 -0
  79. package/dist/skill/reference/components/file-upload/examples/overview.tsx +1 -5
  80. package/dist/skill/reference/components/file-upload/examples/sizes.tsx +1 -1
  81. package/dist/skill/reference/components/file-upload/examples/states.tsx +4 -5
  82. package/dist/skill/reference/components/file-upload/examples/validation.tsx +2 -7
  83. package/dist/skill/reference/components/input/COMPONENT.md +3 -0
  84. package/dist/skill/reference/components/input/examples/in-form.tsx +0 -1
  85. package/dist/skill/reference/components/input/examples/validation.tsx +1 -1
  86. package/dist/skill/reference/components/kanban/COMPONENT.md +1 -2
  87. package/dist/skill/reference/components/list/COMPONENT.md +11 -6
  88. package/dist/skill/reference/components/list/examples/reorder.tsx +30 -3
  89. package/dist/skill/reference/components/login-form/COMPONENT.md +2 -2
  90. package/dist/skill/reference/components/login-form/examples/sizes.tsx +6 -2
  91. package/dist/skill/reference/components/message/COMPONENT.md +12 -7
  92. package/dist/skill/reference/components/message/examples/status.tsx +2 -1
  93. package/dist/skill/reference/components/message/examples/text-formatting.tsx +13 -3
  94. package/dist/skill/reference/components/modal/COMPONENT.md +5 -4
  95. package/dist/skill/reference/components/rich-text/COMPONENT.md +45 -7
  96. package/dist/skill/reference/components/rich-text/examples/entities.tsx +20 -0
  97. package/dist/skill/reference/components/select/COMPONENT.md +1 -2
  98. package/dist/skill/reference/components/sheet/COMPONENT.md +5 -4
  99. package/dist/skill/reference/components/smart-filter/COMPONENT.md +3 -5
  100. package/dist/skill/reference/components/sparkline/COMPONENT.md +40 -12
  101. package/dist/skill/reference/components/sparkline/examples/lower-is-better.tsx +46 -0
  102. package/dist/skill/reference/components/sparkline/examples/own-value.tsx +41 -0
  103. package/dist/skill/reference/components/sparkline/examples/reference.tsx +2 -1
  104. package/dist/skill/reference/components/tabs/COMPONENT.md +1 -1
  105. package/dist/skill/reference/components/tabs/examples/orientation.tsx +1 -1
  106. package/dist/skill/reference/components/tag-select/COMPONENT.md +0 -2
  107. package/dist/skill/reference/components/tag-select/examples/overview.tsx +0 -1
  108. package/dist/skill/reference/components/tag-select/examples/sizes.tsx +0 -1
  109. package/dist/skill/reference/components/textarea/COMPONENT.md +6 -3
  110. package/dist/skill/reference/icon-set.ts +5 -1
  111. package/dist/skill/reference/layout/page/COMPONENT.md +13 -12
  112. package/dist/skill/reference/layout/page/examples/collapse.tsx +45 -31
  113. package/dist/skill/reference/layout/page/examples/router.tsx +47 -14
  114. package/dist/skill/ux.md +98 -4
  115. package/package.json +1 -1
  116. package/src/components/button/examples/in-form.tsx +0 -1
  117. package/src/components/card/COMPONENT.md +1 -1
  118. package/src/components/card/examples/screen.tsx +9 -11
  119. package/src/components/chat-list/COMPONENT.md +6 -5
  120. package/src/components/chat-list/examples/structure.tsx +4 -4
  121. package/src/components/command-menu/COMPONENT.md +1 -2
  122. package/src/components/command-menu/examples/states.tsx +1 -1
  123. package/src/components/composer/COMPONENT.md +5 -4
  124. package/src/components/composer/examples/formatting.tsx +1 -1
  125. package/src/components/data-table/COMPONENT.md +17 -16
  126. package/src/components/data-table/examples/server.tsx +2 -1
  127. package/src/components/datepicker/COMPONENT.md +2 -2
  128. package/src/components/dnd/COMPONENT.md +2 -1
  129. package/src/components/drawer/COMPONENT.md +9 -6
  130. package/src/components/drawer/examples/screen.tsx +1 -5
  131. package/src/components/drawer/examples/tab-switcher.tsx +158 -0
  132. package/src/components/field-list/COMPONENT.md +7 -7
  133. package/src/components/field-list/examples/limits.tsx +2 -2
  134. package/src/components/file-upload/COMPONENT.md +8 -12
  135. package/src/components/file-upload/examples/gallery.tsx +2 -2
  136. package/src/components/file-upload/examples/in-form.tsx +2 -4
  137. package/src/components/file-upload/examples/narrow.tsx +1 -0
  138. package/src/components/file-upload/examples/overview.tsx +1 -5
  139. package/src/components/file-upload/examples/sizes.tsx +1 -1
  140. package/src/components/file-upload/examples/states.tsx +4 -5
  141. package/src/components/file-upload/examples/validation.tsx +2 -7
  142. package/src/components/input/COMPONENT.md +3 -0
  143. package/src/components/input/examples/in-form.tsx +0 -1
  144. package/src/components/input/examples/validation.tsx +1 -1
  145. package/src/components/kanban/COMPONENT.md +1 -2
  146. package/src/components/list/COMPONENT.md +11 -6
  147. package/src/components/list/examples/reorder.tsx +30 -3
  148. package/src/components/login-form/COMPONENT.md +2 -2
  149. package/src/components/login-form/examples/sizes.tsx +6 -2
  150. package/src/components/message/COMPONENT.md +12 -7
  151. package/src/components/message/examples/status.tsx +2 -1
  152. package/src/components/message/examples/text-formatting.tsx +13 -3
  153. package/src/components/modal/COMPONENT.md +5 -4
  154. package/src/components/rich-text/COMPONENT.md +45 -7
  155. package/src/components/rich-text/examples/entities.tsx +20 -0
  156. package/src/components/select/COMPONENT.md +1 -2
  157. package/src/components/sheet/COMPONENT.md +5 -4
  158. package/src/components/smart-filter/COMPONENT.md +3 -5
  159. package/src/components/sparkline/COMPONENT.md +40 -12
  160. package/src/components/sparkline/examples/lower-is-better.tsx +46 -0
  161. package/src/components/sparkline/examples/own-value.tsx +41 -0
  162. package/src/components/sparkline/examples/reference.tsx +2 -1
  163. package/src/components/tabs/COMPONENT.md +1 -1
  164. package/src/components/tabs/examples/orientation.tsx +1 -1
  165. package/src/components/tag-select/COMPONENT.md +0 -2
  166. package/src/components/tag-select/examples/overview.tsx +0 -1
  167. package/src/components/tag-select/examples/sizes.tsx +0 -1
  168. package/src/components/textarea/COMPONENT.md +6 -3
  169. package/src/layout/page/COMPONENT.md +13 -12
  170. package/src/layout/page/examples/collapse.tsx +45 -31
  171. package/src/layout/page/examples/router.tsx +47 -14
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import {
4
+ AUTOFILL_OFF,
4
5
  Button,
5
6
  ColorSwatches,
6
7
  FieldActionButton,
@@ -23,11 +24,11 @@ import {
23
24
  useInheritedDisabled,
24
25
  useLabels,
25
26
  useOpenState
26
- } from "./chunk-7JYPFRZ3.js";
27
+ } from "./chunk-PFASPQSJ.js";
27
28
  import {
28
29
  cx,
29
30
  useHostTier
30
- } from "./chunk-T7IEJSTH.js";
31
+ } from "./chunk-HMLQCKRL.js";
31
32
 
32
33
  // src/components/color-field/ColorField.tsx
33
34
  import * as React3 from "react";
@@ -176,6 +177,7 @@ function ChannelField({
176
177
  /* @__PURE__ */ jsx(
177
178
  "input",
178
179
  {
180
+ ...AUTOFILL_OFF,
179
181
  ref: inputRef,
180
182
  "aria-label": labels[channel],
181
183
  className: cx(fieldInputTextClass, ColorPicker_default.channelInput),
@@ -200,6 +202,7 @@ function StripHexField() {
200
202
  children: /* @__PURE__ */ jsx(
201
203
  "input",
202
204
  {
205
+ ...AUTOFILL_OFF,
203
206
  ref: inputRef,
204
207
  "aria-label": labels.hex,
205
208
  autoCapitalize: "off",
@@ -4,9 +4,9 @@ import {
4
4
  ColorField,
5
5
  ColorPicker,
6
6
  parseColor
7
- } from "./chunks/chunk-VQ3UCVDV.js";
8
- import "./chunks/chunk-7JYPFRZ3.js";
9
- import "./chunks/chunk-T7IEJSTH.js";
7
+ } from "./chunks/chunk-WGXXPJDR.js";
8
+ import "./chunks/chunk-PFASPQSJ.js";
9
+ import "./chunks/chunk-HMLQCKRL.js";
10
10
  export {
11
11
  ColorField,
12
12
  ColorPicker,
@@ -52,14 +52,15 @@ export type ChatListLabels = {
52
52
  export declare const CHAT_LIST_LABELS: ChatListLabels;
53
53
  export type ChatListItemIconProps = Omit<React.HTMLAttributes<HTMLSpanElement>, "children"> & {
54
54
  /**
55
- * An `Avatar.Root` (with `Avatar.Status`), or after the name an `Icon` with a `label`.
55
+ * An `Avatar.Root` (with `Avatar.Status`), or after the name an icon: `<Icon name>` or a glyph of `prime-ui-kit/icons` (`<SendIcon />`), as is.
56
56
  */
57
57
  children: React.ReactNode;
58
58
  ref?: React.Ref<HTMLSpanElement>;
59
59
  };
60
60
  /**
61
61
  * The avatar of the dialog before `ChatList.ItemText`; after it, a glyph beside the name (a
62
- * verified mark, a bot). Drawn by `ChatList.Item`.
62
+ * verified mark, a bot): any kit icon, sized by the row, named by the part's `aria-label`.
63
+ * Drawn by `ChatList.Item`.
63
64
  */
64
65
  declare function ChatListItemIcon(_props: ChatListItemIconProps): React.ReactNode;
65
66
  declare namespace ChatListItemIcon {
@@ -148,7 +149,7 @@ type ChatListItemOwnProps = {
148
149
  */
149
150
  children?: React.ReactNode;
150
151
  };
151
- export type ChatListItemProps = ChatListItemOwnProps & Omit<ListItemProps, keyof ChatListItemOwnProps | "value" | "current" | "disabled">;
152
+ export type ChatListItemProps = ChatListItemOwnProps & Omit<ListItemProps, keyof ChatListItemOwnProps | "value" | "current" | "disabled" | "locked">;
152
153
  /**
153
154
  * A dialog: a `List.Item` row (a button, a link with `href`, or the consumer's element with
154
155
  * `asChild` — a router link, its children the parts) with the avatar, the name and the time on
@@ -5,8 +5,6 @@ export type CommandMenuLabels = {
5
5
  search: string;
6
6
  /** `CommandMenu.Empty`: nothing matches the query. */
7
7
  empty: string;
8
- /** Second line of `CommandMenu.Empty`; `""` hides it. */
9
- emptyHint: string;
10
8
  /** Announced while `loading` or `loadingMore`. */
11
9
  loading: string;
12
10
  /** The retry button of the load error (`onRetry`). */
@@ -220,8 +218,7 @@ export type CommandMenuEmptyProps = Omit<React.HTMLAttributes<HTMLDivElement>, "
220
218
  ref?: React.Ref<HTMLDivElement>;
221
219
  };
222
220
  /**
223
- * Shown only while nothing matches the query and nothing loads: `labels.empty` and
224
- * `labels.emptyHint`, text only. An action for the query («Создать «…»») is a `persistent`
221
+ * Shown only while nothing matches the query and nothing loads: `labels.empty`, text only. An action for the query («Создать «…»») is a `persistent`
225
222
  * `CommandMenu.Item` at the end of the list, never a child of `Empty`.
226
223
  */
227
224
  declare function CommandMenuEmpty(props: CommandMenuEmptyProps): import("react/jsx-runtime").JSX.Element | null;
@@ -146,7 +146,7 @@ export type ComposerRootProps = Omit<React.FormHTMLAttributes<HTMLFormElement>,
146
146
  */
147
147
  queue?: ComposerQueue;
148
148
  /**
149
- * Selecting text shows a floating toolbar of seven Markdown tools and enables their hotkeys; a tool wraps the selection, a second press unwraps it. `false` turns both off.
149
+ * Selecting text shows a floating toolbar of eight Markdown tools and enables their hotkeys; a tool wraps the selection, a second press unwraps it. `false` turns both off.
150
150
  */
151
151
  formatting?: boolean;
152
152
  /**
@@ -8,12 +8,10 @@ export type DataTableLabels = {
8
8
  loading: string;
9
9
  /** Default empty-state text (when `empty` is not set). */
10
10
  empty: string;
11
- /** Footer range line. */
11
+ /** Footer range line (`showRange`). */
12
12
  range: string;
13
- /** Footer status while `loadingMore`. */
13
+ /** Footer status while more rows load. */
14
14
  loadingMore: string;
15
- /** Footer hint when more rows can be revealed or loaded by scrolling. */
16
- scrollForMore: string;
17
15
  /** `aria-label` of the header «select all» checkbox. */
18
16
  selectAll: string;
19
17
  /** `aria-label` of a row checkbox; `{label}` is `getRowLabel(row)` (empty without it). */
@@ -94,7 +92,7 @@ export type DataTableProps<Row> = Omit<React.HTMLAttributes<HTMLDivElement>, "ch
94
92
  */
95
93
  source?: "client" | "server";
96
94
  /**
97
- * Total rows on the server (`source="server"`): the page count and «Показано {from}–{to} из {total}».
95
+ * Total rows on the server (`source="server"`): the page count and the range line (`showRange`).
98
96
  */
99
97
  rowCount?: number;
100
98
  /**
@@ -189,6 +187,10 @@ export type DataTableProps<Row> = Omit<React.HTMLAttributes<HTMLDivElement>, "ch
189
187
  * Page change from the pager; a sort change also returns to page 1.
190
188
  */
191
189
  onPageChange?: (page: number) => void;
190
+ /**
191
+ * A range line in the footer (`labels.range`) when the rows do not fit one page: paged with more than one page, or `paging="infinite"`.
192
+ */
193
+ showRange?: boolean;
192
194
  /**
193
195
  * Rows per page; also the first batch with `paging="infinite"` (with `source="server"` every loaded row is shown).
194
196
  */
@@ -202,7 +204,7 @@ export type DataTableProps<Row> = Omit<React.HTMLAttributes<HTMLDivElement>, "ch
202
204
  */
203
205
  hasMore?: boolean;
204
206
  /**
205
- * A server batch is loading: footer status, `aria-busy`.
207
+ * A server batch is loading: the footer shows `labels.loadingMore` with a Spinner, `aria-busy`.
206
208
  */
207
209
  loadingMore?: boolean;
208
210
  /**
@@ -322,4 +324,4 @@ export type DataTableProps<Row> = Omit<React.HTMLAttributes<HTMLDivElement>, "ch
322
324
  */
323
325
  onCollapsedGroupsChange?: (collapsedGroups: (string | number)[]) => void;
324
326
  };
325
- export declare function DataTable<Row>({ columns: allColumns, hiddenColumns, defaultHiddenColumns, onHiddenColumnsChange, columnOrder, defaultColumnOrder, onColumnOrderChange, columnsMenu, rows, source, rowCount, size: sizeProp, className, showHeader, stickyHeader, stickyFirstColumn, stickyLastColumn, getRowKey, getRowHref, onRowClick, isRowClickable, loading, empty, labels: labelsProp, rowDividers, columnDividers, sort, defaultSort, onSortChange, paging, page, defaultPage, onPageChange, pageSize, infiniteBatchSize, hasMore, loadingMore, onLoadMore, scrollHeight, fullWidth, highlightRowOnHover, highlightColumnOnHover, striped, getRowLabel, selectable, selected, defaultSelected, onSelectedChange, onReorder, reorderHandle, getRowChildren, renderExpanded, isRowExpandable, expanded, defaultExpanded, onExpandedChange, loadError, loadingRows, toolbar, toolbarChips, renderSelectionActions, getRowGroup, renderGroupHeader, stickyGroupHeaders, collapsedGroups, defaultCollapsedGroups, onCollapsedGroupsChange, ref, ...rest }: DataTableProps<Row>): import("react/jsx-runtime").JSX.Element;
327
+ export declare function DataTable<Row>({ columns: allColumns, hiddenColumns, defaultHiddenColumns, onHiddenColumnsChange, columnOrder, defaultColumnOrder, onColumnOrderChange, columnsMenu, rows, source, rowCount, size: sizeProp, className, showHeader, stickyHeader, stickyFirstColumn, stickyLastColumn, getRowKey, getRowHref, onRowClick, isRowClickable, loading, empty, labels: labelsProp, rowDividers, columnDividers, sort, defaultSort, onSortChange, paging, page, defaultPage, onPageChange, showRange, pageSize, infiniteBatchSize, hasMore, loadingMore, onLoadMore, scrollHeight, fullWidth, highlightRowOnHover, highlightColumnOnHover, striped, getRowLabel, selectable, selected, defaultSelected, onSelectedChange, onReorder, reorderHandle, getRowChildren, renderExpanded, isRowExpandable, expanded, defaultExpanded, onExpandedChange, loadError, loadingRows, toolbar, toolbarChips, renderSelectionActions, getRowGroup, renderGroupHeader, stickyGroupHeaders, collapsedGroups, defaultCollapsedGroups, onCollapsedGroupsChange, ref, ...rest }: DataTableProps<Row>): import("react/jsx-runtime").JSX.Element;
@@ -1,14 +1,18 @@
1
1
  type FooterProps = {
2
- /** Range line («Показано 1–5 из 23»), or nothing. */
2
+ /** Range line («Показано 1–5 из 23», `showRange`), or nothing. */
3
3
  range: string | null;
4
4
  pagination: {
5
5
  page: number;
6
6
  totalPages: number;
7
7
  onPageChange: (page: number) => void;
8
8
  } | null;
9
- /** Infinite-scroll status, or nothing. */
9
+ /** The status while more rows load (infinite scroll), or nothing. */
10
10
  status: string | null;
11
11
  };
12
- /** Range line, Pagination (the table's tier from context) and the infinite-scroll status under the table. */
12
+ /**
13
+ * Range line, Pagination (the table's tier from context) and the loading status of infinite scroll
14
+ * under the table. With nothing to show there is no footer; one that comes and goes (the status of
15
+ * a request) rises in and closes up in place.
16
+ */
13
17
  export declare function Footer({ range, pagination, status }: FooterProps): import("react/jsx-runtime").JSX.Element | null;
14
18
  export {};
@@ -21,8 +21,8 @@ export type DatepickerLabels = {
21
21
  time: string;
22
22
  /** Prefix of a range without a start: «до 6 окт». */
23
23
  until: string;
24
- /** Heading of the presets column. */
25
- presetsTitle: string;
24
+ /** Accessible name of the presets group. */
25
+ presetsGroup: string;
26
26
  /** Muted marker after the field label when `optional`. */
27
27
  optional: string;
28
28
  /** Read after the field name of a `required` field (its trigger is a button). */
@@ -21,6 +21,8 @@ export type DndLabels = {
21
21
  moved: string;
22
22
  /** Live region: an item was moved to a linked list with the keyboard: `{list}` is its name. */
23
23
  movedTo: string;
24
+ /** Live region: a keyboard step refused, a locked item holds the place: `{locked}` names it. */
25
+ blocked: string;
24
26
  /** Live region: a linked list refused an item moved with the keyboard. */
25
27
  refused: string;
26
28
  /** Live region: a target refused the item and said why (`canDrop` answered a string). */
@@ -23,8 +23,6 @@ export type FieldListLabels = {
23
23
  namedRow: string;
24
24
  /** Why a pinned row cannot be removed: the tooltip of its remove button, the note in its menu. */
25
25
  lockedReason: string;
26
- /** Text beside the disabled add button once the list holds `max` rows; `{max}` is the limit. */
27
- maxReached: string;
28
26
  /** Name of the totals row (`renderTotals`), shown in its first cell when that has no total. */
29
27
  totals: string;
30
28
  };
@@ -86,7 +84,7 @@ export type FieldListProps<T extends object> = Omit<FieldRootDomProps, "onChange
86
84
  */
87
85
  renderTotals?: (items: readonly T[]) => React.ReactNode;
88
86
  /**
89
- * A new empty item; with it the add button shows under the rows and focus goes to the new row's first field.
87
+ * A new empty item; with it the add button shows under the rows (until `max`) and focus goes to the new row's first field.
90
88
  */
91
89
  createItem?: () => T;
92
90
  /**
@@ -118,7 +116,7 @@ export type FieldListProps<T extends object> = Omit<FieldRootDomProps, "onChange
118
116
  */
119
117
  min?: number;
120
118
  /**
121
- * The most rows: at this count the add button is disabled with `labels.maxReached` beside it.
119
+ * The most rows: at this count the add button closes up in place and comes back once a row is removed. The list says no limit text of its own; a limit the person should know goes in `hint`.
122
120
  */
123
121
  max?: number;
124
122
  /**
@@ -40,8 +40,6 @@ export type FileUploadFile = {
40
40
  export type FileUploadLabels = {
41
41
  /** Title of the built-in drop zone body. */
42
42
  title: string;
43
- /** Description under the title (formats, size limit). An empty string hides it. */
44
- description: string;
45
43
  /** Text of the browse button: decorative in a zone, the control itself with `trigger="button"`. */
46
44
  browse: string;
47
45
  /** Muted marker after the field label when `optional`. */
@@ -52,12 +50,6 @@ export type FileUploadLabels = {
52
50
  addLabel: string;
53
51
  /** The add tile of an empty set: it spans the row. */
54
52
  empty: string;
55
- /** Second line of the empty add tile without `max`. */
56
- emptyHint: string;
57
- /** Text of the add tile when `max` is reached. */
58
- full: string;
59
- /** Counter on the add tile: `{count}`, `{max}`. */
60
- count: string;
61
53
  /** Pill of the first tile with `cover`. */
62
54
  cover: string;
63
55
  /** A file waiting for a free slot. */
@@ -313,7 +305,7 @@ export type FileUploadRootProps = FieldRootDomProps & FieldFrameProps & FieldFoc
313
305
  */
314
306
  multiple?: boolean;
315
307
  /**
316
- * Most files in the set: picked and dropped files are cut to the room left; the add tile counts `count из max` (the digits roll) and at the limit says «Лимит файлов» and takes nothing.
308
+ * Most files in the set: picked and dropped files are cut to the room left; at the limit the add tile closes up in place and comes back once a file leaves. The limit a person should know goes in `hint`.
317
309
  */
318
310
  max?: number;
319
311
  /**
@@ -115,8 +115,8 @@ export type { ProgressCircleLabels, ProgressCircleProps, } from "./progress-circ
115
115
  export { ProgressCircle } from "./progress-circle/ProgressCircle";
116
116
  export type { RadioGroupLabels, RadioGroupProps, RadioLabelProps, RadioRootProps, } from "./radio/Radio";
117
117
  export { Radio } from "./radio/Radio";
118
- export type { RichTextLabels, RichTextProps } from "./rich-text/RichText";
119
- export { RichText } from "./rich-text/RichText";
118
+ export type { FormattedText, RichTextLabels, RichTextProps, TextEntity, TextEntityType, } from "./rich-text/RichText";
119
+ export { getRichTextSource, getTextEntities, RichText } from "./rich-text/RichText";
120
120
  export type { ScrollContainerAxis, ScrollContainerEdges, ScrollContainerProps, } from "./scroll-container/ScrollContainer";
121
121
  export { ScrollContainer } from "./scroll-container/ScrollContainer";
122
122
  export type { SegmentedControlCountProps, SegmentedControlDescriptionProps, SegmentedControlIconProps, SegmentedControlItemProps, SegmentedControlLabelProps, SegmentedControlLabels, SegmentedControlRootProps, } from "./segmented-control/SegmentedControl";
@@ -151,7 +151,7 @@ export type InputFieldProps = Omit<React.InputHTMLAttributes<HTMLInputElement>,
151
151
  ref?: React.Ref<HTMLInputElement>;
152
152
  };
153
153
  /** The `<input>`; its id comes from `Input.Root` so the label, hint and error stay linked. */
154
- declare function InputField({ className, "aria-describedby": ariaDescribedBy, required, disabled: disabledProp, type, onChange, onValueChange, onFocus, onBlur, onKeyDown, onClick, onInvalid, ref, ...rest }: InputFieldProps): import("react/jsx-runtime").JSX.Element;
154
+ declare function InputField({ className, "aria-describedby": ariaDescribedBy, required, disabled: disabledProp, type, autoComplete, onChange, onValueChange, onFocus, onBlur, onKeyDown, onClick, onInvalid, ref, ...rest }: InputFieldProps): import("react/jsx-runtime").JSX.Element;
155
155
  declare namespace InputField {
156
156
  var displayName: string;
157
157
  }
@@ -46,8 +46,6 @@ export type KanbanLabels = {
46
46
  countLimit: string;
47
47
  /** Text of an empty column. */
48
48
  empty: string;
49
- /** Hint under it while cards can be dropped. */
50
- emptyHint: string;
51
49
  /** Why a full column refuses a card (spoken, and shown under the carried card): `{column}`, `{limit}`. */
52
50
  full: string;
53
51
  /** Name of the grip that moves a column: `{column}`. */
@@ -3,6 +3,8 @@ import { type ControlSize, type PaletteColor } from "../../internal/states";
3
3
  export type ListLabels = {
4
4
  /** `aria-label` of a row's drag handle (`onReorder`); `{label}` is the row's text. */
5
5
  reorderItem: string;
6
+ /** Name of the lock a `locked` row shows in the grip's place; `{label}` is the row's text. */
7
+ lockedItem: string;
6
8
  };
7
9
  export declare const LIST_LABELS: ListLabels;
8
10
  export type ListRootProps = Omit<React.HTMLAttributes<HTMLUListElement>, "children"> & {
@@ -119,6 +121,10 @@ type ListItemOwnProps = {
119
121
  * Muted and out of the Tab order: a disabled button, or `aria-disabled` and no navigation on a link.
120
122
  */
121
123
  disabled?: boolean;
124
+ /**
125
+ * With `onReorder`: the row holds its place (a system stage) and shows a lock in the grip's box; no row moves past it. The row and its `List.ItemActions` work as on any row.
126
+ */
127
+ locked?: boolean;
122
128
  /**
123
129
  * Renders the single child (a router link) as the row; its children are the content.
124
130
  */
@@ -144,7 +150,7 @@ export type ListItemProps = ListItemOwnProps & Omit<React.ComponentPropsWithoutR
144
150
  ref?: React.Ref<HTMLElement>;
145
151
  };
146
152
  /** A row of the list: an `<li>` holding a full-width button or link. */
147
- declare function ListItem({ value, current, disabled, asChild, href, className, children, onClick, type, ref, target, rel, ...rest }: ListItemProps): import("react/jsx-runtime").JSX.Element;
153
+ declare function ListItem({ value, current, disabled, locked, asChild, href, className, children, onClick, type, ref, target, rel, ...rest }: ListItemProps): import("react/jsx-runtime").JSX.Element;
148
154
  declare namespace ListItem {
149
155
  var displayName: string;
150
156
  }
@@ -124,7 +124,11 @@ export type LoginFormFormProps = {
124
124
  children?: React.ReactNode;
125
125
  ref?: React.Ref<HTMLFormElement>;
126
126
  } & React.FormHTMLAttributes<HTMLFormElement>;
127
- /** The `<form>`: fields, then the submit button, one column with field → field spacing. Native submit and `onSubmit` work as usual. */
127
+ /**
128
+ * The `<form>`: fields, then the submit button, one column with field → field spacing. Native
129
+ * submit and `onSubmit` work as usual. Autofill is the point of a sign-in form: a kit field inside
130
+ * it without an `autoComplete` token is left to the browser and the password managers.
131
+ */
128
132
  declare function LoginFormForm({ className, children, ref, ...rest }: LoginFormFormProps): import("react/jsx-runtime").JSX.Element;
129
133
  declare namespace LoginFormForm {
130
134
  var displayName: string;
@@ -69,6 +69,10 @@ export type MessageRootProps = Omit<React.HTMLAttributes<HTMLElement>, "role"> &
69
69
  * Delivery of an outgoing message: a clock, one check, two checks (accent), or a danger mark; the glyphs cross-fade from one state to the next. Named for assistive tech by `labels`.
70
70
  */
71
71
  status?: MessageStatus;
72
+ /**
73
+ * Why a `failed` message was not sent: a danger caption under the message that describes its row (`aria-describedby`). Shown only while `status` is `failed`; a retry in flight takes it away.
74
+ */
75
+ failureReason?: React.ReactNode;
72
76
  /**
73
77
  * A picture of the message outside a chat (a bot's settings): no menu, reactions, retry or row focus, `Message.Actions` inert; links and players still work.
74
78
  */
@@ -97,7 +101,7 @@ export type MessageRootProps = Omit<React.HTMLAttributes<HTMLElement>, "role"> &
97
101
  * A `preview` is the same message as a picture of itself: no menu, reactions, retry or row focus,
98
102
  * its inline keyboard inert; its content (links, players, spoilers) still works.
99
103
  */
100
- declare function MessageRoot({ value: valueProp, direction, position, time: timeProp, timeZone: timeZoneProp, formatTime, edited, status, preview, onRetry, onReactionToggle, labels: labelsProp, className, style, children, onContextMenu, onKeyDown, onPointerDown, onMouseDown, onClick, onDoubleClick, "aria-label": ariaLabel, ref, ...rest }: MessageRootProps): import("react/jsx-runtime").JSX.Element;
104
+ declare function MessageRoot({ value: valueProp, direction, position, time: timeProp, timeZone: timeZoneProp, formatTime, edited, status, failureReason, preview, onRetry, onReactionToggle, labels: labelsProp, className, style, children, onContextMenu, onKeyDown, onPointerDown, onMouseDown, onClick, onDoubleClick, "aria-label": ariaLabel, ref, ...rest }: MessageRootProps): import("react/jsx-runtime").JSX.Element;
101
105
  declare namespace MessageRoot {
102
106
  var displayName: string;
103
107
  }
@@ -1,5 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { type DropdownContentProps } from "../dropdown/Dropdown";
3
+ import type { TextEntity } from "../../internal/richText";
3
4
  import type { PaletteColor } from "../../internal/states";
4
5
  import type { MessageUser } from "./types";
5
6
  export type MessageLabels = {
@@ -96,7 +97,11 @@ export type MessageTextProps = Omit<React.HTMLAttributes<HTMLDivElement>, "child
96
97
  */
97
98
  children: React.ReactNode;
98
99
  /**
99
- * Render a string as is, without its Markdown.
100
+ * Formatted ranges of a messenger's text (`TextEntity`, see RichText): the string is then plain text — `**` in it stays text — and a range may start inside a word.
101
+ */
102
+ entities?: readonly TextEntity[];
103
+ /**
104
+ * Render a string as is, without its Markdown or `entities`.
100
105
  */
101
106
  plain?: boolean;
102
107
  ref?: React.Ref<HTMLDivElement>;
@@ -105,7 +110,7 @@ export type MessageTextProps = Omit<React.HTMLAttributes<HTMLDivElement>, "child
105
110
  * The text of a message, wrapping anywhere; the meta stands at the end of its last line (its
106
111
  * spacer closes the last line). Marks the matches of the chat's search (`Chat.Search`).
107
112
  */
108
- export declare function MessageText({ plain, className, children, ...rest }: MessageTextProps): import("react/jsx-runtime").JSX.Element;
113
+ export declare function MessageText({ entities, plain, className, children, ...rest }: MessageTextProps): import("react/jsx-runtime").JSX.Element;
109
114
  export declare namespace MessageText {
110
115
  var displayName: string;
111
116
  }
@@ -1,14 +1,21 @@
1
1
  import type * as React from "react";
2
+ import type { TextEntity } from "../../internal/richText";
2
3
  export type RichTextLabels = {
3
4
  /** The name of a masked `||spoiler||` until it is revealed. */
4
5
  spoiler: string;
5
6
  };
6
7
  export declare const RICH_TEXT_LABELS: RichTextLabels;
8
+ export type { FormattedText, TextEntity, TextEntityType, } from "../../internal/richText";
9
+ export { getRichTextSource, getTextEntities } from "../../internal/richText";
7
10
  export type RichTextProps = Omit<React.HTMLAttributes<HTMLDivElement>, "children"> & {
8
11
  /**
9
- * The source: `**bold**`, `_italic_`, `~~strike~~`, `||spoiler||`, inline and fenced code, links (`[label]` then the address in parentheses), bare URLs, `> ` quotes; line breaks are kept.
12
+ * The Markdown subset (`**`, `_`, `__`, `~~`, `||`, code, links, `> ` quotes; `\*` escapes a mark), or with `entities` the plain text they format.
10
13
  */
11
14
  children: string;
15
+ /**
16
+ * The formatted ranges of a messenger's text (Telegram, VK): `children` is then plain text, never read as Markdown, and a range may start inside a word. Bare URLs in it still link.
17
+ */
18
+ entities?: readonly TextEntity[];
12
19
  /**
13
20
  * Built-in strings, see Labels.
14
21
  */
@@ -17,7 +24,8 @@ export type RichTextProps = Omit<React.HTMLAttributes<HTMLDivElement>, "children
17
24
  };
18
25
  /**
19
26
  * Text in the chat's Markdown subset outside a message (a bot's welcome text, a template, a
20
- * comment): bold, italic, strike, spoiler, inline and fenced code, links, quotes, kept line breaks —
21
- * the same rendering as `Message.Text`, as React elements, never HTML. Takes the type of its host.
27
+ * comment): bold, italic, underline, strike, spoiler, inline and fenced code, links, quotes, kept
28
+ * line breaks — or a plain text with its `entities` — the same rendering as `Message.Text`, as
29
+ * React elements, never HTML. Takes the type of its host.
22
30
  */
23
- export declare function RichText({ children, labels: labelsProp, className, ...rest }: RichTextProps): import("react/jsx-runtime").JSX.Element;
31
+ export declare function RichText({ children, entities, labels: labelsProp, className, ...rest }: RichTextProps): import("react/jsx-runtime").JSX.Element;
@@ -6,8 +6,6 @@ export type SelectLabels = {
6
6
  search: string;
7
7
  /** Empty state: no items or nothing matches. */
8
8
  empty: string;
9
- /** Second line of the empty state while searching; `""` hides it. */
10
- emptyHint: string;
11
9
  /** Announced while `loading` or `loadingMore`. */
12
10
  loading: string;
13
11
  /** The retry button of the load error (`onRetry`). */
@@ -61,11 +61,7 @@ export type SmartFilterLabels = {
61
61
  searchText: string;
62
62
  /** Fields with no matches while typing. */
63
63
  noMatches: string;
64
- /** Footer hint. */
65
- hint: string;
66
- /** Footer counter. */
67
- count: string;
68
- /** Footer reset button. */
64
+ /** Footer reset button, shown while a filter is set. */
69
65
  reset: string;
70
66
  /** Collapsed values of a field. */
71
67
  more: string;
@@ -10,12 +10,14 @@ export type SparklinePoint = {
10
10
  export type SparklineLabels = {
11
11
  /** Spoken value of the chosen point; `{label}` and `{value}` are replaced. */
12
12
  point: string;
13
- /** The period of a `sum` / `average` headline at rest; `{first}` and `{last}` are point labels. */
13
+ /** The period of a `sum` / `average` / `value` headline at rest; `{first}` and `{last}` are point labels. */
14
14
  period: string;
15
15
  /** Shown and spoken in place of the value of a point with no data. */
16
16
  empty: string;
17
17
  /** Description of the reference line; `{value}` is replaced. */
18
18
  reference: string;
19
+ /** A change in percentage points (`changeUnit="points"`); `{value}` is the signed difference. */
20
+ points: string;
19
21
  };
20
22
  /**
21
23
  * `area`: a line over a gradient that fades to the bottom. `line`: the line alone (many trends side
@@ -24,7 +26,8 @@ export type SparklineLabels = {
24
26
  export type SparklineVariant = "area" | "line" | "bars";
25
27
  /**
26
28
  * What the change badge compares the shown point with. `previous`: the point before it.
27
- * `first`: the first point of the series (the change over the period). `none`: no badge.
29
+ * `first`: the first point of the series (the change over the period). `none`: no badge (the
30
+ * default; `compareTo` still shows the change at rest).
28
31
  */
29
32
  export type SparklineChange = "previous" | "first" | "none";
30
33
  /**
@@ -33,6 +36,16 @@ export type SparklineChange = "previous" | "first" | "none";
33
36
  * per day. `average`: the mean of the period.
34
37
  */
35
38
  export type SparklineSummary = "latest" | "sum" | "average";
39
+ /**
40
+ * Which way of the change is good. `higher`: growth is green (revenue, orders). `lower`: a fall is
41
+ * green and growth is red (response time, costs, bounce rate).
42
+ */
43
+ export type SparklineBetter = "higher" | "lower";
44
+ /**
45
+ * How the change badge measures. `percent`: the relative change. `points`: the difference of the
46
+ * values, for a share already in percent (conversion 4,1% → 4,6% is «+0,5 п. п.»).
47
+ */
48
+ export type SparklineChangeUnit = "percent" | "points";
36
49
  /**
37
50
  * `default`: the headline (title · date, value · change) over the plot. `compact`: the plot alone at
38
51
  * the height of an `xs` control, for a table cell or a list row.
@@ -45,16 +58,37 @@ type SparklineRest = {
45
58
  */
46
59
  summary?: "latest";
47
60
  /**
48
- * Index of the point at rest with `summary="latest"` (the current month): the headline returns to it; `bars` draw the other bars quieter. Not allowed with `sum` / `average`.
61
+ * Index of the point at rest with `summary="latest"` (the current month): the headline returns to it; `bars` draw the other bars quieter. Not allowed with `sum` / `average` / `value`.
49
62
  */
50
63
  highlight?: number;
64
+ /**
65
+ * The period's own value at rest, neither a sum nor a mean of the points (a median, unique clients), with the period as the date; `compareTo` is its previous period. Not with `summary` / `highlight`.
66
+ */
67
+ value?: never;
51
68
  } | {
52
69
  /**
53
70
  * What the headline shows at rest: `latest` — the latest point (or `highlight`), for a level (MRR, conversion); `sum` — the period total, for a flow (revenue per day); `average` — the period mean.
54
71
  */
55
72
  summary: "sum" | "average";
56
73
  /**
57
- * Index of the point at rest with `summary="latest"` (the current month): the headline returns to it; `bars` draw the other bars quieter. Not allowed with `sum` / `average`.
74
+ * Index of the point at rest with `summary="latest"` (the current month): the headline returns to it; `bars` draw the other bars quieter. Not allowed with `sum` / `average` / `value`.
75
+ */
76
+ highlight?: never;
77
+ /**
78
+ * The period's own value at rest, neither a sum nor a mean of the points (a median, unique clients), with the period as the date; `compareTo` is its previous period. Not with `summary` / `highlight`.
79
+ */
80
+ value?: never;
81
+ } | {
82
+ /**
83
+ * The period's own value at rest, neither a sum nor a mean of the points (a median, unique clients), with the period as the date; `compareTo` is its previous period. Not with `summary` / `highlight`.
84
+ */
85
+ value: number | null;
86
+ /**
87
+ * What the headline shows at rest: `latest` — the latest point (or `highlight`), for a level (MRR, conversion); `sum` — the period total, for a flow (revenue per day); `average` — the period mean.
88
+ */
89
+ summary?: never;
90
+ /**
91
+ * Index of the point at rest with `summary="latest"` (the current month): the headline returns to it; `bars` draw the other bars quieter. Not allowed with `sum` / `average` / `value`.
58
92
  */
59
93
  highlight?: never;
60
94
  };
@@ -80,11 +114,19 @@ export type SparklineProps = Omit<React.HTMLAttributes<HTMLDivElement>, "childre
80
114
  */
81
115
  layout?: SparklineLayout;
82
116
  /**
83
- * What the change badge of a shown point compares it with: `previous` — the point before it; `first` — the first point with a value (the change over the period); `none` — no badge.
117
+ * What the change badge of a shown point compares it with: `previous` — the point before it; `first` — the first point with a value (the change over the period); `none` — no badge (`compareTo` still badges the rest).
84
118
  */
85
119
  change?: SparklineChange;
86
120
  /**
87
- * The same summary for the previous period («прошлые 30 дней»): the badge at rest compares the headline with it. Without it a `sum` / `average` headline shows no change at rest.
121
+ * How the change badge measures: `percent` — the relative change («+12%»); `points` — the difference, for a share in percent (`labels.points`, «+0,5 п. п.»). A zero change is neutral, no arrow.
122
+ */
123
+ changeUnit?: SparklineChangeUnit;
124
+ /**
125
+ * Which way of the change is good: `higher` — growth is `success`, a fall `danger` (revenue, orders); `lower` — a fall is `success`, growth `danger` (response time, costs, bounce rate). The arrow always follows the sign.
126
+ */
127
+ better?: SparklineBetter;
128
+ /**
129
+ * The same summary (or `value`) for the previous period («прошлые 30 дней»): the badge at rest compares the headline with it. Without it a `sum` / `average` / `value` headline shows no change at rest.
88
130
  */
89
131
  compareTo?: number;
90
132
  /**
@@ -115,10 +157,10 @@ export type SparklineProps = Omit<React.HTMLAttributes<HTMLDivElement>, "childre
115
157
  };
116
158
  /**
117
159
  * A small chart with its headline: the value at rest (the latest point, `highlight`, or the period's
118
- * total or mean — `summary`), its change and its date or period. Scrubbing (pointer, touch, or the arrow keys on the chart) shows any point; the
160
+ * total or mean — `summary`, or its own `value`), its change and its date or period. Scrubbing (pointer, touch, or the arrow keys on the chart) shows any point; the
119
161
  * header follows instantly, the trend arrow turns, and leaving glides back to the point at rest.
120
162
  * The line is a monotone curve (`curve`), `null` values break it; `bars` draw signed values from a
121
163
  * zero line; a tooltip beside the scrubbed point shows its value and date. `layout="compact"` is
122
164
  * the plot alone (a table cell).
123
165
  */
124
- export declare function Sparkline({ data, label, variant, curve, layout, change, summary, highlight, compareTo, min, max, reference, loading, formatValue, labels: labelsProp, className, ref, ...rest }: SparklineProps): import("react/jsx-runtime").JSX.Element;
166
+ export declare function Sparkline({ data, label, variant, curve, layout, change, changeUnit, better, summary, value, highlight, compareTo, min, max, reference, loading, formatValue, labels: labelsProp, className, ref, ...rest }: SparklineProps): import("react/jsx-runtime").JSX.Element;
@@ -12,8 +12,6 @@ export type TagSelectOptionUpdate = {
12
12
  color?: PaletteColor;
13
13
  };
14
14
  export type TagSelectLabels = {
15
- /** Line above the list; `""` hides it. */
16
- panelHint: string;
17
15
  /** Action text before the preview of a new tag (`creatable`). */
18
16
  create: string;
19
17
  /** Accessible name of a chip's remove button; `{label}` is the tag text. */
@@ -86,7 +86,7 @@ export type TextareaRootProps = Omit<React.TextareaHTMLAttributes<HTMLTextAreaEl
86
86
  */
87
87
  onValueChange?: (value: string) => void;
88
88
  /**
89
- * Selecting text shows a floating toolbar of seven Markdown tools and enables their hotkeys; a tool wraps the selection, a second press unwraps it. Off: plain text.
89
+ * Selecting text shows a floating toolbar of eight Markdown tools and enables their hotkeys; a tool wraps the selection, a second press unwraps it. Off: plain text.
90
90
  */
91
91
  formatting?: boolean;
92
92
  /**
@@ -100,7 +100,7 @@ export type TextareaRootProps = Omit<React.TextareaHTMLAttributes<HTMLTextAreaEl
100
100
  * A multi-line field. `className` goes to the field frame, `id`, `ref` and the native attributes
101
101
  * to the `<textarea>` (it has no `Field` part).
102
102
  */
103
- declare function TextareaRoot({ id, className, size: sizeProp, invalid, focusRing, label, required, optional, hint, hintTone, error, counter, reserveSupportRow, autoResize, rows, maxRows, disabled: disabledProp, readOnly, value, onInput, onChange, onValueChange, onFocus, onBlur, onKeyDown, onSelect, onCommit, formatting, labels: labelsProp, "aria-describedby": ariaDescribedBy, children, ref, ...rest }: TextareaRootProps): import("react/jsx-runtime").JSX.Element;
103
+ declare function TextareaRoot({ id, className, size: sizeProp, invalid, focusRing, label, required, optional, hint, hintTone, error, counter, reserveSupportRow, autoResize, rows, maxRows, disabled: disabledProp, readOnly, value, autoComplete, onInput, onChange, onValueChange, onFocus, onBlur, onKeyDown, onSelect, onCommit, formatting, labels: labelsProp, "aria-describedby": ariaDescribedBy, children, ref, ...rest }: TextareaRootProps): import("react/jsx-runtime").JSX.Element;
104
104
  declare namespace TextareaRoot {
105
105
  var displayName: string;
106
106
  }