@aws-amplify/ui
Version:
`@aws-amplify/ui` contains low-level logic & styles for stand-alone usage or re-use in framework-specific implementations.
1,371 lines (1,352 loc) • 398 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var utils = require('@aws-amplify/core/internals/utils');
var utils$1 = require('aws-amplify/utils');
var auth = require('aws-amplify/auth');
var awsAmplify = require('aws-amplify');
var xstate = require('xstate');
var pickBy = require('lodash/pickBy.js');
var merge = require('lodash/merge.js');
var kebabCase = require('lodash/kebabCase.js');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var pickBy__default = /*#__PURE__*/_interopDefault(pickBy);
var merge__default = /*#__PURE__*/_interopDefault(merge);
var kebabCase__default = /*#__PURE__*/_interopDefault(kebabCase);
/**
* This file contains helpers that lets you easily access current actor's state
* and context.
*/
/**
* Get the state of current actor. This is useful for checking which screen
* to render: e.g. `getActorState(state).matches('confirmSignUp.edit').
*/
const getActorState = (state) => {
return state.context.actorRef?.getSnapshot();
};
/**
* Get the context of current actor. Useful for getting any nested context
* like remoteError.
*/
const getActorContext$1 = (state) => {
return getActorState(state)?.context;
};
const AI_INPUT_BASE = {
category: utils.Category.AI,
apis: [
utils.AiAction.CreateConversation,
utils.AiAction.DeleteConversation,
utils.AiAction.ListConversations,
utils.AiAction.UpdateConversation,
utils.AiAction.OnMessage,
utils.AiAction.SendMessage,
utils.AiAction.Generation,
],
};
const ACCOUNT_SETTINGS_INPUT_BASE = {
apis: [utils.AuthAction.DeleteUser, utils.AuthAction.UpdatePassword],
category: utils.Category.Auth,
};
const AUTHENTICATOR_INPUT_BASE = {
apis: [
utils.AuthAction.SignUp,
utils.AuthAction.ConfirmSignUp,
utils.AuthAction.ResendSignUpCode,
utils.AuthAction.SignIn,
utils.AuthAction.ConfirmSignIn,
utils.AuthAction.FetchUserAttributes,
utils.AuthAction.SignOut,
utils.AuthAction.ResetPassword,
utils.AuthAction.ConfirmResetPassword,
utils.AuthAction.SignInWithRedirect,
],
category: utils.Category.Auth,
};
const FILE_UPLOADER_BASE_INPUT = {
apis: [utils.StorageAction.UploadData],
category: utils.Category.Storage,
};
const IN_APP_MESSAGING_INPUT_BASE = {
apis: [utils.InAppMessagingAction.NotifyMessageInteraction],
category: utils.Category.InAppMessaging,
};
const LOCATION_SEARCH_INPUT_BASE = {
category: utils.Category.Geo,
apis: [
utils.GeoAction.SearchByText,
utils.GeoAction.SearchForSuggestions,
utils.GeoAction.SearchByPlaceId,
],
};
const MAP_VIEW_INPUT_BASE = {
category: utils.Category.Geo,
apis: [],
};
const STORAGE_MANAGER_INPUT_BASE = {
apis: [utils.StorageAction.UploadData],
category: utils.Category.Storage,
};
const STORAGE_BROWSER_INPUT_BASE = {
apis: [
utils.StorageAction.UploadData,
utils.StorageAction.Copy,
utils.StorageAction.GetUrl,
utils.StorageAction.List,
utils.StorageAction.Remove,
utils.StorageAction.GetDataAccess,
utils.StorageAction.ListCallerAccessGrants,
],
category: utils.Category.Storage,
};
/**
* @deprecated - will be removed in a future major version
*
* Some libraries may not follow Node ES module spec and could be loaded as CommonJS modules,
* To ensure the interoperability between ESM and CJS, modules from those libraries have to be loaded via namespace import
* And sanitized by the function below because unlike ESM namespace, CJS namespace set `module.exports` object on the `default` key
* https://nodejs.org/api/esm.html#interoperability-with-commonjs
*/
const sanitizeNamespaceImport = (namespaceModule) => {
const sanitizedNamespaceModule = { default: undefined, ...namespaceModule };
return sanitizedNamespaceModule.default ?? sanitizedNamespaceModule;
};
/**
* Checks if `value` is an Object (non-primitive, non-array, non-function)
* Will return false for Arrays and functions
*
*
* @param {unknown} value The value to check
* @returns {boolean} Returns `true` if `value` is an object, `false` otherwise
*/
function isObject(value) {
return value != null && !Array.isArray(value) && typeof value === 'object';
}
/**
* Checks if `value` is a string primitive or object
*
* @param {unknown} value The value to check
* @returns {boolean} Returns `true` if `value` is a string, `false` otherwise
*/
function isString(value) {
return (typeof value === 'string' ||
(typeof value === 'object' &&
Object.prototype.toString.call(value) === '[object String]'));
}
/**
* Checks if `value` is a Map
*
* @param {unknown} value The value to check
* @returns {boolean} Returns `true` if `value` is a Map, `false` otherwise
*/
function isMap(value) {
return (isObject(value) && Object.prototype.toString.call(value) === '[object Map]');
}
/**
* Checks if `value` is a Set
*
* @param {unknown} value The value to check
* @returns {boolean} Returns `true` if `value` is a Set, `false` otherwise
*/
function isSet(value) {
return (isObject(value) && Object.prototype.toString.call(value) === '[object Set]');
}
/**
* Checks if `value` is undefined
*
* @param {unknown} value The value to check
* @returns {boolean} Returns `true` if `value` is undefined, `false` otherwise
*/
function isUndefined(value) {
return value === undefined;
}
/**
* Checks if `value` is nullish
*
* @param {unknown} value The value to check
* @returns {boolean} Returns `true` if `value` is nullish, `false` otherwise
*/
function isNil(value) {
return value == null;
}
/**
* Checks if `value` is empty
*
* @param {unknown} value The value to check
* @returns {boolean} Returns `true` if `value` is empty, `false` otherwise
*/
function isEmpty(value) {
if (value === null || value === undefined)
return true;
if (isObject(value) && (isMap(value) || isSet(value))) {
return !value.size;
}
if (isObject(value) && (isString(value) || Array.isArray(value))) {
return !value.length;
}
for (const key in value) {
if (has(value, key)) {
return false;
}
}
return true;
}
/**
* Checks if `value` is an empty array
*
* @param {unknown} value The value to check
* @returns {boolean} Returns `true` if `value` is a empty, `false` otherwise
*/
function isEmptyArray(value) {
return Array.isArray(value) && isEmpty(value);
}
/**
* Checks if all members of the `values` param are empty arrays
*
* @param {unknown} value The values to check
* @returns {boolean} Returns `true` if all members of `values` are empty, `false` otherwise
*/
function areEmptyArrays(...values) {
return values.every(isEmptyArray);
}
/**
* Checks if `value` is an empty object
*
* @param {unknown} value The value to check
* @returns {boolean} Returns `true` if `value` is empty, `false` otherwise
*/
function isEmptyObject(value) {
return isObject(value) && isEmpty(value);
}
/**
* Checks if all members of the `values` param are empty objects
*
* @param {unknown} values The values to check
* @returns {boolean} Returns `true` if all members of the `values` param are empty, `false` otherwise
*/
function areEmptyObjects(...values) {
return values.every(isEmptyObject);
}
/**
* Capitalizes `value` and its return type
*
* @param {string} value string to capitalize
* @returns {string} capitalized string
*/
function capitalize(value) {
return (isString(value) ? value.charAt(0).toUpperCase() + value.slice(1) : '');
}
/**
* Checks if `key` is a direct property of `value`
*
* @param {unknown} value `object` potentially containing property
* @param {string} key property key
* @returns whether `key` param is a property of the `obj` param
*/
function has(value, key) {
return value != null && Object.prototype.hasOwnProperty.call(value, key);
}
/**
* Checks if `value` is a function
*
* @param {unknown} value param to check
* @returns {boolean} whether `value` is a function
*/
function isFunction(value) {
return typeof value === 'function';
}
/**
* This helper function creates modifier class names that are used for our flat BEM styling
* it takes in a base and modifier and returns the modified class if a modifier was passed in and null otherwise
* @param base The base class of the output
* @param modifier The modifier to add onto the base
* @returns the modified class name or empty string
*/
const classNameModifier = (base, modifier) => {
return modifier ? `${base}--${modifier}` : '';
};
/**
* This helper function creates modified class names that are used for our flat BEM styling
* it takes in a base, modifier, and flag and returns the modified class name if the flag is true and null if the flag is false
* @param base
* @param modifier
* @param flag
* @returns the modified class name or empty string
*/
const classNameModifierByFlag = (base, modifier, flag) => {
return flag ? `${base}--${modifier}` : '';
};
/**
* Similar to `Array.join`, with an optional callback/template param
* for formatting returned string values
*
* @param {string[]} values string array
* @param {(value: string) => string} template callback format param
* @returns formatted string array
*/
function templateJoin(values, template) {
return values.reduce((acc, curr, index) => `${acc}${isString(curr) ? template(curr, index, values) : ''}`, '');
}
/**
* A function that does nothing
*
* @param {any[]} _ accepts any parameters
* @returns nothing
*/
function noop(..._) {
return;
}
/**
* @param {string} groupName name of group
* @param events string values related to group
*/
function groupLog(groupName, ...events) {
const hasEvents = !!events?.length;
if (hasEvents) {
// eslint-disable-next-line no-console
console.groupCollapsed(groupName);
events?.forEach((event) => {
// eslint-disable-next-line no-console
console.log(event);
});
// eslint-disable-next-line no-console
console.groupEnd();
}
else {
// eslint-disable-next-line no-console
console.log(groupName);
}
}
/**
* Splits an object into 2 objects based on a predicate
*
* @param {object} obj an object to split into two
* @param {function} predicate function to determin where an element should go
* @returns
*/
function splitObject(obj, predicate) {
const left = {};
const right = {};
Object.entries(obj).forEach(([key, value]) => {
if (predicate(key)) {
left[key] = value;
}
else {
right[key] = value;
}
});
return [left, right];
}
const cloneDeep = (obj) => {
if (obj === null || obj === undefined || typeof obj !== 'object') {
return obj;
}
if (obj instanceof Array) {
return obj.reduce((arr, item, i) => {
arr[i] = cloneDeep(item);
return arr;
}, []);
}
if (obj instanceof Object) {
return Object.keys(obj || {}).reduce((cpObj, key) => {
cpObj[key] = cloneDeep(obj[key]);
return cpObj;
}, {});
}
};
/**
* @example
* ```ts
* // set user agent options
* const clear = setUserAgent(input);
*
* // clear user agent options
* clear();
* ```
*/
const setUserAgent = ({ componentName, packageName, version, }) => {
const packageData = [`ui-${packageName}`, version];
switch (componentName) {
case 'AIConversation': {
utils.setCustomUserAgent({
...AI_INPUT_BASE,
additionalDetails: [[componentName], packageData],
});
break;
}
case 'Authenticator': {
utils.setCustomUserAgent({
...AUTHENTICATOR_INPUT_BASE,
additionalDetails: [[componentName], packageData],
});
break;
}
case 'ChangePassword':
case 'DeleteUser': {
utils.setCustomUserAgent({
...ACCOUNT_SETTINGS_INPUT_BASE,
additionalDetails: [['AccountSettings'], packageData],
});
break;
}
case 'FileUploader': {
utils.setCustomUserAgent({
...FILE_UPLOADER_BASE_INPUT,
additionalDetails: [[componentName], packageData],
});
break;
}
case 'InAppMessaging': {
utils.setCustomUserAgent({
...IN_APP_MESSAGING_INPUT_BASE,
additionalDetails: [[componentName], packageData],
});
break;
}
case 'LocationSearch': {
utils.setCustomUserAgent({
...LOCATION_SEARCH_INPUT_BASE,
additionalDetails: [[componentName], packageData],
});
break;
}
case 'MapView': {
utils.setCustomUserAgent({
...MAP_VIEW_INPUT_BASE,
additionalDetails: [[componentName], packageData],
});
break;
}
case 'StorageManager': {
utils.setCustomUserAgent({
...STORAGE_MANAGER_INPUT_BASE,
additionalDetails: [[componentName], packageData],
});
break;
}
case 'StorageBrowser': {
utils.setCustomUserAgent({
...STORAGE_BROWSER_INPUT_BASE,
additionalDetails: [[componentName], packageData],
});
break;
}
}
return noop;
};
const classNames = (...args) => {
const classes = [];
for (const arg of args) {
// skip falsey values
if (!arg) {
continue;
}
if (isString(arg)) {
classes.push(arg);
continue;
}
if (typeof arg === 'number') {
classes.push(arg.toString());
continue;
}
if (Array.isArray(arg)) {
classes.push(classNames(...arg));
continue;
}
if (isObject(arg)) {
// check if the object has a valid .toString() method
if (arg.toString !== Object.prototype.toString &&
arg.toString() !== '[object Object]') {
classes.push(arg.toString());
continue;
}
for (const key in arg) {
if (has(arg, key) && arg[key]) {
classes.push(key);
}
}
}
}
return classes.join(' ');
};
/**
* Format bytes as human-readable text.
*
* @param bytes Number of bytes.
* @param si True to use metric (SI) units, aka powers of 1000. False to use
* binary (IEC), aka powers of 1024.
* @param dp Number of decimal places to display.
*
* @return Formatted string.
*/
function humanFileSize(bytes, si = false, dp = 1) {
const thresh = si ? 1000 : 1024;
if (Math.abs(bytes) < thresh) {
return `${bytes} B`;
}
const units = si
? ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
: ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];
let unit = -1;
const range = 10 ** dp;
do {
bytes /= thresh;
++unit;
} while (Math.round(Math.abs(bytes) * range) / range >= thresh &&
unit < units.length - 1);
return bytes.toFixed(dp) + ' ' + units[unit];
}
const OPTIONS = {
separator: '.',
};
const REFERENCE_REGEX = /\{([^}]+)\}/g;
/**
* Checks if the value uses a value reference.
* @param {string} value
* @returns {boolean} - True, if the value uses a value reference
*/
function usesReference(value) {
const regex = new RegExp(REFERENCE_REGEX);
if (typeof value === 'string') {
return regex.test(value);
}
if (typeof value === 'object') {
let hasReference = false;
// iterate over each property in the object,
// if any element passes the regex test,
// the whole thing should be true
for (const key in value) {
if (has(value, key)) {
const element = value[key];
let reference = usesReference(element);
if (reference) {
hasReference = true;
break;
}
}
}
return hasReference;
}
return false;
}
function resolveReference(path, obj) {
let ref = obj;
if (!Array.isArray(path)) {
return;
}
for (let i = 0; i < path.length; i++) {
// Check for undefined as 0 is a valid, truthy value
if (typeof ref[path[i]] !== 'undefined') {
ref = ref[path[i]];
}
else {
// set the reference as undefined if we don't find anything
ref = undefined;
break;
}
}
return ref;
}
/**
* Returns the path from a path name be splitting the name by a given separator.
*/
function getPathFromName(pathName) {
if (typeof pathName !== 'string') {
throw new Error('Getting path from name failed. Name must be a string');
}
return pathName.split(OPTIONS.separator);
}
/**
* Returns the paths name be joining its parts with a given separator.
*/
function getName(path) {
if (!path || !(path instanceof Array)) {
throw new Error('Getting name for path failed. Path must be an array');
}
return path.join(OPTIONS.separator);
}
/**
* Handles Amplify JS Auth hub events, by forwarding hub events as appropriate
* xstate events.
*/
const defaultAuthHubHandler = ({ payload }, service, options) => {
const { data, event } = payload;
const { send } = service;
const { onSignIn, onSignOut } = options ?? {};
switch (event) {
case 'signedIn': {
if (isFunction(onSignIn)) {
onSignIn(payload);
}
break;
}
case 'signInWithRedirect': {
send('SIGN_IN_WITH_REDIRECT');
break;
}
case 'signedOut': {
if (isFunction(onSignOut)) {
onSignOut();
}
send('SIGN_OUT');
break;
}
case 'tokenRefresh_failure': {
if (data?.error?.name === utils.AmplifyErrorCode.NetworkError) {
return;
}
send('SIGN_OUT');
break;
}
}
};
/**
* Listens to external auth Hub events and sends corresponding event to
* the `service.send` of interest
*
* @param service - contains state machine `send` function
* @param handler - auth event handler
* @returns function that unsubscribes to the hub evenmt
*/
const listenToAuthHub = (service, handler = defaultAuthHubHandler) => {
const eventHandler = (data) => handler(data, service);
return utils$1.Hub.listen('auth', eventHandler, 'authenticator-hub-handler');
};
const countryDialCodes = [
'+1',
'+7',
'+20',
'+27',
'+30',
'+31',
'+32',
'+33',
'+34',
'+36',
'+39',
'+40',
'+41',
'+43',
'+44',
'+45',
'+46',
'+47',
'+48',
'+49',
'+51',
'+52',
'+53',
'+54',
'+55',
'+56',
'+57',
'+58',
'+60',
'+61',
'+62',
'+63',
'+64',
'+65',
'+66',
'+81',
'+82',
'+84',
'+86',
'+90',
'+91',
'+92',
'+93',
'+94',
'+95',
'+98',
'+212',
'+213',
'+216',
'+218',
'+220',
'+221',
'+222',
'+223',
'+224',
'+225',
'+226',
'+227',
'+228',
'+229',
'+230',
'+231',
'+232',
'+233',
'+234',
'+235',
'+236',
'+237',
'+238',
'+239',
'+240',
'+241',
'+242',
'+243',
'+244',
'+245',
'+246',
'+248',
'+249',
'+250',
'+251',
'+252',
'+253',
'+254',
'+255',
'+256',
'+257',
'+258',
'+260',
'+261',
'+262',
'+263',
'+264',
'+265',
'+266',
'+267',
'+268',
'+269',
'+290',
'+291',
'+297',
'+298',
'+299',
'+345',
'+350',
'+351',
'+352',
'+353',
'+354',
'+355',
'+356',
'+357',
'+358',
'+359',
'+370',
'+371',
'+372',
'+373',
'+374',
'+375',
'+376',
'+377',
'+378',
'+379',
'+380',
'+381',
'+382',
'+385',
'+386',
'+387',
'+389',
'+420',
'+421',
'+423',
'+500',
'+501',
'+502',
'+503',
'+504',
'+505',
'+506',
'+507',
'+508',
'+509',
'+537',
'+590',
'+591',
'+593',
'+594',
'+595',
'+596',
'+597',
'+598',
'+599',
'+670',
'+672',
'+673',
'+674',
'+675',
'+676',
'+677',
'+678',
'+679',
'+680',
'+681',
'+682',
'+683',
'+685',
'+686',
'+687',
'+688',
'+689',
'+690',
'+691',
'+692',
'+850',
'+852',
'+853',
'+855',
'+856',
'+872',
'+880',
'+886',
'+960',
'+961',
'+962',
'+963',
'+964',
'+965',
'+966',
'+967',
'+968',
'+970',
'+971',
'+972',
'+973',
'+974',
'+975',
'+976',
'+977',
'+992',
'+993',
'+994',
'+995',
'+996',
'+998',
];
const deDict$1 = {
'Account recovery requires verified contact information': 'Zurücksetzen des Accounts benötigt einen verifizierten Account',
'Add your Profile': 'Ihr Profil hinzufügen',
'Add your Website': 'Ihre Website hinzufügen',
'Authenticator App (TOTP)': 'Authentifikator-App (TOTP)',
'Back to Sign In': 'Zurück zur Anmeldung',
'Change Password': 'Passwort ändern',
Changing: 'Ändern von',
Code: 'Code',
'Confirm Email Code': 'E-Mail-Code bestätigen',
'Confirm Password': 'Passwort bestätigen',
'Please confirm your Password': 'Bitte bestätigen Sie Ihr Passwort',
'Confirm Sign Up': 'Registrierung bestätigen',
'Confirm SMS Code': 'SMS-Code bestätigen',
'Confirm TOTP Code': 'TOTP-Code bestätigen',
Confirm: 'Bestätigen',
'Confirmation Code': 'Bestätigungs-Code',
Confirming: 'Wird bestätigt',
'Create a new account': 'Einen neuen Account erstellen',
'Create Account': 'Account erstellen',
'Creating Account': 'Account wird erstellt',
'Dismiss alert': 'Warnung verwerfen',
Email: 'E-Mail',
'Email Message': 'E-Mail-Nachricht',
'Enter your Birthdate': 'Geben Sie Ihr Geburtsdatum ein',
'Enter your code': 'Geben Sie Ihren Code ein',
'Enter your Confirmation Code': 'Geben Sie Ihren Bestätigungs-Code ein',
'Enter your Email': 'Geben Sie Ihre E-Mail ein',
'Enter your Family Name': 'Geben Sie Ihren Nachnamen ein',
'Enter your Given Name': 'Geben Sie Ihren Vornamen ein',
'Enter your Middle Name': 'Geben Sie Ihren zweiten Vornamen ein',
'Enter your Name': 'Geben Sie Ihren Namen ein',
'Enter your Nickname': 'Geben Sie Ihren Spitznamen ein',
'Enter your Password': 'Geben Sie Ihr Passwort ein',
'Enter your password': 'Geben Sie Ihr Passwort ein',
'Enter your email': 'Geben Sie Ihre E-Mail ein',
'Enter your phone number': 'Geben Sie Ihre Telefonnummer ein',
'Enter your Preferred Username': 'Geben Sie Ihren bevorzugten Benutzernamen ein',
'Enter your username': 'Geben Sie Ihren Benutzernamen ein',
'Forgot password?': 'Passwort vergessen?',
'Forgot your password?': 'Passwort vergessen? ',
'Hide password': 'Passwort verbergen',
'It may take a minute to arrive': 'Es kann eine Minute dauern, bis er ankommt',
Loading: 'Wird geladen',
'Multi-Factor Authentication': 'Multifaktor-Authentifizierung',
'Multi-Factor Authentication Setup': 'Einrichtung der Multifaktor-Authentifizierung',
'New password': 'Neues Passwort',
or: 'oder',
Password: 'Passwort',
'Phone Number': 'Telefonnummer',
'Resend Code': 'Code erneut senden',
'Reset your Password': 'Zurücksetzen des Passworts',
'Reset your password': 'Zurücksetzen des passworts',
'Select MFA Type': 'MFA-Typ auswählen',
'Send code': 'Code senden',
'Send Code': 'Code senden',
Sending: 'Wird gesendet',
'Setup Email': 'E-Mail einrichten',
'Setup TOTP': 'TOTP einrichten',
'Show password': 'Passwort anzeigen',
'Sign in to your account': 'Melden Sie sich mit Ihrem Account an',
'Sign In with Amazon': 'Mit Amazon anmelden',
'Sign In with Apple': 'Mit Apple anmelden',
'Sign In with Facebook': 'Mit Facebook anmelden',
'Sign In with Google': 'Mit Google anmelden',
'Sign in': 'Anmelden',
'Sign In': 'Anmelden',
'Signing in': 'Wird angemeldet',
Skip: 'Überspringen',
Submit: 'Abschicken',
Submitting: 'Wird gesendet',
'Text Message (SMS)': 'Textnachricht (SMS)',
Username: 'Benutzername',
'Verify Contact': 'Kontakt verifizieren',
Verify: 'Verifizieren',
'We Emailed You': 'E-Mail wurde versendet',
'We Sent A Code': 'Wir haben einen Code gesendet',
'We Texted You': 'Wir haben Ihnen eine SMS gesendet',
'Your code is on the way. To log in, enter the code we emailed to': 'Ihr Bestätigungscode ist unterwegs. Um sich einzuloggen geben Sie den Code ein, den wir per E-Mail verschickt haben',
'Your code is on the way. To log in, enter the code we sent you': 'Ihr Code ist unterwegs. Um sich anzumelden, geben Sie den Code ein, den wir Ihnen gesendet haben',
'Your code is on the way. To log in, enter the code we texted to': 'Ihr Bestätigungscode ist unterwegs. Um sich einzuloggen geben Sie den Code ein, den wir per SMS verschickt haben',
// Additional translations provided by customers
'An account with the given email already exists.': 'Ein Account mit dieser E-Mail existiert bereits.',
'Confirm a Code': 'Code bestätigen',
'Confirm Sign In': 'Anmeldung bestätigen',
'Create account': 'Hier registrieren',
'Sign Up with Facebook': 'Mit Facebook registrieren',
'Sign Up with Google': 'Mit Google registrieren',
'Forgot Password': 'Passwort vergessen',
'Have an account? ': 'Schon registriert? ',
'Incorrect username or password': 'Falscher Benutzername oder falsches Passwort',
'Incorrect username or password.': 'Falscher Benutzername oder falsches Passwort',
'Invalid password format': 'Ungültiges Passwort-Format',
'Invalid phone number format': `Ungültiges Telefonummern-Format. Benutze eine Nummer im Format: +12345678900`,
'It may take a minute to arrive.': 'Es könnte eine Minute dauern, bis der Code eintrifft.',
'Lost your code? ': 'Code verloren? ',
'New Password': 'Neues Passwort',
'No account? ': 'Kein Account? ',
'Password attempts exceeded': 'Die maximale Anzahl der fehlerhaften Anmeldeversuche wurde erreicht',
'Reset password': 'Passwort zurücksetzen',
'Reset Password': 'Passwort Zurücksetzen',
'Sign Out': 'Abmelden',
'Sign Up': 'Registrieren',
'User already exists': 'Dieser Benutzer existiert bereits',
'User does not exist': 'Dieser Benutzer existiert nicht',
'Username cannot be empty': 'Benutzername darf nicht leer sein',
};
const enDict$1 = {
'Account recovery requires verified contact information': 'Account recovery requires verified contact information',
'Add your Profile': 'Add your Profile',
'Add your Website': 'Add your Website',
'Authenticator App (TOTP)': 'Authenticator App (TOTP)',
'Back to Sign In': 'Back to Sign In',
'Change Password': 'Change Password',
Changing: 'Changing',
Code: 'Code',
'Confirm Email Code': 'Confirm Email Code',
'Confirm Password': 'Confirm Password',
'Confirm Sign Up': 'Confirm Sign Up',
'Confirm SMS Code': 'Confirm SMS Code',
'Confirm MFA Code': 'Confirm MFA Code',
'Confirm TOTP Code': 'Confirm TOTP Code',
Confirm: 'Confirm',
'Confirmation Code': 'Confirmation Code',
Confirming: 'Confirming',
'Create a new account': 'Create a new account',
'Create Account': 'Create Account',
'Creating Account': 'Creating Account',
'Dismiss alert': 'Dismiss alert',
Email: 'Email',
'Email Message': 'Email Message',
'Enter your Birthdate': 'Enter your Birthdate',
'Enter your code': 'Enter your code',
'Enter your Confirmation Code': 'Enter your Confirmation Code',
'Enter your Email': 'Enter your Email',
'Enter your Family Name': 'Enter your Family Name',
'Enter your Given Name': 'Enter your Given Name',
'Enter your Middle Name': 'Enter your Middle Name',
'Enter your Name': 'Enter your Name',
'Enter your Nickname': 'Enter your Nickname',
'Enter your Password': 'Enter your Password',
'Enter your phone number': 'Enter your phone number',
'Enter your Preferred Username': 'Enter your Preferred Username',
'Enter your username': 'Enter your username',
'Forgot password?': 'Forgot password?',
'Forgot your password?': 'Forgot your password?',
'Hide password': 'Hide password',
'It may take a minute to arrive': 'It may take a minute to arrive',
Loading: 'Loading',
'Multi-Factor Authentication': 'Multi-Factor Authentication',
'Multi-Factor Authentication Setup': 'Multi-Factor Authentication Setup',
'New password': 'New password',
or: 'or',
Password: 'Password',
'Phone Number': 'Phone Number',
'Please confirm your Password': 'Please confirm your Password',
'Resend Code': 'Resend Code',
'Reset your password': 'Reset your password',
'Reset your Password': 'Reset your Password',
'Select MFA Type': 'Select MFA Type',
'Send code': 'Send code',
'Send Code': 'Send Code',
Sending: 'Sending',
'Setup Email': 'Setup Email',
'Setup TOTP': 'Setup TOTP',
'Show password': 'Show password',
'Sign in to your account': 'Sign in to your account',
'Sign In with Amazon': 'Sign In with Amazon',
'Sign In with Apple': 'Sign In with Apple',
'Sign In with Facebook': 'Sign In with Facebook',
'Sign In with Google': 'Sign In with Google',
'Sign in': 'Sign in',
'Sign In': 'Sign In',
'Signing in': 'Signing in',
Skip: 'Skip',
Submit: 'Submit',
Submitting: 'Submitting',
'Text Message (SMS)': 'Text Message (SMS)',
Username: 'Username',
'Verify Contact': 'Verify Contact',
Verify: 'Verify',
'We Emailed You': 'We Emailed You',
'We Sent A Code': 'We Sent A Code',
'We Texted You': 'We Texted You',
'Your code is on the way. To log in, enter the code we emailed to': 'Your code is on the way. To log in, enter the code we emailed to',
'Your code is on the way. To log in, enter the code we sent you': 'Your code is on the way. To log in, enter the code we sent you',
'Your code is on the way. To log in, enter the code we texted to': 'Your code is on the way. To log in, enter the code we texted to',
};
const esDict$1 = {
'Account recovery requires verified contact information': 'La recuperación de la cuenta requiere información de contacto verificada',
'Authenticator App (TOTP)': 'Aplicación de autenticación (TOTP)',
'Back to Sign In': 'Volver a inicio de sesión',
'Cannot reset password for the user as there is no registered/verified email or phone_number': 'No se puede restablecer la contraseña para el usuario debido a que no hay Email registrado / verificado o número de teléfono',
'Change Password': 'Cambiar contraseña',
Changing: 'Cambiando',
Code: 'Código',
'Code *': 'Código *',
'Confirm Email Code': 'Confirmar el código de correo electrónico',
'Confirm Password': 'Confirmar contraseña',
'Confirm Sign Up': 'Confirmar registro',
'Confirm SMS Code': 'Confirmar el código de SMS',
'Confirm TOTP Code': 'Confirmar código TOTP',
Confirm: 'Confirmar',
'Confirmation Code': 'Código de confirmación',
Confirming: 'Confirmando',
'Create a new account': 'Crear una cuenta nueva',
'Create Account': 'Crear cuenta',
'Creating Account': 'Creando cuenta',
'Dismiss alert': 'Descartar alerta',
Email: 'Email',
'Email Message': 'Mensaje de correo electrónico',
'Enter your code': 'Ingrese el código',
'Enter your Email': 'Escriba su Email',
'Enter your email': 'Escriba su email',
'Enter your Password': 'Escriba su Contraseña',
'Enter your phone number': 'Ingrese el número de teléfono',
'Enter your username': 'Ingrese el nombre de usuario',
'Forgot your password?': '¿Olvidó su contraseña?',
'Hide password': 'Ocultar contraseña',
'It may take a minute to arrive': 'Es posible que tarde un minuto en llegar',
Loading: 'Cargando',
'Multi-Factor Authentication': 'Autenticación multifactor',
'Multi-Factor Authentication Setup': 'Configuración de autenticación multifactor',
'New password': 'Nueva contraseña',
or: 'o',
Password: 'Contraseña',
'Phone Number': 'Número de teléfono',
'Resend Code': 'Reenviar código',
'Reset your password': 'Restablecer su contraseña',
'Reset your Password': 'Restablecer su Contraseña',
'Select MFA Type': 'Seleccionar el tipo de MFA',
'Send code': 'Enviar código',
'Send Code': 'Enviar código',
Sending: 'Enviando',
'Setup Email': 'Configurar correo electrónico',
'Setup TOTP': 'Configurar TOTP',
'Show password': 'Mostrar contraseña',
'Sign in to your account': 'Iniciar sesión en tu cuenta',
'Sign In with Amazon': 'Iniciar Sesión con Amazon',
'Sign In with Apple': 'Iniciar Sesión con Apple',
'Sign In with Facebook': 'Iniciar Sesión con Facebook',
'Sign In with Google': 'Iniciar Sesión con Google',
'Sign in': 'Iniciar sesión',
'Sign In': 'Iniciar Sesión',
'Signing in': 'Iniciando sesión',
Skip: 'Omitir',
Submit: 'Enviar',
Submitting: 'Enviando',
'Text Message (SMS)': 'Mensaje de texto (SMS)',
Username: 'Nombre de usuario',
'Verify Contact': 'Verificar contacto',
Verify: 'Verificar',
'We Emailed You': 'Le hemos enviado un correo electrónico',
'We Sent A Code': 'Hemos enviado un código',
'We Texted You': 'Le hemos enviado un mensaje de texto',
'Your code is on the way. To log in, enter the code we emailed to': 'El código está en camino. Para iniciar sesión, escriba el código que hemos enviado por correo electrónico a',
'Your code is on the way. To log in, enter the code we sent you': 'El código está en camino. Para iniciar sesión, escriba el código que le hemos enviado',
'Your code is on the way. To log in, enter the code we texted to': 'El código está en camino. Para iniciar sesión, escriba el código que hemos enviado por mensaje de texto a',
// Additional translations provided by customers
'An account with the given email already exists.': 'Ya existe una cuenta con el correo ingresado.',
'Confirm a Code': 'Confirmar un código',
'Confirm Sign In': 'Confirmar inicio de sesión',
'Forgot Password': 'Olvidé mi contraseña',
'Incorrect username or password.': 'Nombre de usuario o contraseña incorrecta',
'Enter your Family Name': 'Escriba su apellido',
'Enter your Given Name': 'Escriba su nombre',
'Given Name': 'Nombre',
'Family Name': 'Apellido',
'Reset Password': 'Restablecer contraseña',
'Please confirm your Password': 'Confirme su contraseña',
'Invalid password format': 'Formato de contraseña inválido',
'Invalid phone number format': 'Formato de número de teléfono inválido',
'Loading...': 'Cargando...',
'New Password': 'Nueva contraseña',
'Resend a Code': 'Reenviar un código',
'Sign Out': 'Cerrar sesión',
'Sign Up with Amazon': 'Crear cuenta con Amazon',
'Sign Up with Apple': 'Crear cuenta con Apple',
'Sign Up with Facebook': 'Crear cuenta con Facebook',
'Sign Up with Google': 'Crear cuenta con Google',
'Sign Up': 'Crear cuenta',
'User already exists': 'El usuario ya existe',
'User does not exist': 'El usuario no existe',
'Username/client id combination not found.': 'El usuario no existe',
'Username cannot be empty': 'El nombre de usuario no puede estar vacío',
'Your passwords must match': 'Las contraseñas deben coincidir',
'Password must have at least 8 characters': 'La contraseña debe tener al menos 8 caracteres',
'Password must have upper case letters': 'La contraseña debe tener al menos un carácter en mayúscula',
'Password must have numbers': 'La contraseña debe tener al menos un carácter numérico',
'Password must have special characters': 'La contraseña debe tener al menos un símbolo',
'Password must have lower case letters': 'La contraseña debe tener al menos un carácter en minúsculas',
'Invalid verification code provided, please try again.': 'Código de verificación no válido, inténtelo de nuevo.',
'Attempt limit exceeded, please try after some time.': 'Número máximo de intentos excedido, por favor inténtelo de nuevo más tarde.',
'A network error has occurred.': 'Se ha producido un error de red.',
};
const frDict$1 = {
'Account recovery requires verified contact information': 'La récupération du compte nécessite des informations de contact vérifiées',
'Authenticator App (TOTP)': 'Application d’authentification (TOTP)',
'Back to Sign In': 'Retour à la connexion',
'Cannot reset password for the user as there is no registered/verified email or phone_number': "Impossible de réinitialiser le mot de passe pour l'utilisateur car il n'a pas d'adresse e-mail ou de numéro de téléphone enregistré / vérifié",
'Change Password': 'Modifier le mot de passe',
Changing: 'Modification en cours',
Code: 'Code',
'Confirm Email Code': 'Confirmer le code e-mail',
'Confirm Password': 'Confirmez le mot de passe',
'Confirm Sign Up': "Confirmer l'inscription",
'Confirm SMS Code': 'Confirmer le code SMS',
'Confirm TOTP Code': 'Confirmer le code TOTP',
Confirm: 'Confirmer',
'Confirmation Code': 'Code de confirmation',
Confirming: 'Confirmation',
'Create a new account': 'Créer un nouveau compte',
'Create Account': 'Créer un compte',
'Creating Account': `Création d'un compte`,
'Dismiss alert': `Supprimer l'alerte`,
Email: 'Email',
'Email Message': 'Message de l’e-mail',
'Enter your code': 'Saisissez cotre code de confirmation',
'Enter your Email': 'Saisissez votre adresse e-mail',
'Enter your email': 'Saisissez votre adresse e-mail',
'Enter your phone number': 'Saisissez votre numéro de téléphone',
'Enter your username': "Saisissez votre nom d'utilisateur",
'Forgot your password?': 'Mot de passe oublié ? ',
'Hide password': 'Masquer le mot de passe',
'It may take a minute to arrive': 'Cela peut prendre une minute',
Loading: 'Chargement en cours',
'Multi-Factor Authentication': 'Authentification multifactorielle',
'Multi-Factor Authentication Setup': 'Configuration de l’authentification multifactorielle',
'New password': 'Nouveau mot de passe',
or: 'ou',
Password: 'Mot de passe',
'Phone Number': 'Numéro de téléphone',
'Resend Code': 'Renvoyer le code',
'Reset your Password': 'Réinitialiser votre mot de passe',
'Reset your password': 'Réinitialisez votre mot de passe',
'Select MFA Type': 'Sélectionner le type de MFA',
'Send code': 'Envoyer le code',
'Send Code': "M'envoyer un code",
Sending: 'Envoi en cours',
'Setup Email': 'E-mail de configuration',
'Setup TOTP': 'Configuration de TOTP',
'Show password': 'Afficher le mot de passe',
'Sign in to your account': 'Connexion à votre compte',
'Sign In with Amazon': 'Se connecter avec Amazon',
'Sign In with Apple': 'Se connecter avec Apple',
'Sign In with Facebook': 'Se connecter avec Facebook',
'Sign In with Google': 'Se connecter avec Google',
'Sign in': 'Se connecter',
'Sign In': 'Se connecter',
'Signing in': 'Connexion en cours',
Skip: 'Passer',
Submit: 'Soumettre',
Submitting: 'Envoi en cours',
'Text Message (SMS)': 'Message texte (SMS)',
Username: "Nom d'utilisateur",
'Verify Contact': 'Vérifier le contact',
Verify: 'Vérifier',
'We Sent A Code': 'Nous avons envoyé un code',
'We Texted You': 'Nous vous avons envoyé un SMS',
'Your code is on the way. To log in, enter the code we sent you': `Votre code est en cours d'envoi. Pour vous connecter, saisissez le code que nous vous avons envoyé`,
// Additional translations provided by customers
'Add your Profile': 'Ajoutez votre profil',
'Add your Website': 'Ajoutez votre site web',
'An account with the given email already exists.': 'Un utilisateur avec cette adresse email existe déjà.',
Birthdate: 'Date de naissance',
Change: 'Modifier',
'Confirm a Code': 'Confirmer un code',
'Confirm Sign In': 'Confirmer la connexion',
'Create account': 'Créer un compte',
'Enter your Birthdate': 'Saisissez votre date de naissance',
'Enter your Confirmation Code': 'Saisissez votre code de confirmation',
'Enter your Family Name': 'Saisissez votre nom de famille',
'Enter your Given Name': 'Saisissez votre prénom',
'Enter your Middle Name': 'Saisissez votre deuxième prénom',
'Enter your Name': 'Saisissez votre nom',
'Enter your Nickname': 'Saisissez votre surnom',
'Enter your Password': 'Saisissez votre mot de passe',
'Enter your Phone Number': 'Saisissez votre numéro de téléphone',
'Enter your Preferred Username': "Saisissez votre nom d'utilisateur",
'Enter your password': 'Saisissez votre mot de passe',
'Given Name': 'Prénom',
'Family Name': 'Nom de famille',
'Forgot Password': 'Mot de passe oublié',
'Forgot Password?': 'Mot de passe oublié ?',
'Incorrect username or password': 'Identifiant ou mot de passe incorrect',
'Incorrect username or password.': 'Identifiant ou mot de passe incorrect.',
'Have an account? ': 'Déjà un compte ? ',
Hello: 'Bonjour',
'Invalid password format': 'Format de mot de passe invalide',
'Invalid phone number format': `Format de numéro de téléphone invalide. Veuillez utiliser un format +12345678900`,
'Loading...': 'Chargement...',
'Lost your code? ': 'Vous avez perdu votre code ? ',
'Network error': 'Erreur réseau',
'New Password': 'Nouveau mot de passe',
Name: 'Nom',
'No account? ': 'Pas de compte ? ',
'Please confirm your Password': 'Confirmez votre mot de passe',
'Preferred Username': "Nom d'utilisateur préféré",
Profile: 'Profil',
'Resend a Code': 'Renvoyer un code',
'Reset password': 'Réinitialiser le mot de passe',
'Reset Password': 'Réinitialiser le mot de passe',
Send: 'Envoyer',
'Sign In with AWS': 'Se connecter avec AWS',
'Sign Out': 'Déconnexion',
'Sign Up': "S'inscrire",
SMS: 'SMS',
'User already exists': "L'utilisateur existe déjà",
'User does not exist': "L'utilisateur n'existe pas",
'Username cannot be empty': "Le nom d'utilisateur doit être renseigné",
'Username/client id combination not found.': "L'utilisateur n'existe pas",
'We Emailed You': 'Nous vous avons envoyé un code',
'Your code is on the way. To log in, enter the code we emailed to': 'Votre code est en route. Pour vous connecter entrez le code reçu sur cette adresse email',
'Your code is on the way. To log in, enter the code we texted to': 'Votre code est en route. Pour vous connecter entrez le code reçu sur ce numéro de téléphone',
'Your passwords must match': 'Vos mots de passe doivent être identiques',
'It may take a minute to arrive.': 'Cela peut prendre quelques minutes.',
Website: 'Site web',
'Password must have at least 8 characters': 'Le mot de passe doit comporter au moins 8 caractères',
'Password must have upper case letters': 'Le mot de passe doit comporter des caractères majuscules',
'Password must have numbers': 'Le mot de passe doit comporter des caractères numériques',
'Password must have special characters': 'Le mot de passe doit comporter des symboles',
'Password must have lower case letters': 'Le mot de passe doit comporter des caractères minuscules',
'Invalid verification code provided, please try again.': 'Code de vérification invalide, veuillez réessayer.',
'Attempt limit exceeded, please try after some time.': 'Nombre maximum de tentatives dépassé, veuillez réessayer plus tard.',
'A network error has occurred.': "Une erreur de réseau s'est produite.",
};
const huDict$1 = {
'A network error has occurred.': 'Hálózati hiba történt.',
'Account recovery requires verified contact information': 'A fiók helyreállításához hitelesített kapcsolattartási adatok szükségesek',
'Add your Profile': 'Profil hozzáadása',
'Add your Website': 'Weboldal hozzáadása',
'An account with the given email already exists.': 'Ezzel az e-mail címmel már létezik fiók.',
'Attempt limit exceeded, please try after some time.': 'Próbálkozási limit túllépve, kérjük próbálja újra később.',
'Authenticator App (TOTP)': 'Hitelesítő alkalmazás (TOTP)',
'Back to Sign In': 'Vissza a bejelentkezéshez',
Birthdate: 'Születési dátum',
'Change Password': 'Jelszó módosítása',
Changing: 'Módosítás',
Code: 'Kód',
Confirm: 'Megerősítés',
'Confirm a Code': 'Kód megerősítése',
'Confirm Email Code': 'E-mail kód megerősítése',
'Confirm MFA Code': 'MFA kód megerősítése',
'Confirm Password': 'Jelszó megerősítése',
'Confirm Sign In': 'Bejelentkezés megerősítése',
'Confirm Sign Up': 'Regisztráció megerősítése',
'Confirm SMS Code': 'SMS kód megerősítése',
'Confirm TOTP Code': 'TOTP kód megerősítése',
'Confirmation Code': 'Megerősítő kód',
Confirming: 'Megerősítés',
'Create a new account': 'Új fiók létrehozása',
'Create Account': 'Fiók létrehozása',
'Create account': 'Fiók létrehozása',
'Creating Account': 'Fiók létrehozása',
'Dismiss alert': 'Figyelmeztetés ignorálása',
Email: 'E-mail',
'Email Message': 'E-mail üzenet',
'Enter your Birthdate': 'Adja meg a születési dátumát',
'Enter your code': 'Adja meg a kódot',
'Enter your Confirmation Code': 'Adja meg a megerősítő kódot',
'Enter your email': 'Adja meg az e-mail címét',
'Enter your Email': 'Adja meg az e-mail címét',
'Enter your Family Name': 'Adja meg a vezetéknevét',
'Enter your Given Name': 'Adja meg a keresztnevét',
'Enter your Middle Name': 'Adja meg második keresztnevét (ha van)',
'Enter your Name': 'Adja meg a nevét',
'Enter your Nickname': 'Adja meg a becenevét',
'Enter your password': 'Adja meg a jelszavát',
'Enter your Password': 'Adja meg a jelszavát',
'Enter your phone number': 'Adja meg a telefonszámát',
'Enter your Phone Number': 'Adja meg a telefonszámát',
'Enter your Preferred Username': 'Adja meg a preferált felhasználónevét',
'Enter your username': 'Adja meg a felhasználónevét',
'Enter your Username': 'Adja meg a felhasználónevét',
'Family Name': 'Vezetéknév',
'Forgot Password': 'Elfelejtett jelszó',
'Forgot password?': 'Elfelejtette a jelszavát?',
'Forgot your password?': 'Elfelejtette a jelszavát?',
'Given Name': 'Keresztnév',
'Have an account? ': 'Van már fiókja? ',
Hello: 'Üdvözöljük',
'Hide password': 'Jelszó elrejtése',
'Incorrect username or password': 'Helytelen felhasználónév vagy jelszó',
'Incorrect username or password.': 'Helytelen felhasználónév vagy jelszó.',
'Invalid password format': 'Érvénytelen jelszó formátum',
'Invalid phone number format': 'Érvénytelen telefonszám formátum',
'It may take a minute to arrive': 'Egy percet igénybe vehet, amíg megérkezik',
'It may take a minute to arrive.': 'Egy percet igénybe vehet, amíg megérkezik.',
Loading: 'Betöltés',
'Loading...': 'Betöltés...',
'Lost your code? ': 'Elvesztette a kódot? ',
'Middle Name': 'Második keresztnév',
'Multi-Factor Authentication': 'Többfaktoros hitelesítés',
'Multi-Factor Authentication Setup': 'Többfaktoros hitelesítés felállítása',
Name: 'Név',
'Network error': 'Hálózati hiba',
'New Password': 'Új jelszó',
'New password': 'Új jelszó',
Nickname: 'Becenév',
'No account? ': 'Nincs még fiókja? ',
or: 'vagy',
Password: 'Jelszó',
'Password attempts exceeded': 'Jelszó próbálkozási limit túllépve',
'Password did not conform with policy': 'A jelszónak tartalmaznia kell kisbetűket',
'Password must have lower case letters': 'A jelszónak tartalmaznia kell kisbetűket',
'Password must have numbers': 'A jelszónak tartalmaznia kell számokat',
'Password must have special characters': 'A jelszónak tartalmaznia kell szimbólumokat',
'Password must have upper case letters': 'A jelszónak tartalmaznia kell nagybetűket',
'Password not long enough': 'Jelszó nem elég hosszú',
'Password must have at least 8 characters': 'A jelszónak legalább 8 karakterből kell állnia',
'Phone Number': 'Telefonszám',
'Please confirm your Password': 'Kérjük, erősítse meg a jelszavát',
'Preferred Username': 'Preferált felhasználónév',
Profile: 'Profil',
'Resend a Code': 'Kód újraküldése',
'Resend Code': 'Kód újraküldése',
'Reset Password': 'Új jelszó felállítása',
'Reset password': 'Új jelszó felállítása',
'Reset your password': 'Új jelszó felállítása',
'Reset your Password': 'Új jelszó felállítása',
'Select MFA Type': 'MFA típus kiválasztása',
Send: 'Küldés',
'Send code': 'Kód küldése',
'Send Code': 'Kód küldése',
Sending: 'Küldés',
'Setup Email': 'E-mail cím beállítása',
'Setup TOTP': 'TOTP beállítása',
'Show password': 'Jelszó megjelenítése',
'Sign In': 'Bejelentkezés',
'Sign in': 'Bejelentkezés',
'Sign in to your account': 'Jelentkezzen be a fiókjába',
'Sign In with Amazon'