@nxgt/material 2.16.0 → 2.17.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 +76 -0
- package/README.md +9 -4
- package/dist/{_Uint8Array-CjLUgWgf.js → _Uint8Array-C7apDrb7.js} +1 -1
- package/dist/{_overRest-HfSwfmH1.js → _overRest-CCAbV-eT.js} +1 -1
- package/dist/async-slice-Cuekts5f.js +459 -0
- package/dist/{blockDiagram-BEXU5L5S-DSNWJcbS.js → blockDiagram-BEXU5L5S-K2MjXCm9.js} +2 -2
- package/dist/{chunk-3FUC2YCW-CcZvlyvW.js → chunk-3FUC2YCW-6KyD6CAZ.js} +2 -2
- package/dist/{chunk-7M6MHVWA-21OdxoBq.js → chunk-7M6MHVWA-CNWcBB_6.js} +1 -1
- package/dist/{chunk-GNY47TPC-BZdgq2LF.js → chunk-GNY47TPC-DdqgSBxM.js} +4 -4
- package/dist/{chunk-NETBCI7D-CAgvlb0w.js → chunk-NETBCI7D-ZnunhYtw.js} +1 -1
- package/dist/{chunk-Z7XXMR3K-BSXPgLtN.js → chunk-Z7XXMR3K-C8MhuVIi.js} +1 -1
- package/dist/{classDiagram-v2-NBCMYWYE-D_BHO1iT.js → classDiagram-v2-NBCMYWYE-ByUAGkfa.js} +2 -2
- package/dist/components/components.css +1 -0
- package/dist/components/print-only.css +44 -0
- package/dist/{components-Bkdm6jn6.js → components-CIYQrI45.js} +59379 -58878
- package/dist/components.js +6 -6
- package/dist/{dagre-6A5THRUB-CsnftAPx.js → dagre-6A5THRUB-C2vz5UY9.js} +64 -64
- package/dist/{diagram-22UHCM2B-D0yPa8vo.js → diagram-22UHCM2B-DREk9ku4.js} +2 -2
- package/dist/{diagram-3UASUU5V-f8LIX2sj.js → diagram-3UASUU5V-CYkPaos5.js} +1 -1
- package/dist/dnd.js +1 -1
- package/dist/{elk-276RUBZZ-DI8bDQAL.js → elk-276RUBZZ-CK4KoCtK.js} +3 -3
- package/dist/{erDiagram-OPXOYQCR-BGHFtxmB.js → erDiagram-OPXOYQCR-CTfn8QUl.js} +2 -2
- package/dist/{field-blur-C-5K6U1F.js → field-blur-3RW0mJb2.js} +2 -2
- package/dist/{flowDiagram-KWPJA3E3-CnFLTW-3.js → flowDiagram-KWPJA3E3-CDzuzre6.js} +3 -3
- package/dist/{ganttDiagram-FUAMR5RP-B5uyVKE4.js → ganttDiagram-FUAMR5RP-Ci-9ZJz5.js} +1 -1
- package/dist/{graphlib-BqO9Go2u.js → graphlib-DxjKaXeR.js} +42 -42
- package/dist/hooks.js +38 -26
- package/dist/{i18n-provider-C3SlA4J0.js → i18n-provider-Dv9ZSmgO.js} +1 -1
- package/dist/i18n.js +6 -6
- package/dist/{isArrayLikeObject-83P1fvEs.js → isArrayLikeObject-H8k6W51O.js} +3 -3
- package/dist/{isEmpty-C2z3Hypl.js → isEmpty-B0Bavg-e.js} +9 -9
- package/dist/{journeyDiagram-ZHPQQLJL-CKtbGcVT.js → journeyDiagram-ZHPQQLJL-CwFYd51O.js} +1 -1
- package/dist/lib/components/ui/actions/copy-button/use-copy-status.d.ts +13 -0
- package/dist/lib/components/ui/display/enrolment-secret/enrolment-secret.d.ts +30 -0
- package/dist/lib/components/ui/display/enrolment-secret/index.d.ts +2 -0
- package/dist/lib/components/ui/display/enrolment-secret/use-enrolment-secret-labels.d.ts +11 -0
- package/dist/lib/components/ui/display/index.d.ts +2 -0
- package/dist/lib/components/ui/display/recovery-codes/index.d.ts +4 -0
- package/dist/lib/components/ui/display/recovery-codes/partials/recovery-codes-actions.d.ts +14 -0
- package/dist/lib/components/ui/display/recovery-codes/partials/recovery-codes-confirm.d.ts +13 -0
- package/dist/lib/components/ui/display/recovery-codes/partials/recovery-codes-list.d.ts +5 -0
- package/dist/lib/components/ui/display/recovery-codes/recovery-codes.d.ts +8 -0
- package/dist/lib/components/ui/display/recovery-codes/types.d.ts +64 -0
- package/dist/lib/components/ui/display/recovery-codes/use-recovery-codes-labels.d.ts +7 -0
- package/dist/lib/components/ui/fields/form-section/form-section-classes.d.ts +30 -0
- package/dist/lib/components/ui/fields/form-section/form-section.d.ts +25 -0
- package/dist/lib/components/ui/fields/form-section/index.d.ts +1 -0
- package/dist/lib/components/ui/fields/index.d.ts +1 -0
- package/dist/lib/components/ui/forms/index.d.ts +1 -0
- package/dist/lib/components/ui/forms/use-code-resolver.d.ts +42 -0
- package/dist/lib/components/ui/layout/auth-card/auth-card-notice.d.ts +18 -0
- package/dist/lib/components/ui/layout/auth-card/auth-card.d.ts +35 -0
- package/dist/lib/components/ui/layout/auth-card/index.d.ts +1 -0
- package/dist/lib/components/ui/layout/index.d.ts +1 -0
- package/dist/lib/hooks/index.d.ts +2 -0
- package/dist/lib/hooks/use-focus-on-mount.d.ts +24 -0
- package/dist/lib/hooks/use-submit-once.d.ts +32 -0
- package/dist/lib/i18n/resources/en/en.d.ts +21 -0
- package/dist/lib/i18n/resources/en/material.json.d.ts +21 -0
- package/dist/lib/i18n/resources/fr/fr.d.ts +21 -0
- package/dist/lib/i18n/resources/fr/material.json.d.ts +21 -0
- package/dist/lib/i18n/resources/resources.d.ts +42 -0
- package/dist/lib/i18n/translator.d.ts +1 -1
- package/dist/lib/lib/index.d.ts +1 -0
- package/dist/lib.js +58 -102
- package/dist/main.js +16 -16
- package/dist/map.js +22 -22
- package/dist/material.css +1 -1
- package/dist/{merge-CZIEHTTe.js → merge-Js8537dg.js} +4 -4
- package/dist/{mermaid.core-Cp75fWA9.js → mermaid.core-DW7UlwJu.js} +21 -21
- package/dist/{mindmap-definition-NLK3R4M7-CFYIlEfW.js → mindmap-definition-NLK3R4M7-CsLyIyEF.js} +2 -2
- package/dist/{pieDiagram-5QR66LMP-CjvtBYDr.js → pieDiagram-5QR66LMP-C-dfffj5.js} +1 -1
- package/dist/print.js +2 -2
- package/dist/{quadrantDiagram-O4NWA36T-DPj8ndqA.js → quadrantDiagram-O4NWA36T-DZ0TivLD.js} +1 -1
- package/dist/{requirementDiagram-PLB6GJNP-DjVFwRJg.js → requirementDiagram-PLB6GJNP-3brF-h1L.js} +2 -2
- package/dist/{sankeyDiagram-IPEJSGJF-63wsgHUY.js → sankeyDiagram-IPEJSGJF-BY-LLyiZ.js} +1 -1
- package/dist/{sortable-provider-Chbn1x1i.js → sortable-provider-CUT5Wfdl.js} +1 -1
- package/dist/{stateDiagram-v2-GCMORJYK-DNc8m371.js → stateDiagram-v2-GCMORJYK-BGavr7Nm.js} +2 -2
- package/dist/{stored-language-DPqzxRmf.js → stored-language-BKoohv2_.js} +42 -0
- package/dist/{swimlanes-2SLR337P-B7_gOJxx.js → swimlanes-2SLR337P-B6Fkr7-U.js} +3 -3
- package/dist/{swimlanesDiagram-TC7HE7FX-tqlBrGuu.js → swimlanesDiagram-TC7HE7FX-Dt6Tqj4h.js} +3 -3
- package/dist/{timeline-definition-EJHVYXUP-DIA9CBZK.js → timeline-definition-EJHVYXUP-CE-3KwYd.js} +1 -1
- package/dist/{translate-material-CqB-j9WD.js → translate-material-CCJg3yfc.js} +2 -2
- package/dist/{translator-DTl9h__E.js → translator-DEde7BKz.js} +1 -1
- package/dist/{use-heading-spy-C1KA3PrF.js → use-heading-spy-XkSExwoT.js} +67 -59
- package/dist/{use-material-translation-DMa4Xrnd.js → use-material-translation-Cndoq_iK.js} +2 -2
- package/dist/{usecaseDiagram-POWQR4AR-FMjCkoxs.js → usecaseDiagram-POWQR4AR-CPOCe5We.js} +2 -2
- package/dist/{xychartDiagram-PMCCYNJV-B76HOkCh.js → xychartDiagram-PMCCYNJV-Cleaihn8.js} +1 -1
- package/docs/components/README.md +3 -3
- package/docs/components/data-display.md +101 -0
- package/docs/components/form-fields.md +78 -0
- package/docs/components/navigation-and-layout.md +51 -0
- package/docs/guides/forms.md +111 -0
- package/docs/guides/helpers.md +81 -0
- package/docs/guides/i18n.md +17 -0
- package/docs/guides/printing.md +27 -0
- package/docs/previews/data-display-enrolmentsecret.webp +0 -0
- package/docs/previews/data-display-recoverycodes.webp +0 -0
- package/docs/previews/form-fields-formsection.webp +0 -0
- package/docs/previews/navigation-layout-authcard.webp +0 -0
- package/docs/roadmap.md +15 -0
- package/docs/troubleshooting.md +72 -0
- package/lib/components/components.css +1 -0
- package/lib/components/print-only.css +44 -0
- package/package.json +2 -2
- package/dist/async-slice-CsE3hkCD.js +0 -411
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** The heading elements a FormSection's title can render as. */
|
|
2
|
+
export type FormSectionTitleElement = 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
3
|
+
/**
|
|
4
|
+
* The section: a whole row of the form's grid (`.form-grid-layout`
|
|
5
|
+
* `[data-slot="form-fields"]`), and a container of its own, so its fields
|
|
6
|
+
* take columns by the section's width, inside a form or standalone.
|
|
7
|
+
*/
|
|
8
|
+
export declare const formSectionRootClass = "@container col-span-full flex w-full min-w-0 flex-col gap-2";
|
|
9
|
+
/**
|
|
10
|
+
* The rule between two sections: a top border on a section that follows
|
|
11
|
+
* another one, never on the first.
|
|
12
|
+
*/
|
|
13
|
+
export declare const formSectionSeparatedClass = "[[data-slot=form-section]+&]:mt-2 [[data-slot=form-section]+&]:border-t [[data-slot=form-section]+&]:pt-4";
|
|
14
|
+
/** The title and the actions, which wrap under the title on a phone. */
|
|
15
|
+
export declare const formSectionHeaderClass = "flex min-w-0 flex-wrap items-center justify-between gap-2";
|
|
16
|
+
/**
|
|
17
|
+
* Set apart from the fields' labels, which read as titles: small, semibold,
|
|
18
|
+
* uppercase and muted. `text-muted-foreground` reads 4.5:1 on the form's
|
|
19
|
+
* background in both themes.
|
|
20
|
+
*/
|
|
21
|
+
export declare const formSectionTitleClass = "min-w-0 break-words font-semibold text-muted-foreground text-sm uppercase tracking-wide";
|
|
22
|
+
export declare const formSectionActionsClass = "flex flex-wrap items-center gap-2";
|
|
23
|
+
export declare const formSectionDescriptionClass = "break-words text-muted-foreground text-sm";
|
|
24
|
+
/**
|
|
25
|
+
* The fields: one column on a phone, then the form grid's own columns. The
|
|
26
|
+
* form grid's wide-field rules (a switch, a textarea, chips, files, rich
|
|
27
|
+
* text on a row of their own) are descendant selectors under
|
|
28
|
+
* `[data-slot="form-fields"]`, so they still reach the fields in here.
|
|
29
|
+
*/
|
|
30
|
+
export declare const formSectionFieldsClass = "grid min-w-0 grid-cols-1 place-items-start gap-2 @2xl:grid-cols-2 @4xl:grid-cols-3 @6xl:grid-cols-4";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ComponentProps, ReactNode } from 'react';
|
|
2
|
+
import { FormSectionTitleElement } from './form-section-classes';
|
|
3
|
+
export type { FormSectionTitleElement } from './form-section-classes';
|
|
4
|
+
export type FormSectionProps = Omit<ComponentProps<'div'>, 'title'> & {
|
|
5
|
+
/** The section's heading. */
|
|
6
|
+
title: ReactNode;
|
|
7
|
+
/**
|
|
8
|
+
* The heading element; `'h2'` by default (a section under the page's
|
|
9
|
+
* `h1`). Pass `'h3'` when the form already sits under an `h2`.
|
|
10
|
+
*/
|
|
11
|
+
titleAs?: FormSectionTitleElement;
|
|
12
|
+
/** A line under the title, tied to the group with `aria-describedby`. */
|
|
13
|
+
description?: ReactNode;
|
|
14
|
+
/** Controls beside the title (e.g. "Add"), wrapping under it on a phone. */
|
|
15
|
+
actions?: ReactNode;
|
|
16
|
+
/** A rule above the section when it follows another FormSection. Default `true`. */
|
|
17
|
+
separated?: boolean;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* A titled section of a form: a heading, an optional description and
|
|
21
|
+
* actions, then its fields. Inside `.form-grid-layout`'s
|
|
22
|
+
* `[data-slot="form-fields"]` it takes a whole row and lays its fields out
|
|
23
|
+
* in the form's columns; one column on a phone.
|
|
24
|
+
*/
|
|
25
|
+
export declare function FormSection({ title, titleAs: Title, description, actions, separated, className, children, ...props }: FormSectionProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './form-section';
|
|
@@ -5,6 +5,7 @@ export * from './country-field';
|
|
|
5
5
|
export * from './currency-field';
|
|
6
6
|
export * from './email-field';
|
|
7
7
|
export * from './field';
|
|
8
|
+
export * from './form-section';
|
|
8
9
|
export * from './inline-edit';
|
|
9
10
|
export * from './input-group-field';
|
|
10
11
|
export * from './number-field';
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { CodeIssue } from '@nxgt/material-core/code-errors';
|
|
2
|
+
import { FieldValues, Resolver } from 'react-hook-form';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { Language, Translate } from '../../../i18n/types';
|
|
5
|
+
export { type CodeErrorMap, type CodeIssue, createCodeErrorMap, defaultCodeOf, isEmptyRequired, } from '@nxgt/material-core/code-errors';
|
|
6
|
+
export type CodeResolverOptions = {
|
|
7
|
+
/**
|
|
8
|
+
* The app's translator, `createTranslator(mergeResources(resources,
|
|
9
|
+
* appResources))`: it words the codes (`translate(code, params,
|
|
10
|
+
* language)`; a key it returns verbatim has no words) and is handed to
|
|
11
|
+
* `zodLocaleError`, so the app's `material.zod.*` overrides apply. Without
|
|
12
|
+
* it, every issue is worded by the package's own zod messages. Pass a
|
|
13
|
+
* stable function (module scope): a new one re-creates the resolver.
|
|
14
|
+
*/
|
|
15
|
+
translate?: Translate<any>;
|
|
16
|
+
/**
|
|
17
|
+
* Which code an issue carries. Defaults to `defaultCodeOf`: a custom
|
|
18
|
+
* issue's `params.code`. Pass a stable function.
|
|
19
|
+
*/
|
|
20
|
+
codeOf?: (issue: CodeIssue) => string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* The language to word the errors in. Defaults to `I18nProvider`'s, else
|
|
23
|
+
* what `zodLocaleError` reads by default (the stored language).
|
|
24
|
+
*/
|
|
25
|
+
language?: Language;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* A react-hook-form resolver for a zod 4 `schema` whose errors are worded in
|
|
29
|
+
* the page's language: a refinement carrying a code in `params.code`
|
|
30
|
+
* (`.refine(isFree, { params: { code: 'errors.taken' } })`) reads as the
|
|
31
|
+
* app's words for that code, and every other issue as the package's zod
|
|
32
|
+
* messages (`zodLocaleError`) — zod's own are English only. One resolver
|
|
33
|
+
* per schema and language, not one per render: switching the language
|
|
34
|
+
* re-words the errors on the next validation.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```tsx
|
|
38
|
+
* const resolver = useCodeResolver(schema, { translate });
|
|
39
|
+
* const form = useForm({ resolver, defaultValues });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare function useCodeResolver<Input extends FieldValues, Output>(schema: z.ZodType<Output, Input>, { translate, codeOf, language: languageOption }?: CodeResolverOptions): Resolver<Input, unknown, Output>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { AuthCardNoticeTone } from './auth-card';
|
|
3
|
+
type AuthCardNoticeProps = {
|
|
4
|
+
notice: ReactNode;
|
|
5
|
+
tone: AuthCardNoticeTone;
|
|
6
|
+
/** Whether there is a notice to show. */
|
|
7
|
+
shown: boolean;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* The notice above the form. A polite status is announced when its text
|
|
11
|
+
* changes inside a live region that was already in the page, so that region
|
|
12
|
+
* is always rendered and a non-error notice goes into it. It takes no room
|
|
13
|
+
* while empty (`empty:-mb-4` cancels the card's gap; `display: none` would
|
|
14
|
+
* take it out of the accessibility tree). An error is an `alert`, inserted on
|
|
15
|
+
* demand: that is announced reliably.
|
|
16
|
+
*/
|
|
17
|
+
export declare function AuthCardNotice({ notice, tone, shown }: AuthCardNoticeProps): import("react").JSX.Element;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ComponentProps, ReactNode } from 'react';
|
|
2
|
+
/** The notice's colour, and its role: `error` is an alert, the rest a status. */
|
|
3
|
+
export type AuthCardNoticeTone = 'info' | 'success' | 'warning' | 'error';
|
|
4
|
+
export type AuthCardProps = Omit<ComponentProps<'main'>, 'title'> & {
|
|
5
|
+
/** The page's `h1`, at the top of the card. */
|
|
6
|
+
title: ReactNode;
|
|
7
|
+
/** A line under the title. */
|
|
8
|
+
description?: ReactNode;
|
|
9
|
+
/** A notice above the content: an expired link, a signed-out message. */
|
|
10
|
+
notice?: ReactNode;
|
|
11
|
+
/** `'info'` by default; `'error'` makes the notice an alert, the others a status. */
|
|
12
|
+
noticeTone?: AuthCardNoticeTone;
|
|
13
|
+
/**
|
|
14
|
+
* Moves the focus to the title once shown: for an end state that replaced
|
|
15
|
+
* the form the user acted on ("Check your inbox"), so a screen reader reads
|
|
16
|
+
* it and the keyboard goes on from there.
|
|
17
|
+
*/
|
|
18
|
+
focusTitle?: boolean;
|
|
19
|
+
/** The left of the row above the card: a logo, the product's name. */
|
|
20
|
+
brand?: ReactNode;
|
|
21
|
+
/** The right of that row: a language switcher, a theme toggle. */
|
|
22
|
+
toolbar?: ReactNode;
|
|
23
|
+
/** Above that row: an update notice, a maintenance banner. */
|
|
24
|
+
banner?: ReactNode;
|
|
25
|
+
/** Under the card: links to the terms, to help. */
|
|
26
|
+
footer?: ReactNode;
|
|
27
|
+
/** The form. */
|
|
28
|
+
children: ReactNode;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* The frame of a signed-out page (sign in, sign up, a reset link): one
|
|
32
|
+
* `main`, a centred card whose title is the page's `h1`, a row above it for
|
|
33
|
+
* the brand and a toolbar, padded clear of a phone's notch and home bar.
|
|
34
|
+
*/
|
|
35
|
+
export declare function AuthCard({ title, description, notice, noticeTone, focusTitle, brand, toolbar, banner, footer, className, children, ...props }: AuthCardProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './auth-card';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './resolve-theme';
|
|
2
2
|
export * from './use-allowed-transitions';
|
|
3
3
|
export { useCspNonce } from './use-csp-nonce';
|
|
4
|
+
export * from './use-focus-on-mount';
|
|
4
5
|
export * from './use-formatters';
|
|
5
6
|
export * from './use-heading-spy';
|
|
6
7
|
export * from './use-is-client';
|
|
@@ -10,4 +11,5 @@ export * from './use-navigation';
|
|
|
10
11
|
export * from './use-number-formatter';
|
|
11
12
|
export * from './use-options';
|
|
12
13
|
export * from './use-search-param';
|
|
14
|
+
export * from './use-submit-once';
|
|
13
15
|
export * from './use-theme';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* A ref whose element takes focus once mounted, and again whenever `focus`
|
|
4
|
+
* turns true. Put it on the heading of what replaced the content the user
|
|
5
|
+
* acted on — a wizard's new step, an end state ("Message sent") — so a
|
|
6
|
+
* screen reader reads it and the keyboard goes on from there instead of from
|
|
7
|
+
* the top of the page.
|
|
8
|
+
*
|
|
9
|
+
* The element needs `tabIndex={-1}` unless it is natively focusable (a
|
|
10
|
+
* button, a link, a field): a heading is not.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* function Done() {
|
|
15
|
+
* const title = useFocusOnMount<HTMLHeadingElement>();
|
|
16
|
+
* return (
|
|
17
|
+
* <h2 ref={title} tabIndex={-1}>
|
|
18
|
+
* Message sent
|
|
19
|
+
* </h2>
|
|
20
|
+
* );
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function useFocusOnMount<T extends HTMLElement>(focus?: boolean): RefObject<T | null>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { SubmitGuard } from '@nxgt/material-core/submit-guard';
|
|
2
|
+
export { busySettler, createSubmitGuard, type SubmitGuard, type SubmitOnceOptions, } from '@nxgt/material-core/submit-guard';
|
|
3
|
+
/**
|
|
4
|
+
* One submit in flight for a form: wraps the submit handler so a second
|
|
5
|
+
* click, or Enter, before the first request ends is dropped. A disabled or
|
|
6
|
+
* `loading` button only stops clicks once it has rendered, and never Enter
|
|
7
|
+
* in a field.
|
|
8
|
+
*
|
|
9
|
+
* When the guard opens again:
|
|
10
|
+
* - **The handler returns the request's promise**: when it ends, fulfilled
|
|
11
|
+
* or rejected (the rejection still reaches the caller).
|
|
12
|
+
* - **`busy` is passed** (a router's navigation state): once it was true and
|
|
13
|
+
* is false again — for the run that was on its way when it rose, never a
|
|
14
|
+
* newer one. A handler that returns no promise then waits for `busy`.
|
|
15
|
+
* - **Neither**: a handler that returns no promise (it returned early, or
|
|
16
|
+
* did its work synchronously) opens it at once.
|
|
17
|
+
*
|
|
18
|
+
* So return the request's promise, or pass `busy`.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```tsx
|
|
22
|
+
* const submitOnce = useSubmitOnce();
|
|
23
|
+
* const { handleSubmit } = useForm<Values>();
|
|
24
|
+
* // react-hook-form's handleSubmit returns a promise: the guard opens again
|
|
25
|
+
* // when `save` ends.
|
|
26
|
+
* <form onSubmit={submitOnce(handleSubmit(save))}>…</form>
|
|
27
|
+
*
|
|
28
|
+
* // A request tracked by a flag instead (a router's navigation state):
|
|
29
|
+
* const submitOnce = useSubmitOnce(navigation.state !== 'idle');
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function useSubmitOnce(busy?: boolean): SubmitGuard['once'];
|
|
@@ -1272,5 +1272,26 @@ export declare const en: {
|
|
|
1272
1272
|
truncated: string;
|
|
1273
1273
|
content: string;
|
|
1274
1274
|
};
|
|
1275
|
+
"enrolment-secret": {
|
|
1276
|
+
"qr-label": string;
|
|
1277
|
+
"open-app": string;
|
|
1278
|
+
manual: string;
|
|
1279
|
+
"secret-label": string;
|
|
1280
|
+
copy: string;
|
|
1281
|
+
copied: string;
|
|
1282
|
+
};
|
|
1283
|
+
"recovery-codes": {
|
|
1284
|
+
title: string;
|
|
1285
|
+
warning: string;
|
|
1286
|
+
list: string;
|
|
1287
|
+
copy: string;
|
|
1288
|
+
copied: string;
|
|
1289
|
+
"copy-failed": string;
|
|
1290
|
+
download: string;
|
|
1291
|
+
print: string;
|
|
1292
|
+
saved: string;
|
|
1293
|
+
"saved-required": string;
|
|
1294
|
+
done: string;
|
|
1295
|
+
};
|
|
1275
1296
|
};
|
|
1276
1297
|
};
|
|
@@ -1261,6 +1261,27 @@ declare const _default: {
|
|
|
1261
1261
|
"download": "Download",
|
|
1262
1262
|
"truncated": "Showing the first {size} of this file.",
|
|
1263
1263
|
"content": "Contents of {name}"
|
|
1264
|
+
},
|
|
1265
|
+
"enrolment-secret": {
|
|
1266
|
+
"qr-label": "QR code to scan with your authenticator app",
|
|
1267
|
+
"open-app": "Open in your authenticator app",
|
|
1268
|
+
"manual": "Or type this key in the app:",
|
|
1269
|
+
"secret-label": "Setup key",
|
|
1270
|
+
"copy": "Copy the key",
|
|
1271
|
+
"copied": "Key copied"
|
|
1272
|
+
},
|
|
1273
|
+
"recovery-codes": {
|
|
1274
|
+
"title": "Recovery codes",
|
|
1275
|
+
"warning": "Each code works once. Keep them somewhere safe: they are shown only now.",
|
|
1276
|
+
"list": "Recovery codes",
|
|
1277
|
+
"copy": "Copy codes",
|
|
1278
|
+
"copied": "Codes copied",
|
|
1279
|
+
"copy-failed": "Copy failed",
|
|
1280
|
+
"download": "Download",
|
|
1281
|
+
"print": "Print",
|
|
1282
|
+
"saved": "I have saved these codes",
|
|
1283
|
+
"saved-required": "Tick the box once your codes are safe",
|
|
1284
|
+
"done": "Done"
|
|
1264
1285
|
}
|
|
1265
1286
|
}
|
|
1266
1287
|
;
|
|
@@ -1272,5 +1272,26 @@ export declare const fr: {
|
|
|
1272
1272
|
truncated: string;
|
|
1273
1273
|
content: string;
|
|
1274
1274
|
};
|
|
1275
|
+
"enrolment-secret": {
|
|
1276
|
+
"qr-label": string;
|
|
1277
|
+
"open-app": string;
|
|
1278
|
+
manual: string;
|
|
1279
|
+
"secret-label": string;
|
|
1280
|
+
copy: string;
|
|
1281
|
+
copied: string;
|
|
1282
|
+
};
|
|
1283
|
+
"recovery-codes": {
|
|
1284
|
+
title: string;
|
|
1285
|
+
warning: string;
|
|
1286
|
+
list: string;
|
|
1287
|
+
copy: string;
|
|
1288
|
+
copied: string;
|
|
1289
|
+
"copy-failed": string;
|
|
1290
|
+
download: string;
|
|
1291
|
+
print: string;
|
|
1292
|
+
saved: string;
|
|
1293
|
+
"saved-required": string;
|
|
1294
|
+
done: string;
|
|
1295
|
+
};
|
|
1275
1296
|
};
|
|
1276
1297
|
};
|
|
@@ -1261,6 +1261,27 @@ declare const _default: {
|
|
|
1261
1261
|
"download": "Télécharger",
|
|
1262
1262
|
"truncated": "Seuls les premiers {size} de ce fichier sont affichés.",
|
|
1263
1263
|
"content": "Contenu de {name}"
|
|
1264
|
+
},
|
|
1265
|
+
"enrolment-secret": {
|
|
1266
|
+
"qr-label": "Code QR à scanner avec votre application d'authentification",
|
|
1267
|
+
"open-app": "Ouvrir dans votre application d'authentification",
|
|
1268
|
+
"manual": "Ou saisissez cette clé dans l'application :",
|
|
1269
|
+
"secret-label": "Clé de configuration",
|
|
1270
|
+
"copy": "Copier la clé",
|
|
1271
|
+
"copied": "Clé copiée"
|
|
1272
|
+
},
|
|
1273
|
+
"recovery-codes": {
|
|
1274
|
+
"title": "Codes de récupération",
|
|
1275
|
+
"warning": "Chaque code ne sert qu'une fois. Gardez-les en lieu sûr : ils ne sont affichés que maintenant.",
|
|
1276
|
+
"list": "Codes de récupération",
|
|
1277
|
+
"copy": "Copier les codes",
|
|
1278
|
+
"copied": "Codes copiés",
|
|
1279
|
+
"copy-failed": "Échec de la copie",
|
|
1280
|
+
"download": "Télécharger",
|
|
1281
|
+
"print": "Imprimer",
|
|
1282
|
+
"saved": "J'ai enregistré ces codes",
|
|
1283
|
+
"saved-required": "Cochez la case une fois vos codes en lieu sûr",
|
|
1284
|
+
"done": "Terminé"
|
|
1264
1285
|
}
|
|
1265
1286
|
}
|
|
1266
1287
|
;
|
|
@@ -1270,6 +1270,27 @@ export declare const resources: {
|
|
|
1270
1270
|
truncated: string;
|
|
1271
1271
|
content: string;
|
|
1272
1272
|
};
|
|
1273
|
+
"enrolment-secret": {
|
|
1274
|
+
"qr-label": string;
|
|
1275
|
+
"open-app": string;
|
|
1276
|
+
manual: string;
|
|
1277
|
+
"secret-label": string;
|
|
1278
|
+
copy: string;
|
|
1279
|
+
copied: string;
|
|
1280
|
+
};
|
|
1281
|
+
"recovery-codes": {
|
|
1282
|
+
title: string;
|
|
1283
|
+
warning: string;
|
|
1284
|
+
list: string;
|
|
1285
|
+
copy: string;
|
|
1286
|
+
copied: string;
|
|
1287
|
+
"copy-failed": string;
|
|
1288
|
+
download: string;
|
|
1289
|
+
print: string;
|
|
1290
|
+
saved: string;
|
|
1291
|
+
"saved-required": string;
|
|
1292
|
+
done: string;
|
|
1293
|
+
};
|
|
1273
1294
|
};
|
|
1274
1295
|
};
|
|
1275
1296
|
fr: {
|
|
@@ -2537,6 +2558,27 @@ export declare const resources: {
|
|
|
2537
2558
|
truncated: string;
|
|
2538
2559
|
content: string;
|
|
2539
2560
|
};
|
|
2561
|
+
"enrolment-secret": {
|
|
2562
|
+
"qr-label": string;
|
|
2563
|
+
"open-app": string;
|
|
2564
|
+
manual: string;
|
|
2565
|
+
"secret-label": string;
|
|
2566
|
+
copy: string;
|
|
2567
|
+
copied: string;
|
|
2568
|
+
};
|
|
2569
|
+
"recovery-codes": {
|
|
2570
|
+
title: string;
|
|
2571
|
+
warning: string;
|
|
2572
|
+
list: string;
|
|
2573
|
+
copy: string;
|
|
2574
|
+
copied: string;
|
|
2575
|
+
"copy-failed": string;
|
|
2576
|
+
download: string;
|
|
2577
|
+
print: string;
|
|
2578
|
+
saved: string;
|
|
2579
|
+
"saved-required": string;
|
|
2580
|
+
done: string;
|
|
2581
|
+
};
|
|
2540
2582
|
};
|
|
2541
2583
|
};
|
|
2542
2584
|
};
|
|
@@ -25,4 +25,4 @@ export declare function getLanguage(): Language;
|
|
|
25
25
|
*/
|
|
26
26
|
export declare function createTranslator<K extends string = MaterialLocaleKey>(bundle?: Record<string, any>, localeProvider?: LanguageProvider): Translate<K>;
|
|
27
27
|
/** Translator bound to the base bundle owned by `@nxgt/material`. */
|
|
28
|
-
export declare const translate: Translate<"material.scroll-progress" | "material.skip-link" | "material.see-also" | "material.code.copy" | "material.code.language" | "material.code.copied" | "material.code.word-wrap" | "material.map.you-are-here" | "material.map.zoom-in" | "material.map.zoom-out" | "material.map.my-position" | "material.map.preview" | "material.map.preview-named" | "material.pagination.label" | "material.pagination.next" | "material.pagination.previous" | "material.table.loading" | "material.table.pagination.label" | "material.table.pagination.next" | "material.table.pagination.previous" | "material.table.pagination.go-to-next-page" | "material.table.pagination.go-to-previous-page" | "material.table.pagination.go-to-first-page" | "material.table.pagination.go-to-last-page" | "material.table.pagination.rows-per-page" | "material.table.pagination.rows-selected" | "material.table.pagination.page-of" | "material.table.pagination.range" | "material.table.pagination.range-open" | "material.table.pagination.range-label" | "material.table.pagination.total" | "material.table.pagination.selected" | "material.table.labels.desc" | "material.table.labels.view" | "material.table.labels.hide" | "material.table.labels.asc" | "material.table.labels.actions" | "material.table.labels.delete-selected-rows" | "material.table.labels.toggle-columns" | "material.table.labels.no-data" | "material.table.labels.select-all" | "material.table.labels.select-row" | "material.table.labels.toggle-row" | "material.table.labels.scroll-region" | "material.table.delete-confirm.title" | "material.table.delete-confirm.cancel" | "material.table.delete-confirm.description" | "material.table.delete-confirm.confirm" | "material.filter.title" | "material.filter.reset" | "material.filter.max" | "material.filter.min" | "material.filter.trigger" | "material.filter.active-count" | "material.filter.apply" | "material.filter.clear-all" | "material.filter.empty" | "material.filter.more" | "material.filter.value.yes" | "material.filter.value.no" | "material.filter.value.from" | "material.filter.value.until" | "material.filter.value.up-to" | "material.filter.presets.cancel" | "material.filter.presets.load" | "material.filter.presets.submit" | "material.filter.presets.description" | "material.filter.presets.name" | "material.filter.presets.saved" | "material.filter.presets.manage" | "material.filter.presets.set-default" | "material.filter.presets.unset-default" | "material.filter.presets.delete" | "material.filter.presets.create" | "material.filter.presets.limit" | "material.filter.presets.dialog-title" | "material.filter.presets.dialog-description" | "material.filter.presets.name-placeholder" | "material.filter.presets.usage" | "material.filter.presets.description-placeholder" | "material.banner.dismiss" | "material.slider.value" | "material.slider.minimum" | "material.slider.maximum" | "material.tree.label" | "material.tree.expand" | "material.tree.collapse" | "material.command.title" | "material.command.description" | "material.copy.copy" | "material.copy.copied" | "material.copy.failed" | "material.emoji.search" | "material.emoji.empty" | "material.emoji.picker" | "material.emoji.pick" | "material.emoji.groups.all" | "material.emoji.groups.recent" | "material.emoji.groups.general" | "material.emoji.groups.people_body" | "material.emoji.groups.components" | "material.emoji.groups.animals_nature" | "material.emoji.groups.food_drink" | "material.emoji.groups.travel_places" | "material.emoji.groups.activities" | "material.emoji.groups.objects" | "material.emoji.groups.symbols" | "material.emoji.groups.flags" | "material.carousel.next" | "material.carousel.previous" | "material.carousel.slide" | "material.carousel.roledescription" | "material.pagination.page" | "material.pagination.more" | "material.pagination.first" | "material.pagination.last" | "material.breadcrumb.label" | "material.breadcrumb.more" | "material.empty-state.search.title" | "material.empty-state.search.description" | "material.empty-state.empty.title" | "material.empty-state.empty.description" | "material.empty-state.not-found.title" | "material.empty-state.not-found.description" | "material.empty-state.unauthorized.title" | "material.empty-state.unauthorized.description" | "material.empty-state.generic.title" | "material.empty-state.generic.description" | "material.empty-state.offline.title" | "material.empty-state.offline.description" | "material.empty-state.maintenance.title" | "material.empty-state.maintenance.description" | "material.confirm-dialog.cancel" | "material.confirm-dialog.confirm" | "material.confirm-dialog.failed" | "material.confirm-dialog.processing" | "material.confirm-dialog.form-failed" | "material.mentions.empty" | "material.cards.vs" | "material.cards.total" | "material.cards.per-month" | "material.cards.rating" | "material.cards.unread" | "material.metrics.of-target" | "material.metrics.of-limit" | "material.metrics.this-period" | "material.metrics.last-period" | "material.metrics.weekdays" | "material.pager.next" | "material.pager.previous" | "material.toc.on-this-page" | "material.upload.failed" | "material.upload.retry" | "material.upload.remove" | "material.upload.replace-named" | "material.upload.invalid-type" | "material.upload.too-large" | "material.upload.max-files" | "material.upload.dropzone.max-files" | "material.upload.dropzone.idle" | "material.upload.dropzone.at-capacity" | "material.upload.dropzone.max-size" | "material.upload.dropzone.files-selected" | "material.image-field.replace" | "material.image-field.retry" | "material.image-field.remove" | "material.image-field.choose" | "material.language.fr" | "material.language.en" | "material.buttons.close" | "material.buttons.delete" | "material.buttons.load-more" | "material.buttons.ok" | "material.buttons.add" | "material.buttons.save" | "material.json-viewer.invalid" | "material.json-viewer.items" | "material.json-viewer.empty" | "material.json-viewer.expand" | "material.json-viewer.collapse" | "material.chat.send" | "material.chat.copy" | "material.chat.empty" | "material.chat.retry" | "material.chat.attach" | "material.chat.remove-attachment" | "material.chat.scroll-to-latest" | "material.chat.add-reaction" | "material.chat.attachment-type" | "material.chat.attachment-max-files" | "material.chat.attachment-max-size" | "material.chat.placeholder" | "material.chat.message" | "material.chat.typing" | "material.chat.empty-description" | "material.chat.back" | "material.chat.pick-conversation" | "material.chat.pick-conversation-description" | "material.chat.send-failed" | "material.gallery.label" | "material.gallery.select" | "material.gallery.repeat" | "material.gallery.next" | "material.gallery.previous" | "material.gallery.close" | "material.gallery.play" | "material.gallery.open" | "material.gallery.zoom-in" | "material.gallery.zoom-out" | "material.gallery.selected" | "material.gallery.empty" | "material.gallery.more" | "material.gallery.delete" | "material.gallery.empty-description" | "material.gallery.of" | "material.gallery.repeat-off" | "material.gallery.download" | "material.gallery.clear-selection" | "material.notifications.label" | "material.notifications.search" | "material.notifications.empty" | "material.notifications.dismiss" | "material.notifications.empty-description" | "material.notifications.empty-unread" | "material.notifications.empty-unread-description" | "material.notifications.read-all" | "material.notifications.filter-all" | "material.notifications.filter-unread" | "material.notifications.filter-category-all" | "material.notifications.dismiss-item" | "material.education.progress" | "material.education.results" | "material.education.true" | "material.education.false" | "material.education.next" | "material.education.previous" | "material.education.submit" | "material.education.empty" | "material.education.retry" | "material.education.answer-placeholder" | "material.education.expected" | "material.education.answered" | "material.education.score" | "material.education.quiz" | "material.education.review" | "material.education.kind-choice" | "material.education.kind-multi" | "material.education.kind-boolean" | "material.education.kind-text" | "material.stx-player.audio" | "material.stx-player.label" | "material.stx-player.video" | "material.stx-player.repeat" | "material.stx-player.next" | "material.stx-player.previous" | "material.stx-player.error" | "material.stx-player.pause" | "material.stx-player.play" | "material.stx-player.loading" | "material.stx-player.retry" | "material.stx-player.empty-description" | "material.stx-player.repeat-off" | "material.stx-player.mute" | "material.stx-player.unmute" | "material.stx-player.volume" | "material.stx-player.fullscreen" | "material.stx-player.exit-fullscreen" | "material.stx-player.pip" | "material.stx-player.exit-pip" | "material.stx-player.captions" | "material.stx-player.captions-off" | "material.stx-player.playback-rate" | "material.stx-player.queue" | "material.stx-player.now-playing" | "material.stx-player.buffering" | "material.stx-player.empty-title" | "material.stx-player.normal" | "material.camera.stop" | "material.camera.capture" | "material.camera.captured" | "material.camera.start" | "material.attributes.buttons.add" | "material.attributes.buttons.save" | "material.attributes.form.label.label" | "material.attributes.form.label.placeholder" | "material.attributes.form.description.label" | "material.attributes.form.description.placeholder" | "material.attributes.form.name.label" | "material.attributes.form.name.placeholder" | "material.attributes.form.type.label" | "material.attributes.form.type.placeholder" | "material.attributes.form.default-value.label" | "material.attributes.form.default-value.placeholder" | "material.attributes.form.priority.label" | "material.attributes.form.priority.placeholder" | "material.attributes.form.options.label" | "material.attributes.form.options.placeholder" | "material.attributes.form.unit.label" | "material.attributes.form.unit.placeholder" | "material.attributes.buttons.details" | "material.attributes.buttons.cancel" | "material.attributes.buttons.remove" | "material.attributes.buttons.edit" | "material.attributes.buttons.add-option" | "material.attributes.labels.attributes" | "material.attributes.labels.new-attribute" | "material.attributes.messages.dialog" | "material.attributes.messages.empty" | "material.attributes.messages.create-succeeded" | "material.attributes.messages.update-succeeded" | "material.attributes.messages.delete-succeeded" | "material.attributes.messages.add-first" | "material.attributes.types.string" | "material.attributes.types.number" | "material.attributes.types.boolean" | "material.attributes.types.select" | "material.attributes.types.time" | "material.attributes.types.text" | "material.attributes.types.color" | "material.attributes.types.date" | "material.attributes.types.datetime" | "material.attributes.types.multi-select" | "material.attributes.types.rich-text" | "material.attributes.fields.label" | "material.attributes.fields.description" | "material.attributes.fields.name" | "material.attributes.fields.type" | "material.attributes.fields.default-value" | "material.attributes.fields.priority" | "material.attributes.fields.options" | "material.attributes.fields.unit" | "material.contacts.buttons.add" | "material.contacts.buttons.save" | "material.contacts.buttons.cancel" | "material.contacts.buttons.remove" | "material.contacts.buttons.edit" | "material.contacts.messages.dialog" | "material.contacts.messages.add-first" | "material.contacts.fields.label" | "material.contacts.fields.type" | "material.contacts.labels.contacts" | "material.contacts.messages.no-contacts" | "material.contacts.types.email" | "material.contacts.types.phone" | "material.contacts.types.fax" | "material.contacts.types.mobile" | "material.contacts.types.website" | "material.contacts.fields.value" | "material.contacts.placeholders.label" | "material.contacts.placeholders.email" | "material.contacts.placeholders.type" | "material.contacts.placeholders.value" | "material.contacts.placeholders.phone" | "material.contacts.placeholders.fax" | "material.contacts.placeholders.mobile" | "material.contacts.placeholders.website" | "material.opening-hours.buttons.add" | "material.opening-hours.buttons.save" | "material.opening-hours.buttons.cancel" | "material.opening-hours.buttons.remove" | "material.opening-hours.buttons.edit" | "material.opening-hours.messages.dialog" | "material.opening-hours.messages.add-first" | "material.opening-hours.buttons.add-all" | "material.opening-hours.labels.closed-all-day" | "material.opening-hours.labels.open-hours" | "material.opening-hours.messages.no-hours" | "material.opening-hours.fields.dayOfWeek" | "material.opening-hours.fields.openTime" | "material.opening-hours.fields.closeTime" | "material.opening-hours.fields.isClosed" | "material.opening-hours.placeholders.dayOfWeek" | "material.opening-hours.placeholders.openTime" | "material.opening-hours.placeholders.closeTime" | "material.opening-hours.days.0" | "material.opening-hours.days.1" | "material.opening-hours.days.2" | "material.opening-hours.days.3" | "material.opening-hours.days.4" | "material.opening-hours.days.5" | "material.opening-hours.days.6" | "material.opening-hours.daysShort.0" | "material.opening-hours.daysShort.1" | "material.opening-hours.daysShort.2" | "material.opening-hours.daysShort.3" | "material.opening-hours.daysShort.4" | "material.opening-hours.daysShort.5" | "material.opening-hours.daysShort.6" | "material.postal-address.buttons.add" | "material.postal-address.buttons.save" | "material.postal-address.buttons.cancel" | "material.postal-address.buttons.remove" | "material.postal-address.buttons.edit" | "material.postal-address.messages.dialog" | "material.postal-address.messages.empty" | "material.postal-address.messages.add-first" | "material.postal-address.labels.address" | "material.postal-address.fields.region" | "material.postal-address.fields.street" | "material.postal-address.fields.locality" | "material.postal-address.fields.postalCode" | "material.postal-address.fields.country" | "material.postal-address.placeholders.region" | "material.postal-address.placeholders.street" | "material.postal-address.placeholders.locality" | "material.postal-address.placeholders.postalCode" | "material.postal-address.placeholders.country" | "material.toast.buttons.close" | "material.toast.operations.error.title" | "material.toast.operations.loading.title" | "material.toast.operations.success.title" | "material.zod.required" | "material.zod.invalid_value_single" | "material.zod.invalid_value_multiple" | "material.zod.too_big_inclusive" | "material.zod.too_big_exclusive" | "material.zod.too_big_no_unit_inclusive" | "material.zod.too_big_no_unit_exclusive" | "material.zod.too_small_inclusive" | "material.zod.too_small_exclusive" | "material.zod.too_small_no_unit_inclusive" | "material.zod.too_small_no_unit_exclusive" | "material.zod.too_big_string_inclusive" | "material.zod.too_big_string_exclusive" | "material.zod.too_small_string_inclusive" | "material.zod.too_small_string_exclusive" | "material.zod.not_multiple_of" | "material.zod.unrecognized_keys_single" | "material.zod.unrecognized_keys_multiple" | "material.zod.invalid_key" | "material.zod.invalid_union" | "material.zod.invalid_element" | "material.zod.default" | "material.zod.invalid_type.string" | "material.zod.invalid_type.number" | "material.zod.invalid_type.bigint" | "material.zod.invalid_type.boolean" | "material.zod.invalid_type.symbol" | "material.zod.invalid_type.undefined" | "material.zod.invalid_type.object" | "material.zod.invalid_type.function" | "material.zod.invalid_type.date" | "material.zod.invalid_type.default" | "material.zod.invalid_type.array" | "material.zod.invalid_type.null" | "material.zod.invalid_type.enum" | "material.zod.invalid_format.includes" | "material.zod.invalid_format.default" | "material.zod.invalid_format.starts_with" | "material.zod.invalid_format.ends_with" | "material.zod.invalid_format.regex" | "material.zod.nouns.time" | "material.zod.nouns.url" | "material.zod.nouns.email" | "material.zod.nouns.date" | "material.zod.nouns.emoji" | "material.zod.nouns.nanoid" | "material.zod.nouns.cuid" | "material.zod.nouns.cuid2" | "material.zod.nouns.duration" | "material.zod.nouns.datetime" | "material.zod.nouns.regex" | "material.zod.nouns.uuid" | "material.zod.nouns.uuidv4" | "material.zod.nouns.uuidv6" | "material.zod.nouns.guid" | "material.zod.nouns.ulid" | "material.zod.nouns.xid" | "material.zod.nouns.ksuid" | "material.zod.nouns.ipv4" | "material.zod.nouns.ipv6" | "material.zod.nouns.mac" | "material.zod.nouns.cidrv4" | "material.zod.nouns.cidrv6" | "material.zod.nouns.base64" | "material.zod.nouns.base64url" | "material.zod.nouns.json_string" | "material.zod.nouns.e164" | "material.zod.nouns.jwt" | "material.zod.nouns.template_literal" | "material.zod.sizing.string.unit" | "material.zod.sizing.string.verb" | "material.zod.sizing.set.unit" | "material.zod.sizing.set.verb" | "material.zod.sizing.array.unit" | "material.zod.sizing.array.verb" | "material.zod.sizing.file.unit" | "material.zod.sizing.file.verb" | "material.pdf-reader.label" | "material.pdf-reader.search" | "material.pdf-reader.error" | "material.pdf-reader.rotate" | "material.pdf-reader.sidebar" | "material.pdf-reader.print" | "material.pdf-reader.zoom-in" | "material.pdf-reader.zoom-out" | "material.pdf-reader.loading" | "material.pdf-reader.empty" | "material.pdf-reader.download" | "material.pdf-reader.fullscreen" | "material.pdf-reader.exit-fullscreen" | "material.pdf-reader.password" | "material.pdf-reader.password-placeholder" | "material.pdf-reader.password-label" | "material.pdf-reader.unlock" | "material.pdf-reader.password-incorrect" | "material.pdf-reader.pages" | "material.pdf-reader.outline" | "material.pdf-reader.outline-empty" | "material.pdf-reader.fit-width" | "material.pdf-reader.fit-page" | "material.pdf-reader.fit-width-full" | "material.pdf-reader.fit-page-full" | "material.pdf-reader.sidebar-toggle" | "material.pdf-reader.previous-page" | "material.pdf-reader.next-page" | "material.pdf-reader.current-page" | "material.pdf-reader.search-shortcut" | "material.pdf-reader.search-next" | "material.pdf-reader.search-prev" | "material.pdf-reader.night" | "material.pdf-reader.day" | "material.pdf-reader.thumbnails" | "material.pdf-reader.go-to-page" | "material.pdf-reader.default-file-name" | "material.pdf-reader.zoom-menu" | "material.pdf-reader.untitled" | "material.tree-select-field.search" | "material.tree-select-field.selected" | "material.tree-select-field.empty" | "material.tree-select-field.placeholder" | "material.image-cropper.title" | "material.image-cropper.cancel" | "material.image-cropper.error" | "material.image-cropper.apply" | "material.image-cropper.zoom" | "material.image-cropper.rotate-left" | "material.image-cropper.rotate-right" | "material.image-cropper.free" | "material.timeline.label" | "material.timeline.empty" | "material.qrcode.label" | "material.barecode.label" | "material.avatar-group.more" | "material.search-field.placeholder" | "material.search-field.clear" | "material.password-field.strong" | "material.password-field.show" | "material.password-field.hide" | "material.password-field.too-weak" | "material.password-field.weak" | "material.password-field.fair" | "material.password-field.very-strong" | "material.stat-card.increase" | "material.stat-card.decrease" | "material.stat-card.unchanged" | "material.color-field.open" | "material.split-button.more" | "material.file-list.label" | "material.file-list.replace" | "material.file-list.empty" | "material.file-list.retry" | "material.file-list.remove" | "material.file-list.download" | "material.inline-edit.cancel" | "material.inline-edit.save" | "material.inline-edit.placeholder" | "material.inline-edit.edit" | "material.number-field.increase" | "material.number-field.decrease" | "material.textarea-field.count" | "material.skeleton.loading" | "material.chip.dismiss" | "material.chip.dismiss-label" | "material.phone-field.search" | "material.phone-field.empty" | "material.phone-field.placeholder" | "material.phone-field.country" | "material.rating-field.star" | "material.theme-toggle.light" | "material.theme-toggle.dark" | "material.theme-toggle.system" | "material.language-switcher.label" | "material.email-field.invalid" | "material.email-field.mailto" | "material.url-field.invalid" | "material.url-field.open" | "material.stepper.error" | "material.stepper.step" | "material.stepper.completed" | "material.location-field.confirm" | "material.location-field.dialog-title" | "material.location-field.placeholder" | "material.combobox-field.empty" | "material.combobox-field.placeholder" | "material.autocomplete.results" | "material.autocomplete.loading" | "material.autocomplete.empty" | "material.autocomplete.add" | "material.autocomplete.search-error" | "material.autocomplete.min-query" | "material.avatar.active" | "material.avatar.offline" | "material.avatar.online" | "material.avatar.away" | "material.avatar.busy" | "material.country-field.placeholder" | "material.duration-field.hours" | "material.duration-field.minutes" | "material.duration-field.hours-label" | "material.duration-field.minutes-label" | "material.count-badge.label" | "material.timezone-field.placeholder" | "material.app-shell.navigation" | "material.app-shell.home" | "material.app-shell.open-menu" | "material.transfer-list.search" | "material.transfer-list.drag" | "material.transfer-list.max" | "material.transfer-list.selected" | "material.transfer-list.select-all" | "material.transfer-list.count" | "material.transfer-list.available" | "material.transfer-list.move-to-selected" | "material.transfer-list.move-all-to-selected" | "material.transfer-list.move-to-available" | "material.transfer-list.move-all-to-available" | "material.transfer-list.move-up" | "material.transfer-list.move-down" | "material.transfer-list.empty-available" | "material.transfer-list.empty-selected" | "material.transfer-list.empty-filter" | "material.transfer-list.locked" | "material.sortable-list.search" | "material.sortable-list.drag" | "material.sortable-list.empty" | "material.sortable-list.move-up" | "material.sortable-list.move-down" | "material.sortable-list.empty-filter" | "material.event-calendar.search" | "material.event-calendar.title" | "material.event-calendar.color" | "material.event-calendar.next" | "material.event-calendar.previous" | "material.event-calendar.drag" | "material.event-calendar.resize" | "material.event-calendar.description" | "material.event-calendar.delete-confirm" | "material.event-calendar.empty" | "material.event-calendar.more" | "material.event-calendar.delete" | "material.event-calendar.add" | "material.event-calendar.day" | "material.event-calendar.today" | "material.event-calendar.month" | "material.event-calendar.week" | "material.event-calendar.workweek" | "material.event-calendar.agenda" | "material.event-calendar.all-day" | "material.event-calendar.events" | "material.event-calendar.new-event" | "material.event-calendar.new-all-day" | "material.event-calendar.pick-date" | "material.event-calendar.no-results" | "material.dnd.drag" | "material.rich-text-editor.blockquote" | "material.rich-text-editor.caption" | "material.rich-text-editor.header" | "material.rich-text-editor.label" | "material.rich-text-editor.link" | "material.rich-text-editor.table" | "material.rich-text-editor.title" | "material.rich-text-editor.content" | "material.rich-text-editor.bold" | "material.rich-text-editor.words" | "material.rich-text-editor.characters" | "material.rich-text-editor.heading" | "material.rich-text-editor.cancel" | "material.rich-text-editor.icon" | "material.rich-text-editor.description" | "material.rich-text-editor.type" | "material.rich-text-editor.orientation" | "material.rich-text-editor.size" | "material.rich-text-editor.emoji" | "material.rich-text-editor.gallery" | "material.rich-text-editor.apply" | "material.rich-text-editor.remove" | "material.rich-text-editor.placeholder" | "material.rich-text-editor.options" | "material.rich-text-editor.add-option" | "material.rich-text-editor.clear" | "material.rich-text-editor.italic" | "material.rich-text-editor.underline" | "material.rich-text-editor.strikethrough" | "material.rich-text-editor.subscript" | "material.rich-text-editor.superscript" | "material.rich-text-editor.code-block" | "material.rich-text-editor.heading-n" | "material.rich-text-editor.font-family" | "material.rich-text-editor.text-color" | "material.rich-text-editor.highlight" | "material.rich-text-editor.pick-color" | "material.rich-text-editor.align-left" | "material.rich-text-editor.align-center" | "material.rich-text-editor.align-right" | "material.rich-text-editor.justify" | "material.rich-text-editor.bullet-list" | "material.rich-text-editor.ordered-list" | "material.rich-text-editor.task-list" | "material.rich-text-editor.horizontal-rule" | "material.rich-text-editor.insert-image" | "material.rich-text-editor.image-url" | "material.rich-text-editor.remove-link" | "material.rich-text-editor.youtube-url" | "material.rich-text-editor.embed-youtube" | "material.rich-text-editor.emoji-picker" | "material.rich-text-editor.emoji-description" | "material.rich-text-editor.no-result" | "material.rich-text-editor.no-commands" | "material.rich-text-editor.insert-table" | "material.rich-text-editor.delete-table" | "material.rich-text-editor.table-properties" | "material.rich-text-editor.rows" | "material.rich-text-editor.columns" | "material.rich-text-editor.insert-before" | "material.rich-text-editor.insert-after" | "material.rich-text-editor.toggle-header-row" | "material.rich-text-editor.toggle-header-column" | "material.rich-text-editor.cell-background" | "material.rich-text-editor.merge-splitting" | "material.rich-text-editor.merge-cells" | "material.rich-text-editor.split-cell" | "material.rich-text-editor.caption-placeholder" | "material.rich-text-editor.caption-alignment" | "material.rich-text-editor.alignment" | "material.rich-text-editor.insert-callout" | "material.rich-text-editor.edit-callout" | "material.rich-text-editor.edit-callout-description" | "material.rich-text-editor.add-description" | "material.rich-text-editor.accordion" | "material.rich-text-editor.edit-item" | "material.rich-text-editor.edit-item-description" | "material.rich-text-editor.remove-item" | "material.rich-text-editor.add-item" | "material.rich-text-editor.action-card" | "material.rich-text-editor.action-card-settings" | "material.rich-text-editor.action-card-settings-description" | "material.rich-text-editor.edit-card" | "material.rich-text-editor.edit-card-description" | "material.rich-text-editor.remove-card" | "material.rich-text-editor.add-card" | "material.rich-text-editor.link-optional" | "material.rich-text-editor.edit-gallery" | "material.rich-text-editor.edit-gallery-description" | "material.rich-text-editor.images" | "material.rich-text-editor.add-image" | "material.rich-text-editor.add-images" | "material.rich-text-editor.alt-text" | "material.rich-text-editor.no-images" | "material.rich-text-editor.select-chips" | "material.rich-text-editor.select-cards" | "material.rich-text-editor.edit-selector" | "material.rich-text-editor.edit-selector-description" | "material.rich-text-editor.selector-settings" | "material.rich-text-editor.selector-settings-description" | "material.rich-text-editor.optional-heading" | "material.rich-text-editor.selection" | "material.rich-text-editor.add-options" | "material.rich-text-editor.edit-option" | "material.rich-text-editor.edit-option-description" | "material.rich-text-editor.remove-option" | "material.rich-text-editor.checkbox-group" | "material.rich-text-editor.edit-checkbox-group" | "material.rich-text-editor.edit-checkbox-group-description" | "material.rich-text-editor.radio-group" | "material.rich-text-editor.edit-radio-group" | "material.rich-text-editor.edit-radio-group-description" | "material.rich-text-editor.font-default" | "material.rich-text-editor.font-sans" | "material.rich-text-editor.font-serif" | "material.rich-text-editor.font-mono" | "material.rich-text-editor.table-align-left" | "material.rich-text-editor.table-align-center" | "material.rich-text-editor.table-align-right" | "material.rich-text-editor.insert-emoji" | "material.rich-text-editor.slash-menu.items.blockquote.title" | "material.rich-text-editor.slash-menu.items.blockquote.description" | "material.rich-text-editor.slash-menu.items.table.title" | "material.rich-text-editor.slash-menu.items.table.description" | "material.rich-text-editor.slash-menu.items.gallery.title" | "material.rich-text-editor.slash-menu.items.gallery.description" | "material.rich-text-editor.slash-menu.items.code-block.title" | "material.rich-text-editor.slash-menu.items.code-block.description" | "material.rich-text-editor.slash-menu.items.bullet-list.title" | "material.rich-text-editor.slash-menu.items.bullet-list.description" | "material.rich-text-editor.slash-menu.items.ordered-list.title" | "material.rich-text-editor.slash-menu.items.ordered-list.description" | "material.rich-text-editor.slash-menu.items.task-list.title" | "material.rich-text-editor.slash-menu.items.task-list.description" | "material.rich-text-editor.slash-menu.items.horizontal-rule.title" | "material.rich-text-editor.slash-menu.items.horizontal-rule.description" | "material.rich-text-editor.slash-menu.items.accordion.title" | "material.rich-text-editor.slash-menu.items.accordion.description" | "material.rich-text-editor.slash-menu.items.action-card.title" | "material.rich-text-editor.slash-menu.items.action-card.description" | "material.rich-text-editor.slash-menu.items.checkbox-group.title" | "material.rich-text-editor.slash-menu.items.checkbox-group.description" | "material.rich-text-editor.slash-menu.items.radio-group.title" | "material.rich-text-editor.slash-menu.items.radio-group.description" | "material.rich-text-editor.slash-menu.items.paragraph.title" | "material.rich-text-editor.slash-menu.items.paragraph.description" | "material.rich-text-editor.slash-menu.items.heading-1.title" | "material.rich-text-editor.slash-menu.items.heading-1.description" | "material.rich-text-editor.slash-menu.items.heading-2.title" | "material.rich-text-editor.slash-menu.items.heading-2.description" | "material.rich-text-editor.slash-menu.items.heading-3.title" | "material.rich-text-editor.slash-menu.items.heading-3.description" | "material.rich-text-editor.slash-menu.items.callout.title" | "material.rich-text-editor.slash-menu.items.callout.description" | "material.rich-text-editor.slash-menu.items.select-chip.title" | "material.rich-text-editor.slash-menu.items.select-chip.description" | "material.rich-text-editor.slash-menu.items.select-card.title" | "material.rich-text-editor.slash-menu.items.select-card.description" | "material.rich-text-editor.slash-menu.groups.basic" | "material.rich-text-editor.slash-menu.groups.insert" | "material.kanban.search" | "material.kanban.drag" | "material.kanban.card-title" | "material.kanban.empty" | "material.kanban.no-results" | "material.kanban.add-card" | "material.kanban.wip" | "material.kanban.drag-column" | "material.kanban.ungrouped" | "material.kanban.collapse-group" | "material.kanban.expand-group" | "material.kanban.collapse-column" | "material.kanban.expand-column" | "material.kanban.new-card" | "material.kanban.subtitle" | "material.kanban.wip-full" | "material.doc.menu" | "material.doc.search" | "material.doc.filter" | "material.doc.next" | "material.doc.previous" | "material.doc.breadcrumb" | "material.doc.see-also" | "material.doc.expand" | "material.doc.collapse" | "material.doc.on-this-page" | "material.doc.edit" | "material.doc.no-results" | "material.doc.search-placeholder" | "material.doc.filter-empty" | "material.doc.search-navigate" | "material.doc.search-select" | "material.doc.search-close" | "material.doc.skip-to-content" | "material.doc.reading-progress" | "material.doc.menu-description" | "material.doc.copy-link" | "material.doc.copied-link" | "material.doc.copy-page" | "material.doc.copy-markdown" | "material.doc.last-updated" | "material.doc.callout.note" | "material.doc.callout.success" | "material.doc.callout.tip" | "material.doc.callout.info" | "material.doc.callout.warning" | "material.doc.callout.danger" | "material.param-table.description" | "material.param-table.name" | "material.param-table.type" | "material.param-table.required" | "material.param-table.default" | "material.calendar.selected" | "material.calendar.today" | "material.calendar.previous-year" | "material.calendar.previous-month" | "material.calendar.next-month" | "material.calendar.next-year" | "material.calendar.previous-years" | "material.calendar.next-years" | "material.calendar.choose-year" | "material.calendar.back-to-days" | "material.spinner.loading" | "material.scroll-to-top.label" | "material.sidebar.toggle" | "material.print.page" | "material.print.page-of" | "material.print.table.total" | "material.print.table.empty" | "material.circular-progress.label" | "material.pane-layout.sheet-title" | "material.time-picker.hours" | "material.time-picker.minutes" | "material.time-picker.am" | "material.time-picker.pm" | "material.date-range-field.presets" | "material.date-range-field.start-time" | "material.date-range-field.end-time" | "material.date-range-field.preset.today" | "material.date-range-field.preset.yesterday" | "material.date-range-field.preset.last-7-days" | "material.date-range-field.preset.last-30-days" | "material.date-range-field.preset.this-month" | "material.date-range-field.preset.last-month" | "material.date-range-field.preset.this-year" | "material.file-preview.label" | "material.file-preview.content" | "material.file-preview.error" | "material.file-preview.loading" | "material.file-preview.download" | "material.file-preview.untitled" | "material.file-preview.truncated">;
|
|
28
|
+
export declare const translate: Translate<"material.scroll-progress" | "material.skip-link" | "material.see-also" | "material.code.copy" | "material.code.language" | "material.code.copied" | "material.code.word-wrap" | "material.map.you-are-here" | "material.map.zoom-in" | "material.map.zoom-out" | "material.map.my-position" | "material.map.preview" | "material.map.preview-named" | "material.pagination.label" | "material.pagination.next" | "material.pagination.previous" | "material.table.loading" | "material.table.pagination.label" | "material.table.pagination.next" | "material.table.pagination.previous" | "material.table.pagination.go-to-next-page" | "material.table.pagination.go-to-previous-page" | "material.table.pagination.go-to-first-page" | "material.table.pagination.go-to-last-page" | "material.table.pagination.rows-per-page" | "material.table.pagination.rows-selected" | "material.table.pagination.page-of" | "material.table.pagination.range" | "material.table.pagination.range-open" | "material.table.pagination.range-label" | "material.table.pagination.total" | "material.table.pagination.selected" | "material.table.labels.desc" | "material.table.labels.view" | "material.table.labels.hide" | "material.table.labels.asc" | "material.table.labels.actions" | "material.table.labels.delete-selected-rows" | "material.table.labels.toggle-columns" | "material.table.labels.no-data" | "material.table.labels.select-all" | "material.table.labels.select-row" | "material.table.labels.toggle-row" | "material.table.labels.scroll-region" | "material.table.delete-confirm.title" | "material.table.delete-confirm.cancel" | "material.table.delete-confirm.description" | "material.table.delete-confirm.confirm" | "material.filter.title" | "material.filter.reset" | "material.filter.max" | "material.filter.min" | "material.filter.trigger" | "material.filter.active-count" | "material.filter.apply" | "material.filter.clear-all" | "material.filter.empty" | "material.filter.more" | "material.filter.value.yes" | "material.filter.value.no" | "material.filter.value.from" | "material.filter.value.until" | "material.filter.value.up-to" | "material.filter.presets.cancel" | "material.filter.presets.load" | "material.filter.presets.submit" | "material.filter.presets.description" | "material.filter.presets.name" | "material.filter.presets.saved" | "material.filter.presets.manage" | "material.filter.presets.set-default" | "material.filter.presets.unset-default" | "material.filter.presets.delete" | "material.filter.presets.create" | "material.filter.presets.limit" | "material.filter.presets.dialog-title" | "material.filter.presets.dialog-description" | "material.filter.presets.name-placeholder" | "material.filter.presets.usage" | "material.filter.presets.description-placeholder" | "material.banner.dismiss" | "material.slider.value" | "material.slider.minimum" | "material.slider.maximum" | "material.tree.label" | "material.tree.expand" | "material.tree.collapse" | "material.command.title" | "material.command.description" | "material.copy.copy" | "material.copy.copied" | "material.copy.failed" | "material.emoji.search" | "material.emoji.empty" | "material.emoji.picker" | "material.emoji.pick" | "material.emoji.groups.all" | "material.emoji.groups.recent" | "material.emoji.groups.general" | "material.emoji.groups.people_body" | "material.emoji.groups.components" | "material.emoji.groups.animals_nature" | "material.emoji.groups.food_drink" | "material.emoji.groups.travel_places" | "material.emoji.groups.activities" | "material.emoji.groups.objects" | "material.emoji.groups.symbols" | "material.emoji.groups.flags" | "material.carousel.next" | "material.carousel.previous" | "material.carousel.slide" | "material.carousel.roledescription" | "material.pagination.page" | "material.pagination.more" | "material.pagination.first" | "material.pagination.last" | "material.breadcrumb.label" | "material.breadcrumb.more" | "material.empty-state.search.title" | "material.empty-state.search.description" | "material.empty-state.empty.title" | "material.empty-state.empty.description" | "material.empty-state.not-found.title" | "material.empty-state.not-found.description" | "material.empty-state.unauthorized.title" | "material.empty-state.unauthorized.description" | "material.empty-state.generic.title" | "material.empty-state.generic.description" | "material.empty-state.offline.title" | "material.empty-state.offline.description" | "material.empty-state.maintenance.title" | "material.empty-state.maintenance.description" | "material.confirm-dialog.cancel" | "material.confirm-dialog.confirm" | "material.confirm-dialog.failed" | "material.confirm-dialog.processing" | "material.confirm-dialog.form-failed" | "material.mentions.empty" | "material.cards.vs" | "material.cards.total" | "material.cards.per-month" | "material.cards.rating" | "material.cards.unread" | "material.metrics.of-target" | "material.metrics.of-limit" | "material.metrics.this-period" | "material.metrics.last-period" | "material.metrics.weekdays" | "material.pager.next" | "material.pager.previous" | "material.toc.on-this-page" | "material.upload.failed" | "material.upload.retry" | "material.upload.remove" | "material.upload.replace-named" | "material.upload.invalid-type" | "material.upload.too-large" | "material.upload.max-files" | "material.upload.dropzone.max-files" | "material.upload.dropzone.idle" | "material.upload.dropzone.at-capacity" | "material.upload.dropzone.max-size" | "material.upload.dropzone.files-selected" | "material.image-field.replace" | "material.image-field.retry" | "material.image-field.remove" | "material.image-field.choose" | "material.language.fr" | "material.language.en" | "material.buttons.close" | "material.buttons.delete" | "material.buttons.load-more" | "material.buttons.ok" | "material.buttons.add" | "material.buttons.save" | "material.json-viewer.invalid" | "material.json-viewer.items" | "material.json-viewer.empty" | "material.json-viewer.expand" | "material.json-viewer.collapse" | "material.chat.send" | "material.chat.copy" | "material.chat.empty" | "material.chat.retry" | "material.chat.attach" | "material.chat.remove-attachment" | "material.chat.scroll-to-latest" | "material.chat.add-reaction" | "material.chat.attachment-type" | "material.chat.attachment-max-files" | "material.chat.attachment-max-size" | "material.chat.placeholder" | "material.chat.message" | "material.chat.typing" | "material.chat.empty-description" | "material.chat.back" | "material.chat.pick-conversation" | "material.chat.pick-conversation-description" | "material.chat.send-failed" | "material.gallery.label" | "material.gallery.select" | "material.gallery.repeat" | "material.gallery.next" | "material.gallery.previous" | "material.gallery.close" | "material.gallery.play" | "material.gallery.open" | "material.gallery.zoom-in" | "material.gallery.zoom-out" | "material.gallery.selected" | "material.gallery.empty" | "material.gallery.more" | "material.gallery.delete" | "material.gallery.empty-description" | "material.gallery.of" | "material.gallery.repeat-off" | "material.gallery.download" | "material.gallery.clear-selection" | "material.notifications.label" | "material.notifications.search" | "material.notifications.empty" | "material.notifications.dismiss" | "material.notifications.empty-description" | "material.notifications.empty-unread" | "material.notifications.empty-unread-description" | "material.notifications.read-all" | "material.notifications.filter-all" | "material.notifications.filter-unread" | "material.notifications.filter-category-all" | "material.notifications.dismiss-item" | "material.education.progress" | "material.education.results" | "material.education.true" | "material.education.false" | "material.education.next" | "material.education.previous" | "material.education.submit" | "material.education.empty" | "material.education.retry" | "material.education.answer-placeholder" | "material.education.expected" | "material.education.answered" | "material.education.score" | "material.education.quiz" | "material.education.review" | "material.education.kind-choice" | "material.education.kind-multi" | "material.education.kind-boolean" | "material.education.kind-text" | "material.stx-player.audio" | "material.stx-player.label" | "material.stx-player.video" | "material.stx-player.repeat" | "material.stx-player.next" | "material.stx-player.previous" | "material.stx-player.error" | "material.stx-player.pause" | "material.stx-player.play" | "material.stx-player.loading" | "material.stx-player.retry" | "material.stx-player.empty-description" | "material.stx-player.repeat-off" | "material.stx-player.mute" | "material.stx-player.unmute" | "material.stx-player.volume" | "material.stx-player.fullscreen" | "material.stx-player.exit-fullscreen" | "material.stx-player.pip" | "material.stx-player.exit-pip" | "material.stx-player.captions" | "material.stx-player.captions-off" | "material.stx-player.playback-rate" | "material.stx-player.queue" | "material.stx-player.now-playing" | "material.stx-player.buffering" | "material.stx-player.empty-title" | "material.stx-player.normal" | "material.camera.stop" | "material.camera.capture" | "material.camera.captured" | "material.camera.start" | "material.attributes.buttons.add" | "material.attributes.buttons.save" | "material.attributes.form.label.label" | "material.attributes.form.label.placeholder" | "material.attributes.form.description.label" | "material.attributes.form.description.placeholder" | "material.attributes.form.name.label" | "material.attributes.form.name.placeholder" | "material.attributes.form.type.label" | "material.attributes.form.type.placeholder" | "material.attributes.form.default-value.label" | "material.attributes.form.default-value.placeholder" | "material.attributes.form.priority.label" | "material.attributes.form.priority.placeholder" | "material.attributes.form.options.label" | "material.attributes.form.options.placeholder" | "material.attributes.form.unit.label" | "material.attributes.form.unit.placeholder" | "material.attributes.buttons.details" | "material.attributes.buttons.cancel" | "material.attributes.buttons.remove" | "material.attributes.buttons.edit" | "material.attributes.buttons.add-option" | "material.attributes.labels.attributes" | "material.attributes.labels.new-attribute" | "material.attributes.messages.dialog" | "material.attributes.messages.empty" | "material.attributes.messages.create-succeeded" | "material.attributes.messages.update-succeeded" | "material.attributes.messages.delete-succeeded" | "material.attributes.messages.add-first" | "material.attributes.types.string" | "material.attributes.types.number" | "material.attributes.types.boolean" | "material.attributes.types.select" | "material.attributes.types.time" | "material.attributes.types.text" | "material.attributes.types.color" | "material.attributes.types.date" | "material.attributes.types.datetime" | "material.attributes.types.multi-select" | "material.attributes.types.rich-text" | "material.attributes.fields.label" | "material.attributes.fields.description" | "material.attributes.fields.name" | "material.attributes.fields.type" | "material.attributes.fields.default-value" | "material.attributes.fields.priority" | "material.attributes.fields.options" | "material.attributes.fields.unit" | "material.contacts.buttons.add" | "material.contacts.buttons.save" | "material.contacts.buttons.cancel" | "material.contacts.buttons.remove" | "material.contacts.buttons.edit" | "material.contacts.messages.dialog" | "material.contacts.messages.add-first" | "material.contacts.fields.label" | "material.contacts.fields.type" | "material.contacts.labels.contacts" | "material.contacts.messages.no-contacts" | "material.contacts.types.email" | "material.contacts.types.phone" | "material.contacts.types.fax" | "material.contacts.types.mobile" | "material.contacts.types.website" | "material.contacts.fields.value" | "material.contacts.placeholders.label" | "material.contacts.placeholders.email" | "material.contacts.placeholders.type" | "material.contacts.placeholders.value" | "material.contacts.placeholders.phone" | "material.contacts.placeholders.fax" | "material.contacts.placeholders.mobile" | "material.contacts.placeholders.website" | "material.opening-hours.buttons.add" | "material.opening-hours.buttons.save" | "material.opening-hours.buttons.cancel" | "material.opening-hours.buttons.remove" | "material.opening-hours.buttons.edit" | "material.opening-hours.messages.dialog" | "material.opening-hours.messages.add-first" | "material.opening-hours.buttons.add-all" | "material.opening-hours.labels.closed-all-day" | "material.opening-hours.labels.open-hours" | "material.opening-hours.messages.no-hours" | "material.opening-hours.fields.dayOfWeek" | "material.opening-hours.fields.openTime" | "material.opening-hours.fields.closeTime" | "material.opening-hours.fields.isClosed" | "material.opening-hours.placeholders.dayOfWeek" | "material.opening-hours.placeholders.openTime" | "material.opening-hours.placeholders.closeTime" | "material.opening-hours.days.0" | "material.opening-hours.days.1" | "material.opening-hours.days.2" | "material.opening-hours.days.3" | "material.opening-hours.days.4" | "material.opening-hours.days.5" | "material.opening-hours.days.6" | "material.opening-hours.daysShort.0" | "material.opening-hours.daysShort.1" | "material.opening-hours.daysShort.2" | "material.opening-hours.daysShort.3" | "material.opening-hours.daysShort.4" | "material.opening-hours.daysShort.5" | "material.opening-hours.daysShort.6" | "material.postal-address.buttons.add" | "material.postal-address.buttons.save" | "material.postal-address.buttons.cancel" | "material.postal-address.buttons.remove" | "material.postal-address.buttons.edit" | "material.postal-address.messages.dialog" | "material.postal-address.messages.empty" | "material.postal-address.messages.add-first" | "material.postal-address.labels.address" | "material.postal-address.fields.region" | "material.postal-address.fields.street" | "material.postal-address.fields.locality" | "material.postal-address.fields.postalCode" | "material.postal-address.fields.country" | "material.postal-address.placeholders.region" | "material.postal-address.placeholders.street" | "material.postal-address.placeholders.locality" | "material.postal-address.placeholders.postalCode" | "material.postal-address.placeholders.country" | "material.toast.buttons.close" | "material.toast.operations.error.title" | "material.toast.operations.loading.title" | "material.toast.operations.success.title" | "material.zod.required" | "material.zod.invalid_value_single" | "material.zod.invalid_value_multiple" | "material.zod.too_big_inclusive" | "material.zod.too_big_exclusive" | "material.zod.too_big_no_unit_inclusive" | "material.zod.too_big_no_unit_exclusive" | "material.zod.too_small_inclusive" | "material.zod.too_small_exclusive" | "material.zod.too_small_no_unit_inclusive" | "material.zod.too_small_no_unit_exclusive" | "material.zod.too_big_string_inclusive" | "material.zod.too_big_string_exclusive" | "material.zod.too_small_string_inclusive" | "material.zod.too_small_string_exclusive" | "material.zod.not_multiple_of" | "material.zod.unrecognized_keys_single" | "material.zod.unrecognized_keys_multiple" | "material.zod.invalid_key" | "material.zod.invalid_union" | "material.zod.invalid_element" | "material.zod.default" | "material.zod.invalid_type.string" | "material.zod.invalid_type.number" | "material.zod.invalid_type.bigint" | "material.zod.invalid_type.boolean" | "material.zod.invalid_type.symbol" | "material.zod.invalid_type.undefined" | "material.zod.invalid_type.object" | "material.zod.invalid_type.function" | "material.zod.invalid_type.date" | "material.zod.invalid_type.default" | "material.zod.invalid_type.array" | "material.zod.invalid_type.null" | "material.zod.invalid_type.enum" | "material.zod.invalid_format.includes" | "material.zod.invalid_format.default" | "material.zod.invalid_format.starts_with" | "material.zod.invalid_format.ends_with" | "material.zod.invalid_format.regex" | "material.zod.nouns.time" | "material.zod.nouns.url" | "material.zod.nouns.email" | "material.zod.nouns.date" | "material.zod.nouns.emoji" | "material.zod.nouns.nanoid" | "material.zod.nouns.cuid" | "material.zod.nouns.cuid2" | "material.zod.nouns.duration" | "material.zod.nouns.datetime" | "material.zod.nouns.regex" | "material.zod.nouns.uuid" | "material.zod.nouns.uuidv4" | "material.zod.nouns.uuidv6" | "material.zod.nouns.guid" | "material.zod.nouns.ulid" | "material.zod.nouns.xid" | "material.zod.nouns.ksuid" | "material.zod.nouns.ipv4" | "material.zod.nouns.ipv6" | "material.zod.nouns.mac" | "material.zod.nouns.cidrv4" | "material.zod.nouns.cidrv6" | "material.zod.nouns.base64" | "material.zod.nouns.base64url" | "material.zod.nouns.json_string" | "material.zod.nouns.e164" | "material.zod.nouns.jwt" | "material.zod.nouns.template_literal" | "material.zod.sizing.string.unit" | "material.zod.sizing.string.verb" | "material.zod.sizing.set.unit" | "material.zod.sizing.set.verb" | "material.zod.sizing.array.unit" | "material.zod.sizing.array.verb" | "material.zod.sizing.file.unit" | "material.zod.sizing.file.verb" | "material.pdf-reader.label" | "material.pdf-reader.search" | "material.pdf-reader.error" | "material.pdf-reader.rotate" | "material.pdf-reader.sidebar" | "material.pdf-reader.print" | "material.pdf-reader.zoom-in" | "material.pdf-reader.zoom-out" | "material.pdf-reader.loading" | "material.pdf-reader.empty" | "material.pdf-reader.download" | "material.pdf-reader.fullscreen" | "material.pdf-reader.exit-fullscreen" | "material.pdf-reader.password" | "material.pdf-reader.password-placeholder" | "material.pdf-reader.password-label" | "material.pdf-reader.unlock" | "material.pdf-reader.password-incorrect" | "material.pdf-reader.pages" | "material.pdf-reader.outline" | "material.pdf-reader.outline-empty" | "material.pdf-reader.fit-width" | "material.pdf-reader.fit-page" | "material.pdf-reader.fit-width-full" | "material.pdf-reader.fit-page-full" | "material.pdf-reader.sidebar-toggle" | "material.pdf-reader.previous-page" | "material.pdf-reader.next-page" | "material.pdf-reader.current-page" | "material.pdf-reader.search-shortcut" | "material.pdf-reader.search-next" | "material.pdf-reader.search-prev" | "material.pdf-reader.night" | "material.pdf-reader.day" | "material.pdf-reader.thumbnails" | "material.pdf-reader.go-to-page" | "material.pdf-reader.default-file-name" | "material.pdf-reader.zoom-menu" | "material.pdf-reader.untitled" | "material.tree-select-field.search" | "material.tree-select-field.selected" | "material.tree-select-field.empty" | "material.tree-select-field.placeholder" | "material.image-cropper.title" | "material.image-cropper.cancel" | "material.image-cropper.error" | "material.image-cropper.apply" | "material.image-cropper.zoom" | "material.image-cropper.rotate-left" | "material.image-cropper.rotate-right" | "material.image-cropper.free" | "material.timeline.label" | "material.timeline.empty" | "material.qrcode.label" | "material.barecode.label" | "material.avatar-group.more" | "material.search-field.placeholder" | "material.search-field.clear" | "material.password-field.strong" | "material.password-field.show" | "material.password-field.hide" | "material.password-field.too-weak" | "material.password-field.weak" | "material.password-field.fair" | "material.password-field.very-strong" | "material.stat-card.increase" | "material.stat-card.decrease" | "material.stat-card.unchanged" | "material.color-field.open" | "material.split-button.more" | "material.file-list.label" | "material.file-list.replace" | "material.file-list.empty" | "material.file-list.retry" | "material.file-list.remove" | "material.file-list.download" | "material.inline-edit.cancel" | "material.inline-edit.save" | "material.inline-edit.placeholder" | "material.inline-edit.edit" | "material.number-field.increase" | "material.number-field.decrease" | "material.textarea-field.count" | "material.skeleton.loading" | "material.chip.dismiss" | "material.chip.dismiss-label" | "material.phone-field.search" | "material.phone-field.empty" | "material.phone-field.placeholder" | "material.phone-field.country" | "material.rating-field.star" | "material.theme-toggle.light" | "material.theme-toggle.dark" | "material.theme-toggle.system" | "material.language-switcher.label" | "material.email-field.invalid" | "material.email-field.mailto" | "material.url-field.invalid" | "material.url-field.open" | "material.stepper.error" | "material.stepper.step" | "material.stepper.completed" | "material.location-field.confirm" | "material.location-field.dialog-title" | "material.location-field.placeholder" | "material.combobox-field.empty" | "material.combobox-field.placeholder" | "material.autocomplete.results" | "material.autocomplete.loading" | "material.autocomplete.empty" | "material.autocomplete.add" | "material.autocomplete.search-error" | "material.autocomplete.min-query" | "material.avatar.active" | "material.avatar.offline" | "material.avatar.online" | "material.avatar.away" | "material.avatar.busy" | "material.country-field.placeholder" | "material.duration-field.hours" | "material.duration-field.minutes" | "material.duration-field.hours-label" | "material.duration-field.minutes-label" | "material.count-badge.label" | "material.timezone-field.placeholder" | "material.app-shell.navigation" | "material.app-shell.home" | "material.app-shell.open-menu" | "material.transfer-list.search" | "material.transfer-list.drag" | "material.transfer-list.max" | "material.transfer-list.selected" | "material.transfer-list.select-all" | "material.transfer-list.count" | "material.transfer-list.available" | "material.transfer-list.move-to-selected" | "material.transfer-list.move-all-to-selected" | "material.transfer-list.move-to-available" | "material.transfer-list.move-all-to-available" | "material.transfer-list.move-up" | "material.transfer-list.move-down" | "material.transfer-list.empty-available" | "material.transfer-list.empty-selected" | "material.transfer-list.empty-filter" | "material.transfer-list.locked" | "material.sortable-list.search" | "material.sortable-list.drag" | "material.sortable-list.empty" | "material.sortable-list.move-up" | "material.sortable-list.move-down" | "material.sortable-list.empty-filter" | "material.event-calendar.search" | "material.event-calendar.title" | "material.event-calendar.color" | "material.event-calendar.next" | "material.event-calendar.previous" | "material.event-calendar.drag" | "material.event-calendar.resize" | "material.event-calendar.description" | "material.event-calendar.delete-confirm" | "material.event-calendar.empty" | "material.event-calendar.more" | "material.event-calendar.delete" | "material.event-calendar.add" | "material.event-calendar.day" | "material.event-calendar.today" | "material.event-calendar.month" | "material.event-calendar.week" | "material.event-calendar.workweek" | "material.event-calendar.agenda" | "material.event-calendar.all-day" | "material.event-calendar.events" | "material.event-calendar.new-event" | "material.event-calendar.new-all-day" | "material.event-calendar.pick-date" | "material.event-calendar.no-results" | "material.dnd.drag" | "material.rich-text-editor.blockquote" | "material.rich-text-editor.caption" | "material.rich-text-editor.header" | "material.rich-text-editor.label" | "material.rich-text-editor.link" | "material.rich-text-editor.table" | "material.rich-text-editor.title" | "material.rich-text-editor.content" | "material.rich-text-editor.bold" | "material.rich-text-editor.words" | "material.rich-text-editor.characters" | "material.rich-text-editor.heading" | "material.rich-text-editor.cancel" | "material.rich-text-editor.icon" | "material.rich-text-editor.description" | "material.rich-text-editor.type" | "material.rich-text-editor.orientation" | "material.rich-text-editor.size" | "material.rich-text-editor.emoji" | "material.rich-text-editor.gallery" | "material.rich-text-editor.apply" | "material.rich-text-editor.remove" | "material.rich-text-editor.placeholder" | "material.rich-text-editor.options" | "material.rich-text-editor.add-option" | "material.rich-text-editor.clear" | "material.rich-text-editor.italic" | "material.rich-text-editor.underline" | "material.rich-text-editor.strikethrough" | "material.rich-text-editor.subscript" | "material.rich-text-editor.superscript" | "material.rich-text-editor.code-block" | "material.rich-text-editor.heading-n" | "material.rich-text-editor.font-family" | "material.rich-text-editor.text-color" | "material.rich-text-editor.highlight" | "material.rich-text-editor.pick-color" | "material.rich-text-editor.align-left" | "material.rich-text-editor.align-center" | "material.rich-text-editor.align-right" | "material.rich-text-editor.justify" | "material.rich-text-editor.bullet-list" | "material.rich-text-editor.ordered-list" | "material.rich-text-editor.task-list" | "material.rich-text-editor.horizontal-rule" | "material.rich-text-editor.insert-image" | "material.rich-text-editor.image-url" | "material.rich-text-editor.remove-link" | "material.rich-text-editor.youtube-url" | "material.rich-text-editor.embed-youtube" | "material.rich-text-editor.emoji-picker" | "material.rich-text-editor.emoji-description" | "material.rich-text-editor.no-result" | "material.rich-text-editor.no-commands" | "material.rich-text-editor.insert-table" | "material.rich-text-editor.delete-table" | "material.rich-text-editor.table-properties" | "material.rich-text-editor.rows" | "material.rich-text-editor.columns" | "material.rich-text-editor.insert-before" | "material.rich-text-editor.insert-after" | "material.rich-text-editor.toggle-header-row" | "material.rich-text-editor.toggle-header-column" | "material.rich-text-editor.cell-background" | "material.rich-text-editor.merge-splitting" | "material.rich-text-editor.merge-cells" | "material.rich-text-editor.split-cell" | "material.rich-text-editor.caption-placeholder" | "material.rich-text-editor.caption-alignment" | "material.rich-text-editor.alignment" | "material.rich-text-editor.insert-callout" | "material.rich-text-editor.edit-callout" | "material.rich-text-editor.edit-callout-description" | "material.rich-text-editor.add-description" | "material.rich-text-editor.accordion" | "material.rich-text-editor.edit-item" | "material.rich-text-editor.edit-item-description" | "material.rich-text-editor.remove-item" | "material.rich-text-editor.add-item" | "material.rich-text-editor.action-card" | "material.rich-text-editor.action-card-settings" | "material.rich-text-editor.action-card-settings-description" | "material.rich-text-editor.edit-card" | "material.rich-text-editor.edit-card-description" | "material.rich-text-editor.remove-card" | "material.rich-text-editor.add-card" | "material.rich-text-editor.link-optional" | "material.rich-text-editor.edit-gallery" | "material.rich-text-editor.edit-gallery-description" | "material.rich-text-editor.images" | "material.rich-text-editor.add-image" | "material.rich-text-editor.add-images" | "material.rich-text-editor.alt-text" | "material.rich-text-editor.no-images" | "material.rich-text-editor.select-chips" | "material.rich-text-editor.select-cards" | "material.rich-text-editor.edit-selector" | "material.rich-text-editor.edit-selector-description" | "material.rich-text-editor.selector-settings" | "material.rich-text-editor.selector-settings-description" | "material.rich-text-editor.optional-heading" | "material.rich-text-editor.selection" | "material.rich-text-editor.add-options" | "material.rich-text-editor.edit-option" | "material.rich-text-editor.edit-option-description" | "material.rich-text-editor.remove-option" | "material.rich-text-editor.checkbox-group" | "material.rich-text-editor.edit-checkbox-group" | "material.rich-text-editor.edit-checkbox-group-description" | "material.rich-text-editor.radio-group" | "material.rich-text-editor.edit-radio-group" | "material.rich-text-editor.edit-radio-group-description" | "material.rich-text-editor.font-default" | "material.rich-text-editor.font-sans" | "material.rich-text-editor.font-serif" | "material.rich-text-editor.font-mono" | "material.rich-text-editor.table-align-left" | "material.rich-text-editor.table-align-center" | "material.rich-text-editor.table-align-right" | "material.rich-text-editor.insert-emoji" | "material.rich-text-editor.slash-menu.items.blockquote.title" | "material.rich-text-editor.slash-menu.items.blockquote.description" | "material.rich-text-editor.slash-menu.items.table.title" | "material.rich-text-editor.slash-menu.items.table.description" | "material.rich-text-editor.slash-menu.items.gallery.title" | "material.rich-text-editor.slash-menu.items.gallery.description" | "material.rich-text-editor.slash-menu.items.code-block.title" | "material.rich-text-editor.slash-menu.items.code-block.description" | "material.rich-text-editor.slash-menu.items.bullet-list.title" | "material.rich-text-editor.slash-menu.items.bullet-list.description" | "material.rich-text-editor.slash-menu.items.ordered-list.title" | "material.rich-text-editor.slash-menu.items.ordered-list.description" | "material.rich-text-editor.slash-menu.items.task-list.title" | "material.rich-text-editor.slash-menu.items.task-list.description" | "material.rich-text-editor.slash-menu.items.horizontal-rule.title" | "material.rich-text-editor.slash-menu.items.horizontal-rule.description" | "material.rich-text-editor.slash-menu.items.accordion.title" | "material.rich-text-editor.slash-menu.items.accordion.description" | "material.rich-text-editor.slash-menu.items.action-card.title" | "material.rich-text-editor.slash-menu.items.action-card.description" | "material.rich-text-editor.slash-menu.items.checkbox-group.title" | "material.rich-text-editor.slash-menu.items.checkbox-group.description" | "material.rich-text-editor.slash-menu.items.radio-group.title" | "material.rich-text-editor.slash-menu.items.radio-group.description" | "material.rich-text-editor.slash-menu.items.paragraph.title" | "material.rich-text-editor.slash-menu.items.paragraph.description" | "material.rich-text-editor.slash-menu.items.heading-1.title" | "material.rich-text-editor.slash-menu.items.heading-1.description" | "material.rich-text-editor.slash-menu.items.heading-2.title" | "material.rich-text-editor.slash-menu.items.heading-2.description" | "material.rich-text-editor.slash-menu.items.heading-3.title" | "material.rich-text-editor.slash-menu.items.heading-3.description" | "material.rich-text-editor.slash-menu.items.callout.title" | "material.rich-text-editor.slash-menu.items.callout.description" | "material.rich-text-editor.slash-menu.items.select-chip.title" | "material.rich-text-editor.slash-menu.items.select-chip.description" | "material.rich-text-editor.slash-menu.items.select-card.title" | "material.rich-text-editor.slash-menu.items.select-card.description" | "material.rich-text-editor.slash-menu.groups.basic" | "material.rich-text-editor.slash-menu.groups.insert" | "material.kanban.search" | "material.kanban.drag" | "material.kanban.card-title" | "material.kanban.empty" | "material.kanban.no-results" | "material.kanban.add-card" | "material.kanban.wip" | "material.kanban.drag-column" | "material.kanban.ungrouped" | "material.kanban.collapse-group" | "material.kanban.expand-group" | "material.kanban.collapse-column" | "material.kanban.expand-column" | "material.kanban.new-card" | "material.kanban.subtitle" | "material.kanban.wip-full" | "material.doc.menu" | "material.doc.search" | "material.doc.filter" | "material.doc.next" | "material.doc.previous" | "material.doc.breadcrumb" | "material.doc.see-also" | "material.doc.expand" | "material.doc.collapse" | "material.doc.on-this-page" | "material.doc.edit" | "material.doc.no-results" | "material.doc.search-placeholder" | "material.doc.filter-empty" | "material.doc.search-navigate" | "material.doc.search-select" | "material.doc.search-close" | "material.doc.skip-to-content" | "material.doc.reading-progress" | "material.doc.menu-description" | "material.doc.copy-link" | "material.doc.copied-link" | "material.doc.copy-page" | "material.doc.copy-markdown" | "material.doc.last-updated" | "material.doc.callout.note" | "material.doc.callout.success" | "material.doc.callout.tip" | "material.doc.callout.info" | "material.doc.callout.warning" | "material.doc.callout.danger" | "material.param-table.description" | "material.param-table.name" | "material.param-table.type" | "material.param-table.required" | "material.param-table.default" | "material.calendar.selected" | "material.calendar.today" | "material.calendar.previous-year" | "material.calendar.previous-month" | "material.calendar.next-month" | "material.calendar.next-year" | "material.calendar.previous-years" | "material.calendar.next-years" | "material.calendar.choose-year" | "material.calendar.back-to-days" | "material.spinner.loading" | "material.scroll-to-top.label" | "material.sidebar.toggle" | "material.print.page" | "material.print.page-of" | "material.print.table.total" | "material.print.table.empty" | "material.circular-progress.label" | "material.pane-layout.sheet-title" | "material.time-picker.hours" | "material.time-picker.minutes" | "material.time-picker.am" | "material.time-picker.pm" | "material.date-range-field.presets" | "material.date-range-field.start-time" | "material.date-range-field.end-time" | "material.date-range-field.preset.today" | "material.date-range-field.preset.yesterday" | "material.date-range-field.preset.last-7-days" | "material.date-range-field.preset.last-30-days" | "material.date-range-field.preset.this-month" | "material.date-range-field.preset.last-month" | "material.date-range-field.preset.this-year" | "material.file-preview.label" | "material.file-preview.content" | "material.file-preview.error" | "material.file-preview.loading" | "material.file-preview.download" | "material.file-preview.untitled" | "material.file-preview.truncated" | "material.enrolment-secret.manual" | "material.enrolment-secret.copy" | "material.enrolment-secret.copied" | "material.enrolment-secret.qr-label" | "material.enrolment-secret.open-app" | "material.enrolment-secret.secret-label" | "material.recovery-codes.title" | "material.recovery-codes.done" | "material.recovery-codes.list" | "material.recovery-codes.copy" | "material.recovery-codes.print" | "material.recovery-codes.copied" | "material.recovery-codes.saved" | "material.recovery-codes.download" | "material.recovery-codes.warning" | "material.recovery-codes.copy-failed" | "material.recovery-codes.saved-required">;
|