Documentation
01
See it in context
Preview
02
Copy a working example
Usage
---
import { Switch } from '@santi020k/lumen-astro'
---
<div style="display: grid; gap: 1rem;">
<label style="display: flex; align-items: center; gap: 0.5rem;">
<Switch name="notifications" checked /> Email notifications
</label>
<label style="display: flex; align-items: center; gap: 0.5rem;">
<Switch name="digest" /> Weekly digest
</label>
<label style="display: flex; align-items: center; gap: 0.5rem; color: hsl(var(--ink-muted));">
<Switch disabled name="beta" /> Beta features (disabled)
</label>
</div>---
import { Switch } from '@santi020k/lumen-astro'
---
<div style="display: grid; gap: 1rem;">
<label style="display: flex; align-items: center; gap: 0.5rem;">
<Switch name="notifications" checked /> Email notifications
</label>
<label style="display: flex; align-items: center; gap: 0.5rem;">
<Switch name="digest" /> Weekly digest
</label>
<label style="display: flex; align-items: center; gap: 0.5rem; color: hsl(var(--ink-muted));">
<Switch disabled name="beta" /> Beta features (disabled)
</label>
</div>import { Switch } from '@santi020k/lumen-react'
export const Example = () => (
<>
<div style={{ display: 'grid', gap: '1rem' }}>
<label style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>
<Switch name="notifications" defaultChecked /> Email notifications
</label>
<label style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>
<Switch name="digest" /> Weekly digest
</label>
<label style={{ display: 'flex', alignItems: 'center', gap: '0.5rem', color: 'hsl(var(--ink-muted))' }}>
<Switch disabled name="beta" /> Beta features (disabled)
</label>
</div>
</>
)import { Switch } from '@santi020k/lumen-react'
export const Example = () => (
<>
<div style={{ display: 'grid', gap: '1rem' }}>
<label style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>
<Switch name="notifications" defaultChecked /> Email notifications
</label>
<label style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>
<Switch name="digest" /> Weekly digest
</label>
<label style={{ display: 'flex', alignItems: 'center', gap: '0.5rem', color: 'hsl(var(--ink-muted))' }}>
<Switch disabled name="beta" /> Beta features (disabled)
</label>
</div>
</>
)<script type="module">
import { defineLumenElements } from '@santi020k/lumen-elements/define'
defineLumenElements()
</script>
<div style="display: grid; gap: 1rem;">
<label style="display: flex; align-items: center; gap: 0.5rem;">
<lumen-switch name="notifications" checked></lumen-switch> Email notifications
</label>
<label style="display: flex; align-items: center; gap: 0.5rem;">
<lumen-switch name="digest"></lumen-switch> Weekly digest
</label>
<label style="display: flex; align-items: center; gap: 0.5rem; color: hsl(var(--ink-muted));">
<lumen-switch disabled name="beta"></lumen-switch> Beta features (disabled)
</label>
</div><script type="module">
import { defineLumenElements } from '@santi020k/lumen-elements/define'
defineLumenElements()
</script>
<div style="display: grid; gap: 1rem;">
<label style="display: flex; align-items: center; gap: 0.5rem;">
<lumen-switch name="notifications" checked></lumen-switch> Email notifications
</label>
<label style="display: flex; align-items: center; gap: 0.5rem;">
<lumen-switch name="digest"></lumen-switch> Weekly digest
</label>
<label style="display: flex; align-items: center; gap: 0.5rem; color: hsl(var(--ink-muted));">
<lumen-switch disabled name="beta"></lumen-switch> Beta features (disabled)
</label>
</div>03
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 Switchlumen add Switchpnpm add @santi020k/lumen-reactpnpm add @santi020k/lumen-reactlumen add Switch --target reactlumen add Switch --target reactpnpm add @santi020k/lumen-elementspnpm add @santi020k/lumen-elementslumen add Switch --target elementslumen add Switch --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 |
|---|---|---|---|
| checked, defaultChecked | boolean | - | Uses the native checkbox checked state. |
| role | ARIA role | "switch" | Sets the switch role on the checkbox input. |
| type | "checkbox" | "checkbox" | Fixed by the component. |
| 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. |