React Alert - Flowbite
Get started with the alert component to show contextual information to the user such as when validating forms or showing errors based on React and Tailwind CSS
The alert component can be used to show a contextual text to the user such as a success or error message after form validation inside an alert box where you can choose from multiple colors, sizes, and styles.
The examples below are styled with Tailwind CSS and the reactivity is handled by React and you can also add any type of content inside the alert box.
To start using the alert box you need to import the <Alert>
component from the flowbite-react
package:
import { Alert } from "flowbite-react";
#
Default alertThe default alert component is a simple alert box with a text inside it and you can use the color
prop to change the color of the alert box and the title
prop to add a title to the alert box.
Inside of the <Alert>
component you can add any type of content such as text, images, or other components as they will be considered children of the alert box.
"use client";
import { Alert } from "flowbite-react";
export function Component() {
return (
<Alert color="info">
<span className="font-medium">Info alert!</span> Change a few things up and try submitting again.
</Alert>
);
}
#
Alert with iconUse the icon
prop to add an icon to the alert box and you can use any icon from the React Icons library.
"use client";
import { HiInformationCircle } from "react-icons/hi";
import { Alert } from "flowbite-react";
export function Component() {
return (
<Alert color="failure" icon={HiInformationCircle}>
<span className="font-medium">Info alert!</span> Change a few things up and try submitting again.
</Alert>
);
}
#
Dismissible alertYou can use the onDismiss
prop on the <Alert>
component to add a dismiss button to the alert box by adding a function inside of it that will be called when the user clicks on the dismiss button.
"use client";
import { Alert } from "flowbite-react";
export function Component() {
return (
<Alert color="success" onDismiss={() => alert('Alert dismissed!')}>
<span className="font-medium">Info alert!</span> Change a few things up and try submitting again.
</Alert>
);
}
#
Rounded alertTo make the alert box rounded you can use the rounded
prop on the <Alert>
component.
"use client";
import { Alert } from "flowbite-react";
export function Component() {
return (
<Alert color="warning" rounded>
<span className="font-medium">Info alert!</span> Change a few things up and try submitting again.
</Alert>
);
}
#
Border accentAdd a border accent to the alert box by applying the withBorderAccent
prop on the <Alert>
component.
"use client";
import { Alert } from "flowbite-react";
export function Component() {
return (
<Alert color="warning" withBorderAccent>
<span>
<span className="font-medium">Info alert!</span> Change a few things up and try submitting again.
</span>
</Alert>
);
}
#
Additional contentAdd additional content by using the additionalContent
prop and add any type of content inside of it.
"use client";
import { HiEye, HiInformationCircle } from "react-icons/hi";
import { Alert } from "flowbite-react";
export function Component() {
return (
<Alert additionalContent={<ExampleAdditionalContent />} color="warning" icon={HiInformationCircle}>
<span className="font-medium">Info alert!</span> Change a few things up and try submitting again.
</Alert>
);
}
function ExampleAdditionalContent() {
return (
<>
<div className="mb-4 mt-2 text-sm text-cyan-700 dark:text-cyan-800">
More info about this info alert goes here. This example text is going to run a bit longer so that you can see
how spacing within an alert works with this kind of content.
</div>
<div className="flex">
<button
type="button"
className="mr-2 inline-flex items-center rounded-lg bg-cyan-700 px-3 py-1.5 text-center text-xs font-medium text-white hover:bg-cyan-800 focus:ring-4 focus:ring-cyan-300 dark:bg-cyan-800 dark:hover:bg-cyan-900"
>
<HiEye className="-ml-0.5 mr-2 h-4 w-4" />
View more
</button>
<button
type="button"
className="rounded-lg border border-cyan-700 bg-transparent px-3 py-1.5 text-center text-xs font-medium text-cyan-700 hover:bg-cyan-800 hover:text-white focus:ring-4 focus:ring-cyan-300 dark:border-cyan-800 dark:text-cyan-800 dark:hover:text-white"
>
Dismiss
</button>
</div>
</>
);
}
#
All optionsThis is an example with all of the available options and props for the alert component.
import { HiEye, HiInformationCircle } from "react-icons/hi";
import { Alert } from "flowbite-react";
export function Component() {
return (
<Alert
additionalContent={<ExampleAdditionalContent />}
color="success"
icon={HiInformationCircle}
onDismiss={() => alert('Alert dismissed!')}
rounded
>
<span className="font-medium">Info alert!</span> Change a few things up and try submitting again.
</Alert>
);
}
#
ThemeTo learn more about how to customize the appearance of components, please see the Theme docs.
{
"base": "flex flex-col gap-2 p-4 text-sm",
"borderAccent": "border-t-4",
"closeButton": {
"base": "-m-1.5 ml-auto inline-flex h-8 w-8 rounded-lg p-1.5 focus:ring-2",
"icon": "h-5 w-5",
"color": {
"info": "bg-cyan-100 text-cyan-500 hover:bg-cyan-200 focus:ring-cyan-400 dark:bg-cyan-200 dark:text-cyan-600 dark:hover:bg-cyan-300",
"gray": "bg-gray-100 text-gray-500 hover:bg-gray-200 focus:ring-gray-400 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-800 dark:hover:text-white",
"failure": "bg-red-100 text-red-500 hover:bg-red-200 focus:ring-red-400 dark:bg-red-200 dark:text-red-600 dark:hover:bg-red-300",
"success": "bg-green-100 text-green-500 hover:bg-green-200 focus:ring-green-400 dark:bg-green-200 dark:text-green-600 dark:hover:bg-green-300",
"warning": "bg-yellow-100 text-yellow-500 hover:bg-yellow-200 focus:ring-yellow-400 dark:bg-yellow-200 dark:text-yellow-600 dark:hover:bg-yellow-300",
"red": "bg-red-100 text-red-500 hover:bg-red-200 focus:ring-red-400 dark:bg-red-200 dark:text-red-600 dark:hover:bg-red-300",
"green": "bg-green-100 text-green-500 hover:bg-green-200 focus:ring-green-400 dark:bg-green-200 dark:text-green-600 dark:hover:bg-green-300",
"yellow": "bg-yellow-100 text-yellow-500 hover:bg-yellow-200 focus:ring-yellow-400 dark:bg-yellow-200 dark:text-yellow-600 dark:hover:bg-yellow-300",
"blue": "bg-blue-100 text-blue-500 hover:bg-blue-200 focus:ring-blue-400 dark:bg-blue-200 dark:text-blue-600 dark:hover:bg-blue-300",
"cyan": "bg-cyan-100 text-cyan-500 hover:bg-cyan-200 focus:ring-cyan-400 dark:bg-cyan-200 dark:text-cyan-600 dark:hover:bg-cyan-300",
"pink": "bg-pink-100 text-pink-500 hover:bg-pink-200 focus:ring-pink-400 dark:bg-pink-200 dark:text-pink-600 dark:hover:bg-pink-300",
"lime": "bg-lime-100 text-lime-500 hover:bg-lime-200 focus:ring-lime-400 dark:bg-lime-200 dark:text-lime-600 dark:hover:bg-lime-300",
"dark": "bg-gray-100 text-gray-500 hover:bg-gray-200 focus:ring-gray-400 dark:bg-gray-200 dark:text-gray-600 dark:hover:bg-gray-300",
"indigo": "bg-indigo-100 text-indigo-500 hover:bg-indigo-200 focus:ring-indigo-400 dark:bg-indigo-200 dark:text-indigo-600 dark:hover:bg-indigo-300",
"purple": "bg-purple-100 text-purple-500 hover:bg-purple-200 focus:ring-purple-400 dark:bg-purple-200 dark:text-purple-600 dark:hover:bg-purple-300",
"teal": "bg-teal-100 text-teal-500 hover:bg-teal-200 focus:ring-teal-400 dark:bg-teal-200 dark:text-teal-600 dark:hover:bg-teal-300",
"light": "bg-gray-50 text-gray-500 hover:bg-gray-100 focus:ring-gray-200 dark:bg-gray-600 dark:text-gray-200 dark:hover:bg-gray-700 dark:hover:text-white"
}
},
"color": {
"info": "border-cyan-500 bg-cyan-100 text-cyan-700 dark:bg-cyan-200 dark:text-cyan-800",
"gray": "border-gray-500 bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300",
"failure": "border-red-500 bg-red-100 text-red-700 dark:bg-red-200 dark:text-red-800",
"success": "border-green-500 bg-green-100 text-green-700 dark:bg-green-200 dark:text-green-800",
"warning": "border-yellow-500 bg-yellow-100 text-yellow-700 dark:bg-yellow-200 dark:text-yellow-800",
"red": "border-red-500 bg-red-100 text-red-700 dark:bg-red-200 dark:text-red-800",
"green": "border-green-500 bg-green-100 text-green-700 dark:bg-green-200 dark:text-green-800",
"yellow": "border-yellow-500 bg-yellow-100 text-yellow-700 dark:bg-yellow-200 dark:text-yellow-800",
"blue": "border-blue-500 bg-blue-100 text-blue-700 dark:bg-blue-200 dark:text-blue-800",
"cyan": "border-cyan-500 bg-cyan-100 text-cyan-700 dark:bg-cyan-200 dark:text-cyan-800",
"pink": "border-pink-500 bg-pink-100 text-pink-700 dark:bg-pink-200 dark:text-pink-800",
"lime": "border-lime-500 bg-lime-100 text-lime-700 dark:bg-lime-200 dark:text-lime-800",
"dark": "border-gray-600 bg-gray-800 text-gray-200 dark:bg-gray-900 dark:text-gray-300",
"indigo": "border-indigo-500 bg-indigo-100 text-indigo-700 dark:bg-indigo-200 dark:text-indigo-800",
"purple": "border-purple-500 bg-purple-100 text-purple-700 dark:bg-purple-200 dark:text-purple-800",
"teal": "border-teal-500 bg-teal-100 text-teal-700 dark:bg-teal-200 dark:text-teal-800",
"light": "border-gray-400 bg-gray-50 text-gray-600 dark:bg-gray-500 dark:text-gray-200"
},
"icon": "mr-3 inline h-5 w-5 flex-shrink-0",
"rounded": "rounded-lg",
"wrapper": "flex items-center"
}