@nxgt/material 3.88.1 → 3.91.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.
- package/CHANGELOG.md +50 -0
- package/README.md +8 -5
- package/dist/{alert-dialog-CEGs7LMN.js → alert-dialog-BFk4ye-3.js} +1 -1
- package/dist/{async-slice-CR0M95Jq.js → async-slice-gGyfyUw2.js} +1 -1
- package/dist/{button-DuTNpo28.js → button-C5OEq9bi.js} +1 -1
- package/dist/{calculator-DsGk_fCw.js → calculator-Dg_L6d3R.js} +16 -16
- package/dist/calculator-field.js +6 -6
- package/dist/{calculator-segment-DMFptsDf.js → calculator-segment-CvAaDqKf.js} +1 -1
- package/dist/calculator.js +1 -1
- package/dist/charts.js +3 -3
- package/dist/{chip-C-RAjar5.js → chip-DOxFA4BI.js} +2 -2
- package/dist/{code-editor-DApeIOZ3.js → code-editor-tiAjhXW-.js} +4 -4
- package/dist/code-editor.js +4 -4
- package/dist/{code-language-items-CGtYfc1l.js → code-language-items-CcdzQvLT.js} +2 -2
- package/dist/{components-DiEY0nrG.js → components-G0nEVa52.js} +19744 -19404
- package/dist/components.js +38 -37
- package/dist/{conversion-variant-DfQiOwYC.js → conversion-variant-4gCdFWV-.js} +3 -3
- package/dist/currency-field-CIqe7Wg4.js +289 -0
- package/dist/{dialog-Bul68q8u.js → dialog-d6Kdf5wc.js} +3 -3
- package/dist/dnd.js +1 -1
- package/dist/{dropdown-menu-xUUE5X6T.js → dropdown-menu-DO5kUvof.js} +1 -1
- package/dist/editor.js +139 -139
- package/dist/{empty-state-D7ofGDU_.js → empty-state-DQnICuun.js} +1 -1
- package/dist/{financial-variant-CYgRZzKT.js → financial-variant-D80C1hVD.js} +14 -14
- package/dist/{hooks-CpvvZCs7.js → hooks-C-yLDF39.js} +2 -2
- package/dist/hooks.js +2 -2
- package/dist/{hover-card-CZLFQwZv.js → hover-card-DU3TAME4.js} +1 -1
- package/dist/i18n.js +3 -3
- package/dist/{icon-badge-0Xo9q7Ey.js → icon-badge-BGczZ4Hc.js} +1 -1
- package/dist/{icon-button-DE1EcO2-.js → icon-button-D0xjBCst.js} +1 -1
- package/dist/input-group-CSlXMFxu.js +70 -0
- package/dist/lib/components/ui/actions/back-link/back-link.d.ts +10 -2
- package/dist/lib/components/ui/collections/data-grid/grid-cell-tone.d.ts +12 -0
- package/dist/lib/components/ui/collections/data-grid/partials/grid-cell-access.d.ts +4 -3
- package/dist/lib/components/ui/collections/data-grid/partials/grid-cell-flags.d.ts +12 -0
- package/dist/lib/components/ui/collections/data-grid/partials/grid-cell-value.d.ts +4 -1
- package/dist/lib/components/ui/collections/data-table/partials/data-table-cell-content.d.ts +11 -0
- package/dist/lib/components/ui/collections/data-table/table-meta.d.ts +50 -2
- package/dist/lib/components/ui/collections/filter/use-filter-field-config.d.ts +1 -0
- package/dist/lib/components/ui/collections/list-pane/list-pane-item.d.ts +3 -1
- package/dist/lib/components/ui/collections/list-pane/partials/list-pane-item-content.d.ts +2 -1
- package/dist/lib/components/ui/dates/age-field/age-field.d.ts +8 -0
- package/dist/lib/components/ui/dates/age-field/age-form-field.d.ts +8 -0
- package/dist/lib/components/ui/dates/age-field/age-reading.d.ts +11 -0
- package/dist/lib/components/ui/dates/age-field/age-value.d.ts +9 -0
- package/dist/lib/components/ui/dates/age-field/index.d.ts +4 -0
- package/dist/lib/components/ui/dates/age-field/types.d.ts +40 -0
- package/dist/lib/components/ui/dates/index.d.ts +1 -0
- package/dist/lib/components/ui/display/badge/badge.d.ts +4 -1
- package/dist/lib/components/ui/display/entity-header/entity-header.d.ts +8 -1
- package/dist/lib/components/ui/display/index.d.ts +2 -0
- package/dist/lib/components/ui/display/person-cell/index.d.ts +1 -0
- package/dist/lib/components/ui/display/person-cell/person-cell.d.ts +23 -0
- package/dist/lib/components/ui/display/tone-value/index.d.ts +2 -0
- package/dist/lib/components/ui/display/tone-value/tone-value.d.ts +23 -0
- package/dist/lib/components/ui/feedback/error-state/partials/error-state-actions.d.ts +6 -1
- package/dist/lib/components/ui/feedback/page-load-failed/page-load-failed.d.ts +8 -1
- package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
- package/dist/lib/components/ui/fields/number-field/number-control.d.ts +2 -2
- package/dist/lib/components/ui/fields/switch/partials/switch-row.d.ts +4 -2
- package/dist/lib/components/ui/fields/switch/switch.d.ts +7 -1
- package/dist/lib/components/ui/layout/app-shell/activity-content-aside-parts.d.ts +68 -0
- package/dist/lib/components/ui/layout/app-shell/activity-content-aside-toggle.d.ts +22 -0
- package/dist/lib/components/ui/layout/app-shell/activity-content-aside.d.ts +5 -2
- package/dist/lib/components/ui/layout/app-shell/activity-content-aside.types.d.ts +13 -0
- package/dist/lib/components/ui/layout/app-shell/activity-content.d.ts +3 -2
- package/dist/lib/components/ui/layout/app-shell/app-shell.utils.d.ts +3 -1
- package/dist/lib/components/ui/layout/app-shell/app-sidebar-entries.d.ts +5 -2
- package/dist/lib/components/ui/layout/app-shell/app-sidebar-icon-item.d.ts +2 -1
- package/dist/lib/components/ui/layout/app-shell/app-sidebar.d.ts +3 -1
- package/dist/lib/components/ui/layout/app-shell/types.d.ts +14 -5
- package/dist/lib/components/ui/layout/sticky-action-bar/sticky-action-bar.d.ts +3 -1
- package/dist/lib/components/ui/layout/sticky-action-bar/use-bar-clearance.d.ts +10 -0
- package/dist/lib/components/ui/primitives/tabs/partials/tabs-list.d.ts +8 -2
- package/dist/lib/components/ui/primitives/tabs/tabs-nav.d.ts +5 -1
- package/dist/lib/components/ui/primitives/tabs/tabs-overflow-classes.d.ts +3 -0
- package/dist/lib/components/ui/selection/sortable-list/index.d.ts +1 -1
- package/dist/lib/components/ui/selection/sortable-list/sortable-list-context.d.ts +3 -1
- package/dist/lib/components/ui/selection/sortable-list/sortable-list.d.ts +6 -2
- package/dist/lib/components/ui/selection/sortable-list/types.d.ts +1 -0
- package/dist/lib/components/ui/selection/sortable-list/use-sortable-list-labels.d.ts +3 -0
- package/dist/lib/i18n/resources/en/en.d.ts +11 -0
- package/dist/lib/i18n/resources/en/material.json.d.ts +12 -1
- package/dist/lib/i18n/resources/fr/fr.d.ts +11 -0
- package/dist/lib/i18n/resources/fr/material.json.d.ts +12 -1
- package/dist/lib/i18n/resources/resources.d.ts +22 -0
- package/dist/lib/i18n/translator.d.ts +1 -1
- package/dist/lib.js +1 -1
- package/dist/main.js +54 -53
- package/dist/map.js +7 -7
- package/dist/material.css +1 -1
- package/dist/pdf-reader.js +1 -1
- package/dist/{percent-field-BFwxazf1.js → percent-field-DyJ2yOH4.js} +1 -1
- package/dist/{picker-surface-DkfTv_ft.js → picker-surface-CnlOKQ3D.js} +4 -4
- package/dist/{popover-BM6xApJd.js → popover-BevReSHi.js} +1 -1
- package/dist/{pos-types-CpTpT4vE.js → pos-types-BrZBX0Zg.js} +1 -1
- package/dist/{pos-variant-Bs5BUB1L.js → pos-variant-G12HCSfQ.js} +4 -4
- package/dist/print.js +1 -1
- package/dist/{programmer-variant-B1eI1fd0.js → programmer-variant-WWLwTGRF.js} +2 -2
- package/dist/{public-CzLMnSsS.js → public-C1a6wQ6o.js} +19 -19
- package/dist/{rich-code-block-CdVtxD75.js → rich-code-block-Dh9J-VZ8.js} +5 -5
- package/dist/{scientific-variant-rfvJKxB4.js → scientific-variant-BvutlF8a.js} +2 -2
- package/dist/{sortable-provider-BopzsciJ.js → sortable-provider-BrA5tfJX.js} +2 -2
- package/dist/{spinner-DcW21pN1.js → spinner-JnLLiLIO.js} +1 -1
- package/dist/{tabs-CdoBFtWx.js → tabs-dXCZGShv.js} +63 -61
- package/dist/theme-picker.js +2 -2
- package/dist/{theme-toggle-Ch3GkDDU.js → theme-toggle-BmcK6mXV.js} +1 -1
- package/dist/{toolbar-items-CZ1lJXZZ.js → toolbar-items-B-kMYsDT.js} +4 -4
- package/dist/{translate-material-BrYBBZ66.js → translate-material-BmpcP1p1.js} +1 -1
- package/dist/{translator-DoVsjUff.js → translator-CfoXTrZd.js} +24 -2
- package/dist/{use-chat-composer-C9DG7O1Z.js → use-chat-composer-DFD_eF-r.js} +4197 -4246
- package/dist/{use-heading-spy-kyOSe9rb.js → use-heading-spy-BcNK1qvq.js} +4 -4
- package/dist/{use-material-translation-BdrItuwY.js → use-material-translation-DoymV6IP.js} +1 -1
- package/dist/{use-return-focus-Cqzvj9R0.js → use-return-focus-CLEnhfka.js} +1 -1
- package/docs/components/README.md +2 -1
- package/docs/components/buttons-and-actions.md +10 -1
- package/docs/components/data-display.md +80 -4
- package/docs/components/data-table-filter-and-lists.md +56 -3
- package/docs/components/date-and-time.md +53 -1
- package/docs/components/feedback-and-status.md +20 -3
- package/docs/components/form-fields.md +11 -2
- package/docs/components/navigation-and-layout.md +7 -2
- package/docs/components/primitives.md +7 -0
- package/docs/components/selection-and-choice.md +4 -2
- package/docs/guides/app-shell.md +46 -11
- package/docs/guides/data-grid.md +12 -0
- package/docs/guides/forms.md +1 -0
- package/docs/guides/i18n.md +1 -1
- package/docs/previews/data-display-personcell.webp +0 -0
- package/docs/previews/data-display-tonevalue.webp +0 -0
- package/docs/previews/date-time-agefield.webp +0 -0
- package/docs/roadmap.md +23 -0
- package/docs/troubleshooting.md +4 -0
- package/package.json +2 -2
- 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-
|
|
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 {
|
|
2
|
-
import { t as i } from "./use-material-translation-
|
|
3
|
-
import { r as a, t as o } from "./currency-field-
|
|
4
|
-
import { t as s } from "./percent-field-
|
|
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-
|
|
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(
|
|
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__ */ _(
|
|
440
|
+
children: [/* @__PURE__ */ _(n, {
|
|
441
441
|
"aria-label": a(`${$}.tabs.label`, "Calculation"),
|
|
442
442
|
className: "nxgt-fin-tablist",
|
|
443
|
-
children: c.map(([
|
|
444
|
-
value:
|
|
443
|
+
children: c.map(([e, n]) => /* @__PURE__ */ _(t, {
|
|
444
|
+
value: e,
|
|
445
445
|
children: n
|
|
446
|
-
},
|
|
447
|
-
}), c.map(([
|
|
448
|
-
value:
|
|
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__ */ _(
|
|
452
|
-
},
|
|
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-
|
|
2
|
-
import { n as t } from "./use-heading-spy-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
3
|
-
import { i as u, n as d, r as f, t as p } from "./translate-material-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
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,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
|
+
};
|
|
@@ -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,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 {};
|