@nxgt/material 3.50.0 → 3.52.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 (95) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/{async-slice-3loEtzUY.js → async-slice-BGtmF3K5.js} +2 -2
  3. package/dist/{button-BRUaHD8z.js → button-Ct0KRBsN.js} +1 -1
  4. package/dist/charts.js +3 -3
  5. package/dist/{chip-DneTrtNj.js → chip-Ca1SEd70.js} +2 -2
  6. package/dist/{code-editor-R_nPN_-d.js → code-editor-DtwRhK8B.js} +6 -6
  7. package/dist/code-editor.js +5 -5
  8. package/dist/{code-language-items-BKEUhQlF.js → code-language-items-CEclGxhA.js} +2 -2
  9. package/dist/components/ui/layout/app-shell/activity-backdrop-shapes.css +14 -9
  10. package/dist/components/ui/layout/auth-card/auth-card-backdrop.css +2 -2
  11. package/dist/{components-D6xFLcoE.js → components-CzELzsOi.js} +6006 -5824
  12. package/dist/components.js +19 -19
  13. package/dist/{dialog-S7dLsYRZ.js → dialog-BIy04Hpd.js} +4 -4
  14. package/dist/dnd.js +1 -1
  15. package/dist/{dropdown-menu-XLlxfDgq.js → dropdown-menu-B0Kd8x3G.js} +1 -1
  16. package/dist/editor.js +9 -9
  17. package/dist/{empty-state-Dsf6R-Zo.js → empty-state-CKxORwFE.js} +2 -2
  18. package/dist/{escape-owner-B9eCwjLw.js → escape-owner-BGKjiglh.js} +1 -1
  19. package/dist/{field-blur-5uRDFHvB.js → field-blur-Dz1zPaYK.js} +1 -1
  20. package/dist/{field-blur-context-Cwt4TuBq.js → field-blur-context-1T6GkSNc.js} +1 -1
  21. package/dist/hooks.js +2 -2
  22. package/dist/{hover-card-PHUgRSjJ.js → hover-card-BwQ9IRxa.js} +2 -2
  23. package/dist/{i18n-provider-DPM_ALQ4.js → i18n-provider-BFNrM0Qu.js} +14 -12
  24. package/dist/i18n.js +5 -5
  25. package/dist/{icon-badge-Dh6-FNOF.js → icon-badge-D5Ns7ndZ.js} +3 -3
  26. package/dist/{icon-button-DSC2-IAG.js → icon-button-VzdqY_Tv.js} +1 -1
  27. package/dist/lib/components/ui/collections/data-table/data-table-selection-host.d.ts +7 -0
  28. package/dist/lib/components/ui/collections/data-table/internal.d.ts +1 -0
  29. package/dist/lib/components/ui/collections/data-table/partials/layouts/data-table-list-bar.d.ts +2 -1
  30. package/dist/lib/components/ui/collections/server-table/partials/filtered-server-table.d.ts +9 -0
  31. package/dist/lib/components/ui/collections/server-table/partials/server-table-band-view.d.ts +18 -0
  32. package/dist/lib/components/ui/collections/server-table/partials/server-table-band.d.ts +10 -1
  33. package/dist/lib/components/ui/collections/server-table/partials/server-table-bulk-buttons.d.ts +3 -2
  34. package/dist/lib/components/ui/collections/server-table/partials/server-table-bulk-more.d.ts +4 -2
  35. package/dist/lib/components/ui/collections/server-table/partials/server-table-bulk.d.ts +2 -1
  36. package/dist/lib/components/ui/collections/server-table/partials/server-table-controls.d.ts +16 -0
  37. package/dist/lib/components/ui/collections/server-table/partials/server-table-grid.d.ts +3 -1
  38. package/dist/lib/components/ui/collections/server-table/partials/server-table-selection-bar.d.ts +17 -0
  39. package/dist/lib/components/ui/collections/server-table/partials/server-table-view.d.ts +15 -0
  40. package/dist/lib/components/ui/collections/server-table/partials/use-server-table-list-root.d.ts +10 -0
  41. package/dist/lib/components/ui/collections/server-table/partials/use-server-table-phone-row.d.ts +15 -0
  42. package/dist/lib/components/ui/collections/server-table/partials/use-server-table-selection-slots.d.ts +24 -0
  43. package/dist/lib/components/ui/collections/server-table/use-selection-band.d.ts +14 -0
  44. package/dist/lib/components/ui/display/change-history/types.d.ts +2 -1
  45. package/dist/lib/components/ui/display/description/description.d.ts +2 -2
  46. package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
  47. package/dist/lib/components/ui/fields/verification-code/use-resend-focus.d.ts +4 -1
  48. package/dist/lib/components/ui/layout/app-shell/use-keep-shapes-inside.d.ts +12 -1
  49. package/dist/lib/components/ui/primitives/tabs/tabs-overflow-classes.d.ts +8 -5
  50. package/dist/lib/components/ui/primitives/tabs/use-tabs-overflow.d.ts +4 -3
  51. package/dist/lib/i18n/i18n-provider.d.ts +14 -3
  52. package/dist/lib/i18n/resources/en/en.d.ts +3 -0
  53. package/dist/lib/i18n/resources/en/material.json.d.ts +4 -1
  54. package/dist/lib/i18n/resources/fr/fr.d.ts +3 -0
  55. package/dist/lib/i18n/resources/fr/material.json.d.ts +4 -1
  56. package/dist/lib/i18n/resources/resources.d.ts +6 -0
  57. package/dist/lib/i18n/translate-material.d.ts +7 -1
  58. package/dist/lib/i18n/translator.d.ts +1 -1
  59. package/dist/lib/i18n/types.d.ts +6 -0
  60. package/dist/lib/i18n/use-material-translation.d.ts +4 -0
  61. package/dist/lib.js +1 -1
  62. package/dist/main.js +25 -25
  63. package/dist/map.js +8 -8
  64. package/dist/material.css +1 -1
  65. package/dist/pdf-reader.js +1 -1
  66. package/dist/print.js +5 -4
  67. package/dist/{public-vxiijIJF.js → public-D-J3nZFm.js} +9 -9
  68. package/dist/{rich-code-block-BwvCXPqq.js → rich-code-block-Ig0ERAa2.js} +5 -5
  69. package/dist/{sortable-provider-D2pAFWQB.js → sortable-provider-DfPkSN90.js} +2 -2
  70. package/dist/{spinner-BpVwI1ps.js → spinner-KQb3YuR_.js} +1 -1
  71. package/dist/{stored-language-Beyj2ult.js → stored-language-Cb9FMEwk.js} +8 -2
  72. package/dist/theme-picker.js +2 -2
  73. package/dist/{theme-toggle-BTYRPkP4.js → theme-toggle-BY-SpsFV.js} +1 -1
  74. package/dist/{toolbar-items-CIMo4F9q.js → toolbar-items-30w9rG5h.js} +4 -4
  75. package/dist/translate-material-BPl8TQLg.js +20 -0
  76. package/dist/{translator-CBgIb3zP.js → translator-BnQXtpSZ.js} +1 -1
  77. package/dist/{use-chat-composer-D8UAsX0f.js → use-chat-composer-BSKJRYMB.js} +1678 -1656
  78. package/dist/{use-heading-spy-C5LXtA8Z.js → use-heading-spy-BgXA8uz6.js} +1 -1
  79. package/dist/use-material-translation-ByM3gD9R.js +14 -0
  80. package/docs/components/data-display.md +3 -3
  81. package/docs/components/data-table-filter-and-lists.md +38 -5
  82. package/docs/components/primitives.md +1 -1
  83. package/docs/guides/backgrounds.md +3 -1
  84. package/docs/guides/cards-and-tiles.md +3 -0
  85. package/docs/guides/helpers.md +1 -1
  86. package/docs/guides/i18n.md +30 -8
  87. package/docs/guides/two-factor.md +2 -1
  88. package/docs/previews/guides-i18n-i18nprovider.webp +0 -0
  89. package/docs/previews/guides-i18n-translated-components.webp +0 -0
  90. package/docs/troubleshooting.md +3 -2
  91. package/lib/components/ui/layout/app-shell/activity-backdrop-shapes.css +14 -9
  92. package/lib/components/ui/layout/auth-card/auth-card-backdrop.css +2 -2
  93. package/package.json +1 -1
  94. package/dist/translate-material-DEUlaL_1.js +0 -12
  95. package/dist/use-material-translation-DWWeeg-B.js +0 -14
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # @nxgt/material
2
2
 
