Badges
Описание
Подробнее об использовании элемента читайте на официальном сайте
Примеры
11
Компонент
Прямые зависимости: Label
Сохраните компонент в файл src/shared/ui/Badge.tsx
import React, { HTMLAttributes } from "react"import { cva, type VariantProps } from "class-variance-authority"import Label from "@/shared/typography/Label"import { cn } from "@/lib/cn"const badgeVariants = cva("absolute left-2/3 top-1 select-none flex justify-center items-center bg-error text-onError rounded-full",{variants: {size: {small: "w-[6px] h-[6px]",large: "min-w-[16px] h-[16px] p-1",},},})interface Propsextends HTMLAttributes<HTMLDivElement>,Required<Pick<VariantProps<typeof badgeVariants>, "size">> {}const Badge = React.forwardRef<HTMLDivElement, Props>(({ children, className, size, ...props }, forwardedRef) => {return (<divclassName={cn(badgeVariants({ size }), className)}{...props}ref={forwardedRef}>{size === "large" && <Label size="small">{children}</Label>}</div>)})Badge.displayName = "Badge"export default Badge
Использование
Компонент использует позиционирование absolute. Однако можно использовать свои реализации. Просто пишите свои CSS стили в className prop компонента.
Код для компонентов в секции Примеры:
<div className="flex gap-4"><div className="relative"><IconButton appearance="tonal" icon={<Message />} /><Badge className="top-2" size="small" /></div><div className="relative"><IconButton appearance="tonal" icon={<Cart />} /><Badge size="large">11</Badge></div></div>