@nxgt/material 3.72.0 → 3.74.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 (99) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +3 -1
  3. package/dist/{alert-dialog-A8K8zai1.js → alert-dialog-BfO_ri-N.js} +1 -1
  4. package/dist/{async-slice-B8933IHY.js → async-slice-roMAJVzG.js} +1 -1
  5. package/dist/{button-C8moFnIT.js → button-DgenqmpS.js} +1 -1
  6. package/dist/charts.js +3 -3
  7. package/dist/{chip-B6AY1E91.js → chip-CiDczNxO.js} +2 -2
  8. package/dist/{code-editor-DQZIKL54.js → code-editor-CohlhFsA.js} +5 -5
  9. package/dist/code-editor.js +5 -5
  10. package/dist/{code-language-items-8VL0aMKG.js → code-language-items-Cs8GLYDp.js} +2 -2
  11. package/dist/components/ui/display/seat-ring/seat-ring.css +26 -0
  12. package/dist/components/ui/feedback/feedback.css +2 -0
  13. package/dist/components/ui/feedback/moment/moment.css +22 -0
  14. package/dist/{components-EHdmrvV4.js → components-y18qSFzl.js} +14184 -13894
  15. package/dist/components.js +28 -28
  16. package/dist/{dialog-WuLTwxkr.js → dialog-AGsB3bv4.js} +4 -4
  17. package/dist/dnd.js +1 -1
  18. package/dist/{dropdown-menu-tadySeGH.js → dropdown-menu-CzR6JP31.js} +1 -1
  19. package/dist/editor.js +10 -10
  20. package/dist/{empty-state-ZYiFSSBQ.js → empty-state-DjHGMp5F.js} +2 -2
  21. package/dist/{field-blur-BYR0yE5L.js → field-blur-CdASxjL7.js} +1 -1
  22. package/dist/{field-blur-context-bEhByoK-.js → field-blur-context-kZ4SD7xu.js} +1 -1
  23. package/dist/{hooks-GpwD8iDu.js → hooks-Dqq8O3Az.js} +2 -2
  24. package/dist/hooks.js +2 -2
  25. package/dist/{hover-card-BowaI_ra.js → hover-card-BPKqte4a.js} +1 -1
  26. package/dist/i18n.js +3 -3
  27. package/dist/{icon-badge-B1B0Lg02.js → icon-badge-B9uvDoyY.js} +3 -3
  28. package/dist/{icon-button-BbGU17cb.js → icon-button-Cr-DyDGg.js} +1 -1
  29. package/dist/lib/components/ui/collections/filter/bar/filter-bar-classes.d.ts +2 -2
  30. package/dist/lib/components/ui/collections/filter/bar/filter-bar-view.d.ts +1 -1
  31. package/dist/lib/components/ui/collections/filter/facets/filter-facets.d.ts +1 -1
  32. package/dist/lib/components/ui/collections/filter/query/types.d.ts +6 -0
  33. package/dist/lib/components/ui/collections/filter/query/view-types.d.ts +1 -0
  34. package/dist/lib/components/ui/collections/filter/sections/chips/filter-chip-body.d.ts +1 -1
  35. package/dist/lib/components/ui/collections/filter/sections/filter-search.d.ts +1 -0
  36. package/dist/lib/components/ui/collections/filter/sections/filter-sections-classes.d.ts +8 -0
  37. package/dist/lib/components/ui/collections/server-table/partials/server-table-empty-page.d.ts +4 -0
  38. package/dist/lib/components/ui/collections/server-table/types.d.ts +7 -1
  39. package/dist/lib/components/ui/display/highlighted-text/highlight-ranges.d.ts +11 -0
  40. package/dist/lib/components/ui/display/highlighted-text/highlighted-text.d.ts +16 -0
  41. package/dist/lib/components/ui/display/highlighted-text/index.d.ts +2 -0
  42. package/dist/lib/components/ui/display/index.d.ts +1 -0
  43. package/dist/lib/components/ui/display/list-tile/list-tile.d.ts +10 -1
  44. package/dist/lib/components/ui/display/list-tile/partials/list-tile-box.d.ts +16 -0
  45. package/dist/lib/components/ui/display/list-tile/partials/list-tile-classes.d.ts +3 -1
  46. package/dist/lib/components/ui/display/list-tile/partials/list-tile-line.d.ts +1 -1
  47. package/dist/lib/components/ui/display/list-tile/partials/list-tile-row.d.ts +1 -1
  48. package/dist/lib/components/ui/display/seat-ring/types.d.ts +6 -0
  49. package/dist/lib/components/ui/feedback/index.d.ts +1 -0
  50. package/dist/lib/components/ui/feedback/moment/index.d.ts +1 -0
  51. package/dist/lib/components/ui/feedback/moment/moment-body.d.ts +9 -0
  52. package/dist/lib/components/ui/feedback/moment/moment.d.ts +33 -0
  53. package/dist/lib/components/ui/fields/choice-list/choice-list-control.d.ts +17 -0
  54. package/dist/lib/components/ui/fields/choice-list/choice-list-focus.d.ts +49 -0
  55. package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
  56. package/dist/lib/components/ui/overlays/command/command-dialog.d.ts +8 -1
  57. package/dist/lib/components/ui/selection/autocomplete/autocomplete-enter.d.ts +7 -3
  58. package/dist/lib/i18n/resources/en/en.d.ts +4 -0
  59. package/dist/lib/i18n/resources/en/material.json.d.ts +5 -1
  60. package/dist/lib/i18n/resources/fr/fr.d.ts +4 -0
  61. package/dist/lib/i18n/resources/fr/material.json.d.ts +5 -1
  62. package/dist/lib/i18n/resources/resources.d.ts +8 -0
  63. package/dist/lib/i18n/translator.d.ts +1 -1
  64. package/dist/lib.js +1 -1
  65. package/dist/main.js +42 -42
  66. package/dist/map.js +8 -8
  67. package/dist/material.css +1 -1
  68. package/dist/pdf-reader.js +1 -1
  69. package/dist/print.js +1 -1
  70. package/dist/{public-CFj2qn7l.js → public-DC9VQw4Z.js} +9 -9
  71. package/dist/{rich-code-block-B7Teg7-e.js → rich-code-block-DBSL9zEN.js} +5 -5
  72. package/dist/{sortable-provider-y5sFhRDj.js → sortable-provider-C4tk5esY.js} +19 -13
  73. package/dist/{spinner-C5Kb6MWu.js → spinner-B2MubVWb.js} +1 -1
  74. package/dist/theme-picker.js +2 -2
  75. package/dist/{theme-toggle-B1JZg7mU.js → theme-toggle-BInlu21G.js} +1 -1
  76. package/dist/{toolbar-items-m_1FTFPQ.js → toolbar-items-CRJSx1MU.js} +3 -3
  77. package/dist/{translate-material-D1ndrd7a.js → translate-material-pVlPJ1v4.js} +1 -1
  78. package/dist/{translator-CtEC_AQa.js → translator-BoYCward.js} +10 -2
  79. package/dist/{typography-prQHb3gI.js → typography-B6YMbCge.js} +1 -1
  80. package/dist/{use-chat-composer-DBiyNXvL.js → use-chat-composer-Cn6yaeO0.js} +1924 -1911
  81. package/dist/{use-heading-spy-Bzj5mIUZ.js → use-heading-spy-B_Z4ArDh.js} +4 -4
  82. package/dist/{use-material-translation-C6H0B4kE.js → use-material-translation-CIS2n3RB.js} +1 -1
  83. package/dist/{use-return-focus-CkUX1HFl.js → use-return-focus-DNQtADAR.js} +1 -1
  84. package/docs/components/data-display.md +58 -5
  85. package/docs/components/data-table-filter-and-lists.md +8 -3
  86. package/docs/components/feedback-and-status.md +40 -0
  87. package/docs/components/form-fields.md +16 -0
  88. package/docs/components/overlays-and-menus.md +2 -1
  89. package/docs/components/primitives.md +2 -1
  90. package/docs/components/selection-and-choice.md +4 -2
  91. package/docs/guides/i18n.md +4 -1
  92. package/docs/guides/theming.md +4 -0
  93. package/docs/previews/data-display-highlightedtext.webp +0 -0
  94. package/docs/roadmap.md +1 -0
  95. package/docs/troubleshooting.md +37 -0
  96. package/lib/components/ui/display/seat-ring/seat-ring.css +26 -0
  97. package/lib/components/ui/feedback/feedback.css +2 -0
  98. package/lib/components/ui/feedback/moment/moment.css +22 -0
  99. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,49 @@
