'use client'
import { HStack } from '@chakra-ui/react'
import { Tag } from '@saas-ui/react'
export const TagBasic = () => {
return (
<HStack>
<Tag>Plain Tag</Tag>
<Tag closable>Closable Tag</Tag>
</HStack>
)
}
import { Tag } from '@saas-ui/react/tag'
<Tag>Tag here</Tag>
Use the startElement prop to add an icon to the tag.
'use client'
import { HStack } from '@chakra-ui/react'
import { Tag } from '@saas-ui/react'
import { LuCircleUser, LuFileBadge } from 'react-icons/lu'
export const TagWithIcon = () => {
return (
<HStack>
<Tag startElement={<LuCircleUser />}>Tag 2</Tag>
<Tag startElement={<LuFileBadge />}>Top Rated</Tag>
</HStack>
)
}
Use the variant prop to change the appearance of the tag.
'use client'
import { For, HStack, Stack } from '@chakra-ui/react'
import { Tag } from '@saas-ui/react'
import { HiCheck } from 'react-icons/hi'
export const TagWithVariants = () => {
return (
<Stack gap="8">
<For each={['subtle', 'solid', 'outline', 'surface']}>
{(variant) => (
<HStack key={variant}>
<Tag variant={variant}>Gray</Tag>
<Tag variant={variant} closable>
Gray
</Tag>
<Tag endElement={<HiCheck />} variant={variant}>
Gray
</Tag>
</HStack>
)}
</For>
</Stack>
)
}
Use the size prop to change the size of the tag.
'use client'
import { For, HStack, Stack } from '@chakra-ui/react'
import { Tag } from '@saas-ui/react'
import { HiCheck } from 'react-icons/hi'
export const TagWithSizes = () => {
return (
<Stack gap="8">
<For each={['sm', 'md', 'lg']}>
{(size) => (
<HStack key={size}>
<Tag size={size}>Gray</Tag>
<Tag size={size} closable>
Gray
</Tag>
<Tag endElement={<HiCheck />} size={size}>
Gray
</Tag>
</HStack>
)}
</For>
</Stack>
)
}
Use the colorPalette prop to change the color of the tag.
gray
red
green
blue
teal
pink
purple
cyan
orange
yellow
'use client'
import { Stack, Text } from '@chakra-ui/react'
import { Tag } from '@saas-ui/react'
import { HiPlus } from 'react-icons/hi'
import { colorPalettes } from '../lib/color-palettes'
export const TagWithColors = () => {
return (
<Stack gap="2" align="flex-start">
{colorPalettes.map((colorPalette) => (
<Stack
align="center"
key={colorPalette}
direction="row"
gap="10"
px="4"
>
<Text minW="8ch">{colorPalette}</Text>
<Tag size="sm" colorPalette={colorPalette}>
Content
</Tag>
<Tag startElement={<HiPlus />} size="sm" colorPalette={colorPalette}>
Content
</Tag>
<Tag size="sm" colorPalette={colorPalette} variant="solid" closable>
Content
</Tag>
</Stack>
))}
</Stack>
)
}
Use the closable prop to make the tag closable.
'use client'
import { HStack } from '@chakra-ui/react'
import { Tag } from '@saas-ui/react'
import { LuActivity } from 'react-icons/lu'
export const TagWithClose = () => {
return (
<HStack>
<Tag startElement={<LuActivity />} closable>
Tag 1
</Tag>
<Tag closable>Tag 2</Tag>
</HStack>
)
}
Use the maxWidth prop to control the maximum width of the tag. When the
content exceeds this width, it will be truncated with an ellipsis.
This is particularly useful when dealing with dynamic or user-generated content where the length might vary.
'use client'
import { Tag } from '@saas-ui/react'
export const TagWithOverflow = () => {
return (
<Tag size="sm" colorPalette="blue" maxW="200px" closable>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam
molestias, laboriosam, quod, quia quidem quae voluptatem natus
exercitationem autem quibusdam
</Tag>
)
}
Here's an example of a tag with an avatar.
'use client'
import { For, HStack } from '@chakra-ui/react'
import { Avatar, Tag } from '@saas-ui/react'
export const TagWithAvatar = () => {
return (
<HStack>
<For each={['sm', 'md', 'lg', 'xl']}>
{(size) => (
<Tag
key={size}
rounded="full"
size={size}
startElement={
<Avatar
size="full"
src="https://i.pravatar.cc/300?u=1"
name="John Doe"
/>
}
>
Emily ({size})
</Tag>
)}
</For>
</HStack>
)
}
Use the asChild prop to render the tag as a button.
Note that you'll need to import the Tag from @chakra-ui/react to use this
prop.
'use client'
import { Tag } from '@saas-ui/react'
import { LuCheck } from 'react-icons/lu'
export const TagAsButton = () => {
return (
<Tag as="button" variant="solid" endElement={<LuCheck />}>
Fish
</Tag>
)
}
| Prop | Default | Type |
|---|---|---|
colorPalette | 'gray' | 'gray' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'blue' | 'cyan' | 'purple' | 'pink' | 'accent'The color palette of the component |
size | 'md' | 'sm' | 'md' | 'lg'The size of the component |
variant | 'surface' | 'subtle' | 'solid' | 'outline' | 'surface'The variant of the component |