FE와 디자인 팀의 소통을 위해 디자인 시스템을 적용하고 한눈에 볼 수 있는 Storybook을 만들어 디자인팀에게 제공하고자 디자인 시스템 적용기를 써보고자 한다.
💡 공통 컴포넌트를 만들때는 적절한 책임 분배가 필요합니다.
하나의 컴포넌트가 너무 많은 일을 하는것도 너무 쪼개져있는것도 좋지 못합니다.
💡 컴포넌트를 독립적으로 개발하고 문서화할 수 있게 도와주는 도구

// BasicField 컴포넌트와 해당 컴포넌트의 props 타입을 현재 디렉토리로부터 import
import BasicField from ".";
import type { BasicFieldProps } from ".";
// Storybook의 메타데이터 객체 정의
const meta = {
// Storybook에서 보여질 컴포넌트 그룹 이름
title: "base/BasicField",
// 연결할 실제 React 컴포넌트
component: BasicField,
// 컴포넌트 props에 대한 제어 설정 (Storybook의 Controls 패널에 표시됨)
argTypes: {
disabled: {
// boolean 타입으로 control 가능하게 설정
control: { type: "boolean", default: false },
},
},
// 기본 props 설정 (Story 렌더링 시 기본값으로 사용됨)
args: {
disabled: false,
},
};
// 위에서 정의한 메타데이터를 Storybook에 export (Storybook에서 인식함)
export default meta;
// Storybook에서 렌더링할 컴포넌트 예시 (Story) 정의
export const BasicFieldBox = ({ disabled, theme }: BasicFieldProps) => {
return (
<div>
{/* 실제 BasicField 컴포넌트를 렌더링하면서 props 전달 */}
<BasicField disabled={disabled} theme={theme} />
</div>
);
};
// Story의 이름을 지정 (Storybook UI에 표시될 이름 설정)
BasicFieldBox.storyName = "기본입력박스";
$ pnpm run storybook
