Launch prototype

Components

Radio groups

Card-style single-choice selection, built on React Aria. Six layouts - icon, icon card, avatar, payment icon, radio button, and checkbox - each driven by a typed items array, in two sizes.

Component Playground

Live instance - the controls read their options from the same config that drives the Types/Sizes sections below.

icon-simple ยท sm

Controls

Type

Size

Types

Six layouts, all driven by the same items/size/isDisabled shape - swap the component to change the card content, not the group behaviour.

Icon simple

Icon card

Avatar

Payment icon

Radio button

Checkbox

Sizes

Two sizes - sm (default) and md - shown here on the icon-simple layout.

Small / Medium

sm
md

Disabled

isDisabled on the group dims and disables every card. Set disabled on a single item instead to disable just that option.

Group disabled

API

Every variant shares the same group-level props - only the shape of each items entry differs.

Common props

PropTypeDefault
itemsItemType[]- (see item shape per type below)
size"sm" | "md""sm"
valuestring-
defaultValuestring-
onChange(value: string) => void-
isDisabledbooleanfalse
isRequiredbooleanfalse
namestring-
classNamestring-

Icon simple - item shape

FieldType
valuestring
titlestring
secondaryTitlestring
descriptionstring
iconFC<{ className?: string }>
disabledboolean

Icon card - item shape

FieldType
valuestring
titlestring
descriptionstring
secondaryTitlestring
pricestring
badgeReactNode
iconFC<{ className?: string }>
disabledboolean

Avatar - item shape

FieldType
idstring
namestring
usernamestring
titlestring
avatarUrlstring
disabledboolean

Payment icon - item shape

FieldType
valuestring
titlestring
descriptionstring
logoReactNode
disabledboolean

Radio button - item shape

FieldType
valuestring
titlestring
secondaryTitlestring
descriptionstring
iconFC<{ className?: string }>
disabledboolean

icon is declared on this item type but never rendered by the component - same as Avatar's dead contrastBorder prop, documented here for accuracy rather than silently dropped.

Checkbox - item shape

FieldType
valuestring
titlestring
secondaryTitlestring
descriptionstring
iconFC<{ className?: string }>
disabledboolean

icon is declared on this item type but never rendered by the component - same as Avatar's dead contrastBorder prop, documented here for accuracy rather than silently dropped.

Usage

import { IconSimple } from "@/components/base/radio-groups/radio-groups";

<IconSimple
  aria-label="Plan"
  defaultValue="growth"
  items={[
    { value: "starter", title: "Starter", secondaryTitle: "Free", description: "1 user.", icon: Zap },
    { value: "growth", title: "Growth", secondaryTitle: "$29/mo", description: "Up to 10 users.", icon: Rocket02 },
  ]}
/>

Figma

No linked Figma file yet - this component was pulled in via the Untitled UI CLI, not designed in Figma first.