1
1
  # @nxgt/material
2
2
 
3
+ ## 3.74.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#2237](https://github.com/softistx/nxgt-material/pull/2237) [`0a262aa`](https://github.com/softistx/nxgt-material/commit/0a262aa9fe87285d3089d508bef998507e37ffd3) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `CommandDialog` has a visible close button, so a phone user is no longer left tapping a strip of backdrop (Escape does not exist there). New `showCloseButton` prop, `true` by default and `false` to remove it: the button sits at the end of the input row, is named by `material.buttons.close` and is 44px on a coarse pointer.
8
+
9
+ - [#2246](https://github.com/softistx/nxgt-material/pull/2246) [`74ddb8c`](https://github.com/softistx/nxgt-material/commit/74ddb8c289f347e2d0d37a143b2f45f42f0f8f7e) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `FilterBar`, `Filter` (bar and facets) and `FilterBarProps` take `searchAutoFocus` ([#2244](https://github.com/softistx/nxgt-material/issues/2244)): the search field takes focus when the bar mounts, for a search page reached by URL with an empty query. Off by default. Nothing to migrate.
10
+
11
+ - [#2233](https://github.com/softistx/nxgt-material/pull/2233) [`33d2480`](https://github.com/softistx/nxgt-material/commit/33d24804f5836fcb7d295762d30e81844139458e) Thanks [@SteveGT96](https://github.com/SteveGT96)! - feat(highlighted-text): add `HighlightedText` and `highlightRanges`, which mark the words of a search query in a string with a themed `<mark>`, folding case, accents and ligatures (`œ` is `oe`, `æ` is `ae`, `ß` is `ss`) at the start of a word ([#2226](https://github.com/softistx/nxgt-material/issues/2226))
12
+
13
+ - [#2224](https://github.com/softistx/nxgt-material/pull/2224) [`0f58519`](https://github.com/softistx/nxgt-material/commit/0f5851985c00e9b9029eb37e8192e56a49cc5e3a) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `ListTile` takes a `content` prop: full-width content under the title row, inside the tile's box and outside its link or button, so it can hold inputs and buttons (an expected value beside an editable field, a short form). It follows the `tonal` and `divided` variants.
14
+
15
+ - [#2247](https://github.com/softistx/nxgt-material/pull/2247) [`3ccf1cf`](https://github.com/softistx/nxgt-material/commit/3ccf1cf2fb65cfc571cab21355f12f5ab5030b87) Thanks [@SteveGT96](https://github.com/SteveGT96)! - New `Moment` ([#2220](https://github.com/softistx/nxgt-material/issues/2220)): a transient full-screen announcement for a dramatic one-off event (a player is eliminated, a role is revealed). Controlled by `open` / `onOpenChange`, with an optional `duration` that dismisses it, an `illustration`, a `title`, a `description`, an `action` and a `tone`. It is a modal dialog named by its title: focus moves in and is restored on close, Escape, a tap, the close button and the action dismiss it, and the fade and pop-in stop under `prefers-reduced-motion`. New key `material.moment.hint` ("Échap" in French). Nothing to migrate.
16
+
17
+ - [#2241](https://github.com/softistx/nxgt-material/pull/2241) [`bc5bc35`](https://github.com/softistx/nxgt-material/commit/bc5bc358de9386ea9f25ee76f8c16f0caf0f3add) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `SeatRing` seats take `out` ([#2217](https://github.com/softistx/nxgt-material/issues/2217)): an eliminated seat stays visible, dimmed, with its name struck through, its avatar greyed and the word "Out" written in it (new key `material.seat-ring.out`, "Éliminé" in French), so the word is part of the seat's accessible name (label, status, "Out", then the badge) and colour is never the only cue. It stays pickable unless `disabled`; an empty seat ignores it. Nothing to migrate.
18
+
19
+ - [#2230](https://github.com/softistx/nxgt-material/pull/2230) [`3d2e2f5`](https://github.com/softistx/nxgt-material/commit/3d2e2f506f163cb2a0005a2fbb8e095de2917bc4) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `ServerTable`: `empty` is optional ([#2228](https://github.com/softistx/nxgt-material/issues/2228)). A page that renders its own empty page and the table only when there are rows no longer passes dead `{ none: '', noMatch: '' }`. Without it, a table that is still empty shows the `DataTable` default ("No data available", "No results" when filtered), announced alike; the failure with Retry and the page past the last are unchanged.
20
+
21
+ ### Patch Changes
22
+
23
+ - [#2242](https://github.com/softistx/nxgt-material/pull/2242) [`4125bee`](https://github.com/softistx/nxgt-material/commit/4125bee50583a3faf8327d3e88af06af7500844a) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `ChoiceListFormField` row paths (`choices.1.text`) now take the focus from `setFocus` and `setError(…, { shouldFocus: true })` ([#2240](https://github.com/softistx/nxgt-material/issues/2240)).
24
+
25
+ - [#2234](https://github.com/softistx/nxgt-material/pull/2234) [`697c778`](https://github.com/softistx/nxgt-material/commit/697c778161da0f0ec74f562ab6d2cb936618d7e6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `FilterBar` chips (quick pills and toggles, the scope pill, the active-condition chips and the default hint) are a real 44x44 box on a coarse pointer, as the chip group's options are, instead of 24-28px ([#2227](https://github.com/softistx/nxgt-material/issues/2227)). A mouse sees no change.
26
+
27
+ ## 3.73.0
28
+
29
+ ### Minor Changes
30
+
31
+ - [#2215](https://github.com/softistx/nxgt-material/pull/2215) [`923657a`](https://github.com/softistx/nxgt-material/commit/923657a097081206980c9b300e58a8712b4ba7bd) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `CardTitle` no longer forces `leading-none`: an `h2`/`h3` title takes the line height of the heading type scale and a `div` title the inherited one, so a large heading no longer overflows its box. Titles that set a size (`text-base`, `text-sm`, …) now get that size's line height, so most card titles grow a few pixels taller. A caller `className` such as `leading-tight` still wins. `RecoveryCodes`, `RecoveryCodesStatus`, `EnrolmentCard` and `RecordDetails` drop their `leading-normal` override. Also fixes the RecordDetails title overflow ([#2203](https://github.com/softistx/nxgt-material/issues/2203)).
32
+
33
+ ### Patch Changes
34
+
35
+ - [#2202](https://github.com/softistx/nxgt-material/pull/2202) [`471f881`](https://github.com/softistx/nxgt-material/commit/471f8819ebaf83876e52438225c7d16b28eeb96f) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Behaviour change: `Autocomplete` and `AutocompleteFormField` in `mode="multiple"` (tags fields included): Enter never submits the surrounding form, also on a closed list with an empty input, so the Enter after a pick no longer saves the form. `single` mode keeps its implicit submission. A form-level `onKeyDown` that guarded this can be removed; a form that wants a keyboard submit can use Ctrl/Cmd+Enter (see docs/troubleshooting.md). Fixes [#2199](https://github.com/softistx/nxgt-material/issues/2199).
36
+
37
+ - [#2196](https://github.com/softistx/nxgt-material/pull/2196) [`8db033c`](https://github.com/softistx/nxgt-material/commit/8db033ce69ccb7c1d8051439a6e8bcb9b6e0099d) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `ChoiceListFormField`: a failed submit (`shouldFocusError`), `setFocus(name)` and `setError(…, { shouldFocus: true })` put the focus on the first refused row's text input (a resolver's `choices.<i>.text` error, or the first blank row under the built-in rules) instead of the list's first control. An error on the list itself still focuses its first control. Fixes [#2194](https://github.com/softistx/nxgt-material/issues/2194).
38
+
39
+ - [#2198](https://github.com/softistx/nxgt-material/pull/2198) [`7c8b470`](https://github.com/softistx/nxgt-material/commit/7c8b470d32b375744ba49bcc7a3ef075e80334a7) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `DndProvider`: toggling `disabled` no longer changes the size of the `sensors` array handed to dnd-kit, so React stops logging "The final argument passed to useEffect changed size between renders" (for example a `SortableListFormField` while its form submits). Dragging is still refused while `disabled`.
40
+
41
+ - [#2206](https://github.com/softistx/nxgt-material/pull/2206) [`f33532b`](https://github.com/softistx/nxgt-material/commit/f33532b81d13fd005b379f2cca963a92afc163fd) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `registerPdfFont`: a PDF rendered after another one in the same process no longer reads back blank or wrong characters in its text layer (copy, search, screen readers: `MOREAU` read `MOR AU`). Embedding an accented capital cached the base letter's glyph with no code point, shared by every later document that named the font; the font now keeps the characters each glyph is asked for. Fixes [#2205](https://github.com/softistx/nxgt-material/issues/2205).
42
+
43
+ - [#2209](https://github.com/softistx/nxgt-material/pull/2209) [`38e6867`](https://github.com/softistx/nxgt-material/commit/38e6867e5c5380cd71ebd91378f32914d4d21dca) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `QuestionCard`: the open and code answer boxes shrink with their container (`min-w-0`) instead of keeping the text area's 280px floor, so a card in a narrow side panel no longer overflows. `Textarea` is unchanged elsewhere. Fixes [#2207](https://github.com/softistx/nxgt-material/issues/2207).
44
+ - Updated dependencies [[`f33532b`](https://github.com/softistx/nxgt-material/commit/f33532b81d13fd005b379f2cca963a92afc163fd)]:
45
+ - @nxgt/material-core@0.47.1
46
+
3
47
  ## 3.72.0
4
48
 
5
49
  ### Minor Changes
package/README.md CHANGED
@@ -642,6 +642,7 @@ Not components: what the stylesheet gives any element.
642
642
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-shape.webp" width="120" alt="Shape"> | [`Shape`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#shape) | Material 3 Expressive's 35 shapes and a squircle as a backdrop, an icon container or a mask for a photo, with a morph; eight tones or an app tone. | — |
643
643
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-badge.webp" width="120" alt="Badge"> | [`Badge`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#badge) | Status pill, 20 px: default, secondary, error, success, info, warning, `soft` (tonal, for states), outlined; an optional decorative `icon` before the words. | `Badge` |
644
644
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-countbadge.webp" width="120" alt="CountBadge"> | [`CountBadge`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#countbadge) | Count in the corner of its children, capped at `99+` and hidden at 0; `animated` pops it in when it changes. | `CountBadge` |
645
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-highlightedtext.webp" width="120" alt="HighlightedText"> | [`HighlightedText`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#highlightedtext) | A string with the words of a search query in a themed `<mark>`, folding case, accents and ligatures; `highlightRanges` gives the offsets. | — |
645
646
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-dayseparator.webp" width="120" alt="DaySeparator"> | [`DaySeparator`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#dayseparator), `isNewDay`, `formatDayLabel` | "Today", "Yesterday", the weekday or the date between two hairlines, in the provider's language; sticky if asked. | — |
646
647
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-periodcards.webp" width="120" alt="PeriodCards"> | [`PeriodCards`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#periodcards) | Consecutive date ranges (terms, sprints) as cards: a "Current" marker with `aria-current`, a link over each card, as many 14rem columns as fit (one on a phone). | — |
647
648
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-chip.webp" width="120" alt="Chip"> | [`Chip`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#chip) | Compact pill in three looks (hairline, soft, tag) and a dashed add pill, with leading, avatar and trailing slots, a selected state and a dismiss button; a coloured soft chip reads as a status (the tone's container, its text colour on it). | `Chip` |
@@ -733,13 +734,14 @@ Not components: what the stylesheet gives any element.
733
734
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/overlays-menus-dropdownmenu.webp" width="120" alt="DropdownMenu"> | [`DropdownMenu`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/overlays-and-menus.md#dropdownmenu), `DropdownMenuTrigger`, `DropdownMenuContent`, `DropdownMenuItem`, `DropdownMenuSub`… | Menu with checkbox and radio items, submenus, shortcuts and an error item. | `DropdownMenu` (same parts) |
734
735
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/overlays-menus-contextmenu.webp" width="120" alt="ContextMenu"> | [`ContextMenu`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/overlays-and-menus.md#contextmenu), `ContextMenuTrigger`, `ContextMenuContent`, `ContextMenuItem`… | Right-click menu with the same kinds of items. | `ContextMenu` (same parts) |
735
736
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/overlays-menus-menubar.webp" width="120" alt="Menubar"> | [`Menubar`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/overlays-and-menus.md#menubar), `MenubarMenu`, `MenubarTrigger`, `MenubarContent`, `MenubarItem`… | Desktop-style menubar. | `Menubar` (same parts) |
736
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/overlays-menus-command.webp" width="120" alt="Command"> | [`Command`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/overlays-and-menus.md#command), `CommandDialog`, `CommandInput`, `CommandList`, `CommandItem`… | Command palette with filtering, groups and shortcuts. `CommandDialog` shows it in a modal and takes `commandProps` (`shouldFilter: false` for server results). | `Command`, `CommandDialog` (same parts) |
737
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/overlays-menus-command.webp" width="120" alt="Command"> | [`Command`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/overlays-and-menus.md#command), `CommandDialog`, `CommandInput`, `CommandList`, `CommandItem`… | Command palette with filtering, groups and shortcuts. `CommandDialog` shows it in a modal with a close button (`showCloseButton`, on by default) and takes `commandProps` (`shouldFilter: false` for server results). | `Command`, `CommandDialog` (same parts) |
737
738
 
738
739
  ### Feedback & status
739
740
 
740
741
  | Preview | Component | What it does | @nxgt/material-vue |
741
742
  | --- | --- | --- | --- |
742
743
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-alert.webp" width="120" alt="Alert"> | [`Alert`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#alert) | Callout with the tone's icon (or yours, or none with `icon={null}`), title, description and `actions` (buttons or links under the text) in seven tones; it spans the row in a form grid. | `Alert` |
744
+ | | [`Moment`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#moment) | Full-screen one-off announcement (a player is eliminated, a role revealed): a modal dialog named by its title, focus moved in and restored, dismissed by Escape, a tap, its action or `duration`, tone-coloured, with a fade and pop-in that stop under reduced motion. | — (later) |
743
745
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-stalenotice.webp" width="120" alt="StaleNotice"> | [`StaleNotice`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#stalenotice) | Warning that another write came first: keeps what was typed, takes the focus and scrolls into view on mount, and offers one "Reload the record" action (`onReload`, `busy`, `message`), never an overwrite. | — (later) |
744
746
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-banner.webp" width="120" alt="Banner"> | [`Banner`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#banner) | Dismissible info / success / warning / error banner with an action, in the look of `Alert` (light surface, start bar); it spans the row in a form grid. | `Banner` |
745
747
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-alertdialog.webp" width="120" alt="AlertDialog"> | [`AlertDialog`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#alertdialog), `AlertDialogContent`, `AlertDialogAction`, `AlertDialogCancel`… | Parts for a blocking confirmation dialog. | `AlertDialog` (same parts) |
@@ -3,7 +3,7 @@ import { t } from "./utils-BLfntITJ.js";
3
3
  import { o as n } from "./dist-DVRQkaTK.js";
4
4
  import { c as r, s as i } from "./dist-lmHmz_bu.js";
5
5
  import { t as a } from "./in-dialog-Vwkyp-M5.js";
6
- import { a as o, c as s, d as c, i as l, l as u, n as d, o as f, r as p, s as m, t as h, u as g } from "./use-return-focus-CkUX1HFl.js";
6
+ import { a as o, c as s, d as c, i as l, l as u, n as d, o as f, r as p, s as m, t as h, u as g } from "./use-return-focus-DNQtADAR.js";
7
7
  import { i as _ } from "./escape-owner-DpaP0lm1.js";
8
8
  import * as v from "react";
9
9
  import { jsx as y, jsxs as b } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- import { l as e, r as t, s as n, u as r } from "./translator-CtEC_AQa.js";
1
+ import { l as e, r as t, s as n, u as r } from "./translator-BoYCward.js";
2
2
  import { t as i } from "./_baseIsEqual-C6ksIHya.js";
3
3
  import { useMemo as a } from "react";
4
4
  import { asyncThunkCreator as o, buildCreateSlice as s } from "@reduxjs/toolkit";
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { n as t, t as n } from "./dist-DVRQkaTK.js";
3
- import { n as r, r as i, t as a } from "./spinner-C5Kb6MWu.js";
3
+ import { n as r, r as i, t as a } from "./spinner-B2MubVWb.js";
4
4
  import { a as o, i as s, n as c, o as l, s as u, t as d } from "./use-click-lock-BZYtTmVt.js";
5
5
  import { t as f } from "./is-production-GLw59WU8.js";
6
6
  import { t as p } from "./button-group-context-CaP0X5p_.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 "./button-C8moFnIT.js";
5
- import { t as i } from "./use-material-translation-C6H0B4kE.js";
4
+ import { t as r } from "./button-DgenqmpS.js";
5
+ import { t as i } from "./use-material-translation-CIS2n3RB.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-B6AY1E91.js";
9
+ import { t as d } from "./chip-CiDczNxO.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-C5Kb6MWu.js";
2
+ import { r as t } from "./spinner-B2MubVWb.js";
3
3
  import { s as n } from "./use-click-lock-BZYtTmVt.js";
4
- import { t as r } from "./use-material-translation-C6H0B4kE.js";
4
+ import { t as r } from "./use-material-translation-CIS2n3RB.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";
@@ -1,12 +1,12 @@
1
1
  import { r as e } from "./rolldown-runtime-BFFgcFxR.js";
2
2
  import { t } from "./utils-BLfntITJ.js";
3
3
  import { a as n } from "./dist-lmHmz_bu.js";
4
- import { c as r, d as i, f as a, n as o, t as s } from "./dropdown-menu-tadySeGH.js";
5
- import { a as c, i as l, n as u } from "./field-blur-context-bEhByoK-.js";
6
- import { a as d, d as f, r as p, t as m, u as h } from "./toolbar-items-m_1FTFPQ.js";
4
+ import { c as r, d as i, f as a, n as o, t as s } from "./dropdown-menu-CzR6JP31.js";
5
+ import { a as c, i as l, n as u } from "./field-blur-context-kZ4SD7xu.js";
6
+ import { a as d, d as f, r as p, t as m, u as h } from "./toolbar-items-CRJSx1MU.js";
7
7
  import { t as g } from "./is-production-GLw59WU8.js";
8
- import { t as _ } from "./use-material-translation-C6H0B4kE.js";
9
- import { i as v, n as y, o as b, t as x } from "./code-language-items-8VL0aMKG.js";
8
+ import { t as _ } from "./use-material-translation-CIS2n3RB.js";
9
+ import { i as v, n as y, o as b, t as x } from "./code-language-items-Cs8GLYDp.js";
10
10
  import { t as S } from "./useIsomorphicLayoutEffect-DfgAhWcH.js";
11
11
  import { n as C, t as w } from "./escape-owner-DpaP0lm1.js";
12
12
  import { t as T } from "./skeleton-DSdtr2qc.js";
@@ -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-m_1FTFPQ.js";
4
- import { t as o } from "./use-material-translation-C6H0B4kE.js";
5
- import { i as s, n as c, o as l } from "./code-language-items-8VL0aMKG.js";
6
- import { r as u, t as d } from "./field-blur-BYR0yE5L.js";
3
+ import { d as n, r, t as i, u as a } from "./toolbar-items-CRJSx1MU.js";
4
+ import { t as o } from "./use-material-translation-CIS2n3RB.js";
5
+ import { i as s, n as c, o as l } from "./code-language-items-Cs8GLYDp.js";
6
+ import { r as u, t as d } from "./field-blur-CdASxjL7.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-DQZIKL54.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-CohlhFsA.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 { getCspNonce as F } from "@nxgt/material-core/csp-nonce";
@@ -1,5 +1,5 @@
1
- import { d as e, f as t } from "./dropdown-menu-tadySeGH.js";
2
- import { t as n } from "./use-material-translation-C6H0B4kE.js";
1
+ import { d as e, f as t } from "./dropdown-menu-CzR6JP31.js";
2
+ import { t as n } from "./use-material-translation-CIS2n3RB.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";
@@ -101,6 +101,32 @@
101
101
  border-style: dashed;
102
102
  background: transparent;
103
103
  }
104
+ /* Out: dimmed, the name struck through, the avatar greyed, and the word
105
+ * "Out" written under the name, so colour and opacity are never the only cue. */
106
+ .nxgt-seat-ring [data-out] {
107
+ background: color-mix(in oklab, var(--muted) 60%, transparent);
108
+ border-color: var(--border);
109
+ }
110
+ .nxgt-seat-ring [data-out] [data-slot="seat-ring-avatar"] {
111
+ opacity: 0.55;
112
+ filter: grayscale(1);
113
+ }
114
+ .nxgt-seat-ring [data-out] [data-slot="seat-ring-label"] {
115
+ color: var(--muted-foreground);
116
+ text-decoration: line-through;
117
+ text-decoration-thickness: 2px;
118
+ }
119
+ .nxgt-seat-ring [data-slot="seat-ring-out"] {
120
+ padding-inline: 0.375rem;
121
+ border: 1px solid currentColor;
122
+ border-radius: 9999px;
123
+ color: var(--muted-foreground);
124
+ font-size: 0.6875rem;
125
+ font-weight: 600;
126
+ line-height: 1.25rem;
127
+ text-transform: uppercase;
128
+ letter-spacing: 0.04em;
129
+ }
104
130
  .nxgt-seat-ring [data-highlighted] {
105
131
  border-color: var(--primary-indicator, var(--primary));
106
132
  box-shadow: 0 0 0 2px var(--primary-indicator, var(--primary));
@@ -1,4 +1,6 @@
1
1
  @import "./spinner/spinner.css";
2
+ /* Moment: the full-screen announcement. */
3
+ @import "./moment/moment.css";
2
4
  /* Illustration: the classes of the state scenes (EmptyState, ErrorState, @nxgt/material/illustrations). */
3
5
  @import "./state-frame/illustration.css";
4
6
  @import "./progress/progress.css";
@@ -0,0 +1,22 @@
1
+ /* Moment: a full-screen one-off announcement. The surface is the tone's
2
+ * container (the `data-tone` channel), the text the foreground colour, so it
3
+ * reads at AA in light and dark. It fades in and its picture pops in (the
4
+ * keyframes are dialog.css's `nxgt-fade-in` and the `nxgt-pop` of styles.css);
5
+ * under prefers-reduced-motion reduced-motion.css ends both at once (the
6
+ * content carries `data-slot`). */
7
+ @layer components {
8
+ .nxgt-moment {
9
+ background-color: var(--nxgt-tone-container, var(--background));
10
+ color: var(--foreground);
11
+ }
12
+ .nxgt-moment[data-state="open"] {
13
+ animation: nxgt-fade-in 240ms var(--nxgt-ease-effects) backwards;
14
+ }
15
+ .nxgt-moment[data-state="closed"] {
16
+ animation: nxgt-fade-out 160ms var(--nxgt-ease-emphasized-accelerate) both;
17
+ }
18
+ .nxgt-moment[data-state="open"] [data-slot="moment-illustration"] {
19
+ animation: nxgt-pop 520ms var(--nxgt-ease-emphasized-decelerate) 80ms
20
+ backwards;
21
+ }
22
+ }