Aller au contenu

🛍️ Fiches produitGratuit · 0 NahnahPar NAHNAH AI

Guide des tailles (fenêtre)

Bouton « Guide des tailles » qui ouvre un tableau de mesures dans une fenêtre accessible (Échap, focus, lecteurs d’écran) ; colonnes et lignes réglables.

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-fiche-guide-tailles.liquid (Liquid, CSS et JS inclus).

{%- comment -%} NAHNAH AI · Guide des tailles (bibliothèque Sections & effets) : bouton qui ouvre un tableau dans une fenêtre <dialog>. {%- endcomment -%}
{%- assign id_modale = 'nn-gt-' | append: section.id -%}
{%- if section.blocks.size > 0 -%}
<div class="nn-fiche-guide-tailles" 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 }}; --nn-bouton: {{ section.settings.couleur_bouton }}; --nn-texte-bouton: {{ section.settings.couleur_texte_bouton }};">
  <div class="nn-fiche-guide-tailles__conteneur nn-fiche-guide-tailles__conteneur--{{ section.settings.alignement }}">
    <nn-fiche-guide-tailles>
      <button type="button" class="nn-fiche-guide-tailles__ouvrir" data-nn-ouvrir aria-haspopup="dialog" aria-controls="{{ id_modale }}">
        <svg class="nn-fiche-guide-tailles__icone" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 17 17 3l4 4L7 21z"/><path d="m7 13 2 2M10 10l2 2M13 7l2 2"/></svg>
        {{ section.settings.texte_bouton | escape }}
      </button>
      <dialog class="nn-fiche-guide-tailles__modale" id="{{ id_modale }}" aria-labelledby="{{ id_modale }}-titre">
        <div class="nn-fiche-guide-tailles__boite">
          <div class="nn-fiche-guide-tailles__haut">
            <h2 class="nn-fiche-guide-tailles__titre" id="{{ id_modale }}-titre">{{ section.settings.titre | escape }}</h2>
            <button type="button" class="nn-fiche-guide-tailles__fermer" data-nn-fermer aria-label="Fermer le guide des tailles"><svg aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M6 6l12 12M18 6 6 18"/></svg></button>
          </div>
          {%- if section.settings.intro != blank -%}<div class="nn-fiche-guide-tailles__intro">{{ section.settings.intro }}</div>{%- endif -%}
          <div class="nn-fiche-guide-tailles__zone" role="region" aria-label="Tableau des tailles (défilable)" tabindex="0">
            <table class="nn-fiche-guide-tailles__tableau">
              <caption class="nn-fiche-guide-tailles__cache">{{ section.settings.titre | escape }}</caption>
              <thead>
                <tr>
                  <th scope="col">{{ section.settings.entete_taille | escape }}</th>
                  {%- if section.settings.entete_1 != blank -%}<th scope="col">{{ section.settings.entete_1 | escape }}</th>{%- endif -%}
                  {%- if section.settings.entete_2 != blank -%}<th scope="col">{{ section.settings.entete_2 | escape }}</th>{%- endif -%}
                  {%- if section.settings.entete_3 != blank -%}<th scope="col">{{ section.settings.entete_3 | escape }}</th>{%- endif -%}
                </tr>
              </thead>
              <tbody>
                {%- for block in section.blocks -%}
                  <tr {{ block.shopify_attributes }}>
                    <th scope="row">{{ block.settings.taille | escape }}</th>
                    {%- if section.settings.entete_1 != blank -%}<td>{{ block.settings.mesure_1 | escape }}</td>{%- endif -%}
                    {%- if section.settings.entete_2 != blank -%}<td>{{ block.settings.mesure_2 | escape }}</td>{%- endif -%}
                    {%- if section.settings.entete_3 != blank -%}<td>{{ block.settings.mesure_3 | escape }}</td>{%- endif -%}
                  </tr>
                {%- endfor -%}
              </tbody>
            </table>
          </div>
          {%- if section.settings.conseil != blank -%}<div class="nn-fiche-guide-tailles__conseil">{{ section.settings.conseil }}</div>{%- endif -%}
        </div>
      </dialog>
    </nn-fiche-guide-tailles>
  </div>
</div>
{%- elsif request.design_mode -%}
  <div class="nn-fiche-guide-tailles__conteneur"><p class="nn-fiche-guide-tailles__vide">Ajoute les lignes du tableau des tailles avec « Ajouter un bloc » → Taille.</p></div>
{%- endif -%}

