@nxgt/material 3.88.1 → 3.90.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 (132) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +8 -5
  3. package/dist/{alert-dialog-CEGs7LMN.js → alert-dialog-BFk4ye-3.js} +1 -1
  4. package/dist/{async-slice-CR0M95Jq.js → async-slice-gGyfyUw2.js} +1 -1
  5. package/dist/{button-DuTNpo28.js → button-C5OEq9bi.js} +1 -1
  6. package/dist/{calculator-DsGk_fCw.js → calculator-Dg_L6d3R.js} +16 -16
  7. package/dist/calculator-field.js +6 -6
  8. package/dist/{calculator-segment-DMFptsDf.js → calculator-segment-CvAaDqKf.js} +1 -1
  9. package/dist/calculator.js +1 -1
  10. package/dist/charts.js +3 -3
  11. package/dist/{chip-C-RAjar5.js → chip-DOxFA4BI.js} +2 -2
  12. package/dist/{code-editor-DApeIOZ3.js → code-editor-tiAjhXW-.js} +4 -4
  13. package/dist/code-editor.js +4 -4
  14. package/dist/{code-language-items-CGtYfc1l.js → code-language-items-CcdzQvLT.js} +2 -2
  15. package/dist/{components-DiEY0nrG.js → components-HQy9UW9D.js} +19870 -19548
  16. package/dist/components.js +38 -37
  17. package/dist/{conversion-variant-DfQiOwYC.js → conversion-variant-4gCdFWV-.js} +3 -3
  18. package/dist/currency-field-CIqe7Wg4.js +289 -0
  19. package/dist/{dialog-Bul68q8u.js → dialog-d6Kdf5wc.js} +3 -3
  20. package/dist/dnd.js +1 -1
  21. package/dist/{dropdown-menu-xUUE5X6T.js → dropdown-menu-DO5kUvof.js} +1 -1
  22. package/dist/editor.js +139 -139
  23. package/dist/{empty-state-D7ofGDU_.js → empty-state-DQnICuun.js} +1 -1
  24. package/dist/{financial-variant-CYgRZzKT.js → financial-variant-D80C1hVD.js} +14 -14
  25. package/dist/{hooks-CpvvZCs7.js → hooks-C-yLDF39.js} +2 -2
  26. package/dist/hooks.js +2 -2
  27. package/dist/{hover-card-CZLFQwZv.js → hover-card-DU3TAME4.js} +1 -1
  28. package/dist/i18n.js +3 -3
  29. package/dist/{icon-badge-0Xo9q7Ey.js → icon-badge-BGczZ4Hc.js} +1 -1
  30. package/dist/{icon-button-DE1EcO2-.js → icon-button-D0xjBCst.js} +1 -1
  31. package/dist/input-group-CSlXMFxu.js +70 -0
  32. package/dist/lib/components/ui/actions/back-link/back-link.d.ts +10 -2
  33. package/dist/lib/components/ui/collections/data-grid/grid-cell-tone.d.ts +12 -0
  34. package/dist/lib/components/ui/collections/data-grid/partials/grid-cell-access.d.ts +4 -3
  35. package/dist/lib/components/ui/collections/data-grid/partials/grid-cell-flags.d.ts +12 -0
  36. package/dist/lib/components/ui/collections/data-grid/partials/grid-cell-value.d.ts +4 -1
  37. package/dist/lib/components/ui/collections/data-table/partials/data-table-cell-content.d.ts +11 -0
  38. package/dist/lib/components/ui/collections/data-table/table-meta.d.ts +50 -2
  39. package/dist/lib/components/ui/collections/filter/use-filter-field-config.d.ts +1 -0
  40. package/dist/lib/components/ui/collections/list-pane/list-pane-item.d.ts +3 -1
  41. package/dist/lib/components/ui/collections/list-pane/partials/list-pane-item-content.d.ts +2 -1
  42. package/dist/lib/components/ui/dates/age-field/age-field.d.ts +8 -0
  43. package/dist/lib/components/ui/dates/age-field/age-form-field.d.ts +8 -0
  44. package/dist/lib/components/ui/dates/age-field/age-reading.d.ts +11 -0
  45. package/dist/lib/components/ui/dates/age-field/age-value.d.ts +9 -0
  46. package/dist/lib/components/ui/dates/age-field/index.d.ts +4 -0
  47. package/dist/lib/components/ui/dates/age-field/types.d.ts +40 -0
  48. package/dist/lib/components/ui/dates/index.d.ts +1 -0
  49. package/dist/lib/components/ui/display/badge/badge.d.ts +4 -1
  50. package/dist/lib/components/ui/display/entity-header/entity-header.d.ts +8 -1
  51. package/dist/lib/components/ui/display/index.d.ts +2 -0
  52. package/dist/lib/components/ui/display/person-cell/index.d.ts +1 -0
  53. package/dist/lib/components/ui/display/person-cell/person-cell.d.ts +23 -0
  54. package/dist/lib/components/ui/display/tone-value/index.d.ts +2 -0
  55. package/dist/lib/components/ui/display/tone-value/tone-value.d.ts +23 -0
  56. package/dist/lib/components/ui/feedback/error-state/partials/error-state-actions.d.ts +6 -1
  57. package/dist/lib/components/ui/feedback/page-load-failed/page-load-failed.d.ts +8 -1
  58. package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
  59. package/dist/lib/components/ui/fields/number-field/number-control.d.ts +2 -2
  60. package/dist/lib/components/ui/fields/switch/partials/switch-row.d.ts +4 -2
  61. package/dist/lib/components/ui/fields/switch/switch.d.ts +7 -1
  62. package/dist/lib/components/ui/layout/app-shell/activity-content-aside-parts.d.ts +68 -0
  63. package/dist/lib/components/ui/layout/app-shell/activity-content-aside-toggle.d.ts +22 -0
  64. package/dist/lib/components/ui/layout/app-shell/activity-content-aside.d.ts +5 -2
  65. package/dist/lib/components/ui/layout/app-shell/activity-content-aside.types.d.ts +13 -0
  66. package/dist/lib/components/ui/layout/app-shell/activity-content.d.ts +3 -2
  67. package/dist/lib/components/ui/layout/app-shell/app-shell.utils.d.ts +3 -1
  68. package/dist/lib/components/ui/layout/app-shell/app-sidebar-entries.d.ts +5 -2
  69. package/dist/lib/components/ui/layout/app-shell/app-sidebar-icon-item.d.ts +2 -1
  70. package/dist/lib/components/ui/layout/app-shell/app-sidebar.d.ts +3 -1
  71. package/dist/lib/components/ui/layout/app-shell/types.d.ts +14 -5
  72. package/dist/lib/components/ui/primitives/tabs/partials/tabs-list.d.ts +8 -2
  73. package/dist/lib/components/ui/primitives/tabs/tabs-nav.d.ts +5 -1
  74. package/dist/lib/components/ui/primitives/tabs/tabs-overflow-classes.d.ts +3 -0
  75. package/dist/lib/components/ui/selection/sortable-list/index.d.ts +1 -1
  76. package/dist/lib/components/ui/selection/sortable-list/sortable-list-context.d.ts +3 -1
  77. package/dist/lib/components/ui/selection/sortable-list/sortable-list.d.ts +6 -2
  78. package/dist/lib/components/ui/selection/sortable-list/types.d.ts +1 -0
  79. package/dist/lib/components/ui/selection/sortable-list/use-sortable-list-labels.d.ts +3 -0
  80. package/dist/lib/i18n/resources/en/en.d.ts +11 -0
  81. package/dist/lib/i18n/resources/en/material.json.d.ts +12 -1
  82. package/dist/lib/i18n/resources/fr/fr.d.ts +11 -0
  83. package/dist/lib/i18n/resources/fr/material.json.d.ts +12 -1
  84. package/dist/lib/i18n/resources/resources.d.ts +22 -0
  85. package/dist/lib/i18n/translator.d.ts +1 -1
  86. package/dist/lib.js +1 -1
  87. package/dist/main.js +54 -53
  88. package/dist/map.js +7 -7
  89. package/dist/material.css +1 -1
  90. package/dist/pdf-reader.js +1 -1
  91. package/dist/{percent-field-BFwxazf1.js → percent-field-DyJ2yOH4.js} +1 -1
  92. package/dist/{picker-surface-DkfTv_ft.js → picker-surface-CnlOKQ3D.js} +4 -4
  93. package/dist/{popover-BM6xApJd.js → popover-BevReSHi.js} +1 -1
  94. package/dist/{pos-types-CpTpT4vE.js → pos-types-BrZBX0Zg.js} +1 -1
  95. package/dist/{pos-variant-Bs5BUB1L.js → pos-variant-G12HCSfQ.js} +4 -4
  96. package/dist/print.js +1 -1
  97. package/dist/{programmer-variant-B1eI1fd0.js → programmer-variant-WWLwTGRF.js} +2 -2
  98. package/dist/{public-CzLMnSsS.js → public-C1a6wQ6o.js} +19 -19
  99. package/dist/{rich-code-block-CdVtxD75.js → rich-code-block-Dh9J-VZ8.js} +5 -5
  100. package/dist/{scientific-variant-rfvJKxB4.js → scientific-variant-BvutlF8a.js} +2 -2
  101. package/dist/{sortable-provider-BopzsciJ.js → sortable-provider-BrA5tfJX.js} +2 -2
  102. package/dist/{spinner-DcW21pN1.js → spinner-JnLLiLIO.js} +1 -1
  103. package/dist/{tabs-CdoBFtWx.js → tabs-dXCZGShv.js} +63 -61
  104. package/dist/theme-picker.js +2 -2
  105. package/dist/{theme-toggle-Ch3GkDDU.js → theme-toggle-BmcK6mXV.js} +1 -1
  106. package/dist/{toolbar-items-CZ1lJXZZ.js → toolbar-items-B-kMYsDT.js} +4 -4
  107. package/dist/{translate-material-BrYBBZ66.js → translate-material-BmpcP1p1.js} +1 -1
  108. package/dist/{translator-DoVsjUff.js → translator-CfoXTrZd.js} +24 -2
  109. package/dist/{use-chat-composer-C9DG7O1Z.js → use-chat-composer-DFD_eF-r.js} +4197 -4246
  110. package/dist/{use-heading-spy-kyOSe9rb.js → use-heading-spy-BcNK1qvq.js} +4 -4
  111. package/dist/{use-material-translation-BdrItuwY.js → use-material-translation-DoymV6IP.js} +1 -1
  112. package/dist/{use-return-focus-Cqzvj9R0.js → use-return-focus-CLEnhfka.js} +1 -1
  113. package/docs/components/README.md +2 -1
  114. package/docs/components/buttons-and-actions.md +10 -1
  115. package/docs/components/data-display.md +80 -4
  116. package/docs/components/data-table-filter-and-lists.md +56 -3
  117. package/docs/components/date-and-time.md +53 -1
  118. package/docs/components/feedback-and-status.md +11 -2
  119. package/docs/components/form-fields.md +11 -2
  120. package/docs/components/navigation-and-layout.md +2 -2
  121. package/docs/components/primitives.md +7 -0
  122. package/docs/components/selection-and-choice.md +4 -2
  123. package/docs/guides/app-shell.md +46 -11
  124. package/docs/guides/data-grid.md +12 -0
  125. package/docs/guides/forms.md +1 -0
  126. package/docs/guides/i18n.md +1 -1
  127. package/docs/previews/data-display-personcell.webp +0 -0
  128. package/docs/previews/data-display-tonevalue.webp +0 -0
  129. package/docs/previews/date-time-agefield.webp +0 -0
  130. package/docs/roadmap.md +23 -0
  131. package/package.json +2 -2
  132. package/dist/currency-field-cwC7cqUE.js +0 -286
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
- import { t } from "./use-material-translation-BdrItuwY.js";
2
+ import { t } from "./use-material-translation-DoymV6IP.js";
3
3
  import { t as n } from "./typography-CYEquVeb.js";
