| Prop | 타입 | 기본값 | 설명 |
|---|---|---|---|
variant | 'filled' | 'outline' | 'ghost' | 'text' | 'select' | filled | 버튼 스킨. select는 셀렉트 박스형 트리거 |
color | 'primary' | 'default' | 'success' | 'warning' | 'danger' | 'muted' | primary | 색상 변형. filled는 default·primary·success·warning·danger, text는 primary·muted·success·warning·danger 지원 |
size | 'sm' | 'md' | 'lg' | md | 버튼 크기 |
label | string | — | 버튼 텍스트. default 슬롯으로 대체 가능 |
round | boolean | false | pill(캡슐) 형태 모서리 |
vertical | boolean | false | 아이콘 위 · 텍스트 아래 세로 배치 |
icon-only | boolean | false | 아이콘만 표시. aria-label 필수 |
block | boolean | false | 루트 버튼을 부모 너비 100%로 확장 |
grow | boolean | '2' | false | flex 비율 분배. 2는 2배 너비 |
fit | boolean | false | 콘텐츠 너비 유지 |
disabled | boolean | false | button은 HTML disabled, a·div는 aria-disabled와 상호작용 차단 적용 |
aria-disabled | boolean | false | Tab 순서에서 제외하고 is-disabled·aria-disabled·상호작용 차단 적용 |
loading | boolean | false | 스피너와 aria-busy를 표시하고 중복 상호작용 차단 |
open | boolean | false | 셀렉트 트리거 열림 상태 |
error | boolean | false | 셀렉트 트리거 오류 상태 |
placeholder | boolean | false | 셀렉트 미선택 placeholder 스타일 |
select-text | boolean | false | 배경·테두리 없는 셀렉트 텍스트 형태 |
select-caret | boolean | false | select 이외의 스킨에도 드롭다운 캐럿 표시 |
type | 'button' | 'submit' | 'reset' | button | button 요소 type 속성 (tag="button"일 때만) |
tag | 'button' | 'a' | 'div' | button | 루트 HTML 태그. div·href 없는 a는 role과 tabindex="0" 자동 적용 |
href | string | — | tag="a"일 때 href. 있으면 네이티브 링크, 없으면 role과 tabindex 자동 적용 |
role | 'button' | 'link' | — | tag="a"이고 href가 없을 때 의미 지정. 필요한 tabindex는 자동 적용 |
tabindex | number | — | Tab 순서 수동 지정. div·href 없는 a는 기본 0, 비활성 -1 |
aria-label | string | — | 접근성 라벨 (icon-only 시 필수) |
haspopup | boolean | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | — | aria-haspopup (셀렉트·드롭다운 트리거) |
expanded | boolean | — | aria-expanded (셀렉트·팝오버 트리거) |
invalid | boolean | false | aria-invalid (폼 오류) |
ripple | boolean | true | 클릭 파장(ripple). true 시 data-ripple 활성 · false 비활성. 기본 활성 |
선언되지 않은 HTML 속성·이벤트(id, data-*, @click 등)는 tag로 지정한 루트 요소에 그대로 전달됩니다.