Skip to main content
Glama
DESIGN_SYSTEM_USAGE.md9.12 kB
# Design System을 사용한 Figma → React 변환 ## 개요 이 프로젝트는 Figma 디자인을 **Design System 컴포넌트를 사용하여** React/Vue 컴포넌트로 변환하는 MCP 서버입니다. ## 핵심 개념 ### ❌ 잘못된 방식 (별도 CSS 생성) ```tsx // 이렇게 하면 안됩니다! import './ExchangeRateCard.css'; // 별도 CSS 파일 <div className="custom-styles">...</div> ``` ### ✅ 올바른 방식 (Design System 사용) ```tsx // 이렇게 해야 합니다! import { Button } from '@dealicious/design-system-react/src/components/ssm-button'; import { Card } from '@dealicious/design-system-react/src/components/ssm-card'; import { Table } from '@dealicious/design-system-react/src/components/ssm-table'; <Card title="제목" elevation={2}> <Button variant="primary">클릭</Button> </Card> ``` ## Design System 컴포넌트 목록 ### 🎨 사용 가능한 컴포넌트들 #### Actions & Navigation - **ssm-button**: 다양한 variant (primary, secondary, tertiary, danger) - **ssm-text-link**: 링크 버튼 컴포넌트 - **ssm-arrow-pagination**: 화살표 페이지네이션 - **ssm-pagination**: 일반 페이지네이션 #### Layout & Containers - **ssm-accordion**: 아코디언 컴포넌트 - **ssm-tab**: 탭 컴포넌트 - **ssm-layer-popup**: 팝업 레이어 - **ssm-layer-alert**: 알림 레이어 #### Forms & Inputs - **ssm-input**: 기본 입력 필드 - **ssm-text-field**: 텍스트 필드 (라벨 포함) - **ssm-check**: 체크박스 컴포넌트 - **ssm-radio**: 라디오 버튼 컴포넌트 - **ssm-switch**: 스위치 컴포넌트 - **ssm-dropdown**: 드롭다운 컴포넌트 #### Data Display - **ssm-table**: 데이터 테이블 컴포넌트 - **ssm-badge**: 배지 컴포넌트 - **ssm-chip**: 칩 컴포넌트 - **ssm-tag**: 태그 컴포넌트 - **ssm-labeled-text**: 라벨이 있는 텍스트 - **ssm-text**: 기본 텍스트 컴포넌트 #### Feedback & Status - **ssm-toast**: 토스트 알림 - **ssm-notice**: 공지사항 컴포넌트 - **ssm-error**: 에러 표시 컴포넌트 - **ssm-helper-text**: 도움말 텍스트 - **ssm-tooltip**: 툴팁 컴포넌트 - **ssm-loading-spinner**: 로딩 스피너 #### Icons & Media - **ssm-icon**: 아이콘 컴포넌트 - **env-badge**: 환경 배지 (React만) ## 설치 및 설정 ### 1. Design System 패키지 설치 ✅ **Private 저장소 사용**: `ssm-web` 저장소는 private로 되어있지만, 인증을 통해 사용할 수 있습니다. **설치 방법들:** #### 방법 1: SSH 키 사용 (권장) ```bash # 1. SSH 키 생성 및 GitHub 등록 (한 번만 설정) ssh-keygen -t ed25519 -C "your_email@example.com" # 생성된 공개 키를 GitHub → Settings → SSH and GPG keys에 등록 # 2. SSH 연결 테스트 ssh -T git@github.com # 3. Private 저장소에서 패키지 설치 yarn add git+ssh://git@github.com/dealicious-inc/ssm-web.git#master # 또는 특정 패키지만 설치 yarn add git+ssh://git@github.com/dealicious-inc/ssm-web.git#master:packages/design-system-react ``` #### 방법 2: Personal Access Token 사용 ```bash # 1. GitHub → Settings → Developer settings → Personal access tokens에서 토큰 생성 # 2. 필요한 권한: repo (전체 저장소 접근) # 3. Personal Access Token을 사용한 설치 yarn add git+https://<YOUR_TOKEN>@github.com/dealicious-inc/ssm-web.git#master ``` #### 방법 3: 환경 변수 사용 ```bash export GITHUB_TOKEN=your_personal_access_token yarn add git+https://${GITHUB_TOKEN}@github.com/dealicious-inc/ssm-web.git#master ``` ### 2. 컴포넌트 사용 ✅ **Private 저장소에서 설치한 경우**: 아래 코드로 컴포넌트를 사용할 수 있습니다. ```tsx // 만약 패키지가 설치된다면 이렇게 사용할 수 있습니다 import { Button } from '@dealicious/design-system-react/src/components/ssm-button'; import { Input } from '@dealicious/design-system-react/src/components/ssm-input'; import { Badge } from '@dealicious/design-system-react/src/components/ssm-badge'; import { Toast } from '@dealicious/design-system-react/src/components/ssm-toast'; function MyComponent() { return ( <div> <Input placeholder="입력하세요" /> <Button variant="primary">저장</Button> <Badge variant="success">완료</Badge> </div> ); } ``` **실제 사용 가능한 대안:** ```tsx // Material-UI 사용 예시 import { Button, TextField, Chip } from '@mui/material'; function MyComponent() { return ( <div> <TextField placeholder="입력하세요" /> <Button variant="contained">저장</Button> <Chip label="완료" color="success" /> </div> ); } ``` ## 생성된 컴포넌트 예제 ### ExchangeRateCard 컴포넌트 ```tsx // Design System 컴포넌트들을 조합하여 생성 import { Button } from '@dealicious/design-system-react/src/components/ssm-button'; import { Input } from '@dealicious/design-system-react/src/components/ssm-input'; import { Badge } from '@dealicious/design-system-react/src/components/ssm-badge'; import { Table } from '@dealicious/design-system-react/src/components/ssm-table'; import { Text } from '@dealicious/design-system-react/src/components/ssm-text'; import { LoadingSpinner } from '@dealicious/design-system-react/src/components/ssm-loading-spinner'; const ExchangeRateCard = () => { return ( <div className="exchange-rate-card"> <div className="filter-section"> <Input placeholder="검색어 입력" /> <Button variant="primary">검색</Button> </div> <div className="stats-section"> <Badge variant="info">총 결제 건수: 1,234</Badge> <Text size="large">환율 정보</Text> </div> <Table data={paymentData} columns={columns} sortable={true} pagination={true} /> <LoadingSpinner size="medium" /> </div> ); }; ``` ## MCP 서버 사용법 ### 1. Figma 디자인 분석 ```bash # MCP 서버 시작 yarn dev # Figma 파일 분석 # convert_figma_to_react 도구 사용 ``` ### 2. Design System 매핑 - Figma 컴포넌트 → Design System 컴포넌트 자동 매핑 - ssm-button, ssm-input, ssm-badge, ssm-table, ssm-toast 등으로 변환 - 별도 CSS 없이 Design System 스타일 사용 - 30개 이상의 컴포넌트 자동 매핑 지원 ## 장점 ### 🎯 일관성 - 모든 컴포넌트가 동일한 Design System 사용 - 브랜드 가이드라인 준수 ### 🚀 효율성 - 별도 CSS 작성 불필요 - 기존 Design System 컴포넌트 재사용 ### 🔧 유지보수성 - Design System 업데이트 시 자동 반영 - 중앙화된 스타일 관리 ## Design System 저장소 ✅ **올바른 저장소 경로**: - **웹 Design System (Private)**: https://github.com/dealicious-inc/ssm-web - **iOS Design System**: https://github.com/dealicious-inc/ssm-mobile-ios-design-system - **Android Design System**: https://github.com/dealicious-inc/ssm-mobile-android-design-system ℹ️ **참고**: `ssm-web` 저장소는 private로 되어있어 인증이 필요합니다. **대안 Design System 저장소들:** - **Material-UI**: https://github.com/mui/material-ui - **Chakra UI**: https://github.com/chakra-ui/chakra-ui - **Ant Design**: https://github.com/ant-design/ant-design - **Mantine**: https://github.com/mantinedev/mantine ## 결론 이 프로젝트의 목적은 **별도의 CSS를 생성하는 것이 아니라**, 기존 Design System 컴포넌트들을 활용하여 Figma 디자인을 React/Vue 컴포넌트로 변환하는 것입니다. 모든 스타일링은 Design System에서 제공되며, 개발자는 비즈니스 로직에만 집중할 수 있습니다. ## 🚨 현재 상황 및 해결 방안 ### 문제점 - `@dealicious/design-system-react` 패키지가 npm registry에 존재하지 않음 - `ssm-web` 저장소가 private로 되어있어 인증 없이는 접근할 수 없음 - 문서의 설치 방법이 인증 과정을 포함하지 않음 ### 해결 방안 #### 1. Private 저장소 접근 (권장) ```bash # SSH 키 사용 (가장 안전한 방법) yarn add git+ssh://git@github.com/dealicious-inc/ssm-web.git#master # 또는 Personal Access Token 사용 yarn add git+https://<YOUR_TOKEN>@github.com/dealicious-inc/ssm-web.git#master ``` #### 2. 대체 Design System 사용 (fallback) ```bash # Private 저장소 접근이 어려운 경우 yarn add @mui/material @emotion/react @emotion/styled yarn add @mui/icons-material # 또는 Chakra UI yarn add @chakra-ui/react @emotion/react @emotion/styled framer-motion ``` #### 3. 장기 해결책 1. **npm 패키지 배포**: `@dealicious/design-system-react` 패키지를 npm registry에 배포 2. **Private 저장소 공개**: 필요시 `ssm-web` 저장소를 public으로 전환 3. **GitHub Packages 사용**: GitHub Packages를 통해 private 패키지 배포 #### 4. 프로젝트 수정 필요사항 - `src/services/design-system.ts` 파일에서 실제 존재하는 패키지로 변경 - `src/services/code-generator.ts`에서 import 경로 수정 - MCP 서버의 컴포넌트 매핑 로직 업데이트

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Opti-kjh/palatte'

If you have feedback or need assistance with the MCP directory API, please join our Discord server