4
4
  import { a as r, c as i, i as a, n as o, o as s, r as c, t as l, u } from "./state-scenes-BX03WmSu.js";
5
5
  import { Suspense as d } from "react";
@@ -1,12 +1,12 @@
1
- import { n as e, r as t, t as n, u as r } from "./tabs-CdoBFtWx.js";
2
- import { t as i } from "./use-material-translation-BdrItuwY.js";
3
- import { r as a, t as o } from "./currency-field-cwC7cqUE.js";
4
- import { t as s } from "./percent-field-BFwxazf1.js";
1
+ import { d as e, n as t, r as n, t as r } from "./tabs-dXCZGShv.js";
2
+ import { t as i } from "./use-material-translation-DoymV6IP.js";
3
+ import { r as a, t as o } from "./currency-field-CIqe7Wg4.js";
4
+ import { t as s } from "./percent-field-DyJ2yOH4.js";
5
5
  import { n as c } from "./calculator-context-BugcKuVG.js";
6
6
  import { t as l } from "./calculator-announce-DRd2c6Dq.js";
7
7
  import { n as u, t as d } from "./calculator-panel-announce-AZSnZUSr.js";
8
8
  import { t as f } from "./currency-B-r3ig11.js";
9
- import { t as p } from "./calculator-segment-DMFptsDf.js";
9
+ import { t as p } from "./calculator-segment-CvAaDqKf.js";
10
10
  import { useId as m, useMemo as h, useState as g } from "react";
