Aller au contenu

🎨 Thèmes completsGratuit · 0 NahnahPar NAHNAH

Thème Truffe

Thème complet pour animalerie, ludique et graphique : contours épais, ombres décalées, cartes inclinables en 3D, compteurs et bandeau défilant.

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/nn-th-truffe.liquid (Liquid, CSS et JS inclus).

{%- comment -%} NAHNAH AI · Thème Truffe {%- endcomment -%}
<div class="nn-themes-truffe" style="--nn-fond: {{ section.settings.couleur_fond }}; --nn-texte: {{ section.settings.couleur_texte }}; --nn-accent: {{ section.settings.couleur_accent }};">
  <header class="nn-themes-truffe__entete" data-nn-sticky>
    <a class="nn-themes-truffe__marque" href="{{ routes.root_url }}">{{ shop.name | escape }}</a>
    <nav class="nn-themes-truffe__nav">{%- for l in linklists[section.settings.menu].links limit: 5 -%}<a href="{{ l.url }}">{{ l.title | escape }}</a>{%- endfor -%}</nav>
    <a class="nn-themes-truffe__panier" href="{{ routes.cart_url }}">Panier ({{ cart.item_count }})</a>
  </header>
  <section class="nn-themes-truffe__heros" data-nn-spot>
    <div class="nn-themes-truffe__halo" aria-hidden="true"></div>
    {%- if section.settings.image_heros -%}<div class="nn-themes-truffe__visuel" data-nn-parallaxe="0.18">{{ section.settings.image_heros | image_url: width: 1800 | image_tag: loading: 'eager', alt: section.settings.titre }}</div>{%- endif -%}
    <div class="nn-themes-truffe__heros-txt" data-nn-reveal>
      <p class="nn-themes-truffe__surtitre">{{ section.settings.surtitre | escape }}</p>
      <h1>{{ section.settings.titre | escape }}</h1>
      {%- if section.settings.texte != blank -%}<p class="nn-themes-truffe__chapo">{{ section.settings.texte | escape }}</p>{%- endif -%}
      <a class="nn-themes-truffe__btn" href="{{ section.settings.lien_bouton | default: routes.all_products_collection_url }}">{{ section.settings.bouton | escape }}</a>
    </div>
  </section>
  {%- if section.settings.bandeau != blank -%}<div class="nn-themes-truffe__bandeau" aria-hidden="true"><div class="nn-themes-truffe__piste">{%- for i in (1..6) -%}<span>{{ section.settings.bandeau | escape }}</span>{%- endfor -%}</div></div>{%- endif -%}
  <section class="nn-themes-truffe__collections">
    <h2 data-nn-reveal>{{ section.settings.titre_collections | escape }}</h2>
    <div class="nn-themes-truffe__grille">
      {%- for c in section.settings.collections -%}<a class="nn-themes-truffe__col" href="{{ c.url }}" data-nn-reveal data-nn-tilt>{%- if c.featured_image -%}{{ c.featured_image | image_url: width: 900 | image_tag: loading: 'lazy', alt: c.title }}{%- else -%}{{ 'collection-1' | placeholder_svg_tag }}{%- endif -%}<span>{{ c.title | escape }}</span></a>{%- else -%}{%- for i in (1..3) -%}<div class="nn-themes-truffe__col" data-nn-reveal>{{ 'collection-1' | placeholder_svg_tag }}<span>Choisis tes collections</span></div>{%- endfor -%}{%- endfor -%}
    </div>
  </section>
  <section class="nn-themes-truffe__vedettes">
    <div class="nn-themes-truffe__tete"><h2 data-nn-reveal>{{ section.settings.titre_produits | escape }}</h2><div class="nn-themes-truffe__fleches"><button type="button" data-nn-prec aria-label="Produits précédents">←</button><button type="button" data-nn-suiv aria-label="Produits suivants">→</button></div></div>
    <div class="nn-themes-truffe__carrousel" data-nn-carrousel>
      {%- for p in section.settings.collection_vedette.products limit: section.settings.nb_produits -%}<a class="nn-themes-truffe__produit" href="{{ p.url }}" data-nn-tilt><span class="nn-themes-truffe__img">{%- if p.featured_image -%}{{ p.featured_image | image_url: width: 700 | image_tag: loading: 'lazy', alt: p.title }}{%- else -%}{{ 'product-1' | placeholder_svg_tag }}{%- endif -%}</span><span class="nn-themes-truffe__nom">{{ p.title | escape }}</span><span class="nn-themes-truffe__prix">{{ p.price | money }}</span></a>{%- else -%}{%- for i in (1..4) -%}<div class="nn-themes-truffe__produit"><span class="nn-themes-truffe__img">{{ 'product-1' | placeholder_svg_tag }}</span><span class="nn-themes-truffe__nom">Choisis une collection vedette</span></div>{%- endfor -%}{%- endfor -%}
    </div>
  </section>
  <section class="nn-themes-truffe__histoire">
    <div class="nn-themes-truffe__recit" data-nn-reveal><h2>{{ section.settings.titre_histoire | escape }}</h2>{{ section.settings.texte_histoire }}</div>
    <div class="nn-themes-truffe__chiffres">
      {%- if section.settings.chiffre_1 != blank -%}<p data-nn-reveal><strong data-nn-compte="{{ section.settings.chiffre_1 }}">{{ section.settings.chiffre_1 }}</strong><span>{{ section.settings.legende_1 | escape }}</span></p>{%- endif -%}
      {%- if section.settings.chiffre_2 != blank -%}<p data-nn-reveal><strong data-nn-compte="{{ section.settings.chiffre_2 }}">{{ section.settings.chiffre_2 }}</strong><span>{{ section.settings.legende_2 | escape }}</span></p>{%- endif -%}
      {%- if section.settings.chiffre_3 != blank -%}<p data-nn-reveal><strong data-nn-compte="{{ section.settings.chiffre_3 }}">{{ section.settings.chiffre_3 }}</strong><span>{{ section.settings.legende_3 | escape }}</span></p>{%- endif -%}
    </div>
  </section>
  {%- assign avis = section.blocks | where: 'type', 'avis' -%}
  {%- if avis.size > 0 or request.design_mode -%}
  <section class="nn-themes-truffe__avis">
    <h2 data-nn-reveal>{{ section.settings.titre_avis | escape }}</h2>
    <div class="nn-themes-truffe__liste-avis">
      {%- for b in avis -%}{%- if b.settings.texte != blank -%}<figure class="nn-themes-truffe__carte-avis" data-nn-reveal {{ b.shopify_attributes }}><blockquote>{{ b.settings.texte | escape }}</blockquote><figcaption>{{ b.settings.auteur | escape }}</figcaption></figure>{%- endif -%}{%- endfor -%}
      {%- if avis.size == 0 -%}<p class="nn-themes-truffe__aide">Ajoute ici les vrais avis de tes clients avec le bloc « Avis client ».</p>{%- endif -%}
    </div>
  </section>
  {%- endif -%}
  <section class="nn-themes-truffe__faq">
    <h2 data-nn-reveal>{{ section.settings.titre_faq | escape }}</h2>
    {%- for b in section.blocks -%}{%- if b.type == 'question' -%}<details class="nn-themes-truffe__question" data-nn-reveal {{ b.shopify_attributes }}><summary>{{ b.settings.question | escape }}</summary><div>{{ b.settings.reponse }}</div></details>{%- endif -%}{%- endfor -%}
  </section>
  <footer class="nn-themes-truffe__pied">
    <div><p class="nn-themes-truffe__marque">{{ shop.name | escape }}</p><nav>{%- for l in linklists[section.settings.menu_pied].links -%}<a href="{{ l.url }}">{{ l.title | escape }}</a>{%- endfor -%}</nav></div>
    {%- form 'customer' -%}<input type="hidden" name="contact[tags]" value="newsletter"><input type="email" name="contact[email]" placeholder="Votre e-mail" required aria-label="E-mail"><button type="submit">{{ section.settings.bouton_newsletter | escape }}</button>{%- endform -%}
    <small>© {{ 'now' | date: '%Y' }} {{ shop.name | escape }}</small>
  </footer>
