Jangle UI documentation
Components

Render Lucide, portable system, and application icons with accessible semantics.

Use Icon

<jangle-icon> renders a local icon inside a predictable square box. It does not create a button, link, keyboard behavior, or click target; put interaction and its accessible name on the control that owns the Icon.

Add Icon

Configure package access and install Components and Tokens, then load the theme and Icon registration entry:

import '@jangle-ui/tokens/tokens.css';
import '@jangle-ui/components/icon/register';

Use any kebab-case name from the default Lucide icon catalog:

<jangle-icon name="alarm-clock"></jangle-icon>
<jangle-icon name="circle-check" size="lg"></jangle-icon>

Icon definitions come from the installed package. The default provider has no dependency on a third-party icon service or CDN; your bundler may still load its local code chunks at runtime.

Choose an icon name

Use a provider-native Lucide name for ordinary application work. Use a system:* name only when the meaning needs to remain stable if the application changes icon providers. Use an app:kebab-case name for trusted 24-by-24 artwork registered by your application through @jangle-ui/icons.

Provider-native names are intentionally provider-specific. The small system:* set is a portability layer for shared meanings, not a replacement catalog.

Set size and color

Choose xs, sm, md, lg, or xl; the default is sm. These names map to the released Jangle UI size scale. Icon inherits currentColor, so the surrounding text or owning component controls its color.

<p style="color: var(--jangle-color-content-high)">
  <jangle-icon name="info" size="sm"></jangle-icon>
  Review the account details before continuing.
</p>

Choose decorative or meaningful use

Icon is decorative by default. Leave label empty when adjacent text or an owning control already communicates the meaning:

<span>
  <jangle-icon name="circle-check"></jangle-icon>
  Saved
</span>

When a standalone icon communicates information that is not available elsewhere, provide a concise label. Icon then exposes image semantics with that accessible name:

<jangle-icon name="shield-check" size="lg" label="Workspace access is protected"></jangle-icon>

Explore the complete reference

Open Icon in the public Storybook to search the installed Lucide catalog, compare sizes and system icons, test directionality, and review missing-name and accessibility behavior. Storybook is public and does not require a Jangle UI account.

On this page