Skip to main content
Voir en Markdown

Composants de mise en page

Les composants de mise en page organisent la page. Ils définissent le squelette visuel — bandeaux, conteneurs centrés, pistes flex et grid, cartes, barres latérales, modales — et hébergent d'autres composants via children. Le positionnement s'exprime en classes Tailwind dans props.className ; ces composants apportent de la structure, pas des partis pris de style.

app.yaml
components:
  - type: hero
    content: Ship internal tools from config
    props: { className: 'bg-primary text-white py-24' }
  - type: container
    element: section
    props: { className: 'max-w-4xl mx-auto px-6' }
    children:
      - type: grid
        props: { className: 'grid-cols-3 gap-6' }
        children:
          - { type: card, children: [{ type: text, content: 'Fast' }] }

hero

Un bandeau pleine largeur, généralement le premier bloc d'une page d'accueil. Rend content comme titre principal et accepte children pour les appels à l'action.

Accepte content, children, props, interactions, responsive, visibility et i18n.

container

Un encadrant générique de niveau bloc — l'outil de base pour contraindre la largeur, appliquer du remplissage et regrouper des enfants. C'est aussi le seul composant de mise en page qui accepte un dataSource, ce qui en fait le moyen usuel de lier toute une région à un enregistrement.

Propriété Description
element Élément HTML rendu : div (défaut), section, main, aside, nav, header, footer, article.
children Définitions de composants imbriqués.
content Contenu inline rendu en l'absence de children.
dataSource Liaison de table exposant $record.* aux descendants.

flex

Un conteneur flexbox. Direction, espacement, alignement et retour à la ligne viennent tous de props.classNameflex flex-col, gap-4, items-center, justify-between. Accepte children, props, responsive et visibility.

grid

Un conteneur CSS grid à pistes de colonnes fixes, également piloté par props.className : grid grid-cols-3, gap-6, auto-rows-fr. Les enfants se répartissent dans les cellules.

responsive-grid

Une grille dont la mise en page se déclare via le module responsive plutôt que par des classes préfixées. À préférer lorsque c'est le nombre de colonnes qui change d'un point de rupture à l'autre.

app.yaml
- type: responsive-grid
  props: { className: 'gap-6' }
  responsive:
    md: { props: { className: 'grid-cols-2 gap-6' } }
    lg: { props: { className: 'grid-cols-3 gap-8' } }
  children:
    - { type: card }

card

Une surface bordée et rembourrée pour regrouper du contenu — préstylée avec fond, bordure, rayon, ombre et remplissage. Un props.className que vous fournissez est ajouté en dernier : il l'emporte donc dans la cascade Tailwind et peut resserrer les valeurs par défaut. Accepte children, props, interactions, responsive et visibility.

Un panneau de navigation vertical, généralement associé à une région principale container pour former une mise en page de type app-shell. Composez-le statiquement depuis children, ou liez ses entrées à une table via le bloc layout.sidebar de la page.

Accepte children, props, responsive et visibility.

Une superposition de dialogue contenant le corps du panneau. Donnez-lui un identifiant via props.id, puis ouvrez-la depuis un déclencheur avec interactions.click.modal. Pour les superpositions de confirmation, utilisez plutôt dialog / alert-dialog.

app.yaml
- { type: button, content: Edit, interactions: { click: { modal: edit-panel } } }
- type: modal
  props: { id: edit-panel, className: 'max-w-lg' }
  children:
    - { type: text, element: h2, content: 'Edit task' }

split-pane

Deux régions redimensionnables séparées par un séparateur déplaçable. Les deux premiers children deviennent les panneaux.

Propriété Description
orientation horizontal (côte à côte, défaut) ou vertical (empilé).
defaultRatio Fraction du conteneur occupée initialement par le premier panneau, entre 0 et 1. Défaut 0.5.
minSize Taille minimale du premier panneau lors du glissement, en pixels.
maxSize Taille maximale du premier panneau lors du glissement, en pixels.

tab-panel

Un panneau au sein d'un conteneur tabs. Son content est un objet structuré, pas une chaîne — le texte du déclencheur et celui du panneau sont deux champs distincts, afin que le moteur de rendu n'ait jamais à découper une chaîne en deux.

Propriété de content Description
label Obligatoire. Texte du bouton déclencheur de l'onglet.
body Texte affiché dans le panneau. À omettre si le panneau rend children.
app.yaml
- type: tabs
  children:
    - { type: tab-panel, content: { label: Overview, body: 'The summary.' } }
    - type: tab-panel
      content: { label: Activity }
      children:
        - { type: data-table, dataSource: { table: events } }

Pages connexes

Dernière mise à jour 11 août 2026

Cette documentation a été rédigée avec de l'IA : des erreurs ou du contenu obsolète sont donc possibles. Sovrium est en bêta. Les contributions et corrections sont les bienvenues.

Construit avec Sovrium