🏅 Emojis et badgesGratuit · 0 NahnahPar NAHNAH AI
Pastilles d’étiquettes
Rangée de pastilles (plein, contour, doux, point lumineux, ombre portée) avec pictogramme ou emoji, qui apparaissent en cascade et se soulèvent au survol.
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-badges-pastilles.liquid (Liquid, CSS et JS inclus).
{%- comment -%} NAHNAH AI · Pastilles d’étiquettes (bibliothèque Sections & effets) {%- endcomment -%}
<div class="nn-badges-pastilles nn-badges-pastilles--{{ section.settings.alignement }}" data-nn-invitation="{{ section.settings.invitation }}" 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 }};">
{%- if section.settings.titre != blank -%}<h2 class="nn-badges-pastilles__titre">{{ section.settings.titre | escape }}</h2>{%- endif -%}
<ul class="nn-badges-pastilles__liste nn-badges-pastilles__liste--{{ section.settings.taille }}" role="list">
{%- for block in section.blocks -%}
<li class="nn-badges-pastilles__item" style="--nn-i: {{ forloop.index0 }}; --nn-couleur: {{ block.settings.couleur }};" {{ block.shopify_attributes }}>
{%- if block.settings.lien != blank -%}<a class="nn-badges-pastilles__pastille nn-badges-pastilles__pastille--{{ block.settings.variante }}" href="{{ block.settings.lien }}" data-nn-cycle>{%- else -%}<span class="nn-badges-pastilles__pastille nn-badges-pastilles__pastille--{{ block.settings.variante }}" data-nn-cycle>{%- endif -%}
{%- if block.settings.variante == 'point' -%}<span class="nn-badges-pastilles__point" aria-hidden="true"></span>{%- endif -%}
{%- if block.settings.emoji != blank -%}
<span class="nn-badges-pastilles__emoji" aria-hidden="true">{{ block.settings.emoji | escape }}</span>
{%- elsif block.settings.picto != 'aucun' -%}
<svg class="nn-badges-pastilles__picto" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">{%- case block.settings.picto -%}{%- when 'coche' -%}<path d="m5 12.5 4.5 4.5L19 7.5"/>{%- when 'feuille' -%}<path d="M5 19.5C4.5 11 9.5 5 19.5 4.5 20 14 14.5 19.5 5 19.5z"/><path d="M5 19.5 13 11.5"/>{%- when 'camion' -%}<path d="M2.5 6.5h11v9h-11zM13.5 9.5h4l3 3.2v2.8h-7"/><circle cx="7" cy="17.5" r="1.8"/><circle cx="16.5" cy="17.5" r="1.8"/>{%- when 'coeur' -%}<path d="M12 20.5 4.6 13.2a4.6 4.6 0 0 1 6.5-6.5l.9.9.9-.9a4.6 4.6 0 0 1 6.5 6.5z"/>{%- when 'etoile' -%}<path d="m12 3.5 2.6 5.3 5.9.9-4.3 4.1 1 5.8-5.2-2.7-5.2 2.7 1-5.8-4.3-4.1 5.9-.9z"/>{%- when 'main' -%}<path d="M8 12V5.5a1.5 1.5 0 0 1 3 0V11M11 10V4.5a1.5 1.5 0 0 1 3 0V11M14 10.5V6a1.5 1.5 0 0 1 3 0v7.5a7 7 0 0 1-7 7h-.5a6 6 0 0 1-5-2.7L3.2 15a1.6 1.6 0 0 1 2.6-1.8L8 15.5"/>{%- endcase -%}</svg>
{%- endif -%}
<span class="nn-badges-pastilles__texte">{{ block.settings.texte | escape }}</span>
{%- if block.settings.lien != blank -%}</a>{%- else -%}</span>{%- endif -%}
</li>
{%- endfor -%}
</ul>
</div>
{% schema %}
{
"name": "Pastilles d’étiquettes",
"tag": "section",
"class": "nn-section-badges-pastilles",
"max_blocks": 12,
"settings": [
{
"type": "text",
"id": "titre",
"label": "Titre au-dessus (facultatif)",
"default": ""
},
{
"type": "select",
"id": "taille",
"label": "Taille",
"options": [
{
"value": "petite",
"label": "Petite"
},
{
"value": "moyenne",
"label": "Moyenne"
}
],
"default": "moyenne"
},
{
"type": "select",
"id": "alignement",
"label": "Alignement",
"options": [
{
"value": "centre",
"label": "Centré"
},
{
"value": "gauche",
"label": "À gauche"
}
],
"default": "centre"
},
{
"type": "checkbox",
"id": "invitation",
"label": "Jouer l’effet tout seul quand la section est visible",
"default": false
},
{
"type": "paragraph",
"content": "Les animations sont coupées automatiquement si le visiteur a demandé à réduire les animations."
},
{
"type": "header",
"content": "Couleurs"
},
{
"type": "color",
"id": "couleur_fond",
"label": "Fond",
"default": "#FFFFFF"
},
{
"type": "color",
"id": "couleur_texte",
"label": "Texte",
"default": "#1B1B1F"
},
{
"type": "color",
"id": "couleur_accent",
"label": "Accent",
"default": "#7C5CFF"
},
{
"type": "header",
"content": "Espacement"
},
{
"type": "range",
"id": "marge_haut",
"label": "Marge haute",
"min": 0,
"max": 120,
"step": 4,
"unit": "px",
"default": 32
},
{
"type": "range",
"id": "marge_bas",
"label": "Marge basse",
"min": 0,
"max": 120,
"step": 4,
"unit": "px",
"default": 32
}
],
"blocks": [
{
"type": "pastille",
"name": "Pastille",
"settings": [
{
"type": "text",
"id": "texte",
"label": "Texte",
"default": "Livraison suivie"
},
{
"type": "select",
"id": "variante",
"label": "Style",
"options": [
{
"value": "plein",
"label": "Plein"
},
{
"value": "contour",
"label": "Contour"
},
{
"value": "doux",
"label": "Doux"
},
{
"value": "point",
"label": "Point lumineux"
},
{
"value": "ombre",
"label": "Ombre portée"
}
],
"default": "plein"
},
{
"type": "select",
"id": "picto",
"label": "Pictogramme",
"options": [
{
"value": "aucun",
"label": "Aucune"
},
{
"value": "coche",
"label": "Coche"
},
{
"value": "feuille",
"label": "Feuille"
},
{
"value": "camion",
"label": "Camion"
},
{
"value": "coeur",
"label": "Cœur"
},
{
"value": "etoile",
"label": "Étoile"
},
{
"value": "main",
"label": "Fait main"
}
],
"default": "aucun"
},
{
"type": "text",
"id": "emoji",
"label": "Emoji (remplace le pictogramme, facultatif)",
"default": ""
},
{
"type": "color",
"id": "couleur",
"label": "Couleur",
"default": "#7C5CFF"
},
{
"type": "url",
"id": "lien",
"label": "Lien (facultatif)"
}
]
}
],
"presets": [
{
"name": "Pastilles d’étiquettes",
"blocks": [
{
"type": "pastille",
"settings": {
"texte": "Livraison suivie",
"variante": "plein",
"picto": "camion",
"couleur": "#7C5CFF"
}
},
{
"type": "pastille",
"settings": {
"texte": "Fait main",
"variante": "contour",
"picto": "main",
"couleur": "#E85D3A"
}
},
{
"type": "pastille",
"settings": {
"texte": "Ingrédients naturels",
"variante": "doux",
"picto": "feuille",
"couleur": "#2F9E5A"
}
},
{
"type": "pastille",
"settings": {
"texte": "En stock",
"variante": "point",
"picto": "aucun",
"couleur": "#18A957"
}
},
{
"type": "pastille",
"settings": {
"texte": "Idée cadeau",
"variante": "ombre",
"emoji": "🎁",
"picto": "aucun",
"couleur": "#F5A524"
}
}
]
}
]
}
{% endschema %}
{% stylesheet %}
.nn-badges-pastilles {
padding: var(--nn-mh) 16px var(--nn-mb);
background: var(--nn-fond);
color: var(--nn-texte);
text-align: center;
}
.nn-badges-pastilles--gauche { text-align: start; }
.nn-badges-pastilles__titre { margin: 0 0 16px; font-size: clamp(20px, 3.4vw, 28px); line-height: 1.25; }
.nn-badges-pastilles[data-nn-hors] * { animation-play-state: paused !important; }
.nn-badges-pastilles__liste { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin: 0; padding: 0; list-style: none; }
.nn-badges-pastilles--gauche .nn-badges-pastilles__liste { justify-content: flex-start; }
.nn-badges-pastilles__item { max-width: 100%; animation: nn-badges-pastilles-entree 0.5s cubic-bezier(0.3, 1.4, 0.5, 1) backwards; animation-delay: calc(var(--nn-i) * 90ms); }
@keyframes nn-badges-pastilles-entree { from { opacity: 0; transform: translateY(8px) scale(0.85); } }
.nn-badges-pastilles__pastille {
display: inline-flex;
align-items: center;
gap: 6px;
max-width: 100%;
padding: 6px 14px;
border: 1.5px solid transparent;
border-radius: 999px;
font-size: 14px;
font-weight: 600;
line-height: 1.3;
text-decoration: none;
transition: transform 0.25s cubic-bezier(0.3, 1.4, 0.5, 1), box-shadow 0.25s ease;
}
.nn-badges-pastilles__liste--petite .nn-badges-pastilles__pastille { padding: 3px 10px; font-size: 12px; }
a.nn-badges-pastilles__pastille { min-height: 44px; }
.nn-badges-pastilles__pastille:focus-visible { outline: 3px solid var(--nn-couleur); outline-offset: 3px; }
.nn-badges-pastilles__texte { min-width: 0; overflow-wrap: anywhere; }
.nn-badges-pastilles__picto { width: 1.15em; height: 1.15em; flex: none; }
.nn-badges-pastilles__emoji { display: inline-block; font-size: 1.1em; line-height: 1; }
.nn-badges-pastilles__pastille--plein { color: #FFFFFF; background: var(--nn-couleur); }
.nn-badges-pastilles__pastille--contour { color: var(--nn-couleur); border-color: var(--nn-couleur); }
.nn-badges-pastilles__pastille--doux { color: color-mix(in srgb, var(--nn-couleur) 75%, #000000); background: color-mix(in srgb, var(--nn-couleur) 15%, transparent); }
.nn-badges-pastilles__pastille--point { color: var(--nn-texte); border-color: color-mix(in srgb, var(--nn-texte) 18%, transparent); }
.nn-badges-pastilles__pastille--ombre { color: #FFFFFF; background: var(--nn-couleur); box-shadow: 0 6px 16px color-mix(in srgb, var(--nn-couleur) 45%, transparent); }
.nn-badges-pastilles__point { position: relative; flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--nn-couleur); }
.nn-badges-pastilles__point::after { content: ""; position: absolute; inset: 0; border-radius: 50%; background: var(--nn-couleur); animation: nn-badges-pastilles-point 1.8s ease-out infinite; }
@keyframes nn-badges-pastilles-point { from { transform: scale(1); opacity: 0.7; } to { transform: scale(2.8); opacity: 0; } }
@keyframes nn-badges-pastilles-saut { 0%, 100% { transform: translateY(0) rotate(0); } 40% { transform: translateY(-4px) rotate(-10deg); } 70% { transform: translateY(0) rotate(6deg); } }
@media (hover: hover) { .nn-badges-pastilles__pastille:hover { transform: translateY(-3px); box-shadow: 0 8px 18px color-mix(in srgb, var(--nn-couleur) 30%, transparent); } }
.nn-badges-pastilles__pastille:focus-visible, .nn-badges-pastilles__pastille[data-nn-actif], [data-nn-demo] .nn-badges-pastilles__pastille { transform: translateY(-3px); box-shadow: 0 8px 18px color-mix(in srgb, var(--nn-couleur) 30%, transparent); }
@media (hover: hover) { .nn-badges-pastilles__pastille:hover .nn-badges-pastilles__emoji { animation: nn-badges-pastilles-saut 0.7s ease-in-out; } }
.nn-badges-pastilles__pastille:focus-visible .nn-badges-pastilles__emoji, .nn-badges-pastilles__pastille[data-nn-actif] .nn-badges-pastilles__emoji, [data-nn-demo] .nn-badges-pastilles__pastille .nn-badges-pastilles__emoji { animation: nn-badges-pastilles-saut 0.7s ease-in-out; }
@media (hover: hover) { .nn-badges-pastilles__pastille:hover .nn-badges-pastilles__picto { animation: nn-badges-pastilles-saut 0.7s ease-in-out; } }
.nn-badges-pastilles__pastille:focus-visible .nn-badges-pastilles__picto, .nn-badges-pastilles__pastille[data-nn-actif] .nn-badges-pastilles__picto, [data-nn-demo] .nn-badges-pastilles__pastille .nn-badges-pastilles__picto { animation: nn-badges-pastilles-saut 0.7s ease-in-out; }
@media (prefers-reduced-motion: reduce) {
.nn-badges-pastilles *, .nn-badges-pastilles *::before, .nn-badges-pastilles *::after {
animation: none !important;
transition: none !important;
}
}
{% endstylesheet %}
{% javascript %}
(function () {
// Invitation : l'effet du survol se joue tout seul, élément après élément, quand la section est à l'écran
var reduit = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
function brancher(racine) {
if (racine.dataset.nnCyclePret) return;
racine.dataset.nnCyclePret = "1";
if (reduit || racine.getAttribute("data-nn-invitation") !== "true" || !("IntersectionObserver" in window)) return;
var items = racine.querySelectorAll("[data-nn-cycle]");
if (!items.length) return;
var i = 0;
var minuteur = null;
function jouer() {
var el = items[i % items.length];
i++;
el.setAttribute("data-nn-actif", "");
setTimeout(function () { el.removeAttribute("data-nn-actif"); }, 900);
}
new IntersectionObserver(function (entrees) {
var visible = entrees[0].isIntersecting;
if (visible && !minuteur) { jouer(); minuteur = setInterval(jouer, 1100); }
else if (!visible && minuteur) { clearInterval(minuteur); minuteur = null; }
}).observe(racine);
}
function tout() { document.querySelectorAll(".nn-badges-pastilles[data-nn-invitation]").forEach(brancher); }
tout();
document.addEventListener("shopify:section:load", tout);
})();
(function () {
// Animations en pause quand la section n'est pas à l'écran
if (!("IntersectionObserver" in window)) return;
function brancher(racine) {
if (racine.dataset.nnPausePret) return;
racine.dataset.nnPausePret = "1";
new IntersectionObserver(function (entrees) {
if (entrees[0].isIntersecting) racine.removeAttribute("data-nn-hors");
else racine.setAttribute("data-nn-hors", "");
}).observe(racine);
}
function tout() { document.querySelectorAll(".nn-badges-pastilles").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 : « Pastilles d’étiquettes » (Emojis et badges)
Description : Rangée de pastilles (plein, contour, doux, point lumineux, ombre portée) avec pictogramme ou emoji, qui apparaissent en cascade et se soulèvent au survol.
Page de l’élément (aperçu en direct) : https://ai.nahnah.shop/bibliotheque-shopify/badges-pastilles
Fichier : nahnah-badges-pastilles.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-badges-pastilles.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-badges-pastilles ».
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 : badges-pastilles).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-badges-pastilles ».
- 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 badges-pastilles 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