@nxgt/material 3.65.0 → 3.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/README.md +4 -1
- package/dist/{alert-dialog-C0nGUSCP.js → alert-dialog-BgQDxcYh.js} +1 -1
- package/dist/{async-slice-CyansBvD.js → async-slice-BCZyWgGr.js} +48 -25
- package/dist/{background-qdnet2A5.js → background-D1gC4m2R.js} +1 -1
- package/dist/backgrounds.js +1 -1
- package/dist/{button-D5k3K-gM.js → button-2de_lrix.js} +1 -1
- package/dist/charts.js +3 -3
- package/dist/{chip-lWXIJkqo.js → chip-Cs0uEjpu.js} +2 -2
- package/dist/{code-editor-aXG4CdY-.js → code-editor-BYhBAfcc.js} +5 -5
- package/dist/code-editor.js +5 -5
- package/dist/{code-language-items-CsaXyApg.js → code-language-items-xhmbF6wA.js} +2 -2
- package/dist/components/components.css +2 -0
- package/dist/components/ui/layout/app-shell/activity-backdrop.css +4 -3
- package/dist/components/ui/primitives/tabs/tabs-nav-forced.css +27 -0
- package/dist/components/ui/primitives/toggle-group/toggle-group-segmented.css +10 -2
- package/dist/components/ui/primitives/toggle-group/toggle-group.css +5 -1
- package/dist/{components-DNcTvjlv.js → components-DYiyCe6v.js} +16868 -16636
- package/dist/components.js +28 -28
- package/dist/{compose-refs-DZ0iIVF-.js → compose-refs-G4J4kaUA.js} +1 -1
- package/dist/{dialog-DWNaxpa-.js → dialog-Co5oksU1.js} +4 -4
- package/dist/dnd.js +2 -2
- package/dist/{dropdown-menu-ChvAIQIW.js → dropdown-menu-DdzyvN76.js} +1 -1
- package/dist/editor.js +365 -365
- package/dist/{empty-state-CFLcVzKL.js → empty-state-CQ0CV0kA.js} +2 -2
- package/dist/{field-blur-CV9orzdJ.js → field-blur-B2y-bNYi.js} +1 -1
- package/dist/{field-blur-context-C8BX8IBy.js → field-blur-context-BZtwcPUV.js} +1 -1
- package/dist/{hooks-DilW-3jc.js → hooks-DjuYsY-j.js} +2 -2
- package/dist/hooks.js +2 -2
- package/dist/{hover-card-IeS_1RPH.js → hover-card-BeBVy6tB.js} +1 -1
- package/dist/i18n.js +3 -3
- package/dist/{icon-badge-Bf4SoA2i.js → icon-badge-DbYsbzwZ.js} +3 -3
- package/dist/{icon-button-l3dQTRrC.js → icon-button-Co6ttdv1.js} +1 -1
- package/dist/lib/components/ui/actions/index.d.ts +1 -0
- package/dist/lib/components/ui/actions/link/link.d.ts +1 -19
- package/dist/lib/components/ui/actions/share-button/index.d.ts +3 -0
- package/dist/lib/components/ui/actions/share-button/share-button.d.ts +17 -0
- package/dist/lib/components/ui/actions/share-button/share-or-copy.d.ts +17 -0
- package/dist/lib/components/ui/collections/dnd/index.d.ts +1 -1
- package/dist/lib/components/ui/display/enrolment-card/use-enrolment-card-labels.d.ts +1 -1
- package/dist/lib/components/ui/display/recovery-codes/use-recovery-codes-labels.d.ts +1 -1
- package/dist/lib/components/ui/display/recovery-codes-status/use-recovery-codes-status-labels.d.ts +1 -1
- package/dist/lib/components/ui/display/stat-card/partials/stat-card-link-parts.d.ts +7 -0
- package/dist/lib/components/ui/display/stat-card/stat-card.d.ts +6 -1
- package/dist/lib/components/ui/display/stat-card/types.d.ts +14 -0
- package/dist/lib/components/ui/feedback/step-up-dialog/use-step-up-labels.d.ts +1 -1
- package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
- package/dist/lib/components/ui/fields/number-field/number-control.d.ts +4 -1
- package/dist/lib/components/ui/fields/number-field/number-stepper.d.ts +5 -0
- package/dist/lib/components/ui/fields/verification-code/use-verification-labels.d.ts +1 -1
- package/dist/lib/components/ui/layout/app-shell/route-transition.d.ts +1 -1
- package/dist/lib/components/ui/primitives/link/link-component-provider.d.ts +1 -1
- package/dist/lib/components/ui/primitives/link/nav-current.d.ts +22 -0
- package/dist/lib/components/ui/primitives/link/router-link.d.ts +25 -0
- package/dist/lib/components/ui/primitives/tabs/index.d.ts +2 -0
- package/dist/lib/components/ui/primitives/tabs/internal.d.ts +2 -0
- package/dist/lib/components/ui/primitives/tabs/partials/tabs-nav-link.d.ts +22 -0
- package/dist/lib/components/ui/primitives/tabs/tab-param-url.d.ts +53 -0
- package/dist/lib/components/ui/primitives/tabs/tabs-nav.d.ts +22 -0
- package/dist/lib/components/ui/primitives/tabs/tabs-selectors.d.ts +8 -0
- package/dist/lib/components/ui/primitives/tabs/use-tab-param.d.ts +35 -0
- package/dist/lib/components/ui/primitives/tabs/use-tabs-overflow.d.ts +4 -1
- package/dist/lib/components/ui/primitives/toggle-group/index.d.ts +1 -0
- package/dist/lib/components/ui/primitives/toggle-group/segmented-nav-item.d.ts +20 -0
- package/dist/lib/components/ui/primitives/toggle-group/segmented-nav.d.ts +22 -0
- package/dist/lib/components/ui/primitives/toggle-group/toggle-group.d.ts +4 -3
- package/dist/lib/i18n/resources/en/en.d.ts +5 -0
- package/dist/lib/i18n/resources/en/material.json.d.ts +6 -1
- package/dist/lib/i18n/resources/fr/fr.d.ts +5 -0
- package/dist/lib/i18n/resources/fr/material.json.d.ts +6 -1
- package/dist/lib/i18n/resources/resources.d.ts +10 -0
- package/dist/lib/i18n/translator.d.ts +1 -1
- package/dist/lib.js +31 -54
- package/dist/main.js +42 -42
- package/dist/map.js +8 -8
- package/dist/material.css +1 -1
- package/dist/pdf-reader.js +1 -1
- package/dist/print.js +1 -1
- package/dist/{public-B-greXGt.js → public-AXwv1h3v.js} +10 -10
- package/dist/{rich-code-block-Cv6s59vB.js → rich-code-block-qSvkA5rI.js} +5 -5
- package/dist/{sortable-provider-DVmZcglU.js → sortable-provider-DPk-RVEU.js} +3 -3
- package/dist/{spinner-OQAweH2r.js → spinner-PdSk7zEs.js} +1 -1
- package/dist/theme-picker.js +2 -2
- package/dist/{theme-toggle-DPx44p6a.js → theme-toggle-CZQckLDd.js} +2 -2
- package/dist/{toggle-group-BkH23Jk4.js → toggle-group-DXXlqid2.js} +1 -1
- package/dist/{toolbar-items-CQ3S_XZw.js → toolbar-items-BmNYNaRB.js} +3 -3
- package/dist/{translate-material-BHL4g2UB.js → translate-material-BlCQ6AW9.js} +1 -1
- package/dist/{translator-BJsjXcAp.js → translator-ChpeKCO3.js} +8 -2
- package/dist/{typography-CwhEwPay.js → typography-C4JSRr2B.js} +1 -1
- package/dist/{use-chat-composer-R0vng5RU.js → use-chat-composer-OUa9akfM.js} +1725 -1719
- package/dist/{use-heading-spy-Brcn0l_J.js → use-heading-spy-K-HUp4o_.js} +4 -4
- package/dist/{use-material-translation-mY3U83TV.js → use-material-translation-DkE9J5NE.js} +1 -1
- package/dist/{use-return-focus-BQ413TNG.js → use-return-focus-KypnR7vv.js} +1 -1
- package/docs/components/README.md +3 -1
- package/docs/components/buttons-and-actions.md +29 -0
- package/docs/components/data-display.md +14 -1
- package/docs/components/form-fields.md +9 -1
- package/docs/components/primitives.md +209 -0
- package/docs/previews/buttons-actions-sharebutton.webp +0 -0
- package/docs/previews/primitives-segmentednav.webp +0 -0
- package/docs/previews/primitives-tabsnav.webp +0 -0
- package/docs/roadmap.md +2 -1
- package/docs/troubleshooting.md +26 -0
- package/lib/components/components.css +2 -0
- package/lib/components/ui/layout/app-shell/activity-backdrop.css +4 -3
- package/lib/components/ui/primitives/tabs/tabs-nav-forced.css +27 -0
- package/lib/components/ui/primitives/toggle-group/toggle-group-segmented.css +10 -2
- package/lib/components/ui/primitives/toggle-group/toggle-group.css +5 -1
- package/package.json +1 -1
- /package/dist/lib/{components/ui/collections/dnd → lib}/compose-refs.d.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @nxgt/material
|
|
2
2
|
|
|
3
|
+
## 3.66.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#2062](https://github.com/softistx/nxgt-material/pull/2062) [`6d1e6f6`](https://github.com/softistx/nxgt-material/commit/6d1e6f631b738f5e3c7539e2d54b73e36cbaa2e5) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `NumberField` and `NumberFormField`: the +/− buttons are named after their field ("Increase Guests", "Diminuer Invités"), through the new `material.number-field.increase-named` and `decrease-named` keys (en, fr), so a form with several number fields no longer gives a screen reader identical buttons ([#1928](https://github.com/softistx/nxgt-material/issues/1928)). The name is the plain-text `label`, else `aria-label`; a field with neither keeps "Increase" / "Decrease". A test that looks the buttons up by the exact name `Increase` now needs `/^Increase/` or the full name. The Vue twin is the `vue` issue [#2060](https://github.com/softistx/nxgt-material/issues/2060).
|
|
8
|
+
|
|
9
|
+
- [#2078](https://github.com/softistx/nxgt-material/pull/2078) [`1c6ca26`](https://github.com/softistx/nxgt-material/commit/1c6ca2674d0cea09a3f728b041cae42d0c1f9ccd) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Add `SegmentedNav` and `SegmentedNavItem`, segmented route links: the segmented `ToggleGroup` look as a labelled `nav` of links, the current one marked `aria-current="page"` from `value` or `current` and drawn as the selected pill. Tab moves from link to link; on a phone the nav scrolls inside itself with an edge fade. The links render through React Router's `Link` or the `LinkComponentProvider`, with `preventScrollReset` on by default. The segmented and forced-colours `ToggleGroup` styles also follow `aria-current="page"`.
|
|
10
|
+
|
|
11
|
+
- [#2070](https://github.com/softistx/nxgt-material/pull/2070) [`59a0cdc`](https://github.com/softistx/nxgt-material/commit/59a0cdc8642bdca240f3483f743e808a9d2a747b) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `ShareButton` (Buttons & actions) shares a link, text or title (`url`, `text`, `title`) through `navigator.share` when the browser has it (and `canShare` accepts the data), does nothing when the user closes the sheet (`AbortError`), and otherwise copies the link with `CopyButton`'s "Copied" / "Copy failed" announcement. The accessible name stays "Share" (`SHARE_BUTTON_LABEL`, or `label`) and `onShare` reports `'shared'`, `'cancelled'`, `'copied'` or `'failed'`. `navigator` is read on click, so it server-renders. New text `material.share.share`, in English and French. Additive; React only for now. Fixes [#1945](https://github.com/softistx/nxgt-material/issues/1945).
|
|
12
|
+
|
|
13
|
+
- [#2073](https://github.com/softistx/nxgt-material/pull/2073) [`76c8eac`](https://github.com/softistx/nxgt-material/commit/76c8eac2c26fb38e47e43e317498b3c4a393b4d8) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `StatCard` takes `href` (and `linkComponent`, like `LinkButton`; `LinkComponentProvider` applies too): the whole card becomes one link with a trailing chevron (a link without hover, on a phone), the card's hover border and focus-visible ring, named by its label and value ([#2072](https://github.com/softistx/nxgt-material/issues/2072)).
|
|
14
|
+
|
|
15
|
+
- [#2078](https://github.com/softistx/nxgt-material/pull/2078) [`1c6ca26`](https://github.com/softistx/nxgt-material/commit/1c6ca2674d0cea09a3f728b041cae42d0c1f9ccd) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Add `useTabParam`, `skipTabChange` and `tabIds` for route tabs kept in the URL. `useTabParam({ values })` reads `values` as literal types and returns the current `value` (an unknown param falls back to the default) and `hrefFor(tab)`, a `to` for `TabsNavLink` / `SegmentedNavItem` that keeps the other params, drops the hash (`keepHash` keeps it, since `ScrollRestoration` jumps to a hash) and writes no param for the default tab (`explicitDefault` writes it out). `skipTabChange()` is a `shouldRevalidate` that skips the loaders when only the tab param changed. `tabIds(value, prefix = 'tab')` returns the stable `<prefix>-<value>` / `<prefix>-panel-<value>` ids for the tab and its panel, for tests; the prefix keeps two tab sets on one page apart.
|
|
16
|
+
|
|
17
|
+
- [#2078](https://github.com/softistx/nxgt-material/pull/2078) [`1c6ca26`](https://github.com/softistx/nxgt-material/commit/1c6ca2674d0cea09a3f728b041cae42d0c1f9ccd) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Add `TabsNav` and `TabsNavLink`, route tabs as links: a labelled `nav` of links in the `Tabs` look (`underline` or `segmented`), the current one marked `aria-current="page"` from `value` or `current`, with the sliding indicator and the phone scroll cue. The links render through React Router's `Link` or the `LinkComponentProvider`, with `preventScrollReset` on by default. The current link stays marked in forced colours, links keep a 44px target on a coarse pointer, and inside an `ActivityLayout` with a `backdrop` the strip is a frosted band like `Tabs`.
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- [#2067](https://github.com/softistx/nxgt-material/pull/2067) [`b60e637`](https://github.com/softistx/nxgt-material/commit/b60e637ce3d9b94e84b1de570281582443628309) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Internal: the label hooks reuse `cleanObject` instead of six local copies ([#1941](https://github.com/softistx/nxgt-material/issues/1941)).
|
|
22
|
+
|
|
3
23
|
## 3.65.0
|
|
4
24
|
|
|
5
25
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -526,6 +526,8 @@ Not components: what the stylesheet gives any element.
|
|
|
526
526
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/primitives-scrollarea.webp" width="120" alt="ScrollArea"> | [`ScrollArea`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/primitives.md#scrollarea), `ScrollBar` | Scroll container with a thin custom scrollbar that matches the theme. | `ScrollArea`, `ScrollBar` |
|
|
527
527
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/primitives-table.webp" width="120" alt="Table"> | [`Table`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/primitives.md#table), `TableHeader`, `TableBody`, `TableFooter`, `TableRow`, `TableHead`, `TableCell`, `TableCaption`, `TableEmpty` | Styled semantic table inside a scrollable wrapper; `TableEmpty` is the full-width "nothing here" row. | `Table` (same parts) |
|
|
528
528
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/primitives-tabs.webp" width="120" alt="Tabs"> | [`Tabs`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/primitives.md#tabs), `TabsList`, `TabsTrigger`, `TabsContent` | Tabs whose triggers can take an icon, in two looks: `underline` (the default) and the `segmented` pill. | `Tabs` (same parts) |
|
|
529
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/primitives-tabsnav.webp" width="120" alt="TabsNav"> | [`TabsNav`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/primitives.md#tabsnav), `TabsNavLink`, `useTabParam`, `skipTabChange`, `tabIds` | Route tabs as links: a `nav` of links in the `Tabs` look, with `aria-current="page"` on the current one, the sliding indicator and the phone scroll cue; `useTabParam` keeps the tab in the URL. | no equivalent yet |
|
|
530
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/primitives-segmentednav.webp" width="120" alt="SegmentedNav"> | [`SegmentedNav`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/primitives.md#segmentednav), `SegmentedNavItem` | Segmented links: the segmented `ToggleGroup` look as a `nav` of links, with `aria-current="page"` and the pill on the current one; it scrolls inside itself on a phone. | no equivalent yet |
|
|
529
531
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/primitives-toggle.webp" width="120" alt="Toggle"> | [`Toggle`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/primitives.md#toggle) | Pressable on / off button: default or outlined, three sizes. | `Toggle` |
|
|
530
532
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/primitives-togglegroup.webp" width="120" alt="ToggleGroup"> | [`ToggleGroup`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/primitives.md#togglegroup), `ToggleGroupItem`, `ToggleGroupSeparator` | Toggle group in three looks: connected (pill morph), segmented (sliding pill), separate; sizes sm, md, lg; horizontal or vertical. | `ToggleGroup`, `ToggleGroupItem` |
|
|
531
533
|
| — | [`Activity`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/primitives.md#activity) | React `<Activity>` switched by a boolean `visible`. | `Activity` |
|
|
@@ -546,6 +548,7 @@ Not components: what the stylesheet gives any element.
|
|
|
546
548
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/buttons-actions-responsivebutton.webp" width="120" alt="ResponsiveButton"> | [`ResponsiveButton`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/buttons-and-actions.md#responsivebutton) | Shows its label on desktop and collapses to icon-only on mobile, keeping the label for screen readers. | `ResponsiveButton` |
|
|
547
549
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/buttons-actions-linkbutton.webp" width="120" alt="LinkButton"> | [`LinkButton`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/buttons-and-actions.md#linkbutton), `IconLinkButton`, `ResponsiveLinkButton` | The button styles rendered as `react-router` links. | `LinkButton`, `IconLinkButton`, `ResponsiveLinkButton` |
|
|
548
550
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/buttons-actions-copybutton.webp" width="120" alt="CopyButton"> | [`CopyButton`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/buttons-and-actions.md#copybutton), `CopyValue` | Copies a value to the clipboard and briefly shows a check mark. `CopyValue` displays the value next to the button. | `CopyButton`, `CopyValue` |
|
|
551
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/buttons-actions-sharebutton.webp" width="120" alt="ShareButton"> | [`ShareButton`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/buttons-and-actions.md#sharebutton) | Opens the system share sheet (`navigator.share`) and copies the link where there is none. | not yet |
|
|
549
552
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/buttons-actions-highlighttext.webp" width="120" alt="HighlightText"> | [`HighlightText`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/buttons-and-actions.md#highlighttext) | Marks case-insensitive matches of a query inside a string (`splitMatch`). | `HighlightText` |
|
|
550
553
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/buttons-actions-loadmorebutton.webp" width="120" alt="LoadMoreButton"> | [`LoadMoreButton`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/buttons-and-actions.md#loadmorebutton) | "Load more" button for cursor pagination; icon-only with a tooltip unless `expanded`. | `LoadMoreButton` |
|
|
551
554
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/buttons-actions-loadmorefooter.webp" width="120" alt="LoadMoreFooter"> | [`LoadMoreFooter`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/buttons-and-actions.md#loadmorefooter) | Footer of a paged list: shown-of-total line, load button, and a failed state with retry. | not yet |
|
|
@@ -639,7 +642,7 @@ Not components: what the stylesheet gives any element.
|
|
|
639
642
|
| <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. | — |
|
|
640
643
|
| <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). | — |
|
|
641
644
|
| <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` |
|
|
642
|
-
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-statcard.webp" width="120" alt="StatCard"> | [`StatCard`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#statcard) | KPI tile with value, hint, icon, toned delta and a loading skeleton; `tone` and `variant` (`outlined`, `tonal`, `filled`) colour it, `valueSize` enlarges the value, `size="sm"` makes a compact tile (it ignores `hint`, `delta` and `valueSize`); `StatCardGroup` lays compact tiles 2×2 on a phone and in a row beside, holds its width in a flex row, and `align="end"` sets them against its end edge. | `StatCard` |
|
|
645
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-statcard.webp" width="120" alt="StatCard"> | [`StatCard`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#statcard) | KPI tile with value, hint, icon, toned delta and a loading skeleton; `tone` and `variant` (`outlined`, `tonal`, `filled`) colour it, `valueSize` enlarges the value, `size="sm"` makes a compact tile (it ignores `hint`, `delta` and `valueSize`); `href` (and `linkComponent`) makes the whole card one link with a trailing chevron; `StatCardGroup` lays compact tiles 2×2 on a phone and in a row beside, holds its width in a flex row, and `align="end"` sets them against its end edge. | `StatCard` |
|
|
643
646
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-metric-cards.webp" width="120" alt="TrendCard"> | [`TrendCard`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#metric-cards), `GoalCard`, `BreakdownCard`, `RankCard`, `CompareCard`, `HeatweekCard`, `FunnelCard`, `GaugeCard`, `SparkbarCard`, `DeltaListCard`, `BandCard`, `LatencyCard`, `RatioCard`, `ThresholdCard`, `PaceCard`, `HistogramCard`, `Sparkline` | Dashboard tiles including compare, heat, funnel, gauge, spark bars, delta list, range band, latency, ratio, threshold, pace and labelled histogram. Container queries. A `tone` (named, or your app's) draws the accent in it; deltas and breaches stay semantic. | `TrendCard`, `GoalCard`, `BreakdownCard`, `RankCard`, `CompareCard`, `HeatweekCard`, `FunnelCard`, `GaugeCard`, `SparkbarCard`, `DeltaListCard`, `BandCard`, `LatencyCard`, `RatioCard`, `ThresholdCard`, `PaceCard`, `HistogramCard` |
|
|
644
647
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-card-presets.webp" width="120" alt="FeatureCard"> | [`FeatureCard`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#card-presets), `MediaCard`, `PricingCard`, `ProfileCard`, `QuoteCard`, `OverlayCard`, `SpotlightCard`, `CrewCard`, `SplitCard`, `TicketCard`, `NoticeCard`, `TimelineCard`, `MessageCard`, `EventCard`, `StackCard`, `LinkCard`, `AlbumCard`, `TagCard`, `ReceiptCard`, `ReviewCard`, `OfferCard`, `PlaceCard`, `FileCard`, `StatusCard`, `ScoreCard`, `ShortcutCard`, `ChecklistCard` | Card presets including overlay, ticket, inbox, event, stack, link, album, tags, receipt, review, offer, place, file, status, score, shortcuts and checklist. Container queries. | `FeatureCard`, `MediaCard`, `PricingCard`, `ProfileCard`, `QuoteCard`, `OverlayCard`, `SpotlightCard`, `CrewCard`, `SplitCard`, `TicketCard`, `NoticeCard`, `TimelineCard`, `MessageCard`, `EventCard`, `StackCard`, `LinkCard`, `AlbumCard`, `TagCard`, `ReceiptCard`, `ReviewCard`, `OfferCard`, `PlaceCard`, `FileCard`, `StatusCard`, `ScoreCard`, `ShortcutCard`, `ChecklistCard` |
|
|
645
648
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-statusindicator.webp" width="120" alt="StatusIndicator"> | [`StatusIndicator`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#statusindicator) | Coloured status dot with an optional pulse and label. | `StatusIndicator` |
|
|
@@ -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-
|
|
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-KypnR7vv.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-
|
|
1
|
+
import { l as e, r as t, s as n, u as r } from "./translator-ChpeKCO3.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";
|
|
@@ -72,8 +72,31 @@ function x(e) {
|
|
|
72
72
|
return /^(https?:)?\/\//.test(e) || e.startsWith("mailto:");
|
|
73
73
|
}
|
|
74
74
|
//#endregion
|
|
75
|
+
//#region lib/lib/object.utils.ts
|
|
76
|
+
function S(e, t) {
|
|
77
|
+
let n = {};
|
|
78
|
+
if (!Array.isArray(t)) n[t] = e?.[t];
|
|
79
|
+
else for (let r of t) n[r] = e?.[r];
|
|
80
|
+
return n;
|
|
81
|
+
}
|
|
82
|
+
function C(e, t) {
|
|
83
|
+
let n = { ...e };
|
|
84
|
+
if (Array.isArray(t)) for (let e of t) delete n?.[e];
|
|
85
|
+
else delete n?.[t];
|
|
86
|
+
return n ?? {};
|
|
87
|
+
}
|
|
88
|
+
function w(e) {
|
|
89
|
+
return e;
|
|
90
|
+
}
|
|
91
|
+
async function T(e) {
|
|
92
|
+
return await e;
|
|
93
|
+
}
|
|
94
|
+
function E(e, t = !1) {
|
|
95
|
+
return Object.fromEntries(Object.entries(e).filter(([e, n]) => t ? n != null && n !== void 0 : n !== void 0));
|
|
96
|
+
}
|
|
97
|
+
//#endregion
|
|
75
98
|
//#region lib/lib/zod-error-map.ts
|
|
76
|
-
var
|
|
99
|
+
var D = (e) => {
|
|
77
100
|
let t = typeof e;
|
|
78
101
|
switch (t) {
|
|
79
102
|
case "number": return Number.isNaN(e) ? "NaN" : "number";
|
|
@@ -83,7 +106,7 @@ var S = (e) => {
|
|
|
83
106
|
if (Object.getPrototypeOf(e) !== Object.prototype && e.constructor) return e.constructor.name;
|
|
84
107
|
}
|
|
85
108
|
return t;
|
|
86
|
-
},
|
|
109
|
+
}, O = ({ storageKey: i = e, language: a, translate: o = t } = {}) => {
|
|
87
110
|
let s = () => typeof a == "function" ? a() : a ?? n(i, "en", r);
|
|
88
111
|
return (e) => {
|
|
89
112
|
let t = s(), n = (e, n) => o(e, n, t), r = (e, t) => {
|
|
@@ -94,7 +117,7 @@ var S = (e) => {
|
|
|
94
117
|
case "invalid_type": {
|
|
95
118
|
let t = {
|
|
96
119
|
expected: e.expected,
|
|
97
|
-
received:
|
|
120
|
+
received: D(e.input)
|
|
98
121
|
};
|
|
99
122
|
return e.input ? r(`material.zod.invalid_type.${e.expected}`, t) ?? n("material.zod.invalid_type.default", t) : n("material.zod.required", t);
|
|
100
123
|
}
|
|
@@ -119,12 +142,12 @@ var S = (e) => {
|
|
|
119
142
|
};
|
|
120
143
|
//#endregion
|
|
121
144
|
//#region ../../node_modules/redux/dist/redux.mjs
|
|
122
|
-
function
|
|
145
|
+
function k(e) {
|
|
123
146
|
return `Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `;
|
|
124
147
|
}
|
|
125
|
-
var
|
|
126
|
-
`${/* @__PURE__ */
|
|
127
|
-
function
|
|
148
|
+
var A = () => Math.random().toString(36).substring(7).split("").join(".");
|
|
149
|
+
`${/* @__PURE__ */ A()}`, `${/* @__PURE__ */ A()}`;
|
|
150
|
+
function j(e) {
|
|
128
151
|
if (e === void 0) return "undefined";
|
|
129
152
|
if (e === null) return "null";
|
|
130
153
|
let t = typeof e;
|
|
@@ -136,9 +159,9 @@ function E(e) {
|
|
|
136
159
|
case "function": return t;
|
|
137
160
|
}
|
|
138
161
|
if (Array.isArray(e)) return "array";
|
|
139
|
-
if (
|
|
140
|
-
if (
|
|
141
|
-
let n =
|
|
162
|
+
if (P(e)) return "date";
|
|
163
|
+
if (N(e)) return "error";
|
|
164
|
+
let n = M(e);
|
|
142
165
|
switch (n) {
|
|
143
166
|
case "Symbol":
|
|
144
167
|
case "Promise":
|
|
@@ -149,42 +172,42 @@ function E(e) {
|
|
|
149
172
|
}
|
|
150
173
|
return Object.prototype.toString.call(e).slice(8, -1).toLowerCase().replace(/\s/g, "");
|
|
151
174
|
}
|
|
152
|
-
function
|
|
175
|
+
function M(e) {
|
|
153
176
|
return typeof e.constructor == "function" ? e.constructor.name : null;
|
|
154
177
|
}
|
|
155
|
-
function
|
|
178
|
+
function N(e) {
|
|
156
179
|
return e instanceof Error || typeof e.message == "string" && e.constructor && typeof e.constructor.stackTraceLimit == "number";
|
|
157
180
|
}
|
|
158
|
-
function
|
|
181
|
+
function P(e) {
|
|
159
182
|
return e instanceof Date || typeof e.toDateString == "function" && typeof e.getDate == "function" && typeof e.setDate == "function";
|
|
160
183
|
}
|
|
161
|
-
function
|
|
184
|
+
function F(e) {
|
|
162
185
|
let t = typeof e;
|
|
163
|
-
return process.env.NODE_ENV !== "production" && (t =
|
|
186
|
+
return process.env.NODE_ENV !== "production" && (t = j(e)), t;
|
|
164
187
|
}
|
|
165
|
-
function
|
|
188
|
+
function I(e, t) {
|
|
166
189
|
return function(...n) {
|
|
167
190
|
return t(e.apply(this, n));
|
|
168
191
|
};
|
|
169
192
|
}
|
|
170
|
-
function
|
|
171
|
-
if (typeof e == "function") return
|
|
172
|
-
if (typeof e != "object" || !e) throw Error(process.env.NODE_ENV === "production" ?
|
|
193
|
+
function L(e, t) {
|
|
194
|
+
if (typeof e == "function") return I(e, t);
|
|
195
|
+
if (typeof e != "object" || !e) throw Error(process.env.NODE_ENV === "production" ? k(16) : `bindActionCreators expected an object or a function, but instead received: '${F(e)}'. Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?`);
|
|
173
196
|
let n = {};
|
|
174
197
|
for (let r in e) {
|
|
175
198
|
let i = e[r];
|
|
176
|
-
typeof i == "function" && (n[r] =
|
|
199
|
+
typeof i == "function" && (n[r] = I(i, t));
|
|
177
200
|
}
|
|
178
201
|
return n;
|
|
179
202
|
}
|
|
180
203
|
//#endregion
|
|
181
204
|
//#region lib/lib/redux/use-actions.ts
|
|
182
|
-
function
|
|
205
|
+
function R(e, t) {
|
|
183
206
|
let n = u();
|
|
184
|
-
return a(() =>
|
|
207
|
+
return a(() => L(e, n), t ? [n, ...t] : [n]);
|
|
185
208
|
}
|
|
186
209
|
//#endregion
|
|
187
210
|
//#region lib/lib/redux/async-slice.ts
|
|
188
|
-
var
|
|
211
|
+
var z = s({ creators: { asyncThunk: o } });
|
|
189
212
|
//#endregion
|
|
190
|
-
export {
|
|
213
|
+
export { p as _, w as a, d as b, C as c, b as d, y as f, h as g, m as h, O as i, S as l, _ as m, R as n, T as o, v as p, D as r, E as s, z as t, x as u, g as v, f as y };
|
|
@@ -2,7 +2,7 @@ import { r as e } from "./rolldown-runtime-BFFgcFxR.js";
|
|
|
2
2
|
import { a as t, i as n, n as r, r as i } from "./icon-sprites-CaYXzOL4.js";
|
|
3
3
|
import { t as a } from "./is-production-GLw59WU8.js";
|
|
4
4
|
import { a as o, t as s } from "./theme-context-Cofk6vgs.js";
|
|
5
|
-
import { t as c } from "./compose-refs-
|
|
5
|
+
import { t as c } from "./compose-refs-G4J4kaUA.js";
|
|
6
6
|
import { t as l } from "./use-background-activity-KxQgelFF.js";
|
|
7
7
|
import { t as u } from "./scene-svg-DJKa5vsg.js";
|
|
8
8
|
import { n as d, r as f, t as p } from "./scene-options-2zNF3ZkQ.js";
|
package/dist/backgrounds.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { r as e, t } from "./background-
|
|
1
|
+
import { r as e, t } from "./background-D1gC4m2R.js";
|
|
2
2
|
import { BACKGROUND_INTENSITIES as n, BACKGROUND_PRESETS as r, BACKGROUND_TONES as i, MOTIF_SHAPES as a, MOTIF_SHAPES_ALL as o, SHIPPED_BACKGROUND_PRESETS as s } from "@nxgt/material-core/backgrounds";
|
|
3
3
|
export { e as AVAILABLE_BACKGROUND_PRESETS, n as BACKGROUND_INTENSITIES, r as BACKGROUND_PRESETS, i as BACKGROUND_TONES, t as Background, a as MOTIF_SHAPES, o as MOTIF_SHAPES_ALL, s as SHIPPED_BACKGROUND_PRESETS };
|
|
@@ -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-
|
|
3
|
+
import { n as r, r as i, t as a } from "./spinner-PdSk7zEs.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-
|
|
5
|
-
import { t as i } from "./use-material-translation-
|
|
4
|
+
import { t as r } from "./button-2de_lrix.js";
|
|
5
|
+
import { t as i } from "./use-material-translation-DkE9J5NE.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-
|
|
9
|
+
import { t as d } from "./chip-Cs0uEjpu.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-
|
|
2
|
+
import { r as t } from "./spinner-PdSk7zEs.js";
|
|
3
3
|
import { s as n } from "./use-click-lock-BZYtTmVt.js";
|
|
4
|
-
import { t as r } from "./use-material-translation-
|
|
4
|
+
import { t as r } from "./use-material-translation-DkE9J5NE.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-
|
|
5
|
-
import { a as c, i as l, n as u } from "./field-blur-context-
|
|
6
|
-
import { a as d, d as f, r as p, t as m, u as h } from "./toolbar-items-
|
|
4
|
+
import { c as r, d as i, f as a, n as o, t as s } from "./dropdown-menu-DdzyvN76.js";
|
|
5
|
+
import { a as c, i as l, n as u } from "./field-blur-context-BZtwcPUV.js";
|
|
6
|
+
import { a as d, d as f, r as p, t as m, u as h } from "./toolbar-items-BmNYNaRB.js";
|
|
7
7
|
import { t as g } from "./is-production-GLw59WU8.js";
|
|
8
|
-
import { t as _ } from "./use-material-translation-
|
|
9
|
-
import { i as v, n as y, o as b, t as x } from "./code-language-items-
|
|
8
|
+
import { t as _ } from "./use-material-translation-DkE9J5NE.js";
|
|
9
|
+
import { i as v, n as y, o as b, t as x } from "./code-language-items-xhmbF6wA.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";
|
package/dist/code-editor.js
CHANGED
|
@@ -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-
|
|
4
|
-
import { t as o } from "./use-material-translation-
|
|
5
|
-
import { i as s, n as c, o as l } from "./code-language-items-
|
|
6
|
-
import { r as u, t as d } from "./field-blur-
|
|
3
|
+
import { d as n, r, t as i, u as a } from "./toolbar-items-BmNYNaRB.js";
|
|
4
|
+
import { t as o } from "./use-material-translation-DkE9J5NE.js";
|
|
5
|
+
import { i as s, n as c, o as l } from "./code-language-items-xhmbF6wA.js";
|
|
6
|
+
import { r as u, t as d } from "./field-blur-B2y-bNYi.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-
|
|
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-BYhBAfcc.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-
|
|
2
|
-
import { t as n } from "./use-material-translation-
|
|
1
|
+
import { d as e, f as t } from "./dropdown-menu-DdzyvN76.js";
|
|
2
|
+
import { t as n } from "./use-material-translation-DkE9J5NE.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";
|
|
@@ -122,6 +122,8 @@
|
|
|
122
122
|
@import "./ui/primitives/accordion/accordion.css";
|
|
123
123
|
@import "./ui/primitives/accordion/accordion-surfaces.css";
|
|
124
124
|
@import "./ui/primitives/collapsible/collapsible.css";
|
|
125
|
+
/* TabsNav in forced colours (the current link's mark). */
|
|
126
|
+
@import "./ui/primitives/tabs/tabs-nav-forced.css";
|
|
125
127
|
/* ToggleGroup: shared rules, then one file per variant. */
|
|
126
128
|
@import "./ui/primitives/toggle-group/toggle-group.css";
|
|
127
129
|
@import "./ui/primitives/toggle-group/toggle-group-connected.css";
|
|
@@ -149,9 +149,10 @@
|
|
|
149
149
|
backdrop-filter: blur(var(--nxgt-backdrop-blur));
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
/* Tabs: the strip is a band, its top corners
|
|
153
|
-
* has its own track.) */
|
|
154
|
-
[data-slot="activity-layout"][data-backdrop]
|
|
152
|
+
/* Tabs and route tabs (`TabsNav`): the strip is a band, its top corners
|
|
153
|
+
* rounded. (The segmented look has its own track.) */
|
|
154
|
+
[data-slot="activity-layout"][data-backdrop]
|
|
155
|
+
:is([data-slot="tabs-list"], [data-slot="tabs-nav"]) {
|
|
155
156
|
border-start-start-radius: var(--radius);
|
|
156
157
|
border-start-end-radius: var(--radius);
|
|
157
158
|
background: var(--nxgt-backdrop-fill-nav);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* The indicator hides when no link is current (a `value` that matches none). */
|
|
2
|
+
[data-slot="tabs-nav"]:not(:has([data-state="active"]))
|
|
3
|
+
> [data-slot="tabs-indicator"] {
|
|
4
|
+
visibility: hidden;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/* TabsNav in forced colours: the current link keeps a mark. The indicator and
|
|
8
|
+
* the active link's ::after are backgrounds and borders, which the browser
|
|
9
|
+
* flattens; they are painted again with the system Highlight. React only
|
|
10
|
+
* (tabs-classes.ts is shared with Vue, so this is not a class there). */
|
|
11
|
+
@media (forced-colors: active) {
|
|
12
|
+
[data-slot="tabs-nav"][data-variant="underline"]
|
|
13
|
+
> [data-slot="tabs-indicator"],
|
|
14
|
+
[data-slot="tabs-nav"][data-variant="underline"]
|
|
15
|
+
[data-slot="tabs-trigger"][aria-current="page"]::after {
|
|
16
|
+
forced-color-adjust: none;
|
|
17
|
+
background: Highlight;
|
|
18
|
+
}
|
|
19
|
+
[data-slot="tabs-nav"][data-variant="segmented"]
|
|
20
|
+
> [data-slot="tabs-indicator"],
|
|
21
|
+
[data-slot="tabs-nav"][data-variant="segmented"]
|
|
22
|
+
[data-slot="tabs-trigger"][aria-current="page"]::after {
|
|
23
|
+
forced-color-adjust: none;
|
|
24
|
+
border: 2px solid Highlight;
|
|
25
|
+
background: Canvas;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -61,7 +61,8 @@
|
|
|
61
61
|
> .nxgt-toggle-group-item:hover:not(
|
|
62
62
|
:disabled,
|
|
63
63
|
[aria-checked="true"],
|
|
64
|
-
[aria-pressed="true"]
|
|
64
|
+
[aria-pressed="true"],
|
|
65
|
+
[aria-current="page"]
|
|
65
66
|
) {
|
|
66
67
|
background: var(--tg-seg-hover);
|
|
67
68
|
}
|
|
@@ -78,7 +79,11 @@
|
|
|
78
79
|
* every chosen state is primary). Forced colours: the pill is hidden and
|
|
79
80
|
* the SelectedItem rule in toggle-group.css wins (its layer-less rule). */
|
|
80
81
|
[data-variant="segmented"]
|
|
81
|
-
> .nxgt-toggle-group-item:is(
|
|
82
|
+
> .nxgt-toggle-group-item:is(
|
|
83
|
+
[aria-checked="true"],
|
|
84
|
+
[aria-pressed="true"],
|
|
85
|
+
[aria-current="page"]
|
|
86
|
+
) {
|
|
82
87
|
color: var(--primary-text);
|
|
83
88
|
}
|
|
84
89
|
|
|
@@ -135,6 +140,9 @@
|
|
|
135
140
|
/* Multiple: a pill per pressed item; touching pills join. Also a single
|
|
136
141
|
* group of 9 or more items, which has no sliding pill. */
|
|
137
142
|
[data-variant="segmented"] > .nxgt-toggle-group-item[aria-pressed="true"],
|
|
143
|
+
/* SegmentedNav: a scrolling track has no sliding pill, the current link
|
|
144
|
+
* paints its own. */
|
|
145
|
+
[data-variant="segmented"] > .nxgt-toggle-group-item[aria-current="page"],
|
|
138
146
|
[data-variant="segmented"]:has(> .nxgt-toggle-group-item:nth-of-type(9))
|
|
139
147
|
> .nxgt-toggle-group-item[aria-checked="true"] {
|
|
140
148
|
background: var(--tg-pill);
|
|
@@ -127,7 +127,11 @@
|
|
|
127
127
|
.nxgt-toggle-group-item {
|
|
128
128
|
border: 1px solid ButtonText;
|
|
129
129
|
}
|
|
130
|
-
.nxgt-toggle-group-item:is(
|
|
130
|
+
.nxgt-toggle-group-item:is(
|
|
131
|
+
[aria-checked="true"],
|
|
132
|
+
[aria-pressed="true"],
|
|
133
|
+
[aria-current="page"]
|
|
134
|
+
) {
|
|
131
135
|
forced-color-adjust: none;
|
|
132
136
|
background: SelectedItem;
|
|
133
137
|
color: SelectedItemText;
|