Button

Button

사용자 액션을 트리거하는 버튼 컴포넌트입니다.

기본 유형

btn_filled · btn_outline · btn_ghost · btn_text 네 가지 기본 스킨을 제공합니다.

셀렉트 박스형

btn_select 클래스로 셀렉트 박스처럼 표시합니다. btn_select-text는 배경·테두리 없는 텍스트 형태입니다. 드롭다운·팝오버 트리거로 사용하며 aria-haspopup과 aria-expanded를 지정합니다.

텍스트 버튼

btn_text 계열 스킨으로 배경·테두리 없이 표시합니다. primary, muted, danger 등 색상 변형과 아이콘·크기·상태 조합을 지원합니다.

아이콘 + 텍스트

아이콘과 함께 사용하는 텍스트도 btn_label 클래스로 감쌉니다.

아이콘 + 텍스트 (세로)

btn_vertical 클래스로 아이콘을 위·텍스트를 아래에 배치합니다. 하단 탭·퀵 액션 등에 사용합니다.

아이콘 + 텍스트 (세로) · 균등 배분

btn_vertical과 btn_row-equal을 함께 사용하면 부모 100% 너비에서 버튼을 균등 분배합니다. 하단 탭 바 등에 사용합니다.

텍스트 + 아이콘

텍스트를 앞에 두고 아이콘을 뒤에 배치합니다. 텍스트는 btn_label로 감쌉니다.

아이콘 버튼

텍스트 없이 아이콘만 표시합니다. btn_icon-only와 함께 사용하며, 접근성을 위해 aria-label을 반드시 지정합니다.

아이콘 버튼 크기

btn_sm, medium, btn_lg 세 가지 크기를 지원합니다.

색상 변형

상황에 맞는 색상 변형을 사용합니다.

크기

small, medium, large 세 가지 크기를 지원합니다.

라운드

btn_round 클래스로 pill(캡슐) 형태의 둥근 모서리를 적용합니다. btn_icon-only와 조합하면 원형 아이콘 버튼이 됩니다.

너비

부모 영역 기준으로 너비를 조절합니다. btn_block은 가로 전체, btn_row-equal은 부모 100% 너비에서 버튼을 균등 분배, btn_grow는 비율 분배, btn_fit은 콘텐츠 너비를 유지합니다.

상태

disabled, is-disabled, is-loading 상태를 표현합니다. 비활성은 스킨별로, 로딩은 텍스트·아이콘 버튼 모두 적용할 수 있습니다.

버튼 그룹

가로·세로 방향으로 버튼을 묶습니다. btn_group-fit은 콘텐츠 크기 맞춤, btn_group-block은 전체 너비 균등 분배, btn_group-align-start·center·end로 그룹 정렬을 지정합니다.

최신 버전 v2.0 · 릴리스 노트

루트 태그

tag prop으로 button · a · div를 선택합니다. div와 href 없는 a는 role만으로 Tab 초점이 이동하지 않으므로 tabindex=0을 자동 부여합니다.

a + href
div → role=button
a, role=link

클래스 · 속성

Nuxt와 Next 컴포넌트가 렌더하는 OOCSS 클래스와 접근성 속성입니다. HTML에서는 아래 항목을 직접 조합합니다.