</div>
{% schema %}
{"name":"Thème Truffe","settings":[
{"type":"header","content":"En-tête"},
{"type":"link_list","id":"menu","label":"Menu principal","default":"main-menu"},
{"type":"header","content":"Héros"},
{"type":"image_picker","id":"image_heros","label":"Image du héros"},
{"type":"text","id":"surtitre","label":"Surtitre","default":"Pour chiens et chats"},
{"type":"text","id":"titre","label":"Titre","default":"Le bonheur a quatre pattes"},
{"type":"textarea","id":"texte","label":"Texte","default":"Jouets, couchages et accessoires choisis pour leur confort."},
{"type":"text","id":"bouton","label":"Bouton","default":"Découvrir"},
{"type":"url","id":"lien_bouton","label":"Lien du bouton"},
{"type":"text","id":"bandeau","label":"Texte du bandeau défilant","default":"Jouer · Dormir · Se promener · Croquer"},
{"type":"header","content":"Collections"},
{"type":"text","id":"titre_collections","label":"Titre","default":"Par compagnon"},
{"type":"collection_list","id":"collections","label":"Collections","limit":3},
{"type":"header","content":"Produits vedettes"},
{"type":"text","id":"titre_produits","label":"Titre","default":"Les favoris du moment"},
{"type":"collection","id":"collection_vedette","label":"Collection vedette"},
{"type":"range","id":"nb_produits","label":"Nombre de produits","min":3,"max":12,"step":1,"default":8},
{"type":"header","content":"Histoire"},
{"type":"text","id":"titre_histoire","label":"Titre","default":"Notre histoire"},
{"type":"richtext","id":"texte_histoire","label":"Texte","default":"<p>Raconte ici comment ta marque est née et ce qui guide tes choix.</p>"},
{"type":"number","id":"chiffre_1","label":"Chiffre 1 (laisser vide pour masquer)"},
{"type":"text","id":"legende_1","label":"Légende 1"},
{"type":"number","id":"chiffre_2","label":"Chiffre 2"},
{"type":"text","id":"legende_2","label":"Légende 2"},
{"type":"number","id":"chiffre_3","label":"Chiffre 3"},
{"type":"text","id":"legende_3","label":"Légende 3"},
{"type":"header","content":"Avis et FAQ"},
{"type":"text","id":"titre_avis","label":"Titre des avis","default":"Ils en parlent"},
{"type":"text","id":"titre_faq","label":"Titre de la FAQ","default":"Questions fréquentes"},
{"type":"header","content":"Pied de page"},
{"type":"link_list","id":"menu_pied","label":"Menu du pied","default":"footer"},
{"type":"text","id":"bouton_newsletter","label":"Bouton newsletter","default":"S'inscrire"},
{"type":"header","content":"Couleurs"},
{"type":"color","id":"couleur_fond","label":"Fond","default":"#FFF6E5"},
{"type":"color","id":"couleur_texte","label":"Texte","default":"#1F2A2E"},
{"type":"color","id":"couleur_accent","label":"Accent","default":"#FF7A45"}],
"blocks":[
{"type":"avis","name":"Avis client","settings":[{"type":"textarea","id":"texte","label":"Avis (copie un vrai avis client)"},{"type":"text","id":"auteur","label":"Prénom du client"}]},
{"type":"question","name":"Question FAQ","settings":[{"type":"text","id":"question","label":"Question","default":"Quels sont les délais de livraison ?"},{"type":"richtext","id":"reponse","label":"Réponse","default":"<p>Indique ici tes délais réels.</p>"}]}],
"presets":[{"name":"Thème Truffe","blocks":[{"type":"question"},{"type":"question","settings":{"question":"Puis-je retourner un article ?","reponse":"<p>Décris ici ta politique de retour.</p>"}}]}]}
{% endschema %}

