Knit UI
GitHub

Playground

Loading playground…

false
Playground
<Radio
  label="Radio option"
  variant="filled"
  size="sm"
  disabled={false}
/>

Examples

Variants

Every visual variant side by side at the default size.

Loading example…

VariantsSourceStorybook

Sizes

All seven sizes from xxs to xxl.

Loading example…

SizesSourceStorybook

Theme

Theme changes the active accent ramp.

Loading example…

ThemeSourceStorybook

Disabled

Disabled state — the control is visually dimmed and cannot be toggled.

Loading example…

DisabledSourceStorybook

With Description

Label, description, and error message all together.

Loading example…

With DescriptionSourceStorybook

With Error

An error message is shown below the label when error is set.

Loading example…

With ErrorSourceStorybook

Label Left

Label positioned to the left of the circle.

Loading example…

Label LeftSourceStorybook

Controlled

Controlled — the checked state is owned by the parent component.

Loading example…

ControlledSourceStorybook

Group

Radio.Group — mutually exclusive selection managed by a surrounding group.

Loading example…

GroupSourceStorybook

Group Controlled

Radio.Group in a controlled state — selection is owned by the parent.

Loading example…

Group ControlledSourceStorybook

Group Disabled

A disabled Radio.Group prevents toggling any of its children.

Loading example…

Group DisabledSourceStorybook

Group Read Only

A read-only Radio.Group keeps the selection visible but prevents changing it.

Loading example…

Group Read OnlySourceStorybook

Card

Radio.Card — a card-shaped selection surface that wraps arbitrary content.

Loading example…

CardSourceStorybook

Card Shadows

Radio.Card with the shadow elevation prop across the shadow ladder.

Loading example…

Card ShadowsSourceStorybook

Indicator

Radio.Indicator — a standalone visual-only indicator not tied to any input.

Loading example…

IndicatorSourceStorybook

Matrix

Full variant × size matrix for visual regression.

Loading example…

MatrixSourceStorybook

Styles

Per-slot styles targets individual parts — here the circle and the label.

Loading example…

StylesSourceStorybook

Props

PropTypeDefaultDescription
aria-describedbystring | undefined—Ids of external description elements; merged with description/error ids.
aria-labelstring | undefined—Accessible label when no visible label is provided.
aria-labelledbystring | undefined—Id of an external label element. Defaults to the visible label id.
checkedboolean | undefined—Controlled checked state.
defaultCheckedboolean | undefinedfalseUncontrolled initial checked state.
descriptionReactNode—Description rendered below the label.
disabled systemboolean | undefinedfalseDisables the radio.
errorReactNode—Error rendered below the description (string nodes get the error theme).
iconRadioIconComponent | undefinedRadioIconInner glyph component for the checked state.
iconColorGetThemeValueForKey<"color"> | OpaqueColorValue | undefined—Override the glyph colour (defaults to the variant-derived dot colour).
idstring | undefined—Id for a11y bindings; auto-generated when omitted.
labelReactNodeRadio optionLabel content rendered next to the control.
labelPosition"left" | "right" | undefined
left · right
'right'Side the label appears on.
onChange((checked: boolean) => void) | undefined—Called when the radio becomes checked.
radius systemstring | number | undefined——
rootRefRef<TamaguiElement> | undefined—Ref of the root wrapper element.
shadow system"xs" | "sm" | "md" | "lg" | "xl" | "xxs" | "xxl" | undefined——
size system"xs" | "sm" | "md" | "lg" | "xl" | "xxs" | "xxl" | undefined
xxs · xs · sm · md · lg · xl · xxl
'md'Controls the circle diameter.
styles systemSlotStyles<RadioStyles> | undefined—Uniform per-slot style passthrough — sugar over the composable parts. Own slots: `circle` (the round box) / `dot` / `icon` (the inner glyph); plus the inherited chrome slots `label` / `description` / `error` / `root` forwarded to the `InlineControl`.
theme systemThemeName | null | undefined—Applies a theme to this element
valuestring | undefined—Value used to match against a surrounding `Radio.Group`.
variant systemRadioVariant | undefined
filled · outline
'filled'Visual style — filled fills the circle, outline keeps it transparent.

Style slots

Every part of Radio can be styled through the styles prop. Explicit props on the component always win over slot styles.

SlotTargets
circleProps for the round RadioCircle box.
descriptionThe description Text rendered below the label.
dotProps for the inner glyph / dot (Radio.icon).
errorThe error Text rendered below the description.
iconAlias of dot — props for the inner glyph (Radio.icon).
labelThe label Text.
rootThe outer InlineControlRoot row.
Accessibility & DOM props (2)
PropType
keyKey | null | undefined
refRef<TamaguiElement> | undefined

Plus 495 inherited style props from Box — the full Tamagui/React Native style surface, including token shorthands like p, mx, bg and c. See Tokens for the scales they accept, or the full list.

Edit this page on GitHub