{% schema %}
{
  "name": "Guide des tailles",
  "tag": "section",
  "class": "nn-section-fiche-guide-tailles",
  "max_blocks": 20,
  "settings": [
    {
      "type": "text",
      "id": "texte_bouton",
      "label": "Texte du bouton",
      "default": "Guide des tailles"
    },
    {
      "type": "select",
      "id": "alignement",
      "label": "Alignement du bouton",
      "options": [
        {
          "value": "gauche",
          "label": "Gauche"
        },
        {
          "value": "centre",
          "label": "Centre"
        }
      ],
      "default": "gauche"
    },
    {
      "type": "text",
      "id": "titre",
      "label": "Titre de la fenêtre",
      "default": "Guide des tailles"
    },
    {
      "type": "richtext",
      "id": "intro",
      "label": "Introduction",
      "default": "<p>Mesures du corps en centimètres. Entre deux tailles, choisis la plus grande.</p>"
    },
    {
      "type": "header",
      "content": "Colonnes du tableau"
    },
    {
      "type": "text",
      "id": "entete_taille",
      "label": "Colonne 1 (taille)",
      "default": "Taille"
    },
    {
      "type": "text",
      "id": "entete_1",
      "label": "Colonne 2 (vide : masquée)",
      "default": "Poitrine (cm)"
    },
    {
      "type": "text",
      "id": "entete_2",
      "label": "Colonne 3 (vide : masquée)",
      "default": "Taille (cm)"
    },
    {
      "type": "text",
      "id": "entete_3",
      "label": "Colonne 4 (vide : masquée)",
      "default": "Hanches (cm)"
    },
    {
      "type": "richtext",
      "id": "conseil",
      "label": "Conseil de mesure",
      "default": "<p><strong>Comment mesurer ?</strong> Poitrine : à l’endroit le plus fort. Taille : au creux naturel. Hanches : à l’endroit le plus large.</p>"
    },
    {
      "type": "paragraph",
      "content": "Les mesures proposées sont un exemple : remplace-les par celles de tes produits."
    },
    {
      "type": "header",
      "content": "Couleurs"
    },
    {
      "type": "color",
      "id": "couleur_fond",
      "label": "Fond",
      "default": "#FFFFFF"
    },
    {
      "type": "color",
      "id": "couleur_texte",
      "label": "Texte",
      "default": "#1A1A1A"
    },
    {
      "type": "color",
      "id": "couleur_accent",
      "label": "Accent",
      "default": "#2EE6A8"
    },
    {
      "type": "color",
      "id": "couleur_bouton",
      "label": "Bouton",
      "default": "#1A1A1A"
    },
    {
      "type": "color",
      "id": "couleur_texte_bouton",
      "label": "Texte du bouton",
      "default": "#FFFFFF"
    },
    {
      "type": "header",
      "content": "Espacement"
    },
    {
      "type": "range",
      "id": "marge_haut",
      "label": "Marge haute",
      "min": 0,
      "max": 120,
      "step": 4,
      "unit": "px",
      "default": 8
    },
    {
      "type": "range",
      "id": "marge_bas",
      "label": "Marge basse",
      "min": 0,
      "max": 120,
      "step": 4,
      "unit": "px",
      "default": 8
    }
  ],
  "blocks": [
    {
      "type": "taille",
      "name": "Taille",
      "settings": [
        {
          "type": "text",
          "id": "taille",
          "label": "Taille",
          "default": "M"
        },
        {
          "type": "text",
          "id": "mesure_1",
          "label": "Colonne 2",
          "default": "88–92"
        },
        {
          "type": "text",
          "id": "mesure_2",
          "label": "Colonne 3",
          "default": "70–74"
        },
        {
          "type": "text",
          "id": "mesure_3",
          "label": "Colonne 4",
          "default": "96–100"
        }
      ]
    }
  ],
  "presets": [
    {
      "name": "Guide des tailles",
      "blocks": [
        {
          "type": "taille",
          "settings": {
            "taille": "XS",
            "mesure_1": "80–84",
            "mesure_2": "62–66",
            "mesure_3": "88–92"
          }
        },
        {
          "type": "taille",
          "settings": {
            "taille": "S",
            "mesure_1": "84–88",
            "mesure_2": "66–70",
            "mesure_3": "92–96"
          }
        },
        {
          "type": "taille",
          "settings": {
            "taille": "M",
            "mesure_1": "88–92",
            "mesure_2": "70–74",
            "mesure_3": "96–100"
          }
        },
        {
          "type": "taille",
          "settings": {
            "taille": "L",
            "mesure_1": "92–96",
            "mesure_2": "74–78",
            "mesure_3": "100–104"
          }
        },
        {
          "type": "taille",
          "settings": {
            "taille": "XL",
            "mesure_1": "96–100",
            "mesure_2": "78–82",
            "mesure_3": "104–108"
          }
        }
      ]
    }
  ]
}
{% endschema %}

{% stylesheet %}
.nn-fiche-guide-tailles {
  padding: var(--nn-mh) 0 var(--nn-mb);
  background: var(--nn-fond);
  color: var(--nn-texte);
}
.nn-fiche-guide-tailles__conteneur {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 16px;
}
.nn-fiche-guide-tailles__titre {
  margin: 0;
  font-size: clamp(24px, 4vw, 36px);
  line-height: 1.2;
  color: inherit;
}
.nn-fiche-guide-tailles__cache {
  position: absolute !important;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}