11
11
  import { jsx as _, jsxs as v } from "react/jsx-runtime";
12
12
  import { currencyFractionDigits as y } from "@nxgt/material-core/currency-digits";
@@ -433,23 +433,23 @@ function de() {
433
433
  se
434
434
  ]
435
435
  ];
436
- return /* @__PURE__ */ _(d, { children: /* @__PURE__ */ v(n, {
436
+ return /* @__PURE__ */ _(d, { children: /* @__PURE__ */ v(r, {
437
437
  value: o,
438
438
  onValueChange: (e) => ue(e) && s(e),
439
439
  className: "nxgt-fin-tabs",
440
- children: [/* @__PURE__ */ _(t, {
440
+ children: [/* @__PURE__ */ _(n, {
441
441
  "aria-label": a(`${$}.tabs.label`, "Calculation"),
442
442
  className: "nxgt-fin-tablist",
443
- children: c.map(([t, n]) => /* @__PURE__ */ _(e, {
444
- value: t,
443
+ children: c.map(([e, n]) => /* @__PURE__ */ _(t, {
444
+ value: e,
445
445
  children: n
446
- }, t))
447
- }), c.map(([e, , t]) => /* @__PURE__ */ _(r, {
448
- value: e,
446
+ }, e))
447
+ }), c.map(([t, , n]) => /* @__PURE__ */ _(e, {
448
+ value: t,
449
449
  forceMount: !0,
450
450
  className: "nxgt-fin-body",
451
- children: /* @__PURE__ */ _(t, { active: o === e })
452
- }, e))]
451
+ children: /* @__PURE__ */ _(n, { active: o === t })
452
+ }, t))]
453
453
  }) });
454
454
  }
455
455
  //#endregion
@@ -1,5 +1,5 @@
1
- import { i as e } from "./translate-material-BrYBBZ66.js";
2
- import { n as t } from "./use-heading-spy-kyOSe9rb.js";
1
+ import { i as e } from "./translate-material-BmpcP1p1.js";
2
+ import { n as t } from "./use-heading-spy-BcNK1qvq.js";
3
3
  import { t as n } from "./number.utils-CSueQZcv.js";
4
4
  import { useCallback as r, useEffect as i, useLayoutEffect as a, useMemo as o, useRef as s, useState as c } from "react";
5
5
  import { jsx as l } from "react/jsx-runtime";
package/dist/hooks.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { t as e } from "./use-ssr-media-query-C6M5m8sf.js";
2
2
  import { a as t, i as n, o as r, r as i, s as a } from "./theme-store-BdPp43cV.js";
3
3
  import { n as o, t as s } from "./use-theme-BCLireTd.js";
4
- import { a as c, i as l, m as u, o as d, r as f, s as p, t as m } from "./use-heading-spy-kyOSe9rb.js";
4
+ import { a as c, i as l, m as u, o as d, r as f, s as p, t as m } from "./use-heading-spy-BcNK1qvq.js";
5
5
  import { r as h } from "./use-csp-nonce-ZKs9k-ov.js";
6
6
  import { t as g } from "./use-mobile-BDro060N.js";
7
7
  import { t as _ } from "./use-scroll-away-PQRFZkT2.js";
8
- import { _ as v, a as y, c as b, d as x, f as S, g as C, h as w, i as T, l as E, m as D, n as O, o as k, p as A, r as j, s as M, t as N, u as P, v as F } from "./hooks-CpvvZCs7.js";
8
+ import { _ as v, a as y, c as b, d as x, f as S, g as C, h as w, i as T, l as E, m as D, n as O, o as k, p as A, r as j, s as M, t as N, u as P, v as F } from "./hooks-C-yLDF39.js";
9
9
  export { i as DEFAULT_THEME, n as applyResolvedTheme, t as applyThemeName, M as buildOptions, l as busySettler, D as clearDrafts, c as createSubmitGuard, b as extractNode, v as isLeaving, r as resolveTheme, a as resolveThemeName, F as shouldBlockNavigation, k as startPoll, C as useAllowedTransitions, f as useCountdown, h as useCspNonce, O as useDiscardGuard, w as useDrafts, p as useFocusOnMount, A as useFormatters, m as useHeadingSpy, o as useIsClient, g as useIsMobile, u as useLocalizedDate, x as useNavigationHandler, S as useNavigationHandlers, P as useNumberFormatter, E as useOptions, y as usePoll, T as useReactRouterBlock, _ as useScrollAway, j as useSearchParam, e as useSsrMediaQuery, d as useSubmitOnce, s as useTheme, N as useUnsavedGuard };
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { o as t } from "./dist-DVRQkaTK.js";
3
3
  import { i as n, r, t as i } from "./dist-DWZXlCZR.js";
4
- import { S as a, d as o, f as s, l as c, p as l, x as u } from "./spinner-DcW21pN1.js";
4
+ import { S as a, d as o, f as s, l as c, p as l, x as u } from "./spinner-JnLLiLIO.js";
5
5
  import { a as d, i as f } from "./dist-DHdUUM1w.js";
6
6
  import { t as p } from "./in-dialog-D61Yeaol.js";
7
7
  import { i as m } from "./escape-owner-DpaP0lm1.js";
package/dist/i18n.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { t as e } from "./is-production-GLw59WU8.js";
2
- import { c as t, d as n, i as r, l as i, n as a, o, r as s, t as c, u as l } from "./translator-DoVsjUff.js";
3
- import { i as u, n as d, r as f, t as p } from "./translate-material-BrYBBZ66.js";
2
+ import { c as t, d as n, i as r, l as i, n as a, o, r as s, t as c, u as l } from "./translator-CfoXTrZd.js";
3
+ import { i as u, n as d, r as f, t as p } from "./translate-material-BmpcP1p1.js";
4
4
  import { o as m, t as h } from "./merge-BCZE6HGq.js";
5
- import { t as g } from "./use-material-translation-BdrItuwY.js";
5
+ import { t as g } from "./use-material-translation-DoymV6IP.js";
6
6
  import { useCallback as _ } from "react";
7
7
  //#region lib/i18n/merge-resources.ts
8
8
  function v(e, t, n = "") {
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
- import { t } from "./icon-button-DE1EcO2-.js";
2
+ import { t } from "./icon-button-D0xjBCst.js";
3
3
  import { jsx as n } from "react/jsx-runtime";
4
4
  //#region lib/components/ui/actions/icon-button/icon-badge.tsx
5
5
  function r({ children: r, className: i, ...a }) {
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { n as t } from "./use-shape-morph-BKA_R5P5.js";
3
3
  import { n, t as r } from "./dist-DVRQkaTK.js";
4
- import { n as i, t as a } from "./spinner-DcW21pN1.js";
4
+ import { n as i, t as a } from "./spinner-JnLLiLIO.js";
5
5
  import { t as o } from "./dist-DkQbkF9T.js";
6
6
  import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./use-click-lock-Bwg_caHO.js";
7
7
  import { t as m } from "./is-production-GLw59WU8.js";
@@ -0,0 +1,70 @@
1
+ import { t as e } from "./utils-BLfntITJ.js";
2
+ import { t } from "./dist-DkQbkF9T.js";
3
+ import { t as n } from "./icon-button-D0xjBCst.js";
4
+ import { a as r, o as i } from "./input-CC2joTjB.js";
5
+ import { jsx as a } from "react/jsx-runtime";
6
+ //#region lib/components/ui/primitives/input-group/input-group.tsx
7
+ function o({ className: t, ...n }) {
8
+ return /* @__PURE__ */ a("div", {
9
+ "data-slot": "input-group",
10
+ role: "group",
11
+ className: e(i, "group/input-group relative flex w-full items-center outline-none", "h-11 max-h-full min-w-0 has-[>textarea]:h-auto", "has-[>[data-align=inline-start]]:[&>input]:ps-2", "has-[>[data-align=inline-end]]:[&>input]:pe-2", "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3", "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3", t),
12
+ ...n
13
+ });
14
+ }
15
+ var s = t("flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none [&>kbd]:rounded-field-inner [&>svg:not([class*='size-'])]:size-4", {
16
+ variants: { align: {
17
+ "inline-start": "order-first ps-3 has-[>button]:ps-[0.3rem] has-[>kbd]:ps-[0.4rem]",
18
+ "inline-end": "order-last pe-3 has-[>button]:pe-[0.3rem] has-[>kbd]:pe-[0.4rem]",
19
+ "block-start": "order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3",
20
+ "block-end": "order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3"
21
+ } },
22
+ defaultVariants: { align: "inline-start" }
23
+ });
24
+ function c({ className: t, align: n = "inline-start", ...r }) {
25
+ return /* @__PURE__ */ a("div", {
26
+ role: "group",
27
+ "data-slot": "input-group-addon",
28
+ "data-align": n,
29
+ className: e(s({ align: n }), t),
30
+ onClick: (e) => {
31
+ e.target.closest("button") || e.currentTarget.parentElement?.querySelector("input")?.focus();
32
+ },
33
+ ...r
34
+ });
35
+ }
36
+ function l({ className: t, type: r = "button", variant: i = "ghost", ...o }) {
37
+ return /* @__PURE__ */ a(n, {
38
+ type: r,
39
+ variant: i,
40
+ className: e("size-8", t),
41
+ ...o
42
+ });
43
+ }
44
+ function u({ className: t, ...n }) {
45
+ return /* @__PURE__ */ a("span", {
46
+ className: e("flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", t),
47
+ ...n
48
+ });
49
+ }
50
+ function d({ className: t, type: n = "text", ...i }) {
51
+ return /* @__PURE__ */ a("input", {
52
+ type: n,
53
+ "data-slot": "input-group-control",
54
+ "data-pw": i.name ?? "input",
55
+ className: e("h-full w-full min-w-0 flex-1 bg-transparent px-2 py-1 text-base outline-none md:text-sm", "pointer-coarse:-my-px pointer-coarse:h-[calc(100%+2px)]", "placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground disabled:pointer-events-none", t),
56
+ ...i,
57
+ placeholder: r(i.placeholder, n)
58
+ });
59
+ }
60
+ function f({ className: t, ...n }) {
61
+ return /* @__PURE__ */ a("textarea", {
62
+ "data-slot": "input-group-control",
63
+ "data-pw": n.name ?? "textarea",
64
+ className: e("field-sizing-content min-h-16 w-full min-w-[min(280px,100%)] flex-1 resize-none bg-transparent px-3 py-3 text-base outline-none md:text-sm", "placeholder:text-muted-foreground disabled:pointer-events-none", t),
65
+ ...n,
66
+ placeholder: r(n.placeholder, "text")
67
+ });
68
+ }
69
+ //#endregion
70
+ export { u as a, d as i, c as n, f as o, l as r, o as t };
@@ -8,12 +8,20 @@ export type BackLinkProps = ComponentProps<typeof LinkButton> & {
8
8
  * the label always shows.
9
9
  */
10
10
  collapse?: 'phone';
11
+ /**
12
+ * Drops the start padding so the arrow sits on the page's start edge, in
13
+ * line with the title and content under it (LTR and RTL). It suits the
14
+ * `link` and `ghost` looks, which draw no box; the hit area stays the
15
+ * button's own height. Default `false`.
16
+ */
17
+ flush?: boolean;
11
18
  };
12
19
  /**
13
20
  * A link to the parent page: a ghost `LinkButton` with a leading arrow. The
14
21
  * label names the destination and is the link's accessible name (the arrow is
15
22
  * hidden from assistive tech); the arrow mirrors in right-to-left. It takes
16
23
  * every `LinkButton` prop, `variant`, `color`, `size` and `linkComponent`
17
- * included; `collapse="phone"` keeps only the arrow on a phone.
24
+ * included; `collapse="phone"` keeps only the arrow on a phone; `flush` removes the
25
+ * start padding so the arrow lines up with the content below.
18
26
  */
19
- export declare function BackLink({ variant, className, children, collapse, ...props }: BackLinkProps): import("react").JSX.Element;
27
+ export declare function BackLink({ variant, className, children, collapse, flush, ...props }: BackLinkProps): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { RowData } from '@tanstack/react-table';
2
+ import { ReactNode } from 'react';
3
+ import { Tone } from '../../tones.js';
4
+ import { GridCellData } from './grid-cell-data.js';
5
+ /**
6
+ * The tone `meta.tone` gives the value a cell shows now (an edit, a pending
7
+ * save, a revert, an undo), not the row's; `undefined` for none, and for a
8
+ * control column, which has no cell data.
9
+ */
10
+ export declare function gridCellTone<TData extends RowData>(data: GridCellData<TData> | null): Tone | undefined;
11
+ /** `content` in a `ToneValue` when `tone` is set (with `meta.toneLabel`'s words, when given). */
12
+ export declare function toneContent<TData extends RowData>(data: GridCellData<TData>, tone: Tone | undefined, content: ReactNode): ReactNode;
@@ -2,6 +2,7 @@ import { GridPos } from '@nxgt/material-core/data-grid';
2
2
  import { Cell, RowData } from '@tanstack/react-table';
3
3
  import { DataTableFeatures } from '../../data-table/features.js';
4
4
  import { DataGridContextValue } from '../data-grid-context.js';
5
+ import { GridCellData } from '../grid-cell-data.js';
5
6
  /**
6
7
  * What the cell at `pos` allows, and whether it says so (`said`, with the
7
8
  * shared description's id). A row header with no editor is the row's name,
@@ -18,9 +19,9 @@ export declare function describedBy<TData extends RowData>(grid: DataGridContext
18
19
  };
19
20
  /** Whether Escape on the active cell is the grid's: a range to collapse, the paste problems to close. */
20
21
  export declare function keepsEscape<TData extends RowData>(grid: DataGridContextValue<TData>, pos: GridPos): boolean;
21
- /** The classes of a body cell: the grid's, the virtual one, the row header's, the control and selected ones, the column's own. */
22
- export declare function cellClassName<TData extends RowData>(grid: DataGridContextValue<TData>, cell: Cell<DataTableFeatures, TData, unknown>, flags: {
22
+ /** The classes of a body cell: the grid's, the virtual one, the row header's, the control and selected ones, the column's own, then the ones its `meta.cellClassName` gives for the value shown. */
23
+ export declare function bodyCellClasses<TData extends RowData>(grid: DataGridContextValue<TData>, cell: Cell<DataTableFeatures, TData, unknown>, flags: {
23
24
  header: boolean;
24
25
  control: boolean;
25
26
  selected?: boolean;
26
- }): string;
27
+ }, data: GridCellData<TData> | null): string;
@@ -0,0 +1,12 @@
1
+ import { GridPos } from '@nxgt/material-core/data-grid';
2
+ import { RowData } from '@tanstack/react-table';
3
+ import { DataGridContextValue } from '../data-grid-context.js';
4
+ /** The `data-*` flags of a body cell: its range, selection, lock and read-only state, and its Escape. */
5
+ export declare function cellFlags<TData extends RowData>(grid: DataGridContextValue<TData>, pos: GridPos, access: string, inRange: boolean, selected: boolean | undefined): {
6
+ 'data-in-range': true | undefined;
7
+ 'data-selected': true | undefined;
8
+ 'data-locked': true | undefined;
9
+ 'data-row-locked': true | undefined;
10
+ 'data-keeps-escape': true | undefined;
11
+ 'data-readonly': true | undefined;
12
+ };
@@ -1,5 +1,6 @@
1
1
  import { RowData } from '@tanstack/react-table';
2
2
  import { ReactNode } from 'react';
3
+ import { Tone } from '../../../tones.js';
3
4
  import { GridCellData } from '../grid-cell-data.js';
4
5
  import { GridTableCell } from './column-cell.js';
5
6
  /**
@@ -7,7 +8,9 @@ import { GridTableCell } from './column-cell.js';
7
8
  * over it (the value stays, unseen, so the cell keeps its size). An error's
8
9
  * message is in `GridErrorMessages`.
9
10
  */
10
- export declare function GridCellValue<TData extends RowData>({ cell, data, }: {
11
+ export declare function GridCellValue<TData extends RowData>({ cell, data, tone, }: {
11
12
  cell: GridTableCell<TData>;
12
13
  data: GridCellData<TData> | null;
14
+ /** The tone of the value shown (`gridCellTone`), computed once by the cell. */
15
+ tone?: Tone;
13
16
  }): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import('react').ReactPortal | import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react").JSX.Element | null | undefined;
@@ -0,0 +1,11 @@
1
+ import { Cell, RowData } from '@tanstack/react-table';
2
+ import { ReactNode } from 'react';
3
+ import { Tone } from '../../../tones.js';
4
+ import { DataTableFeatures } from '../features.js';
5
+ /** The tone `meta.tone` gives the value a cell shows (`undefined` for none). */
6
+ export declare function cellTone<TData extends RowData>(cell: Cell<DataTableFeatures, TData>): Tone | undefined;
7
+ /** `content` in a `ToneValue` when `tone` is set, with `label`'s words when given. */
8
+ export declare function toneWrapped(tone: Tone | undefined, content: ReactNode, label: string | undefined): ReactNode;
9
+ /** A cell's rendered content, in a `ToneValue` when `tone` (its `cellTone`)
10
+ * is set (with `meta.toneLabel`'s words, when given). */
11
+ export declare function cellContent<TData extends RowData>(cell: Cell<DataTableFeatures, TData>, tone: Tone | undefined): ReactNode;
@@ -1,7 +1,8 @@
1
1
  import { CellData, RowData, TableFeatures } from '@tanstack/react-table';
2
+ import { Tone } from '../../tones.js';
2
3
  /**
3
- * `columnDef.meta.className` and `columnDef.meta.numeric`, read by `DataTable`
4
- * on each header and cell of the column, and `columnDef.meta.label`, the
4
+ * `columnDef.meta.className`, `columnDef.meta.cellClassName`, `columnDef.meta.tone` and `columnDef.meta.numeric`, read by `DataTable`,
5
+ * `ServerTable` and `DataGrid` on each header and cell of the column, and `columnDef.meta.label`, the
5
6
  * column's plain name. Declared on TanStack's `ColumnMeta`, so it types a consumer's
6
7
  * column definitions too: `index.ts` re-exports this module so that the
7
8
  * published declarations carry the augmentation wherever `DataTable` is
@@ -10,6 +11,53 @@ import { CellData, RowData, TableFeatures } from '@tanstack/react-table';
10
11
  declare module '@tanstack/react-table' {
11
12
  interface ColumnMeta<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData> {
12
13
  className?: string;
14
+ /**
15
+ * Classes for a body cell, from the value it shows and its row: the
16
+ * class follows the data, so a cell is styled by what it holds without
17
+ * a custom `cell` renderer (the text is unchanged). `DataTable` and
18
+ * `ServerTable` pass the cell's value (`cell.getValue()`) and the row's
19
+ * original; `DataGrid` passes the value the cell shows now, so the
20
+ * class follows an edit, a save and an undo. Returns `undefined` for
21
+ * none. Merged after `className`; the header is not concerned.
22
+ *
23
+ * @example
24
+ * helper.accessor('balance', {
25
+ * header: 'Balance',
26
+ * meta: {
27
+ * numeric: true,
28
+ * cellClassName: (value) =>
29
+ * typeof value === 'number' && value < 0 ? 'text-error-text' : undefined,
30
+ * },
31
+ * });
32
+ */
33
+ cellClassName?: (value: TValue, row: TData) => string | undefined;
34
+ /**
35
+ * The tone of a body cell, from the value it shows and its row: the cell
36
+ * gets `data-tone`, and its content a `ToneValue` (the value in the tone's
37
+ * text colour, after a small shape: a diamond for `error`, a triangle for
38
+ * `warning`, a circle for `success`, a square for another tone, none for
39
+ * `neutral`). Returns `undefined` for none. `DataGrid` passes the value the
40
+ * cell shows now (an edit, a pending save, an undo). The default card of the
41
+ * `cards` and `tiles` layouts shows it too; a `renderCard` imports
42
+ * `ToneValue`. For a tone read from bands on a number, use `toneBands`
43
+ * from `@nxgt/material/components`.
44
+ *
45
+ * @example
46
+ * import { toneBands } from '@nxgt/material/components';
47
+ *
48
+ * const level = toneBands([
49
+ * { below: 8, tone: 'error' },
50
+ * { below: 10, tone: 'warning' },
51
+ * { from: 14, tone: 'success' },
52
+ * ]);
53
+ * helper.accessor('score', { meta: { numeric: true, tone: level } });
54
+ */
55
+ tone?: (value: TValue, row: TData) => Tone | undefined;
56
+ /**
57
+ * Words a screen reader hears after a toned value (`'Low'`), visually
58
+ * hidden; off unless given. `toneBands(...).label` fits.
59
+ */
60
+ toneLabel?: (value: TValue, row: TData) => string | undefined;
13
61
  /**
14
62
  * A column of figures: its header and cells are flush to the end and set
15
63
  * in tabular digits (`tabular-nums`), so decimals line up down the column.
@@ -3797,6 +3797,7 @@ export declare function useFilterFieldConfig({ field, value, onChange, error, di
3797
3797
  name?: string | undefined | undefined;
3798
3798
  value?: string | number | readonly string[] | undefined;
3799
3799
  error?: boolean | undefined;
3800
+ variant?: "box" | "plain" | undefined;
3800
3801
  asChild?: boolean | undefined;
3801
3802
  checked?: boolean | undefined;
3802
3803
  required?: boolean | undefined;
@@ -3,6 +3,8 @@ export type ListPaneItemDensity = 'comfortable' | 'compact';
3
3
  export type ListPaneItemAppearance = 'plain' | 'card';
4
4
  export type ListPaneItemProps = Omit<ComponentProps<'div'>, 'title'> & {
5
5
  title?: ReactNode;
6
+ /** Lines the title may take before it is cut with an ellipsis. Default `1`. */
7
+ titleLines?: 1 | 2;
6
8
  description?: ReactNode;
7
9
  /** Before the text: an avatar, an icon (framed in a tinted tile), a rank. */
8
10
  media?: ReactNode;
@@ -28,4 +30,4 @@ export declare function listPaneItemClasses({ selected, focused, disabled, densi
28
30
  * description, a badge and trailing buttons. Purely visual: the list it sits
29
31
  * in gives it a role and its events.
30
32
  */
31
- export declare function ListPaneItem({ title, description, media, leading, badge, trailing, selected, focused, disabled, density, appearance, lifted, className, children, ...props }: ListPaneItemProps): import("react").JSX.Element;
33
+ export declare function ListPaneItem({ title, titleLines, description, media, leading, badge, trailing, selected, focused, disabled, density, appearance, lifted, className, children, ...props }: ListPaneItemProps): import("react").JSX.Element;
@@ -4,8 +4,9 @@ import { ReactNode } from 'react';
4
4
  * control, the media tile, the title with its description (not when
5
5
  * `compact`), the badge (from a 20rem pane) and the trailing buttons.
6
6
  */
7
- export declare function ListPaneItemContent({ title, description, media, leading, badge, trailing, compact, }: {
7
+ export declare function ListPaneItemContent({ title, titleLines, description, media, leading, badge, trailing, compact, }: {
8
8
  title?: ReactNode;
9
+ titleLines?: 1 | 2;
9
10
  description?: ReactNode;
10
11
  media?: ReactNode;
11
12
  leading?: ReactNode;
@@ -0,0 +1,8 @@
1
+ import { AgeFieldProps } from './types.js';
2
+ /**
3
+ * One labelled field holding an age: a number and a unit (days, weeks,
4
+ * months, years; the allowed units are `units`). The value is
5
+ * `{ value: 2, unit: 'month' }`, `min` and `max` apply to the unit chosen,
6
+ * and the age is read aloud in the language ("2 months", « 2 mois »).
7
+ */
8
+ export declare function AgeField({ units, value, defaultValue, onChange, min, max, ...props }: AgeFieldProps): import("react").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { UseControllerProps } from 'react-hook-form';
2
+ import { AgeFieldProps } from './types.js';
3
+ /**
4
+ * An AgeField wired to React Hook Form. The field's value is
5
+ * `{ value, unit }`; an error on the whole field, on `<name>.value` or on
6
+ * `<name>.unit` shows as the one message under the pair.
7
+ */
8
+ export declare function AgeFormField<T extends Record<string, any>>({ control, name, ...props }: Pick<UseControllerProps<T>, 'control' | 'name'> & Omit<AgeFieldProps, 'name' | 'value' | 'onChange'>): import("react").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { useMaterialTranslation } from '../../../../i18n/use-material-translation.js';
2
+ import { AgeUnit } from './types.js';
3
+ type Translate = ReturnType<typeof useMaterialTranslation>['t'];
4
+ /** A unit's name for `count`, in the language: "month" for 1, "mois" for 2. */
5
+ export declare function ageUnitName(t: Translate, unit: AgeUnit, count: number): string;
6
+ /**
7
+ * An age read aloud, in the language: "2 months", « 2 mois ». `null` while
8
+ * the number is empty.
9
+ */
10
+ export declare function ageReading(t: Translate, value: number | null, unit: AgeUnit): string | null;
11
+ export {};
@@ -0,0 +1,9 @@
1
+ import { AgeLimit, AgeUnit, AgeValue } from './types.js';
2
+ /** Every unit an age can be given in, shortest first. */
3
+ export declare const AGE_UNITS: readonly AgeUnit[];
4
+ /** What an AgeField holds before anyone fills it in. */
5
+ export declare const emptyAge: (unit: AgeUnit) => AgeValue;
6
+ /** The bound that applies to `unit`, or `undefined` when there is none. */
7
+ export declare function limitFor(limit: AgeLimit | undefined, unit: AgeUnit): number | undefined;
8
+ /** Keeps the allowed units that exist, in the order given, with no repeats. */
9
+ export declare function allowedUnits(units: readonly AgeUnit[]): AgeUnit[];
@@ -0,0 +1,4 @@
1
+ export { AgeField } from './age-field.js';
2
+ export * from './age-form-field.js';
3
+ export { ageReading } from './age-reading.js';
4
+ export type { AgeFieldProps, AgeLimit, AgeUnit, AgeValue } from './types.js';
@@ -0,0 +1,40 @@
1
+ import { ReactNode, Ref } from 'react';
2
+ /** A unit of age. */
3
+ export type AgeUnit = 'day' | 'week' | 'month' | 'year';
4
+ /** What an AgeField holds: the number (`null` while empty) and its unit. */
5
+ export type AgeValue = {
6
+ value: number | null;
7
+ unit: AgeUnit;
8
+ };
9
+ /** A `min` or `max`: one bound for every unit, or one per unit. */
10
+ export type AgeLimit = number | Partial<Record<AgeUnit, number>>;
11
+ export type AgeFieldProps = {
12
+ /** The one label of the pair; it names the group. */
13
+ label?: ReactNode;
14
+ /** The one message under the pair. */
15
+ helperText?: ReactNode;
16
+ error?: boolean;
17
+ required?: boolean;
18
+ disabled?: boolean;
19
+ className?: string;
20
+ /** Names the parts `<name>.value` and `<name>.unit` for a native form. */
21
+ name?: string;
22
+ id?: string;
23
+ value?: AgeValue;
24
+ defaultValue?: AgeValue;
25
+ onChange?: (value: AgeValue) => void;
26
+ /**
27
+ * The units offered, in this order. The first is the unit of an empty
28
+ * field. Default: day, week, month, year.
29
+ */
30
+ units?: readonly AgeUnit[];
31
+ /** The smallest number: one for every unit, or one per unit. Default: 0. */
32
+ min?: AgeLimit;
33
+ /** The largest number: one for every unit, or one per unit. */
34
+ max?: AgeLimit;
35
+ hideSteppers?: boolean;
36
+ /** Names the group when `label` is not plain text. */
37
+ 'aria-label'?: string;
38
+ /** Reaches the number input (React Hook Form's `field.ref`, `setFocus`). */
39
+ ref?: Ref<HTMLInputElement>;
40
+ };
@@ -1,3 +1,4 @@
1
+ export * from './age-field/index.js';
1
2
  export * from './calendar/index.js';
2
3
  export * from './date-field/index.js';
3
4
  export * from './date-range-field/index.js';
@@ -4,11 +4,14 @@ import { IconName } from '../../primitives/icon/icon.js';
4
4
  import { Tone } from '../../tones.js';
5
5
  declare const badgeVariants: (props?: ({
6
6
  variant?: "secondary" | "success" | "info" | "warning" | "error" | "default" | "soft" | "outlined" | null | undefined;
7
+ size?: "md" | "sm" | null | undefined;
7
8
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
8
9
  /** The tone of a `soft` or `outlined` badge: a named tone or one the app declared in `AppTones`. */
9
10
  export type BadgeTone = Tone;
10
- declare function Badge({ className, variant, tone, icon, asChild, children, ...props }: ComponentProps<'span'> & VariantProps<typeof badgeVariants> & {
11
+ declare function Badge({ className, variant, size, tone, icon, asChild, children, ...props }: ComponentProps<'span'> & Omit<VariantProps<typeof badgeVariants>, 'size'> & {
11
12
  asChild?: boolean;
13
+ /** `sm` (default, 20 px) or `md` (24 px, larger text and icon). */
14
+ size?: 'sm' | 'md';
12
15
  /** The colour of a `soft` or `outlined` badge (neutral without one). */
13
16
  tone?: BadgeTone;
14
17
  /**
@@ -39,5 +39,12 @@ export type EntityHeaderProps = {
39
39
  */
40
40
  stats?: EntityStat[];
41
41
  actions?: ResponsiveButtonProps[] | React.ReactNode;
42
+ /**
43
+ * `'card'` (default) draws the header on its own card. `'none'` draws it
44
+ * flat, with no background, padding or shadow, for a header that sits
45
+ * directly on a page band or inside a surface of its own, so surfaces do
46
+ * not nest. The layout is unchanged.
47
+ */
48
+ surface?: 'card' | 'none';
42
49
  } & Pick<IconButtonProps, 'variant' | 'color'> & Omit<React.HTMLAttributes<HTMLDivElement>, 'title'>;
43
- export declare function EntityHeader({ color, variant, icon, leading, title, headingLevel, status, metadata, stats, actions, className, children, ...props }: EntityHeaderProps): import("react").JSX.Element;
50
+ export declare function EntityHeader({ color, variant, icon, leading, title, headingLevel, status, metadata, stats, actions, surface, className, children, ...props }: EntityHeaderProps): import("react").JSX.Element;
@@ -24,6 +24,7 @@ export * from './markdown/index.js';
24
24
  export * from './metrics/index.js';
25
25
  export * from './param-table/index.js';
26
26
  export * from './period-cards/index.js';
27
+ export * from './person-cell/index.js';
27
28
  export * from './qrcode/index.js';
28
29
  export * from './recovery-codes/index.js';
29
30
  export * from './recovery-codes-status/index.js';
@@ -35,6 +36,7 @@ export * from './status-indicator/index.js';
35
36
  export * from './summary-data/index.js';
36
37
  export * from './terminal/index.js';
37
38
  export * from './timeline/index.js';
39
+ export * from './tone-value/index.js';
38
40
  export * from './totals-list/index.js';
39
41
  export * from './tube-cap/index.js';
40
42
  export * from './vote-tally/index.js';
@@ -0,0 +1 @@
1
+ export * from './person-cell.js';
@@ -0,0 +1,23 @@
1
+ import { Tone } from '../../tones.js';
2
+ export type PersonCellProps = {
3
+ /** The person's name, truncated with an ellipsis when it does not fit; the full text stays in the DOM. */
4
+ name: string;
5
+ /** A picture; the initials show in its place until it loads or when it fails. */
6
+ src?: string;
7
+ /** The letters shown without a picture. Unset: derived from `name` (`'Ada Lovelace'` → `'AL'`). */
8
+ initials?: string;
9
+ /** The tone of the initials. Unset: neutral. */
10
+ tone?: Tone;
11
+ /** A muted line under the name (a role, an email, a team), truncated too. */
12
+ description?: string;
13
+ /** `'sm'` (24 px avatar) fits a table row; `'md'` (32 px) a card or a list. */
14
+ size?: 'sm' | 'md';
15
+ className?: string;
16
+ };
17
+ /**
18
+ * An avatar before a name, for the first column of a table of people or the
19
+ * title of a card. The avatar is decorative (`aria-hidden`): the name is the
20
+ * text a screen reader and a row link read. Takes the width it is given and
21
+ * truncates (`min-w-0`), so it holds on a phone.
22
+ */
23
+ export declare function PersonCell({ name, src, initials, tone, description, size, className, }: PersonCellProps): import("react").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { type ToneBand, type ToneBands, toneBands, } from '@nxgt/material-core/cell-tone';
2
+ export * from './tone-value.js';
@@ -0,0 +1,23 @@
1
+ import { ComponentProps, ReactNode } from 'react';
2
+ import { Tone } from '../../tones.js';
3
+ export type ToneValueProps = Omit<ComponentProps<'span'>, 'children'> & {
4
+ /** The tone: a named tone or one the app declared in `AppTones`. `undefined` renders the value as is. */
5
+ tone?: Tone;
6
+ /** The value shown. */
7
+ children?: ReactNode;
8
+ /**
9
+ * Words for a screen reader after the value (`'Low'`), visually hidden. The
10
+ * mark is `aria-hidden`: without a label the tone is for sighted users only.
11
+ */
12
+ label?: string;
13
+ };
14
+ /**
15
+ * A value in the text colour of its tone, with a small shape before it (a
16
+ * diamond for `error`, a triangle for `warning`, a circle for `success`, a
17
+ * square for any other tone; none for `neutral`), so the tone survives when
18
+ * the colour does not (forced colours, colour blindness, a black and white
19
+ * print). The cells of `DataTable`, `ServerTable` and `DataGrid` wear it for a
20
+ * column with `meta.tone`; import it for a `renderCard` or any figure of your
21
+ * own. With no `tone` it renders the value in a plain span, without a mark.
22
+ */
23
+ export declare function ToneValue({ tone, label, className, children, ...props }: ToneValueProps): import("react").JSX.Element;
@@ -1,10 +1,15 @@
1
1
  import { ReactNode } from 'react';
2
+ import { ButtonVariant } from '../../../actions/button/button.js';
2
3
  type Props = {
3
4
  onRetry?: () => unknown;
4
5
  retrying?: boolean;
5
6
  retryLabel?: ReactNode;
6
7
  action?: ReactNode;
8
+ /** The Retry button's variant (outlined by default). */
9
+ retryVariant?: ButtonVariant;
10
+ /** The Retry button's `data-slot`. */
11
+ retrySlot?: string;
7
12
  };
8
13
  /** Retry (loading while a returned promise is pending), then the extra actions. */
9
- export declare function ErrorStateActions({ onRetry, retrying, retryLabel, action, }: Props): import("react").JSX.Element;
14
+ export declare function ErrorStateActions({ onRetry, retrying, retryLabel, action, retryVariant, retrySlot, }: Props): import("react").JSX.Element;
10
15
  export {};