Documentation
01
See it in context
Preview
02
Copy a working example
Usage
---
import { Slider } from '@santi020k/lumen-astro'
---
<div style="display: grid; gap: 0.75rem; max-width: 20rem;">
<label for="ex-slider-opacity">Opacity</label>
<Slider id="ex-slider-opacity" name="opacity" min="0" max="100" value="80" aria-describedby="ex-slider-opacity-value" />
<output id="ex-slider-opacity-value" for="ex-slider-opacity" aria-live="polite">80</output>
<label for="ex-slider-volume">Volume</label>
<Slider id="ex-slider-volume" name="volume" min="0" max="100" step="5" value="45" />
</div>
<script>
const slider = document.querySelector<HTMLInputElement>('#ex-slider-opacity')
const output = document.querySelector<HTMLOutputElement>('#ex-slider-opacity-value')
if (slider && output) {
const updateValue = () => {
output.value = slider.value
output.textContent = slider.value
}
updateValue()
slider.addEventListener('input', updateValue)
}
</script>---
import { Slider } from '@santi020k/lumen-astro'
---
<div style="display: grid; gap: 0.75rem; max-width: 20rem;">
<label for="ex-slider-opacity">Opacity</label>
<Slider id="ex-slider-opacity" name="opacity" min="0" max="100" value="80" aria-describedby="ex-slider-opacity-value" />
<output id="ex-slider-opacity-value" for="ex-slider-opacity" aria-live="polite">80</output>
<label for="ex-slider-volume">Volume</label>
<Slider id="ex-slider-volume" name="volume" min="0" max="100" step="5" value="45" />
</div>
<script>
const slider = document.querySelector<HTMLInputElement>('#ex-slider-opacity')
const output = document.querySelector<HTMLOutputElement>('#ex-slider-opacity-value')
if (slider && output) {
const updateValue = () => {
output.value = slider.value
output.textContent = slider.value
}
updateValue()
slider.addEventListener('input', updateValue)
}
</script>import { Slider } from '@santi020k/lumen-react'
export const Example = () => (
<>
<div style={{ display: 'grid', gap: '0.75rem', maxWidth: '20rem' }}>
<label htmlFor="ex-slider-opacity">Opacity</label>
<Slider id="ex-slider-opacity" name="opacity" min="0" max="100" defaultValue="80" aria-describedby="ex-slider-opacity-value" />
<output id="ex-slider-opacity-value" htmlFor="ex-slider-opacity" aria-live="polite">80</output>
<label htmlFor="ex-slider-volume">Volume</label>
<Slider id="ex-slider-volume" name="volume" min="0" max="100" step="5" defaultValue="45" />
</div>
<script>
const slider = document.querySelector<HTMLInputElement>('#ex-slider-opacity')
const output = document.querySelector<HTMLOutputElement>('#ex-slider-opacity-value')
if (slider && output) {
const updateValue = () => {
output.value = slider.value
output.textContent = slider.value
}
updateValue()
slider.addEventListener('input', updateValue)
}
</script>
</>
)import { Slider } from '@santi020k/lumen-react'
export const Example = () => (
<>
<div style={{ display: 'grid', gap: '0.75rem', maxWidth: '20rem' }}>
<label htmlFor="ex-slider-opacity">Opacity</label>
<Slider id="ex-slider-opacity" name="opacity" min="0" max="100" defaultValue="80" aria-describedby="ex-slider-opacity-value" />
<output id="ex-slider-opacity-value" htmlFor="ex-slider-opacity" aria-live="polite">80</output>
<label htmlFor="ex-slider-volume">Volume</label>
<Slider id="ex-slider-volume" name="volume" min="0" max="100" step="5" defaultValue="45" />
</div>
<script>
const slider = document.querySelector<HTMLInputElement>('#ex-slider-opacity')
const output = document.querySelector<HTMLOutputElement>('#ex-slider-opacity-value')
if (slider && output) {
const updateValue = () => {
output.value = slider.value
output.textContent = slider.value
}
updateValue()
slider.addEventListener('input', updateValue)
}
</script>
</>
)<script type="module">
import { defineLumenElements } from '@santi020k/lumen-elements/define'
defineLumenElements()
</script>
<div style="display: grid; gap: 0.75rem; max-width: 20rem;">
<label for="ex-slider-opacity">Opacity</label>
<lumen-slider id="ex-slider-opacity" name="opacity" min="0" max="100" value="80" aria-describedby="ex-slider-opacity-value"></lumen-slider>
<output id="ex-slider-opacity-value" for="ex-slider-opacity" aria-live="polite">80</output>
<label for="ex-slider-volume">Volume</label>
<lumen-slider id="ex-slider-volume" name="volume" min="0" max="100" step="5" value="45"></lumen-slider>
</div>
<script>
const slider = document.querySelector<HTMLInputElement>('#ex-slider-opacity')
const output = document.querySelector<HTMLOutputElement>('#ex-slider-opacity-value')
if (slider && output) {
const updateValue = () => {
output.value = slider.value
output.textContent = slider.value
}
updateValue()
slider.addEventListener('input', updateValue)
}
</script><script type="module">
import { defineLumenElements } from '@santi020k/lumen-elements/define'
defineLumenElements()
</script>
<div style="display: grid; gap: 0.75rem; max-width: 20rem;">
<label for="ex-slider-opacity">Opacity</label>
<lumen-slider id="ex-slider-opacity" name="opacity" min="0" max="100" value="80" aria-describedby="ex-slider-opacity-value"></lumen-slider>
<output id="ex-slider-opacity-value" for="ex-slider-opacity" aria-live="polite">80</output>
<label for="ex-slider-volume">Volume</label>
<lumen-slider id="ex-slider-volume" name="volume" min="0" max="100" step="5" value="45"></lumen-slider>
</div>
<script>
const slider = document.querySelector<HTMLInputElement>('#ex-slider-opacity')
const output = document.querySelector<HTMLOutputElement>('#ex-slider-opacity-value')
if (slider && output) {
const updateValue = () => {
output.value = slider.value
output.textContent = slider.value
}
updateValue()
slider.addEventListener('input', updateValue)
}
</script>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 Sliderlumen add Sliderpnpm add @santi020k/lumen-reactpnpm add @santi020k/lumen-reactlumen add Slider --target reactlumen add Slider --target reactpnpm add @santi020k/lumen-elementspnpm add @santi020k/lumen-elementslumen add Slider --target elementslumen add Slider --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 |
|---|---|---|---|
| type | HTML input type | "range" | Sets the native input 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. |