Components

Button

Basic interaction component to trigger user actions

Overview

Button triggers actions or events on click. Use it for form submissions, opening dialogs, executing operations, and more.

Variants

Use primary for the main action on a page, and secondary for supporting actions.

Sizes

  • sm: Suited for dense UIs or inline actions
  • md: Default. Suited for most use cases
  • lg: Suited for hero sections or primary CTAs

Full Width

Use isFullWidth to make the button span the full width of its parent container. Useful for mobile layouts or form footers.

Disabled State

A disabled button indicates that the action is unavailable in the current state.

Props

PropTypeDefaultRequiredDescription
variant'primary' | 'secondary''primary'No시각적 위계. primary 는 한 섹션에 하나만 사용한다.
size'sm' | 'md' | 'lg''md'No버튼 크기
isFullWidthbooleanfalseNo부모 너비를 가득 채울지 여부
disabledbooleanfalseNo비활성 여부
type'button' | 'submit' | 'reset''button'No버튼 타입. 기본값이 button 이라 form 안에서도 명시하지 않으면 제출하지 않는다.
onClickMouseEventHandler<HTMLButtonElement>-No클릭 핸들러
childrenReactNode-Yes버튼 내용
classNamestring-No추가 CSS 클래스
aria-labelstring-No접근성 레이블
refRef<HTMLButtonElement>-Nobutton 엘리먼트 ref

Specification

base

상태요소속성값
enabledrootborderRadius$size.radius.200
enabledrootborderWidth$size.stroke.border
enabledroottypography$text.singleLine.bodyBase
enabledlabelcolor$color.text.default.default
focusVisiblerootoutlineWidth$size.stroke.focus
focusVisiblerootoutlineStylesolid토큰 아님 — 선 모양 토큰 부재
focusVisiblerootoutlineColor$color.border.focus.default
focusVisiblerootoutlineOffset2px토큰 아님 — 링 간격 토큰 부재. focusRing.ts의 focusRingOutside와 같은 값

variant=primary

상태요소속성값
enabledrootbackgroundColor$color.background.brand.default
enabledrootborderColor$color.border.brand.default
enabledlabelcolor$color.text.brand.onBrand
hoverrootbackgroundColor$color.background.brand.defaultHover
hoverlabelcolor$color.text.brand.onBrand
disabledrootbackgroundColor$color.background.disabled.default
disabledrootborderColor$color.border.disabled.default
disabledlabelcolor$color.text.disabled.default

variant=secondary

상태요소속성값
enabledrootbackgroundColor$color.background.default.default
enabledrootborderColor$color.border.default.default
enabledlabelcolor$color.text.brand.default
hoverrootbackgroundColor$color.background.default.defaultHover
hoverlabelcolor$color.text.default.default
disabledrootbackgroundColor$color.background.disabled.default
disabledrootborderColor$color.border.disabled.default
disabledlabelcolor$color.text.disabled.default

size=md

상태요소속성값
enabledrootpadding$size.space.300
enabledrootheight2.5rem토큰 아님 — sizing 토큰 스케일 부재

size=lg

상태요소속성값
enabledrootpadding$size.space.400
enabledrootheight3rem토큰 아님 — sizing 토큰 스케일 부재

Usage Guidelines

Do

  • Use a primary button for the most important action on a page
  • Use secondary buttons for supporting or less important actions
  • Keep button labels concise and action-oriented

Don't

  • Don't use more than one primary button per section
  • Don't disable a button without explaining the reason
  • Don't use generic labels like "Click here"