Get StartedFoundationsComponentsPatternsRulesDevelopAI & ToolsUpdates

List

가로 행으로 구성된 콘텐츠를 연속된 열로 표현하는 컴포넌트예요.

설치

pnpm dlx shadcn@latest add https://rebar.conmarket-landing.workers.dev/r/list.json

Anatomy

List Item은 Prefix, Title, Detail, Suffix로 구성돼요. List는 여러 개의 List Item을 묶어 연속된 열로 보여주고, List Header로 그룹 제목을 붙일 수 있어요.

ListHeader
List
├── ListItem
│   ├── Prefix (선택)
│   ├── Content
│   │   ├── Title
│   │   └── Detail (선택)
│   └── Suffix (선택)
├── ListDivider
└── ListButtonItem / ListLinkItem

컴포넌트 자체에는 배경색이 없어요. 부모 컨테이너의 배경을 그대로 사용해요.

Properties

Align

Align의 기본값은 Center예요. Prefix와 Suffix가 콘텐츠 영역의 수직 중앙에 정렬되며, Title과 Detail이 한 줄로 짧게 표시될 때 적합해요.

Align을 Top(alignItems="flexStart")으로 설정하면 Prefix와 Suffix가 콘텐츠 영역의 상단에 고정돼요. Title이 두 줄 이상으로 넘어가거나 Detail 텍스트가 많을 때 사용해요.

Highlighted

새 알림이나 업데이트처럼 사용자의 주목이 필요한 항목을 시각적으로 강조할 때 사용해요. Brand Weak 배경이 깔리고, 누르면 Brand Weak Pressed 색으로 바뀌어요.

State

Enabled, Pressed, Disabled 상태를 가져요. Pressed 상태에서는 배경 레이어가 좌우로 x1_5 만큼 줄어들고 모서리가 x2_5 만큼 둥글어져요. 클릭할 수 있는 항목(ListButtonItem, ListLinkItem)에서만 Pressed 상태가 나타나요.

Prefix

Prefix는 List 좌측에 위치해요. 아이콘(22px), 프로필 이미지, 체크마크 등을 넣을 수 있어요.

Suffix

Suffix는 List 우측에 위치해요. 아이콘(18px), 텍스트, Action Button, Toggle Button 등을 넣을 수 있어요.

Detail

Detail은 Title 하단에 위치해요. 보조 텍스트를 기본으로 제공하며, 필요에 따라 태그 그룹 등으로 바꿔 사용할 수 있어요.

List Header

List를 그룹 단위로 묶을 수 있도록 List Header를 제공해요. Medium Weak(기본), Bold Solid 두 가지 Variant가 있어요. ListHeader 는 List 바깥에 위치해요.

Guidelines

List, List Item 사용하기

List Item은 정보를 가로 행으로 묶어서 보여주는 컴포넌트로, 사용자가 빠르게 인지하고 단순한 액션을 해야 할 때 사용해요. 여러 개의 List Item을 연속된 열로 보여줄 때는 List로 묶어요. List의 부모 컨테이너는 사용처의 의도에 맞게 자유롭게 사용할 수 있어요.

클릭할 수 있는 항목

항목 전체를 누를 수 있게 하려면 ListButtonItem 또는 ListLinkItem 을 사용해요. 클릭할 필요가 없는 정보성 항목은 ListItem 을 사용해 Pressed 상태를 없애요.

Prefix나 Suffix에 별도로 누를 수 있는 요소를 넣을 때는 position: relative 와 같은 스타일로 항목 클릭 영역과 분리해요. Action Button처럼 Clay 컴포넌트는 추가 스타일 없이도 분리돼요.

Do· 상호작용 요소는 최소한으로

하나의 List Item에는 항목 자체를 포함해 상호작용 요소를 세 개 이하로 구성해요.

Don't· 상호작용 요소 과다

하나의 List Item에 4개 이상의 상호작용 요소를 넣지 않아요. List Item은 표현 공간이 좁아서 복잡하게 조합하면 누르기 어려워요.

내부 간격 조정

List Item은 상하·좌우 padding을 갖고 있으며, 사용처 의도에 따라 조정할 수 있어요.

  • 간격은 Clay에서 제공하는 토큰을 사용해요.
  • 좌우 간격을 조정할 때는 global-gutter(16px) 보다 좁아지지 않도록 주의해요.
  • 한 List 안에서 각 Item의 정렬이 달라지지 않도록 해요.
Do· 일관된 정렬

같은 List 안의 Item은 같은 padding과 정렬을 사용해요.

Don't· Item마다 다른 정렬

내부 간격을 조정할 때 Item마다 정렬이 달라지면 목록이 어수선해 보여요.

Switch / Checkmark / Radiomark 사용 시

Prefix나 Suffix에 Switch, Checkbox, Radio 마크를 넣을 때는 List Item 전체를 하나의 클릭 영역으로 사용해 행 어디를 눌러도 동작하도록 해요. 이 경우 Action Button처럼 자체 클릭 영역이 필요한 요소를 함께 넣지 않아요.

약관처럼 별도 화면에서 확인해야 하는 정보는 라벨 안에 링크를 두되, 행 동작으로 탭이 전파되지 않도록 처리해요.

Select로 사용하기

List Item에 Checkbox를 조합하면 복수 선택(Multi Select), Radio를 조합하면 단일 선택(Single Select)으로 사용할 수 있어요. 단일 선택은 반드시 2개 이상의 항목으로 구성해야 해요.

Do· 한 그룹에는 한 가지 선택 방식

한 그룹 안에서는 Checkbox 또는 Radio 중 하나만 사용해요.

Don't· 선택 방식 혼합

Single Select와 Multi Select를 하나의 그룹에서 섞어 쓰지 않아요.

Concentric Radius

List가 모서리가 둥근 카드 안에 들어갈 때는 항목의 Pressed 배경 radius를 컨테이너에 맞춰 조정해요. 내부 radius는 컨테이너 radius에서 내부 padding 만큼 뺀 값이 자연스러워요. 예를 들어 카드 radius가 16px, padding이 6px이면 항목 radius는 10px이에요. List 의 itemBorderRadius 로 지정해요.

Props

List

Prop

Type

ListItem · ListButtonItem · ListLinkItem

Prop

Type

ListHeader

Prop

Type

ListDivider

Prop

Type

On this page