SEED Design

Tag Group

Tag Group은 아이콘 및 텍스트로 이루어진 태그를 구분 기호와 함께 수평 레이아웃으로 표시하는 컴포넌트입니다.

import { IconLocationpinFill } from "@karrotmarket/react-monochrome-icon";
import { PrefixIcon, TagGroup } from "@seed-design/react";

export default function TagGroupPreview() {
  return (
    <TagGroup.Root>
      <TagGroup.Item>
        <PrefixIcon svg={<IconLocationpinFill />} />
        500m
      </TagGroup.Item>
      <TagGroup.Item>서초4동</TagGroup.Item>
      <TagGroup.Item>3분 전</TagGroup.Item>
    </TagGroup.Root>
  );
}

Usage

import { TagGroup, TagGroupRoot, TagGroupItem } from '@seed-design/react';
<TagGroupRoot>
  <TagGroupItem>Tag 1</TagGroupItem>
  <TagGroupItem>Tag 2</TagGroupItem>
  <TagGroupItem>Tag 3</TagGroupItem>
</TagGroupRoot>
<TagGroup.Root>
  <TagGroup.Item>Tag 1</TagGroup.Item>
  <TagGroup.Item>Tag 2</TagGroup.Item>
  <TagGroup.Item>Tag 3</TagGroup.Item>
</TagGroup.Root>

Props

TagGroupRoot

Prop

Type

TagGroupItem

Prop

Type

Examples

Sizes

import { TagGroup, VStack } from "@seed-design/react";

export default function TagGroupSizes() {
  return (
    <VStack gap="spacingY.componentDefault" align="center">
      <TagGroup.Root size="t2">
        <TagGroup.Item>t2</TagGroup.Item>
        <TagGroup.Item>t2</TagGroup.Item>
        <TagGroup.Item>t2</TagGroup.Item>
      </TagGroup.Root>
      <TagGroup.Root size="t3">
        <TagGroup.Item>t3</TagGroup.Item>
        <TagGroup.Item>t3</TagGroup.Item>
        <TagGroup.Item>t3</TagGroup.Item>
      </TagGroup.Root>
      <TagGroup.Root size="t4">
        <TagGroup.Item>t4</TagGroup.Item>
        <TagGroup.Item>t4</TagGroup.Item>
        <TagGroup.Item>t4</TagGroup.Item>
      </TagGroup.Root>
    </VStack>
  );
}

Weights

import { TagGroup, VStack } from "@seed-design/react";

export default function TagGroupWeights() {
  return (
    <VStack gap="spacingY.componentDefault" align="center">
      <TagGroup.Root weight="regular">
        <TagGroup.Item>regular</TagGroup.Item>
        <TagGroup.Item>regular</TagGroup.Item>
        <TagGroup.Item>regular</TagGroup.Item>
      </TagGroup.Root>
      <TagGroup.Root weight="bold">
        <TagGroup.Item>bold</TagGroup.Item>
        <TagGroup.Item>bold</TagGroup.Item>
        <TagGroup.Item>bold</TagGroup.Item>
      </TagGroup.Root>
    </VStack>
  );
}

Tones

import { TagGroup, VStack } from "@seed-design/react";

export default function TagGroupTones() {
  return (
    <VStack gap="spacingY.componentDefault" align="center">
      <TagGroup.Root tone="neutralSubtle">
        <TagGroup.Item>neutralSubtle</TagGroup.Item>
        <TagGroup.Item>neutralSubtle</TagGroup.Item>
        <TagGroup.Item>neutralSubtle</TagGroup.Item>
      </TagGroup.Root>
      <TagGroup.Root tone="neutral">
        <TagGroup.Item>neutral</TagGroup.Item>
        <TagGroup.Item>neutral</TagGroup.Item>
        <TagGroup.Item>neutral</TagGroup.Item>
      </TagGroup.Root>
      <TagGroup.Root tone="brand">
        <TagGroup.Item>brand</TagGroup.Item>
        <TagGroup.Item>brand</TagGroup.Item>
        <TagGroup.Item>brand</TagGroup.Item>
      </TagGroup.Root>
    </VStack>
  );
}

With Icons

import { IconLocationpinFill, IconMegaphoneFill } from "@karrotmarket/react-monochrome-icon";
import { PrefixIcon, SuffixIcon, TagGroup, VStack } from "@seed-design/react";

