@nxgt/material 3.54.0 → 3.55.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 (71) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -0
  3. package/dist/{async-slice-DDSsekfm.js → async-slice-yhXT9cml.js} +2 -2
  4. package/dist/{button-Ct8DSLVv.js → button-CD7f4KFL.js} +1 -1
  5. package/dist/charts.js +3 -3
  6. package/dist/{chip-BzoNsd-W.js → chip-Cl7Wm8Pn.js} +2 -2
  7. package/dist/{code-editor-DsLQeiZc.js → code-editor-tOhXy6Qo.js} +6 -6
  8. package/dist/code-editor.js +5 -5
  9. package/dist/{code-language-items-4zXlIEZ0.js → code-language-items-BxlY6onk.js} +2 -2
  10. package/dist/components/components.css +4 -0
  11. package/dist/components/ui/display/seat-ring/seat-ring-index.css +125 -0
  12. package/dist/components/ui/display/seat-ring/seat-ring-ring.css +87 -0
  13. package/dist/components/ui/display/seat-ring/seat-ring.css +139 -0
  14. package/dist/{components-DFG2mgsM.js → components-B58ZWZYR.js} +15485 -15285
  15. package/dist/components.js +26 -26
  16. package/dist/{dialog-DwPmwmA3.js → dialog-BzfHcRo6.js} +4 -4
  17. package/dist/dnd.js +1 -1
  18. package/dist/{dropdown-menu-CDN6Nqx6.js → dropdown-menu-DUZF4xAJ.js} +1 -1
  19. package/dist/editor.js +9 -9
  20. package/dist/{empty-state-Bb9W9did.js → empty-state-D9o2id1p.js} +2 -2
  21. package/dist/{escape-owner-DI_lg2ID.js → escape-owner-BYs2_7T5.js} +1 -1
  22. package/dist/{field-blur-context-Dg1nwWOV.js → field-blur-context-ZsK8OTNg.js} +1 -1
  23. package/dist/{field-blur-BcJH8H9B.js → field-blur-r1tHwqdF.js} +1 -1
  24. package/dist/hooks.js +2 -2
  25. package/dist/{hover-card-Qse4gnop.js → hover-card-NfF8taLj.js} +2 -2
  26. package/dist/{i18n-provider-DlVPS58N.js → i18n-provider-TQAEPlJ5.js} +1 -1
  27. package/dist/i18n.js +5 -5
  28. package/dist/{icon-badge-DVPBQOKe.js → icon-badge-BlaY_a-P.js} +3 -3
  29. package/dist/{icon-button-C3wDxsh6.js → icon-button-B8tdlP6R.js} +1 -1
  30. package/dist/lib/components/ui/display/index.d.ts +1 -0
  31. package/dist/lib/components/ui/display/seat-ring/index.d.ts +2 -0
  32. package/dist/lib/components/ui/display/seat-ring/partials/empty-seat.d.ts +5 -0
  33. package/dist/lib/components/ui/display/seat-ring/partials/seat-body.d.ts +9 -0
  34. package/dist/lib/components/ui/display/seat-ring/partials/seat-item.d.ts +17 -0
  35. package/dist/lib/components/ui/display/seat-ring/seat-ring.d.ts +9 -0
  36. package/dist/lib/components/ui/display/seat-ring/seat-ring.utils.d.ts +9 -0
  37. package/dist/lib/components/ui/display/seat-ring/types.d.ts +67 -0
  38. package/dist/lib/components/ui/display/seat-ring/use-seat-ring.d.ts +12 -0
  39. package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
  40. package/dist/lib/i18n/resources/en/en.d.ts +3 -0
  41. package/dist/lib/i18n/resources/en/material.json.d.ts +3 -0
  42. package/dist/lib/i18n/resources/fr/fr.d.ts +3 -0
  43. package/dist/lib/i18n/resources/fr/material.json.d.ts +3 -0
  44. package/dist/lib/i18n/resources/resources.d.ts +6 -0
  45. package/dist/lib/i18n/translator.d.ts +1 -1
  46. package/dist/lib.js +1 -1
  47. package/dist/main.js +43 -43
  48. package/dist/map.js +8 -8
  49. package/dist/material.css +1 -1
  50. package/dist/pdf-reader.js +1 -1
  51. package/dist/print.js +2 -2
  52. package/dist/{public-BoVE0ffh.js → public-tWgM204K.js} +9 -9
  53. package/dist/{rich-code-block-DAUM7Yh_.js → rich-code-block-0OcsqURY.js} +5 -5
  54. package/dist/{sortable-provider-BLXsGE_0.js → sortable-provider-DzFAlPU_.js} +2 -2
  55. package/dist/{spinner-Rg4PnBPH.js → spinner-GKZcQmrR.js} +1 -1
  56. package/dist/{stored-language-B1lJMPbR.js → stored-language-B39mABN7.js} +2 -0
  57. package/dist/theme-picker.js +2 -2
  58. package/dist/{theme-toggle-jVdxF_mc.js → theme-toggle-C8idk_jQ.js} +1 -1
  59. package/dist/{toolbar-items-BFY_hns5.js → toolbar-items-BrJI-BCs.js} +4 -4
  60. package/dist/{translate-material-q-JNxP1m.js → translate-material-hUA-UAP6.js} +2 -2
  61. package/dist/{translator-BU1o3_l9.js → translator-1ql2sxrx.js} +1 -1
  62. package/dist/{use-chat-composer-DGbDuIUa.js → use-chat-composer-DQpb8ZXV.js} +16 -16
  63. package/dist/{use-heading-spy-CP63sAcS.js → use-heading-spy-vlPOI1Aj.js} +1 -1
  64. package/dist/{use-material-translation-nNF8fUXz.js → use-material-translation-B1p5y3s9.js} +2 -2
  65. package/docs/components/data-display.md +65 -0
  66. package/docs/previews/data-display-seatring.webp +0 -0
  67. package/lib/components/components.css +4 -0
  68. package/lib/components/ui/display/seat-ring/seat-ring-index.css +125 -0
  69. package/lib/components/ui/display/seat-ring/seat-ring-ring.css +87 -0
  70. package/lib/components/ui/display/seat-ring/seat-ring.css +139 -0
  71. package/package.json +1 -1
