@nxgt/material 3.44.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 +43 -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-DMgim3_P.js → components-CfttRxBs.js} +15690 -14568
- 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/data-table-filter-and-lists.md +6 -2
- 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/dist/pdf-reader.js
CHANGED
package/dist/print.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as e } from "./i18n-provider-
|
|
2
|
-
import { t } from "./translate-material-
|
|
1
|
+
import { r as e } from "./i18n-provider-BnVQVqAF.js";
|
|
2
|
+
import { t } from "./translate-material-n0YBXLGp.js";
|
|
3
3
|
import { Children as n, createContext as r, isValidElement as i, useCallback as a, useContext as o, useEffect as s, useMemo as c, useState as l } from "react";
|
|
4
4
|
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
5
5
|
import { resolvePdfFileName as f } from "@nxgt/material-core/pdf-file-name";
|
|
@@ -6,18 +6,18 @@ import { c as i, i as a, l as o, n as s, o as c, s as l } from "./dist-lmHmz_bu.
|
|
|
6
6
|
import { a as u, o as d } from "./tooltip-CkttDIab.js";
|
|
7
7
|
import { i as f } from "./dist-C4wtXCjf.js";
|
|
8
8
|
import { r as p, t as m } from "./in-dialog-Vwkyp-M5.js";
|
|
9
|
-
import { C as h, D as g, E as _, O as v, S as y, T as b, _ as x, f as S, g as ee, k as te, r as ne, t as C, u as re, w } from "./dialog-
|
|
10
|
-
import { c as T, d as ie, f as E, i as ae, l as oe, n as se, o as D, t as ce, u as O } from "./dropdown-menu-
|
|
11
|
-
import { S as le, a as k, d as A, g as ue, h as de, i as fe, m as pe, n as j, r as me, t as M, u as he, w as ge } from "./toolbar-items-
|
|
12
|
-
import { t as N } from "./use-material-translation-
|
|
13
|
-
import { t as _e } from "./button-
|
|
9
|
+
import { C as h, D as g, E as _, O as v, S as y, T as b, _ as x, f as S, g as ee, k as te, r as ne, t as C, u as re, w } from "./dialog-DOhEoEP2.js";
|
|
10
|
+
import { c as T, d as ie, f as E, i as ae, l as oe, n as se, o as D, t as ce, u as O } from "./dropdown-menu-CFO3E-rO.js";
|
|
11
|
+
import { S as le, a as k, d as A, g as ue, h as de, i as fe, m as pe, n as j, r as me, t as M, u as he, w as ge } from "./toolbar-items-BCy6DMzb.js";
|
|
12
|
+
import { t as N } from "./use-material-translation-CkPcqI6q.js";
|
|
13
|
+
import { t as _e } from "./button-DR_EdcfV.js";
|
|
14
14
|
import { n as ve, t as ye } from "./icon-button-CN9r5TNE.js";
|
|
15
15
|
import { t as be } from "./useEvent-2fKq-6w8.js";
|
|
16
16
|
import { n as xe, t as Se } from "./toggle-group-BMJNcFAC.js";
|
|
17
17
|
import { o as Ce } from "./escape-owner-C4W_sOAU.js";
|
|
18
18
|
import { n as we } from "./use-slice-reducer-BGkeGtML.js";
|
|
19
19
|
import { r as Te } from "./use-csp-nonce-ZKs9k-ov.js";
|
|
20
|
-
import { n as Ee, t as De } from "./empty-state-
|
|
20
|
+
import { n as Ee, t as De } from "./empty-state-CTX0gKR3.js";
|
|
21
21
|
import { t as Oe } from "./client-only.utils-3nHNzCki.js";
|
|
22
22
|
import { t as ke } from "./use-scroll-away-PQRFZkT2.js";
|
|
23
23
|
import { ArrowLeft as Ae, BookOpenText as je, ChevronDown as Me, ChevronLeft as Ne, ChevronRight as Pe, ChevronUp as Fe, Download as Ie, Eraser as Le, FileText as Re, FileWarning as ze, FileX2 as Be, Highlighter as Ve, KeyRound as He, LayoutGrid as Ue, List as We, Loader2 as Ge, Maximize as Ke, MessageSquareText as qe, Minimize as Je, MoreVertical as Ye, MousePointer2 as Xe, MoveHorizontal as Ze, PanelLeft as Qe, Pen as $e, PencilLine as et, Printer as tt, RotateCw as nt, Search as rt, StickyNote as it, Type as at, Underline as ot, Undo2 as st, Volume2 as ct, X as lt, XIcon as ut, ZoomIn as dt, ZoomOut as ft } from "lucide-react";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as e } from "./tooltip-CkttDIab.js";
|
|
2
|
-
import { c as t, n, t as r } from "./dropdown-menu-
|
|
3
|
-
import { t as i } from "./use-material-translation-
|
|
4
|
-
import { a, i as o, n as s, o as c, t as l } from "./code-language-items-
|
|
2
|
+
import { c as t, n, t as r } from "./dropdown-menu-CFO3E-rO.js";
|
|
3
|
+
import { t as i } from "./use-material-translation-CkPcqI6q.js";
|
|
4
|
+
import { a, i as o, n as s, o as c, t as l } from "./code-language-items-mjN3a33n.js";
|
|
5
5
|
import { i as u, n as d, r as f, s as p } from "./dist-C3GR7kJd.js";
|
|
6
6
|
import { t as m } from "./code-block-spec-CGLKRhwD.js";
|
|
7
7
|
import { Check as h, ChevronDown as g, Copy as _, Maximize2 as v, WrapText as y } from "lucide-react";
|
|
@@ -143,7 +143,7 @@ function M({ node: e, editor: t, updateAttributes: n, editable: r, wrap: a, onWr
|
|
|
143
143
|
}
|
|
144
144
|
//#endregion
|
|
145
145
|
//#region lib/components/ui/widgets/editor/extensions/code/code-block-open.tsx
|
|
146
|
-
var N = x(() => import("./code-editor-
|
|
146
|
+
var N = x(() => import("./code-editor-CCc-piPv.js").then((e) => e.n).then((e) => ({ default: e.CodeEditor })));
|
|
147
147
|
function P() {
|
|
148
148
|
let { t: e } = i();
|
|
149
149
|
return /* @__PURE__ */ T("div", {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
2
|
import { t } from "./dist-DVRQkaTK.js";
|
|
3
|
-
import { t as n } from "./use-material-translation-
|
|
3
|
+
import { t as n } from "./use-material-translation-CkPcqI6q.js";
|
|
4
4
|
import { t as r } from "./icon-button-CN9r5TNE.js";
|
|
5
5
|
import { t as i } from "./compose-refs-DZ0iIVF-.js";
|
|
6
6
|
import { GripVertical as a } from "lucide-react";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
2
|
import { o as 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 { jsx as r } from "react/jsx-runtime";
|
|
5
5
|
//#region lib/components/ui/feedback/spinner/spinner.tsx
|
|
6
6
|
var i = t("transition-all duration-500", {
|
|
@@ -727,6 +727,58 @@ var t = {
|
|
|
727
727
|
},
|
|
728
728
|
buttons: { close: "Close" }
|
|
729
729
|
},
|
|
730
|
+
"verification-code": {
|
|
731
|
+
label: "Code",
|
|
732
|
+
"recovery-label": "Recovery code",
|
|
733
|
+
"use-recovery": "Use a recovery code",
|
|
734
|
+
"use-app": "Use my authenticator app",
|
|
735
|
+
"use-email": "Use the code sent to you",
|
|
736
|
+
confirm: "Confirm",
|
|
737
|
+
resend: "Resend the code",
|
|
738
|
+
resent: "A new code was sent.",
|
|
739
|
+
sending: "Sending a new code…",
|
|
740
|
+
"new-code": "New code",
|
|
741
|
+
"try-again": "Try again",
|
|
742
|
+
wrong: "Wrong code.",
|
|
743
|
+
"tries-left": "{count, plural, one {# try left.} other {# tries left.}}",
|
|
744
|
+
incomplete: "Enter all {count} digits.",
|
|
745
|
+
"incomplete-recovery": "Enter your recovery code.",
|
|
746
|
+
expired: "This code has expired.",
|
|
747
|
+
failed: "The code could not be checked. Try again.",
|
|
748
|
+
locked: "Too many wrong codes. Try again later.",
|
|
749
|
+
throttled: "Too many requests. Wait a moment and try again.",
|
|
750
|
+
"throttled-minutes": "Wait {n} min before asking for a new code.",
|
|
751
|
+
"throttled-seconds": "Wait {n} s before asking for a new code.",
|
|
752
|
+
"throttled-minutes-app": "Wait {n} min before trying again.",
|
|
753
|
+
"throttled-seconds-app": "Wait {n} s before trying again.",
|
|
754
|
+
"locked-badge": "Locked"
|
|
755
|
+
},
|
|
756
|
+
"step-up-dialog": {
|
|
757
|
+
title: "Confirm it's you",
|
|
758
|
+
description: "For your security, confirm it's you to continue.",
|
|
759
|
+
"description-app": "Enter the code from your authenticator app to continue.",
|
|
760
|
+
"description-email": "Enter the code we sent you to continue.",
|
|
761
|
+
"description-email-to": "Enter the code we sent to {destination} to continue.",
|
|
762
|
+
requesting: "Sending you a code…",
|
|
763
|
+
cancel: "Cancel",
|
|
764
|
+
confirmed: "Confirmed. Finishing up…"
|
|
765
|
+
},
|
|
766
|
+
"enrolment-card": {
|
|
767
|
+
title: "Set up your authenticator app",
|
|
768
|
+
description: "Scan the QR code with your authenticator app, then type the code it shows.",
|
|
769
|
+
activate: "Activate",
|
|
770
|
+
cancel: "Cancel",
|
|
771
|
+
"sessions-notice": "Turning this on signs you out on your other devices."
|
|
772
|
+
},
|
|
773
|
+
"recovery-codes-status": {
|
|
774
|
+
title: "Recovery codes",
|
|
775
|
+
description: "Each code signs you in once if you lose access to your authenticator app.",
|
|
776
|
+
remaining: "{count, plural, one {# recovery code left} other {# recovery codes left}}",
|
|
777
|
+
"none-left": "No recovery codes left",
|
|
778
|
+
"none-left-hint": "Make a new set now, or you could be locked out if you lose your authenticator app.",
|
|
779
|
+
"new-codes": "New codes",
|
|
780
|
+
"new-codes-hint": "A new set replaces the old codes, which stop working."
|
|
781
|
+
},
|
|
730
782
|
zod: {
|
|
731
783
|
required: "This field is required.",
|
|
732
784
|
invalid_type: {
|
|
@@ -3500,6 +3552,58 @@ var t = {
|
|
|
3500
3552
|
},
|
|
3501
3553
|
buttons: { close: "Fermer" }
|
|
3502
3554
|
},
|
|
3555
|
+
"verification-code": {
|
|
3556
|
+
label: "Code",
|
|
3557
|
+
"recovery-label": "Code de récupération",
|
|
3558
|
+
"use-recovery": "Utiliser un code de récupération",
|
|
3559
|
+
"use-app": "Utiliser mon application d'authentification",
|
|
3560
|
+
"use-email": "Utiliser le code envoyé",
|
|
3561
|
+
confirm: "Confirmer",
|
|
3562
|
+
resend: "Renvoyer le code",
|
|
3563
|
+
resent: "Un nouveau code a été envoyé.",
|
|
3564
|
+
sending: "Envoi d'un nouveau code…",
|
|
3565
|
+
"new-code": "Nouveau code",
|
|
3566
|
+
"try-again": "Réessayer",
|
|
3567
|
+
wrong: "Code incorrect.",
|
|
3568
|
+
"tries-left": "{count, plural, one {# essai restant.} other {# essais restants.}}",
|
|
3569
|
+
incomplete: "Saisissez les {count} chiffres.",
|
|
3570
|
+
"incomplete-recovery": "Saisissez votre code de récupération.",
|
|
3571
|
+
expired: "Ce code a expiré.",
|
|
3572
|
+
failed: "Le code n'a pas pu être vérifié. Réessayez.",
|
|
3573
|
+
locked: "Trop de codes incorrects. Réessayez plus tard.",
|
|
3574
|
+
throttled: "Trop de demandes. Patientez un instant avant de réessayer.",
|
|
3575
|
+
"throttled-minutes": "Patientez {n} min avant de redemander un code.",
|
|
3576
|
+
"throttled-seconds": "Patientez {n} s avant de redemander un code.",
|
|
3577
|
+
"throttled-minutes-app": "Patientez {n} min avant de réessayer.",
|
|
3578
|
+
"throttled-seconds-app": "Patientez {n} s avant de réessayer.",
|
|
3579
|
+
"locked-badge": "Verrouillé"
|
|
3580
|
+
},
|
|
3581
|
+
"step-up-dialog": {
|
|
3582
|
+
title: "Confirmez que c'est bien vous",
|
|
3583
|
+
description: "Pour votre sécurité, confirmez que c'est bien vous pour continuer.",
|
|
3584
|
+
"description-app": "Saisissez le code de votre application d'authentification pour continuer.",
|
|
3585
|
+
"description-email": "Saisissez le code que nous vous avons envoyé pour continuer.",
|
|
3586
|
+
"description-email-to": "Saisissez le code envoyé à {destination} pour continuer.",
|
|
3587
|
+
requesting: "Envoi d'un code…",
|
|
3588
|
+
cancel: "Annuler",
|
|
3589
|
+
confirmed: "Confirmé. Finalisation…"
|
|
3590
|
+
},
|
|
3591
|
+
"enrolment-card": {
|
|
3592
|
+
title: "Configurez votre application d'authentification",
|
|
3593
|
+
description: "Scannez le code QR avec votre application d'authentification, puis saisissez le code qu'elle affiche.",
|
|
3594
|
+
activate: "Activer",
|
|
3595
|
+
cancel: "Annuler",
|
|
3596
|
+
"sessions-notice": "L'activation vous déconnecte de vos autres appareils."
|
|
3597
|
+
},
|
|
3598
|
+
"recovery-codes-status": {
|
|
3599
|
+
title: "Codes de récupération",
|
|
3600
|
+
description: "Chaque code vous connecte une seule fois si vous perdez l'accès à votre application d'authentification.",
|
|
3601
|
+
remaining: "{count, plural, one {# code de récupération restant} other {# codes de récupération restants}}",
|
|
3602
|
+
"none-left": "Plus aucun code de récupération",
|
|
3603
|
+
"none-left-hint": "Créez dès maintenant un nouveau lot, sinon vous risquez d'être bloqué si vous perdez votre application d'authentification.",
|
|
3604
|
+
"new-codes": "Nouveaux codes",
|
|
3605
|
+
"new-codes-hint": "Un nouveau lot remplace les anciens codes, qui cessent de fonctionner."
|
|
3606
|
+
},
|
|
3503
3607
|
zod: {
|
|
3504
3608
|
required: "Ce champ est requis.",
|
|
3505
3609
|
invalid_type: {
|
package/dist/theme-picker.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
2
|
import { a as t, i as n, n as r, o as i, r as a, t as o } from "./bubble-input-B7BVd9fX.js";
|
|
3
|
-
import { t as s } from "./use-material-translation-
|
|
3
|
+
import { t as s } from "./use-material-translation-CkPcqI6q.js";
|
|
4
4
|
import { a as c, r as l } from "./icon-sprites-CaYXzOL4.js";
|
|
5
5
|
import { t as u } from "./use-theme-DMcyJ52N.js";
|
|
6
6
|
import { a as d, r as f } from "./theme-context-Cofk6vgs.js";
|
|
7
|
-
import { t as p } from "./theme-toggle-
|
|
7
|
+
import { t as p } from "./theme-toggle-_RJgLHs9.js";
|
|
8
8
|
import { n as m, t as h } from "./nxgt-theme-ZS945iMP.js";
|
|
9
9
|
import { Check as g } from "lucide-react";
|
|
10
10
|
import { useContext as _ } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as e } from "./use-material-translation-
|
|
1
|
+
import { t as e } from "./use-material-translation-CkPcqI6q.js";
|
|
2
2
|
import { i as t } from "./theme-store-CSl51uNH.js";
|
|
3
3
|
import { n, t as r } from "./use-theme-DMcyJ52N.js";
|
|
4
4
|
import { r as i } from "./theme-context-Cofk6vgs.js";
|
|
@@ -4,9 +4,9 @@ import { a as i, c as a, i as o, l as s, r as c, s as l } from "./dist-lmHmz_bu.
|
|
|
4
4
|
import { b as u, c as d, d as f, f as p, l as m, t as h, u as g, x as _ } from "./tooltip-CkttDIab.js";
|
|
5
5
|
import { i as v, n as y, r as b, t as x } from "./dist-C4wtXCjf.js";
|
|
6
6
|
import { a as S, c as C, l as w, o as T, r as ee, s as te, t as E } from "./in-dialog-Vwkyp-M5.js";
|
|
7
|
-
import { A as ne, M as re, N as ie, b as ae, d as oe, f as se, i as ce, j as le, l as ue, n as de, o as fe, r as pe, t as me, u as he, y as ge } from "./dropdown-menu-
|
|
7
|
+
import { A as ne, M as re, N as ie, b as ae, d as oe, f as se, i as ce, j as le, l as ue, n as de, o as fe, r as pe, t as me, u as he, y as ge } from "./dropdown-menu-CFO3E-rO.js";
|
|
8
8
|
import { a as _e, n as ve, r as ye, t as be } from "./dist-B7RjY7SL.js";
|
|
9
|
-
import { t as xe } from "./use-material-translation-
|
|
9
|
+
import { t as xe } from "./use-material-translation-CkPcqI6q.js";
|
|
10
10
|
import { t as Se } from "./warn-once-C_e47JM8.js";
|
|
11
11
|
import { o as Ce } from "./escape-owner-C4W_sOAU.js";
|
|
12
12
|
import { ChevronLeft as we, ChevronRightIcon as Te, MoreVertical as Ee } from "lucide-react";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "./stored-language-
|
|
2
|
-
import { a as e, r as t } from "./translator-
|
|
1
|
+
import "./stored-language-BHmxU75w.js";
|
|
2
|
+
import { a as e, r as t } from "./translator-B_ue2XEg.js";
|
|
3
3
|
//#region lib/i18n/translate-material.ts
|
|
4
4
|
function n(n, r, i, a) {
|
|
5
5
|
if (n) for (let e of /* @__PURE__ */ new Set([n, n.split("-")[0]])) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as e } from "./is-production-GLw59WU8.js";
|
|
2
|
-
import { a as t, i as n, r, t as i } from "./stored-language-
|
|
2
|
+
import { a as t, i as n, r, t as i } from "./stored-language-BHmxU75w.js";
|
|
3
3
|
import { t as a } from "./get-CTzJAwfc.js";
|
|
4
4
|
//#region ../../node_modules/@formatjs/fast-memoize/index.js
|
|
5
5
|
function o(e, t) {
|
|
@@ -7,21 +7,21 @@ import { a as o, c as s, i as c, l, n as u, o as d, r as f, s as p, t as m } fro
|
|
|
7
7
|
import { _ as h, a as g, g as _, h as v, m as y, o as b, p as x, t as S, v as C, y as w } from "./tooltip-CkttDIab.js";
|
|
8
8
|
import { a as T, i as E, n as D, r as O, t as k } from "./dist-C4wtXCjf.js";
|
|
9
9
|
import { i as A, n as ee, t as j } from "./in-dialog-Vwkyp-M5.js";
|
|
10
|
-
import { A as M, C as N, D as te, E as ne, O as P, S as re, T as ie, _ as F, b as ae, f as oe, g as se, k as I, l as ce, m as le, n as ue, o as de, r as fe, s as pe, t as me, u as he, v as ge, w as _e, x as ve, y as ye } from "./dialog-
|
|
10
|
+
import { A as M, C as N, D as te, E as ne, O as P, S as re, T as ie, _ as F, b as ae, f as oe, g as se, k as I, l as ce, m as le, n as ue, o as de, r as fe, s as pe, t as me, u as he, v as ge, w as _e, x as ve, y as ye } from "./dialog-DOhEoEP2.js";
|
|
11
11
|
import { A as be, C as xe, D as Se, E as Ce, O as we, S as Te, T as Ee, _ as De, a as Oe, b as ke, d as Ae, f as je, g as Me, h as Ne, i as Pe, k as Fe, l as Ie, m as Le, n as Re, o as ze, p as Be, r as Ve, s as He, t as Ue, u as We, v as Ge, w as Ke, x as qe, y as Je } from "./floating-ui.dom-KkZSW8_E.js";
|
|
12
|
-
import { D as Ye, E as Xe, N as Ze, O as Qe, c as $e, d as et, f as tt, i as nt, k as rt, m as it, n as at, o as ot, p as st, t as ct, u as lt } from "./dropdown-menu-
|
|
12
|
+
import { D as Ye, E as Xe, N as Ze, O as Qe, c as $e, d as et, f as tt, i as nt, k as rt, m as it, n as at, o as ot, p as st, t as ct, u as lt } from "./dropdown-menu-CFO3E-rO.js";
|
|
13
13
|
import { a as ut, i as dt, n as ft } from "./field-blur-context-Cft9s7Hg.js";
|
|
14
|
-
import { C as pt, S as mt, a as ht, c as gt, d as _t, l as vt, n as yt, o as bt, s as xt, u as St } from "./toolbar-items-
|
|
14
|
+
import { C as pt, S as mt, a as ht, c as gt, d as _t, l as vt, n as yt, o as bt, s as xt, u as St } from "./toolbar-items-BCy6DMzb.js";
|
|
15
15
|
import { a as Ct, i as wt, n as Tt, o as Et, t as Dt } from "./bubble-input-B7BVd9fX.js";
|
|
16
16
|
import { i as Ot } from "./dist-B7RjY7SL.js";
|
|
17
|
-
import "./stored-language-
|
|
18
|
-
import { a as kt } from "./translator-
|
|
17
|
+
import "./stored-language-BHmxU75w.js";
|
|
18
|
+
import { a as kt } from "./translator-B_ue2XEg.js";
|
|
19
19
|
import { h as At } from "./get-CTzJAwfc.js";
|
|
20
20
|
import { t as jt } from "./isEmpty-F_g3jLf8.js";
|
|
21
|
-
import { t as L } from "./use-material-translation-
|
|
22
|
-
import { t as Mt } from "./spinner-
|
|
21
|
+
import { t as L } from "./use-material-translation-CkPcqI6q.js";
|
|
22
|
+
import { t as Mt } from "./spinner-7orqNAEy.js";
|
|
23
23
|
import { a as Nt } from "./button-tones-BwuVvAmd.js";
|
|
24
|
-
import { a as Pt, i as Ft, o as It, r as Lt, t as Rt } from "./button-
|
|
24
|
+
import { a as Pt, i as Ft, o as It, r as Lt, t as Rt } from "./button-DR_EdcfV.js";
|
|
25
25
|
import { t as R } from "./icon-button-CN9r5TNE.js";
|
|
26
26
|
import { a as zt, r as Bt } from "./icon-sprites-CaYXzOL4.js";
|
|
27
27
|
import { t as Vt } from "./use-ssr-media-query-C6M5m8sf.js";
|
|
@@ -35,10 +35,10 @@ import { a as tn, i as nn, o as rn } from "./escape-owner-C4W_sOAU.js";
|
|
|
35
35
|
import { n as an } from "./use-slice-reducer-BGkeGtML.js";
|
|
36
36
|
import { t as on } from "./browser-only-DQ94lWF8.js";
|
|
37
37
|
import { t as sn } from "./compose-refs-DZ0iIVF-.js";
|
|
38
|
-
import { n as cn, r as ln, t as un } from "./chip-
|
|
39
|
-
import { n as dn, t as fn } from "./icon-badge-
|
|
38
|
+
import { n as cn, r as ln, t as un } from "./chip-olzYjs30.js";
|
|
39
|
+
import { n as dn, t as fn } from "./icon-badge-BRys8Tuo.js";
|
|
40
40
|
import { r as pn } from "./use-csp-nonce-ZKs9k-ov.js";
|
|
41
|
-
import { t as mn } from "./empty-state-
|
|
41
|
+
import { t as mn } from "./empty-state-CTX0gKR3.js";
|
|
42
42
|
import { t as hn } from "./skeleton-DSdtr2qc.js";
|
|
43
43
|
import { H as gn, V as _n, X as vn, bt as yn, it as bn, lt as xn, n as Sn, t as Cn, xt as wn, yt as Tn } from "./dist-moutbfbd.js";
|
|
44
44
|
import { t as En } from "./markdown-Dw_uH7j7.js";
|
|
@@ -11082,7 +11082,7 @@ var RS = (e = {}) => Dn({
|
|
|
11082
11082
|
let [{ default: t }, { lowlight: n }, { richCodeBlock: r }] = await Promise.all([
|
|
11083
11083
|
import("./dist-CRMFGjng.js"),
|
|
11084
11084
|
import("./lowlight-OtcjU2Sa.js"),
|
|
11085
|
-
import("./rich-code-block-
|
|
11085
|
+
import("./rich-code-block-BgPtzSnv.js")
|
|
11086
11086
|
]);
|
|
11087
11087
|
return [r(t, {
|
|
11088
11088
|
lowlight: n,
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { r as e } from "./i18n-provider-
|
|
1
|
+
import { r as e } from "./i18n-provider-BnVQVqAF.js";
|
|
2
2
|
import { _ as t, g as n, h as r, n as i, v as a, y as o } from "./number.utils-BG_eEt5g.js";
|
|
3
|
-
import { useCallback as s, useEffect as c, useMemo as l, useRef as u } from "react";
|
|
3
|
+
import { useCallback as s, useEffect as c, useMemo as l, useRef as u, useState as d } from "react";
|
|
4
|
+
import { busySettler as f, busySettler as p, createSubmitGuard as m, createSubmitGuard as h } from "@nxgt/material-core/submit-guard";
|
|
4
5
|
//#region ../../node_modules/date-fns/locale/fr/_lib/formatDistance.js
|
|
5
|
-
var
|
|
6
|
+
var g = {
|
|
6
7
|
lessThanXSeconds: {
|
|
7
8
|
one: "moins d’une seconde",
|
|
8
9
|
other: "moins de {{count}} secondes"
|
|
@@ -64,10 +65,10 @@ var d = {
|
|
|
64
65
|
one: "presqu’un an",
|
|
65
66
|
other: "presque {{count}} ans"
|
|
66
67
|
}
|
|
67
|
-
},
|
|
68
|
-
let r, i =
|
|
68
|
+
}, _ = (e, t, n) => {
|
|
69
|
+
let r, i = g[e];
|
|
69
70
|
return r = typeof i == "string" ? i : t === 1 ? i.one : i.other.replace("{{count}}", String(t)), n?.addSuffix ? n.comparison && n.comparison > 0 ? "dans " + r : "il y a " + r : r;
|
|
70
|
-
},
|
|
71
|
+
}, v = {
|
|
71
72
|
date: o({
|
|
72
73
|
formats: {
|
|
73
74
|
full: "EEEE d MMMM y",
|
|
@@ -95,18 +96,18 @@ var d = {
|
|
|
95
96
|
},
|
|
96
97
|
defaultWidth: "full"
|
|
97
98
|
})
|
|
98
|
-
},
|
|
99
|
+
}, y = {
|
|
99
100
|
lastWeek: "eeee 'dernier à' p",
|
|
100
101
|
yesterday: "'hier à' p",
|
|
101
102
|
today: "'aujourd’hui à' p",
|
|
102
103
|
tomorrow: "'demain à' p'",
|
|
103
104
|
nextWeek: "eeee 'prochain à' p",
|
|
104
105
|
other: "P"
|
|
105
|
-
},
|
|
106
|
+
}, b = (e, t, n, r) => y[e], x = {
|
|
106
107
|
narrow: ["av. J.-C", "ap. J.-C"],
|
|
107
108
|
abbreviated: ["av. J.-C", "ap. J.-C"],
|
|
108
109
|
wide: ["avant Jésus-Christ", "après Jésus-Christ"]
|
|
109
|
-
},
|
|
110
|
+
}, S = {
|
|
110
111
|
narrow: [
|
|
111
112
|
"T1",
|
|
112
113
|
"T2",
|
|
@@ -125,7 +126,7 @@ var d = {
|
|
|
125
126
|
"3ème trimestre",
|
|
126
127
|
"4ème trimestre"
|
|
127
128
|
]
|
|
128
|
-
},
|
|
129
|
+
}, C = {
|
|
129
130
|
narrow: [
|
|
130
131
|
"J",
|
|
131
132
|
"F",
|
|
@@ -168,7 +169,7 @@ var d = {
|
|
|
168
169
|
"novembre",
|
|
169
170
|
"décembre"
|
|
170
171
|
]
|
|
171
|
-
},
|
|
172
|
+
}, w = {
|
|
172
173
|
narrow: [
|
|
173
174
|
"D",
|
|
174
175
|
"L",
|
|
@@ -205,7 +206,7 @@ var d = {
|
|
|
205
206
|
"vendredi",
|
|
206
207
|
"samedi"
|
|
207
208
|
]
|
|
208
|
-
},
|
|
209
|
+
}, T = {
|
|
209
210
|
narrow: {
|
|
210
211
|
am: "AM",
|
|
211
212
|
pm: "PM",
|
|
@@ -236,7 +237,7 @@ var d = {
|
|
|
236
237
|
evening: "du soir",
|
|
237
238
|
night: "du matin"
|
|
238
239
|
}
|
|
239
|
-
},
|
|
240
|
+
}, E = (e, t) => {
|
|
240
241
|
let n = Number(e), r = t?.unit;
|
|
241
242
|
if (n === 0) return "0";
|
|
242
243
|
let i = [
|
|
@@ -247,38 +248,38 @@ var d = {
|
|
|
247
248
|
"second"
|
|
248
249
|
], a;
|
|
249
250
|
return a = n === 1 ? r && i.includes(r) ? "ère" : "er" : "ème", n + a;
|
|
250
|
-
},
|
|
251
|
+
}, D = ["MMM", "MMMM"], O = {
|
|
251
252
|
en: r,
|
|
252
253
|
fr: {
|
|
253
254
|
code: "fr",
|
|
254
|
-
formatDistance:
|
|
255
|
-
formatLong:
|
|
256
|
-
formatRelative:
|
|
255
|
+
formatDistance: _,
|
|
256
|
+
formatLong: v,
|
|
257
|
+
formatRelative: b,
|
|
257
258
|
localize: {
|
|
258
|
-
preprocessor: (e, t) => e.getDate() === 1 || !t.some((e) => e.isToken &&
|
|
259
|
+
preprocessor: (e, t) => e.getDate() === 1 || !t.some((e) => e.isToken && D.includes(e.value)) ? t : t.map((e) => e.isToken && e.value === "do" ? {
|
|
259
260
|
isToken: !0,
|
|
260
261
|
value: "d"
|
|
261
262
|
} : e),
|
|
262
|
-
ordinalNumber:
|
|
263
|
+
ordinalNumber: E,
|
|
263
264
|
era: a({
|
|
264
|
-
values:
|
|
265
|
+
values: x,
|
|
265
266
|
defaultWidth: "wide"
|
|
266
267
|
}),
|
|
267
268
|
quarter: a({
|
|
268
|
-
values:
|
|
269
|
+
values: S,
|
|
269
270
|
defaultWidth: "wide",
|
|
270
271
|
argumentCallback: (e) => e - 1
|
|
271
272
|
}),
|
|
272
273
|
month: a({
|
|
273
|
-
values:
|
|
274
|
+
values: C,
|
|
274
275
|
defaultWidth: "wide"
|
|
275
276
|
}),
|
|
276
277
|
day: a({
|
|
277
|
-
values:
|
|
278
|
+
values: w,
|
|
278
279
|
defaultWidth: "wide"
|
|
279
280
|
}),
|
|
280
281
|
dayPeriod: a({
|
|
281
|
-
values:
|
|
282
|
+
values: T,
|
|
282
283
|
defaultWidth: "wide"
|
|
283
284
|
})
|
|
284
285
|
},
|
|
@@ -408,8 +409,8 @@ var d = {
|
|
|
408
409
|
}
|
|
409
410
|
}
|
|
410
411
|
};
|
|
411
|
-
function
|
|
412
|
-
let t = e()?.language ?? "en", n = l(() =>
|
|
412
|
+
function k() {
|
|
413
|
+
let t = e()?.language ?? "en", n = l(() => O[t] ?? r, [t]);
|
|
413
414
|
return {
|
|
414
415
|
language: t,
|
|
415
416
|
locale: n,
|
|
@@ -418,17 +419,28 @@ function w() {
|
|
|
418
419
|
}
|
|
419
420
|
//#endregion
|
|
420
421
|
//#region lib/hooks/use-focus-on-mount.ts
|
|
421
|
-
function
|
|
422
|
+
function A(e = !0) {
|
|
422
423
|
let t = u(null);
|
|
423
424
|
return c(() => {
|
|
424
425
|
e && t.current?.focus();
|
|
425
426
|
}, [e]), t;
|
|
426
427
|
}
|
|
427
428
|
//#endregion
|
|
429
|
+
//#region lib/hooks/use-submit-once.ts
|
|
430
|
+
function j(e) {
|
|
431
|
+
let [t] = d(m), [n] = d(() => f(t)), r = e !== void 0;
|
|
432
|
+
return c(() => {
|
|
433
|
+
e !== void 0 && n(e);
|
|
434
|
+
}, [e, n]), s((e, n) => t.once(e, {
|
|
435
|
+
settleSync: !r,
|
|
436
|
+
...n
|
|
437
|
+
}), [t, r]);
|
|
438
|
+
}
|
|
439
|
+
//#endregion
|
|
428
440
|
//#region lib/hooks/use-heading-spy.ts
|
|
429
|
-
var
|
|
430
|
-
function
|
|
431
|
-
let r = n?.rootMargin ??
|
|
441
|
+
var M = "0px 0px -65% 0px", N = [0, 1];
|
|
442
|
+
function P(e, t, n) {
|
|
443
|
+
let r = n?.rootMargin ?? M, i = n?.threshold ?? N;
|
|
432
444
|
c(() => {
|
|
433
445
|
if (e.length === 0) return;
|
|
434
446
|
let n = e.map((e) => document.getElementById(e)).filter((e) => e != null);
|
|
@@ -450,4 +462,4 @@ function O(e, t, n) {
|
|
|
450
462
|
]);
|
|
451
463
|
}
|
|
452
464
|
//#endregion
|
|
453
|
-
export {
|
|
465
|
+
export { A as a, j as i, p as n, k as o, h as r, P as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as e } from "./i18n-provider-
|
|
2
|
-
import { t } from "./translate-material-
|
|
1
|
+
import { r as e } from "./i18n-provider-BnVQVqAF.js";
|
|
2
|
+
import { t } from "./translate-material-n0YBXLGp.js";
|
|
3
3
|
import { useCallback as n } from "react";
|
|
4
4
|
//#region lib/i18n/use-material-translation.ts
|
|
5
5
|
function r() {
|
package/docs/README.md
CHANGED
|
@@ -34,6 +34,7 @@ detail: every option, the second example, and the traps.
|
|
|
34
34
|
| [The field look (2.x)](guides/field-look-2-x.md) | Your fields or pickers look different after an upgrade (8px corners, the focus halo, a dashed read-only, a 44px `NativeSelect`, a list connected to its trigger, a `CountryField` with no chip, new group headers, the date and time fields' boxes) and you want to know what changed or get the earlier look back |
|
|
35
35
|
| [Migrating to the Vite plugin](guides/migrate-to-vite-plugin.md) | Your app has its own CSP header, nonce, `zod-config`, Inter import or PDF bundling, and you move it to `nxgtMaterial()`: search → replace pairs, each with how to verify |
|
|
36
36
|
| [Server lists in the URL](guides/server-lists-url.md) | A list's filter lives in the URL: parse it in a React Router loader with the codec in `@nxgt/material-core/filter`, feed the `Filter` bar's `query`, write it back on `onQueryChange` |
|
|
37
|
+
| [Two-step verification](guides/two-factor.md) | You ask for a one-time code (sign-in, "confirm it's you", turning an authenticator app on, recovery codes): which component for each moment, the page-wide lock, and what replaces an app's own step-up dialog, code input and enrolment card |
|
|
37
38
|
| [Helpers](guides/helpers.md) | You need a utility, hook, slice factory or type from `/lib`, `/hooks`, `/i18n`, `/models`, `/types` or `/dnd` |
|
|
38
39
|
| [Troubleshooting](troubleshooting.md) | Something failed and you have an error message or a symptom |
|
|
39
40
|
| [Roadmap](roadmap.md) | You want to know what is planned, what shipped, and what will not be done |
|
|
@@ -35,7 +35,7 @@ Anything you press that is not a field: buttons, split buttons, floating action
|
|
|
35
35
|
|
|
36
36
|
## [Form fields](form-fields.md)
|
|
37
37
|
|
|
38
|
-
Labelled inputs with a value, each with its form-library wrapper, and the composite values (attributes, contacts, address, opening hours), the titled sections a long form is laid out in,
|
|
38
|
+
Labelled inputs with a value, each with its form-library wrapper, and the composite values (attributes, contacts, address, opening hours), the titled sections a long form is laid out in, the rows a user adds and removes, and the one-time code form. 28 entries.
|
|
39
39
|
|
|
40
40
|
[<img src="../previews/form-fields-textfield.webp" height="72" alt="TextField">](form-fields.md#textfield)
|
|
41
41
|
[<img src="../previews/form-fields-phonefield.webp" height="72" alt="PhoneField">](form-fields.md#phonefield)
|
|
@@ -84,7 +84,8 @@ the confirming action is `filled` and the Cancel, Close or Discard beside it
|
|
|
84
84
|
is `tonal`: two clear buttons, one weight apart, where a text or outlined
|
|
85
85
|
Cancel read poorly and left its hit area invisible. The library draws its own
|
|
86
86
|
Cancel buttons that way (`AlertDialogCancel`, `ConfirmDialog`,
|
|
87
|
-
`ConfirmationDialog`,
|
|
87
|
+
`ConfirmationDialog`, `StepUpDialog`, `EnrolmentCard`, the field dialogs,
|
|
88
|
+
`ImageCropper`, the filter sheet…),
|
|
88
89
|
and each takes `cancelVariant` (a `Button` `variant`, default `'tonal'`) to
|
|
89
90
|
restore `'outlined'` or `'ghost'`. Write yours the same way. An icon-only ✕ in
|
|
90
91
|
a corner, a toolbar button and a text link stay as they are; a destructive
|