Réglages et pages
Ces composants construisent une page de réglages, comme celles des emplacements page et serverSections, et les cartes de overviewCards. Une page faite avec eux a la même allure que les pages de Hodi.
SectionPage
Une page de réglages entière : son titre, la phrase qui l'explique, puis ses cartes. Sur un téléphone, le titre passe dans l'en-tête de Hodi. La page reçoit layout de l'emplacement qui la dessine, et le passe à SectionPage.
Hello world
Une salutation, chaque fois que tu ouvres Hodi.
Hello world
Une salutation, chaque fois que tu ouvres Hodi.
import { SectionPage, SettingRow, SettingsCard } from 'hodi:sdk'
import { Pencil } from 'lucide-react'
<SectionPage
title="Hello world"
intro="Une salutation, chaque fois que tu ouvres Hodi."
layout="desktop"
>
<SettingsCard>
<SettingRow
label="Salutation"
value="Salut"
action={{
label: 'Changer',
icon: Pencil,
onClick: edit
}}
/>
</SettingsCard>
</SectionPage>titlestringLe titre de la page, déjà traduit.
layout'desktop' | 'phone'La taille de l'écran, telle que l'emplacement la donne à la page.
intro?ReactNodeUne phrase sous le titre, qui dit à quoi sert la page.
aside?ReactNodeUn élément à côté du titre, ou sous le titre sur un téléphone.
childrenReactNodeLes cartes de la page, des SettingsCard.
SettingsCard
Une carte qui regroupe des lignes de réglage. Son nom s'affiche en petites capitales au-dessus de la carte.
Salutation
Salutation
import { SettingRow, SettingsCard } from 'hodi:sdk'
import { Pencil } from 'lucide-react'
<SettingsCard label="Salutation">
<SettingRow
label="Texte"
value="Salut"
action={{
label: 'Changer',
icon: Pencil,
onClick: edit
}}
/>
</SettingsCard>label?stringLe nom du groupe, affiché au-dessus de la carte.
childrenReactNodeLes lignes de la carte, des SettingRow.
SettingRow
Une ligne de réglage. Sous son nom, une ligne de 14 px montre sa valeur, ou à défaut une aide courte, jamais les deux. Son action est un bouton avec un texte au bout de la ligne ; sur un téléphone, ce bouton devient un rond de 38 px avec la même icône. Un choix (Segmented) passe sous le texte sur un téléphone.
import { SettingRow, SettingsCard } from 'hodi:sdk'
import { Pencil } from 'lucide-react'
<SettingsCard>
<SettingRow
label="Texte"
value="Salut"
action={{
label: 'Changer',
icon: Pencil,
onClick: edit
}}
/>
</SettingsCard>labelReactNodeLe nom du réglage.
value?ReactNodeLa valeur du réglage, dans la couleur du texte. Une ligne avec une valeur n'a pas d'aide : l'explication va dans la fenêtre qui change la valeur.
hint?ReactNodeUne aide courte, en gris, sur une seule ligne, quand la ligne n'a pas de valeur.
lead?ReactNodeUn élément avant le texte, comme un avatar ou une icône.
action?RowAction | RowAction[]Un bouton au bout de la ligne, ou deux côte à côte. Un RowAction a un label, une icon, un look, un onClick ou un href, et peut être disabled ou busy. ariaLabel donne un nom plus complet aux lecteurs d'écran.
choice?ReactNodeUn Segmented, au bout de la ligne, ou sous le texte sur un téléphone.
as?'div' | 'li'La balise de la ligne : div par défaut, li quand les lignes forment une liste.
children?ReactNodeDes éléments au bout de la ligne, avant l'action, qui restent au même endroit sur un téléphone : un Toggle, une Chip ou de petits boutons ronds.
MoreRow
La dernière ligne d'une longue liste, quand la liste ne montre que ses premiers éléments. Un clic sur cette ligne montre le reste.
import { MoreRow, SettingRow, SettingsCard } from 'hodi:sdk'
<SettingsCard>
<SettingRow label="Anna" value="Salut !" />
<MoreRow label="Voir les 4 autres" onClick={showAll} />
</SettingsCard>labelstringLe texte de la ligne, comme Voir les 4 autres, dans les mots du plugin.
onClick() => voidCe que fait le clic : montrer le reste de la liste.
OverviewCard
Une carte de overviewCards, dans Serveur › Vue d'ensemble. Sa ligne de titre montre un titre, un nombre et une puce au bout. Le plugin met ce qu'il veut dessous, comme un graphique.
Bonjours128
+12 cette semaineimport { Chip, OverviewCard } from 'hodi:sdk'
import WeekChart from './WeekChart.tsx'
<OverviewCard
title="Bonjours"
count={128}
aside={<Chip tone="success">+12 cette semaine</Chip>}
>
<WeekChart days={week} />
</OverviewCard>titlestringLe titre de la carte, déjà traduit.
count?numberUn nombre affiché en gris à côté du titre.
aside?ReactNodeUn élément au bout de la ligne du titre, comme une Chip ou une légende.
children?ReactNodeLe contenu de la carte, sous la ligne du titre.