@plumile/backoffice-react 0.1.125 → 0.1.131
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/lib/esm/auth/login/loginPage.css.js +1 -0
- package/lib/esm/auth/login/loginPage.css.js.map +1 -1
- package/lib/esm/components/backoffice/billing/BackofficeBillingUsageChart.js +37 -26
- package/lib/esm/components/backoffice/billing/BackofficeBillingUsageChart.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js +2 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeKpiStrip.js +23 -23
- package/lib/esm/components/backoffice/detail/BackofficeKpiStrip.js.map +1 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js +1 -0
- package/lib/esm/components/backoffice/detail/backofficeKpiStrip.css.js +14 -2
- package/lib/esm/components/backoffice/detail/backofficeKpiStrip.css.js.map +1 -1
- package/lib/esm/components/backoffice/filters/DeferredFilterSearchInput.js +64 -50
- package/lib/esm/components/backoffice/filters/DeferredFilterSearchInput.js.map +1 -1
- package/lib/esm/components/backoffice/filters/EntityIdFilterField.js +45 -50
- package/lib/esm/components/backoffice/filters/EntityIdFilterField.js.map +1 -1
- package/lib/esm/components/backoffice/filters/deferredFilterSearchInput.css.js +2 -2
- package/lib/esm/components/backoffice/filters/deferredFilterSearchInput.css.js.map +1 -1
- package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js +1 -1
- package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js.map +1 -1
- package/lib/esm/components/backoffice/hub/backofficeHubTemplate.css.js.map +1 -1
- package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js +0 -1
- package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js.map +1 -1
- package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js.map +1 -1
- package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js.map +1 -1
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +1 -1
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +1 -1
- package/lib/esm/components/backoffice/shared/BackofficeFormattedCurrency.js +2 -1
- package/lib/esm/components/backoffice/shared/BackofficeFormattedCurrency.js.map +1 -1
- package/lib/esm/components/backoffice/tools/backofficeToolsDocPanel.css.js.map +1 -1
- package/lib/esm/i18n/locales/en/backofficeReact.js +3 -3
- package/lib/esm/i18n/locales/en/backofficeReact.js.map +1 -1
- package/lib/esm/i18n/locales/fr/backofficeReact.js +3 -3
- package/lib/esm/i18n/locales/fr/backofficeReact.js.map +1 -1
- package/lib/esm/i18n/useBackofficeFormats.js +28 -12
- package/lib/esm/i18n/useBackofficeFormats.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityDetailPage.js +197 -196
- package/lib/esm/pages/BackofficeEntityDetailPage.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js +74 -70
- package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityListPage.js +46 -53
- package/lib/esm/pages/BackofficeEntityListPage.js.map +1 -1
- package/lib/esm/pages/backofficeEntityListPage.css.js +1 -1
- package/lib/esm/pages/backofficeEntityListPage.css.js.map +1 -1
- package/lib/esm/pages/dashboard/dashboardPanel.css.js.map +1 -1
- package/lib/esm/provider/BackofficeProvider.js +1 -1
- package/lib/esm/provider/BackofficeProvider.js.map +1 -1
- package/lib/esm/style.css +1 -1
- package/lib/types/components/backoffice/billing/BackofficeBillingUsageChart.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailBadgeRow.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeKpiStrip.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/backofficeKpiStrip.css.d.ts +24 -0
- package/lib/types/components/backoffice/detail/backofficeKpiStrip.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/filters/DeferredFilterSearchInput.d.ts +1 -1
- package/lib/types/components/backoffice/filters/DeferredFilterSearchInput.d.ts.map +1 -1
- package/lib/types/components/backoffice/filters/EntityIdFilterField.d.ts.map +1 -1
- package/lib/types/components/backoffice/filters/deferredFilterSearchInput.css.d.ts +2 -0
- package/lib/types/components/backoffice/filters/deferredFilterSearchInput.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/filters/entityIdFilterField.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/shared/BackofficeFormattedCurrency.d.ts.map +1 -1
- package/lib/types/i18n/resources.d.ts +6 -6
- package/lib/types/i18n/useBackofficeFormats.d.ts +1 -0
- package/lib/types/i18n/useBackofficeFormats.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailPage.view-helpers.d.ts +1 -0
- package/lib/types/pages/BackofficeEntityDetailPage.view-helpers.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityListPage.d.ts.map +1 -1
- package/lib/types/pages/backofficeEntityListPage.css.d.ts.map +1 -1
- package/package.json +11 -11
|
@@ -216,8 +216,6 @@ var e = {
|
|
|
216
216
|
},
|
|
217
217
|
common: {
|
|
218
218
|
actions: {
|
|
219
|
-
change: "Modifier",
|
|
220
|
-
clear: "Effacer",
|
|
221
219
|
close: "Fermer",
|
|
222
220
|
copied: "Copié",
|
|
223
221
|
copy: "Copier",
|
|
@@ -272,7 +270,9 @@ var e = {
|
|
|
272
270
|
},
|
|
273
271
|
filters: {
|
|
274
272
|
actions: {
|
|
275
|
-
|
|
273
|
+
applyFilter: "Appliquer le filtre {{label}}",
|
|
274
|
+
changeFilterValue: "Modifier {{label}}",
|
|
275
|
+
clearFilter: "Effacer le filtre {{label}}",
|
|
276
276
|
filterBy: "Filtrer par {{label}}"
|
|
277
277
|
},
|
|
278
278
|
all: "Tous {{label}}",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backofficeReact.js","names":[],"sources":["../../../../../src/i18n/locales/fr/backofficeReact.json"],"sourcesContent":["{\n \"actions\": {\n \"form\": {\n \"cancel\": \"Annuler\",\n \"errors\": {\n \"invalidJson\": \"{{label}} doit être un JSON valide.\",\n \"invalidJsonArray\": \"{{label}} doit être un tableau JSON valide.\",\n \"invalidJsonObject\": \"{{label}} doit être un objet JSON valide.\",\n \"invalidNumber\": \"{{label}} doit être un nombre valide.\",\n \"invalidPayload\": \"La charge utile soumise est invalide.\",\n \"required\": \"{{label}} est requis.\",\n \"submitFailed\": \"Impossible de terminer cette action. Veuillez réessayer.\"\n },\n \"submitting\": \"Envoi...\"\n },\n \"view\": \"Voir\"\n },\n \"auth\": {\n \"acceptInvitation\": {\n \"actions\": {\n \"backToLogin\": \"Retour à la connexion\"\n },\n \"errors\": {\n \"alreadyAccepted\": \"Cette invitation a déjà été acceptée.\",\n \"default\": \"Impossible d'accepter l'invitation.\",\n \"emailMismatch\": \"Cette invitation a été envoyée à une autre adresse email.\",\n \"expired\": \"Le lien d'invitation a expiré.\",\n \"invalidToken\": \"Le lien d'invitation est invalide.\",\n \"missingToken\": \"Le lien d'invitation est manquant ou invalide.\",\n \"passwordMismatch\": \"Le mot de passe et sa confirmation ne correspondent pas.\",\n \"passwordPolicyViolation\": \"Votre mot de passe ne respecte pas la politique de sécurité.\",\n \"rateLimited\": \"Trop de tentatives. Veuillez réessayer plus tard.\",\n \"unavailable\": \"L'acceptation d'invitation n'est pas disponible.\"\n },\n \"form\": {\n \"confirmLabel\": \"Confirmer le mot de passe\",\n \"confirmPlaceholder\": \"Confirmez votre mot de passe\",\n \"passwordLabel\": \"Mot de passe\",\n \"passwordPlaceholder\": \"Créez un mot de passe\",\n \"submit\": \"Accepter l'invitation\"\n },\n \"mfaSubtitle\": \"Entrez le code de vérification pour continuer.\",\n \"mfaTitle\": \"Vérifiez votre identité\",\n \"status\": {\n \"success\": \"Invitation acceptée.\",\n \"workingButton\": \"Traitement...\"\n },\n \"subtitle\": \"Créez votre compte pour rejoindre.\",\n \"title\": \"Accepter l'invitation\"\n },\n \"emailCapture\": {\n \"continue\": \"Continuer\",\n \"description\": \"Entrez votre email professionnel pour continuer.\",\n \"emailLabel\": \"Email professionnel\",\n \"emailPlaceholder\": \"vous@entreprise.com\",\n \"forgotPassword\": \"Mot de passe oublié ?\"\n },\n \"loginFlow\": {\n \"errors\": {\n \"accountLocked\": \"Trop de tentatives. Veuillez réessayer plus tard.\",\n \"emailRequired\": \"Entrez une adresse email pour continuer.\",\n \"invalidCredentials\": \"Email ou mot de passe incorrect.\",\n \"invalidEmail\": \"Entrez une adresse email valide.\",\n \"passkeyUnavailable\": \"Les passkeys ne sont pas disponibles.\",\n \"rateLimited\": \"Trop de tentatives. Veuillez réessayer plus tard.\",\n \"tryAgain\": \"Une erreur est survenue. Veuillez réessayer.\"\n },\n \"methods\": {\n \"title\": \"Choisissez une méthode de connexion\"\n },\n \"passkey\": {\n \"description\": \"Utilisez la passkey associée à {{email}}.\",\n \"title\": \"Utiliser une passkey\"\n },\n \"subtitle\": {\n \"default\": \"Choisissez une méthode de connexion pour continuer.\",\n \"mfa\": \"Entrez le code de vérification pour continuer.\"\n },\n \"title\": {\n \"default\": \"Se connecter\",\n \"mfa\": \"Authentification à deux facteurs\"\n }\n },\n \"logout\": {\n \"errors\": {\n \"default\": \"Échec de la déconnexion.\"\n }\n },\n \"methodChooser\": {\n \"actions\": {\n \"back\": \"Retour\"\n },\n \"locked\": \"Trop de tentatives. Veuillez réessayer plus tard.\",\n \"lockedWithTime\": \"Trop de tentatives. Veuillez réessayer à {{time}}.\",\n \"methods\": {\n \"other\": \"{{method}}\",\n \"passkey\": \"Passkey\",\n \"password\": \"Mot de passe\"\n },\n \"prompt\": \"Choisissez comment vous connecter pour <strong>{{email}}</strong>.\"\n },\n \"mfa\": {\n \"actions\": {\n \"back\": \"Retour\",\n \"submit\": \"Vérifier\"\n },\n \"errors\": {\n \"expired\": \"La session de vérification a expiré. Réessayez.\",\n \"invalidChallenge\": \"La session de vérification est invalide. Reprenez la connexion.\",\n \"invalidCode\": \"Code invalide. Réessayez.\",\n \"shortCode\": \"Entrez le code à 6 chiffres.\",\n \"tooManyAttempts\": \"Trop de tentatives. Veuillez réessayer plus tard.\",\n \"verificationFailed\": \"La vérification a échoué. Réessayez.\"\n },\n \"form\": {\n \"label\": \"Code de vérification\",\n \"placeholder\": \"123456\"\n },\n \"helper\": {\n \"default\": \"Entrez le code à 6 chiffres de votre authentificateur.\",\n \"withEmail\": \"Entrez le code à 6 chiffres envoyé à {{email}}.\"\n }\n },\n \"oidc\": {\n \"buttons\": {\n \"apple\": \"Continuer avec Apple\",\n \"generic\": \"Continuer avec un SSO\",\n \"google\": \"Continuer avec Google\"\n }\n },\n \"passkey\": {\n \"actions\": {\n \"showMethods\": \"Utiliser une autre méthode\",\n \"submit\": \"Continuer avec la passkey\",\n \"submitting\": \"En attente de la passkey...\"\n },\n \"errors\": {\n \"cancelled\": \"La connexion par passkey a été annulée.\",\n \"challengeExpired\": \"La demande de passkey a expiré. Réessayez.\",\n \"emailRequired\": \"Entrez votre email pour continuer.\",\n \"failed\": \"Échec de la connexion par passkey.\",\n \"invalidAssertion\": \"La réponse de passkey est invalide. Réessayez.\",\n \"invalidChallenge\": \"La demande de passkey est invalide. Réessayez.\",\n \"invalidEmail\": \"Entrez une adresse email valide.\",\n \"locked\": \"Trop de tentatives. Veuillez réessayer plus tard.\",\n \"lockedWithTime\": \"Trop de tentatives. Veuillez réessayer à {{time}}.\",\n \"noCredential\": \"L'authentificateur n'a retourné aucun identifiant.\",\n \"notAvailable\": \"Les passkeys ne sont pas disponibles sur cet appareil.\",\n \"notFound\": \"Aucune passkey n'est associée à ce compte.\"\n },\n \"form\": {\n \"emailLabel\": \"Email\",\n \"emailPlaceholder\": \"vous@entreprise.com\"\n },\n \"helper\": \"Utilisez une passkey à la place de votre mot de passe.\"\n },\n \"passwordLogin\": {\n \"forgotPassword\": \"Mot de passe oublié ?\",\n \"title\": \"Se connecter\"\n },\n \"passwordResetComplete\": {\n \"errors\": {\n \"expired\": \"Ce lien de réinitialisation a expiré.\",\n \"invalid\": \"Le lien de réinitialisation est invalide ou expiré.\",\n \"minLength\": \"Le mot de passe doit contenir au moins {{minLength}} caractères.\",\n \"mismatch\": \"Les mots de passe ne correspondent pas.\",\n \"missingToken\": \"Le lien de réinitialisation est manquant ou invalide.\",\n \"policyViolation\": \"Votre nouveau mot de passe ne respecte pas la politique de sécurité.\"\n },\n \"form\": {\n \"confirmLabel\": \"Confirmer le mot de passe\",\n \"confirmPlaceholder\": \"Saisissez à nouveau votre mot de passe\",\n \"description\": \"Entrez un nouveau mot de passe pour votre compte.\",\n \"passwordLabel\": \"Mot de passe\",\n \"passwordPlaceholder\": \"Entrez un nouveau mot de passe\",\n \"submit\": \"Mettre à jour le mot de passe\",\n \"title\": \"Nouveau mot de passe\"\n },\n \"subtitle\": \"Choisissez un mot de passe robuste pour sécuriser votre compte.\",\n \"success\": {\n \"action\": \"Retour à la connexion\",\n \"description\": \"Votre mot de passe a été modifié.\",\n \"helper\": \"Vous pouvez maintenant vous connecter avec votre nouveau mot de passe.\",\n \"title\": \"Mot de passe mis à jour\"\n },\n \"title\": \"Définir un nouveau mot de passe\"\n },\n \"passwordResetRequest\": {\n \"errors\": {\n \"emailRequired\": \"Entrez une adresse email.\",\n \"invalidEmail\": \"Veuillez saisir une adresse email valide.\",\n \"rateLimited\": \"Trop de demandes. Veuillez patienter puis réessayer.\",\n \"startFailed\": \"Impossible de démarrer la réinitialisation.\"\n },\n \"form\": {\n \"description\": \"Entrez l'email de votre compte.\",\n \"emailLabel\": \"Email\",\n \"emailPlaceholder\": \"vous@entreprise.com\",\n \"submit\": \"Envoyer le lien de réinitialisation\"\n },\n \"sent\": {\n \"action\": \"Envoyer un autre email\",\n \"description\": \"Nous avons envoyé un lien de réinitialisation à {{email}}.\",\n \"helper\": \"Si vous ne le voyez pas, vérifiez les spams ou réessayez.\",\n \"title\": \"Vérifiez votre email\"\n },\n \"title\": \"Réinitialiser votre mot de passe\"\n },\n \"verifyEmail\": {\n \"actions\": {\n \"continue\": \"Continuer\",\n \"return\": \"Retour à la connexion\"\n },\n \"errors\": {\n \"alreadyVerified\": \"Cette adresse email est déjà vérifiée.\",\n \"expired\": \"Ce lien de vérification a expiré.\",\n \"invalid\": \"Le lien de vérification est invalide ou expiré.\",\n \"missingToken\": \"Le lien de vérification est manquant ou invalide.\"\n },\n \"status\": {\n \"success\": \"Email vérifié. Vous pouvez continuer.\",\n \"verifying\": \"Vérification...\",\n \"verifyingButton\": \"Vérification\"\n },\n \"subtitle\": \"Confirmez votre adresse email pour continuer.\",\n \"title\": \"Vérifier votre email\"\n }\n },\n \"common\": {\n \"actions\": {\n \"change\": \"Modifier\",\n \"clear\": \"Effacer\",\n \"close\": \"Fermer\",\n \"copied\": \"Copié\",\n \"copy\": \"Copier\",\n \"pick\": \"Choisir\",\n \"retry\": \"Réessayer\"\n },\n \"boolean\": {\n \"no\": \"Non\",\n \"yes\": \"Oui\"\n },\n \"breadcrumb\": \"Fil d'Ariane\",\n \"errors\": {\n \"unexpected\": \"Une erreur inattendue est survenue.\"\n },\n \"loading\": \"Chargement...\",\n \"notAvailable\": \"N/D\"\n },\n \"dashboard\": {\n \"actions\": {\n \"openList\": \"Ouvrir la liste\",\n \"openTool\": \"Ouvrir l'outil\"\n },\n \"subtitle\": \"Vue d'ensemble du contexte Work.\",\n \"title\": \"Tableau de bord\"\n },\n \"detail\": {\n \"actionResult\": {\n \"message\": \"Message\",\n \"status\": \"Statut\"\n },\n \"actions\": {\n \"viewDetails\": \"Voir le détail\"\n },\n \"audit\": {\n \"actor\": \"Acteur\",\n \"source\": \"Source\"\n },\n \"columns\": {\n \"charged\": \"Facturé\",\n \"events\": \"Événements\",\n \"markup\": \"Marge\",\n \"name\": \"Nom\",\n \"rawCost\": \"Coût réel\"\n },\n \"notFound\": \"Introuvable\"\n },\n \"emptyState\": {\n \"listEmpty\": {\n \"description\": \"Aucun enregistrement à afficher.\",\n \"title\": \"Aucun résultat\"\n },\n \"listEmptyFiltered\": {\n \"actions\": {\n \"reset\": \"Réinitialiser les filtres\"\n },\n \"description\": \"Aucun résultat ne correspond aux filtres actuels.\"\n }\n },\n \"filters\": {\n \"actions\": {\n \"apply\": \"Appliquer\",\n \"filterBy\": \"Filtrer par {{label}}\"\n },\n \"all\": \"Tous {{label}}\",\n \"boolean\": {\n \"no\": \"Non\",\n \"yes\": \"Oui\"\n },\n \"drawer\": {\n \"emptySearchResults\": \"Aucun filtre ne correspond à cette recherche.\"\n },\n \"placeholders\": {\n \"anyEntity\": \"Tous\",\n \"search\": \"Rechercher {{label}}\",\n \"unresolved\": \"ID introuvable\"\n },\n \"sections\": {\n \"default\": \"Filtres\"\n },\n \"trigger\": \"Filtres\",\n \"triggerWithCount_one\": \"Filtres ({{count}})\",\n \"triggerWithCount_many\": \"Filtres ({{count}})\",\n \"triggerWithCount_other\": \"Filtres ({{count}})\"\n },\n \"flags\": {\n \"agentManaged\": {\n \"agentManaged\": \"Géré par un agent\",\n \"userManaged\": \"Géré par un utilisateur\"\n },\n \"capability\": {\n \"allowed\": \"Autorisé\",\n \"denied\": \"Refusé\"\n },\n \"default\": {\n \"default\": \"Par défaut\",\n \"notDefault\": \"Non par défaut\"\n },\n \"deployedProduction\": {\n \"deployed\": \"Déployé\",\n \"notDeployed\": \"Non déployé\"\n },\n \"enabled\": {\n \"disabled\": \"Désactivé\",\n \"enabled\": \"Activé\"\n },\n \"encrypted\": {\n \"encrypted\": \"Chiffré\",\n \"notEncrypted\": \"Non chiffré\"\n },\n \"failure\": {\n \"failed\": \"Échoué\",\n \"ok\": \"OK\"\n },\n \"forced\": {\n \"forced\": \"Forcé\",\n \"normal\": \"Normal\"\n },\n \"locked\": {\n \"locked\": \"Verrouillé\",\n \"unlocked\": \"Déverrouillé\"\n }\n },\n \"format\": {\n \"currency\": \"{{value, currency}}\",\n \"number\": \"{{value, number}}\",\n \"percent\": \"{{value, percent}}\"\n },\n \"history\": \"\",\n \"hub\": {\n \"empty\": {\n \"description\": \"Aucun élément disponible ne correspond aux filtres actuels.\",\n \"title\": \"Aucun élément\"\n },\n \"itemKinds\": {\n \"entity\": \"Liste\",\n \"tool\": \"Outil\"\n },\n \"search\": {\n \"placeholder\": \"Rechercher\"\n },\n \"subtitle\": \"Choisissez un élément pour continuer.\"\n },\n \"list\": {\n \"actions\": {\n \"refresh\": \"Actualiser\",\n \"refreshing\": \"Actualisation…\",\n \"retry\": \"Réessayer\"\n },\n \"errors\": {\n \"fetchFailed\": \"Impossible d'actualiser la liste. Veuillez réessayer.\",\n \"tableFailed\": \"Le tableau n'a pas pu se charger.\",\n \"title\": \"Erreur du tableau\"\n },\n \"loaded_one\": \"{{count, number}} élément chargé\",\n \"loaded_many\": \"{{count, number}} éléments chargés\",\n \"loaded_other\": \"{{count, number}} éléments chargés\",\n \"loadMore\": {\n \"end\": \"Fin des résultats\",\n \"loading\": \"Chargement…\"\n },\n \"showing\": \"Affichage de {{shown, number}} sur {{total, number}}\",\n \"sort\": {\n \"label\": \"Ordre de tri\"\n },\n \"title\": \"\"\n },\n \"overview\": \"\",\n \"picker\": {\n \"empty\": {\n \"description\": \"Essayez un autre terme de recherche.\",\n \"title\": \"Aucun résultat\"\n },\n \"errors\": {\n \"loadFailed\": \"Échec du chargement.\"\n },\n \"searchPlaceholder\": {\n \"default\": \"Rechercher...\"\n },\n \"searchRequired\": \"Saisissez un ID pour rechercher.\",\n \"title\": \"Sélectionner un ID\",\n \"unavailable\": \"Sélecteur indisponible pour {{entity}}.\"\n },\n \"relations\": {\n \"labelWithCount_one\": \"{{label}} ({{count}})\",\n \"labelWithCount_many\": \"{{label}} ({{count}})\",\n \"labelWithCount_other\": \"{{label}} ({{count}})\",\n \"menu\": {\n \"label\": \"Relations\"\n },\n \"openFilteredList\": \"Ouvrir la liste filtrée : {{label}}\",\n \"unavailable\": {\n \"description\": \"Cette liste liée ne peut pas être chargée pour le moment.\",\n \"title\": \"Relation indisponible\"\n },\n \"viewList\": \"Voir la liste\"\n },\n \"review\": {\n \"status\": {\n \"approved\": \"Approuvé\",\n \"changesRequested\": \"Modifications demandées\",\n \"pending\": \"En attente\",\n \"unknown\": \"Inconnu\"\n }\n },\n \"sidebar\": {\n \"actions\": {\n \"collapseSidebar\": \"Fermer\",\n \"expandSidebar\": \"Ouvrir\",\n \"pin\": \"Épingler\",\n \"reorder\": \"Réordonner\",\n \"unpin\": \"Désépingler\"\n },\n \"items\": {\n \"dashboard\": \"Tableau de bord\"\n },\n \"navigationAriaLabel\": \"Navigation backoffice\",\n \"profile\": {\n \"actions\": {\n \"signOut\": \"Se déconnecter\"\n },\n \"menuAriaLabel\": \"Ouvrir le menu profil\",\n \"title\": \"Profil\",\n \"unknownUser\": \"Utilisateur inconnu\"\n },\n \"search\": {\n \"placeholder\": \"Rechercher...\"\n },\n \"sections\": {\n \"pinned\": \"Épinglés\",\n \"recent\": \"Récents\"\n }\n },\n \"tools\": {\n \"errors\": {\n \"description\": \"Impossible d'exécuter cet outil.\",\n \"details\": \"Détails de l'erreur\",\n \"label\": \"Erreur\",\n \"title\": \"Erreur d'outil\",\n \"unknown\": \"Erreur inconnue\"\n },\n \"forms\": {\n \"actions\": {\n \"insertExample\": \"Insérer l'exemple\",\n \"run\": \"Exécuter\"\n },\n \"inputJsonLabel\": \"JSON d'entrée\"\n },\n \"loading\": {\n \"description\": \"Exécution de l'outil...\"\n },\n \"output\": \"Résultat\"\n }\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"backofficeReact.js","names":[],"sources":["../../../../../src/i18n/locales/fr/backofficeReact.json"],"sourcesContent":["{\n \"actions\": {\n \"form\": {\n \"cancel\": \"Annuler\",\n \"errors\": {\n \"invalidJson\": \"{{label}} doit être un JSON valide.\",\n \"invalidJsonArray\": \"{{label}} doit être un tableau JSON valide.\",\n \"invalidJsonObject\": \"{{label}} doit être un objet JSON valide.\",\n \"invalidNumber\": \"{{label}} doit être un nombre valide.\",\n \"invalidPayload\": \"La charge utile soumise est invalide.\",\n \"required\": \"{{label}} est requis.\",\n \"submitFailed\": \"Impossible de terminer cette action. Veuillez réessayer.\"\n },\n \"submitting\": \"Envoi...\"\n },\n \"view\": \"Voir\"\n },\n \"auth\": {\n \"acceptInvitation\": {\n \"actions\": {\n \"backToLogin\": \"Retour à la connexion\"\n },\n \"errors\": {\n \"alreadyAccepted\": \"Cette invitation a déjà été acceptée.\",\n \"default\": \"Impossible d'accepter l'invitation.\",\n \"emailMismatch\": \"Cette invitation a été envoyée à une autre adresse email.\",\n \"expired\": \"Le lien d'invitation a expiré.\",\n \"invalidToken\": \"Le lien d'invitation est invalide.\",\n \"missingToken\": \"Le lien d'invitation est manquant ou invalide.\",\n \"passwordMismatch\": \"Le mot de passe et sa confirmation ne correspondent pas.\",\n \"passwordPolicyViolation\": \"Votre mot de passe ne respecte pas la politique de sécurité.\",\n \"rateLimited\": \"Trop de tentatives. Veuillez réessayer plus tard.\",\n \"unavailable\": \"L'acceptation d'invitation n'est pas disponible.\"\n },\n \"form\": {\n \"confirmLabel\": \"Confirmer le mot de passe\",\n \"confirmPlaceholder\": \"Confirmez votre mot de passe\",\n \"passwordLabel\": \"Mot de passe\",\n \"passwordPlaceholder\": \"Créez un mot de passe\",\n \"submit\": \"Accepter l'invitation\"\n },\n \"mfaSubtitle\": \"Entrez le code de vérification pour continuer.\",\n \"mfaTitle\": \"Vérifiez votre identité\",\n \"status\": {\n \"success\": \"Invitation acceptée.\",\n \"workingButton\": \"Traitement...\"\n },\n \"subtitle\": \"Créez votre compte pour rejoindre.\",\n \"title\": \"Accepter l'invitation\"\n },\n \"emailCapture\": {\n \"continue\": \"Continuer\",\n \"description\": \"Entrez votre email professionnel pour continuer.\",\n \"emailLabel\": \"Email professionnel\",\n \"emailPlaceholder\": \"vous@entreprise.com\",\n \"forgotPassword\": \"Mot de passe oublié ?\"\n },\n \"loginFlow\": {\n \"errors\": {\n \"accountLocked\": \"Trop de tentatives. Veuillez réessayer plus tard.\",\n \"emailRequired\": \"Entrez une adresse email pour continuer.\",\n \"invalidCredentials\": \"Email ou mot de passe incorrect.\",\n \"invalidEmail\": \"Entrez une adresse email valide.\",\n \"passkeyUnavailable\": \"Les passkeys ne sont pas disponibles.\",\n \"rateLimited\": \"Trop de tentatives. Veuillez réessayer plus tard.\",\n \"tryAgain\": \"Une erreur est survenue. Veuillez réessayer.\"\n },\n \"methods\": {\n \"title\": \"Choisissez une méthode de connexion\"\n },\n \"passkey\": {\n \"description\": \"Utilisez la passkey associée à {{email}}.\",\n \"title\": \"Utiliser une passkey\"\n },\n \"subtitle\": {\n \"default\": \"Choisissez une méthode de connexion pour continuer.\",\n \"mfa\": \"Entrez le code de vérification pour continuer.\"\n },\n \"title\": {\n \"default\": \"Se connecter\",\n \"mfa\": \"Authentification à deux facteurs\"\n }\n },\n \"logout\": {\n \"errors\": {\n \"default\": \"Échec de la déconnexion.\"\n }\n },\n \"methodChooser\": {\n \"actions\": {\n \"back\": \"Retour\"\n },\n \"locked\": \"Trop de tentatives. Veuillez réessayer plus tard.\",\n \"lockedWithTime\": \"Trop de tentatives. Veuillez réessayer à {{time}}.\",\n \"methods\": {\n \"other\": \"{{method}}\",\n \"passkey\": \"Passkey\",\n \"password\": \"Mot de passe\"\n },\n \"prompt\": \"Choisissez comment vous connecter pour <strong>{{email}}</strong>.\"\n },\n \"mfa\": {\n \"actions\": {\n \"back\": \"Retour\",\n \"submit\": \"Vérifier\"\n },\n \"errors\": {\n \"expired\": \"La session de vérification a expiré. Réessayez.\",\n \"invalidChallenge\": \"La session de vérification est invalide. Reprenez la connexion.\",\n \"invalidCode\": \"Code invalide. Réessayez.\",\n \"shortCode\": \"Entrez le code à 6 chiffres.\",\n \"tooManyAttempts\": \"Trop de tentatives. Veuillez réessayer plus tard.\",\n \"verificationFailed\": \"La vérification a échoué. Réessayez.\"\n },\n \"form\": {\n \"label\": \"Code de vérification\",\n \"placeholder\": \"123456\"\n },\n \"helper\": {\n \"default\": \"Entrez le code à 6 chiffres de votre authentificateur.\",\n \"withEmail\": \"Entrez le code à 6 chiffres envoyé à {{email}}.\"\n }\n },\n \"oidc\": {\n \"buttons\": {\n \"apple\": \"Continuer avec Apple\",\n \"generic\": \"Continuer avec un SSO\",\n \"google\": \"Continuer avec Google\"\n }\n },\n \"passkey\": {\n \"actions\": {\n \"showMethods\": \"Utiliser une autre méthode\",\n \"submit\": \"Continuer avec la passkey\",\n \"submitting\": \"En attente de la passkey...\"\n },\n \"errors\": {\n \"cancelled\": \"La connexion par passkey a été annulée.\",\n \"challengeExpired\": \"La demande de passkey a expiré. Réessayez.\",\n \"emailRequired\": \"Entrez votre email pour continuer.\",\n \"failed\": \"Échec de la connexion par passkey.\",\n \"invalidAssertion\": \"La réponse de passkey est invalide. Réessayez.\",\n \"invalidChallenge\": \"La demande de passkey est invalide. Réessayez.\",\n \"invalidEmail\": \"Entrez une adresse email valide.\",\n \"locked\": \"Trop de tentatives. Veuillez réessayer plus tard.\",\n \"lockedWithTime\": \"Trop de tentatives. Veuillez réessayer à {{time}}.\",\n \"noCredential\": \"L'authentificateur n'a retourné aucun identifiant.\",\n \"notAvailable\": \"Les passkeys ne sont pas disponibles sur cet appareil.\",\n \"notFound\": \"Aucune passkey n'est associée à ce compte.\"\n },\n \"form\": {\n \"emailLabel\": \"Email\",\n \"emailPlaceholder\": \"vous@entreprise.com\"\n },\n \"helper\": \"Utilisez une passkey à la place de votre mot de passe.\"\n },\n \"passwordLogin\": {\n \"forgotPassword\": \"Mot de passe oublié ?\",\n \"title\": \"Se connecter\"\n },\n \"passwordResetComplete\": {\n \"errors\": {\n \"expired\": \"Ce lien de réinitialisation a expiré.\",\n \"invalid\": \"Le lien de réinitialisation est invalide ou expiré.\",\n \"minLength\": \"Le mot de passe doit contenir au moins {{minLength}} caractères.\",\n \"mismatch\": \"Les mots de passe ne correspondent pas.\",\n \"missingToken\": \"Le lien de réinitialisation est manquant ou invalide.\",\n \"policyViolation\": \"Votre nouveau mot de passe ne respecte pas la politique de sécurité.\"\n },\n \"form\": {\n \"confirmLabel\": \"Confirmer le mot de passe\",\n \"confirmPlaceholder\": \"Saisissez à nouveau votre mot de passe\",\n \"description\": \"Entrez un nouveau mot de passe pour votre compte.\",\n \"passwordLabel\": \"Mot de passe\",\n \"passwordPlaceholder\": \"Entrez un nouveau mot de passe\",\n \"submit\": \"Mettre à jour le mot de passe\",\n \"title\": \"Nouveau mot de passe\"\n },\n \"subtitle\": \"Choisissez un mot de passe robuste pour sécuriser votre compte.\",\n \"success\": {\n \"action\": \"Retour à la connexion\",\n \"description\": \"Votre mot de passe a été modifié.\",\n \"helper\": \"Vous pouvez maintenant vous connecter avec votre nouveau mot de passe.\",\n \"title\": \"Mot de passe mis à jour\"\n },\n \"title\": \"Définir un nouveau mot de passe\"\n },\n \"passwordResetRequest\": {\n \"errors\": {\n \"emailRequired\": \"Entrez une adresse email.\",\n \"invalidEmail\": \"Veuillez saisir une adresse email valide.\",\n \"rateLimited\": \"Trop de demandes. Veuillez patienter puis réessayer.\",\n \"startFailed\": \"Impossible de démarrer la réinitialisation.\"\n },\n \"form\": {\n \"description\": \"Entrez l'email de votre compte.\",\n \"emailLabel\": \"Email\",\n \"emailPlaceholder\": \"vous@entreprise.com\",\n \"submit\": \"Envoyer le lien de réinitialisation\"\n },\n \"sent\": {\n \"action\": \"Envoyer un autre email\",\n \"description\": \"Nous avons envoyé un lien de réinitialisation à {{email}}.\",\n \"helper\": \"Si vous ne le voyez pas, vérifiez les spams ou réessayez.\",\n \"title\": \"Vérifiez votre email\"\n },\n \"title\": \"Réinitialiser votre mot de passe\"\n },\n \"verifyEmail\": {\n \"actions\": {\n \"continue\": \"Continuer\",\n \"return\": \"Retour à la connexion\"\n },\n \"errors\": {\n \"alreadyVerified\": \"Cette adresse email est déjà vérifiée.\",\n \"expired\": \"Ce lien de vérification a expiré.\",\n \"invalid\": \"Le lien de vérification est invalide ou expiré.\",\n \"missingToken\": \"Le lien de vérification est manquant ou invalide.\"\n },\n \"status\": {\n \"success\": \"Email vérifié. Vous pouvez continuer.\",\n \"verifying\": \"Vérification...\",\n \"verifyingButton\": \"Vérification\"\n },\n \"subtitle\": \"Confirmez votre adresse email pour continuer.\",\n \"title\": \"Vérifier votre email\"\n }\n },\n \"common\": {\n \"actions\": {\n \"close\": \"Fermer\",\n \"copied\": \"Copié\",\n \"copy\": \"Copier\",\n \"pick\": \"Choisir\",\n \"retry\": \"Réessayer\"\n },\n \"boolean\": {\n \"no\": \"Non\",\n \"yes\": \"Oui\"\n },\n \"breadcrumb\": \"Fil d'Ariane\",\n \"errors\": {\n \"unexpected\": \"Une erreur inattendue est survenue.\"\n },\n \"loading\": \"Chargement...\",\n \"notAvailable\": \"N/D\"\n },\n \"dashboard\": {\n \"actions\": {\n \"openList\": \"Ouvrir la liste\",\n \"openTool\": \"Ouvrir l'outil\"\n },\n \"subtitle\": \"Vue d'ensemble du contexte Work.\",\n \"title\": \"Tableau de bord\"\n },\n \"detail\": {\n \"actionResult\": {\n \"message\": \"Message\",\n \"status\": \"Statut\"\n },\n \"actions\": {\n \"viewDetails\": \"Voir le détail\"\n },\n \"audit\": {\n \"actor\": \"Acteur\",\n \"source\": \"Source\"\n },\n \"columns\": {\n \"charged\": \"Facturé\",\n \"events\": \"Événements\",\n \"markup\": \"Marge\",\n \"name\": \"Nom\",\n \"rawCost\": \"Coût réel\"\n },\n \"notFound\": \"Introuvable\"\n },\n \"emptyState\": {\n \"listEmpty\": {\n \"description\": \"Aucun enregistrement à afficher.\",\n \"title\": \"Aucun résultat\"\n },\n \"listEmptyFiltered\": {\n \"actions\": {\n \"reset\": \"Réinitialiser les filtres\"\n },\n \"description\": \"Aucun résultat ne correspond aux filtres actuels.\"\n }\n },\n \"filters\": {\n \"actions\": {\n \"applyFilter\": \"Appliquer le filtre {{label}}\",\n \"changeFilterValue\": \"Modifier {{label}}\",\n \"clearFilter\": \"Effacer le filtre {{label}}\",\n \"filterBy\": \"Filtrer par {{label}}\"\n },\n \"all\": \"Tous {{label}}\",\n \"boolean\": {\n \"no\": \"Non\",\n \"yes\": \"Oui\"\n },\n \"drawer\": {\n \"emptySearchResults\": \"Aucun filtre ne correspond à cette recherche.\"\n },\n \"placeholders\": {\n \"anyEntity\": \"Tous\",\n \"search\": \"Rechercher {{label}}\",\n \"unresolved\": \"ID introuvable\"\n },\n \"sections\": {\n \"default\": \"Filtres\"\n },\n \"trigger\": \"Filtres\",\n \"triggerWithCount_one\": \"Filtres ({{count}})\",\n \"triggerWithCount_many\": \"Filtres ({{count}})\",\n \"triggerWithCount_other\": \"Filtres ({{count}})\"\n },\n \"flags\": {\n \"agentManaged\": {\n \"agentManaged\": \"Géré par un agent\",\n \"userManaged\": \"Géré par un utilisateur\"\n },\n \"capability\": {\n \"allowed\": \"Autorisé\",\n \"denied\": \"Refusé\"\n },\n \"default\": {\n \"default\": \"Par défaut\",\n \"notDefault\": \"Non par défaut\"\n },\n \"deployedProduction\": {\n \"deployed\": \"Déployé\",\n \"notDeployed\": \"Non déployé\"\n },\n \"enabled\": {\n \"disabled\": \"Désactivé\",\n \"enabled\": \"Activé\"\n },\n \"encrypted\": {\n \"encrypted\": \"Chiffré\",\n \"notEncrypted\": \"Non chiffré\"\n },\n \"failure\": {\n \"failed\": \"Échoué\",\n \"ok\": \"OK\"\n },\n \"forced\": {\n \"forced\": \"Forcé\",\n \"normal\": \"Normal\"\n },\n \"locked\": {\n \"locked\": \"Verrouillé\",\n \"unlocked\": \"Déverrouillé\"\n }\n },\n \"format\": {\n \"currency\": \"{{value, currency}}\",\n \"number\": \"{{value, number}}\",\n \"percent\": \"{{value, percent}}\"\n },\n \"history\": \"\",\n \"hub\": {\n \"empty\": {\n \"description\": \"Aucun élément disponible ne correspond aux filtres actuels.\",\n \"title\": \"Aucun élément\"\n },\n \"itemKinds\": {\n \"entity\": \"Liste\",\n \"tool\": \"Outil\"\n },\n \"search\": {\n \"placeholder\": \"Rechercher\"\n },\n \"subtitle\": \"Choisissez un élément pour continuer.\"\n },\n \"list\": {\n \"actions\": {\n \"refresh\": \"Actualiser\",\n \"refreshing\": \"Actualisation…\",\n \"retry\": \"Réessayer\"\n },\n \"errors\": {\n \"fetchFailed\": \"Impossible d'actualiser la liste. Veuillez réessayer.\",\n \"tableFailed\": \"Le tableau n'a pas pu se charger.\",\n \"title\": \"Erreur du tableau\"\n },\n \"loaded_one\": \"{{count, number}} élément chargé\",\n \"loaded_many\": \"{{count, number}} éléments chargés\",\n \"loaded_other\": \"{{count, number}} éléments chargés\",\n \"loadMore\": {\n \"end\": \"Fin des résultats\",\n \"loading\": \"Chargement…\"\n },\n \"showing\": \"Affichage de {{shown, number}} sur {{total, number}}\",\n \"sort\": {\n \"label\": \"Ordre de tri\"\n },\n \"title\": \"\"\n },\n \"overview\": \"\",\n \"picker\": {\n \"empty\": {\n \"description\": \"Essayez un autre terme de recherche.\",\n \"title\": \"Aucun résultat\"\n },\n \"errors\": {\n \"loadFailed\": \"Échec du chargement.\"\n },\n \"searchPlaceholder\": {\n \"default\": \"Rechercher...\"\n },\n \"searchRequired\": \"Saisissez un ID pour rechercher.\",\n \"title\": \"Sélectionner un ID\",\n \"unavailable\": \"Sélecteur indisponible pour {{entity}}.\"\n },\n \"relations\": {\n \"labelWithCount_one\": \"{{label}} ({{count}})\",\n \"labelWithCount_many\": \"{{label}} ({{count}})\",\n \"labelWithCount_other\": \"{{label}} ({{count}})\",\n \"menu\": {\n \"label\": \"Relations\"\n },\n \"openFilteredList\": \"Ouvrir la liste filtrée : {{label}}\",\n \"unavailable\": {\n \"description\": \"Cette liste liée ne peut pas être chargée pour le moment.\",\n \"title\": \"Relation indisponible\"\n },\n \"viewList\": \"Voir la liste\"\n },\n \"review\": {\n \"status\": {\n \"approved\": \"Approuvé\",\n \"changesRequested\": \"Modifications demandées\",\n \"pending\": \"En attente\",\n \"unknown\": \"Inconnu\"\n }\n },\n \"sidebar\": {\n \"actions\": {\n \"collapseSidebar\": \"Fermer\",\n \"expandSidebar\": \"Ouvrir\",\n \"pin\": \"Épingler\",\n \"reorder\": \"Réordonner\",\n \"unpin\": \"Désépingler\"\n },\n \"items\": {\n \"dashboard\": \"Tableau de bord\"\n },\n \"navigationAriaLabel\": \"Navigation backoffice\",\n \"profile\": {\n \"actions\": {\n \"signOut\": \"Se déconnecter\"\n },\n \"menuAriaLabel\": \"Ouvrir le menu profil\",\n \"title\": \"Profil\",\n \"unknownUser\": \"Utilisateur inconnu\"\n },\n \"search\": {\n \"placeholder\": \"Rechercher...\"\n },\n \"sections\": {\n \"pinned\": \"Épinglés\",\n \"recent\": \"Récents\"\n }\n },\n \"tools\": {\n \"errors\": {\n \"description\": \"Impossible d'exécuter cet outil.\",\n \"details\": \"Détails de l'erreur\",\n \"label\": \"Erreur\",\n \"title\": \"Erreur d'outil\",\n \"unknown\": \"Erreur inconnue\"\n },\n \"forms\": {\n \"actions\": {\n \"insertExample\": \"Insérer l'exemple\",\n \"run\": \"Exécuter\"\n },\n \"inputJsonLabel\": \"JSON d'entrée\"\n },\n \"loading\": {\n \"description\": \"Exécution de l'outil...\"\n },\n \"output\": \"Résultat\"\n }\n}\n"],"mappings":""}
|
|
@@ -1,23 +1,39 @@
|
|
|
1
1
|
import { useBackofficeReactTranslation as e } from "./useBackofficeReactTranslation.js";
|
|
2
2
|
//#region src/i18n/useBackofficeFormats.ts
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
var t = {
|
|
4
|
+
style: "currency",
|
|
5
|
+
currency: "USD",
|
|
6
|
+
minimumFractionDigits: 2,
|
|
7
|
+
maximumFractionDigits: 6
|
|
8
|
+
};
|
|
9
|
+
function n() {
|
|
10
|
+
let { i18n: n, t: r } = e();
|
|
11
|
+
function i(e) {
|
|
12
|
+
return r("format.number", { value: e });
|
|
7
13
|
}
|
|
8
|
-
function
|
|
9
|
-
return
|
|
14
|
+
function a(e) {
|
|
15
|
+
return r("format.currency", { value: e });
|
|
10
16
|
}
|
|
11
|
-
function
|
|
12
|
-
|
|
17
|
+
function o(e) {
|
|
18
|
+
if (e == null || !Number.isFinite(e)) return null;
|
|
19
|
+
try {
|
|
20
|
+
let r = e;
|
|
21
|
+
return Object.is(e, -0) && (r = 0), new Intl.NumberFormat(n.language, t).format(r);
|
|
22
|
+
} catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function s(e) {
|
|
27
|
+
return r("format.percent", { value: e });
|
|
13
28
|
}
|
|
14
29
|
return {
|
|
15
|
-
formatNumber:
|
|
16
|
-
formatCurrency:
|
|
17
|
-
|
|
30
|
+
formatNumber: i,
|
|
31
|
+
formatCurrency: a,
|
|
32
|
+
formatCurrencyTitle: o,
|
|
33
|
+
formatPercent: s
|
|
18
34
|
};
|
|
19
35
|
}
|
|
20
36
|
//#endregion
|
|
21
|
-
export {
|
|
37
|
+
export { n as useBackofficeFormats };
|
|
22
38
|
|
|
23
39
|
//# sourceMappingURL=useBackofficeFormats.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBackofficeFormats.js","names":[],"sources":["../../../src/i18n/useBackofficeFormats.ts"],"sourcesContent":["import { useBackofficeReactTranslation } from './useBackofficeReactTranslation.js';\n\nexport type BackofficeFormats = {\n formatNumber: (value: number | null | undefined) => string;\n formatCurrency: (value: number | null | undefined) => string;\n formatPercent: (value: number | null | undefined) => string;\n};\n\n/**\n *\n */\nexport function useBackofficeFormats(): BackofficeFormats {\n const { t } = useBackofficeReactTranslation();\n\n /**\n *\n */\n function formatNumber(value: number | null | undefined): string {\n return t('format.number', { value });\n }\n\n /**\n *\n */\n function formatCurrency(value: number | null | undefined): string {\n return t('format.currency', { value });\n }\n\n /**\n *\n */\n function formatPercent(value: number | null | undefined): string {\n return t('format.percent', { value });\n }\n\n return { formatNumber, formatCurrency, formatPercent };\n}\n"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"useBackofficeFormats.js","names":[],"sources":["../../../src/i18n/useBackofficeFormats.ts"],"sourcesContent":["import { useBackofficeReactTranslation } from './useBackofficeReactTranslation.js';\n\nexport type BackofficeFormats = {\n formatNumber: (value: number | null | undefined) => string;\n formatCurrency: (value: number | null | undefined) => string;\n formatCurrencyTitle: (value: number | null | undefined) => string | null;\n formatPercent: (value: number | null | undefined) => string;\n};\n\nconst CURRENCY_TITLE_OPTIONS = {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2,\n maximumFractionDigits: 6,\n} as const;\n\n/**\n *\n */\nexport function useBackofficeFormats(): BackofficeFormats {\n const { i18n, t } = useBackofficeReactTranslation();\n\n /**\n *\n */\n function formatNumber(value: number | null | undefined): string {\n return t('format.number', { value });\n }\n\n /**\n *\n */\n function formatCurrency(value: number | null | undefined): string {\n return t('format.currency', { value });\n }\n\n /**\n *\n */\n function formatCurrencyTitle(\n value: number | null | undefined,\n ): string | null {\n if (value == null || !Number.isFinite(value)) {\n return null;\n }\n try {\n let normalizedValue = value;\n if (Object.is(value, -0)) {\n normalizedValue = 0;\n }\n\n return new Intl.NumberFormat(\n i18n.language,\n CURRENCY_TITLE_OPTIONS,\n ).format(normalizedValue);\n } catch {\n return null;\n }\n }\n\n /**\n *\n */\n function formatPercent(value: number | null | undefined): string {\n return t('format.percent', { value });\n }\n\n return { formatNumber, formatCurrency, formatCurrencyTitle, formatPercent };\n}\n"],"mappings":";;AASA,IAAM,IAAyB;CAC7B,OAAO;CACP,UAAU;CACV,uBAAuB;CACvB,uBAAuB;CACxB;AAKD,SAAgB,IAA0C;CACxD,IAAM,EAAE,SAAM,SAAM,GAA+B;CAKnD,SAAS,EAAa,GAA0C;EAC9D,OAAO,EAAE,iBAAiB,EAAE,UAAO,CAAC;;CAMtC,SAAS,EAAe,GAA0C;EAChE,OAAO,EAAE,mBAAmB,EAAE,UAAO,CAAC;;CAMxC,SAAS,EACP,GACe;EACf,IAAI,KAAS,QAAQ,CAAC,OAAO,SAAS,EAAM,EAC1C,OAAO;EAET,IAAI;GACF,IAAI,IAAkB;GAKtB,OAJI,OAAO,GAAG,GAAO,GAAG,KACtB,IAAkB,IAGb,IAAI,KAAK,aACd,EAAK,UACL,EACD,CAAC,OAAO,EAAgB;UACnB;GACN,OAAO;;;CAOX,SAAS,EAAc,GAA0C;EAC/D,OAAO,EAAE,kBAAkB,EAAE,UAAO,CAAC;;CAGvC,OAAO;EAAE;EAAc;EAAgB;EAAqB;EAAe"}
|