Ch.25 컴포넌트 설계 — 재사용 가능한 UI
AI에게 컴포넌트 시키는 법
프롬프트 하나로 완벽한 컴포넌트를 받으려면?
AI에게 "예쁜 버튼 만들어줘"라고 하면 결과가 들쭉날쭉합니다. 하지만 Props 타입과 디자인 토큰을 함께 주면 이야기가 달라집니다.
AI가 일관된 컴포넌트를 만들게 하려면 뭘 줘야 할까?
컴포넌트 명세서 — Props 인터페이스 + 디자인 토큰 + 변형 목록을 미리 정의해주면 됩니다.
핵심 내용
AI에게 설계도를 주면 결과가 확 달라집니다
// 1단계: Props 인터페이스부터 정의
interface ButtonProps {
variant: "primary" | "secondary" | "ghost" | "danger";
size: "sm" | "md" | "lg";
label: string;
onClick: () => void;
disabled?: boolean;
loading?: boolean;
leftIcon?: React.ReactNode;
}
// 이걸 AI에게 먼저 보여주고
// "이 인터페이스에 맞는 Button 컴포넌트를 만들어줘"바이브 코더 공식: 먼저 interface를 쓰고, 그 다음 AI에게 구현을 맡기세요. interface가 곧 AI에 대한 가장 정확한 프롬프트입니다.
디자인 토큰은 색상·크기·간격의 변수화입니다
// Tailwind의 theme 설정 = 프로젝트 전체 디자인 토큰
// tailwind.config.ts
export default {
theme: {
extend: {
colors: {
brand: {
50: "#eff6ff",
500: "#3b82f6",
600: "#2563eb",
700: "#1d4ed8",
},
},
spacing: {
"page": "1rem", // 페이지 패딩
"card": "1.5rem", // 카드 내부 패딩
},
},
},
};핵심: AI에게 디자인 토큰을 알려주면, 매번 일관된 스타일의 컴포넌트를 만들어줍니다. "이 토큰을 사용해서 만들어줘"라고 하세요.
이 프롬프트 템플릿으로 AI 결과물 퀄리티가 확 오릅니다
## 프롬프트 템플릿
아래 Props 인터페이스에 맞는 React 컴포넌트를 만들어줘.
```typescript
interface AlertProps {
variant: "info" | "success" | "warning" | "error";
title: string;
description?: string;
dismissible?: boolean;
onClose?: () => void;
}
```
요구사항:
- Tailwind CSS 사용
- 각 variant별 색상: info=blue, success=green, warning=amber, error=red
- dismissible일 때 X 버튼 표시
- 아이콘 포함 (variant별 다른 아이콘)
- 접근성: role="alert" 추가1. interface 작성: Props 타입을 먼저 정의
2. 토큰 첨부: 디자인 토큰/색상 체계 알려줌
3. 요구사항 나열: 상태, 접근성, 반응형 등 명시
4. 예시 첨부: 기존 컴포넌트 코드를 참고로 제공
바이브 코더의 무기: interface 정의 능력입니다. 코드를 다 이해하지 못해도, 인터페이스를 정확하게 설계할 수 있으면 AI가 나머지를 해결합니다.
AI에게 컴포넌트를 요청할 때 가장 먼저 해야 할 일은?
디자인 토큰을 사용하면 AI가 만든 컴포넌트들이 서로 일관된 스타일을 가진다.
다음 중 프롬프트에 포함하면 결과가 가장 좋아지는 것은?
핵심 용어
Props 인터페이스
타입 정의로 AI가 만들어야 할 API를 확정
Variants (변형)
primary, secondary 같은 시각적 변형 목록
States (상태)
default, hover, disabled, loading 등 상태별 모습
사용 예시
실제 사용 코드를 보여주면 의도가 명확해짐
정리 노트
AI 컴포넌트 프롬프팅 핵심 정리
효과적인 프롬프트
- Props 인터페이스
- TypeScript interface로 컴포넌트가 받을 데이터 명세
- 디자인 토큰
- 색상, 크기, 간격 등 구체적인 스타일 규칙 전달
- 요구사항
- 반응형, 접근성, 애니메이션 등 비기능 요구사항 명시
나쁜 프롬프트 vs 좋은 프롬프트
- 나쁜 예
- "이쁘게 만들어줘", "최신 트렌드에 맞게" 등 모호한 지시
- 좋은 예
- interface + 토큰 + 구체적 요구사항으로 명확한 명세 전달
AI에게 컴포넌트를 시킬 때는 '이쁘게'가 아니라 Props interface를 먼저 정의하세요.
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작