Компонент CloseButton является специализированным элементом интерфейса в библиотеке Chakra UI, предназначенным для предоставления пользователю возможности закрывать модальные окна, уведомления, панели и другие интерактивные элементы. Он представляет собой кнопку с крестиком, автоматически стилизованную и адаптированную под дизайн Chakra UI.
Для использования CloseButton необходимо
импортировать его из пакета @chakra-ui/react:
import { CloseButton } from "@chakra-ui/react";
Базовый пример использования:
<CloseButton />
По умолчанию кнопка имеет стандартный размер и цвет, который изменяется при наведении и фокусе.
Компонент поддерживает различные размеры через проп
size. Допустимые значения:
"sm" — маленькая кнопка"md" — средняя (по умолчанию)"lg" — большая кнопкаПример задания размера:
<CloseButton size="lg" />
Для изменения цвета используются пропсы color и
colorScheme. Например:
<CloseButton color="red.500" />
<CloseButton colorScheme="green" />
Важно: colorScheme задаёт цветовую
тему, которая автоматически подстраивает стили при наведении, фокусе и
активном состоянии.
Компонент CloseButton поддерживает стандартные
события кнопок в React: onClick, onMouseEnter,
onMouseLeave и др. Наиболее часто используется
onClick для закрытия модальных окон или уведомлений.
<CloseButton onCl ick={() => setIsOpen(false)} />
В этом примере кнопка вызывает функцию, изменяющую состояние
isOpen на false, что закрывает
компонент-оболочку (например, Alert или
Drawer).
CloseButton часто применяется внутри модальных окон, панелей и уведомлений:
import { Modal, ModalOverlay, ModalContent, ModalHeader, ModalBody, ModalCloseButton } from "@chakra-ui/react";
<Modal isOpen={isOpen} onCl ose={onClose}>
<ModalOverlay />
<ModalContent>
<ModalHeader>Заголовок модального окна</ModalHeader>
<ModalCloseButton />
<ModalBody>
Содержимое модального окна
</ModalBody>
</ModalContent>
</Modal>
Здесь используется специализированная версия кнопки — ModalCloseButton, которая по сути является расширением CloseButton, встроенной в модальные компоненты Chakra UI с автоматическим управлением состоянием закрытия.
import { Alert, AlertTitle, AlertDescription, CloseButton } from "@chakra-ui/react";
<Alert status="success">
<AlertTitle>Успешно!</AlertTitle>
<AlertDescription>Данные сохранены</AlertDescription>
<CloseButton position="absolute" right="8px" top="8px" onCl ick={onClose} />
</Alert>
Обратите внимание на использование позиционирования через
CSS (position="absolute"), чтобы разместить кнопку
в верхнем правом углу уведомления.
Chakra UI предоставляет гибкий механизм стилизации через систему style props. Для CloseButton можно использовать:
bg, background — фон кнопкиhover, focus, active
состояния через псевдоклассыborderRadius — скругление угловboxShadow — теньПример кастомизации:
<CloseButton
size="md"
colorScheme="purple"
_hover={{ bg: "purple.100" }}
_focus={{ boxShadow: "outline" }}
borderRadius="full"
/>
CloseButton автоматически включает атрибут
aria-label="Close", что обеспечивает корректную работу с
экранными читалками. Для использования в контексте других компонентов
важно не удалять этот атрибут, чтобы сохранить доступность
(accessibility).
Хотя CloseButton сам по себе визуализирует крестик,
при необходимости его можно заменить или дополнить другой иконкой с
помощью свойства children:
import { CloseIcon } from "@chakra-ui/icons";
<CloseButton>
<CloseIcon />
</CloseButton>
Это позволяет интегрировать пользовательские иконки, сохраняя стилистику Chakra UI.
CloseButton является минималистичным, но мощным инструментом для управления закрытием интерфейсных элементов. Его ключевые возможности:
Его функциональность делает интерфейсы Chakra UI интуитивными и единообразными, обеспечивая корректное поведение кнопок закрытия во всех типах компонентов.