Aller au contenu
Démarrer un projet
Menu

Page à rail

Le sommaire en colonne, le corps à droite : ce design system, et les pages longues.

Le rail

Un sommaire en colonne, par groupes : le titre du groupe en vert profond, les entrées en capitales, la page courante soulignée. Dès 1000 px il colle sous l’en-tête et suit la lecture ; en dessous, il passe en tête de page, en ligne.

Emploi
Le sommaire d’une page longue ou d’un ensemble de pages : le design system, une page légale.
Moment
Dès que la page a plus de trois parties, ou qu’elle fait partie d’un ensemble à parcourir.
Jamais
Pour trois liens : une tête de section suffit. Ni sur l’accueil, ni sur une page d’offre.
SpécimenLe Rail avec deux groupes du design system : la page courante, Page à rail, est marquée par aria-current, calculé sur le chemin de la page.
Appelsrc/components/trame/Rail.astro
<Rail groupes={[
  { titre: 'Gabarits', liens: [
    { href: '/design/en-tete-pied/', libelle: 'En-tête et pied' },
    { href: '/design/accueil/', libelle: 'L’accueil' },
    { href: '/design/page-offre/', libelle: 'Page d’offre' },
    { href: '/design/page-realisations/', libelle: 'Page Réalisations' },
    { href: '/design/page-realisation/', libelle: 'Page de cas' },
    { href: '/design/page-rail/', libelle: 'Page à rail' },
    { href: '/design/prose/', libelle: 'Prose et page légale' },
  ] },
  { titre: 'Marques et fichiers', liens: [
    { href: '/design/fichiers/', libelle: 'Logos et fichiers' },
    { href: '/design/ecarte/', libelle: 'Écarté' },
  ] },
]} label="Pages du design system" />
Les valeurs du rail
ClasseZoneValeur
.tr-raille sommaireune nav ; en colonne dès 1000 px, en ligne en dessous
.tr-rail__groupe + .tr-rail__groupeentre deux groupes22 px
.tr-rail__titrele titre de groupeInter 600 var(--t-label) capitales, .14em, vert profond, 8 px au-dessus de sa liste
.tr-rail aune entréeInter 600 11,5 px capitales, .11em, interligne 1,35, ink-2, 6 px de padding vertical, sans soulignement
.tr-rail a:hoverau survolencre
.tr-rail a[aria-current="page"]la page courantevert profond, souligné 1,5 px à .35em ; posé quand le chemin de la page est celui du lien
@media (max-width: 999px)sous 1000 pxle rail passe en tête : groupes en ligne, écart 12 / 28 px ; entrées en ligne, écart 4 / 14 px

La page à rail

Le rail dans sa colonne, le corps à droite : 1fr / 3fr dès 1000 px, une seule colonne en dessous. Le design system est construit ainsi, dans src/layouts/Design.astro : l’en-tête de page sans scène, puis la page à rail avec le sommaire des pages et le corps des rubriques.

Le corps reçoit les rubriques. Il garde une largeur de lecture par ses propres classes : une prose fait 64ch, un tableau prend toute la colonne.

SpécimenLa page à rail, posée dans le corps de celle-ci : la colonne du rail avec son trait à droite, et le corps avec sa marge.
Appelsrc/layouts/Design.astro
<div class="tr-rail-page">
  <aside class="tr-rail-page__rail"><Rail groupes={ groupes } label="Sommaire" /></aside>
  <div class="tr-rail-page__corps">
    <Rubrique n={1} titre="La colonne" intro="Une colonne de lecture.">
      <Prose>Le texte de la page.</Prose>
    </Rubrique>
  </div>
</div>
Les valeurs de la page à rail
ClasseZoneValeur
.tr-rail-pagela pageune colonne, ligne pointillée en haut ; dès 1000 px, 1fr / 3fr
.tr-rail-page__railla colonne du railpadding clamp(16px, 2vw, 28px) clamp(20px, 3vw, 48px), trait pointillé en bas ; dès 1000 px, collante à 76 px sous le haut de la fenêtre, trait pointillé à droite, padding clamp(24px, 3vw, 40px) 24px clamp(24px, 3vw, 40px) clamp(20px, 3vw, 48px)
.tr-rail-page__corpsle corpspadding clamp(24px, 3vw, 48px) clamp(20px, 3vw, 48px) ; dès 1000 px, clamp(28px, 4vw, 64px) à gauche et clamp(20px, 3vw, 48px) à droite
.tr [id]une cible d’ancrescroll-margin-top 88 px, pour passer sous l’en-tête

Les rubriques

Le corps d’une page du design system est une suite de rubriques numérotées : le numéro, le titre avec son point vert, l’entrée en matière, puis les briques. Chaque rubrique est une section, séparée de la précédente par un trait pointillé.

src/components/design/Rubrique.astro
ClasseZoneValeur
.sys-rubla rubriquepadding vertical clamp(32px, 4vw, 56px), trait pointillé au-dessus ; la première sans trait ni padding haut
.sys-rub__nle numéroInter 600 var(--t-label), .14em, vert profond, 10 px au-dessus du titre
.sys-rub h2le titreOutfit clamp(26px, 2.6vw, 38px), interligne 1,08, approche -0,03em, 22ch ; le point final en vert profond (sys-point)
.sys-rub__introl’entrée en matière62ch, ink-2, interligne 1,6, 14 px sous le titre
.sys-rub > * + *entre deux briquesclamp(20px, 2.4vw, 28px)
EmploiTrois colonnes dès 800 px : Emploi, Moment, Jamais. À quoi sert le composant, quand, et ce qu’on ne fait pas avec.
SpecimenLe composant réel dans un cadre quadrillé ; nu, sans marge, pour une grille qui va jusqu’au bord. Une légende dessous.
AppelLe code tel qu’une page l’écrit, copiable, en Inter sur la cellule pâle, et le fichier du composant.
TableauClasse, Zone, Valeur par défaut, ou toute autre entête ; chaque ligne sur un trait pointillé.
FaireEviterDeux cadres côte à côte dès 800 px, À faire et À éviter, la raison sous chacun.
RegleUne phrase en Outfit, sur un trait, qui ferme la page.
JetonUne nuance de 56 px, son nom, sa valeur, son emploi, dans une grille sys-jetons de 200 px au moins par case.

Où l’employer ailleurs

Toute page longue avec un sommaire. Les premières sont les pages légales : les mentions légales et la politique de confidentialité, construites sur la trame par le composant SectionsLegales.

Sur une page légale, le rail porte des ancres plutôt que des pages : un seul groupe, une entrée numérotée par sujet, et chaque sujet est une section tr-legal avec l’id correspondant et une marge de défilement de 96 px. Les mentions légales ont sept sujets, la politique de confidentialité neuf, lus dans pages-v3. Le rail ne marque la page courante que par son chemin : sur des ancres, aucune entrée n’est soulignée, et rien ne suit le défilement. Le spécimen est sur la page Prose et page légale.

RègleLe rail ne porte que des liens, en capitales : jamais un bouton, un prix, ni une phrase.