Documentation
Data display
Icon
Renders Lucide icons with Lumen sizing and accessibility defaults.
01
See it in context
Preview
02
Copy a working example
Usage
---
import {
Button,
Icon,
Input,
InputGroup
} from '@santi020k/lumen-astro'
---
<InputGroup>
<Icon name="search" decorative />
<Input aria-label="Search docs" placeholder="Search docs" />
</InputGroup>
<Button variant="secondary">
<Icon name="wand-sparkles" decorative />
Generate
</Button>
<Icon name="circle-check" label="Synced" size="lg" />---
import {
Button,
Icon,
Input,
InputGroup
} from '@santi020k/lumen-astro'
---
<InputGroup>
<Icon name="search" decorative />
<Input aria-label="Search docs" placeholder="Search docs" />
</InputGroup>
<Button variant="secondary">
<Icon name="wand-sparkles" decorative />
Generate
</Button>
<Icon name="circle-check" label="Synced" size="lg" />import { Button, Icon, Input, InputGroup } from '@santi020k/lumen-react'
export const Example = () => (
<>
<InputGroup>
<Icon name="search" decorative />
<Input aria-label="Search docs" placeholder="Search docs" />
</InputGroup>
<Button variant="secondary">
<Icon name="wand-sparkles" decorative />
Generate
</Button>
<Icon name="circle-check" label="Synced" size="lg" />
</>
)import { Button, Icon, Input, InputGroup } from '@santi020k/lumen-react'
export const Example = () => (
<>
<InputGroup>
<Icon name="search" decorative />
<Input aria-label="Search docs" placeholder="Search docs" />
</InputGroup>
<Button variant="secondary">
<Icon name="wand-sparkles" decorative />
Generate
</Button>
<Icon name="circle-check" label="Synced" size="lg" />
</>
)<script type="module">
import { defineLumenElements } from '@santi020k/lumen-elements/define'
defineLumenElements()
</script>
<lumen-input-group>
<lumen-icon name="search" decorative></lumen-icon>
<lumen-input aria-label="Search docs" placeholder="Search docs"></lumen-input>
</lumen-input-group>
<lumen-button variant="secondary">
<lumen-icon name="wand-sparkles" decorative></lumen-icon>
Generate
</lumen-button>
<lumen-icon name="circle-check" label="Synced" size="lg"></lumen-icon><script type="module">
import { defineLumenElements } from '@santi020k/lumen-elements/define'
defineLumenElements()
</script>
<lumen-input-group>
<lumen-icon name="search" decorative></lumen-icon>
<lumen-input aria-label="Search docs" placeholder="Search docs"></lumen-input>
</lumen-input-group>
<lumen-button variant="secondary">
<lumen-icon name="wand-sparkles" decorative></lumen-icon>
Generate
</lumen-button>
<lumen-icon name="circle-check" label="Synced" size="lg"></lumen-icon>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 Iconlumen add Iconpnpm add @santi020k/lumen-reactpnpm add @santi020k/lumen-reactlumen add Icon --target reactlumen add Icon --target reactpnpm add @santi020k/lumen-elementspnpm add @santi020k/lumen-elementslumen add Icon --target elementslumen add Icon --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 |
|---|---|---|---|
| name | string | - | Renders any Lucide icon by name, including kebab-case names and Lucide aliases. |
| label | string | - | Adds an accessible name and exposes the icon as an image. |
| decorative | boolean | true when unlabelled | Keeps decorative icons hidden from assistive technology. |
| size | "default" | "sm" | "lg" | "xl" | "default" | Controls the icon box size. |
| 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. |