@nxgt/material 3.45.0 → 3.46.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 +37 -0
- package/README.md +8 -1
- package/dist/{async-slice-D9LAUgth.js → async-slice-DPM9l8dd.js} +2 -2
- package/dist/{button-b_kruV_L.js → button-DR_EdcfV.js} +1 -1
- package/dist/charts.js +3 -3
- package/dist/{chip-6O3t9GXt.js → chip-olzYjs30.js} +1 -1
- package/dist/{code-editor-BtDOgUET.js → code-editor-CCc-piPv.js} +4 -4
- package/dist/code-editor.js +4 -4
- package/dist/{code-language-items-374m-OK8.js → code-language-items-mjN3a33n.js} +2 -2
- package/dist/{components-BG-BTfJP.js → components-CfttRxBs.js} +15688 -14567
- package/dist/components.js +26 -26
- package/dist/{dialog-8Ua9uuJW.js → dialog-DOhEoEP2.js} +4 -4
- package/dist/dnd.js +1 -1
- package/dist/{dropdown-menu-DJEeT1XT.js → dropdown-menu-CFO3E-rO.js} +1 -1
- package/dist/editor.js +7 -7
- package/dist/{empty-state-CrhrmNqn.js → empty-state-CTX0gKR3.js} +1 -1
- package/dist/hooks.js +28 -40
- package/dist/{i18n-provider-hrtFm9jD.js → i18n-provider-BnVQVqAF.js} +1 -1
- package/dist/i18n.js +5 -5
- package/dist/{icon-badge-Cpke1tCf.js → icon-badge-BRys8Tuo.js} +1 -1
- package/dist/lib/components/ui/display/enrolment-card/enrolment-card.d.ts +12 -0
- package/dist/lib/components/ui/display/enrolment-card/index.d.ts +2 -0
- package/dist/lib/components/ui/display/enrolment-card/partials/enrolment-header.d.ts +14 -0
- package/dist/lib/components/ui/display/enrolment-card/partials/enrolment-verification.d.ts +15 -0
- package/dist/lib/components/ui/display/enrolment-card/types.d.ts +49 -0
- package/dist/lib/components/ui/display/enrolment-card/use-enrolment-card-labels.d.ts +3 -0
- package/dist/lib/components/ui/display/index.d.ts +2 -0
- package/dist/lib/components/ui/display/recovery-codes-status/index.d.ts +2 -0
- package/dist/lib/components/ui/display/recovery-codes-status/partials/recovery-count.d.ts +11 -0
- package/dist/lib/components/ui/display/recovery-codes-status/recovery-codes-status.d.ts +12 -0
- package/dist/lib/components/ui/display/recovery-codes-status/types.d.ts +44 -0
- package/dist/lib/components/ui/display/recovery-codes-status/use-recovery-codes-status-labels.d.ts +3 -0
- package/dist/lib/components/ui/feedback/alert/alert.d.ts +7 -1
- package/dist/lib/components/ui/feedback/index.d.ts +1 -0
- package/dist/lib/components/ui/feedback/step-up-dialog/index.d.ts +2 -0
- package/dist/lib/components/ui/feedback/step-up-dialog/partials/step-up-body.d.ts +15 -0
- package/dist/lib/components/ui/feedback/step-up-dialog/partials/step-up-footer.d.ts +22 -0
- package/dist/lib/components/ui/feedback/step-up-dialog/partials/step-up-header.d.ts +10 -0
- package/dist/lib/components/ui/feedback/step-up-dialog/step-up-dialog.d.ts +16 -0
- package/dist/lib/components/ui/feedback/step-up-dialog/types.d.ts +55 -0
- package/dist/lib/components/ui/feedback/step-up-dialog/use-step-up-labels.d.ts +3 -0
- package/dist/lib/components/ui/feedback/step-up-dialog/use-step-up-state.d.ts +12 -0
- package/dist/lib/components/ui/feedback/step-up-dialog/use-title-focus.d.ts +5 -0
- package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
- package/dist/lib/components/ui/fields/index.d.ts +1 -0
- package/dist/lib/components/ui/fields/verification-code/describe-verification.d.ts +53 -0
- package/dist/lib/components/ui/fields/verification-code/index.d.ts +4 -0
- package/dist/lib/components/ui/fields/verification-code/partials/code-input.d.ts +12 -0
- package/dist/lib/components/ui/fields/verification-code/partials/code-message.d.ts +11 -0
- package/dist/lib/components/ui/fields/verification-code/partials/code-slots.d.ts +18 -0
- package/dist/lib/components/ui/fields/verification-code/partials/code-surface.d.ts +12 -0
- package/dist/lib/components/ui/fields/verification-code/partials/form-actions.d.ts +14 -0
- package/dist/lib/components/ui/fields/verification-code/partials/label-row.d.ts +10 -0
- package/dist/lib/components/ui/fields/verification-code/partials/locked-alert.d.ts +17 -0
- package/dist/lib/components/ui/fields/verification-code/partials/method-switch.d.ts +8 -0
- package/dist/lib/components/ui/fields/verification-code/partials/recovery-input.d.ts +7 -0
- package/dist/lib/components/ui/fields/verification-code/partials/resend-line.d.ts +10 -0
- package/dist/lib/components/ui/fields/verification-code/partials/status-line.d.ts +10 -0
- package/dist/lib/components/ui/fields/verification-code/throttle.d.ts +10 -0
- package/dist/lib/components/ui/fields/verification-code/types.d.ts +138 -0
- package/dist/lib/components/ui/fields/verification-code/use-answer-focus.d.ts +32 -0
- package/dist/lib/components/ui/fields/verification-code/use-code-entry.d.ts +43 -0
- package/dist/lib/components/ui/fields/verification-code/use-code-lock.d.ts +36 -0
- package/dist/lib/components/ui/fields/verification-code/use-code-resend.d.ts +29 -0
- package/dist/lib/components/ui/fields/verification-code/use-code-submit.d.ts +23 -0
- package/dist/lib/components/ui/fields/verification-code/use-entry-anchors.d.ts +6 -0
- package/dist/lib/components/ui/fields/verification-code/use-focus-on-switch.d.ts +7 -0
- package/dist/lib/components/ui/fields/verification-code/use-resend-focus.d.ts +20 -0
- package/dist/lib/components/ui/fields/verification-code/use-resend.d.ts +11 -0
- package/dist/lib/components/ui/fields/verification-code/use-short-reminder.d.ts +24 -0
- package/dist/lib/components/ui/fields/verification-code/use-stale-answer.d.ts +52 -0
- package/dist/lib/components/ui/fields/verification-code/use-throttle-focus.d.ts +16 -0
- package/dist/lib/components/ui/fields/verification-code/use-throttle.d.ts +10 -0
- package/dist/lib/components/ui/fields/verification-code/use-typed-value.d.ts +18 -0
- package/dist/lib/components/ui/fields/verification-code/use-verification-labels.d.ts +3 -0
- package/dist/lib/components/ui/fields/verification-code/verification-code.d.ts +11 -0
- package/dist/lib/components/ui/fields/verification-code/verification-lock-provider.d.ts +54 -0
- package/dist/lib/components/ui/overlays/dialog/dialog-parts.d.ts +8 -1
- package/dist/lib/i18n/resources/en/en.d.ts +52 -0
- package/dist/lib/i18n/resources/en/material.json.d.ts +52 -0
- package/dist/lib/i18n/resources/fr/fr.d.ts +52 -0
- package/dist/lib/i18n/resources/fr/material.json.d.ts +52 -0
- package/dist/lib/i18n/resources/resources.d.ts +104 -0
- package/dist/lib/i18n/translator.d.ts +1 -1
- package/dist/lib.js +1 -1
- package/dist/main.js +43 -43
- package/dist/map.js +4 -4
- package/dist/material.css +1 -1
- package/dist/pdf-reader.js +1 -1
- package/dist/print.js +2 -2
- package/dist/{public-DPPmNtZB.js → public-BmA6r0EK.js} +6 -6
- package/dist/{rich-code-block-KQYR0qt3.js → rich-code-block-BgPtzSnv.js} +4 -4
- package/dist/{sortable-provider-hPPTMtJA.js → sortable-provider-CceARBYP.js} +1 -1
- package/dist/{spinner-Dd0os4cb.js → spinner-7orqNAEy.js} +1 -1
- package/dist/{stored-language-Blyb68vN.js → stored-language-BHmxU75w.js} +104 -0
- package/dist/theme-picker.js +2 -2
- package/dist/{theme-toggle-BDRRkkiA.js → theme-toggle-_RJgLHs9.js} +1 -1
- package/dist/{toolbar-items-D3hw7XZE.js → toolbar-items-BCy6DMzb.js} +2 -2
- package/dist/{translate-material-CdJBbURx.js → translate-material-n0YBXLGp.js} +2 -2
- package/dist/{translator-38JuN_VD.js → translator-B_ue2XEg.js} +1 -1
- package/dist/{use-chat-composer-utGkZQ6X.js → use-chat-composer-FDmwZSua.js} +12 -12
- package/dist/{use-heading-spy-bTccmEMF.js → use-heading-spy-O6_EATtA.js} +43 -31
- package/dist/{use-material-translation-DLsfkMxp.js → use-material-translation-CkPcqI6q.js} +2 -2
- package/docs/README.md +1 -0
- package/docs/components/README.md +1 -1
- package/docs/components/buttons-and-actions.md +2 -1
- package/docs/components/data-display.md +90 -0
- package/docs/components/feedback-and-status.md +113 -1
- package/docs/components/form-fields.md +163 -0
- package/docs/components/overlays-and-menus.md +3 -1
- package/docs/guides/two-factor.md +78 -0
- package/docs/previews/data-display-enrolmentcard.webp +0 -0
- package/docs/previews/data-display-recoverycodesstatus.webp +0 -0
- package/docs/previews/feedback-status-stepupdialog.webp +0 -0
- package/docs/previews/form-fields-verificationcode.webp +0 -0
- package/docs/roadmap.md +16 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# @nxgt/material
|
|
2
2
|
|
|
3
|
+
## 3.46.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#1770](https://github.com/softistx/nxgt-material/pull/1770) [`169b365`](https://github.com/softistx/nxgt-material/commit/169b3653b9ad49a59857b56162d623daaf1959cf) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Two-step verification, in the library. The pieces every app rebuilt for a one-time code are now components, driven by props: your server or session says what happened, the components keep the typed value, the focus and the submit guard, and nothing is fetched inside them. React only; the Vue twin is a `vue` issue. Closes [#1652](https://github.com/softistx/nxgt-material/issues/1652).
|
|
8
|
+
|
|
9
|
+
**`VerificationCode`** (`fields/verification-code`) is the form that asks for a code, for sign-in, step-up, activation and turn-off: `via` (`'email'` or `'secondFactor'`), `attemptsLeft`, `error` (`'invalid'`, `'expired'`, `'failed'`, `'throttled'` or your own node), `retryAfter` (seconds, with `'throttled'`), `locked`, `pending`, `resent`, `onSubmit(code, { kind: 'code' | 'recovery' })` (`'code'` is the issued code, from an app or an e-mail) and `onResend()`; a rejected `onSubmit` is swallowed, so map a failure to `error="failed"`. It shows wrong (field emptied and focused, tries left), expired, failed, busy, resent and locked states, "Use a recovery code" and "Resend the code" alone on its own line. With no tries left an e-mailed code reads as expired and an app or recovery code locks; a submit with too few digits focuses the field and says "Enter all 6 digits." without calling `onSubmit`. `error="throttled"` with `retryAfter` (seconds) disables "Resend the code" until the wait elapsed and says how long, while the field stays usable and nothing locks; a resend answered throttled again restarts the wait, even with the same `retryAfter`. `actions="none"` leaves the buttons to the host, `destructive` and `status` style the form, and `useVerificationLabels` serves a layout of your own. The slots are tinted boxes inside a 3:1 hairline ring with a dot while empty, a dash between the halves, 20px tabular digits, a 2px primary ring and a soft caret on the active one (still under `prefers-reduced-motion`); a wrong code tints the slots, a locked form is muted with a "Locked" pill. On a coarse pointer the field is 44px tall.
|
|
10
|
+
|
|
11
|
+
**`VerificationLockProvider` and `useVerificationLock()`** keep a locked authenticator or recovery code locked, page-wide, until the page is loaded again: a remount, a step change or a closed dialog does not lift it. One lock is one alert: only the first form to show it is a `role="alert"`, the others under it show the same words as plain text. Without a provider, every form whose own answer locked it is an alert, so the server and the hydrated page agree, and the lock covers the document; an e-mailed code is never held, unless a recovery code is typed in its form (switching the entry clears the held decision of the answer to the other kind, so a stale `attemptsLeft: 0` does not lock the page; a refused recovery code does; switching back shows that entry's answer again); on the server it is always unlocked, so hydration cannot mismatch.
|
|
12
|
+
|
|
13
|
+
**`StepUpDialog`** (`feedback/step-up-dialog`) is "Confirm it's you": `via` (left out while the code is being requested, which shows a status line), `destination`, `requestError`, the answer props of `VerificationCode` (with `length` and `allowRecovery`; `EnrolmentCard` and `RecoveryCodesStatus` take `length` too), and `confirming` with `confirmedLabel`, which shows a status line and disables Cancel while your action re-runs. Escape, a click outside and Cancel call `onCancel`, except while confirming. The title takes the focus on open and whenever the field goes away, the field takes it after a refusal, and it returns to the button that opened the dialog. `DialogFooter` takes `stackOnPhone` (`true` by default, today's behaviour): `false` keeps one row on a phone, the first action on the left and the last on the right.
|
|
14
|
+
|
|
15
|
+
**`EnrolmentCard`** (`display/enrolment-card`) turns an authenticator app on in one card: the title (it takes the focus on mount), `EnrolmentSecret` on a tinted surface (`secretProps`), a notice that the other devices are signed out (`sessionsNotice`: a default, your own node, or `false`), an optional `status` line, and the first code with "Activate" and a tonal Cancel when `onCancel` is given. **`RecoveryCodesStatus`** (`display/recovery-codes-status`) shows how many recovery codes are left (`remaining`, an ICU plural; red with a warning at `0`; `null` when not known) and the way to make a new set: with `requireCode` (the default) a `VerificationCode` whose "New codes" button passes the code and its kind to `onRegenerate`, without it a plain button. Show the new codes with `RecoveryCodes`. Both read the lock, so a lock set in one disables the other and the dialog (the plain button of `requireCode={false}` too). `StepUpDialog` starts its form again when `via` changes.
|
|
16
|
+
|
|
17
|
+
**`Alert`** takes `actions`: buttons or links under the text, wrapping on a narrow screen (a "Continue" `LinkButton`, a "Retry" button).
|
|
18
|
+
|
|
19
|
+
`StepUpDialog` and `EnrolmentCard` draw Cancel `tonal` like the other library dialogs and take `cancelVariant` (`'outlined'`, `'ghost'`) to restore another look. French and English labels live under `material.verification-code.*`, `material.step-up-dialog.*`, `material.enrolment-card.*` and `material.recovery-codes-status.*`; `labels` and `icons` are overridable. A new two-step verification guide (`docs/guides/two-factor.md`) maps the pieces to the moments of an account's life.
|
|
20
|
+
|
|
21
|
+
**Migrating an app that wrote these itself**
|
|
22
|
+
|
|
23
|
+
| Your own | Use |
|
|
24
|
+
| --- | --- |
|
|
25
|
+
| A step-up dialog with a reducer (asking, failed, code, expired, confirmed) | `StepUpDialog`: map the phase to `via` (omitted while asking), `requestError`, `error`, `attemptsLeft`, `pending` and `confirming`. Keep the replay of the blocked action |
|
|
26
|
+
| A code input with a "use a recovery code" switch, in a sign-in step, an activation or a turn-off | `VerificationCode` (`via="secondFactor"`; `destructive` for turning off). `kind` in `onSubmit` says the issued code or a recovery code; the recovery code is trimmed and cut at 40 |
|
|
27
|
+
| An enrolment card with the QR code, the key, a sessions note and a first code | `EnrolmentCard`; pass your after-the-fact wording as `sessionsNotice` if the other devices were already signed out |
|
|
28
|
+
| A recovery-codes card with a count and a "new codes" action | `RecoveryCodesStatus`, then `RecoveryCodes` for the new set |
|
|
29
|
+
| A "required" notice with a continue link | `Alert` with `actions` |
|
|
30
|
+
| "N tries left" and "locked" text kept in app state, and a lock that must survive a remount | `attemptsLeft`, `locked` and one `VerificationLockProvider` around the screens that ask for a code |
|
|
31
|
+
| A footer that must stay on one row on a phone | `DialogFooter stackOnPhone={false}` |
|
|
32
|
+
|
|
33
|
+
Your requests, the mapping of a server error to these props, where a challenge is kept, the leave guard around new recovery codes and all wording stay in the app.
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- Updated dependencies [[`7a12d98`](https://github.com/softistx/nxgt-material/commit/7a12d9857d2ea9c38541bdc0c96836ee0c4587e0)]:
|
|
38
|
+
- @nxgt/material-core@0.41.0
|
|
39
|
+
|
|
3
40
|
## 3.45.0
|
|
4
41
|
|
|
5
42
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -33,6 +33,9 @@ drag-and-drop, i18n, and `Icon`. Tailwind CSS v4 + Base UI.
|
|
|
33
33
|
only on "Keep mine"), tells your app a refused paste or fill (`onRefuse`), on
|
|
34
34
|
a phone too; its columns resize,
|
|
35
35
|
hide and reorder, in a layout your app can persist.
|
|
36
|
+
- **Two-step verification** ([guide](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/guides/two-factor.md)): `VerificationCode`,
|
|
37
|
+
`StepUpDialog`, `EnrolmentCard` and `RecoveryCodesStatus`, with a page-wide
|
|
38
|
+
lock after too many wrong codes.
|
|
36
39
|
- **Vue sister**: `@nxgt/material-vue` uses the same names, categories and
|
|
37
40
|
pages. The catalogue's last column gives the Vue export for each entry.
|
|
38
41
|
|
|
@@ -538,6 +541,7 @@ Not components: what the stylesheet gives any element.
|
|
|
538
541
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-searchfield.webp" width="120" alt="SearchField"> | [`SearchField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#searchfield) · `SearchFormField` | 44px field box with the search icon in its lead well, a clear button and a spinner, with a debounced `onValueChange`. | `SearchField`, `SearchFormField` |
|
|
539
542
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-colorfield.webp" width="120" alt="ColorField"> | [`ColorField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#colorfield) · `ColorFormField` | Hex input with a colour picker in a popover. | `ColorField`, `ColorFormField` |
|
|
540
543
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-otpfield.webp" width="120" alt="OtpField"> | [`OtpField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#otpfield) · `OtpFormField`, `InputOTP`, `InputOTPGroup`, `InputOTPSlot`, `InputOTPSeparator` | One-time code input of configurable length; the `InputOTP` parts compose your own. | `OtpField`, `OtpFormField`, `InputOTP` (same parts) |
|
|
544
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-verificationcode.webp" width="120" alt="VerificationCode"> | [`VerificationCode`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#verificationcode) · `VerificationLockProvider`, `useVerificationLock`, `useVerificationLabels` | The form that asks for a one-time code, driven by props (`via`, `attemptsLeft`, `error`, `pending`): wrong (with the tries left), expired, failed and busy states, "Resend the code", "Use a recovery code", and a page-wide lock that survives remounts. | — |
|
|
541
545
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-inputgroupfield.webp" width="120" alt="InputGroupField"> | [`InputGroupField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#inputgroupfield) · `InputGroupFormField` | Labelled `InputGroup` with addons and helper text. | `InputGroupField`, `InputGroupFormField` |
|
|
542
546
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-localizedtextfields.webp" width="120" alt="LocalizedTextFields"> | [`LocalizedTextFields`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#localizedtextfields) · `LocalizedTextFormField` | One text in several languages: a `<fieldset>` with an input per language, the default as the placeholder with a reset button, an error per language and for the group, long lists folded under "Other languages"; the value is a record. | — (later) |
|
|
543
547
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-inlineedit.webp" width="120" alt="InlineEdit"> | [`InlineEdit`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#inlineedit) · `InlineEditFormField` | Click-to-edit text with save and cancel. | `InlineEdit`, `InlineEditFormField` |
|
|
@@ -622,8 +626,10 @@ Not components: what the stylesheet gives any element.
|
|
|
622
626
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-paramtable.webp" width="120" alt="ParamTable"> | [`ParamTable`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#paramtable) | Name / type / default / description table; stacked cards below `sm`. | `ParamTable` |
|
|
623
627
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-qrcode.webp" width="120" alt="QRCode"> | [`QRCode`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#qrcode) | QR code on a padded tile, with an optional centred logo. | `QRCode` |
|
|
624
628
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-barecode.webp" width="120" alt="Barecode"> | [`Barecode`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#barecode) | 1D barcode. | `Barecode` |
|
|
629
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-enrolmentcard.webp" width="120" alt="EnrolmentCard"> | [`EnrolmentCard`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#enrolmentcard) | Turning on an authenticator app in one card: the `EnrolmentSecret` on a tinted surface, a notice that other devices are signed out, and the first code to check with Activate and a tonal Cancel, driven by props (`attemptsLeft`, `locked`, `error`, `pending`). Reads the page-wide lock. | — |
|
|
625
630
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-enrolmentsecret.webp" width="120" alt="EnrolmentSecret"> | [`EnrolmentSecret`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#enrolmentsecret), `groupSecret` | A TOTP enrolment: the `otpauth://` QR code, the URI as a link to the authenticator app, and the key grouped by four, copyable, wrapping on a phone. | `EnrolmentSecret` |
|
|
626
631
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-recoverycodes.webp" width="120" alt="RecoveryCodes"> | [`RecoveryCodes`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#recoverycodes), `recoveryCodesText`, `downloadText` | One-time recovery codes: a list, copy (its result shown and announced), download, print of the card alone, and an "I have saved these codes" confirmation before Done. | `RecoveryCodes` |
|
|
632
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/data-display-recoverycodesstatus.webp" width="120" alt="RecoveryCodesStatus"> | [`RecoveryCodesStatus`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/data-display.md#recoverycodesstatus) | How many recovery codes are left (a warning at none) and the way to make a new set, behind a code (`requireCode`) or a plain button. Reads the page-wide lock. | — |
|
|
627
633
|
|
|
628
634
|
### Data table, filter & lists
|
|
629
635
|
|
|
@@ -688,11 +694,12 @@ Not components: what the stylesheet gives any element.
|
|
|
688
694
|
|
|
689
695
|
| Preview | Component | What it does | @nxgt/material-vue |
|
|
690
696
|
| --- | --- | --- | --- |
|
|
691
|
-
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-alert.webp" width="120" alt="Alert"> | [`Alert`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#alert) | Callout with the tone's icon (or yours, or none with `icon={null}`), title and
|
|
697
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-alert.webp" width="120" alt="Alert"> | [`Alert`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#alert) | Callout with the tone's icon (or yours, or none with `icon={null}`), title, description and `actions` (buttons or links under the text) in seven tones; it spans the row in a form grid. | `Alert` |
|
|
692
698
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-banner.webp" width="120" alt="Banner"> | [`Banner`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#banner) | Dismissible info / success / warning / error banner with an action, in the look of `Alert` (light surface, start bar); it spans the row in a form grid. | `Banner` |
|
|
693
699
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-alertdialog.webp" width="120" alt="AlertDialog"> | [`AlertDialog`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#alertdialog), `AlertDialogContent`, `AlertDialogAction`, `AlertDialogCancel`… | Parts for a blocking confirmation dialog. | `AlertDialog` (same parts) |
|
|
694
700
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-confirmdialog.webp" width="120" alt="ConfirmDialog"> | [`ConfirmDialog`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#confirmdialog), `ConfirmationDialog`, `CustomAlertDialog` | Confirm / cancel dialog with async loading. `ConfirmationDialog` adds a trigger and an optional Zod form. | `ConfirmDialog`, `ConfirmationDialog`, `CustomAlertDialog` |
|
|
695
701
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-customdialog.webp" width="120" alt="CustomDialog"> | [`CustomDialog`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#customdialog) | Ready-made dialog with trigger, icon, title, body and footer. | `CustomDialog` |
|
|
702
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-stepupdialog.webp" width="120" alt="StepUpDialog"> | [`StepUpDialog`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#stepupdialog) | "Confirm it's you": a dialog that asks for a one-time code, driven by props (`via`, `attemptsLeft`, `error`, `pending`, `confirming`). The title takes the focus, the field after a refusal; `DialogFooter` `stackOnPhone={false}` keeps its footer one row on a phone. | — |
|
|
696
703
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-emptystate.webp" width="120" alt="EmptyState"> | [`EmptyState`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#emptystate) | Illustration, title, description and action, by kind (empty, search, not-found, unauthorized); `compact` size, or `inline` as one row in a list. | `EmptyState` |
|
|
697
704
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-errorstate.webp" width="120" alt="ErrorState"> | [`ErrorState`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#errorstate) | Failure block (`role="alert"`) with illustration, outlined Retry and collapsed technical details; generic, offline and maintenance kinds. | `ErrorState` |
|
|
698
705
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/feedback-status-progress.webp" width="120" alt="Progress"> | [`Progress`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/feedback-and-status.md#progress), `CircularProgress`, `ProgressField` | Material 3 Expressive linear bar and circular ring (flat or wavy, eight tones, buffer and stop dot), and a labelled progress field. | `Progress`, `CircularProgress`, `ProgressField` |
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as e, r as t, t as n } from "./stored-language-
|
|
2
|
-
import { r } from "./translator-
|
|
1
|
+
import { i as e, r as t, t as n } from "./stored-language-BHmxU75w.js";
|
|
2
|
+
import { r } from "./translator-B_ue2XEg.js";
|
|
3
3
|
import { t as i } from "./_baseIsEqual-C6ksIHya.js";
|
|
4
4
|
import { useMemo as a } from "react";
|
|
5
5
|
import { asyncThunkCreator as o, buildCreateSlice as s } from "@reduxjs/toolkit";
|
|
@@ -2,7 +2,7 @@ import { t as e } from "./utils-BLfntITJ.js";
|
|
|
2
2
|
import { n as t, t as n } from "./dist-DVRQkaTK.js";
|
|
3
3
|
import { o as r, t as i } from "./tooltip-CkttDIab.js";
|
|
4
4
|
import { t as a } from "./is-production-GLw59WU8.js";
|
|
5
|
-
import { t as o } from "./spinner-
|
|
5
|
+
import { t as o } from "./spinner-7orqNAEy.js";
|
|
6
6
|
import { a as s, i as c, r as l, t as u } from "./button-tones-BwuVvAmd.js";
|
|
7
7
|
import { t as d } from "./button-group-context-CaP0X5p_.js";
|
|
8
8
|
import { t as f } from "./has-text-content-Ds2dkHX_.js";
|
package/dist/charts.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { t as e } from "./ui.utils-CAnKTCw5.js";
|
|
2
2
|
import { t } from "./utils-BLfntITJ.js";
|
|
3
|
-
import { t as n } from "./use-material-translation-
|
|
4
|
-
import { t as r } from "./button-
|
|
3
|
+
import { t as n } from "./use-material-translation-CkPcqI6q.js";
|
|
4
|
+
import { t as r } from "./button-DR_EdcfV.js";
|
|
5
5
|
import { t as i } from "./use-ssr-media-query-C6M5m8sf.js";
|
|
6
6
|
import { i as a, n as o, r as s, t as c } from "./util-4heV2LPI.js";
|
|
7
7
|
import { t as l } from "./useIsomorphicLayoutEffect-DfgAhWcH.js";
|
|
8
8
|
import { t as u } from "./warn-once-C_e47JM8.js";
|
|
9
|
-
import { t as d } from "./chip-
|
|
9
|
+
import { t as d } from "./chip-olzYjs30.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,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
2
|
import { t } from "./tooltip-CkttDIab.js";
|
|
3
|
-
import { t as n } from "./use-material-translation-
|
|
3
|
+
import { t as n } from "./use-material-translation-CkPcqI6q.js";
|
|
4
4
|
import { a as r } from "./button-tones-BwuVvAmd.js";
|
|
5
5
|
import { t as i } from "./react-node-text-Crkpfpco.js";
|
|
6
6
|
import { Check as a, X as o } from "lucide-react";
|
|
@@ -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-
|
|
4
|
+
import { c as r, d as i, f as a, n as o, t as s } from "./dropdown-menu-CFO3E-rO.js";
|
|
5
5
|
import { a as c, i as l, n as u } from "./field-blur-context-Cft9s7Hg.js";
|
|
6
|
-
import { a as d, d as f, r as p, t as m, u as h } from "./toolbar-items-
|
|
6
|
+
import { a as d, d as f, r as p, t as m, u as h } from "./toolbar-items-BCy6DMzb.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-CkPcqI6q.js";
|
|
9
|
+
import { i as v, n as y, o as b, t as x } from "./code-language-items-mjN3a33n.js";
|
|
10
10
|
import { t as S } from "./useIsomorphicLayoutEffect-DfgAhWcH.js";
|
|
11
11
|
import { n as C, t as w } from "./escape-owner-C4W_sOAU.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-
|
|
3
|
+
import { d as n, r, t as i, u as a } from "./toolbar-items-BCy6DMzb.js";
|
|
4
|
+
import { t as o } from "./use-material-translation-CkPcqI6q.js";
|
|
5
|
+
import { i as s, n as c, o as l } from "./code-language-items-mjN3a33n.js";
|
|
6
6
|
import { r as u, t as d } from "./field-blur-CJHzVSh9.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-CCc-piPv.js";
|
|
12
12
|
import { ChevronDown as k, ChevronUp as A, Columns2 as j } from "lucide-react";
|
|
13
13
|
import { useEffect as M, 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 { 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-CFO3E-rO.js";
|
|
2
|
+
import { t as n } from "./use-material-translation-CkPcqI6q.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";
|