Skip to content

Banner

Displays contextual inline messages for informational, alert, or error states.

Source Code

Update available

A new version is ready to install.

Session expiring

Your session will expire in 5 minutes.

Save failed

We couldn't save your changes. Please try again.

import ilha from "ilha";
import { Info, TriangleAlert } from "lucide";
import { Banner, Icon } from "areia";

export default ilha.render(() => (
  <div class="flex w-full max-w-2xl flex-col gap-3">
    <Banner
      icon={<Icon icon={Info} class="size-5" />}
      title="Update available"
      description="A new version is ready to install."
    />
    <Banner
      icon={<Icon icon={TriangleAlert} class="size-5" />}
      variant="alert"
      title="Session expiring"
      description="Your session will expire in 5 minutes."
    />
    <Banner
      icon={<Icon icon={TriangleAlert} class="size-5" />}
      variant="error"
      title="Save failed"
      description="We couldn't save your changes. Please try again."
    />
  </div>
));

Import

import { Banner } from "areia";

Usage

Update available

A new version is ready to install.

import ilha from "ilha";
import { Info } from "lucide";
import { Banner, Icon } from "areia";

export default ilha.render(() => (
  <Banner
    icon={<Icon icon={Info} class="size-5" />}
    title="Update available"
    description="A new version is ready to install."
  />
));

Examples

Variants

Default

Update available

A new version is ready to install.

import ilha from "ilha";
import { Info } from "lucide";
import { Banner, Icon } from "areia";

export default ilha.render(() => (
  <Banner
    icon={<Icon icon={Info} class="size-5" />}
    title="Update available"
    description="A new version is ready to install."
  />
));

Alert

Session expiring

Your session will expire in 5 minutes.

import ilha from "ilha";
import { TriangleAlert } from "lucide";
import { Banner, Icon } from "areia";

export default ilha.render(() => (
  <Banner
    icon={<Icon icon={TriangleAlert} class="size-5" />}
    variant="alert"
    title="Session expiring"
    description="Your session will expire in 5 minutes."
  />
));

Error

Save failed

We couldn't save your changes. Please try again.

import ilha from "ilha";
import { TriangleAlert } from "lucide";
import { Banner, Icon } from "areia";

export default ilha.render(() => (
  <Banner
    icon={<Icon icon={TriangleAlert} class="size-5" />}
    variant="error"
    title="Save failed"
    description="We couldn't save your changes. Please try again."
  />
));

With Icon

Review required

Please review your project settings before proceeding.

import ilha from "ilha";
import { TriangleAlert } from "lucide";
import { Banner, Icon } from "areia";

export default ilha.render(() => (
  <Banner
    icon={<Icon icon={TriangleAlert} class="size-5" />}
    variant="alert"
    title="Review required"
    description="Please review your project settings before proceeding."
  />
));

With Action

Update available

A new version is ready to install.

import ilha from "ilha";
import { Info } from "lucide";
import { Banner, Button, Icon } from "areia";

export default ilha.render(() => (
  <Banner
    icon={<Icon icon={Info} class="size-5" />}
    title="Update available"
    description="A new version is ready to install."
    action={
      <Button size="sm" variant="primary">
        Update now
      </Button>
    }
  />
));

With Multiple Actions

Session expiring

Your session will expire in 5 minutes.

import ilha from "ilha";
import { TriangleAlert } from "lucide";
import { Banner, Button, Icon } from "areia";

export default ilha.render(() => (
  <Banner
    icon={<Icon icon={TriangleAlert} class="size-5" />}
    variant="alert"
    title="Session expiring"
    description="Your session will expire in 5 minutes."
    action={
      <>
        <Button size="sm" variant="ghost">
          Dismiss
        </Button>
        <Button size="sm" variant="secondary">
          Extend session
        </Button>
      </>
    }
  />
));

Custom Content

Use markup in description when the message needs links, emphasis, or other inline content.

Custom content supported

This banner supports custom content with Ilha markup.

import ilha from "ilha";
import { Info } from "lucide";
import { Banner, Icon } from "areia";

export default ilha.render(() => (
  <Banner
    icon={<Icon icon={Info} class="size-5" />}
    title="Custom content supported"
    description={
      <>
        This banner supports <strong>custom content</strong>{" "}
        with Ilha markup.
      </>
    }
  />
));

API Reference

PropTypeDefaultDescription
iconunknown-Icon markup rendered before the banner content.
titleunknown-Primary heading text for the banner.
descriptionunknown-Secondary description displayed below the title.
actionunknown-Action slot rendered at the trailing end of structured banners.
textunknown-Simple banner content used when title and description are not provided.
variant"default" | "alert" | "error""default"Visual style of the banner.
classstring-Additional CSS classes merged with the generated classes.
classNamestring-Alias for class.