{% stylesheet %}
/* NAHNAH AI · Thème Truffe */
.nn-themes-truffe{background:var(--nn-fond);color:var(--nn-texte);font-family:"Nunito",system-ui,sans-serif;overflow-x:clip}
.nn-themes-truffe a{color:inherit;text-decoration:none}
.nn-themes-truffe h1,.nn-themes-truffe h2{font-family:"Arial Rounded MT Bold","Nunito",system-ui,sans-serif;margin:0}
.nn-themes-truffe h2{font-size:clamp(28px,4.5vw,52px);margin-bottom:28px;font-style:normal;line-height:1.05}
.nn-themes-truffe__entete{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:22px 16px;font-size:14px;transition:padding .4s,background .4s,box-shadow .4s}
.nn-themes-truffe__entete.est-colle{padding:12px 16px;background:color-mix(in srgb,var(--nn-fond) 90%,transparent);backdrop-filter:blur(12px);box-shadow:0 1px 0 color-mix(in srgb,var(--nn-texte) 15%,transparent)}
.nn-themes-truffe__marque{font-family:"Arial Rounded MT Bold","Nunito",system-ui,sans-serif;font-size:22px;font-style:normal;font-weight:700}
.nn-themes-truffe__nav{display:flex;gap:22px;flex-wrap:wrap}
.nn-themes-truffe__nav a:hover,.nn-themes-truffe__pied a:hover{color:var(--nn-accent)}
.nn-themes-truffe__heros{--nn-x:50%;--nn-y:40%;position:relative;min-height:84vh;display:grid;align-items:center;padding:60px 16px;overflow:hidden;isolation:isolate}
.nn-themes-truffe__halo{position:absolute;inset:0;z-index:-1;background:radial-gradient(480px circle at var(--nn-x) var(--nn-y),color-mix(in srgb,var(--nn-accent) 35%,transparent),transparent 70%)}
.nn-themes-truffe__visuel{position:absolute;right:4%;top:8%;width:min(42vw,520px);aspect-ratio:3/4;z-index:-1;overflow:hidden;border-radius:40px;border:3px solid var(--nn-texte);box-shadow:8px 8px 0 var(--nn-texte)}
.nn-themes-truffe__visuel img{width:100%;height:100%;object-fit:cover}
.nn-themes-truffe__heros-txt{max-width:720px}
.nn-themes-truffe__surtitre{font-size:13px;letter-spacing:.2em;text-transform:uppercase;color:var(--nn-accent);font-weight:700}
.nn-themes-truffe h1{font-size:clamp(44px,8.5vw,120px);line-height:.95;font-weight:900;letter-spacing:-.03em;text-transform:none}
.nn-themes-truffe__chapo{max-width:44ch;line-height:1.7;font-size:18px;opacity:.85}
.nn-themes-truffe__btn{display:inline-block;margin-top:18px;padding:16px 32px;font-weight:700;font-size:15px;transition:transform .2s;border-radius:16px;background:var(--nn-texte);color:var(--nn-fond);border:3px solid var(--nn-texte);box-shadow:5px 5px 0 var(--nn-accent)}
.nn-themes-truffe__btn:hover{transform:translateY(-3px)}
.nn-themes-truffe__bandeau{overflow:hidden;border-block:3px solid var(--nn-texte);padding:16px 0;background:color-mix(in srgb,var(--nn-accent) 12%,var(--nn-fond))}
.nn-themes-truffe__piste{display:flex;gap:48px;width:max-content;animation:nn-truffe-defile 28s linear infinite;font-family:"Arial Rounded MT Bold","Nunito",system-ui,sans-serif;font-size:24px;font-weight:700}
.nn-themes-truffe__piste span::after{content:"●";margin-left:48px;color:var(--nn-accent)}
@keyframes nn-truffe-defile{to{transform:translateX(-50%)}}
.nn-themes-truffe__collections,.nn-themes-truffe__vedettes,.nn-themes-truffe__histoire,.nn-themes-truffe__avis,.nn-themes-truffe__faq{padding:80px 16px;max-width:1280px;margin:0 auto}
.nn-themes-truffe__grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:24px}
.nn-themes-truffe__col{position:relative;display:block;aspect-ratio:4/5;overflow:hidden;border-radius:40px;border:3px solid var(--nn-texte);box-shadow:8px 8px 0 var(--nn-texte)}
.nn-themes-truffe__col img,.nn-themes-truffe__col svg{width:100%;height:100%;object-fit:cover}
.nn-themes-truffe__col span{position:absolute;left:12px;bottom:12px;padding:10px 18px;background:var(--nn-fond);color:var(--nn-texte);border-radius:24px;font-weight:700}
.nn-themes-truffe [data-nn-tilt]{transform:perspective(900px) rotateX(var(--nn-rx,0deg)) rotateY(var(--nn-ry,0deg));transition:transform .25s ease-out}
.nn-themes-truffe__tete{display:flex;justify-content:space-between;align-items:end;gap:16px;flex-wrap:wrap}
.nn-themes-truffe__fleches{display:flex;gap:8px;margin-bottom:28px}
.nn-themes-truffe__fleches button{width:48px;height:48px;border-radius:24px;border:3px solid var(--nn-texte);background:var(--nn-fond);color:inherit;font-size:18px;cursor:pointer}
.nn-themes-truffe__fleches button:hover{background:var(--nn-accent);color:#fff}
.nn-themes-truffe__carrousel{display:grid;grid-auto-flow:column;grid-auto-columns:min(72vw,280px);gap:22px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:6px 6px 16px}
.nn-themes-truffe__carrousel::-webkit-scrollbar{display:none}
.nn-themes-truffe__produit{display:flex;flex-direction:column;gap:8px;padding:12px;scroll-snap-align:start;border-radius:28px;background:#fff;box-shadow:6px 6px 0 var(--nn-texte);border:3px solid var(--nn-texte)}
.nn-themes-truffe__img{aspect-ratio:1;overflow:hidden;border-radius:calc(24px * .7)}
.nn-themes-truffe__img img,.nn-themes-truffe__img svg{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.nn-themes-truffe__produit:hover img{transform:scale(1.06)}
.nn-themes-truffe__nom{font-weight:700}
.nn-themes-truffe__prix{color:var(--nn-accent);font-weight:700}
.nn-themes-truffe__histoire{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:48px;align-items:center}
.nn-themes-truffe__recit p{line-height:1.8;font-size:18px}
.nn-themes-truffe__chiffres{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:18px}
.nn-themes-truffe__chiffres p{margin:0;padding:24px;display:flex;flex-direction:column;gap:6px;border-radius:28px;background:#fff;box-shadow:6px 6px 0 var(--nn-texte);border:3px solid var(--nn-texte)}
.nn-themes-truffe__chiffres strong{font-family:"Arial Rounded MT Bold","Nunito",system-ui,sans-serif;font-size:clamp(40px,5vw,64px);color:var(--nn-accent)}
.nn-themes-truffe__liste-avis{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:22px}
.nn-themes-truffe__carte-avis{margin:0;padding:28px;border-radius:28px;background:#fff;box-shadow:6px 6px 0 var(--nn-texte);border:3px solid var(--nn-texte)}
.nn-themes-truffe__carte-avis blockquote{margin:0 0 16px;font-size:18px;line-height:1.6}
.nn-themes-truffe__carte-avis figcaption{font-weight:700;color:var(--nn-accent)}
.nn-themes-truffe__aide{opacity:.6;font-style:italic}
.nn-themes-truffe__question{border-bottom:3px solid var(--nn-texte);padding:20px 0}
.nn-themes-truffe__question summary{cursor:pointer;font-size:19px;font-weight:700;list-style:none;display:flex;justify-content:space-between;gap:12px}
.nn-themes-truffe__question summary::after{content:"+";color:var(--nn-accent);transition:transform .3s}
.nn-themes-truffe__question[open] summary::after{transform:rotate(45deg)}
.nn-themes-truffe__question div{line-height:1.7;opacity:.85}
.nn-themes-truffe__pied{display:grid;gap:28px;padding:60px 16px 30px;border-top:3px solid var(--nn-texte);font-size:14px}
.nn-themes-truffe__pied nav{display:flex;gap:18px;flex-wrap:wrap;margin-top:10px}
.nn-themes-truffe__pied form{display:flex;flex-wrap:wrap;gap:8px;max-width:480px}
.nn-themes-truffe__pied input[type=email]{flex:1 1 200px;min-width:0;padding:14px 16px;border:3px solid var(--nn-texte);border-radius:24px;background:transparent;color:inherit;font:inherit}
.nn-themes-truffe__pied button{padding:14px 22px;font:inherit;font-weight:700;cursor:pointer;border-radius:16px;background:var(--nn-texte);color:var(--nn-fond);border:3px solid var(--nn-texte);box-shadow:5px 5px 0 var(--nn-accent)}
@media (max-width:749px){.nn-themes-truffe__visuel{position:relative;right:auto;top:auto;width:100%;margin-bottom:24px}.nn-themes-truffe__heros{align-items:start}}
.nn-themes-truffe.nn-js [data-nn-reveal]{opacity:0;transform:translateY(28px) scale(.98);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.8,.2,1)}
.nn-themes-truffe.nn-js [data-nn-reveal].est-visible{opacity:1;transform:none}
@media (prefers-reduced-motion: reduce){.nn-themes-truffe__piste{animation:none}.nn-themes-truffe.nn-js [data-nn-reveal]{opacity:1;transform:none;transition:none}.nn-themes-truffe [data-nn-tilt],.nn-themes-truffe__img img,.nn-themes-truffe__btn{transition:none;transform:none}}
{% endstylesheet %}

{% javascript %}
// NAHNAH AI · Thème Truffe : menu sticky, halo au curseur, parallaxe, apparition, inclinaison 3D, compteurs et carrousel
(function () {
  var reduit = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
  var tactile = window.matchMedia('(pointer: coarse)').matches;
  document.querySelectorAll('.nn-themes-truffe').forEach(function (racine) {
    racine.classList.add('nn-js');
    // Menu sticky et parallaxe du visuel au défilement
    var entete = racine.querySelector('[data-nn-sticky]');
    var couches = racine.querySelectorAll('[data-nn-parallaxe]');
    function auDefilement() {
      if (entete) entete.classList.toggle('est-colle', window.scrollY > 40);
      if (reduit) return;
      couches.forEach(function (el) {
        var vitesse = parseFloat(el.getAttribute('data-nn-parallaxe')) || 0;
        var haut = el.parentElement.getBoundingClientRect().top;
        el.style.transform = 'translate3d(0,' + (-haut * vitesse).toFixed(1) + 'px,0)';
      });
    }
    window.addEventListener('scroll', auDefilement, { passive: true });
    auDefilement();
    // Compteurs animés de 0 jusqu'à la valeur saisie
    function compter(el) {
      var cible = parseFloat(el.getAttribute('data-nn-compte')) || 0, debut = null;
      if (reduit) { el.textContent = cible; return; }
      function pas(t) {
        if (!debut) debut = t;
        var p = Math.min((t - debut) / 1600, 1);
        el.textContent = Math.round(cible * (1 - Math.pow(1 - p, 3)));
        if (p < 1) requestAnimationFrame(pas);
      }
      requestAnimationFrame(pas);
    }
    // Apparition au défilement
    var cibles = racine.querySelectorAll('[data-nn-reveal]');
    if (reduit || !('IntersectionObserver' in window)) {
      cibles.forEach(function (el) { el.classList.add('est-visible'); });
      racine.querySelectorAll('[data-nn-compte]').forEach(compter);
    } else {
      var obs = new IntersectionObserver(function (entrees) {
        entrees.forEach(function (e) {
          if (!e.isIntersecting) return;
          e.target.classList.add('est-visible');
          e.target.querySelectorAll('[data-nn-compte]').forEach(compter);
          obs.unobserve(e.target);
        });
      }, { threshold: 0.15 });
      cibles.forEach(function (el) { obs.observe(el); });
    }
    // Halo de lampe qui suit le curseur dans le héros
    var spot = racine.querySelector('[data-nn-spot]');
    if (spot && !reduit) spot.addEventListener('pointermove', function (e) {
      var r = spot.getBoundingClientRect();
      spot.style.setProperty('--nn-x', ((e.clientX - r.left) / r.width * 100).toFixed(1) + '%');
      spot.style.setProperty('--nn-y', ((e.clientY - r.top) / r.height * 100).toFixed(1) + '%');
    });
    // Inclinaison 3D des cartes au survol
    if (!reduit && !tactile) racine.querySelectorAll('[data-nn-tilt]').forEach(function (carte) {
      carte.addEventListener('pointermove', function (e) {
        var r = carte.getBoundingClientRect();
        carte.style.setProperty('--nn-ry', (((e.clientX - r.left) / r.width - 0.5) * 10).toFixed(2) + 'deg');
        carte.style.setProperty('--nn-rx', ((0.5 - (e.clientY - r.top) / r.height) * 10).toFixed(2) + 'deg');
      });
      carte.addEventListener('pointerleave', function () {
        carte.style.setProperty('--nn-rx', '0deg');
        carte.style.setProperty('--nn-ry', '0deg');
      });
    });
    // Carrousel fluide piloté par les flèches
    var piste = racine.querySelector('[data-nn-carrousel]');
    function glisser(sens) {
      if (!piste) return;
      var carte = piste.firstElementChild;
      var pasX = carte ? carte.getBoundingClientRect().width + 20 : 300;
      piste.scrollBy({ left: sens * pasX, behavior: reduit ? 'auto' : 'smooth' });
    }
    var prec = racine.querySelector('[data-nn-prec]'), suiv = racine.querySelector('[data-nn-suiv]');
    if (prec) prec.addEventListener('click', function () { glisser(-1); });
    if (suiv) suiv.addEventListener('click', function () { glisser(1); });
  });
})();
{% endjavascript %}
Télécharger le fichier .liquid

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 : « Thème Truffe » (Thèmes complets)
Description : Thème complet pour animalerie, ludique et graphique : contours épais, ombres décalées, cartes inclinables en 3D, compteurs et bandeau défilant.
Page de l’élément (aperçu en direct) : https://ai.nahnah.shop/bibliotheque-shopify/themes-truffe
Fichier : nahnah-themes-truffe.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/nn-th-truffe.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 « nn-th-truffe ».
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 : themes-truffe).

Installer dans Shopify

  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 « nn-th-truffe ».
  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.

Installer via le MCP

Depuis Claude, Claude Code ou ChatGPT connecté à NAHNAH AI, demande : « Donne-moi le code de l’élément themes-truffe 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.

Connecter le MCP

Dans la même catégorie