Компонент Alert предназначен для отображения уведомлений различного типа — информационных, предупреждающих, успешных или критических. Он используется для мгновенной визуальной коммуникации с пользователем о состоянии приложения. В Chakra UI Alert полностью настраиваемый, поддерживает цветовые схемы, иконки и различные варианты отображения.
Базовая структура компонента выглядит так:
import { Alert, AlertIcon, AlertTitle, AlertDescription } from "@chakra-ui/react";
<Alert status="success">
<AlertIcon />
<AlertTitle>Успех!</AlertTitle>
<AlertDescription>Ваши данные успешно сохранены.</AlertDescription>
</Alert>
status и
их назначениеstatus определяет визуальный стиль алерта:
success — зеленый, для положительных уведомлений.error — красный, для критических ошибок.warning — желтый, для предупреждений.info — синий, для информационных сообщений.Пример использования разных статусов:
<Alert status="error">
<AlertIcon />
Ошибка при загрузке данных!
</Alert>
<Alert status="warning">
<AlertIcon />
Внимание! Ваши изменения не сохранены.
</Alert>
Chakra UI поддерживает несколько вариантов визуального
оформления через проп variant:
subtle — минималистичный, мягкий фон.solid — яркий цветной фон.left-accent — цветная полоска слева.top-accent — цветная полоска сверху.Пример:
<Alert status="info" variant="left-accent">
<AlertIcon />
Информация: новые обновления доступны.
</Alert>
<Alert status="warning" variant="solid">
<AlertIcon />
Предупреждение: недостаточно прав.
</Alert>
AlertIcon, AlertTitle и
AlertDescriptionAlertIcon автоматически подбирает иконку под статус алерта. AlertTitle — заголовок уведомления, выделяется жирным шрифтом. AlertDescription — подробное описание или пояснение.
Пример комбинированного использования:
<Alert status="error" variant="subtle">
<AlertIcon />
<AlertTitle>Ошибка!</AlertTitle>
<AlertDescription>Не удалось отправить форму, попробуйте позже.</AlertDescription>
</Alert>
Можно изменять цветовую схему через colorScheme.
Например:
<Alert status="success" colorScheme="teal">
<AlertIcon />
Операция выполнена успешно!
</Alert>
Значение colorScheme может быть любым доступным в Chakra
UI, что позволяет интегрировать алерты в фирменный стиль приложения.
Alert поддерживает ARIA-атрибуты автоматически.
Статус алерта добавляется к role="alert", что обеспечивает
уведомление скринридеров.
Компонент также адаптивен, корректно отображается на мобильных и десктопных устройствах без дополнительной настройки.
Alert можно показывать и скрывать программно с помощью состояния:
import { useState } from "react";
import { Alert, AlertIcon, Button } from "@chakra-ui/react";
function DynamicAlert() {
const [visible, setVisible] = useState(false);
return (
<>
<Button onCl ick={() => setVisible(!visible)}>
{visible ? "Скрыть уведомление" : "Показать уведомление"}
</Button>
{visible && (
<Alert status="info" mt={4}>
<AlertIcon />
Это динамически отображаемое уведомление.
</Alert>
)}
</>
);
}
Alert легко интегрируется с Box, Stack, Flex, позволяя создавать сложные уведомления с кнопками и ссылками:
import { Alert, AlertIcon, AlertTitle, AlertDescription, Button, HStack } from "@chakra-ui/react";
<Alert status="warning" variant="left-accent">
<AlertIcon />
<HStack spacing={4}>
<AlertTitle>Внимание!</AlertTitle>
<AlertDescription>Необходимо обновить данные.</AlertDescription>
<Button size="sm" colorScheme="yellow">Обновить</Button>
</HStack>
</Alert>
Хотя Chakra UI не предоставляет встроенных анимаций для Alert, компонент легко оборачивается в AnimatePresence и motion.div из Framer Motion для плавного появления и исчезновения:
import { motion, AnimatePresence } from "framer-motion";
import { Alert, AlertIcon } from "@chakra-ui/react";
<AnimatePresence>
{visible && (
<motion.div
initial={{ opacity: 0, y: -20 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: -20 }}
>
<Alert status="success">
<AlertIcon />
Данные успешно обновлены.
</Alert>
</motion.div>
)}
</AnimatePresence>
AlertIcon и текста
без AlertTitle.solid или left-accent для привлечения
внимания.subtle — не
отвлекает пользователя от основной работы.mt, mb, p
позволяет легко вписать алерты в общий макет страницы.Alert в Chakra UI является мощным и гибким инструментом для информирования пользователей, обеспечивая единый визуальный стиль, доступность и простоту интеграции с другими компонентами.