ToolbarButton
도구 모음 영역에 배치되는 Primary 스타일 액션 버튼
개요
Cals ToolbarButton은 도구 모음(Toolbar) 영역에서 사용하는 Primary 스타일 버튼입니다. 제목 텍스트와 선택적 아이콘을 표시하며, 단축키 등록, 로딩 상태 관리, 스타일 오버라이드를 지원합니다.
주요 특징
- ✅ Primary 스타일: 강조 색상의 기본 버튼
- ✅ 아이콘 지원: 제목 왼쪽에 아이콘 배치
- ✅ 단축키: shortcut prop으로 키보드 단축키 등록
- ✅ 로딩 상태: 처리 중 로딩 표시 + 중복 클릭 방지
- ✅ 스타일 오버라이드: backgroundColor, color, font* 등
- ✅ 가시성/비활성: visible, disabled prop
기본 사용
Preview
아이콘
icon prop으로 제목 왼쪽에 아이콘을 표시합니다.
Preview
로딩 상태
loading=true 시 로딩 표시가 나타나고 클릭이 차단됩니다.
Preview
비활성 상태
disabled=true 시 클릭과 단축키가 차단되고 비활성 스타일로 표시됩니다.
Preview
크기
Preview
단축키
shortcut prop으로 키보드 단축키를 등록합니다. disabled/loading 상태에서는 자동 비활성화됩니다.
<ToolbarButton
title="저장 (Ctrl+S)"
shortcut={[["ctrl", "s"], ["meta", "s"]]}
onClick={handleSave}
/>스타일 오버라이드
backgroundColor, color 등으로 버튼 스타일을 커스터마이즈합니다. hover/active/disabled 색상이 자동 파생됩니다.
Preview
API Reference
Props
| Prop | Type | Default | Description |
|---|---|---|---|
title | string | - | 버튼 제목 텍스트 |
children | ReactNode | - | children 우선 렌더링 |
icon | ReactNode | - | 제목 왼쪽 아이콘 |
loading | boolean | false | 로딩 상태 |
loadingIcon | ReactNode | - | 커스텀 로딩 아이콘 |
visible | boolean | true | 표시 여부 |
disabled | boolean | false | 비활성 상태 |
shortcut | string[][] | - | 단축키 배열 |
size | "sm" | "md" | "lg" | "md" | 버튼 크기 |
onClick | (e) => void | - | 클릭 핸들러 |
onShortcut | () => void | - | 단축키 핸들러 (미지정 시 onClick 호출) |
backgroundColor | string | - | 배경색 (파생 색상 자동 생성) |
color | string | - | 텍스트 색상 |
borderColor | string | - | 테두리 색상 |
fontSize | string | - | 폰트 크기 |
fontWeight | string | number | - | 폰트 굵기 |
fontFamily | string | - | 폰트 패밀리 |
fontStyle | string | - | 폰트 스타일 |
className | string | - | 컨테이너 className |
style | React.CSSProperties | - | 인라인 스타일 |
Ref
| Property/Method | Type | Description |
|---|---|---|
focus() | () => void | 버튼에 포커스 |
blur() | () => void | 포커스 해제 |
element | HTMLButtonElement | null | DOM 요소 직접 접근 |
접근성
권장 사항
- ✅ button 역할을 가진 네이티브 요소로 렌더링됩니다.
- ✅ disabled 시 브라우저 기본 disabled 속성이 적용됩니다.
- ✅ 키보드(Enter/Space)로 활성화 가능합니다.
- ✅ 포커스 링이 기본 제공됩니다.
관련 컴포넌트
- Cals Button: 범용 버튼 (FormItem 래핑 지원)
- Cals ChannelButton: 채널 버튼 컴포넌트
Last updated on