@@ -1,3 +1,3 @@
1
- import { t as e } from "./public-BoVE0ffh.js";
1
+ import { t as e } from "./public-tWgM204K.js";
2
2
  import { configurePdfReader as t } from "@nxgt/material-core/pdf-reader";
3
3
  export { e as PdfReader, t as configurePdfReader };
package/dist/print.js CHANGED
@@ -1,5 +1,5 @@
1
- import { r as e } from "./i18n-provider-DlVPS58N.js";
2
- import { t } from "./translate-material-q-JNxP1m.js";
1
+ import { r as e } from "./i18n-provider-TQAEPlJ5.js";
2
+ import { t } from "./translate-material-hUA-UAP6.js";
3
3
  import { Children as n, createContext as r, isValidElement as i, useCallback as a, useContext as o, useEffect as s, useMemo as c, useState as l } from "react";
4
4
  import { jsx as u, jsxs as d } from "react/jsx-runtime";
5
5
  import { resolvePdfFileName as f } from "@nxgt/material-core/pdf-file-name";
@@ -3,21 +3,21 @@ import { n as t } from "./ui.utils-CAnKTCw5.js";
3
3
  import { t as n } from "./utils-BLfntITJ.js";
4
4
  import { o as r } from "./dist-DVRQkaTK.js";
5
5
  import { c as i, i as a, l as o, n as s, o as c, s as l } from "./dist-lmHmz_bu.js";
6
- import { n as u, s as d } from "./spinner-Rg4PnBPH.js";
6
+ import { n as u, s as d } from "./spinner-GKZcQmrR.js";
7
7
  import { i as f } from "./dist-C4wtXCjf.js";
8
8
  import { r as p, t as m } from "./in-dialog-Vwkyp-M5.js";
9
- import { C as h, D as g, E as _, O as v, S as y, T as b, _ as x, f as S, g as ee, k as te, r as ne, t as C, u as re, w } from "./dialog-DwPmwmA3.js";
10
- import { c as T, d as ie, f as E, i as ae, l as oe, n as se, o as D, t as ce, u as O } from "./dropdown-menu-CDN6Nqx6.js";
11
- import { S as le, a as k, d as A, g as ue, h as de, i as fe, m as pe, n as j, r as me, t as M, u as he, w as ge } from "./toolbar-items-BFY_hns5.js";
12
- import { t as N } from "./use-material-translation-nNF8fUXz.js";
13
- import { t as _e } from "./button-Ct8DSLVv.js";
14
- import { n as ve, t as ye } from "./icon-button-C3wDxsh6.js";
9
+ import { C as h, D as g, E as _, O as v, S as y, T as b, _ as x, f as S, g as ee, k as te, r as ne, t as C, u as re, w } from "./dialog-BzfHcRo6.js";
10
+ import { c as T, d as ie, f as E, i as ae, l as oe, n as se, o as D, t as ce, u as O } from "./dropdown-menu-DUZF4xAJ.js";
11
+ import { S as le, a as k, d as A, g as ue, h as de, i as fe, m as pe, n as j, r as me, t as M, u as he, w as ge } from "./toolbar-items-BrJI-BCs.js";
12
+ import { t as N } from "./use-material-translation-B1p5y3s9.js";
13
+ import { t as _e } from "./button-CD7f4KFL.js";
14
+ import { n as ve, t as ye } from "./icon-button-B8tdlP6R.js";
15
15
  import { t as be } from "./useEvent-2fKq-6w8.js";
16
16
  import { n as xe, t as Se } from "./toggle-group-BkH23Jk4.js";
17
- import { o as Ce } from "./escape-owner-DI_lg2ID.js";
17
+ import { o as Ce } from "./escape-owner-BYs2_7T5.js";
18
18
  import { n as we } from "./use-slice-reducer-BGkeGtML.js";
19
19
  import { r as Te } from "./use-csp-nonce-ZKs9k-ov.js";
20
- import { n as Ee, t as De } from "./empty-state-Bb9W9did.js";
20
+ import { n as Ee, t as De } from "./empty-state-D9o2id1p.js";
21
21
  import { t as Oe } from "./client-only.utils-3nHNzCki.js";
