Icon button

텍스트 라벨 없이 아이콘만으로 특정 액션을 수행하는 버튼 요소입니다. 공간이 제한적이거나 사용자가 즉시 이해할 수 있는 표준적인 기능을 간결하게 제공할 때 사용합니다.

WantedIconButtonNormal

배경 없이 아이콘만 표시하는 기본 아이콘 버튼입니다. [size] 로 지정한 박스 크기에서 아이콘과 모서리 반경이 자동 산출되며, 인터랙션 피드백은 [interactionEffect] 로 지정합니다. 기본값에서는 레이아웃이 차지하는 크기가 박스(= 인터랙션 영역) 크기와 같습니다. 아이콘 크기만 차지하고 인터랙션 영역만 바깥으로 넘치게 하려면 [interactionOverflow] 를 켭니다.

WantedIconButtonNormal(
    icon = R.drawable.ic_icon,
    size = WantedIconButtonNormalSize.Xlarge,
    onClick = { /* 클릭 처리 */ }
)

Parameters

이름타입설명
iconInt아이콘 drawable 리소스 ID
modifierModifier외형 및 배치를 제어하는 Modifier (size 는 자동 산출되므로 외부 정렬/패딩 용도로 사용)
sizeWantedIconButtonNormalSize박스 크기. 기본값 Xlarge, preset 외 크기는 [WantedIconButtonNormalSize.Custom] 으로 지정. [interactionOverflow] 가 true 이면 아이콘 크기를 뜻합니다(preset 은 24 · 20 · 18 · 16, Custom 은 숫자 그대로)
enabledBoolean활성화 여부
tintColor활성 시 아이콘 색상. 기본값 foregroundNeutralPrimary. 비활성 시 foregroundDisablePrimary
pushBadge@Composable (() -> Unit)?지정 위치에 표시할 PushBadge 등 컴포넌트
badgePositionIconButtonBadgePositionpushBadge 정렬 기준점. 기본값 TopRight, 아이콘 모서리 기준으로 inset 보정 적용
interactionEffectIconButtonInteractionEffect인터랙션 피드백 방식. 기본값 [IconButtonInteractionEffect.Highlight]
interactionColorColor인터랙션 피드백 색상. 미지정 시 ripple 은 foregroundNeutralPrimary, Dim 은 [tint] 를 기준으로 함
interactionOverflowBooleantrue 이면 레이아웃 크기가 아이콘 크기가 되고, 인터랙션 영역 max(24, ceil(아이콘 × 1.5 ÷ 4) × 4) 이 상하좌우로 (영역 - 아이콘) / 2 만큼 넘칩니다. 기본값 false
onClick() -> Unit클릭 콜백

Overload

disableInteraction 을 사용하는 이전 시그니처입니다. [IconButtonInteractionEffect] 로 대체되었으니 신규 코드에서는 사용하지 않습니다.

Parameters
이름타입설명
iconInt아이콘 drawable 리소스 ID
disableInteractionBooleantrue이면 press/hover ripple 효과 없음
modifierModifier외형 및 배치를 제어하는 Modifier
sizeWantedIconButtonNormalSize박스 크기. 기본값 [WantedIconButtonNormalSize.Xlarge]
enabledBoolean활성화 여부
tintColor활성 시 아이콘 색상. 기본값 foregroundNeutralPrimary. 비활성 시 foregroundDisablePrimary
pushBadge@Composable (() -> Unit)?지정 위치에 표시할 PushBadge 등 컴포넌트
badgePositionIconButtonBadgePositionpushBadge 정렬 기준점. 기본값 [IconButtonBadgePosition.TopRight]
interactionColorColor인터랙션 피드백 색상. 미지정 시 ripple 은 foregroundNeutralPrimary
onClick() -> Unit클릭 콜백

Advanced

IconButtonNormalContent

아이콘과 PushBadge 를 그립니다. 배지는 [badgePosition] 기준으로 정렬한 뒤 [badgeInset] 만큼 안쪽으로 당깁니다. 컨테이너 크기는 [modifier] 로 항상 명시합니다. 크기를 주지 않으면 wrapContent 가 되어 아이콘보다 큰 [pushBadge] 가 컨테이너를 키웁니다.

Parameters
이름타입설명
iconInt아이콘 drawable 리소스 ID
iconSizeDp아이콘 크기
iconColorColor아이콘 색상 (enabled·인터랙션 상태가 반영된 최종 색)
pushBadge@Composable (() -> Unit)?표시할 PushBadge 등 컴포넌트
badgePositionIconButtonBadgePosition배지 정렬 기준점
badgeInsetDp배지 inset 보정값. 컨테이너가 아이콘 크기와 같으면 0
modifierModifier컨테이너 크기·클립·클릭을 지정하는 Modifier

WantedIconButtonOutlined

