Improvements
Seed Design V3의 개선사항을 안내합니다.
Composition
V3에서는 컴포넌트를 조합하여 복잡한 UI를 구성하는 방법과 원칙을 제공합니다. as Prop, asChild Prop, 슬롯 등을 통해 컴포넌트를 조합할 수 있습니다.
Composition 페이지에서 자세히 설명합니다.
Snippet
V3에서는 자주 사용되는 UI 패턴을 스니펫으로 제공하여 개발 효율성을 높이는 방법을 제공합니다. Compound Components 패턴과 Snippet의 조합을 통해 복잡한 컴포넌트를 쉽게 구현할 수 있습니다.
Snippet 페이지에서 자세히 설명합니다.
Icon Usage
V3에서의 아이콘 사용 방식이 달라졌습니다.
Icon Usage 페이지에서 자세히 설명합니다.
Avatar 컴포넌트 변경
size
옵션 확장:"20" | "24" | "36" | "48" | "64" | "80" | "96"
- 이미지 로딩 실패 시 대체 콘텐츠를 위한
fallback
prop 제공 - 슬롯 기반 구조 추가:
Root
,Image
,Fallback
- V3 컴포넌트 보러가기 (Avatar)
AlertDialog 관련 컴포넌트 변경
V2의 Dialog와 AlertDialog는 V3에서 각각 별도의 컴포넌트로 제공돼요.
- 기존에
DialogHeader
로만 구조화되어 있던 부분들 조금 더 세분화 (AlertDialogContent
,AlertDialogHeader
,AlertDialogFooter
) - 액션에 관한 슬롯 추가
AlertDialogAction
AlertDialogTrigger
로 명시적으로 trigger를 제공하거나 혹은open
prop을 통해 외부에서 제어 가능- V3 컴포넌트 보러가기 (AlertDialog)
버튼 관련 컴포넌트 변경
BoxButton, TextButton → ActionButton
V2의 BoxButton, TextButton을 대체하는 통합 버튼 컴포넌트
xlarge
size 제거- 전체적인 variant 명칭 변경
Primary
→Neutral Solid
Primary low
→Neutral Weak
Secondary
→Neutral Weak
Danger
→Critical Solid
- 추가된 variant:
Neutral Outline
isLoading
이loading
으로 변경layout
prop 추가 (withText
,iconOnly
)prefix
,suffix
: 아이콘 배치 방식이children
으로 통합- V3 컴포넌트 보러가기 (ActionButton)
BoxToggleButton, CapsuleToggleButton → ToggleButton, ReactionButton
V2의 BoxToggleButton, CapsuleToggleButton은 V3에서 각각 ToggleButton, ReactionButton으로 변경되었어요.
ToggleButton 변경사항
- size 변경: V2의
xSmall
,small
,medium
,large
→ V3의xsmall
,small
로 통합 - variant 명칭 변경
primaryLow
→neutralWeak
secondary
→neutralWeak
primary
→brandSolid
- State 관련 명칭 변경 (Selected + State 조합)
- V3 컴포넌트 보러가기 (ToggleButton)
ReactionButton 변경사항
- CapsuleToggleButton V2의
small
,xsmall
크기만 지원 - 좋아요 버튼 등 반응형 버튼에 특화된 컴포넌트
- V3에서는
size
옵션으로xsmall
,small
제공 - selected 상태일 때 스타일 변경 (브랜드 색상으로 강조)
- V3 컴포넌트 보러가기 (ReactionButton)
Chips 관련 컴포넌트 변경
V2에서는 @daangn/sprout-components-chips
패키지에서 여러 칩 관련 컴포넌트들을 제공했어요. V3에서는 이러한 컴포넌트들이 목적에 따라 재구성되었어요.
ChipButton → ActionChip
V2의 ChipButton은 V3에서 ActionChip으로 변경되었어요.
layout
prop 추가 (withText
,iconOnly
)prefix
,suffix
prop 대신children
으로 아이콘 전달count
prop 제거- V3 컴포넌트 보러가기 (ActionChip)
ChipToggleButton, ChipRadio, ChipRadioGroup → ControlChip
V2의 ChipToggleButton과 ChipRadio, ChipRadioGroup는 V3에서 ControlChip으로 통합되었어요.
ControlChip.Radio
와ControlChip.RadioGroup
또는ControlChip.Toggle
로 사용layout
prop 추가 (withText
,iconOnly
)prefix
,suffix
prop 대신children
으로 아이콘 전달- V3 컴포넌트 보러가기 (ControlChip)
ChipFilter → 제거됨
V2의 ChipFilter는 V3에서 제거되었어요. 필요한 경우 ActionChip이나 ControlChip으로 대체할 수 있어요.
Checkbox 관련 컴포넌트 변경
variant
옵션이shape
prop으로 변경 (square
,ghost
)circle
variant가 제거되었으며 대신square
를 사용size
변경:small
크기가 제거되고medium
,large
만 제공bold
속성은weight
prop으로 변경 (default
|stronger
)- V3 컴포넌트 보러가기 (Checkbox)
TextField 관련 컴포넌트 변경
V2에서는 TextField, MultilineTextField 컴포넌트를 따로 제공했지만, V3에서는 조합형 컴포넌트로 통합되었어요.
- 크기 매핑 변경
- V2
large
→ V3xlarge
- V2
medium
→ V3large
- V2
small
→ V3medium
- V2
TextFieldInput
은 텍스트 입력 컴포넌트로 사용TextFieldTextarea
는 다중 라인 입력 컴포넌트로 사용maxGraphemeCount
prop 추가 (기존maxLength
prop을 override해서 사용하던걸 명시적으로 표현)- V3 컴포넌트 보러가기 (TextField)
- V3 컴포넌트 보러가기 (MultilineTextField)
InlineAlert 관련 컴포넌트 변경
V2에서는 @daangn/sprout-components-inline-alert
패키지에서 여러 배너 관련 컴포넌트들을 제공했어요.
V3에서는 InlineBanner
컴포넌트로 제공되고 있어요.
- Variant 명칭 변경
normal
→neutralWeak (default)
info
→informativeWeak
warning
→warningWeak
danger
→criticalWeak
- 각
neutral
제외하고solid
variant 추가 (informativeSolid
,warningSolid
,criticalSolid
)
criticalWeak
,criticalSolid
variant는dismissible
prop 사용 불가- V3 컴포넌트 보러가기 (InlineBanner)
Callout 관련 컴포넌트 변경
V2에서는 @daangn/sprout-components-callout
패키지에서 여러 Callout 관련 컴포넌트들을 제공했어요.
V3에서도 Callout
컴포넌트로 제공되고 있어요.
variant
->tone
으로 변경normal
→neutral
info
→informative
danger
→critical
warning
→warning
(유지)magic
->magic
(유지)
- V3 컴포넌트 보러가기 (Callout)
SelectBox 관련 컴포넌트 변경
V2에서는 @daangn/sprout-components-select-box
패키지에서 여러 SelectBox 관련 컴포넌트들을 제공했어요. V3에서는 이러한 컴포넌트들이 목적에 따라 재구성되었어요.
SelectBoxCheck -> CheckSelectBox, CheckSelectBoxGroup
V2의 RadioSelectBox와 CheckSelectBox는 V3에서 하나의 SelectBox 컴포넌트로 통합되었어요.
SelectBoxCheck
->CheckSelectBox
- 그룹 컴포넌트 추가:
CheckSelectBoxGroup
- V3 컴포넌트 보러가기 (CheckSelectBox)
SelectBoxRadio, SelectBoxRadioGroup -> RadioSelectBoxItem, RadioSelectBoxRoot
SelectBoxRadio
->RadioSelectBoxItem
SelectBoxRadioGroup
->RadioSelectBoxRoot
- V3 컴포넌트 보러가기 (RadioSelectBox)
Tabs 관련 컴포넌트 변경
Tabs
Tabs 변경사항
- size 추가:
small
,medium
- 탭 내 알림 표시 옵션 제공 (
dot
->notification
) stickyList
prop 추가: 스크롤 시 탭 목록 고정 가능layout
->triggerLayout
으로 변경 (fill
,hug
)- 컨텐츠의 layout도 조절 가능 (
contentLayout
) - 렌더링 관련 prop 변경
isLazy
->lazyMount
lazyMode
(unmount, keepMounted) ->unmountOnExit
(boolean)
- V3 컴포넌트 보러가기 (Tabs)
ChipTabs (신규)
- V3 Tabs와 동일한 인터페이스
- V3 컴포넌트 보러가기 (ChipTabs)
Switch 컴포넌트 변경
- 크기 기본값
small
추가 제공 (기존에는medium
만 제공) - children으로 제공되던 label 대신
label
prop 추가 - V3 컴포넌트 보러가기 (Switch)
Spinner 컴포넌트 변경
Spinner
에서ProgressCircle
로 이름 변경size
옵션:"24" | "40" | "inherit"
tone
옵션:"neutral" | "brand" | "staticWhite" | "inherit"
- 결정 상태(
value
prop 제공)와 미결정(로팅) 상태(indeterminate
prop) 모두 지원 - V3 컴포넌트 보러가기 (ProgressCircle)
Snackbar 컴포넌트 변경
variant
옵션:"default" | "positive" | "critical"
으로 변경SnackbarProvider
와useSnackbar
hook을 통한 편리한 선언적 사용 방식 지원 (기존과 동일)- V3 컴포넌트 보러가기 (Snackbar)
HelpBubble 컴포넌트 변경
- 두 가지 사용 방식 제공:
HelpBubbleTrigger
(클릭 시 표시) 및HelpBubbleAnchor
(요소에 앵커링) title
,description
prop으로 내용 구성showCloseButton
prop으로 닫기 버튼 표시 여부 설정strategy
(absolute, fixed) prop으로 포지셔닝 전략 선택 가능gutter
prop으로 팝업 주변 여백 조절 가능arrowPadding
prop으로 화살표 주변 여백 조절 가능overflowPadding
prop으로 팝업 주변 여백 조절 가능- V3 컴포넌트 보러가기 (HelpBubble)
FAB(Floating Action Button) 컴포넌트 변경
FAB
ExtendedFAB
size
옵션:"small" | "medium"
variant
옵션:"neutralSolid" | "layerFloating"
- V3 컴포넌트 보러가기 (ExtendedFAB)
새로운 컴포넌트
AppScreen
Stackflow AppScreen 컴포넌트
theme
prop:"cupertino" | "android"
transitionStyle
prop:"slideFromRightIOS" | "fadeFromBottomAndroid"
layerOffsetTop
prop:"none" | "safeArea" | "appBar"
layerOffsetBottom
prop:"none" | "safeArea"
- V3 컴포넌트 보러가기 (AppScreen)
BottomSheet, ActionSheet, ExtendedActionSheet
V3에서는 BottomSheet와 ActionSheet가 새로 추가되었어요.
BottomSheet
: 커스텀 콘텐츠를 담을 수 있는 바텀 시트ActionSheet
: 액션 목록을 표시하는 바텀 시트ExtendedActionSheet
: 확장된 기능을 가진 액션 시트- 모바일 환경에 최적화된 상호작용 패턴 지원
- 접근성이 개선된 API 구조
- V3 컴포넌트 보러가기 (BottomSheet)
- V3 컴포넌트 보러가기 (ActionSheet)
- V3 컴포넌트 보러가기 (ExtendedActionSheet)
PullToRefresh
PullToRefresh 컴포넌트
- 모바일 앱과 같은 당겨서 새로고침 기능 제공
- V3 컴포넌트 보러가기 (PullToRefresh)
SegmentedControl
세그먼트 컨트롤 컴포넌트
- 여러 옵션 중 하나를 선택할 수 있는 컴포넌트
size
옵션:"large" | "medium"
- 커스텀 스타일과 접근성을 고려한 구조 제공
- V3 컴포넌트 보러가기 (SegmentedControl)
LinkContent
텍스트 링크 컴포넌트
- 기존 TextButton 컴포넌트의 용도를 대체하는 컴포넌트
- 다양한 색상과 크기를 지원하는 텍스트 링크 컴포넌트
size
옵션:"small" | "medium" | "large"
color
옵션:"neutral" | "brand" | "information" | "positive" | "notice" | "critical" | "white"
- 외부 링크, 다운로드 링크 등을 표현하는 데 유용
- V3 컴포넌트 보러가기 (LinkContent)
Skeleton
콘텐츠 로딩 상태를 표시하는 스켈레톤 컴포넌트
- 다양한 반경(radius) 옵션을 제공하는 로딩 플레이스홀더
- 콘텐츠 로드 전 레이아웃을 미리 보여줘 사용자 경험 향상
- 애니메이션 효과로 로딩 중임을 시각적으로 표현
- V3 컴포넌트 보러가기 (Skeleton)
MannerTempBadge
매너온도 뱃지 컴포넌트
- 당근마켓의 매너온도를 시각적으로 표현하는 뱃지
- 온도에 따른 다양한 색상 및 아이콘 변화 지원
- 매너온도 표시에 특화된 컴포넌트
- V3 컴포넌트 보러가기 (MannerTempBadge)
Badge
- 정보를 강조하여 표시하는 뱃지 컴포넌트
size
옵션:"medium" | "large"
variant
옵션:"weak" | "solid" | "outline"
tone
옵션:"neutral" | "brand" | "informative" | "positive" | "critical"
asChild
prop을 통해 다른 요소에 뱃지 스타일 적용 가능- V3 컴포넌트 보러가기 (Badge)
Error State
- 사용자에게 오류 혹은 조회 결과가 없음을 알리는 컴포넌트
variant
옵션:"basement"
- 콘텐츠가 없거나 오류가 발생한 상황에서 사용자에게 적절한 피드백 제공
- V3 컴포넌트 보러가기 (ErrorState)
Identity Placeholder
- 사용자나 항목의 신원을 표현하는 플레이스홀더 컴포넌트
- 사용자 아바타나 항목 이미지의 로딩 전 상태를 시각적으로 표현
- 콘텐츠 로드 전 일관된 사용자 인터페이스 제공
- V3 컴포넌트 보러가기 (IdentityPlaceholder)
레이아웃 관련 컴포넌트
V3에서는 레이아웃 구성을 위한 다양한 컴포넌트를 제공해요.
Box
: 기본 레이아웃 컨테이너Flex
: Flex 레이아웃을 구성하기 위한 컴포넌트VStack
: 수직 방향으로 요소를 쌓는 레이아웃HStack
: 수평 방향으로 요소를 쌓는 레이아웃- V3 컴포넌트 보러가기 (Box)
- V3 컴포넌트 보러가기 (Flex)
- V3 컴포넌트 보러가기 (VStack)
- V3 컴포넌트 보러가기 (HStack)