Lynx

Chip Tabs

Chip 형태로 표현된 탭 컴포넌트입니다. 카테고리나 필터를 선택하여 콘텐츠를 전환할 때 사용합니다.

Engine ≥ 3.9<viewpager><viewpager-item>
사용 가능 버전@seed-design/[email protected], @seed-design/[email protected]
Lynx 예제를 불러오는 중입니다.

Installation

npx @seed-design/cli add ui:chip-tabs

Props

ChipTabsRoot

Prop

Type

value?string | undefined
defaultValue?string | undefined
onValueChange?((value: string) => void) | undefined

ChipTabsList

Prop

Type

ChipTabsTrigger

Prop

Type

notification?boolean | undefined
childrenstring | number
disabled?boolean | undefined
valuestring

ChipTabsCarousel

Prop

Type

swipeable?boolean | undefined
onSettle?(() => void) | undefined

ChipTabsContent

Prop

Type

valuestring

Usage

Content

탭 선택으로만 콘텐츠를 전환할 때는 ChipTabsContent를 ChipTabsRoot 안에 배치합니다. Trigger와 Content의 value를 맞추면 선택된 패널만 표시됩니다. 이 구성은 콘텐츠 높이에 맞춰 배치되며 좌우 스와이프는 제공하지 않습니다.

import {
  ChipTabsContent,
  ChipTabsList,
  ChipTabsRoot,
  ChipTabsTrigger,
} from "@/components/ui/chip-tabs";

export function App() {
  return (
    <ChipTabsRoot defaultValue="1">
      <ChipTabsList>
        <ChipTabsTrigger value="1">라벨1</ChipTabsTrigger>
        <ChipTabsTrigger value="2">라벨2</ChipTabsTrigger>
        <ChipTabsTrigger value="3">라벨3</ChipTabsTrigger>
      </ChipTabsList>
      <ChipTabsContent value="1">
        <text>첫 번째 콘텐츠</text>
      </ChipTabsContent>
      <ChipTabsContent value="2">
        <text>두 번째 콘텐츠</text>
      </ChipTabsContent>
      <ChipTabsContent value="3">
        <text>세 번째 콘텐츠</text>
      </ChipTabsContent>
    </ChipTabsRoot>
  );
}

ChipTabsRoot는 value와 onValueChange로 제어하거나 defaultValue로 초기 선택 값을 지정합니다. notification을 설정한 Trigger에는 알림 배지가 표시됩니다.

Swipeable

콘텐츠를 좌우로 밀어 탭을 바꾸려면 ChipTabsContent를 ChipTabsCarousel 안에 배치하고 swipeable을 설정합니다. Carousel에 앱 레이아웃에 맞는 높이를 지정하세요. iOS의 뒤로 가기 제스처 범위는 iosBackGestureEdgeWidth로 조절할 수 있습니다.

Lynx 예제를 불러오는 중입니다.

Scroll Alignment

ChipTabsList의 scrollAlign은 선택한 chip을 가로 목록에 맞추는 방식입니다. "nearest", "start", "center", "end"를 지원하며 기본값은 "nearest"입니다.

"nearest"는 선택한 chip이 완전히 보이면 이동하지 않고, 일부가 가려졌을 때만 필요한 만큼 스크롤합니다.

Lynx 예제를 불러오는 중입니다.

Examples

Size=Medium

medium의 최소 높이는 36px입니다.

Lynx 예제를 불러오는 중입니다.

Size=Large

large의 최소 높이는 40px입니다.

Lynx 예제를 불러오는 중입니다.

Variant=Neutral Solid

Lynx 예제를 불러오는 중입니다.

Variant=Neutral Outline

Lynx 예제를 불러오는 중입니다.

Notification

Lynx 예제를 불러오는 중입니다.

With Scroll Fog

ChipTabsList를 placement={["left", "right"]}인 ScrollFog로 감싸면 좌우에 fog를 표시할 수 있습니다.

Lynx 예제를 불러오는 중입니다.

Web Version Differences

  • 탭 이벤트는 onClick 대신 bindtap으로 받습니다.
  • Carousel은 네이티브 <viewpager>, 가로 탭 목록은 <scroll-view>를 사용합니다.
  • Root 밖에서 선택 값에 따라 네이티브 콘텐츠를 조건부로 렌더링할 수 있습니다.

Unsupported Lynx Features

  • 키보드 포커스와 roving focus
  • RTL 순서와 스와이프 방향 반전
  • lazyMount, unmountOnExit
  • Carousel의 loop, autoHeight, dragThreshold, carouselPreventDrag
  • 콘텐츠 전환 애니메이션

Last updated on

목차