.nn-fiche-guide-tailles__vide {
  margin: 0;
  padding: 16px;
  border: 1px dashed currentColor;
  border-radius: 12px;
  font-size: 14px;
  opacity: 0.8;
}
nn-fiche-guide-tailles { display: block; }
.nn-fiche-guide-tailles__conteneur--centre { text-align: center; }
.nn-fiche-guide-tailles__ouvrir {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 0 4px;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 4px;
  cursor: pointer;
}
.nn-fiche-guide-tailles__ouvrir:focus-visible {
  outline: 3px solid var(--nn-accent);
  outline-offset: 2px;
}
.nn-fiche-guide-tailles__icone {
  width: 20px;
  height: 20px;
  flex: none;
}
.nn-fiche-guide-tailles__modale {
  width: min(720px, calc(100vw - 32px));
  max-height: calc(100vh - 32px);
  padding: 0;
  border: 0;
  border-radius: 18px;
  background: var(--nn-fond);
  color: var(--nn-texte);
  text-align: start;
}
.nn-fiche-guide-tailles__modale::backdrop { background: rgba(0, 0, 0, 0.6); }
.nn-fiche-guide-tailles__boite {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 20px;
}
.nn-fiche-guide-tailles__haut {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.nn-fiche-guide-tailles__titre { font-size: clamp(20px, 3vw, 26px); }
.nn-fiche-guide-tailles__fermer {
  display: inline-grid;
  flex: none;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: color-mix(in srgb, var(--nn-texte) 8%, transparent);
  color: inherit;
  cursor: pointer;
}
.nn-fiche-guide-tailles__fermer svg {
  width: 22px;
  height: 22px;
}
.nn-fiche-guide-tailles__fermer:focus-visible {
  outline: 3px solid var(--nn-accent);
  outline-offset: 2px;
}
.nn-fiche-guide-tailles__intro > *,
.nn-fiche-guide-tailles__conseil > * { margin: 0; }
.nn-fiche-guide-tailles__conseil {
  padding: 14px 16px;
  border-radius: 12px;
  background: color-mix(in srgb, var(--nn-accent) 12%, transparent);
  font-size: 14px;
}
.nn-fiche-guide-tailles__zone {
  max-width: 100%;
  overflow-x: auto;
  border-radius: 12px;
}
.nn-fiche-guide-tailles__zone:focus-visible {
  outline: 3px solid var(--nn-accent);
  outline-offset: 2px;
}
.nn-fiche-guide-tailles__tableau {
  width: 100%;
  min-width: 420px;
  border-collapse: collapse;
  font-size: 15px;
  font-variant-numeric: tabular-nums;
}
.nn-fiche-guide-tailles__tableau th,
.nn-fiche-guide-tailles__tableau td {
  padding: 10px 12px;
  border-bottom: 1px solid color-mix(in srgb, var(--nn-texte) 12%, transparent);
  text-align: start;
  white-space: nowrap;
}
.nn-fiche-guide-tailles__tableau thead th {
  background: var(--nn-texte);
  color: var(--nn-fond);
  font-size: 13px;
  letter-spacing: 0.04em;
}
.nn-fiche-guide-tailles__tableau tbody tr:nth-child(even) { background: color-mix(in srgb, var(--nn-texte) 4%, transparent); }
@media (prefers-reduced-motion: reduce) {
  .nn-fiche-guide-tailles * {
    animation: none !important;
    transition: none !important;
  }
}
{% endstylesheet %}

{% javascript %}
(function () {
  // Fenêtre <dialog> native : Échap, focus piégé, fermeture par bouton ou clic sur le fond, retour du focus au bouton
  function nnQuandPret(f) {
    if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", f, { once: true });
    else f();
  }
  if (!customElements.get("nn-fiche-guide-tailles")) {
    customElements.define("nn-fiche-guide-tailles", class extends HTMLElement {
      connectedCallback() {
        var moi = this;
        nnQuandPret(function () {
          if (moi.nnPret || !moi.isConnected) return;
          moi.nnPret = true;
          moi.demarrer();
        });
      }
      demarrer() {
        var bouton = this.querySelector("[data-nn-ouvrir]");
        var modale = this.querySelector("dialog");
        if (!bouton || !modale) return;
        bouton.addEventListener("click", function () {
          if (typeof modale.showModal === "function") { if (!modale.open) modale.showModal(); }
          else modale.setAttribute("open", "");
        });
        modale.addEventListener("click", function (e) {
          if (e.target === modale || (e.target.closest && e.target.closest("[data-nn-fermer]"))) {
            if (typeof modale.close === "function") modale.close();
            else modale.removeAttribute("open");
          }
        });
        modale.addEventListener("close", function () { bouton.focus(); });
      }
    });
  }
})();
{% 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 : « Guide des tailles (fenêtre) » (Fiches produit)
Description : Bouton « Guide des tailles » qui ouvre un tableau de mesures dans une fenêtre accessible (Échap, focus, lecteurs d’écran) ; colonnes et lignes réglables.
Page de l’élément (aperçu en direct) : https://ai.nahnah.shop/bibliotheque-shopify/fiche-guide-tailles
Fichier : nahnah-fiche-guide-tailles.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-fiche-guide-tailles.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-fiche-guide-tailles ».
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 : fiche-guide-tailles).

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

  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-fiche-guide-tailles ».
  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 fiche-guide-tailles 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

Dans la même catégorie