VESYL UI

Halo

Halo frames an icon with a transparent gap and a low-opacity ring derived from the icon’s color. Use it to give a meaningful status or outcome more presence without adding a filled tile.

Colors

Set one CSS color; the icon uses it directly and the halo derives the same color at 20% opacity. Without color, the component inherits currentColor.

Pair Halo with a circular icon. The round ring reinforces circular glyphs; triangles and other silhouettes look disconnected from it.

Neutral
Info
Success
Attention
Danger

Sizes

Each size owns the icon, transparent gap, halo thickness, and total footprint as one visual recipe.

Small
Medium
Large
SizeIconClear gapHaloFootprint
sm16px2px5px28px
md24px2px7px40px
lg32px4px11px56px

Notice

Halo works best in spacious, durable feedback such as resolved states, service notices, and full-page outcomes. Compact alerts, status rows, and routine toasts usually need a smaller visual footprint.

No incidents declared

We are not actively mitigating any known incidents at this time.

Usage

import { Halo } from '@vesyl/ui-next'
import { CircleCheck } from 'lucide-react'

<Halo color="var(--status-success)" size="md">
  <CircleCheck />
</Halo>

Reference

Extends <span> props.

PropTypeDefaultDescription
colorCSS colorcurrentColorBase color shared by the icon and translucent halo
size"sm" | "md" | "lg""md"Controls the complete icon, gap, halo, and footprint recipe