ApprovalCard
AI 에이전트의 작업을 사용자가 승인/거부할 수 있는 카드 컴포넌트입니다. Human-in-the-Loop 패턴 구현에 사용됩니다.
Installation
bash
npx @axis-ds/cli add approval-cardUsage
tsx
import { ApprovalCard } from '@axis-ds/agentic-ui'
export function Example() {
return (
<ApprovalCard
title="코드 변경 승인 요청"
description="AI가 다음 변경 사항을 적용하려고 합니다."
severity="warning"
actions={[
{ label: '거부', variant: 'secondary', onClick: () => console.log('Rejected') },
{ label: '승인', onClick: () => console.log('Approved') },
]}
>
<ul className="text-sm list-disc pl-5">
<li>NewFeature.tsx 추가</li>
<li>index.ts export 수정</li>
</ul>
</ApprovalCard>
)
}Interactive Demo
심각도:
주의 알림:
코드 변경 승인 요청
AI가 다음 변경 사항을 적용하려고 합니다. 검토 후 승인 또는 거부해주세요.
- NewFeature.tsx 추가
- index.ts 에 NewFeature export 추가
- deprecated.ts 삭제
아직 결정하지 않았습니다.
Severity
정보 알림:
info 심각도
심각도에 따라 왼쪽 테두리와 아이콘 색이 바뀝니다.
주의 알림:
warning 심각도
심각도에 따라 왼쪽 테두리와 아이콘 색이 바뀝니다.
오류 알림:
error 심각도
심각도에 따라 왼쪽 테두리와 아이콘 색이 바뀝니다.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
titleRequired | string | - | 카드 제목 |
description | string | - | 설명 텍스트 |
severity | "info" | "warning" | "error" | "info" | 심각도 (왼쪽 테두리 · 아이콘 색과 화면 낭독기용 문구를 정함) |
actionsRequired | ApprovalAction[] | - | 카드 아래에 표시할 액션 버튼 목록 |
children | React.ReactNode | - | 설명 아래 추가 내용 |
id | string | 자동 생성 | 제목 · 설명 연결용 기준 ID |
className | string | - | 추가 CSS 클래스 |
titleRequiredType:
string카드 제목
descriptionType:
stringDefault:
-설명 텍스트
severityType:
"info" | "warning" | "error"Default:
"info"심각도 (왼쪽 테두리 · 아이콘 색과 화면 낭독기용 문구를 정함)
actionsRequiredType:
ApprovalAction[]카드 아래에 표시할 액션 버튼 목록
childrenType:
React.ReactNodeDefault:
-설명 아래 추가 내용
idType:
stringDefault:
자동 생성제목 · 설명 연결용 기준 ID
classNameType:
stringDefault:
-추가 CSS 클래스
ApprovalAction Type
| Prop | Type | Default | Description |
|---|---|---|---|
labelRequired | string | - | 버튼 문구 |
variant | "default" | "secondary" | "ghost" | "destructive" | "default" | 버튼 모양 |
onClickRequired | () => void | - | 클릭 콜백 |
labelRequiredType:
string버튼 문구
variantType:
"default" | "secondary" | "ghost" | "destructive"Default:
"default"버튼 모양
onClickRequiredType:
() => void클릭 콜백
Accessibility
카드는 role="region"으로 그룹화되고 aria-labelledby / aria-describedby로 제목·설명이 연결됩니다.
| Key | Action |
|---|---|
| Tab | 액션 버튼 사이를 이동합니다. |
| Enter / Space | 포커스된 액션을 실행합니다. |
- 심각도는 색상만이 아니라 화면 낭독기용 문구("주의 알림:" 등)로도 전달됩니다.
- 아이콘은 aria-hidden으로 처리됩니다.