SettingsLayout
ImplementedTwo-column settings shell — vertical section rail + content panel; sections are caller-defined SettingsSection entries (bounded 3-8, NASA Rule 2), not a fixed list. Left rail is a <nav aria-label> landmark labelled via the bilingual NAV_LABELS map (locale prop, fr default); the active entry carries aria-current="page". Implemented and exported from the barrel, but zero current adoption as of 2026-09-14.
src/components/templates/settingslayout/SettingsLayout.tsxCoquille des paramètres : rail vertical de sections (démo : Profil / Facturation / Équipe / API / Notifications) + zone de contenu. FR-CA : « Sections de paramètres · Paramètres ».
SettingsLayout
Template - Account & Admin family (Family 8)
Disposition deux colonnes : rail vertical de sections (280 px) avec aria-current="page" + zone de contenu principal. Navigation par clic sur le rail.
Facturation
Coordonnées bancaires pour le paiement de vos redevances.
This component supports light and dark mode.
Composition
SettingsLayout gère la navigation entre sous-sections des paramètres. Le rail vertical liste les sections avec libellé + description ; la zone principale est déterminée par le parent.
title*stringTitre du panneau.
introstringOptional intro sentence rendered under the H1. Omitted → no paragraph.
sections*SettingsSection[]Liste des sections.
currentSectionId*stringSection active.
onSectionChange(id: string) => voidCalled with the section id on nav click.
children*React.ReactNodeContenu de la section active.
locale"fr" | "en"Switches the nav landmark label (fr default / en).
classNamestringExtra classes appended to the root <section> element.
Props
SettingsLayout
titlestring—Page/landmark title rendered as the H1 of the settings page.
introstring—Optional intro sentence rendered under the H1. Omitted → no paragraph.
sectionsSettingsSection[]—Settings entries rendered in the left nav: { id; label; description? } — bounded 3-8 (NASA Rule 2, dev-only console.warn when out of bounds).
currentSectionIdstring—id of the currently active section — receives aria-current="page".
onSectionChange(id: string) => void—Called with the section id when a nav entry is clicked.
childrenReact.ReactNode—Content of the right column (the active settings panel).
locale"fr" | "en"'fr'Switches the nav landmark label via the NAV_LABELS map (Sections de paramètres / Settings sections).
classNamestring—Appended to the root <section> class list.
<SettingsLayout />Accessibility
Type
1 ruleARIA
1 ruleUsage
Import
import { SettingsLayout } from "@epasslive/design-system"Example 1
<SettingsLayout title="Paramètres" sections={sections} currentSectionId="billing" onSectionChange={setSection}>{panel}</SettingsLayout>Example 2
<SettingsLayout title="Settings" sections={sections} currentSectionId="account" locale="en">{panel}</SettingsLayout>Anti-patterns
— Do not include business logic in templates
— Avoid hardcoded content in templates