Компонент Tag в Chakra UI используется для отображения меток, категорий или краткой информации в компактном визуальном формате. Он позволяет создавать элементы с текстом, иконками и возможностью удаления, при этом обеспечивая удобную стилизацию и адаптивность.
Базовая структура компонента выглядит следующим образом:
import { Tag, TagLabel } from "@chakra-ui/react";
<Tag>
<TagLabel>Example Tag</TagLabel>
</Tag>
Дополнительно для улучшения функциональности можно использовать TagLeftIcon и TagRightIcon.
Для добавления иконок используются компоненты:
Пример:
import { Tag, TagLabel, TagLeftIcon, TagRightIcon, CloseButton } from "@chakra-ui/react";
import { InfoIcon } from "@chakra-ui/icons";
<Tag size="lg" variant="subtle" colorScheme="blue">
<TagLeftIcon boxSize="12px" as={InfoIcon} />
<TagLabel>Information</TagLabel>
<TagRightIcon as={CloseButton} />
</Tag>
sm,
md, lg.subtle, solid,
outline.<Tag variant="subtle" colorScheme="green">Subtle Tag</Tag>
<Tag variant="solid" colorScheme="red">Solid Tag</Tag>
<Tag variant="outline" colorScheme="purple">Outline Tag</Tag>
Размеры задаются через свойство size, влияя на высоту, отступы и размер шрифта:
<Tag size="sm" colorScheme="teal">Small Tag</Tag>
<Tag size="md" colorScheme="orange">Medium Tag</Tag>
<Tag size="lg" colorScheme="pink">Large Tag</Tag>
Для реализации возможности удаления метки используется компонент CloseButton, который можно разместить внутри TagRightIcon:
<Tag size="md" variant="solid" colorScheme="red">
<TagLabel>Removable Tag</TagLabel>
<TagRightIcon as={CloseButton} onCl ick={() => console.log("Tag removed")} />
</Tag>
При необходимости можно подключать собственную логику удаления через обработчики событий.
blue, red, green,
purple, pink, orange,
teal, cyan и др.<Tag
size="lg"
variant="solid"
colorScheme="purple"
borderRadius="full"
px={4}
py={2}
>
Custom Styled Tag
</Tag>
Для отображения нескольких меток можно использовать HStack или Wrap:
import { Wrap, WrapItem } from "@chakra-ui/react";
<Wrap spacing={2}>
<WrapItem>
<Tag colorScheme="blue">Tag 1</Tag>
</WrapItem>
<WrapItem>
<Tag colorScheme="green">Tag 2</Tag>
</WrapItem>
<WrapItem>
<Tag colorScheme="red">Tag 3</Tag>
</WrapItem>
</Wrap>
При работе с массивами данных удобно рендерить теги через map:
const tags = ["JavaScript", "React", "Chakra UI"];
<Wrap spacing={2}>
{tags.map((item, index) => (
<WrapItem key={index}>
<Tag colorScheme="teal">{item}</Tag>
</WrapItem>
))}
</Wrap>
Такой подход позволяет легко создавать динамические списки меток, например, для фильтров или категорий.
Chakra UI предоставляет гибкую и расширяемую систему меток, позволяя создавать как простые, так и интерактивные теги с удалением, иконками и динамическим отображением. Это делает Tag универсальным инструментом для визуальной организации данных в интерфейсе.