export type SiteTextMap = Record<string, string>;

export const defaultSiteText: SiteTextMap = {
  "header.topBanner": "Livraison offerte des 150 EUR d'achat",
  "header.nav.home": "Accueil",
  "header.nav.shop": "Boutique",
  "header.nav.learnMore": "En savoir plus",
  "header.nav.showroom": "Showroom",
  "header.nav.account": "Compte",
  "header.categories.all": "Toutes les catégories",
  "header.categories.empty": "Aucune catégorie disponible",
  "header.account.manage": "Gestion du compte",
  "header.account.orders": "Mes commandes",
  "header.account.quotes": "Mes devis",
  "header.account.payment": "Moyens de paiement",
  "header.account.logout": "Se déconnecter",
  "header.account.login": "Connexion",
  "header.account.signup": "Inscription",
  "footer.tagline": "Boutique personnalisable qui combine design moderne, finitions artisanales et commande simple.",
  "footer.ctaShop": "Explorer la boutique",
  "footer.socials": "Réseaux sociaux",
  "footer.navTitle": "Navigation",
  "footer.nav.home": "Accueil",
  "footer.nav.shop": "Boutique",
  "footer.nav.cart": "Panier",
  "footer.commitmentTitle": "Engagement",
  "footer.commitment.one": "Création sur mesure",
  "footer.commitment.two": "Support humain",
  "footer.commitment.three": "Expédition soignée",
  "footer.legalTitle": "RGPD & légal",
  "footer.legal.mentions": "Mentions légales",
  "footer.legal.privacy": "Politique de confidentialité",
  "footer.legal.cookies": "Politique de cookies",
  "footer.legal.cookiesManage": "Gérer mes cookies",
  "footer.legal.rights": "Exercer mes droits RGPD",
  "footer.legal.cgu": "CGU",
  "footer.legal.cgv": "CGV",
  "footer.copyright": "Tous droits réservés.",
  "footer.rgpdContact": "Contact RGPD:",
  "search.label": "Rechercher un produit",
  "search.placeholder": "Rechercher un produit...",
  "search.submit": "Rechercher",
  "search.loading": "Recherche en cours...",
  "search.empty": "Aucune suggestion",
  "search.viewAll": "Voir tous les résultats",
  "cart.button": "Panier",
  "cart.aria.close": "Fermer le panier",
  "cart.title": "Votre panier",
  "cart.empty": "Votre panier est vide.",
  "cart.continue": "Continuer mes achats",
  "cart.personalization": "Personnalisation",
  "cart.qty.decrease": "Diminuer la quantité",
  "cart.qty.increase": "Augmenter la quantité",
  "cart.remove": "Supprimer",
  "cart.promo": "Code promo",
  "cart.promo.placeholder": "Entrez votre code",
  "cart.promo.apply": "Appliquer",
  "cart.promo.removePrefix": "Retirer le code promo",
  "cart.subtotal": "Sous-total",
  "cart.shipping": "Livraison",
  "cart.shipping.free": "Gratuite",
  "cart.discount": "Remise",
  "cart.total": "Total",
  "cart.viewFull": "Voir le panier complet",
  "cart.checkoutTitle": "Récapitulatif de votre panier",
  "home.feature.1.title": "Atelier humain",
  "home.feature.1.text": "Chaque commande est vérifiée et finalisée à la main.",
  "home.feature.2.title": "Personnalisation précise",
  "home.feature.2.text": "Variantes, textes, couleurs et détails adaptés à votre besoin.",
  "home.feature.3.title": "Expédition premium",
  "home.feature.3.text": "Préparation rapide et envoi soigné pour une belle réception.",
  "home.favoriteTitle": "Nos coups de coeur",
  "home.favoriteCta": "Voir toute la boutique",
  "home.experienceEyebrow": "Expérience boutique",
  "home.experienceTitle": "Un parcours moderne pour acheter plus vite",
  "home.experienceText": "Découvrez les produits, choisissez les variantes, personnalisez votre article et validez votre panier sans friction.",
  "home.experiencePrimary": "Commencer",
  "home.experienceSecondary": "Personnalisé l'expérience",
  "home.heroFallbackTitle": "Votre style unique",
  "home.heroFallbackSubtitle": "Des créations pensées avec douceur, personnalisées à la main pour célébrer chaque moment de vie.",
  "shop.eyebrow": "Boutique artisanale",
  "shop.title.all": "Toutes nos créations",
  "shop.description.all": "Une sélection pensée pour offrir, décorer et personnaliser chaque moment important.",
  "shop.description.categoryPrefix": "Sélection de la catégorie",
  "shop.filter.all": "Tout",
  "shop.empty": "Aucun produit dans cette catégorie pour le moment.",
  "auth.login.eyebrow": "Compte client",
  "auth.login.title": "Bon retour",
  "auth.login.description": "Connectez-vous pour suivre vos commandes, retrouver vos adresses et gérer votre espace client.",
  "auth.login.benefit.1": "Suivi des commandes en temps réel",
  "auth.login.benefit.2": "Gestion simple des adresses de livraison",
  "auth.login.benefit.3": "Historique centralisé sur votre compte",
  "auth.login.tab": "Connexion",
  "auth.login.submit": "Me connecter",
  "auth.login.noAccount": "Pas encore de compte ?",
  "auth.login.createAccount": "Créer un compte",
  "auth.register.eyebrow": "Nouveau client",
  "auth.register.title": "Créer mon compte",
  "auth.register.description": "Inscrivez-vous en moins d'une minute pour gérer vos commandes et vos adresses depuis un espace unique.",
  "auth.register.benefit.1": "Suivi des commandes après achat",
  "auth.register.benefit.2": "Adresses sauvegardées pour commander plus vite",
  "auth.register.benefit.3": "Connexion simple et sécurisée",
  "auth.register.termsPrefix": "J'accepte les",
  "auth.register.termsLink": "conditions générales d'utilisation",
  "auth.register.termsSuffix": "pour créer mon compte.",
  "auth.register.submit": "Créer mon compte",
  "auth.register.already": "Déjà inscrit ?",
  "auth.register.loginLink": "Se connecter",
  "auth.field.email": "Email",
  "auth.field.password": "Mot de passe",
  "auth.field.firstName": "Prénom",
  "auth.field.lastName": "Nom",
  "auth.field.phone": "Téléphone",
  "auth.placeholder.email": "vous@exemple.com",
  "auth.placeholder.password": "Votre mot de passe",
  "auth.placeholder.passwordMin": "8 caractères minimum",
  "auth.placeholder.optional": "Optionnel",
  "auth.placeholder.firstName": "Votre prénom",
  "auth.placeholder.lastName": "Votre nom",
  "notice.login-missing": "Veuillez renseigner email et mot de passe.",
  "notice.login-error": "Connexion impossible. Vérifiez vos identifiants.",
  "notice.logout-success": "Vous êtes maintenant déconnecté.",
  "notice.checkout-login-required": "Connectez-vous ou créez un compte pour finaliser votre paiement.",
  "notice.account-deleted": "Votre compte a été supprimé.",
  "notice.account-delete-error": "Impossible de supprimer votre compte pour le moment.",
  "notice.register-invalid": "Email invalide ou mot de passe trop court (8 caractères minimum).",
  "notice.register-terms": "Vous devez accepter les CGU pour créer un compte.",
  "notice.register-error": "Inscription impossible. Essayez avec une autre adresse email.",
  "search.page.eyebrow": "Recherche",
  "search.page.title": "Trouver un produit",
  "search.page.placeholder": "Ex: toniebox, cadeau, stickers...",
  "search.page.emptyInput": "Saisissez un mot-cle pour lancer une recherche.",
  "search.page.resultsSuffix": "résultat",
  "search.page.noMatch": "Aucun produit ne correspond à votre recherche. Essayez avec un autre terme.",
  "cart.page.title": "Panier",
  "cart.page.emptyMessage": "Votre panier est vide pour le moment.",
  "cart.page.shopCta": "Voir la boutique",
  "cart.page.personalization": "Personnalisation",
  "cart.note.title": "Note pour la commande",
  "cart.note.description": "Ajoutez ici une précision utile pour la préparation de votre commande. Enregistrement automatique.",
  "cart.note.placeholder": "Ex: merci d'emballer séparément, attention à la date de l'événement, consigne particulière...",
  "cart.note.saving": "Enregistrement...",
  "cart.note.saved": "Note enregistrée",
  "cart.note.error": "Erreur d'enregistrement",
  "cart.page.update": "Mettre à jour",
  "cart.page.summary": "Résumé commande",
  "cart.page.items": "Articles",
  "cart.page.payStripe": "Payer par carte bancaire",
  "cart.checkout.authTitle": "Connexion requise avant paiement",
  "cart.checkout.authDescription": "Pour valider votre commande et suivre son avancement, connectez-vous ou créez un compte.",
  "cart.checkout.loginCta": "Se connecter",
  "cart.checkout.registerCta": "Créer un compte",
  "account.eyebrow": "Mon compte",
  "account.defaultName": "Client Stylunique",
  "account.logout": "Se déconnecter",
  "account.ordersCount": "Commandes",
  "account.openOrders": "Ouvrir mes commandes",
  "account.personalInfo": "Informations personnelles",
  "account.save": "Enregistrer",
  "account.newAddress": "Nouvelle adresse",
  "account.placeholder.company": "Société (optionnel)",
  "account.placeholder.address1": "Adresse 1",
  "account.placeholder.address2": "Adresse 2 (optionnel)",
  "account.placeholder.city": "Ville",
  "account.placeholder.postalCode": "Code postal",
  "account.placeholder.country": "Pays (FR)",
  "account.placeholder.province": "Région / province",
  "account.defaultShipping": "Par défaut pour la livraison",
  "account.defaultBilling": "Par défaut pour la facturation",
  "account.addAddress": "Ajouter l'adresse",
  "account.ordersTitle": "Mes commandes",
  "account.ordersEmpty": "Aucune commande pour le moment.",
  "account.order": "Commande",
  "account.date": "Date",
  "account.status": "Statut",
  "account.inProgress": "en cours",
  "account.seeDetail": "Voir le détail",
  "account.orderDetail": "Détail commande",
  "account.paymentStatus": "Paiement",
  "account.shippingStatus": "Livraison",
  "account.subtotal": "Sous-total",
  "account.shipping": "Livraison",
  "account.taxes": "Taxes",
  "account.discount": "Réduction",
  "account.addressesTitle": "Mes adresses",
  "account.addressesEmpty": "Aucune adresse enregistrée.",
  "account.addressFallback": "Adresse",
  "account.delete": "Supprimer",
  "account.deleteAccountTitle": "Suppression du compte",
  "account.deleteAccountText": "Cette action supprime votre compte client et efface vos devis enregistrés. Elle est définitive.",
  "account.deleteAccountConfirm": "Je confirme vouloir supprimer définitivement mon compte.",
  "account.deleteAccountButton": "Supprimer mon compte",
  "orders.eyebrow": "Espace client",
  "orders.title": "Mes commandes",
  "orders.emptyCta": "Aller en boutique",
  "orders.orderId": "ID commande",
  "orders.paymentStatus": "Statut paiement",
  "orders.fulfillmentStatus": "Statut livraison",
  "orders.downloadInvoice": "Télécharger la facture PDF",
  "orders.itemsTitle": "Articles",
  "orders.quantity": "Quantité",
  "quotes.title": "Mes devis",
  "quotes.eyebrow": "Espace client",
  "quotes.empty": "Aucun devis pour le moment.",
  "quotes.reference": "Référence devis",
  "quotes.downloadPdf": "Télécharger le devis PDF",
  "product.craftBadge": "Pièce artisanale",
  "product.careText": "Création préparée avec soin, validation humaine et expédition protégée.",
  "product.defaultDescription": "Produit personnalisable Stylunique.",
  "product.variant": "Variante",
  "product.quantity": "Quantité",
  "product.personalization": "Personnalisation",
  "product.personalizationPlaceholder": "Ex: thème prénom Emma, tons beige et vert sauge",
  "product.addToCart": "Ajouter au panier",
  "product.unsyncedNote": "Produit synchronisé dans Sanity. Le checkout Medusa sera disponible une fois ce produit cree dans le catalogue commerce.",
  "learn.step.1.title": "Explorez notre univers",
  "learn.step.1.text": "Découvrez le site, les collections et nos réseaux pour trouver le style qui vous ressemble.",
  "learn.step.2.title": "Ajoutez vos produits",
  "learn.step.2.text": "Sélectionnez, personnalisez puis ajoutez vos articles au panier en quelques clics.",
  "learn.step.3.title": "Validez votre commande",
  "learn.step.3.text": "Pensez à indiquer la date de votre événement, puis choisissez paiement et livraison.",
  "learn.step.4.title": "Réception et expédition",
  "learn.step.4.text": "Votre colis est préparé puis expédié sous 15 jours ouvrés après validation.",
  "learn.heroLine1": "Etapes pour un événement",
  "learn.heroLine2": "réussi",
  "learn.nextStep": "Etape suivante",
  "learn.infoTitle": "À savoir",
  "learn.info.1": "Pour la papeterie personnalisée avec un nouveau theme, vous recevez toujours un aperçu par mail. La production commence après votre validation.",
  "learn.info.2": "Votre commande peut apparaître sur nos réseaux avant réception. Si vous ne le souhaitez pas, pensez à le préciser avant validation.",
  "learn.ctaTitle": "À vous de jouer !",
  "learn.ctaButton": "Commencer mes achats",
  "success.orderTitle": "Commande",
  "success.stripeNotConfigured": "Stripe n'est pas configuré.",
  "success.sessionMissing": "Session Stripe introuvable.",
  "success.backToCart": "Retour au panier",
  "success.eyebrow": "Paiement Stripe",
  "success.paidTitle": "Commande validée",
  "success.pendingTitle": "Paiement en cours",
  "success.paidText": "Votre paiement a été accepté. La commande est en cours de traitement.",
  "success.pendingText": "Le paiement n'est pas encore confirmé. Vérifiez son statut dans quelques instants.",
  "success.summaryTitle": "Récapitulatif",
  "success.stripeSession": "Session Stripe",
  "success.paymentStatus": "Statut paiement",
  "success.totalPaid": "Total payé",
  "success.medusaOrder": "Commande Medusa",
  "success.syncInProgress": "Synchronisation en cours...",
  "success.syncDone": "Commande Medusa synchronisée.",
  "success.syncPendingPrefix": "Synchronisation Medusa en attente:",
  "success.itemsTitle": "Articles",
  "success.qty": "Quantité",
  "success.noLineItems": "Aucune ligne de commande disponible.",
  "success.viewOrders": "Voir mes commandes",
  "success.continueShopping": "Continuer mes achats",
  "success.amountUnavailable": "Montant indisponible",
  "legal.mentions.eyebrow": "Informations légales",
  "legal.mentions.title": "Mentions légales",
  "legal.mentions.description": "Informations obligatoires relatives à l'éditeur du site et à son hébergement.",
  "legal.mentions.editorTitle": "Éditeur du site",
  "legal.mentions.company": "Société",
  "legal.mentions.site": "Site",
  "legal.mentions.email": "Email",
  "legal.mentions.address": "Adresse",
  "legal.mentions.vat": "TVA",
  "legal.mentions.publicationTitle": "Responsable de publication",
  "legal.mentions.hostingTitle": "Hébergement",
  "legal.mentions.hostName": "Hébergeur",
  "legal.mentions.ipTitle": "Propriété intellectuelle",
  "legal.mentions.ipText": "Les contenus du site sont protégés par le droit d'auteur. Toute reproduction totale ou partielle sans autorisation écrite est interdite.",
  "legal.lastUpdate": "Dernière mise à jour",
  "legal.privacy.eyebrow": "RGPD",
  "legal.privacy.title": "Politique de confidentialité",
  "legal.privacy.description": "Comment vos donnees personnelles sont collectées, utilisées et protégées.",
  "legal.privacy.section1": "1. Responsable de traitement",
  "legal.privacy.section1Text": "Le responsable de traitement est",
  "legal.privacy.section2": "2. Donnees collectées",
  "legal.privacy.section2Text": "Nous collectons uniquement les donnees nécessaires au service: informations de compte, adresses, détails de commande et echanges de support.",
  "legal.privacy.section3": "3. Finalités",
  "legal.privacy.section3.li1": "Créer et gérer votre compte client",
  "legal.privacy.section3.li2": "Traiter, expédier et suivre vos commandes",
  "legal.privacy.section3.li3": "Assurer le service client et la gestion des litiges",
  "legal.privacy.section3.li4": "Respecter nos obligations légales et comptables",
  "legal.privacy.section4": "4. Base légale",
  "legal.privacy.section4.li1": "Execution du contrat (commande)",
  "legal.privacy.section4.li2": "Obligation légale (facturation, comptabilite)",
  "legal.privacy.section4.li3": "Intérêt légitime (sécurité, prévention fraude)",
  "legal.privacy.section4.li4": "Consentement lorsque requis (cookies non essentiels)",
  "legal.privacy.section5": "5. Durée de conservation",
  "legal.privacy.section5Text": "Les données sont conservées pendant la durée nécessaire à la finalité poursuivie, puis archivées ou supprimées selon les délais légaux applicables.",
  "legal.privacy.section6": "6. Destinataires",
  "legal.privacy.section6Text": "Les données sont accessibles uniquement aux équipes habilitées et aux sous-traitants techniques nécessaires (hébergement, paiement, logistique).",
  "legal.privacy.section7": "7. Vos droits",
  "legal.privacy.section7Text": "Vous disposez d'un droit d'accès, de rectification, d'effacement, de limitation, d'opposition et de portabilité. Vous pouvez également retirer votre consentement à tout moment.",
  "legal.privacy.section8": "8. Exercer vos droits",
  "legal.privacy.section8Text": "Écrivez a",
  "legal.privacy.section8Suffix": "en précisant votre demande. Vous pouvez aussi consulter la page Droits RGPD.",
  "legal.privacy.section9": "9. Reclamation",
  "legal.privacy.section9Text": "En cas de désaccord, vous pouvez introduire une réclamation auprès de la CNIL (France).",
  "legal.cookies.eyebrow": "Cookies",
  "legal.cookies.title": "Politique de cookies",
  "legal.cookies.description": "Explication des cookies utilisés sur le site et de vos options de consentement.",
  "legal.cookies.requiredTitle": "Cookies strictement nécessaires",
  "legal.cookies.requiredText": "Ces cookies sont indispensables au fonctionnement du site (panier, session de connexion, sécurité). Ils ne peuvent pas être désactivés.",
  "legal.cookies.analyticsTitle": "Cookies de mesure d'audience",
  "legal.cookies.analyticsText": "Les cookies d'analyse ne sont activés qu'avec votre consentement. Vous pouvez les accepter ou les refuser depuis la page Préférences cookies.",
  "legal.cookies.manageTitle": "Gestion de vos préférences",
  "legal.cookies.manageText": "Vous pouvez modifier votre choix à tout moment en consultant la page dédiée:",
  "legal.cookies.listTitle": "Liste des cookies techniques actuels",
  "legal.cookies.contactTitle": "Contact",
  "legal.cookies.contactText": "Pour toute question relative aux cookies:",
  "legal.rgpd.eyebrow": "RGPD",
  "legal.rgpd.title": "Exercer vos droits",
  "legal.rgpd.description": "Demandez l'accès, la modification ou la suppression de vos donnees personnelles.",
  "legal.rgpd.rightsTitle": "Quels droits pouvez-vous exercer ?",
  "legal.rgpd.right.li1": "Droit d'accès a vos donnees",
  "legal.rgpd.right.li2": "Droit de rectification",
  "legal.rgpd.right.li3": "Droit d'effacement",
  "legal.rgpd.right.li4": "Droit à la limitation du traitement",
  "legal.rgpd.right.li5": "Droit d'opposition",
  "legal.rgpd.right.li6": "Droit à la portabilité",
  "legal.rgpd.contactTitle": "Comment nous contacter ?",
  "legal.rgpd.contactText": "Envoyez votre demande à",
  "legal.rgpd.contactSuffix": "depuis l'adresse email associée à votre compte, en précisant:",
  "legal.rgpd.contact.li1": "Le droit que vous souhaitez exercer",
  "legal.rgpd.contact.li2": "Vos informations d'identification (nom, email du compte)",
  "legal.rgpd.contact.li3": "Toute précision utile sur votre demande",
  "legal.rgpd.delayTitle": "Délais de réponse",
  "legal.rgpd.delayText": "Nous répondons dans les délais légaux en vigueur. En cas de doute sur l'identité du demandeur, une vérification complémentaire peut être demandée.",
  "legal.rgpd.authorityTitle": "Autorité de contrôle",
  "legal.rgpd.authorityText": "Si vous estimez que vos droits ne sont pas respectés, vous pouvez saisir la CNIL.",
  "legal.cgv.eyebrow": "Informations contractuelles",
  "legal.cgv.title": "Conditions générales de vente (CGV)",
  "legal.cgv.description": "Résumé des règles de commande, paiement, livraison et retours.",
  "legal.cgv.section1": "1. Objet",
  "legal.cgv.section1TextPrefix": "Les présentes CGV régissent les ventes réalisées sur",
  "legal.cgv.section1TextMid": "par",
  "legal.cgv.section2": "2. Produits",
  "legal.cgv.section2Text": "Les produits personnalisés sont décrits avec la plus grande précision possible. De légères variations esthétiques peuvent exister.",
  "legal.cgv.section3": "3. Prix et paiement",
  "legal.cgv.section3Text": "Les prix affichés s'entendent TTC sauf indication contraire. Le paiement est exigé à la validation de la commande.",
  "legal.cgv.section4": "4. Livraison",
  "legal.cgv.section4Text": "Les délais de préparation et de livraison sont indiqués lors de la commande. Ils peuvent varier selon la personnalisation demandée.",
  "legal.cgv.section5": "5. Droit de rétractation",
  "legal.cgv.section5Text": "Conformément à la réglementation, le droit de rétractation peut ne pas s'appliquer aux produits nettement personnalisés.",
  "legal.cgv.section6": "6. Service client",
  "legal.cgv.section6TextPrefix": "Pour toute question sur votre commande:",
  "legal.cgv.section7": "7. Droit applicable",
  "legal.cgv.section7Text": "Les CGV sont soumises au droit français.",
  "legal.cookiesPref.eyebrow": "RGPD",
  "legal.cookiesPref.title": "Préférences cookies",
  "legal.cookiesPref.description": "Gérez vos consentements cookies à tout moment.",
  "legal.cookiesPref.intro": "Cette page vous permet de choisir quels cookies non essentiels vous acceptez. Les cookies strictement nécessaires restent actifs pour garantir le fonctionnement du site.",
  "cookie.banner.aria": "Gestion des cookies",
  "cookie.banner.title": "Cookies",
  "cookie.banner.text": "Nous utilisons des cookies nécessaires au fonctionnement du site et, avec votre accord, des cookies de mesure d'audience.",
  "cookie.banner.policy": "Lire la politique de cookies",
  "cookie.banner.reject": "Refuser",
  "cookie.banner.acceptAll": "Tout accepter",
  "cookie.banner.customize": "Personnaliser",
  "cookie.pref.requiredTitle": "Cookies nécessaires",
  "cookie.pref.requiredText": "Requis pour le panier, la connexion compte et la securite.",
  "cookie.pref.requiredBadge": "Toujours actifs",
  "cookie.pref.analyticsTitle": "Cookies de mesure d'audience",
  "cookie.pref.analyticsText": "Permettent d'analyser l'usage du site pour améliorer l'expérience.",
  "cookie.pref.enable": "Activer",
  "cookie.pref.save": "Enregistrer mes préférences",
  "cookie.pref.rejectAll": "Tout refuser",
  "cookie.pref.acceptAll": "Tout accepter",
  "cookie.pref.saved": "Préférences cookies enregistrées.",
};

export function toResolvedSiteText(overrides?: SiteTextMap | null): SiteTextMap {
  return {
    ...defaultSiteText,
    ...(overrides || {}),
  };
}

export function text(siteText: SiteTextMap, key: string, fallback?: string) {
  return siteText[key] || fallback || key;
}