3
+ ## 3.52.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1854](https://github.com/softistx/nxgt-material/pull/1854) [`47f15e9`](https://github.com/softistx/nxgt-material/commit/47f15e94d3fb99d83093a928af6f2245c038bf7e) Thanks [@SteveGT96](https://github.com/SteveGT96)! - fix(i18n): `I18nProvider` takes `resources`, the app's `mergeResources(...)` result, and every component reads its `material.*` words from it, so an app translation under `material.*` (for example `RecoveryCodesStatus` or `VerificationCode`) changes the wording as the two-factor guide says. `translateMaterial` takes the same resources as a fifth argument. Without `resources` nothing changes. The i18n guide no longer says overrides never reach the components.
8
+
9
+ ### Patch Changes
10
+
11
+ - [#1859](https://github.com/softistx/nxgt-material/pull/1859) [`a84b25e`](https://github.com/softistx/nxgt-material/commit/a84b25e4a7466958b1b3c38357301a172e2d0267) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Fix two empty cases. `Description` with only `children` now renders them as its value instead of nothing ([#1641](https://github.com/softistx/nxgt-material/issues/1641)), and `ChangeHistory` draws no empty bordered change list for an entry whose `changes` is `[]`; `changes` is now optional ([#1648](https://github.com/softistx/nxgt-material/issues/1648)).
12
+
13
+ - [#1860](https://github.com/softistx/nxgt-material/pull/1860) [`e308a89`](https://github.com/softistx/nxgt-material/commit/e308a890276bbcbdb275ae34cdf68e0587cfae08) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `useColumnHelpers` keeps `columnHelper` and `predefinedColumns` stable across renders (memoised on the translator), so `useMemo` columns keyed on them no longer rebuild and remount every cell, and a dialog opened from a row returns focus to its trigger ([#1644](https://github.com/softistx/nxgt-material/issues/1644)).
14
+
15
+ - [#1861](https://github.com/softistx/nxgt-material/pull/1861) [`8c69148`](https://github.com/softistx/nxgt-material/commit/8c691486dcad53424d3068e2049ccfa5140060a2) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `StepUpDialog` and `VerificationCode`: after a throttled "Resend" the code field takes the focus (WCAG 2.4.3). The dialog's focus trap taking the focus back while "Resend" was pending no longer clears the record of where the focus was, so the throttle moves it on to the field instead of leaving it on the dialog.
16
+
17
+ - [#1857](https://github.com/softistx/nxgt-material/pull/1857) [`07c8c20`](https://github.com/softistx/nxgt-material/commit/07c8c20620ab3815baf0a596db5ef56ac686e6fb) Thanks [@SteveGT96](https://github.com/SteveGT96)! - fix(tabs): the scroll cue of an overflowing `TabsList` stays inside its list. On a touch screen it is 44 wide and as tall as the list (a stated exception to the 44px box) and clipped to it, and it follows a sticky list while any ancestor scrolls (a scroll listener only while the list overflows), so it no longer takes taps aimed at the content under the list ([#1824](https://github.com/softistx/nxgt-material/issues/1824)).
18
+
19
+ ## 3.51.0
20
+
21
+ ### Minor Changes
22
+
23
+ - [#1848](https://github.com/softistx/nxgt-material/pull/1848) [`1b506da`](https://github.com/softistx/nxgt-material/commit/1b506dafb6c7fbb0e2ad287a217f3b950a521e14) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `ServerTable` with `bulkActions` and `filter`: the first selected row turns the band that holds the filter bar into a selection bar in place ([#1718](https://github.com/softistx/nxgt-material/issues/1718)), on the same row and height: "N selected", the bulk actions and a tonal "Cancel" that clears the selection. The search and the page's actions stay mounted, hidden, so the table does not move; clearing the selection brings them back and gives the focus to the control that started the selection, or else to the list. The extra bulk toolbar row that grew from `h-0` is gone, and the cards' and tiles' list bar no longer repeats the count and "Clear selection". On a phone the bar is one row: the first action keeps its button, the others go into an icon "More". The public props are unchanged; without `filter`, or with the facets panel, the bulk actions stay in the table's toolbar. New text keys `material.server-table.bulk-selected`, `bulk-cancel` and `bulk-bar`.
24
+
25
+ Migration: tests that query "Clear selection" in a `ServerTable` with `filter` and `bulkActions` now query `getByRole('button', { name: 'Cancel' })` inside `getByRole('group', { name: 'Selected rows' })`, and `[data-slot="header"]` (the toolbar row) no longer appears on selection. While rows are selected the search is `inert`, so `filterRef.focus()` does nothing; cancel the selection first. Below 768px the band keeps one bulk action and puts the rest in "More".
26
+
27
+ ### Patch Changes
28
+
29
+ - [#1847](https://github.com/softistx/nxgt-material/pull/1847) [`a4f357c`](https://github.com/softistx/nxgt-material/commit/a4f357ca1f73cc724d29963dd4a0637b4fa87f82) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Fix a backdrop shape seen behind a paragraph of body text on a reload, or after a late font load reflows the text with `keepClear="gaps"` (or `true`) on `ActivityLayout`, `AuthCard` and the theme's background ([#1720](https://github.com/softistx/nxgt-material/issues/1720)). The first pass dropped a glyph over the text by fading it out over 150 ms, after the scene was shown, so a shape was drawn behind the text for those frames at phone width and on desktop. A dropped glyph is now hidden at once on the first pass; the fade starts one frame later (`data-settled` on the scene) and still softens every later drop and return. The pass also runs again when a web font finishes loading late, so text that reflows after it keeps its margin.
30
+
3
31
  ## 3.50.0
4
32
 
5
33
  ### Minor Changes
@@ -1,5 +1,5 @@
1
- import { i as e, r as t, t as n } from "./stored-language-Beyj2ult.js";
2
- import { r } from "./translator-CBgIb3zP.js";
1
+ import { i as e, r as t, t as n } from "./stored-language-Cb9FMEwk.js";
2
+ import { r } from "./translator-BnQXtpSZ.js";
3
3
  import { t as i } from "./_baseIsEqual-C6ksIHya.js";
4
4
  import { useMemo as a } from "react";
5
5
  import { asyncThunkCreator as o, buildCreateSlice as s } from "@reduxjs/toolkit";
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { t } from "./is-production-GLw59WU8.js";
3
3
  import { n, t as r } from "./dist-DVRQkaTK.js";
4
- import { n as i, r as a, t as o } from "./spinner-BpVwI1ps.js";
4
+ import { n as i, r as a, t as o } from "./spinner-KQb3YuR_.js";
5
5
  import { a as s, i as c, n as l, o as u, s as d, t as f } from "./use-click-lock-BZYtTmVt.js";
6
6
  import { t as p } from "./button-group-context-CaP0X5p_.js";
7
7
  import { t as m } from "./has-text-content-Ds2dkHX_.js";
package/dist/charts.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { t as e } from "./ui.utils-CAnKTCw5.js";
2
2
  import { t } from "./utils-BLfntITJ.js";
3
3
  import { t as n } from "./warn-once-C_e47JM8.js";
4
- import { t as r } from "./use-material-translation-DWWeeg-B.js";
5
- import { t as i } from "./button-BRUaHD8z.js";
4
+ import { t as r } from "./use-material-translation-ByM3gD9R.js";
5
+ import { t as i } from "./button-Ct0KRBsN.js";
6
6
  import { t as a } from "./use-ssr-media-query-C6M5m8sf.js";
7
7
  import { i as o, n as s, r as c, t as l } from "./util-4heV2LPI.js";
8
8
  import { t as u } from "./useIsomorphicLayoutEffect-DfgAhWcH.js";
9
- import { t as d } from "./chip-DneTrtNj.js";
9
+ import { t as d } from "./chip-Ca1SEd70.js";
10
10
  import { c as f, d as p, f as m, i as h, o as g, p as _, s as v, t as y } from "./line-path-C5pZGC49.js";
11
11
  import { t as b } from "./live-status-BGPaN8r8.js";
12
12
  import { t as x } from "./linear-G97mfnKF.js";
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
- import { r as t } from "./spinner-BpVwI1ps.js";
2
+ import { r as t } from "./spinner-KQb3YuR_.js";
3
3
  import { s as n } from "./use-click-lock-BZYtTmVt.js";
4
- import { t as r } from "./use-material-translation-DWWeeg-B.js";
4
+ import { t as r } from "./use-material-translation-ByM3gD9R.js";
5
5
  import { t as i } from "./react-node-text-Crkpfpco.js";
6
6
  import { cloneElement as a, isValidElement as o } from "react";
7
7
  import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
@@ -2,13 +2,13 @@ import { r as e } from "./rolldown-runtime-BFFgcFxR.js";
2
2
  import { t } from "./utils-BLfntITJ.js";
3
3
  import { t as n } from "./is-production-GLw59WU8.js";
4
4
  import { a as r } from "./dist-lmHmz_bu.js";
5
- import { c as i, d as a, f as o, n as s, t as c } from "./dropdown-menu-XLlxfDgq.js";
6
- import { a as l, i as u, n as d } from "./field-blur-context-Cwt4TuBq.js";
7
- import { a as f, d as p, r as m, t as h, u as g } from "./toolbar-items-CIMo4F9q.js";
8
- import { t as _ } from "./use-material-translation-DWWeeg-B.js";
9
- import { i as v, n as y, o as b, t as x } from "./code-language-items-BKEUhQlF.js";
5
+ import { c as i, d as a, f as o, n as s, t as c } from "./dropdown-menu-B0Kd8x3G.js";
6
+ import { a as l, i as u, n as d } from "./field-blur-context-1T6GkSNc.js";
7
+ import { a as f, d as p, r as m, t as h, u as g } from "./toolbar-items-30w9rG5h.js";
8
+ import { t as _ } from "./use-material-translation-ByM3gD9R.js";
9
+ import { i as v, n as y, o as b, t as x } from "./code-language-items-CEclGxhA.js";
10
10
  import { t as S } from "./useIsomorphicLayoutEffect-DfgAhWcH.js";
11
- import { n as C, t as w } from "./escape-owner-B9eCwjLw.js";
11
+ import { n as C, t as w } from "./escape-owner-BGKjiglh.js";
12
12
  import { t as T } from "./skeleton-DSdtr2qc.js";
13
13
  import { t as E } from "./react-node-text-Crkpfpco.js";
14
14
  import D, { memo as O, useCallback as ee, useEffect as k, useId as A, useImperativeHandle as j, useMemo as M, useRef as N, useState as P } from "react";
@@ -1,14 +1,14 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { a as t } from "./dist-lmHmz_bu.js";
3
- import { d as n, r, t as i, u as a } from "./toolbar-items-CIMo4F9q.js";
4
- import { t as o } from "./use-material-translation-DWWeeg-B.js";
5
- import { i as s, n as c, o as l } from "./code-language-items-BKEUhQlF.js";
6
- import { r as u, t as d } from "./field-blur-5uRDFHvB.js";
3
+ import { d as n, r, t as i, u as a } from "./toolbar-items-30w9rG5h.js";
4
+ import { t as o } from "./use-material-translation-ByM3gD9R.js";
5
+ import { i as s, n as c, o as l } from "./code-language-items-CEclGxhA.js";
6
+ import { r as u, t as d } from "./field-blur-Dz1zPaYK.js";
7
7
  import { t as f } from "./skeleton-DSdtr2qc.js";
8
8
  import { t as p } from "./live-status-BGPaN8r8.js";
9
9
  import { t as m } from "./use-mobile-BDro060N.js";
10
10
  import { t as h } from "./react-node-text-Crkpfpco.js";
11
- import { a as g, c as _, d as v, f as y, i as b, l as x, m as S, o as C, p as w, r as T, s as E, t as D, u as O } from "./code-editor-R_nPN_-d.js";
11
+ import { a as g, c as _, d as v, f as y, i as b, l as x, m as S, o as C, p as w, r as T, s as E, t as D, u as O } from "./code-editor-DtwRhK8B.js";
12
12
  import { useEffect as k, useRef as A, useState as j } from "react";
13
13
  import { Fragment as M, jsx as N, jsxs as P } from "react/jsx-runtime";
14
14
  import { ChevronDown as F, ChevronUp as I, Columns2 as L } from "lucide-react";
@@ -1,5 +1,5 @@
1
- import { d as e, f as t } from "./dropdown-menu-XLlxfDgq.js";
2
- import { t as n } from "./use-material-translation-DWWeeg-B.js";
1
+ import { d as e, f as t } from "./dropdown-menu-B0Kd8x3G.js";
2
+ import { t as n } from "./use-material-translation-ByM3gD9R.js";
3
3
  import { t as r } from "./live-status-BGPaN8r8.js";
4
4
  import { useEffect as i, useRef as a, useState as o } from "react";
5
5
  import { jsx as s } from "react/jsx-runtime";
@@ -18,15 +18,20 @@
18
18
  visibility: hidden;
19
19
  }
20
20
 
21
- /* A shape over the page's text, controls or surfaces (cards, tables, lists) fades out and comes back once
22
- * clear (watch-content.ts): it is hidden, never moved. A compound body (the
23
- * moon, the planet, the eclipse: `.pt.mg`) is hidden whole, with its halo
24
- * (`.pt.mh`). The scene stays invisible until the first check, so nothing
25
- * flashes over the content. */
26
- [data-keep-inside] .mo > *,
27
- [data-keep-inside] .pt,
28
- [data-slot="activity-layout-backdrop"] [data-background] .mo > *,
29
- [data-slot="activity-layout-backdrop"] [data-background] .pt {
21
+ /* A shape over the page's text, controls or surfaces (cards, tables, lists)
22
+ * fades out and comes back once clear (watch-content.ts): it is hidden,
23
+ * never moved. A compound body (the moon, the planet, the eclipse: `.pt.mg`)
24
+ * is hidden whole, with its halo (`.pt.mh`). The scene stays invisible until
25
+ * the first check, so nothing flashes over the content. The fade waits for
26
+ * `data-settled`, set a frame after the first pass: a shape that pass drops
27
+ * is hidden at once, never seen fading out over the text on a reload. */
28
+ [data-keep-inside][data-settled] .mo > *,
29
+ [data-keep-inside][data-settled] .pt,
30
+ [data-slot="activity-layout-backdrop"]
31
+ [data-background][data-settled]
32
+ .mo
33
+ > *,
34
+ [data-slot="activity-layout-backdrop"] [data-background][data-settled] .pt {
30
35
  transition: opacity 150ms ease;
31
36
  }
32
37
  /* Important: a preset sets its own opacity on a body (`.md`, the dark
@@ -13,8 +13,8 @@
13
13
  visibility: hidden;
14
14
  }
15
15
  /* A shape over the card or the brand row fades out (watch-content.ts). */
16
- [data-slot="auth-card-backdrop"] [data-background] .mo > *,
17
- [data-slot="auth-card-backdrop"] [data-background] .pt {
16
+ [data-slot="auth-card-backdrop"] [data-background][data-settled] .mo > *,
17
+ [data-slot="auth-card-backdrop"] [data-background][data-settled] .pt {
18
18
  transition: opacity 150ms ease;
19
19
  }
20
20
  [data-slot="auth-card-backdrop"] [data-background] .mo > [data-hidden],