🛍️ Fiches produitGratuit · 0 NahnahPar NAHNAH
Jauge livraison offerte
Barre de progression qui lit le panier en direct et indique combien il reste à ajouter pour obtenir la livraison offerte.
Aperçu en direct
Données de démonstration (produits, menus, textes d’exemple) : dans ta boutique, ce sont les tiennes.
Photos : Unsplash / Pexels (exemples de l’aperçu, jamais inclus dans le code).
Code à copier
Fichier complet sections/nahnah-fiches-produit-palier-livraison-offerte.liquid (Liquid, CSS et JS inclus).
{%- comment -%} NAHNAH AI · Jauge livraison offerte {%- endcomment -%}
{%- assign nn_seuil = section.settings.seuil | times: 100 -%}
<div class="nn-fiches-produit-palier-livraison-offerte" style="--nn-mh: {{ section.settings.marge_haut }}px; --nn-mb: {{ section.settings.marge_bas }}px; --nn-fond: {{ section.settings.couleur_fond }}; --nn-texte: {{ section.settings.couleur_texte }}; --nn-accent: {{ section.settings.couleur_accent }};" data-nn-seuil="{{ nn_seuil }}" data-nn-total="{{ cart.total_price }}" data-nn-format="{{ 1234 | money | escape }}">
<div class="nn-fiches-produit-palier-livraison-offerte__carte">
<p class="nn-fiches-produit-palier-livraison-offerte__texte" aria-live="polite" data-nn-texte>{{ section.settings.texte_reste | escape }}</p>
<div class="nn-fiches-produit-palier-livraison-offerte__piste" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0" data-nn-barre>
<span class="nn-fiches-produit-palier-livraison-offerte__remplissage" data-nn-remplissage></span>
<span class="nn-fiches-produit-palier-livraison-offerte__camion" aria-hidden="true">🚚</span>
</div>
</div>
<template data-nn-gagne>{{ section.settings.texte_gagne | escape }}</template>
</div>
{% schema %}
{
"name": "Jauge livraison offerte",
"tag": "section",
"class": "nn-section-fiches-produit-palier-livraison-offerte",
"settings": [
{ "type": "number", "id": "seuil", "label": "Seuil de livraison offerte (dans ta devise)", "default": 50 },
{ "type": "text", "id": "texte_reste", "label": "Texte en cours ([montant] = reste)", "default": "Plus que [montant] pour la livraison offerte !" },
{ "type": "text", "id": "texte_gagne", "label": "Texte seuil atteint", "default": "Bravo, ta livraison est offerte 🎉" },
{ "type": "header", "content": "Couleurs" },
{ "type": "color", "id": "couleur_fond", "label": "Fond", "default": "#FFF7ED" },
{ "type": "color", "id": "couleur_texte", "label": "Texte", "default": "#7C2D12" },
{ "type": "color", "id": "couleur_accent", "label": "Accent", "default": "#F97316" },
{ "type": "header", "content": "Espacement" },
{ "type": "range", "id": "marge_haut", "label": "Marge haute", "min": 0, "max": 120, "step": 4, "unit": "px", "default": 16 },
{ "type": "range", "id": "marge_bas", "label": "Marge basse", "min": 0, "max": 120, "step": 4, "unit": "px", "default": 16 }
],
"presets": [ { "name": "Jauge livraison offerte" } ]
}
{% endschema %}
{% stylesheet %}
.nn-fiches-produit-palier-livraison-offerte { padding: var(--nn-mh) 16px var(--nn-mb); }
.nn-fiches-produit-palier-livraison-offerte__carte { max-width: 560px; margin: 0 auto; padding: 16px 18px; border-radius: 14px; background: var(--nn-fond); color: var(--nn-texte); }
.nn-fiches-produit-palier-livraison-offerte__texte { margin: 0 0 12px; font-size: 15px; font-weight: 600; }
.nn-fiches-produit-palier-livraison-offerte__texte strong { color: var(--nn-accent); }
.nn-fiches-produit-palier-livraison-offerte__piste { position: relative; height: 10px; border-radius: 10px; background: color-mix(in srgb, var(--nn-accent) 18%, transparent); }
.nn-fiches-produit-palier-livraison-offerte__remplissage { position: absolute; inset: 0 auto 0 0; width: 0; border-radius: 10px; background: linear-gradient(90deg, color-mix(in srgb, var(--nn-accent) 60%, #FFFFFF), var(--nn-accent)); transition: width .8s cubic-bezier(.3,1.2,.5,1); }
.nn-fiches-produit-palier-livraison-offerte__camion { position: absolute; top: 50%; left: 0; transform: translate(-50%, -55%); font-size: 20px; transition: left .8s cubic-bezier(.3,1.2,.5,1); }
.nn-fiches-produit-palier-livraison-offerte--gagne .nn-fiches-produit-palier-livraison-offerte__camion { animation: nn-fiches-produit-palier-livraison-offerte-saut .6s ease 2; }
@keyframes nn-fiches-produit-palier-livraison-offerte-saut { 50% { transform: translate(-50%, -110%); } }
@media (prefers-reduced-motion: reduce) {
.nn-fiches-produit-palier-livraison-offerte *, .nn-fiches-produit-palier-livraison-offerte *::before { transition: none !important; animation: none !important; }
}
{% endstylesheet %}
{% javascript %}
(function () {
// Formate un montant en centimes à partir du format de la boutique (modèle basé sur 12,34)
function formater(cents, modele) {
var v = (cents / 100).toFixed(2), sep = /12,34/.test(modele) ? "," : ".";
return /12[.,]34/.test(modele) ? modele.replace(/12[.,]34/, v.replace(".", sep)) : v;
}
function echapper(t) { return t.replace(/[&<>"]/g, function (c) { return { "&": "&", "<": "<", ">": ">", '"': """ }[c]; }); }
function brancher(racine) {
if (racine.dataset.nnPret) return;
racine.dataset.nnPret = "1";
var seuil = +racine.getAttribute("data-nn-seuil") || 5000, modele = racine.getAttribute("data-nn-format") || "";
var texte = racine.querySelector("[data-nn-texte]"), modeleTexte = texte.textContent, barre = racine.querySelector("[data-nn-barre]");
var rempl = racine.querySelector("[data-nn-remplissage]"), camion = racine.querySelector(".nn-fiches-produit-palier-livraison-offerte__camion");
var tpl = racine.querySelector("[data-nn-gagne]"), gagne = tpl ? tpl.innerHTML.trim() : "";
// Affiche la progression selon le total du panier
function afficher(total) {
var p = Math.min(100, Math.round(total / seuil * 100));
rempl.style.width = p + "%"; camion.style.left = p + "%"; barre.setAttribute("aria-valuenow", p);
if (total >= seuil) { texte.innerHTML = gagne; racine.classList.add("nn-fiches-produit-palier-livraison-offerte--gagne"); }
else { texte.innerHTML = echapper(modeleTexte).replace("[montant]", "<strong>" + echapper(formater(seuil - total, modele)) + "</strong>"); racine.classList.remove("nn-fiches-produit-palier-livraison-offerte--gagne"); }
}
function relire() { fetch("/cart.js").then(function (r) { return r.json(); }).then(function (c) { afficher(c.total_price); }).catch(function () {}); }
afficher(+racine.getAttribute("data-nn-total") || 0);
// Relit le panier quand un article est ajouté (événements courants des thèmes)
["cart:updated", "cart:refresh", "cart:change"].forEach(function (ev) { document.addEventListener(ev, relire); });
document.addEventListener("submit", function (e) { if (e.target && /\/cart\/add/.test(e.target.action || "")) setTimeout(relire, 900); });
}
function tout() { document.querySelectorAll(".nn-fiches-produit-palier-livraison-offerte").forEach(brancher); }
tout();
document.addEventListener("shopify:section:load", tout);
})();
{% endjavascript %}
Licence NAHNAH AI : utilisation libre dans tes boutiques (y compris commerciales), modification permise, revente de l’élément seul interdite.
Prompt à copier
À coller dans Claude ou ChatGPT avec le fichier téléchargé (ou le code copié) : l’assistant t’aide à l’installer et à l’adapter à ta marque.
Tu es un expert des thèmes Shopify Online Store 2.0. Aide-moi à installer puis à adapter à ma marque cet élément gratuit de la bibliothèque NAHNAH AI.
Élément : « Jauge livraison offerte » (Fiches produit)
Description : Barre de progression qui lit le panier en direct et indique combien il reste à ajouter pour obtenir la livraison offerte.
Page de l’élément (aperçu en direct) : https://ai.nahnah.shop/bibliotheque-shopify/fiches-produit-palier-livraison-offerte
Fichier : nahnah-fiches-produit-palier-livraison-offerte.liquid (bouton « Télécharger » de la page) ou le code copié avec le bouton « Copier » : je te le joins ou je le colle après ce message.
Emplacement dans le thème : sections/nahnah-fiches-produit-palier-livraison-offerte.liquid (Liquid, puis {% stylesheet %} et {% javascript %}, dans ce seul fichier).
Étapes d’installation :
1. Dans Shopify : Boutique en ligne → Thèmes → bouton « … » du thème → Modifier le code.
2. Dossier « sections » → « Ajouter une section » (ou « Nouveau fichier ») → nomme-la « nahnah-fiches-produit-palier-livraison-offerte ».
3. Efface le contenu proposé, colle le code de l’onglet Liquid (fichier complet), puis Enregistrer.
4. Ouvre Personnaliser → Ajouter une section → choisis-la, règle les textes et les couleurs, puis Enregistrer.
Ce que j’attends de toi :
- Guide-moi pas à pas dans Shopify : Boutique en ligne → Thèmes → « … » → Modifier le code → dossier sections → Ajouter une section, puis Personnaliser → Ajouter une section.
- Propose-moi d’adapter les couleurs, les textes et les liens à ma marque : demande d’abord mes couleurs (codes hexadécimaux), mon ton et mes liens.
- Garde le bloc {% schema %} et tous ses réglages (identifiants, types, presets) : je dois pouvoir tout régler ensuite dans l’éditeur de thème.
- Rends-moi le fichier complet modifié, prêt à coller, sans faux avis, fausse urgence ni chiffre inventé.
Si tu as le connecteur NAHNAH AI (MCP), récupère directement le code exact avec l’outil obtenir_code_element (id : fiches-produit-palier-livraison-offerte).Installer dans ma boutique
En un clic, la section est ajoutée à un thème de ta boutique Shopify connectée (un thème non publié par défaut).
Chargement de tes boutiques…
Installer dans Shopify
- Dans Shopify : Boutique en ligne → Thèmes → bouton « … » du thème → Modifier le code.
- Dossier « sections » → « Ajouter une section » (ou « Nouveau fichier ») → nomme-la « nahnah-fiches-produit-palier-livraison-offerte ».
- Efface le contenu proposé, colle le code de l’onglet Liquid (fichier complet), puis Enregistrer.
- Ouvre Personnaliser → Ajouter une section → choisis-la, règle les textes et les couleurs, puis Enregistrer.
Installer via le MCP
Depuis Claude, Claude Code ou ChatGPT connecté à NAHNAH AI, demande : « Donne-moi le code de l’élément fiches-produit-palier-livraison-offerte de la bibliothèque NAHNAH AI et les étapes pour l’installer ». L’assistant récupère le code et les étapes (outil obtenir_code_element), gratuitement.
Boutique connectée à NAHNAH AI : l’assistant peut aussi l’installer directement (outil installer_element).
Connecter le MCP