選択カードRadioCardExperimental

The priced selectable choice card: RadioGroup's single-select role=radio + keyboard semantics (radiogroup, roving tabindex, arrow keys) wearing a card body — tags, title, secondary (area・period), a dominant price slot, an おトク/highlight hook, leading accessory — with a built-in selected check + ring. The B2C purchase / plan-picker / shipping-option / payment-method atom. Use this for pick-one-of-many (NOT ListCard, whose onSelect is an aria-pressed toggle, not radio single-select; NOT RadioGroup, which is a bare 16px dot + label). ≥44px tap target; selection marked by a check, not colour alone. RadioCardGroup (value/onValueChange/name) wraps the RadioCards.

プレビュー

選択中: 休日おでかけパス

Props

表は横にスクロールできます
プロパティ初期値説明
RadioCardGroup.valuestring-選択中の value(controlled)。
RadioCardGroup.defaultValuestring-非制御の初期値。
RadioCardGroup.onValueChange(value: string) => void-選択変更ハンドラ。
RadioCardGroup.namestring-フォーム送信名(各 RadioCard が隠し input を出す)。
RadioCard.valuestring-このカードが選択する値(必須)。
RadioCard.titleReactNode-主要行(商品名/プラン名)。
RadioCard.descriptionReactNode-副次行(エリア・期間・条件)。
RadioCard.tagsReactNode-タイトル上のチップ列(人気/期間限定/おすすめ)。
RadioCard.priceReactNode-強調表示する価格スロット(右寄せ・太字)。
RadioCard.highlightReactNode-おトクのフック行(○○円分おトク / ○回でモト)。
RadioCard.leadingReactNode-先頭のアクセサリ(アイコン/サムネ)。

Usage

import { RadioCardGroup, RadioCard, Badge, formatCurrency } from "@gunjo/ui"

<RadioCardGroup value={value} onValueChange={setValue} aria-label="おトクなきっぷ">
  <RadioCard
    value="holiday"
    title="休日おでかけパス"
    description="首都圏フリーエリア・土休日限定"
    tags={<Badge variant="success">観光向け</Badge>}
    price={formatCurrency(2720)}
    highlight="約1,000円分おトク"
  />
  <RadioCard value="metro24" title="東京メトロ 24時間券"
    description="東京メトロ全線 24時間" price={formatCurrency(600)} highlight="4回乗ればモト" />
</RadioCardGroup>

使用コンポーネント