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.
Astro Accessible
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 { TagGroup } from '@santi020k/lumen-astro'
---
<TagGroup aria-label="Selected tags">
<span data-ui-tag role="listitem">Astro <button aria-label="Remove Astro" data-ui-tag-remove type="button">Remove</button></span>
<span data-ui-tag role="listitem">Accessible <button aria-label="Remove Accessible" data-ui-tag-remove type="button">Remove</button></span>
</TagGroup>import { TagGroup } from '@santi020k/lumen-react'
export const Example = () => (
<>
<TagGroup aria-label="Selected tags">
<span data-ui-tag role="listitem">Astro <button aria-label="Remove Astro" data-ui-tag-remove type="button">Remove</button></span>
<span data-ui-tag role="listitem">Accessible <button aria-label="Remove Accessible" data-ui-tag-remove type="button">Remove</button></span>
</TagGroup>
</>
)<script type="module">
import { defineLumenElements } from '@santi020k/lumen-elements/define'
defineLumenElements()
</script>
<lumen-tag-group aria-label="Selected tags">
<span data-ui-tag role="listitem">Astro <button aria-label="Remove Astro" data-ui-tag-remove type="button">Remove</button></span>
<span data-ui-tag role="listitem">Accessible <button aria-label="Remove Accessible" data-ui-tag-remove type="button">Remove</button></span>
</lumen-tag-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 TagGrouplumen add TagGrouppnpm add @santi020k/lumen-reactpnpm add @santi020k/lumen-reactlumen add TagGroup --target reactlumen add TagGroup --target reactpnpm add @santi020k/lumen-elementspnpm add @santi020k/lumen-elementslumen add TagGroup --target elementslumen add TagGroup --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 |
|---|---|---|---|
| data-ui-tag | boolean attribute | - | Marks each tag item for group behavior. |
| data-ui-tag-remove | boolean attribute | - | Marks a labelled child control that removes its closest tag and emits ui:tag-remove. |
| 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. |
Runtime events
CustomEvents dispatched by the Astro UIPrimitives runtime for this component.
| Event | Target | Detail | When |
|---|---|---|---|
| ui:tag-remove | TagGroup root (.ui-tag-group or [data-ui-tag-group]) | { value: string | undefined } | Fires after a [data-ui-tag-remove] control removes its closest tag or list item. |