WantedIconButtonSize를 기반으로 하는 Outlined 스타일의 아이콘 버튼입니다. (Confluence IconButton 스펙 §3 — 2026-06-24) 아이콘 크기 산출: icon = round(box × 0.47) → dimension 토큰 스냅(동률이면 작은 값). 중앙정렬 inset = (box - icon) / 2. padding 방식 제거. Radius = radius.full (CircleShape). 박스는 clamp(24dp, N, 64dp).

WantedIconButtonOutlined(
    icon = R.drawable.ic_icon,
    size = WantedIconButtonSize.Medium,
    onClick = { /* 클릭 처리 */ }
)
Parameters
이름타입설명
iconInt버튼에 표시할 drawable 리소스 ID입니다.
sizeWantedIconButtonSize박스 크기를 지정하는 sealed class입니다. preset(Medium/Small) 외 박스는 [WantedIconButtonSize.Custom] 으로 지정합니다.
modifierModifier외형 및 배치를 제어하는 Modifier입니다.
enabledBoolean버튼의 활성화 여부입니다.
outlineColorColor활성화 상태의 외곽선 색상입니다.
disableOutlineColorColor비활성 상태의 외곽선 색상입니다.
tintColor활성 상태의 아이콘 색상입니다.
disableTintColor비활성 상태의 아이콘 색상입니다.
backgroundColor활성 상태의 배경 색상입니다.
disableBackgroundColor비활성 상태의 배경 색상입니다. 기본값 backgroundNeutralPrimary
pushBadge@Composable (() -> Unit)?지정 위치에 표시할 PushBadge 등 컴포넌트. 박스 모서리 기준으로 정렬됩니다.
badgePositionIconButtonBadgePositionpushBadge 정렬 기준점. 기본값 [IconButtonBadgePosition.TopRight]
disableInteractionBooleantrue이면 press/hover ripple 효과 없음. 기본값 false
interactionColorColorripple 색상. 기본값 foregroundNeutralPrimary
onClick() -> Unit클릭 시 호출되는 콜백입니다.

WantedIconButtonSolid

WantedIconButtonSize를 사용하여 간편하게 크기와 패딩을 지정할 수 있는 Solid 스타일 아이콘 버튼입니다. (Confluence IconButton 스펙 §3 — 2026-06-24) 아이콘 크기 산출: icon = round(box × 0.47) → dimension 토큰 스냅(동률이면 작은 값). 중앙정렬 inset = (box - icon) / 2. padding 방식 제거. Radius = radius.full (CircleShape). 박스는 clamp(24dp, N, 64dp).

WantedIconButtonSolid(
    icon = R.drawable.ic_icon,
    size = WantedIconButtonSize.Medium,
    onClick = { /* 클릭 처리 */ }
)
Parameters
이름타입설명
iconInt아이콘으로 사용할 drawable 리소스 ID입니다.
sizeWantedIconButtonSize박스 크기를 정의하는 sealed class입니다. preset(Medium/Small) 외 박스는 [WantedIconButtonSize.Custom] 으로 지정합니다.
modifierModifier외형 및 배치를 제어하는 Modifier입니다.
enabledBoolean버튼의 활성화 여부입니다.
tintColor아이콘의 색상입니다. 기본값은 흰색입니다.
backgroundColor배경 색상입니다. 기본값은 surfaceBrandPrimary입니다.
pushBadge@Composable (() -> Unit)?지정 위치에 표시할 PushBadge 등 컴포넌트. 박스 모서리 기준으로 정렬됩니다.
badgePositionIconButtonBadgePositionpushBadge 정렬 기준점. 기본값 [IconButtonBadgePosition.TopRight]
disableInteractionBooleantrue이면 press/hover ripple 효과 없음. 기본값 false
interactionColorColorripple 색상. 기본값 foregroundNeutralPrimary
onClick() -> Unit클릭 시 호출되는 콜백입니다.

WantedIconButtonBackground

콘텐츠 위에 떠 있는 floating 아이콘 버튼. 이미지·미디어 등 오버레이 액션에 사용합니다. (Confluence IconButton 스펙 §3·§4) [size] 는 박스(컨테이너) 크기이며, 아이콘은 박스에서 자동 산출됩니다.

  • 아이콘 = nearestDimensionToken(box × 2/3, tie → down)
  • Border radius = CircleShape (radius.full)
  • 박스 = clamp(24dp, N, 64dp), 글래스 레이어는 박스를 정확히 채움 (inset: 0)
  • Hit area = 박스 100% background 는 단일 [WantedIconButtonBackgroundSize.Default] (box 32dp, icon 20dp) preset 으로 수렴하며, 박스 커스텀은 [WantedIconButtonBackgroundSize.Custom] 으로 지정합니다.
