Alert
Alerts serve as a means to convey the status of an application or system.
Basic usage
You can pass a title as a prop to the WAlert component by using the title prop as shown below:
In addition to that, you can pass the alert description by using the WAlertDescription component as shown below:
Variants
The WAlert component comes with 5 different variants such as default, primary, success, warning, and danger as demonstrated below:
Theme
The WAlert component comes with various themes such as light, outline and dashed as demonstrated below:
Light
You can set the light theme to the variants as shown below:
Outline
You can set the outline theme to the variants as shown below:
Dashed
You can set the dashed theme to the variants as shown below:
Closable
You can set the closable prop and an event to close the alert as shown below:
In the example above, the WAlert component has a closable prop, which allows you to display a close button on the WAlert component . When the close button is clicked, it emits a close event. You can handle this event by defining your own method inorder to close the WAlert component.
Transitions
You can set the transition of the WAlert component when it is dismissed as shown below:
Windi UI offers four transition modes as of Windi UI version v0.0.1, namely: slideRight, slideLeft, fade, and scale.
By default, the WAlert component's transition is slideRight.
Icons
You can set the icons of the WAlert component either at the beginning (leading) or at the end (trailing).
Leading
Trailing
You can set the icon as trailing by setting the trailing prop to true as show below:
If you need both the leading and trailing icons, you can use the leading and trailing slot respectively as shown below:
Avatar
You can use the WAvatar component with the WAlert component as shown below:
Custom
You can also create a custom alert component as demonstrated below:
Preset
WAlert: {
base: {
root: 'w-full relative overflow-hidden rounded-md px-3 py-2.5',
alertTitle: 'text-lg font-semibold',
alertFlexBetween: 'flex justify-between items-center w-full',
alertBody: 'text-sm leading-none mt-2.5',
alertCloseIcon: 'w-6 h-6 block',
alertIsLeading: 'space-x-1',
alertIconIsLeading: 'pr-1.5',
alertIsNotLeading: 'space-x-2',
alertCloseButtonClass: 'p-0.5 rounded-md -m-1 block transition duration-200 ease-in',
},
variants: {
'default': {
root: 'bg-yellow-500 text-white w-full',
alertCloseButtonClass: 'text-white py-1 px-1 hover:bg-yellow-800',
},
'default-light': {
root: [
'border border-yellow-500 bg-yellow-100 text-yellow-800 dark:bg-yellow-500/20 dark:text-yellow-500 hover:bg-yellow-800 hover:text-white duration-200 ease-in dark:hover:bg-yellow-800 dark:hover:text-white',
],
alertCloseButtonClass: 'hover:text-white py-1 px-1 hover:bg-yellow-900 !active:text-white',
},
'default-dashed': {
root: [
'border border-dashed border-yellow-500 text-yellow-800 hover:bg-yellow-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-yellow-900',
},
'default-outline': {
root: [
'border border-yellow-500 text-yellow-800 hover:bg-yellow-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-yellow-900',
},
'primary': {
root: 'bg-blue-500 text-white',
alertCloseButtonClass: 'text-white py-1 px-1 hover:bg-blue-800',
},
'primary-light': {
root: [
'border border-blue-500 bg-blue-100 text-blue-800 dark:bg-blue-500/20 dark:text-blue-500 hover:bg-blue-800 hover:text-white duration-200 ease-in dark:hover:bg-blue-800 dark:hover:text-white',
],
alertCloseButtonClass: 'hover:text-white py-1 px-1 hover:bg-blue-900 !active:text-white',
},
'primary-outline': {
root: [
'border border-blue-500 text-blue-800 hover:bg-blue-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-blue-900',
},
'primary-dashed': {
root: [
'border border-dashed border-blue-500 text-blue-800 hover:bg-blue-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-blue-900',
},
'success': {
root: 'bg-green-500 text-white',
alertCloseButtonClass: 'text-white py-1 px-1 hover:bg-green-800',
},
'success-light': {
root: [
'border border-green-500 bg-green-100 text-green-800 dark:bg-green-500/20 dark:text-[#0CC57D] hover:bg-green-800 hover:text-white duration-200 ease-in dark:hover:bg-green-800 dark:hover:text-white',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-green-900',
},
'success-outline': {
root: [
'border border-green-500 text-green-800 hover:bg-green-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-green-900',
},
'success-dashed': {
root: [
'border border-dashed border-green-500 text-green-800 hover:bg-green-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-green-900',
},
'warning': {
root: 'bg-orange-500 text-white',
alertCloseButtonClass: 'text-white hover:text-white py-1 px-1 hover:bg-orange-800',
},
'warning-light': {
root: [
'border border-orange-500 bg-orange-100 text-orange-800 dark:bg-[#362C1E] dark:text-[#F5A525] hover:bg-orange-800 hover:text-white duration-200 ease-in dark:hover:bg-orange-800 dark:hover:text-white',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-orange-900',
},
'warning-outline': {
root: [
'border border-orange-500 text-orange-800 hover:bg-orange-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-orange-900',
},
'warning-dashed': {
root: [
'border border-dashed border-orange-500 text-orange-800 hover:bg-orange-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-orange-900',
},
'danger': {
root: 'bg-red-500 text-white',
alertCloseButtonClass: 'text-white hover:text-white py-1 px-1 hover:bg-red-800',
},
'danger-light': {
root: [
'border border-red-500 bg-red-100 text-red-800 dark:bg-red-500/20 dark:text-red-500 hover:bg-red-800 dark:hover:bg-red-800 dark:hover:text-white hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-red-900',
},
'danger-outline': {
root: [
'border border-red-500 text-red-800 hover:bg-red-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-red-900',
},
'danger-dashed': {
root: [
'border border-dashed border-red-500 text-red-800 hover:bg-red-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-red-900',
},
},
},WAlert: {
base: {
root: 'w-full relative overflow-hidden rounded-md px-3 py-2.5',
alertTitle: 'text-lg font-semibold',
alertFlexBetween: 'flex justify-between items-center w-full',
alertBody: 'text-sm leading-none mt-2.5',
alertCloseIcon: 'w-6 h-6 block',
alertIsLeading: 'space-x-1',
alertIconIsLeading: 'pr-1.5',
alertIsNotLeading: 'space-x-2',
alertCloseButtonClass: 'p-0.5 rounded-md -m-1 block transition duration-200 ease-in',
},
variants: {
'default': {
root: 'bg-yellow-500 text-white w-full',
alertCloseButtonClass: 'text-white py-1 px-1 hover:bg-yellow-800',
},
'default-light': {
root: [
'border border-yellow-500 bg-yellow-100 text-yellow-800 dark:bg-yellow-500/20 dark:text-yellow-500 hover:bg-yellow-800 hover:text-white duration-200 ease-in dark:hover:bg-yellow-800 dark:hover:text-white',
],
alertCloseButtonClass: 'hover:text-white py-1 px-1 hover:bg-yellow-900 !active:text-white',
},
'default-dashed': {
root: [
'border border-dashed border-yellow-500 text-yellow-800 hover:bg-yellow-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-yellow-900',
},
'default-outline': {
root: [
'border border-yellow-500 text-yellow-800 hover:bg-yellow-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-yellow-900',
},
'primary': {
root: 'bg-blue-500 text-white',
alertCloseButtonClass: 'text-white py-1 px-1 hover:bg-blue-800',
},
'primary-light': {
root: [
'border border-blue-500 bg-blue-100 text-blue-800 dark:bg-blue-500/20 dark:text-blue-500 hover:bg-blue-800 hover:text-white duration-200 ease-in dark:hover:bg-blue-800 dark:hover:text-white',
],
alertCloseButtonClass: 'hover:text-white py-1 px-1 hover:bg-blue-900 !active:text-white',
},
'primary-outline': {
root: [
'border border-blue-500 text-blue-800 hover:bg-blue-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-blue-900',
},
'primary-dashed': {
root: [
'border border-dashed border-blue-500 text-blue-800 hover:bg-blue-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-blue-900',
},
'success': {
root: 'bg-green-500 text-white',
alertCloseButtonClass: 'text-white py-1 px-1 hover:bg-green-800',
},
'success-light': {
root: [
'border border-green-500 bg-green-100 text-green-800 dark:bg-green-500/20 dark:text-[#0CC57D] hover:bg-green-800 hover:text-white duration-200 ease-in dark:hover:bg-green-800 dark:hover:text-white',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-green-900',
},
'success-outline': {
root: [
'border border-green-500 text-green-800 hover:bg-green-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-green-900',
},
'success-dashed': {
root: [
'border border-dashed border-green-500 text-green-800 hover:bg-green-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-green-900',
},
'warning': {
root: 'bg-orange-500 text-white',
alertCloseButtonClass: 'text-white hover:text-white py-1 px-1 hover:bg-orange-800',
},
'warning-light': {
root: [
'border border-orange-500 bg-orange-100 text-orange-800 dark:bg-[#362C1E] dark:text-[#F5A525] hover:bg-orange-800 hover:text-white duration-200 ease-in dark:hover:bg-orange-800 dark:hover:text-white',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-orange-900',
},
'warning-outline': {
root: [
'border border-orange-500 text-orange-800 hover:bg-orange-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-orange-900',
},
'warning-dashed': {
root: [
'border border-dashed border-orange-500 text-orange-800 hover:bg-orange-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-orange-900',
},
'danger': {
root: 'bg-red-500 text-white',
alertCloseButtonClass: 'text-white hover:text-white py-1 px-1 hover:bg-red-800',
},
'danger-light': {
root: [
'border border-red-500 bg-red-100 text-red-800 dark:bg-red-500/20 dark:text-red-500 hover:bg-red-800 dark:hover:bg-red-800 dark:hover:text-white hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-red-900',
},
'danger-outline': {
root: [
'border border-red-500 text-red-800 hover:bg-red-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-red-900',
},
'danger-dashed': {
root: [
'border border-dashed border-red-500 text-red-800 hover:bg-red-800 hover:text-white duration-200 ease-in',
],
alertCloseButtonClass: '!active:text-white hover:text-white py-1 px-1 hover:bg-red-900',
},
},
},
Windi UI