- 테마 시스템: CSS 변수 + data-theme + Tailwind v4 시맨틱 색상 (다크모드 지원) - 공통 컴포넌트: CodeBlock, Alert, StepGuide, CopyButton, TableOfContents - 가이드 콘텐츠 8개 섹션 (React.lazy 동적 로딩, 실제 인프라 검증 완료) - 관리자 페이지 4개 (사용자/롤/권한/통계) - 레이아웃: 반응형 사이드바 + 테마 토글 + ScrollSpy 목차 - 인증: Google OAuth 로그인/세션복원/로그아웃 백엔드 API 연동 - 개발모드 mock 인증 (import.meta.env.DEV 전용) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
34 lines
981 B
TypeScript
34 lines
981 B
TypeScript
import type { ReactNode } from 'react';
|
|
|
|
interface Step {
|
|
title: string;
|
|
content: ReactNode;
|
|
}
|
|
|
|
interface StepGuideProps {
|
|
steps: Step[];
|
|
}
|
|
|
|
export function StepGuide({ steps }: StepGuideProps) {
|
|
return (
|
|
<div className="space-y-0 my-6">
|
|
{steps.map((step, index) => (
|
|
<div key={index} className="flex gap-4">
|
|
<div className="flex flex-col items-center">
|
|
<div className="w-8 h-8 rounded-full bg-accent text-white flex items-center justify-center text-sm font-bold flex-shrink-0">
|
|
{index + 1}
|
|
</div>
|
|
{index < steps.length - 1 && (
|
|
<div className="w-0.5 flex-1 bg-accent/20 mt-2" />
|
|
)}
|
|
</div>
|
|
<div className="pb-8 flex-1 min-w-0">
|
|
<h4 className="font-semibold text-text-primary mb-2">{step.title}</h4>
|
|
<div className="text-sm text-text-secondary">{step.content}</div>
|
|
</div>
|
|
</div>
|
|
))}
|
|
</div>
|
|
);
|
|
}
|