Actions
LanguageToggle
Coordinates controlled or persistent locale selection and document language as a compact accessible control.
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 { LanguageToggle } from '@santi020k/lumen-astro'
---
<LanguageToggle
defaultValue="en"
storageKey="site-language"
locales={[
{ label: 'English', value: 'en' },
{ label: 'Español', value: 'es' }
]}
/>import { LanguageToggle } from '@santi020k/lumen-react'
export const Example = () => (
<>
<LanguageToggle
defaultValue="en"
storageKey="site-language"
locales={[
{ label: 'English', value: 'en' },
{ label: 'Español', value: 'es' }
]}
/>
</>
)<script type="module">
import { defineLumenElements } from '@santi020k/lumen-elements/define'
defineLumenElements()
</script>
<lumen-language-toggle
defaultValue="en"
storageKey="site-language"
locales={[
{ label: 'English', value: 'en' },
{ label: 'Español', value: 'es' }
]}></lumen-language-toggle>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 LanguageTogglelumen add LanguageTogglepnpm add @santi020k/lumen-reactpnpm add @santi020k/lumen-reactlumen add LanguageToggle --target reactlumen add LanguageToggle --target reactpnpm add @santi020k/lumen-elementspnpm add @santi020k/lumen-elementslumen add LanguageToggle --target elementslumen add LanguageToggle --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 |
|---|---|---|---|
| locales | LumenLocaleOption[] | English and Spanish | Defines the ordered locale values and human-readable labels to cycle through. |
| defaultValue | string | first locale | Sets the initial locale for uncontrolled usage. |
| value | string | - | Enables controlled usage; ui:language-change requests the next locale without mutating document language. |
| storageKey | string | - | Persists uncontrolled locale selection when browser storage is available. |
| labelTemplate | string | Change language from {current} to {next} | Localizes the accessible label while retaining current and next locale names. |
| children | locale label or custom content | next locale label | Overrides the generated visible next-locale label. |
| type | "button" | "submit" | "reset" | "button" | Sets the native button type. |
| 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. |