Alert
Overviewimport { Alert, AlertAction } from '@nili/ui';This is the library’s own overview page, rendered live. Switch the language or the theme in the header and it follows.
Statuses
Five meanings. error is announced assertively by default; the rest wait for a pause.
import { Alert } from "@nili/ui"
export function Example() {
return (
<>
<Alert status="error" title="Something went wrong." />
<Alert status="warning" title="Your trial ends in 3 days." />
<Alert status="success" title="Payment received." />
<Alert status="info" title="A new version is available." />
<Alert status="feature" title="Try the new dashboard." />
</>
)
}Appearances
Filled, Light, Lighter and Stroke. Filled is the loudest — keep it for things that genuinely interrupt.
import { Alert } from "@nili/ui"
export function Example() {
return (
<>
<Alert appearance="filled" status="info" title="Filled" />
<Alert appearance="light" status="info" title="Light" />
<Alert appearance="lighter" status="info" title="Lighter" />
<Alert appearance="stroke" status="info" title="Stroke" />
</>
)
}Sizes
X-Small is a single line with no icon padding; Large carries a description and actions.
Everyone on the team can see them now.
import { Alert } from "@nili/ui"
export function Example() {
return (
<>
<Alert size="x-small" status="success" title="Saved." />
<Alert size="small" status="success" title="Saved." />
<Alert
size="large"
status="success"
title="Saved."
description="Your changes are live for everyone on the team."
/>
</>
)
}Actions, icons and dismissal
actions takes up to two inline actions. icon accepts true for the default glyph, a node to replace it, or false to drop it. dismissible needs dismissLabel — an ✕ has no accessible name.
import { Alert, Icon } from "@nili/ui"
import { RiSparkling2Line } from "@remixicon/react"
export function Example() {
const [open, setOpen] = useState(true)
return (
<>
<Alert
status="warning"
appearance="stroke"
size="large"
title={t('actions.planTitle')}
description={t('actions.planBody')}
actions={[
{ label: "Upgrade", href: "#" },
{ label: "Dismiss", onClick: () => setOpen(false) },
]}
dismissible
dismissLabel={t('close')}
onDismiss={() => setOpen(false)}
/>
{/* Custom icon */}
<Alert
status="feature"
title={t('actions.feature')}
icon={<Icon icon={RiSparkling2Line} />}
/>
{/* No icon */}
<Alert status="info" title="No icon." icon={false} />
</>
)
}Alert
extends Omit< ComponentPropsWithoutRef<'div'>, 'title' | 'children' >
Variant axes — from the component’s cva definition
| Prop | Type | Default | Notes |
|---|---|---|---|
| status | error | warning | success | info | feature | info | |
| appearance | filled | light | lighter | stroke | filled | Renamed from `style`, which shadowed React's `style` (`CSSProperties`). |
| size | x-small | small | large | small |
Other props
| Prop | Type | Default | Notes |
|---|---|---|---|
| children | ReactNode | — | |
| aria-label | string | — | |
| title* | ReactNode | — | |
| description | ReactNode | — | |
| icon | boolean | ReactNode | true | `true` shows the default glyph for `status`; pass a node to override it; `false` hides it. The default glyph is decorative — the alert's meaning is carried by `role`, not by the picture. |
| actions | AlertAction[] | — | Up to two inline actions. Replaces the unused `linkButton`/`doubleLink`. |
| dismissible | boolean | false | Shows a close button. Requires `dismissLabel` for the accessible name. |
| onDismiss | () => void | — | |
| dismissLabel | string | Dismiss | Accessible name for the close button, e.g. `'Close'`. |
| urgency | assertive | polite | off | — | How assistive tech announces this alert. - `'assertive'` (default for `error`) interrupts the user immediately. - `'polite'` waits for a pause — right for success and info. - `'off'` for alerts rendered statically on page load, which should not be announced at all. |
AlertAction
AlertClose
internalVariant axes — from the component’s cva definition
| Prop | Type | Default | Notes |
|---|---|---|---|
| size | x-small | small | large | small |
AlertIcon
internalVariant axes — from the component’s cva definition
| Prop | Type | Default | Notes |
|---|---|---|---|
| status | error | warning | success | info | feature | info | |
| appearance | filled | light | lighter | stroke | filled | |
| size | x-small | small | large | small |