Kanshō/Radio

Radio

Single-select control with labelled fields and grouped rows. Native inputs sharing a name get arrow-key navigation and single-selection for free.

Included in the single kansho full pack. Components are not offered as separate installs.

Base states

Unselected
Selected
Invalid
Disabled

Field with subtext

The agent can read files but cannot make changes.

Disabled until an owner approves elevated scope.

Grouped rows

Single-select group
Default access scope

Inspect files and runs without making changes.

Recommended

Create patches and commit once a reviewer approves.

Manage scopes, integrations, and signing keys.

Sensitive

Invalid and disabled rows

Approval policy

Pauses the run for each tool call.

Select this only after confirming the destination.

Disabled because this workspace requires review.

Locked

Component documentation

Radio

components/ui/radio.tsx

Purpose

Provides a native radio primitive plus labelled field and row compositions.

Appropriate use

Use for mutually exclusive choices within a named radio group.

Example

components/ui/radio.tsx has a representative live example in the "Base states" section on /components/radio.

States

Supports checked, unchecked, disabled, and default or error presentation.

API and props

Radio extends native radio attributes with status and ref; RadioField adds label, description, message, and className; RadioRow adds trailing content.

Dependencies

React and the Kansho cn utility.

Accessibility

Uses native radio keyboard and grouping semantics; field compositions connect visible labels and messages.

Limitations

Callers must give related radios the same name and manage group-level validation.

Source

Source: components/ui/radio.tsx.

Full pack

components/ui/radio.tsx is documented at /components/radio and installs only through the single Kansho full pack; no individual component install is offered.