@nxgt/material 3.88.0 → 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 (141) hide show
  1. package/CHANGELOG.md +58 -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-h9hXBEQB.js → button-C5OEq9bi.js} +3 -3
  6. package/dist/{calculator-Dn_KL0b0.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/ui/dates/duration-field/duration-field-expressive.css +1 -1
  16. package/dist/components/ui/dates/picker-trigger/typed-box-expressive.css +5 -24
  17. package/dist/{components-BIATLurA.js → components-HQy9UW9D.js} +19905 -19582
  18. package/dist/components.js +38 -37
  19. package/dist/{conversion-variant-Cf0sEmnS.js → conversion-variant-4gCdFWV-.js} +3 -3
  20. package/dist/currency-field-CIqe7Wg4.js +289 -0
  21. package/dist/{dialog-Bul68q8u.js → dialog-d6Kdf5wc.js} +3 -3
  22. package/dist/dnd.js +1 -1
  23. package/dist/{dropdown-menu-xUUE5X6T.js → dropdown-menu-DO5kUvof.js} +1 -1
  24. package/dist/editor.js +139 -139
  25. package/dist/{empty-state-CCRfjt0n.js → empty-state-DQnICuun.js} +8 -7
  26. package/dist/{financial-variant-CYgRZzKT.js → financial-variant-D80C1hVD.js} +14 -14
  27. package/dist/{hooks-Dzc6xz5t.js → hooks-C-yLDF39.js} +2 -2
  28. package/dist/hooks.js +2 -2
  29. package/dist/{hover-card-CZLFQwZv.js → hover-card-DU3TAME4.js} +1 -1
  30. package/dist/i18n.js +3 -3
  31. package/dist/{icon-badge-0Xo9q7Ey.js → icon-badge-BGczZ4Hc.js} +1 -1
  32. package/dist/{icon-button-DE1EcO2-.js → icon-button-D0xjBCst.js} +1 -1
  33. package/dist/input-group-CSlXMFxu.js +70 -0
  34. package/dist/lib/components/ui/actions/back-link/back-link.d.ts +10 -2
  35. package/dist/lib/components/ui/collections/data-grid/grid-cell-tone.d.ts +12 -0
  36. package/dist/lib/components/ui/collections/data-grid/partials/grid-cell-access.d.ts +4 -3
  37. package/dist/lib/components/ui/collections/data-grid/partials/grid-cell-flags.d.ts +12 -0
  38. package/dist/lib/components/ui/collections/data-grid/partials/grid-cell-value.d.ts +4 -1
  39. package/dist/lib/components/ui/collections/data-table/partials/data-table-cell-content.d.ts +11 -0
  40. package/dist/lib/components/ui/collections/data-table/table-meta.d.ts +50 -2
  41. package/dist/lib/components/ui/collections/filter/use-filter-field-config.d.ts +1 -0
  42. package/dist/lib/components/ui/collections/list-pane/list-pane-item.d.ts +3 -1
  43. package/dist/lib/components/ui/collections/list-pane/partials/list-pane-item-content.d.ts +2 -1
  44. package/dist/lib/components/ui/collections/server-table/server-table-classes.d.ts +5 -2
  45. package/dist/lib/components/ui/dates/age-field/age-field.d.ts +8 -0
  46. package/dist/lib/components/ui/dates/age-field/age-form-field.d.ts +8 -0
  47. package/dist/lib/components/ui/dates/age-field/age-reading.d.ts +11 -0
  48. package/dist/lib/components/ui/dates/age-field/age-value.d.ts +9 -0
  49. package/dist/lib/components/ui/dates/age-field/index.d.ts +4 -0
  50. package/dist/lib/components/ui/dates/age-field/types.d.ts +40 -0
  51. package/dist/lib/components/ui/dates/index.d.ts +1 -0
  52. package/dist/lib/components/ui/dates/picker-trigger/typed-box.d.ts +1 -1
  53. package/dist/lib/components/ui/display/badge/badge.d.ts +4 -1
  54. package/dist/lib/components/ui/display/entity-header/entity-header.d.ts +8 -1
  55. package/dist/lib/components/ui/display/index.d.ts +2 -0
  56. package/dist/lib/components/ui/display/list-tile/list-tile.d.ts +2 -1
  57. package/dist/lib/components/ui/display/list-tile/partials/list-tile-line.d.ts +1 -1
  58. package/dist/lib/components/ui/display/list-tile/partials/list-tile-row.d.ts +3 -1
  59. package/dist/lib/components/ui/display/person-cell/index.d.ts +1 -0
  60. package/dist/lib/components/ui/display/person-cell/person-cell.d.ts +23 -0
  61. package/dist/lib/components/ui/display/tone-value/index.d.ts +2 -0
  62. package/dist/lib/components/ui/display/tone-value/tone-value.d.ts +23 -0
  63. package/dist/lib/components/ui/feedback/error-state/partials/error-state-actions.d.ts +6 -1
  64. package/dist/lib/components/ui/feedback/page-load-failed/page-load-failed.d.ts +8 -1
  65. package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
  66. package/dist/lib/components/ui/fields/number-field/number-control.d.ts +2 -2
  67. package/dist/lib/components/ui/fields/switch/partials/switch-row.d.ts +4 -2
  68. package/dist/lib/components/ui/fields/switch/switch.d.ts +7 -1
  69. package/dist/lib/components/ui/layout/app-shell/activity-content-aside-parts.d.ts +68 -0
  70. package/dist/lib/components/ui/layout/app-shell/activity-content-aside-toggle.d.ts +22 -0
  71. package/dist/lib/components/ui/layout/app-shell/activity-content-aside.d.ts +5 -2
  72. package/dist/lib/components/ui/layout/app-shell/activity-content-aside.types.d.ts +13 -0
  73. package/dist/lib/components/ui/layout/app-shell/activity-content.d.ts +3 -2
  74. package/dist/lib/components/ui/layout/app-shell/app-shell.utils.d.ts +3 -1
  75. package/dist/lib/components/ui/layout/app-shell/app-sidebar-entries.d.ts +5 -2
  76. package/dist/lib/components/ui/layout/app-shell/app-sidebar-icon-item.d.ts +2 -1
  77. package/dist/lib/components/ui/layout/app-shell/app-sidebar.d.ts +3 -1
  78. package/dist/lib/components/ui/layout/app-shell/types.d.ts +14 -5
  79. package/dist/lib/components/ui/primitives/tabs/partials/tabs-list.d.ts +8 -2
  80. package/dist/lib/components/ui/primitives/tabs/tabs-nav.d.ts +5 -1
  81. package/dist/lib/components/ui/primitives/tabs/tabs-overflow-classes.d.ts +3 -0
  82. package/dist/lib/components/ui/selection/sortable-list/index.d.ts +1 -1
  83. package/dist/lib/components/ui/selection/sortable-list/sortable-list-context.d.ts +3 -1
  84. package/dist/lib/components/ui/selection/sortable-list/sortable-list.d.ts +6 -2
  85. package/dist/lib/components/ui/selection/sortable-list/types.d.ts +1 -0
  86. package/dist/lib/components/ui/selection/sortable-list/use-sortable-list-labels.d.ts +3 -0
  87. package/dist/lib/i18n/resources/en/en.d.ts +11 -0
  88. package/dist/lib/i18n/resources/en/material.json.d.ts +12 -1
  89. package/dist/lib/i18n/resources/fr/fr.d.ts +11 -0
  90. package/dist/lib/i18n/resources/fr/material.json.d.ts +12 -1
  91. package/dist/lib/i18n/resources/resources.d.ts +22 -0
  92. package/dist/lib/i18n/translator.d.ts +1 -1
  93. package/dist/lib.js +1 -1
  94. package/dist/main.js +54 -53
  95. package/dist/map.js +7 -7
  96. package/dist/material.css +1 -1
  97. package/dist/pdf-reader.js +1 -1
  98. package/dist/{percent-field-BFwxazf1.js → percent-field-DyJ2yOH4.js} +1 -1
  99. package/dist/{picker-surface-DkfTv_ft.js → picker-surface-CnlOKQ3D.js} +4 -4
  100. package/dist/{popover-BM6xApJd.js → popover-BevReSHi.js} +1 -1
  101. package/dist/{pos-types-CpTpT4vE.js → pos-types-BrZBX0Zg.js} +1 -1
  102. package/dist/{pos-variant-Bs5BUB1L.js → pos-variant-G12HCSfQ.js} +4 -4
  103. package/dist/print.js +1 -1
  104. package/dist/{programmer-variant-B1eI1fd0.js → programmer-variant-WWLwTGRF.js} +2 -2
  105. package/dist/{public-CX7ik5Yg.js → public-C1a6wQ6o.js} +19 -19
  106. package/dist/{rich-code-block-CdVtxD75.js → rich-code-block-Dh9J-VZ8.js} +5 -5
  107. package/dist/{scientific-variant-rfvJKxB4.js → scientific-variant-BvutlF8a.js} +2 -2
  108. package/dist/{sortable-provider-BopzsciJ.js → sortable-provider-BrA5tfJX.js} +2 -2
  109. package/dist/{spinner-DcW21pN1.js → spinner-JnLLiLIO.js} +1 -1
  110. package/dist/{tabs-CdoBFtWx.js → tabs-dXCZGShv.js} +63 -61
  111. package/dist/theme-picker.js +2 -2
  112. package/dist/{theme-toggle-Ch3GkDDU.js → theme-toggle-BmcK6mXV.js} +1 -1
  113. package/dist/{toolbar-items-CZ1lJXZZ.js → toolbar-items-B-kMYsDT.js} +4 -4
  114. package/dist/{translate-material-BrYBBZ66.js → translate-material-BmpcP1p1.js} +1 -1
  115. package/dist/{translator-DoVsjUff.js → translator-CfoXTrZd.js} +24 -2
  116. package/dist/{use-chat-composer-BjKhuLfT.js → use-chat-composer-DFD_eF-r.js} +4197 -4246
  117. package/dist/{use-heading-spy-CGTTRV2N.js → use-heading-spy-BcNK1qvq.js} +4 -4
  118. package/dist/{use-material-translation-BdrItuwY.js → use-material-translation-DoymV6IP.js} +1 -1
  119. package/dist/{use-return-focus-Cqzvj9R0.js → use-return-focus-CLEnhfka.js} +1 -1
  120. package/docs/components/README.md +2 -1
  121. package/docs/components/buttons-and-actions.md +10 -1
  122. package/docs/components/data-display.md +80 -4
  123. package/docs/components/data-table-filter-and-lists.md +57 -4
  124. package/docs/components/date-and-time.md +53 -1
  125. package/docs/components/feedback-and-status.md +11 -2
  126. package/docs/components/form-fields.md +11 -2
  127. package/docs/components/navigation-and-layout.md +2 -2
  128. package/docs/components/primitives.md +7 -0
  129. package/docs/components/selection-and-choice.md +4 -2
  130. package/docs/guides/app-shell.md +46 -11
  131. package/docs/guides/data-grid.md +12 -0
  132. package/docs/guides/forms.md +1 -0
  133. package/docs/guides/i18n.md +1 -1
  134. package/docs/previews/data-display-personcell.webp +0 -0
  135. package/docs/previews/data-display-tonevalue.webp +0 -0
  136. package/docs/previews/date-time-agefield.webp +0 -0
  137. package/docs/roadmap.md +23 -0
  138. package/lib/components/ui/dates/duration-field/duration-field-expressive.css +1 -1
  139. package/lib/components/ui/dates/picker-trigger/typed-box-expressive.css +5 -24
  140. package/package.json +2 -2
  141. 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";
@@ -39,12 +39,13 @@ function E({ kind: e }) {
39
39
  }
40
40
  //#endregion
41
41
  //#region lib/components/ui/feedback/state-frame/state-scene-illustration.tsx
42
- function D({ scene: e, size: t }) {
42
+ function D({ scene: e, size: t, loading: n }) {
43
43
  return /* @__PURE__ */ f("div", {
44
44
  "data-slot": "illustration",
45
45
  "data-scene": e,
46
46
  "data-size": t,
47
- "data-fallback": "",
47
+ "data-fallback": n ? void 0 : "",
48
+ "data-loading": n ? "" : void 0,
48
49
  "aria-hidden": "true",
49
50
  children: /* @__PURE__ */ f(r, {
50
51
  kind: l[e] ?? "empty",
@@ -61,10 +62,10 @@ var O = a("illustration", async () => {
61
62
  }, D);
62
63
  function k({ scene: e, size: t }) {
63
64
  return /* @__PURE__ */ f(d, {
64
- fallback: /* @__PURE__ */ f("div", {
65
- "data-slot": "illustration",
66
- "data-size": t,
67
- "aria-hidden": "true"
65
+ fallback: /* @__PURE__ */ f(D, {
66
+ scene: e,
67
+ size: t,
68
+ loading: !0
68
69
  }),
69
70
  children: /* @__PURE__ */ f(O, {
70
71
  scene: e,
@@ -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-CGTTRV2N.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-CGTTRV2N.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-Dzc6xz5t.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;
@@ -4,8 +4,11 @@
4
4
  * card in a card (#2292). */
5
5
  export declare const SERVER_TABLE_CLASS = "grid w-full min-w-0 gap-3 bg-background/80 p-4 max-md:bg-transparent max-md:p-0";
6
6
  /** `surface: 'none'`: the list sits on its container's surface (a Card, a
7
- * page section), so it draws no surface and no padding of its own. */
8
- export declare const SERVER_TABLE_FLUSH_CLASS = "bg-transparent p-0";
7
+ * page section), so it draws no surface and no padding of its own. The
8
+ * `Table` primitive's scroll wrapper keeps its `p-1` (room for its shadow) on
9
+ * the card surface; here it is zeroed so the header band and rows line up
10
+ * with the container's other content (#2570). */
11
+ export declare const SERVER_TABLE_FLUSH_CLASS = "bg-transparent p-0 [&_div[data-slot=table]]:p-0";
9
12
  /** The `DataTable` inside: the surface and its padding are the list's. */
10
13
  export declare const SERVER_TABLE_TABLE_CLASS = "bg-transparent p-0";
11
14
  /** The top band: the title, the search landmark (the bar, the chips row under it), the page's actions; one compact, wrapping row. */
@@ -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';
@@ -32,7 +32,7 @@ export type TypedBoxProps = {
32
32
  * button while they hold something, and the button that opens the picker.
33
33
  * Its look is the field box's (`fieldBoxAttributes`): filled, open, the
34
34
  * focus look while a segment has focus, invalid and disabled. `data-tonal`
35
- * marks the tonal box of typed-box-expressive.css; the compact `'sm'` box is
35
+ * marks the shared bordered box that typed-box-expressive.css styles; the compact `'sm'` box is
36
36
  * a plain outlined one (typed-box-compact.ts).
37
37
  */
38
38
  export declare function TypedBox({ ref, children, filled, open, invalid, disabled, onLeave, onClear, first, clearLabel, buttonsDescribedBy, suffix, openButton, size, className, }: TypedBoxProps): import("react").JSX.Element;
@@ -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';
@@ -12,7 +12,8 @@ export type ListTileCommonProps = {
12
12
  * The tile is the current one. A link tile (`href`) gets
13
13
  * `aria-current="page"` (pass your own `aria-current`, such as `"true"`
14
14
  * for a selection that is not a page, to replace it) and the selected look;
15
- * a button tile (`onClick`) gets `aria-pressed`. For list-detail
15
+ * a button tile (`onClick`) gets `aria-pressed` only when `selected` is
16
+ * given (a plain clickable tile is not a toggle). For list-detail
16
17
  * navigation, give `selected` from the router's location and the tile
17
18
  * keeps a shareable URL.
18
19
  */