클래스 · 속성 설명
btn루트 구조 클래스
btn_filled · btn_outline · btn_ghost · btn_text기본 스킨
btn_select · btn_select-text셀렉트 박스형·텍스트형 트리거
btn_sm · btn_lg크기 변형
btn_roundpill(캡슐) 모서리
btn_vertical · btn_icon-only세로 배치·아이콘 전용 버튼
btn_block · btn_grow · btn_grow-2 · btn_fit너비 레이아웃
icon · btn_label · btn_spinner버튼 내부 파트
btn_row · btn_group · btn_stack버튼 묶음 컨테이너
is-disabled · is-loading · is-open · is-error상태 클래스
color_primary · color_default · color_success · color_warning · color_danger · color_muted스킨과 조합하는 색상 유틸리티
disabled · aria-disabled네이티브·커스텀 비활성 상태. 커스텀 태그는 Tab 순서와 이벤트도 함께 차단
aria-label아이콘 전용 버튼의 접근 가능한 이름
aria-busy로딩 상태 전달
aria-haspopup · aria-expanded · aria-invalid셀렉트·팝오버 트리거 상태 전달
role · tabindexdiv 또는 href 없는 a를 인터랙티브 요소로 사용할 때 지정
data-ripple클릭 파장 활성. data-ripple="surface"는 절대 위치 보조 버튼용
data-ripple="false" · data-no-ripple해당 요소 또는 하위 전체의 클릭 파장 비활성

디자인 토큰

토큰 기본값 설명
--btn-padding-y · --btn-padding-x · --btn-font-size0.5rem · 1rem · var(--text-size-base)기본(md) 패딩·타이포
--btn-padding-y-sm · --btn-padding-x-sm · --btn-font-size-sm0.3rem · 0.75rem · var(--text-size-sm)sm 크기
--btn-padding-y-lg · --btn-padding-x-lg · --btn-font-size-lg0.65rem · 1.25rem · var(--text-size-lg)lg 크기
--btn-font-weight · --btn-font-weight-normal · --btn-line-height600 · 400 · 1.4타이포 두께·줄높이
--btn-border-width · --btn-gap1px · var(--space-sm)테두리·내부 간격
--btn-icon-size · --btn-icon-size-md · --btn-icon-size-lg · --btn-icon-size-xl1em · 1.125em · 1.25em · 1.375em아이콘 크기
--btn-icon-only-padding · --btn-icon-only-padding-sm · --btn-icon-only-padding-lg0.5rem · 0.35rem · 0.65rem아이콘만 버튼 패딩
--btn-vertical-min-width · --btn-vertical-min-width-sm · --btn-vertical-min-width-lg4.5rem · 3.75rem · 5.25rem세로 배치 최소 너비
--btn-vertical-padding-y · --btn-vertical-padding-x0.65rem · 0.75rem세로 배치 패딩(md)
--btn-vertical-padding-y-sm · --btn-vertical-padding-x-sm0.5rem · 0.6rem세로 배치 패딩(sm)
--btn-vertical-padding-y-lg · --btn-vertical-padding-x-lg0.85rem · 0.9rem세로 배치 패딩(lg)
--btn-vertical-label-size · --btn-vertical-label-size-sm · --btn-vertical-label-size-lgvar(--text-size-sm) · var(--text-size-xs) · var(--text-size-base)세로 배치 라벨 크기
--btn-vertical-label-weight · --btn-vertical-label-line-height500 · 1.25세로 배치 라벨 두께·줄높이
--btn-select-min-width · --btn-select-max-width10rem · 320px셀렉트 트리거 너비
--btn-select-padding-right · --btn-select-padding-right-sm · --btn-select-padding-right-lg0.65rem · 0.5rem · 0.85rem셀렉트 캐럿 여백
--btn-select-text-padding-x · --btn-select-text-padding-right0.5rem · 0.35rem텍스트형 셀렉트 패딩
--btn-select-text-padding-x-sm · --btn-select-text-padding-right-sm0.35rem · 0.25rem텍스트형 셀렉트 패딩(sm)
--btn-select-text-padding-x-lg · --btn-select-text-padding-right-lg0.65rem · 0.45rem텍스트형 셀렉트 패딩(lg)
--btn-spinner-size · --btn-spinner-border · --btn-spinner-duration1em · 2px · 0.6s로딩 스피너
--btn-stack-text-size · --btn-stack-text-line-heightvar(--text-size-sm) · 1.5스택 하단 안내 텍스트
--btn-group-overlap-1px그룹 버튼 테두리 겹침