01
See it and copy it
Framework example
Choose Astro, React, or Elements to compare native usage against the shared visual output. Each example assumes the framework-level setup is already complete.
Framework usage
Switch targets to compare the adapter code. The preview stays visually stable because all three packages share the same tokens andui-* class contract.---
import { RadioGroup } from '@santi020k/lumen-astro'
---
<RadioGroup>
<legend>Theme</legend>
<label><input type="radio" name="ex-theme" value="light" /> Light</label>
<label><input type="radio" name="ex-theme" value="dark" checked /> Dark</label>
</RadioGroup>import { RadioGroup } from '@santi020k/lumen-react'
export const Example = () => (
<>
<RadioGroup>
<legend>Theme</legend>
<label><input type="radio" name="ex-theme" value="light" /> Light</label>
<label><input type="radio" name="ex-theme" value="dark" defaultChecked /> Dark</label>
</RadioGroup>
</>
)<script type="module">
import { defineLumenElements } from '@santi020k/lumen-elements/define'
defineLumenElements()
</script>
<lumen-radio-group>
<legend>Theme</legend>
<label><input type="radio" name="ex-theme" value="light" /> Light</label>
<label><input type="radio" name="ex-theme" value="dark" checked /> Dark</label>
</lumen-radio-group>02
Choose your target
Add this component
Choose the package for your runtime. All adapters share the Lumen stylesheet. Use the matching registry command when you want a local wrapper for that framework.
pnpm add @santi020k/lumen-astropnpm add @santi020k/lumen-astrolumen add RadioGrouplumen add RadioGrouppnpm add @santi020k/lumen-reactpnpm add @santi020k/lumen-reactlumen add RadioGroup --target reactlumen add RadioGroup --target reactpnpm add @santi020k/lumen-elementspnpm add @santi020k/lumen-elementslumen add RadioGroup --target elementslumen add RadioGroup --target elementsAPI reference
Lumen-specific props and runtime attributes for the Astro primitive. React props follow the same names; Elements use equivalent kebab-case attributes where custom elements expose them.
| Attribute | Values | Default | Description |
|---|---|---|---|
| children | labelled radio inputs | required | Provides the mutually exclusive native controls inside the fieldset. |
| aria-label, aria-labelledby | string | - | Names the radio group when no visible legend is supplied. |
| class, className | string | "" | Merges custom classes with the generated ui-* root classes. |
| ...native attributes | HTML attributes | - | Forwards standard attributes to the root element unless the component consumes them. |
Keyboard interactions
Keyboard behavior provided by the Astro UIPrimitives runtime for this component.
| Key | Action |
|---|---|
| ArrowRight, ArrowDown | Move roving focus to the next item, wrapping at the end. |
| ArrowLeft, ArrowUp | Move roving focus to the previous item, wrapping at the start. |
| Home, End | Move roving focus to the first or last item. |