WantedIconButtonBackground(
    icon = R.drawable.ic_icon,
    // size 미지정 → Default(box 32dp) 기본값
    alternative = false,
    onClick = { /* 클릭 처리 */ }
)
Parameters
이름타입설명
iconInt아이콘 drawable 리소스 ID
modifierModifier외형 및 배치를 제어하는 Modifier
alternativeBooleantrue 일 경우 다크 오버레이 위 사용 변형
enabledBoolean활성화 여부
sizeWantedIconButtonBackgroundSize박스 크기. 기본값 [WantedIconButtonBackgroundSize.Default]
tintColor아이콘 색상 (기본값은 alternative 여부에 따라 자동 결정)
pushBadge@Composable (() -> Unit)?지정 위치에 표시할 PushBadge 등 컴포넌트. 박스 모서리 기준으로 정렬됩니다.
badgePositionIconButtonBadgePositionpushBadge 정렬 기준점. 기본값 [IconButtonBadgePosition.TopRight]
disableInteractionBooleantrue이면 press/hover ripple 효과 없음. 기본값 false
interactionColorColorripple 색상. 기본값 foregroundNeutralPrimary
useNormalInteractionBooleantrue이면 light 대신 normal 강도 ripple 적용. 기본값 false
onClick() -> Unit클릭 콜백

Enum

IconButtonBadgePosition

값설명
TopLeft좌측 상단입니다.
TopCenter상단 중앙입니다.
TopRight우측 상단입니다.
MiddleLeft좌측 중앙입니다.
MiddleCenter정중앙입니다.
MiddleRight우측 중앙입니다.
BottomLeft좌측 하단입니다.
BottomCenter하단 중앙입니다.
BottomRight우측 하단입니다.

IconButtonInteractionEffect

값설명
Highlight아이콘 뒤에 인터랙션 레이어(ripple)를 표시합니다. 기본값입니다.
Dim레이어 대신 아이콘 투명도를 낮춥니다. Top Navigation 처럼 레이어 형태가 어색한 자리에 씁니다. Normal variant 에만 제공합니다.
None인터랙션 피드백이 없습니다.

Sealed Class

WantedIconButtonBackgroundSize

WantedIconButtonBackground 의 박스(컨테이너) 크기입니다. (Confluence IconButton 스펙 §3·§4) background 는 string preset 을 두지 않고 단일 [Default] preset 으로 수렴하며, 박스 커스텀은 [Custom] 으로만 지정합니다. 아이콘은 box × 2/3 → dimension 토큰 스냅으로 자동 산출되고, 박스는 clamp(24dp, N, 64dp) 범위로 클램프됩니다.

  • [Default] : box 32dp (기본값) → icon 20dp
  • [Custom] : 임의 박스 크기. copy 로 커스텀할 수 있습니다.

WantedIconButtonNormalSize

WantedIconButtonNormal 의 박스(컨테이너) 크기입니다. (Confluence IconButton 스펙 §3·§4) size 는 박스 크기를 뜻하며, 아이콘·radius 는 박스에서 자동 산출됩니다 (icon = box × 2/3 → dimension 토큰 스냅, radius = box × 0.3 → radius 토큰 스냅). 박스는 clamp(24dp, N, 64dp) 범위로 클램프됩니다.

  • [Xlarge] : box 36dp (기본값) → icon 24dp, radius 10dp
  • [Large] : box 32dp → icon 20dp, radius 10dp
  • [Medium] : box 28dp → icon 18dp, radius 8dp
  • [Small] : box 24dp → icon 16dp, radius 8dp
  • [Custom] : 임의 박스 크기. copy 로 커스텀할 수 있습니다. interactionOverflow = true 이면 size 는 아이콘 크기를 뜻합니다(Web 방식, WRP-3163). 인터랙션 영역은 아이콘에서 max(24, ceil(icon × 1.5 ÷ 4) × 4) 로 계산합니다.
  • preset 은 위 표의 아이콘 크기(24 · 20 · 18 · 16)를 쓰므로 인터랙션 영역은 36 · 32 · 28 · 24 로 같습니다.
  • [Custom] 은 숫자가 그대로 아이콘 크기가 됩니다. 예) Custom(20.dp) → icon 20dp, 인터랙션 영역 32dp

WantedIconButtonSize

WantedIconButtonOutlined / WantedIconButtonSolid 의 박스(컨테이너) 크기입니다. (Confluence IconButton 스펙 §3·§4) size 는 박스 크기를 뜻하며, 아이콘은 box × 0.47 → dimension 토큰 스냅(동률 → 작은 값)으로 자동 산출됩니다. radius 는 full(CircleShape), 박스는 clamp(24dp, N, 64dp) 범위로 클램프됩니다.

  • [Medium] : box 40dp (기본값) → icon 18dp
  • [Small] : box 32dp → icon 16dp
  • [Custom] : 임의 박스 크기. copy 로 커스텀할 수 있습니다.

© 2026 Wanted Lab, Inc.