Skip to main content

Icon

Displays an icon from the Lucide icon library. All ~1,600+ Lucide icons are supported, referenced by their kebab-case name. Use icons to add visual context to labels, buttons, cards, and other elements.
<Icon name="map-pin" size="xl" color="primary" />

Props

PropTypeDefaultDescription
namestringThe icon to display. Accepts any Lucide icon name in kebab-case (e.g. "heart", "calendar-days", "arrow-right") or a custom alias.
size"xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl""md"Controls the rendered size of the icon.
strokenumber2Stroke width of the icon.
fillstring"transparent"Fill color of the icon. Use "currentColor" for a filled appearance.
colorstringSets the icon color. Accepts theme tokens like primary, secondary, success, danger, etc.

Icon field format

When specifying an icon in component props that accept an icon value, you can use either format:
  • A plain string — just the icon name:
    "heart"
    
  • An object — with optional styling overrides:
    { "name": "heart", "stroke": 1.5, "fill": "currentColor" }
    

Custom icon aliases

In addition to the full Lucide set, the following semantic aliases are available for convenience:
AliasLucide Icon
agentbot
analyticschart-bar
batchlayers
boltzap
book-clockbook-marked
check-circle-filledcircle-check
circle-questioncircle-help
confettiparty-popper
lifesaverlife-buoy
mapsmap
mobilesmartphone
nameuser
notebook-pencilnotebook-pen
page-blankfile
profileuser
profile-cardid-card
reloadrefresh-cw
settings-slidersliders-horizontal
sparkle-doublesparkles
sparklesparkles
square-codecode
square-imageimage
square-texttext
star-filledstar
suitcasebriefcase
wreathaward
writepencil
write-altpen-tool
write-alt2square-pen
closex
addplus
removeminus
deletetrash-2
editpencil
successcircle-check
errorcircle-x
warningtriangle-alert
cautiontriangle-alert
dangeroctagon-alert
discoverysparkles
backarrow-left
forwardarrow-right
uparrow-up
downarrow-down
stopsquare
pasteclipboard
attachmentpaperclip
externalexternal-link
raincloud-rain
snowsnowflake
arrow-down-azarrow-down-az
arrow-down-zaarrow-down-za
arrow-up-azarrow-up-az
arrow-up-zaarrow-up-za
Browse the full icon set at lucide.dev/icons. Any icon listed there can be used by its kebab-case name.

Image

Displays an image with flexible sizing, fitting, and theme-aware source support.
<Image src={productImage} width={120} height={120} radius="md" fit="cover" />
You can also provide separate images for light and dark themes:
<Image
  src={{ light: lightLogo, dark: darkLogo }}
  width={200}
  height={60}
  fit="contain"
/>

Props

PropTypeDefaultDescription
srcstring | { light: string, dark: string }Image source URL. Pass an object with light and dark keys to display different images based on the active theme.
altstringAlternative text for accessibility.
sizenumberSquare shorthand — sets both width and height to the same value.
widthnumberImage width in pixels.
heightnumberImage height in pixels.
minWidthnumberMinimum width constraint.
maxWidthnumberMaximum width constraint.
minHeightnumberMinimum height constraint.
maxHeightnumberMaximum height constraint.
minSizenumberMinimum size shorthand (applies to both dimensions).
maxSizenumberMaximum size shorthand (applies to both dimensions).
aspectRationumberAspect ratio for the image container (e.g., 16/9).
radiusstringBorder radius token (e.g., "sm", "md", "lg", "full").
backgroundstringBackground color behind the image.
flexnumberFlex grow/shrink value for layout sizing.
fit"cover" | "contain" | "fill" | "scale-down" | "none"How the image fills its container, matching the CSS object-fit property.
position"center" | "top" | "bottom" | "left" | "right" | "top left" | "top right" | "bottom left" | "bottom right""center"Alignment of the image within its container when fit causes cropping.
framebooleanWhen true, wraps the image in a subtle border frame.
flushbooleanWhen true, removes default padding around the image.
onClickActionstringFunction name to invoke when the image is clicked.
Use fit="cover" with a fixed width and height to crop images into consistent thumbnails. Use fit="contain" when you need to show the full image without cropping.

Badge

A small label used to indicate status, categories, or tags.
<Badge label="Active" color="success" variant="soft" />
<Badge label="Overdue" color="danger" variant="solid" pill />

Props

PropTypeDefaultDescription
labelstringThe text displayed inside the badge.
color"secondary" | "success" | "danger" | "warning" | "info" | "discovery""secondary"Semantic color of the badge.
variant"solid" | "soft" | "outline""soft"Visual style. solid uses a filled background, soft uses a tinted background, and outline shows only a border.
size"sm" | "md" | "lg""sm"Controls the size of the badge.
pillbooleanWhen true, applies fully rounded corners for a pill shape.
Combine badges with layout components to build tag lists or status indicators inside cards and tables.

Transition

Wraps a child element with a fade-in and fade-out animation. Use this to add polish when content appears or disappears — for example, when toggling visibility with states.
<Transition>
  <Text value="This fades in" />
</Transition>
The animation applies a 0.2-second fade with a slight vertical slide. There are no configurable props — simply wrap any element to enable the effect.
Transition works well with States to animate content that conditionally appears based on user input or data changes.