MenuChevron Down
RadioCardGroup Groupe de Cartes Radio - Docs - Artefact

RadioCardGroup Groupe de Cartes Radio

Forms
Détection automatique intelligente

Introduction

Un groupe radio présenté sous forme d'un jeu de cartes sélectionnables, en exclusivité choix qui nécessitent plus de poids visuel que de simples boutons radio – tarification niveaux, vitesses d’expédition et similaires.

Hydratation

Niveau 2 — détection automatique intelligente. Un « RadioCardGroup » s'affiche au format HTML statique et n'expédie aucun client JS à moins qu'un signal comportemental ne soit présent. Passer interactive={true} pour forcer l'hydratation, ou interactive={false} pour forcer un rendu statique.

Il s'hydrate comme une île lorsque l'un des signaux suivants est présent (ou interactive={true} est défini) :

  • valeur (sélection contrôlée)- defaultValue (sélection initiale non contrôlée)- onValueChange | interactive prop | Résultat | | --- | --- | | omitted, no signal | Static — no client JS | | omitted, a signal present | Hydrates as an island | | true | Hydrates as an island | | false | Static — no client JS |

Utilisation

Plan
Billing
import { RadioCardGroup } from "../components/ui";

export default function MyPage() {
  return (
    <RadioCardGroup
      label="Plan"
      defaultValue="pro"
      items={[
        { label: "Hobby", value: "hobby" },
        { label: "Pro", value: "pro" },
        { label: "Enterprise", value: "enterprise" },
      ]}
    />
  );
}

Composition personnalisée

Passez « enfants » pour un contrôle total sur le contenu de chaque carte au lieu du Tableau items :

import { RadioCardGroup } from "../components/ui";

export default function MyPage() {
  return (
    <RadioCardGroup label="Plan" defaultValue="pro">
      <RadioCardGroup.Item value="hobby">
        <RadioCardGroup.ItemText>Hobby — $0/mo</RadioCardGroup.ItemText>
        <RadioCardGroup.ItemControl />
        <RadioCardGroup.ItemHiddenInput />
      </RadioCardGroup.Item>
      <RadioCardGroup.Item value="pro">
        <RadioCardGroup.ItemText>Pro — $20/mo</RadioCardGroup.ItemText>
        <RadioCardGroup.ItemControl />
        <RadioCardGroup.ItemHiddenInput />
      </RadioCardGroup.Item>
      <RadioCardGroup.Indicator />
    </RadioCardGroup>
  );
}

Constructeur de pages CMS

Ce composant est disponible sous forme de bloc radioCardGroup dans le Page Builder (content/pages/*.json) :

{
  "type": "radioCardGroup",
  "label": "Plan",
  "defaultValue": "pro",
  "variant": "outline",
  "items": [
    { "label": "Hobby", "value": "hobby" },
    { "label": "Pro", "value": "pro" },
    { "label": "Enterprise", "value": "enterprise", "disabled": true }
  ]
}

Il rend toujours « interactif » dans Page Builder.

Propriétés

Racine

PropriétéTypeDescription
valuestringLa valeur actuellement sélectionnée (contrôlée).
defaultValuestringLa valeur initialement sélectionnée (non contrôlée).
onValueChange(details: { value: string }) => voidAppelé lorsque la sélection change.
idstringL'identifiant de l'élément racine.
namestringNom des entrées radio sous-jacentes, pour la soumission de formulaire natif.
disabledbooleanDésactive chaque élément.
readOnlybooleanEmpêche les modifications de sélection tout en permettant la mise au point.
variant"subtle" | "contour" | "surface" | "solid"Visual style. Default "outline".
size"md"Taille visuelle.
colorPalette"blue" | "vert" | "red" | "purple" | "orange" | "amber" | "cyan" | "slate" | "gray"The color theme.
interactivebooleanAnnule la décision d’hydratation (voir ci-dessus).
classstringClasses CSS personnalisées pour l'élément racine.

Composition par défaut

PropriétéTypeDescription
items(string | RadioCardGroupItem)[]Cards to render. A plain string is shorthand for { value, label: value }.
labelstring | JSX.ÉlémentLabel rendered above the cards.

RadioCardGroupItem

PropriétéTypeDescription
valuestringLa valeur unique de l'objet.
labelstring | JSX.ÉlémentThe card's display content.
disabledbooleanDésactive cette carte.
invalidbooleanMarque cette carte comme invalide.

Sous-composants

PartieDescription
RadioCardGroup.LabelLe label du groupe (<span>).
RadioCardGroup.ItemUne carte sélectionnable. role="radio", nécessite un accessoire value.
RadioCardGroup.ItemTextLe texte/contenu affiché de la carte.
RadioCardGroup.ItemControlL'emballage de l'indicateur radio visuel de la carte.
RadioCardGroup.ItemHiddenInputLe <input type="radio"> natif visuellement caché qui contient la sélection pour la soumission du formulaire.
RadioCardGroup.IndicatorUn élément indicateur coulissant partagé pour l’état coché.

Accessibilité

  • La racine a role="radiogroup" ; chaque élément a role="radio" avec aria-checked reflétant la sélection.
  • Les éléments utilisent tabIndex itinérant — seul l'élément coché (ou premier activé) est dans la séquence de tabulations, correspondant au comportement natif du clavier du groupe radio.
  • data-state (checked/unchecked) et data-disabled sont mis en miroir sur les éléments et leurs parties de texte/contrôle pour le style.