export default function TagGroupWithIcons() {
  return (
    <VStack gap="spacingY.componentDefault" align="center">
      <TagGroup.Root>
        <TagGroup.Item>
          광고
          <SuffixIcon svg={<IconMegaphoneFill />} />
        </TagGroup.Item>
        <TagGroup.Item>끌올 3시간 전</TagGroup.Item>
        <TagGroup.Item>서초4동</TagGroup.Item>
      </TagGroup.Root>
      <TagGroup.Root>
        <TagGroup.Item>
          <PrefixIcon svg={<IconLocationpinFill />} />
          서초4동
        </TagGroup.Item>
        <TagGroup.Item>인증 5회</TagGroup.Item>
        <TagGroup.Item>3분 전</TagGroup.Item>
      </TagGroup.Root>
    </VStack>
  );
}

Customizing TagGroupItem

TagGroupRoot에 지정한 size, tone, weightTagGroupItem에서 덮어씌울 수 있습니다.

import {
  IconCheckmarkCircleFill,
  IconHeartFill,
  IconHorizline2VerticalChatbubbleRectangularRightFill,
  IconStarFill,
} from "@karrotmarket/react-monochrome-icon";
import { Icon, SuffixIcon, TagGroup, VStack } from "@seed-design/react";

export default function TagGroupCustomizingItem() {
  return (
    <VStack gap="spacingY.componentDefault" align="center">
      <TagGroup.Root>
        <TagGroup.Item weight="bold" tone="neutral" aria-label="평점 4.5">
          <Icon svg={<IconStarFill />} color="fg.brand" />
          4.5
        </TagGroup.Item>
        <TagGroup.Item>후기 37</TagGroup.Item>
        <TagGroup.Item>단골 12</TagGroup.Item>
      </TagGroup.Root>
      <TagGroup.Root tone="neutral">
        <TagGroup.Item tone="brand">
          인증됨
          <SuffixIcon svg={<IconCheckmarkCircleFill />} />
        </TagGroup.Item>
        <TagGroup.Item aria-label="관심 10개">
          <Icon svg={<IconHeartFill />} />
          10
        </TagGroup.Item>
        <TagGroup.Item aria-label="댓글 3개">
          <Icon svg={<IconHorizline2VerticalChatbubbleRectangularRightFill />} />3
        </TagGroup.Item>
      </TagGroup.Root>
    </VStack>
  );
}

Customizing Separators

TagGroupRootseparator를 지정하여 구분 기호를 변경할 수 있습니다.

스크린 리더는 각 태그 항목 사이에 지정된 구분 기호를 읽지 않습니다. 의미가 있는(semantic) 정보를 Separator로 사용하는 것을 피하세요.

import { TagGroup, VStack } from "@seed-design/react";

export default function TagGroupCustomizingSeparators() {
  return (
    <VStack gap="spacingY.componentDefault" align="center">
      <TagGroup.Root separator=" | " size="t4">
        <TagGroup.Item>가</TagGroup.Item>
        <TagGroup.Item>나</TagGroup.Item>
        <TagGroup.Item>다</TagGroup.Item>
        <TagGroup.Item>라</TagGroup.Item>
      </TagGroup.Root>
      <TagGroup.Root separator=" " size="t4">
        <TagGroup.Item>가</TagGroup.Item>
        <TagGroup.Item>나</TagGroup.Item>
        <TagGroup.Item>다</TagGroup.Item>
        <TagGroup.Item>라</TagGroup.Item>
      </TagGroup.Root>
    </VStack>
  );
}

Wrapping Behavior

import { IconLocationpinFill } from "@karrotmarket/react-monochrome-icon";
import { Flex, PrefixIcon, TagGroup } from "@seed-design/react";

export default function TagGroupWrappingBehavior() {
  return (
    <Flex align="center" justify="center" grow width="full" bg="bg.layerBasement" borderRadius="r2">
      <Flex
        align="center"
        justify="center"
        padding="x3"
        bg="bg.layerDefault"
        borderRadius="r2"
        borderWidth={1}
        borderColor="stroke.neutralWeak"
        style={{ resize: "horizontal", overflow: "auto", maxWidth: "max-content" }}
      >
        <TagGroup.Root size="t4">
          <TagGroup.Item>
            <PrefixIcon svg={<IconLocationpinFill />} />
            500m
          </TagGroup.Item>
          <TagGroup.Item>서초4동</TagGroup.Item>
          <TagGroup.Item>3분 전</TagGroup.Item>
        </TagGroup.Root>
      </Flex>
    </Flex>
  );
}

Last updated on