@nxgt/material 3.38.0 → 3.41.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 (112) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +3 -3
  3. package/dist/{async-slice-DqjtOYlO.js → async-slice-Dj0tAKRI.js} +2 -2
  4. package/dist/{button-D52ron-a.js → button-CTsT_LqL.js} +1 -1
  5. package/dist/charts.js +1733 -1364
  6. package/dist/{chip-0XYwSp9o.js → chip-DP7EyhtT.js} +1 -1
  7. package/dist/{code-editor-BetIXpJ6.js → code-editor-BWn0AXBf.js} +4 -4
  8. package/dist/code-editor.js +4 -4
  9. package/dist/{code-language-items-C7prxl_7.js → code-language-items-CCRuLYpA.js} +2 -2
  10. package/dist/components/components.css +1 -0
  11. package/dist/components/ui/widgets/native-charts/native-charts-reference.css +102 -0
  12. package/dist/{components-NoCZ44Ri.js → components-BUFDh6nQ.js} +16216 -15813
  13. package/dist/components.js +15 -15
  14. package/dist/{dialog-BCsT_aLo.js → dialog-uQld1gKm.js} +1 -1
  15. package/dist/dnd.js +1 -1
  16. package/dist/{dropdown-menu-Crt5QvTr.js → dropdown-menu-BA70o7HC.js} +1 -1
  17. package/dist/editor.js +7 -7
  18. package/dist/{empty-state-DFWq2CWB.js → empty-state-BzwyRX5J.js} +1 -1
  19. package/dist/hooks.js +2 -2
  20. package/dist/{i18n-provider-C0RBM8rH.js → i18n-provider-DkeMr5bw.js} +1 -1
  21. package/dist/i18n.js +5 -5
  22. package/dist/{icon-badge-XBoBIt_R.js → icon-badge-D_z5BGbc.js} +1 -1
  23. package/dist/lib/charts/index.d.ts +3 -1
  24. package/dist/lib/components/ui/collections/server-table/bulk-action-targets.d.ts +18 -0
  25. package/dist/lib/components/ui/collections/server-table/bulk-action.d.ts +50 -3
  26. package/dist/lib/components/ui/collections/server-table/partials/server-table-bulk-buttons.d.ts +5 -3
  27. package/dist/lib/components/ui/collections/server-table/partials/server-table-bulk-focus.d.ts +31 -0
  28. package/dist/lib/components/ui/collections/server-table/partials/server-table-bulk-more.d.ts +24 -0
  29. package/dist/lib/components/ui/collections/server-table/partials/server-table-bulk-notice.d.ts +16 -0
  30. package/dist/lib/components/ui/collections/server-table/partials/server-table-bulk-texts.d.ts +9 -0
  31. package/dist/lib/components/ui/collections/server-table/server-table.d.ts +1 -1
  32. package/dist/lib/components/ui/dates/date-field/date-field-content.d.ts +1 -1
  33. package/dist/lib/components/ui/dates/date-field/date-field-popover.d.ts +3 -1
  34. package/dist/lib/components/ui/dates/date-field/date-field-sheet-entry.d.ts +3 -2
  35. package/dist/lib/components/ui/dates/date-field/date-field-surface.d.ts +1 -1
  36. package/dist/lib/components/ui/dates/date-field/date-field-typed.d.ts +3 -3
  37. package/dist/lib/components/ui/dates/date-field/date-field.d.ts +23 -2
  38. package/dist/lib/components/ui/dates/date-field/use-typed-date.d.ts +3 -1
  39. package/dist/lib/components/ui/dates/date-field/use-zoned-content.d.ts +36 -0
  40. package/dist/lib/components/ui/dates/date-range-field/date-range-field.types.d.ts +1 -1
  41. package/dist/lib/components/ui/dates/picker-popover/hero-text.d.ts +1 -0
  42. package/dist/lib/components/ui/dates/picker-trigger/floating-clock.d.ts +7 -0
  43. package/dist/lib/components/ui/dates/picker-trigger/typed-day.d.ts +8 -0
  44. package/dist/lib/components/ui/dates/picker-trigger/use-zoned-date-props.d.ts +38 -0
  45. package/dist/lib/components/ui/dates/picker-trigger/use-zoned-value.d.ts +20 -0
  46. package/dist/lib/components/ui/dates/picker-trigger/zoned-bounds.d.ts +16 -0
  47. package/dist/lib/components/ui/dates/picker-trigger/zoned-matchers.d.ts +8 -0
  48. package/dist/lib/components/ui/dates/time-field/time-field.d.ts +14 -1
  49. package/dist/lib/components/ui/dates/time-field/time-form-field.d.ts +5 -1
  50. package/dist/lib/components/ui/dates/time-field/time-string-field.d.ts +3 -2
  51. package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
  52. package/dist/lib/components/ui/primitives/segmented-input/segment-date-time.d.ts +13 -0
  53. package/dist/lib/components/ui/primitives/segmented-input/segment-defs.d.ts +6 -0
  54. package/dist/lib/components/ui/primitives/segmented-input/segment-floating.d.ts +11 -0
  55. package/dist/lib/components/ui/primitives/segmented-input/segment-part.d.ts +19 -0
  56. package/dist/lib/components/ui/widgets/native-charts/core/point-tones.d.ts +17 -0
  57. package/dist/lib/components/ui/widgets/native-charts/core/reference-text.d.ts +30 -0
  58. package/dist/lib/components/ui/widgets/native-charts/core/reference.d.ts +45 -0
  59. package/dist/lib/components/ui/widgets/native-charts/core/summary.d.ts +3 -0
  60. package/dist/lib/components/ui/widgets/native-charts/core/table.d.ts +7 -0
  61. package/dist/lib/components/ui/widgets/native-charts/core/types.d.ts +25 -0
  62. package/dist/lib/components/ui/widgets/native-charts/hooks/chart-model-types.d.ts +18 -1
  63. package/dist/lib/components/ui/widgets/native-charts/hooks/model-parts.d.ts +3 -0
  64. package/dist/lib/components/ui/widgets/native-charts/hooks/model-series.d.ts +3 -0
  65. package/dist/lib/components/ui/widgets/native-charts/hooks/model-tones.d.ts +19 -0
  66. package/dist/lib/components/ui/widgets/native-charts/hooks/use-chart-model.d.ts +3 -3
  67. package/dist/lib/components/ui/widgets/native-charts/index.d.ts +1 -1
  68. package/dist/lib/components/ui/widgets/native-charts/line-chart/line-chart-types.d.ts +26 -1
  69. package/dist/lib/components/ui/widgets/native-charts/line-chart/line-geometry.d.ts +4 -0
  70. package/dist/lib/components/ui/widgets/native-charts/line-chart/partials/reference-marks.d.ts +17 -0
  71. package/dist/lib/components/ui/widgets/native-charts/line-chart/partials/tone-points.d.ts +11 -0
  72. package/dist/lib/components/ui/widgets/native-charts/partials/chart-tooltip.d.ts +3 -0
  73. package/dist/lib/i18n/resources/en/en.d.ts +23 -0
  74. package/dist/lib/i18n/resources/en/material.json.d.ts +23 -0
  75. package/dist/lib/i18n/resources/fr/fr.d.ts +23 -0
  76. package/dist/lib/i18n/resources/fr/material.json.d.ts +23 -0
  77. package/dist/lib/i18n/resources/resources.d.ts +46 -0
  78. package/dist/lib/i18n/translator.d.ts +1 -1
  79. package/dist/lib/lib/zoned-floating.d.ts +30 -0
  80. package/dist/lib/lib/zoned-instant.d.ts +16 -0
  81. package/dist/lib/lib/zoned.d.ts +11 -4
  82. package/dist/lib.js +1 -1
  83. package/dist/main.js +21 -21
  84. package/dist/map.js +4 -4
  85. package/dist/material.css +1 -1
  86. package/dist/pdf-reader.js +1 -1
  87. package/dist/print.js +2 -2
  88. package/dist/{public-CWIpzLzO.js → public-ib0sK0Hr.js} +6 -6
  89. package/dist/{rich-code-block-C4aBv4cA.js → rich-code-block-D_PTTZWQ.js} +4 -4
  90. package/dist/{sortable-provider-0uBi0zcP.js → sortable-provider-CrS51nKB.js} +1 -1
  91. package/dist/{spinner-CuxEwO0d.js → spinner-DLd_IHev.js} +1 -1
  92. package/dist/{stored-language-D8aemZhx.js → stored-language-B5SMR-W2.js} +46 -0
  93. package/dist/theme-picker.js +2 -2
  94. package/dist/{theme-toggle-ik5nV1P5.js → theme-toggle-wJYmnwgu.js} +1 -1
  95. package/dist/{toolbar-items-C97E5HRa.js → toolbar-items-BLjrk8uU.js} +2 -2
  96. package/dist/{translate-material-B84ufMSF.js → translate-material-BYRDtSEk.js} +2 -2
  97. package/dist/{translator-Bq8UHmvu.js → translator-C-_M57ZA.js} +1 -1
  98. package/dist/{use-chat-composer-DmDcEGp4.js → use-chat-composer-DrFgIE3T.js} +12 -12
  99. package/dist/{use-heading-spy-BgG7Q47k.js → use-heading-spy-wElRpO2G.js} +1 -1
  100. package/dist/{use-material-translation-CiYhVc39.js → use-material-translation-CFF73jk5.js} +2 -2
  101. package/docs/README.md +1 -1
  102. package/docs/components/data-table-filter-and-lists.md +59 -4
  103. package/docs/components/date-and-time.md +77 -3
  104. package/docs/components/rich-widgets.md +6 -0
  105. package/docs/guides/charts.md +78 -2
  106. package/docs/guides/forms.md +2 -2
  107. package/docs/guides/i18n.md +3 -2
  108. package/docs/roadmap.md +7 -0
  109. package/docs/troubleshooting.md +9 -1
  110. package/lib/components/components.css +1 -0
  111. package/lib/components/ui/widgets/native-charts/native-charts-reference.css +102 -0
  112. package/package.json +2 -2
