Skip to main content
Voir en Markdown

Composants de contenu

Les composants de contenu rendent du texte et de la prose. Ils couvrent le texte enrichi et le markdown, les blocs de code avec coloration syntaxique, les accordéons repliables, les encarts stylisés, les citations, une table des matières générée automatiquement et l'interface de recherche au niveau de la page. Tous les composants de contenu prennent en charge la substitution de variables dans leur content ($record.*, $vars.*, key) et acceptent l'ensemble partagé props, ainsi que les modules visibility, responsive et i18n.

app.yaml
components:
  - type: text
    element: h1
    content: Getting Started
  - type: text
    content: '$record.body'
    props: { format: markdown }
  - type: alert
    props: { variant: info, dismissible: true }
    content: 'Heads up — this is a callout.'

text

Le composant de contenu principal. Rend du texte inline, un élément sémantique (titre, paragraphe, citation) ou du markdown complet. Le même type text couvre les titres, paragraphes et citations via son element/props.

Propriété Description
content Source texte ou markdown (prend en charge $record.*, $vars.*, key).
element Élément sémantique : h1h6, p, span, label, pre, kbd, blockquote, code. Par défaut p.
props.format Définir sur markdown pour rendre content comme HTML assaini (titres, gras, italique, liens, images, listes imbriquées).
required Lorsque element: label, ajoute un indicateur d'obligation (*) après le texte du libellé.
props Attributs HTML supplémentaires (p. ex. className).

element: code rend un simple élément <code> inline — il n'applique pas de coloration syntaxique. Pour un bloc coloré avec langue, numéros de ligne et bouton de copie, utilisez le type code.

La sortie markdown est assainie pour prévenir les attaques XSS (pas de balises <script> ni d'attributs gestionnaires d'événements). Les blocs de code incluent un bouton de copie vers le presse-papiers.

code

Un bloc de code autonome, avec coloration syntaxique. Contrairement à text avec element: code — qui rend un simple <code> inline — ce type colore la source, numérote les lignes et ajoute un bouton de copie.

Propriété Description
content La source du code.
props.language Langue pour la coloration syntaxique (p. ex. ts, yaml, bash).
props.lineNumbers Afficher les numéros de ligne à côté du code.
props Attributs HTML supplémentaires.

Cadres, sortie et bouton de copie

Un bloc de code nu laisse le lecteur deviner : est-ce un fichier à enregistrer, ou une commande à exécuter ? Ces propriétés dessinent un cadre autour du bloc pour y répondre, et contrôlent ce que le bouton de copie place dans le presse-papiers. Elles se déclarent à la racine du composant, à côté de props.

Propriété Description
codeFrame Cadre autour du bloc : none (nu), file (en-tête avec nom de fichier) ou terminal (en-tête de session shell). Déduit si tu l'omets.
filename Le fichier auquel appartient l'extrait, affiché dans l'en-tête. Devient aussi le nom accessible du bloc.
terminalLabel Libellé de l'en-tête terminal (par défaut terminal).
output Ce que la commande affiche, rendu comme un second bloc sous la commande, dans le même cadre.
copy Afficher le bouton de copie vers le presse-papiers. Vaut true par défaut.
copyLabel Libellé et nom accessible du bouton de copie (par défaut Copy).
copiedLabel Libellé affiché brièvement après une copie réussie (par défaut Copied).

Le cadre est résolu dans cet ordre, la première correspondance l'emportant :

  1. un codeFrame explicite — y compris none, qui supprime le cadre qui serait sinon déduit ;
  2. sinon un filename est présent, donc le cadre est file ;
  3. sinon un output est présent, donc le cadre est terminal (seule une commande produit une sortie) ;
  4. sinon none.

Les cas courants ne demandent donc qu'une seule propriété, pas deux :

app.yaml
components:
  # Un fichier. `filename` seul suffit à obtenir le cadre de fichier.
  - type: code
    props:
      language: yaml
    filename: hello-world.yaml
    content: |
      name: hello-world
      pages:
        - name: home
          path: /

  # Une commande et ce qu'elle affiche. `output` seul suffit à obtenir le cadre terminal.
  - type: code
    props:
      language: bash
    content: sovrium init hello-world
    output: |
      Created hello-world.yaml
      Run sovrium start hello-world.yaml to boot it.

Le bouton de copie copie la commande seule. La sortie output et l'en-tête de nom de fichier sont tous deux exclus : coller dans un shell exécute une seule commande, et coller un fichier de configuration nommé donne une configuration valide plutôt qu'une configuration précédée de son propre nom. Aucun symbole d'invite n'est rendu dans le bloc pour la même raison : un $ décoratif finirait dans le presse-papiers.

toc

Génère automatiquement une table des matières à partir de la hiérarchie de titres de la page. Cliquer sur un lien fait défiler en douceur jusqu'à l'ancre du titre ; la section active est mise en évidence selon la position de défilement.

Propriété Description
props.sticky Définir sur true pour garder la table des matières fixée à la fenêtre lors du défilement.
props Attributs HTML supplémentaires (p. ex. className).

accordion

Sections de contenu repliables, chacune avec un déclencheur de résumé et un panneau de détail.

Propriété Description
children Éléments d'accordéon (chacun avec un libellé de résumé et un contenu de détail).
props.mode single replie les autres sections quand l'une s'ouvre ; multiple permet d'en ouvrir plusieurs à la fois.
props.defaultOpen Définir sur true pour rendre une section développée au chargement de la page.
props Attributs HTML supplémentaires.

blockquote

Un bloc de citation stylisé (text avec element: blockquote rend la même balise, sans style). Les citations imbriquées sont rendues avec une indentation croissante.

Propriété Description
content Le texte cité.
props.cite URL de la source de citation.
props Attributs HTML supplémentaires.

alert

Un bloc d'encart stylisé pour mettre en évidence des informations.

Propriété Description
content Le message d'alerte (prend en charge la substitution).
props.variant Style visuel : info, warning, error, ou success — chacun sélectionne automatiquement une icône et une couleur appropriées.
props.dismissible Définir sur true pour rendre un bouton de fermeture qui masque l'alerte.
props Attributs HTML supplémentaires.

searchInput

Un contrôle de champ de recherche au niveau de la page qui pilote le filtrage côté client d'une liste ou d'une table liée. (La configuration du moteur plein texte — indexation, poids, recherche publique — se trouve dans la section Recherche ; ceci est le bloc de construction de l'interface.)

Propriété Description
props.placeholder Texte indicatif affiché dans le champ de recherche.
props.debounceMs Délai d'anti-rebond avant le déclenchement de la recherche (les résultats se mettent à jour en direct après le délai).
props.minLength Longueur minimale de requête avant la recherche (empêche les recherches vides/courtes).
dataSource Liaison optionnelle lorsque le champ filtre une source de données en mode search.

pageSearch

Une expérience de recherche à portée de page composée d'un champ et d'une région de résultats, liée à une table consultable. À utiliser pour le filtrage d'enregistrements au sein de la page.

Propriété Description
dataSource Liaison de table en mode search (searchFields, debounce, maxResults).
props.placeholder Texte indicatif pour le champ de recherche.
children Composants optionnels de modèle de résultat.

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