22
22
  import { t as ke } from "./use-scroll-away-PQRFZkT2.js";
23
23
  import * as P from "react";
@@ -1,7 +1,7 @@
1
- import { r as e } from "./spinner-Rg4PnBPH.js";
2
- import { c as t, n, t as r } from "./dropdown-menu-CDN6Nqx6.js";
3
- import { t as i } from "./use-material-translation-nNF8fUXz.js";
4
- import { a, i as o, n as s, o as c, t as l } from "./code-language-items-4zXlIEZ0.js";
1
+ import { r as e } from "./spinner-GKZcQmrR.js";
2
+ import { c as t, n, t as r } from "./dropdown-menu-DUZF4xAJ.js";
3
+ import { t as i } from "./use-material-translation-B1p5y3s9.js";
4
+ import { a, i as o, n as s, o as c, t as l } from "./code-language-items-BxlY6onk.js";
5
5
  import { i as u, n as d, r as f, s as p } from "./dist-C3GR7kJd.js";
6
6
  import { t as m } from "./code-block-spec-CGLKRhwD.js";
7
7
  import { Suspense as h, lazy as g, useEffect as _, useRef as v, useState as y } from "react";
@@ -143,7 +143,7 @@ function M({ node: e, editor: t, updateAttributes: n, editable: r, wrap: a, onWr
143
143
  }
144
144
  //#endregion
145
145
  //#region lib/components/ui/widgets/editor/extensions/code/code-block-open.tsx
146
- var N = g(() => import("./code-editor-DsLQeiZc.js").then((e) => e.n).then((e) => ({ default: e.CodeEditor })));
146
+ var N = g(() => import("./code-editor-tOhXy6Qo.js").then((e) => e.n).then((e) => ({ default: e.CodeEditor })));
147
147
  function P() {
148
148
  let { t: e } = i();
149
149
  return /* @__PURE__ */ b("div", {
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { t } from "./dist-DVRQkaTK.js";
3
- import { t as n } from "./use-material-translation-nNF8fUXz.js";
4
- import { t as r } from "./icon-button-C3wDxsh6.js";
3
+ import { t as n } from "./use-material-translation-B1p5y3s9.js";
4
+ import { t as r } from "./icon-button-B8tdlP6R.js";
5
5
  import { t as i } from "./compose-refs-DZ0iIVF-.js";
6
6
  import a, { cloneElement as o, createContext as s, forwardRef as c, memo as l, useCallback as u, useContext as d, useEffect as f, useId as p, useLayoutEffect as m, useMemo as h, useReducer as g, useRef as _, useState as v } from "react";
7
7
  import { jsx as y } from "react/jsx-runtime";
@@ -3,7 +3,7 @@ import { n as t, t as n } from "./utils-BLfntITJ.js";
3
3
  import { i as r, o as i } from "./dist-DVRQkaTK.js";
4
4
  import { a, c as o, i as s, l as c, n as l, o as u, r as d, s as f, t as p, u as m } from "./dist-lmHmz_bu.js";
5
5
  import { a as h, c as g, d as _, i as v, l as y, o as b, r as x, t as S, u as C } from "./floating-ui.dom-KkZSW8_E.js";
6
- import { t as w } from "./use-material-translation-nNF8fUXz.js";
6
+ import { t as w } from "./use-material-translation-B1p5y3s9.js";
7
7
  import * as T from "react";
8
8
  import { useLayoutEffect as E, useRef as D, useSyncExternalStore as O } from "react";
9
9
  import { jsx as k, jsxs as A } from "react/jsx-runtime";
@@ -1334,6 +1334,7 @@ var t = {
1334
1334
  busy: "Busy",
1335
1335
  active: "Active"
1336
1336
  },
1337
+ "seat-ring": { empty: "Empty seat" },
1337
1338
  "country-field": { placeholder: "Country" },
1338
1339
  "duration-field": {
1339
1340
  hours: "h",
@@ -4174,6 +4175,7 @@ var t = {
4174
4175
  busy: "Occupé",
4175
4176
  active: "Actif"
4176
4177
  },
4178
+ "seat-ring": { empty: "Place libre" },
4177
4179
  "country-field": { placeholder: "Pays" },
4178
4180
  "duration-field": {
4179
4181
  hours: "h",
@@ -1,10 +1,10 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { a as t, i as n, n as r, o as i, r as a, t as o } from "./bubble-input-B7BVd9fX.js";
3
3
  import { a as s, r as c } from "./icon-sprites-CaYXzOL4.js";
4
- import { t as l } from "./use-material-translation-nNF8fUXz.js";
4
+ import { t as l } from "./use-material-translation-B1p5y3s9.js";
5
5
  import { t as u } from "./use-theme-BCLireTd.js";
6
6
  import { a as d, r as f } from "./theme-context-Cofk6vgs.js";
7
- import { t as p } from "./theme-toggle-jVdxF_mc.js";
7
+ import { t as p } from "./theme-toggle-C8idk_jQ.js";
8
8
  import { n as m, t as h } from "./nxgt-theme-ivgNca3z.js";
9
9
  import { useContext as g } from "react";
10
10
  import { jsx as _, jsxs as v } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- import { t as e } from "./use-material-translation-nNF8fUXz.js";
1
+ import { t as e } from "./use-material-translation-B1p5y3s9.js";
2
2
  import { i as t } from "./theme-store-BdPp43cV.js";
3
3
  import { n, t as r } from "./use-theme-BCLireTd.js";
4
4
  import { r as i } from "./theme-context-Cofk6vgs.js";
@@ -2,13 +2,13 @@ import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { t } from "./warn-once-C_e47JM8.js";
3
3
  import { o as n, r, t as i } from "./dist-DVRQkaTK.js";
4
4
  import { a, c as o, i as s, l as c, r as l, s as u } from "./dist-lmHmz_bu.js";
5
- import { C as d, S as f, d as p, f as m, m as h, p as g, r as _, u as v } from "./spinner-Rg4PnBPH.js";
5
+ import { C as d, S as f, d as p, f as m, m as h, p as g, r as _, u as v } from "./spinner-GKZcQmrR.js";
6
6
  import { i as y, n as b, r as x, t as S } from "./dist-C4wtXCjf.js";
7
7
  import { a as C, c as w, l as T, o as E, r as ee, s as te, t as ne } from "./in-dialog-Vwkyp-M5.js";
8
- import { A as re, M as ie, N as ae, b as oe, d as se, f as ce, i as le, j as ue, l as de, n as fe, o as pe, r as me, t as he, u as ge, y as _e } from "./dropdown-menu-CDN6Nqx6.js";
8
+ import { A as re, M as ie, N as ae, b as oe, d as se, f as ce, i as le, j as ue, l as de, n as fe, o as pe, r as me, t as he, u as ge, y as _e } from "./dropdown-menu-DUZF4xAJ.js";
9
9
  import { a as ve, n as ye, r as be, t as xe } from "./dist-B7RjY7SL.js";
10
- import { t as Se } from "./use-material-translation-nNF8fUXz.js";
11
- import { o as Ce } from "./escape-owner-DI_lg2ID.js";
10
+ import { t as Se } from "./use-material-translation-B1p5y3s9.js";
11
+ import { o as Ce } from "./escape-owner-BYs2_7T5.js";
12
12
  import * as D from "react";
13
13
  import { createContext as O, useCallback as we, useContext as k, useEffect as A, useId as Te, useLayoutEffect as j, useMemo as M, useReducer as Ee, useRef as N, useState as P } from "react";
14
14
  import { Fragment as F, jsx as I, jsxs as L } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
- import "./stored-language-B1lJMPbR.js";
2
- import { a as e, r as t, t as n } from "./translator-BU1o3_l9.js";
1
+ import "./stored-language-B39mABN7.js";
2
+ import { a as e, r as t, t as n } from "./translator-1ql2sxrx.js";
3
3
  //#region lib/i18n/translate-material.ts
4
4
  var r = /* @__PURE__ */ new WeakMap();
5
5
  function i(e) {
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./is-production-GLw59WU8.js";
2
- import { a as t, i as n, r, t as i } from "./stored-language-B1lJMPbR.js";
2
+ import { a as t, i as n, r, t as i } from "./stored-language-B39mABN7.js";
3
3
  import { t as a } from "./get-CTzJAwfc.js";
4
4
  //#region ../../node_modules/@formatjs/fast-memoize/index.js
5
5
  function o(e, t) {
@@ -5,39 +5,39 @@ import { t as r } from "./warn-once-C_e47JM8.js";
5
5
  import { n as i } from "./use-shape-morph-DXdy2X5g.js";
6
6
  import { n as a, o, t as s } from "./dist-DVRQkaTK.js";
7
7
  import { a as c, c as l, i as u, l as d, n as f, o as p, r as m, s as h, t as g } from "./dist-lmHmz_bu.js";
8
- import { _, a as v, b as y, c as b, g as x, h as S, i as C, n as w, o as T, r as E, s as D, t as O, v as k, x as A, y as ee } from "./spinner-Rg4PnBPH.js";
8
+ import { _, a as v, b as y, c as b, g as x, h as S, i as C, n as w, o as T, r as E, s as D, t as O, v as k, x as A, y as ee } from "./spinner-GKZcQmrR.js";
9
9
  import { a as j, i as M, n as N, r as te, t as ne } from "./dist-C4wtXCjf.js";
10
10
  import { i as P, n as re, t as ie } from "./in-dialog-Vwkyp-M5.js";
11
- import { A as F, C as ae, D as oe, E as se, O as I, S as ce, T as le, _ as ue, b as de, f as fe, g as pe, k as me, l as he, m as ge, n as _e, o as ve, r as ye, s as be, t as xe, u as Se, v as Ce, w as we, x as Te, y as Ee } from "./dialog-DwPmwmA3.js";
11
+ import { A as F, C as ae, D as oe, E as se, O as I, S as ce, T as le, _ as ue, b as de, f as fe, g as pe, k as me, l as he, m as ge, n as _e, o as ve, r as ye, s as be, t as xe, u as Se, v as Ce, w as we, x as Te, y as Ee } from "./dialog-BzfHcRo6.js";
12
12
  import { A as De, C as Oe, D as ke, E as Ae, O as je, S as Me, T as Ne, _ as Pe, a as Fe, b as Ie, d as Le, f as Re, g as ze, h as Be, i as Ve, k as He, l as Ue, m as We, n as Ge, o as Ke, p as qe, r as Je, s as Ye, t as Xe, u as Ze, v as Qe, w as $e, x as et, y as tt } from "./floating-ui.dom-KkZSW8_E.js";
13
- import { D as nt, E as rt, N as it, O as at, c as L, d as ot, f as st, i as ct, k as lt, m as ut, n as dt, o as ft, p as pt, t as mt, u as ht } from "./dropdown-menu-CDN6Nqx6.js";
14
- import { a as gt, i as _t, n as vt } from "./field-blur-context-Dg1nwWOV.js";
15
- import { C as yt, S as bt, a as xt, c as St, d as Ct, l as wt, n as Tt, o as Et, s as Dt, u as Ot } from "./toolbar-items-BFY_hns5.js";
13
+ import { D as nt, E as rt, N as it, O as at, c as L, d as ot, f as st, i as ct, k as lt, m as ut, n as dt, o as ft, p as pt, t as mt, u as ht } from "./dropdown-menu-DUZF4xAJ.js";
14
+ import { a as gt, i as _t, n as vt } from "./field-blur-context-ZsK8OTNg.js";
15
+ import { C as yt, S as bt, a as xt, c as St, d as Ct, l as wt, n as Tt, o as Et, s as Dt, u as Ot } from "./toolbar-items-BrJI-BCs.js";
16
16
  import { a as kt, i as At, n as jt, o as Mt, t as Nt } from "./bubble-input-B7BVd9fX.js";
17
17
  import { i as Pt } from "./dist-B7RjY7SL.js";
18
18
  import { o as Ft, s as It, t as Lt } from "./use-click-lock-BZYtTmVt.js";
19
19
  import { a as Rt, r as zt } from "./icon-sprites-CaYXzOL4.js";
20
- import "./stored-language-B1lJMPbR.js";
21
- import { a as Bt } from "./translator-BU1o3_l9.js";
20
+ import "./stored-language-B39mABN7.js";
21
+ import { a as Bt } from "./translator-1ql2sxrx.js";
22
22
  import { h as Vt } from "./get-CTzJAwfc.js";
23
23
  import { t as Ht } from "./isEmpty-F_g3jLf8.js";
24
- import { t as R } from "./use-material-translation-nNF8fUXz.js";
25
- import { i as Ut, r as Wt, t as Gt } from "./button-Ct8DSLVv.js";
26
- import { t as z } from "./icon-button-C3wDxsh6.js";
24
+ import { t as R } from "./use-material-translation-B1p5y3s9.js";
25
+ import { i as Ut, r as Wt, t as Gt } from "./button-CD7f4KFL.js";
26
+ import { t as z } from "./icon-button-B8tdlP6R.js";
27
27
  import { t as Kt } from "./use-ssr-media-query-C6M5m8sf.js";
28
28
  import { n as qt, t as Jt } from "./util-4heV2LPI.js";
29
29
  import { t as Yt } from "./useEvent-2fKq-6w8.js";
30
- import { f as Xt } from "./field-blur-BcJH8H9B.js";
30
+ import { f as Xt } from "./field-blur-r1tHwqdF.js";
31
31
  import { c as Zt, i as Qt, l as $t, o as en, r as tn, s as nn, t as rn } from "./dist-C3GR7kJd.js";
32
32
  import { i as an } from "./toggle-group-BkH23Jk4.js";
33
- import { a as on, i as sn, o as cn } from "./escape-owner-DI_lg2ID.js";
33
+ import { a as on, i as sn, o as cn } from "./escape-owner-BYs2_7T5.js";
34
34
  import { n as ln } from "./use-slice-reducer-BGkeGtML.js";
35
35
  import { t as un } from "./browser-only-DQ94lWF8.js";
36
36
  import { t as dn } from "./compose-refs-DZ0iIVF-.js";
37
- import { n as fn, r as pn, t as mn } from "./chip-BzoNsd-W.js";
38
- import { n as hn, t as gn } from "./icon-badge-DVPBQOKe.js";
37
+ import { n as fn, r as pn, t as mn } from "./chip-Cl7Wm8Pn.js";
38
+ import { n as hn, t as gn } from "./icon-badge-BlaY_a-P.js";
39
39
  import { r as _n } from "./use-csp-nonce-ZKs9k-ov.js";
40
- import { t as vn } from "./empty-state-Bb9W9did.js";
40
+ import { t as vn } from "./empty-state-D9o2id1p.js";
41
41
  import { t as yn } from "./skeleton-DSdtr2qc.js";
42
42
  import { H as bn, V as xn, X as Sn, bt as Cn, it as wn, lt as Tn, n as En, t as Dn, xt as On, yt as kn } from "./dist-moutbfbd.js";
43
43
  import { t as An } from "./markdown-Dw_uH7j7.js";
@@ -11353,7 +11353,7 @@ var tC = (e = {}) => jn({
11353
11353
  let [{ default: t }, { lowlight: n }, { richCodeBlock: r }] = await Promise.all([
11354
11354
  import("./dist-CRMFGjng.js"),
11355
11355
  import("./lowlight-OtcjU2Sa.js"),
11356
- import("./rich-code-block-DAUM7Yh_.js")
11356
+ import("./rich-code-block-0OcsqURY.js")
11357
11357
  ]);
11358
11358
  return [r(t, {
11359
11359
  lowlight: n,
@@ -1,4 +1,4 @@
1
- import { r as e } from "./i18n-provider-DlVPS58N.js";
1
+ import { r as e } from "./i18n-provider-TQAEPlJ5.js";
2
2
  import { _ as t, g as n, h as r, n as i, v as a, y as o } from "./number.utils-BG_eEt5g.js";
3
3
  import { useCallback as s, useEffect as c, useMemo as l, useRef as u, useState as d } from "react";
4
4
  import { busySettler as f, busySettler as p, createSubmitGuard as m, createSubmitGuard as h } from "@nxgt/material-core/submit-guard";
@@ -1,5 +1,5 @@
1
- import { r as e } from "./i18n-provider-DlVPS58N.js";
2
- import { t } from "./translate-material-q-JNxP1m.js";
1
+ import { r as e } from "./i18n-provider-TQAEPlJ5.js";
2
+ import { t } from "./translate-material-hUA-UAP6.js";
3
3
  import { useCallback as n } from "react";
4
4
  //#region lib/i18n/use-material-translation.ts
5
5
  function r() {
@@ -8,6 +8,7 @@ from `@nxgt/material/components`.
8
8
  | --- | --- | --- |
9
9
  | <img src="../previews/data-display-avatar.webp" width="96" alt=""> | [Avatar](#avatar) | Image with a fallback and an optional online / offline dot |
10
10
  | <img src="../previews/data-display-avatargroup.webp" width="96" alt=""> | [AvatarGroup](#avatargroup) | Overlapping avatars with a `+N` overflow |
11
+ | <img src="../previews/data-display-seatring.webp" width="96" alt=""> | [SeatRing](#seatring) | Participants as seats around a circle or in a grid, optionally pickable |
11
12
  | <img src="../previews/data-display-shape.webp" width="96" alt=""> | [Shape](#shape) | Material 3 Expressive's shapes as a backdrop, an icon container or a mask for a photo |
12
13
  | <img src="../previews/data-display-badge.webp" width="96" alt=""> | [Badge](#badge) | Status pill, 20 px, in seven tones, soft or outlined, with an optional decorative `icon` before the words |
13
14
  | <img src="../previews/data-display-countbadge.webp" width="96" alt=""> | [CountBadge](#countbadge) | Count in the corner of its children |
@@ -127,6 +128,70 @@ array (`people.map(...)`); a single wrapper component or fragment counts as one.
127
128
 
128
129
  ---
129
130
 
131
+ ## SeatRing
132
+
133
+ ![SeatRing](../previews/data-display-seatring.webp)
134
+
135
+ Participants as seats: around a circle when there is room, in a grid on a
136
+ phone. A seating plan, a round-table meeting, a party-game lobby. Each seat has
137
+ an avatar, a name, a status written in words and a badge; with `selectionMode`
138
+ it is a listbox to pick one or several seats from.
139
+
140
+ ```tsx
141
+ import { SeatRing } from '@nxgt/material/components';
142
+
143
+ <SeatRing
144
+ aria-label="Players"
145
+ seats={[
146
+ { id: 'ada', label: 'Ada Example', status: { label: 'Ready', tone: 'success' }, badge: 'Host' },
147
+ { id: 'bo', label: 'Bo Sample', status: { label: 'Away', tone: 'warning' } },
148
+ { id: 'free', label: 'Free', empty: true },
149
+ ]}
150
+ highlightedId="ada"
151
+ centerSlot={<p>Round 2</p>}
152
+ selectionMode="single"
153
+ value={target}
154
+ onValueChange={setTarget}
155
+ />
156
+ ```
157
+
158
+ | Prop | Type | Default | Notes |
159
+ | --- | --- | --- | --- |
160
+ | `seats` | `Seat[]` | required | `{ id, label, avatar?: { src?, fallback? }, status?: { label, tone? }, badge?, disabled?, empty? }`; clockwise from the top |
161
+ | `layout` | `'ring' \| 'grid'` | `'ring'` | `ring` falls back to the grid in a narrow box and past the seat limit (10 seats) |
162
+ | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | seat width 4.75, 6 or 8rem; ring from a box of 32, 38 or 46rem; at most 10 seats on the circle |
163
+ | `selectionMode` | `'none' \| 'single' \| 'multiple'` | `'none'` | `none`: a list; otherwise a listbox |
164
+ | `value`, `defaultValue`, `onValueChange` | `string \| null` (single), `string[]` (multiple) | — | controlled or not |
165
+ | `highlightedId` | `string` | — | emphasised seat (whose turn it is); `aria-current="true"` on it, in a list and in a listbox |
166
+ | `renderAvatar`, `renderStatus`, `renderBadge` | `(seat) => ReactNode` | — | replace the default avatar, status line or badge |
167
+ | `renderEmptySeat` | `(seat) => ReactNode` | dashed circle and "Empty seat" | content of an empty seat |
168
+ | `centerSlot` | `ReactNode` | — | middle of the ring (a timer, a title); above the seats in the grid |
169
+ | `aria-label` / `aria-labelledby` | `string` | — | names the list or the listbox: always give one |
170
+
171
+ The layout follows the component's own width (a container query), not the
172
+ window, so it also collapses in a narrow column or a dialog. The grid is two columns
173
+ at 30rem or less and auto-fill above it, with a 44px minimum seat height. The circle is CSS only, so server markup has
174
+ no `style` attribute and a strict CSP is fine.
175
+
176
+ **Accessibility**
177
+
178
+ - Not selectable: a `list` of `listitem`s. Selectable: a `listbox` of `option`s
179
+ (`aria-multiselectable` in `multiple`).
180
+ - A roving tab stop sits on the chosen seat, else the first taken one. Arrow
181
+ keys, Home and End move the focus (an empty seat is skipped); Space or Enter
182
+ picks, and pressing the chosen seat again clears it.
183
+ - A seat is named by its label and its status text, never by colour alone.
184
+ - In a listbox, empty and `disabled` seats are `aria-disabled`, and a disabled
185
+ seat can be reached but not picked (in a list, `disabled` only dims the seat).
186
+ - Put no button in a selectable seat: interactive content (an "Invite" action
187
+ in `renderEmptySeat`) belongs to a non-selectable ring.
188
+ - Seat changes are not animated beyond a colour fade, which stops under
189
+ `prefers-reduced-motion`.
190
+
191
+ **Storybook:** `Data display/SeatRing` · **Vue:** not yet (#1931)
192
+
193
+ ---
194
+
130
195
  ## Shape
131
196
 
132
197
  ![Shape](../previews/data-display-shape.webp)
@@ -134,6 +134,10 @@
134
134
  @import "./ui/display/period-cards/period-cards.css";
135
135
  @import "./ui/layout/sidebar/sidebar-tokens.css";
136
136
  @import "./ui/display/avatar/avatar.css";
137
+ /* SeatRing: seats as a grid or on a circle by its own width. */
138
+ @import "./ui/display/seat-ring/seat-ring.css";
139
+ @import "./ui/display/seat-ring/seat-ring-index.css";
140
+ @import "./ui/display/seat-ring/seat-ring-ring.css";
137
141
  /* Alert and Banner span the row in the form grids (#1497). */
138
142
  @import "./ui/feedback/alert/alert.css";
139
143
  @import "./ui/display/stat-card/stat-card.css";
@@ -0,0 +1,125 @@
1
+ /* SeatRing: the seat count `--n` and the seat's index `--i`, from data
2
+ * attributes, for the circle's trigonometry (seat-ring-ring.css). Server
3
+ * markup carries no `style`. Up to 10 seats (RING_LIMIT); more is a grid. */
4
+ @layer components {
5
+ .nxgt-seat-ring[data-count="1"] {
6
+ --n: 1;
7
+ }
8
+ .nxgt-seat-ring[data-count="2"] {
9
+ --n: 2;
10
+ }
11
+ .nxgt-seat-ring[data-count="3"] {
12
+ --n: 3;
13
+ }
14
+ .nxgt-seat-ring[data-count="4"] {
15
+ --n: 4;
16
+ }
17
+ .nxgt-seat-ring[data-count="5"] {
18
+ --n: 5;
19
+ }
20
+ .nxgt-seat-ring[data-count="6"] {
21
+ --n: 6;
22
+ }
23
+ .nxgt-seat-ring[data-count="7"] {
24
+ --n: 7;
25
+ }
26
+ .nxgt-seat-ring[data-count="8"] {
27
+ --n: 8;
28
+ }
29
+ .nxgt-seat-ring[data-count="9"] {
30
+ --n: 9;
31
+ }
32
+ .nxgt-seat-ring[data-count="10"] {
33
+ --n: 10;
34
+ }
35
+ .nxgt-seat-ring[data-count="11"] {
36
+ --n: 11;
37
+ }
38
+ .nxgt-seat-ring[data-count="12"] {
39
+ --n: 12;
40
+ }
41
+ .nxgt-seat-ring[data-count="13"] {
42
+ --n: 13;
43
+ }
44
+ .nxgt-seat-ring[data-count="14"] {
45
+ --n: 14;
46
+ }
47
+ .nxgt-seat-ring[data-count="15"] {
48
+ --n: 15;
49
+ }
50
+ .nxgt-seat-ring[data-count="16"] {
51
+ --n: 16;
52
+ }
53
+ .nxgt-seat-ring[data-count="17"] {
54
+ --n: 17;
55
+ }
56
+ .nxgt-seat-ring[data-count="18"] {
57
+ --n: 18;
58
+ }
59
+ .nxgt-seat-ring[data-count="19"] {
60
+ --n: 19;
61
+ }
62
+ .nxgt-seat-ring[data-count="20"] {
63
+ --n: 20;
64
+ }
65
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="0"] {
66
+ --i: 0;
67
+ }
68
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="1"] {
69
+ --i: 1;
70
+ }
71
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="2"] {
72
+ --i: 2;
73
+ }
74
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="3"] {
75
+ --i: 3;
76
+ }
77
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="4"] {
78
+ --i: 4;
79
+ }
80
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="5"] {
81
+ --i: 5;
82
+ }
83
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="6"] {
84
+ --i: 6;
85
+ }
86
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="7"] {
87
+ --i: 7;
88
+ }
89
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="8"] {
90
+ --i: 8;
91
+ }
92
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="9"] {
93
+ --i: 9;
94
+ }
95
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="10"] {
96
+ --i: 10;
97
+ }
98
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="11"] {
99
+ --i: 11;
100
+ }
101
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="12"] {
102
+ --i: 12;
103
+ }
104
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="13"] {
105
+ --i: 13;
106
+ }
107
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="14"] {
108
+ --i: 14;
109
+ }
110
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="15"] {
111
+ --i: 15;
112
+ }
113
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="16"] {
114
+ --i: 16;
115
+ }
116
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="17"] {
117
+ --i: 17;
118
+ }
119
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="18"] {
120
+ --i: 18;
121
+ }
122
+ .nxgt-seat-ring [data-slot="seat-ring-seat"][data-index="19"] {
123
+ --i: 19;
124
+ }
125
+ }
@@ -0,0 +1,87 @@
1
+ /* SeatRing's circle: CSS trigonometry on `--i`, `--n` (seat-ring-index.css)
2
+ * and `--seat-dir` (-1 in a right-to-left box, so the ring is mirrored). The
3
+ * three container queries only switch `--ring-k` on the orbit once the box
4
+ * fits the seat size (32rem small, 38rem medium, 46rem large); every rule
5
+ * below reads it, as 0 (the grid of seat-ring.css) or 1 (the circle), so the
6
+ * circle's rules are written once. */
7
+ @layer components {
8
+ @container seat-ring (min-width: 32rem) {
9
+ .nxgt-seat-ring[data-layout="ring"][data-size="sm"]
10
+ [data-slot="seat-ring-orbit"] {
11
+ --ring-k: 1;
12
+ --ring-abs: absolute;
13
+ --ring-block: block;
14
+ --ring-ratio: 1;
15
+ --ring-margin: auto;
16
+ --ring-size: min(
17
+ 100%,
18
+ max(calc(var(--seat) * 3.2), calc(var(--seat) * (var(--n) * 0.6 + 1))),
19
+ 56rem
20
+ );
21
+ --ring-w: var(--seat);
22
+ }
23
+ }
24
+ @container seat-ring (min-width: 38rem) {
25
+ .nxgt-seat-ring[data-layout="ring"][data-size="md"]
26
+ [data-slot="seat-ring-orbit"] {
27
+ --ring-k: 1;
28
+ --ring-abs: absolute;
29
+ --ring-block: block;
30
+ --ring-ratio: 1;
31
+ --ring-margin: auto;
32
+ --ring-size: min(
33
+ 100%,
34
+ max(calc(var(--seat) * 3.2), calc(var(--seat) * (var(--n) * 0.6 + 1))),
35
+ 56rem
36
+ );
37
+ --ring-w: var(--seat);
38
+ }
39
+ }
40
+ @container seat-ring (min-width: 46rem) {
41
+ .nxgt-seat-ring[data-layout="ring"][data-size="lg"]
42
+ [data-slot="seat-ring-orbit"] {
43
+ --ring-k: 1;
44
+ --ring-abs: absolute;
45
+ --ring-block: block;
46
+ --ring-ratio: 1;
47
+ --ring-margin: auto;
48
+ --ring-size: min(
49
+ 100%,
50
+ max(calc(var(--seat) * 3.2), calc(var(--seat) * (var(--n) * 0.6 + 1))),
51
+ 56rem
52
+ );
53
+ --ring-w: var(--seat);
54
+ }
55
+ }
56
+
57
+ .nxgt-seat-ring [data-slot="seat-ring-orbit"] {
58
+ position: relative;
59
+ display: var(--ring-block, flex);
60
+ inline-size: var(--ring-size, auto);
61
+ aspect-ratio: var(--ring-ratio, auto);
62
+ margin-inline: var(--ring-margin, 0);
63
+ }
64
+ .nxgt-seat-ring [data-slot="seat-ring-list"] {
65
+ position: var(--ring-abs, static);
66
+ inset: 0;
67
+ }
68
+ .nxgt-seat-ring [data-slot="seat-ring-seat"] {
69
+ --a: calc(360deg * var(--i, 0) / var(--n, 1));
70
+ position: var(--ring-abs, relative);
71
+ inline-size: var(--ring-w, auto);
72
+ left: calc(
73
+ var(--ring-k, 0) *
74
+ (50% + (50% - var(--seat) / 2) * sin(var(--a)) * var(--seat-dir))
75
+ );
76
+ top: calc(
77
+ var(--ring-k, 0) *
78
+ (50% - (50% - var(--seat) / 2) * cos(var(--a)))
79
+ );
80
+ translate: calc(var(--ring-k, 0) * -50%) calc(var(--ring-k, 0) * -50%);
81
+ }
82
+ .nxgt-seat-ring [data-slot="seat-ring-center"] {
83
+ position: var(--ring-abs, static);
84
+ /* The square inside the circle of seats: the orbit's radius less a seat and a half. */
85
+ inset: calc(50% - 0.5 * max(0px, 50% - 1.1 * var(--seat)));
86
+ }
87
+ }