@@ -63,7 +63,7 @@ export function SalesChart() {
63
63
  plot of the right height; the plot is drawn once the browser has measured its
64
64
  width, with its final geometry (the entry motion only runs after that).
65
65
  Nothing mismatches on hydration.
66
- - **Types:** `ChartRow`, `RowKey`, `ChartValue`, `ChartSeries`, `ChartAxis`, `ChartXAxis`,
66
+ - **Types:** `ChartRow`, `RowKey`, `ChartValue`, `ChartSeries`, `ChartAxis`, `ChartXAxis`, `ChartBand`, `ChartThreshold`,
67
67
  `ChartPoint`, `ChartBaseProps`, `ChartColor`, `ChartShape`, `ChartSlice`,
68
68
  `ScatterSeries`, `ScatterPoint`, `ComboSeries`, `ChartRange`,
69
69
  `ChartZoomOptions`, `ChartScrollOptions`, `ChartRangeProps`, `HeatColumn`,
@@ -203,6 +203,80 @@ The funnel is one series, so it takes no `legend`, `hidden` or `grid`; the round
203
203
  charts take no `grid`, and the heat map no `hidden`, `grid` or `patterns` (these
204
204
  are left out of their props types).
205
205
 
206
+ ## Reading values against a reference
207
+
208
+ `LineChart` (and `AreaChart`, which takes the same props) can draw the range a
209
+ value is read against, so it is not painted outside the chart where the
210
+ tooltip, the summary and the table would miss it.
211
+
212
+ ```tsx
213
+ 'use client';
214
+ import { LineChart } from '@nxgt/material/charts';
215
+ import type { ChartBand, ChartPoint, ChartThreshold } from '@nxgt/material/charts';
216
+
217
+ // Module-level (or memoized): the arrays and the function key the summary and the table.
218
+ const bands: ChartBand[] = [
219
+ { from: 40, to: 60, label: 'Normal range', tone: 'success' },
220
+ ];
221
+ const thresholds: ChartThreshold[] = [
222
+ { value: 70, label: 'Upper limit', tone: 'error' },
223
+ { value: 30, label: 'Lower limit', tone: 'info', dash: false },
224
+ ];
225
+ const toneOf = (point: ChartPoint) =>
226
+ point.value > 70 ? 'error' : point.value > 60 ? 'warning' : point.value < 40 ? 'info' : undefined;
227
+
228
+ <LineChart
229
+ title="Daily readings"
230
+ data={readings}
231
+ x="day"
232
+ series={[{ key: 'reading', label: 'Reading' }]}
233
+ points
234
+ bands={bands}
235
+ thresholds={thresholds}
236
+ pointTone={toneOf}
237
+ toneLabels={{ error: 'Critical', warning: 'High', info: 'Low' }}
238
+ />;
239
+ ```
240
+
241
+ | Prop | Effect |
242
+ | --- | --- |
243
+ | `bands` | `{ from, to, label, tone? }[]`: a wash across the plot behind the lines, with its `label` inside it at the left. `from` and `to` may come in either order. |
244
+ | `thresholds` | `{ value, label, tone?, dash? }[]`: a horizontal line behind the series with its `label` above it at the right end; dashed unless `dash: false`. |
245
+ | `pointTone` | `(point: ChartPoint, series: ChartSeries) => Tone \| undefined`: the tone of one value. It is given the point `onPointClick` gets, so `point.index` is the row of the full `data` even when the chart is zoomed. |
246
+ | `toneLabels` | `{ [tone]: word }`: the word of each tone, in your language and domain. Unset, the library's neutral word ("Error", translated by `material.charts.tone.*`); an app tone you declared falls back to its own name. |
247
+
248
+ **The value axis holds them.** Unless `yAxis.min` and `yAxis.max` pin it, the
249
+ axis grows to include every band end and threshold, so none is out of view.
250
+ With a pinned axis a band is clipped to the plot and a threshold outside it is
251
+ not drawn (it stays in the summary and the table). The scales are the chart's
252
+ own, so a `zoom` window, a phone `scroll` and a resize keep them right.
253
+
254
+ **The words are carried everywhere the picture is.**
255
+
256
+ - The **tooltip** and the **live status** add the tone's word to a toned
257
+ value: `Day 4: Reading 63 (High)`.
258
+ - The **summary** lists the ranges and lines (`Reference ranges: Normal range:
259
+ 40 to 60. Thresholds: Upper limit: 70`), says how many values of each series
260
+ lie outside each band (`Reading: 5 of 12 points outside Normal range.`) and
261
+ counts the tones (`Reading: 2 High, 1 Critical, 2 Low, of 12 points.`). Over
262
+ a `zoom` window it counts the window's rows.
263
+ - **View data** gets a column after each toned series (`Reading tone`) and a
264
+ list of the ranges and lines under the table.
265
+
266
+ **Never colour alone.** A toned point is drawn as a ring in the tone's colour
267
+ round the value (the series' own shape inside the ring with `patterns`), so it
268
+ differs from an untoned dot by its form. A band is a decorative tint: the
269
+ label, the summary and the table carry its meaning. Labels use the tone's text
270
+ colour (4.5:1) on a card-coloured halo, lines and rings hold 3:1, and in
271
+ forced colours the band is outlined and the lines, labels and rings use system
272
+ colours. Nothing animates: reduced motion changes nothing here. Labels are
273
+ cut to 45% of the plot's width, and a label in a right-to-left script is set
274
+ right to left (the plot itself is never mirrored, see
275
+ [Right-to-left pages](#right-to-left-pages)).
276
+
277
+ A custom `tooltip` function receives the points as before; read the tone from
278
+ your own `pointTone` if it should show the word.
279
+
206
280
  ## Shared props
207
281
 
208
282
  Every chart takes the shared props (`ChartBaseProps`):
@@ -398,7 +472,9 @@ keyboard behaviour.
398
472
  contrast alone, so the heat map is exempt from the 3:1 non-text rule for that
399
473
  step, and **View data** (the whole matrix as a table) is the accessible
400
474
  fallback; the number in a cell keeps 4.5:1 against its own fill.
401
- - **Never colour alone:** `patterns` adds shapes, dashes and fill patterns.
475
+ - **Never colour alone:** `patterns` adds shapes, dashes and fill patterns; a
476
+ toned point is a ring and its word is in the tooltip, the summary and the
477
+ table ([Reading values against a reference](#reading-values-against-a-reference)).
402
478
  - **Reduced motion:** with `prefers-reduced-motion`, the final geometry shows at
403
479
  once with a short 120ms fade; there is no bounce, draw-in or morph, and the
404
480
  crosshair jumps.
@@ -508,9 +508,9 @@ or fails validation.
508
508
 
509
509
  | Field · wrapper | Form value | Empty default |
510
510
  | --- | --- | --- |
511
- | `DateField` · `DateFormField` | `Date \| undefined` (not an ISO string) | `undefined` |
511
+ | `DateField` · `DateFormField` | `Date \| undefined` (not an ISO string). With `timeZone`, still the true instant (the field shows and edits that zone's wall clock); with `showTimePicker`, `undefined` until the date and the time are both complete | `undefined` |
512
512
  | `DateRangeField` · `DateRangeFormField` | `DateRange \| undefined`: `{ from: Date \| undefined; to?: Date }` | `undefined` |
513
- | `TimeField` · `TimeFormField` | `Date \| undefined`. With `asString`: `'HH:mm'`. While empty it shows its `placeholder` | `undefined` / `''` |
513
+ | `TimeField` · `TimeFormField` | `Date \| undefined` (with `timeZone`, the true instant). With `asString`: `'HH:mm'`. While empty it shows its `placeholder` | `undefined` / `''` |
514
514
  | `DurationField` · `DurationFormField` | `number \| null`: total minutes (hours × 60 + minutes) | `null` |
515
515
 
516
516
  ### Selection & choice
@@ -371,7 +371,8 @@ date") and `material.dates.apply` on its Apply button ("Apply",
371
371
  "Appliquer"); the range itself is written by `Intl.DateTimeFormat`'s
372
372
  `formatRange` in the field's locale. On a phone's sheet, the switch to the
373
373
  large typed field is named `material.dates.type-date` ("Type the date",
374
- "Saisir la date") on `DateField` and `material.dates.type-range` ("Type the
374
+ "Saisir la date") on `DateField` (`material.dates.type-date-time`, "Type the date and
375
+ time", "Saisir la date et l’heure", with `showTimePicker`) and `material.dates.type-range` ("Type the
375
376
  dates", "Saisir les dates") on `DateRangeField`. Its hero says
376
377
  `material.dates.select-date` ("Select date", "Choisir la date") while the date
377
378
  is empty, `material.dates.select-dates` on `DateRangeField`, and the Cancel of
@@ -403,7 +404,7 @@ fichier.") when it cannot show it, `material.file-preview.download`
403
404
  "Seuls les premiers {size} de ce fichier sont affichés.") under a text cut
404
405
  by the size cap; the text or Markdown it shows scrolls in a region named by
405
406
  `material.file-preview.content` ("Contents of {name}", "Contenu de {name}").
406
- A `ServerTable` bulk action with a list entry reads `material.server-table.bulk-action` ("{label} ({count})", the same in French) and is named by `material.server-table.bulk-action-name` ("{label} {count, plural, one {# row} other {# rows}}"; "{label} : {count, plural, one {# ligne} other {# lignes}}").
407
+ A `ServerTable` bulk action with a list entry reads `material.server-table.bulk-action` ("{label} ({count})", the same in French) and is named by `material.server-table.bulk-action-name` ("{label} {count, plural, one {# row} other {# rows}}"; "{label} : {count, plural, one {# ligne} other {# lignes}}"). Past the action's `max` the notice that replaces its button reads `material.server-table.bulk-max-notice` ("Select {max, plural, one {# row} other {# rows}} or fewer to {label}"; "Sélectionnez {max, plural, one {# ligne} other {# lignes}} ou moins pour {label}"), unless the action gives its `maxNotice`; an action's `name` replaces `bulk-action-name`.
407
408
  `ServerTable`'s own live region (without `filter`) says
408
409
  `material.server-table.results` once a new query is answered ("{count,
409
410
  plural, =0 {No results} one {# result} other {# results}}"; "{count, plural,
package/docs/roadmap.md CHANGED
@@ -482,6 +482,13 @@ version they shipped in, and planned entries may name the major they target.
482
482
  slider handles) and a phone scroll that opens on the latest point. The
483
483
  light `--chart-4` is now a purple. Client-only, like `/editor`.
484
484
  ([Charts](guides/charts.md))
485
+ - **Reference bands, thresholds and point tones on the line chart** — `bands`
486
+ shade a range of the value axis, `thresholds` draw labelled lines, and
487
+ `pointTone` rings the values that need a word (`toneLabels` gives the words).
488
+ The words reach the tooltip, the live status, the summary (values outside a
489
+ band, tone counts) and a tone column of "View data"; the axis grows to hold
490
+ them and a zoom window keeps them right.
491
+ ([Reading values against a reference](guides/charts.md#reading-values-against-a-reference))
485
492
 
486
493
  - **The page's title in the app bar, a text breadcrumb root and the tenant in the menu** —
487
494
  a route's `handle.title` (a node, or a function of the match like
@@ -6358,9 +6358,17 @@ names "Start time" and "End time". Every pick is committed as it is made, and
6358
6358
  OK only closes the picker. Cancel puts back the value the picker opened with
6359
6359
  (it fires `onValueChange` only if something changed); closing the picker in
6360
6360
  another way (Escape, a drag, a click outside) keeps what was picked.
6361
- **Fix:** drive the tiles:
6361
+ A `DateField` with `showTimePicker` also types the time in the field itself
6362
+ (`spinbutton`s "Hours", "Minutes" and, on a 12-hour clock, "AM / PM", in the
6363
+ same group as the date's), so while the popover is open `getByRole('spinbutton',
6364
+ { name: 'Hours' })` can match two: the field's and the tile's. A day clicked in
6365
+ the calendar keeps the time of day.
6366
+ **Fix:** drive the tiles, scoped to the popover (or type in the field's group):
6362
6367
 
6363
6368
  ```ts
6369
+ const popover = screen.getByRole('dialog');
6370
+ await user.click(within(popover).getByRole('button', { name: 'Increase hours' }));
6371
+ // or type: within(screen.getByRole('group', { name: 'Starts' })).getByRole('spinbutton', { name: 'Hours' })
6364
6372
  const start = screen.getByRole('group', { name: 'Start time' });
6365
6373
  await user.click(within(start).getByRole('button', { name: 'Increase hours' }));
6366
6374
  await user.click(screen.getByRole('button', { name: 'OK' }));
@@ -150,6 +150,7 @@
150
150
  @import "./ui/widgets/native-charts/native-charts-round.css";
151
151
  @import "./ui/widgets/native-charts/native-charts-heat.css";
152
152
  @import "./ui/widgets/native-charts/native-charts-points.css";
153
+ @import "./ui/widgets/native-charts/native-charts-reference.css";
153
154
  @import "./ui/widgets/native-charts/native-charts-zoom.css";
154
155
  /* The editor's documents: `.nxgt-prose`, shared with the viewer. */
155
156
  @import "./editor-prose.css";
@@ -0,0 +1,102 @@
1
+ /* A line chart's reference bands, threshold lines and toned points. Reached
2
+ * from components.css.
3
+ *
4
+ * A band is a wash across the plot, behind the lines: decorative, since its
5
+ * label (read aloud by the summary and listed under "View data") carries the
6
+ * meaning. A tone paints it with the tone itself at 12%; without one it is
7
+ * the foreground at 6%. Labels and threshold lines use the tone's text
8
+ * colour (4.5:1 on the card, both themes) or the foreground, and sit on a
9
+ * card-coloured halo so a line passing behind them does not cut the letters.
10
+ * A toned point is a ring round the value: a shape, never colour alone. */
11
+ .nxgt-chart-ref-band {
12
+ fill: var(--foreground);
13
+ opacity: 0.06;
14
+ }
15
+ .nxgt-chart-ref-band[data-tone] {
16
+ fill: var(--nxgt-tone);
17
+ opacity: 0.12;
18
+ }
19
+ .nxgt-chart-ref-line {
20
+ stroke: var(--nxgt-chart-axis);
21
+ stroke-width: 1.5;
22
+ stroke-dasharray: 6 4;
23
+ }
24
+ .nxgt-chart-ref-line[data-dash="false"] {
25
+ stroke-dasharray: none;
26
+ }
27
+ .nxgt-chart-ref-line[data-tone] {
28
+ stroke: var(--nxgt-tone-text);
29
+ }
30
+ .nxgt-chart-ref-label {
31
+ fill: var(--foreground);
32
+ font-size: 11px;
33
+ font-weight: 600;
34
+ paint-order: stroke;
35
+ stroke: var(--card);
36
+ stroke-width: 3px;
37
+ stroke-linejoin: round;
38
+ pointer-events: none;
39
+ }
40
+ .nxgt-chart-ref-label[data-tone] {
41
+ fill: var(--nxgt-tone-text);
42
+ }
43
+ .nxgt-chart[data-phone] .nxgt-chart-ref-label {
44
+ font-size: 10px;
45
+ }
46
+
47
+ .nxgt-chart-tone-ring {
48
+ fill: var(--card);
49
+ stroke: var(--nxgt-tone-text);
50
+ stroke-width: 2;
51
+ }
52
+ .nxgt-chart-tone-dot {
53
+ fill: var(--nxgt-tone-text);
54
+ }
55
+
56
+ /* The tone's word in the tooltip, with the ring the plot draws. */
57
+ .nxgt-chart-tip-tone {
58
+ display: inline-flex;
59
+ align-items: center;
60
+ gap: 4px;
61
+ color: var(--nxgt-tone-text);
62
+ font-size: 12px;
63
+ font-weight: 600;
64
+ }
65
+
66
+ /* Under "View data": the ranges and lines read as a list. */
67
+ .nxgt-chart-table-notes {
68
+ margin: 8px 0 0;
69
+ padding: 0;
70
+ list-style: none;
71
+ color: var(--muted-foreground);
72
+ font-size: 12px;
73
+ }
74
+
75
+ @media (forced-colors: active) {
76
+ .nxgt-chart-ref-band {
77
+ fill: Canvas;
78
+ stroke: GrayText;
79
+ stroke-width: 1;
80
+ stroke-dasharray: 2 3;
81
+ opacity: 1;
82
+ }
83
+ .nxgt-chart-ref-line,
84
+ .nxgt-chart-ref-line[data-tone] {
85
+ stroke: CanvasText;
86
+ }
87
+ .nxgt-chart-ref-label,
88
+ .nxgt-chart-ref-label[data-tone] {
89
+ fill: CanvasText;
90
+ stroke: Canvas;
91
+ }
92
+ .nxgt-chart-tone-ring {
93
+ fill: Canvas;
94
+ stroke: Highlight;
95
+ }
96
+ .nxgt-chart-tone-dot {
97
+ fill: Highlight;
98
+ }
99
+ .nxgt-chart-tip-tone {
100
+ color: CanvasText;
101
+ }
102
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nxgt/material",
3
- "version": "3.38.0",
3
+ "version": "3.41.0",
4
4
  "license": "MIT",
5
5
  "bugs": {
6
6
  "email": "stevegires@gmail.com"
@@ -362,7 +362,7 @@
362
362
  "docs:previews": "rm -rf node_modules/.cache/nxgt-preview-free/missing && NXGT_PREVIEW_FREE=1 vitest run --project previews && bun .storybook/preview-free-report.ts"
363
363
  },
364
364
  "dependencies": {
365
- "@nxgt/material-core": "^0.39.0",
365
+ "@nxgt/material-core": "^0.40.0",
366
366
  "@base-ui/react": "^1.6.0",
367
367
  "@dnd-kit/core": "^6.3.1",
368
368
  "@dnd-kit/sortable": "^10.0.0",