Alert
Calls attention to an important status, outcome, or next step.
Preview
Example code
Deployment ready
Your changes passed every check and can be published when you are ready.
Playground
schemeSets the alert's semantic color treatment.
Usage
tsx
import { Alert, AlertDescription, AlertTitle } from "earthling-ui/alert";
export function Example() {
return (
<>
<Alert scheme="good">
<AlertTitle>Deployment ready</AlertTitle>
<AlertDescription>Your changes passed every check.</AlertDescription>
</Alert>
</>
);
}
- Alerts use role=alert, so reserve them for information that should be announced immediately.
- Pair a short title with a specific description; color alone should never carry the meaning.
- Choose a semantic scheme such as good, caution, or bad when the message represents an outcome.
Installation
Start with the project setup for React and Tailwind CSS 4. Both paths use the same component and theme.
Import package
Own the source
bash
npm install earthling-uiUse the component import shown above. Package updates keep the implementation current.
API reference
Declarations from the current library build, including inherited primitive props. Playground controls above show selected options; they are not the complete API.
tsx
// Generated by dts-bundle-generator v9.5.1
import { VariantProps } from 'class-variance-authority';
import { ComponentProps } from 'react';
export declare const alertVariants: (props?: ({
scheme?: "default" | "primary" | "secondary" | "tertiary" | "neutral" | "muted" | "good" | "caution" | "bad" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
export interface AlertProps extends ComponentProps<"div">, VariantProps<typeof alertVariants> {
}
export declare const Alert: import("react").ForwardRefExoticComponent<Omit<AlertProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
export declare const AlertTitle: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref"> & import("react").RefAttributes<HTMLHeadingElement>>;
export declare const AlertDescription: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
export {};Runtime dependencies: class-variance-authority, cnfast.
Source
Use the eject command to copy this implementation with its required helpers and project-specific imports.
View Alert implementation
tsx
"use client";
import { type ComponentProps, forwardRef } from "react";
import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/utils/cn";
import { schemes } from "@/utils/variants";
const alertVariants = cva(
"relative w-full rounded-lg border border-(--scheme-tint)/25 bg-(--scheme-tint)/5 p-4 text-sm text-foreground [&>svg~*]:ps-7 [&>svg]:absolute [&>svg]:start-4 [&>svg]:top-4 [&>svg]:size-4 [&>svg]:text-current",
{
variants: {
scheme: schemes,
},
defaultVariants: { scheme: "default" },
},
);
export interface AlertProps
extends ComponentProps<"div">, VariantProps<typeof alertVariants> {}
const Alert = forwardRef<HTMLDivElement, AlertProps>(
({ className, scheme, ...props }, ref) => (
<div
ref={ref}
role="alert"
className={cn(alertVariants({ scheme }), className)}
{...props}
/>
),
);
Alert.displayName = "Alert";
const AlertTitle = forwardRef<HTMLHeadingElement, ComponentProps<"h5">>(
({ className, ...props }, ref) => (
<h5
ref={ref}
className={cn("mb-1 font-medium leading-tight tracking-tight", className)}
{...props}
/>
),
);
AlertTitle.displayName = "AlertTitle";
const AlertDescription = forwardRef<HTMLDivElement, ComponentProps<"div">>(
({ className, ...props }, ref) => (
<div
ref={ref}
className={cn("text-sm/relaxed [&_p]:leading-relaxed", className)}
{...props}
/>
),
);
AlertDescription.displayName = "AlertDescription";
export { Alert, AlertTitle, AlertDescription, alertVariants };