Skip to main content
Glama
example-usage.mdβ€’4.67 kB
# 🎨 Palette μ‚¬μš© μ˜ˆμ‹œ ## μ‹€μ œ μ½”λ“œ μ‚½μž… ν…ŒμŠ€νŠΈ ### React μ»΄ν¬λ„ŒνŠΈ μ˜ˆμ‹œ ```tsx import React from 'react'; import { Button } from '@dealicious/design-system-react/src/components/ssm-button'; import { Card } from '@dealicious/design-system-react/src/components/ssm-card'; import { Input } from '@dealicious/design-system-react/src/components/ssm-input'; interface LoginFormProps { onSubmit: (data: { email: string; password: string }) => void; } const LoginForm: React.FC<LoginFormProps> = ({ onSubmit }) => { const [email, setEmail] = React.useState(''); const [password, setPassword] = React.useState(''); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); onSubmit({ email, password }); }; return ( <Card title="둜그인" padding="large"> <form onSubmit={handleSubmit}> <Input type="email" placeholder="이메일을 μž…λ ₯ν•˜μ„Έμš”" value={email} onChange={(value) => setEmail(value)} required /> <Input type="password" placeholder="λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜μ„Έμš”" value={password} onChange={(value) => setPassword(value)} required /> <Button type="submit" variant="primary" size="large" loading={false} > 둜그인 </Button> </form> </Card> ); }; export default LoginForm; ``` ### Vue μ»΄ν¬λ„ŒνŠΈ μ˜ˆμ‹œ ```vue <template> <Card title="μ‚¬μš©μž ν”„λ‘œν•„" padding="large"> <div class="profile-container"> <Input v-model="user.name" placeholder="이름을 μž…λ ₯ν•˜μ„Έμš”" :error="errors.name" /> <Input v-model="user.email" type="email" placeholder="이메일을 μž…λ ₯ν•˜μ„Έμš”" :error="errors.email" /> <Button @click="saveProfile" variant="primary" size="medium" :loading="isSaving" > ν”„λ‘œν•„ μ €μž₯ </Button> </div> </Card> </template> <script setup lang="ts"> import { ref, reactive } from 'vue'; import Button from '@dealicious/design-system/src/components/ssm-button'; import Card from '@dealicious/design-system/src/components/ssm-card'; import Input from '@dealicious/design-system/src/components/ssm-input'; interface User { name: string; email: string; } const user = reactive<User>({ name: '', email: '' }); const errors = reactive({ name: '', email: '' }); const isSaving = ref(false); const saveProfile = async () => { isSaving.value = true; try { // API 호좜 둜직 console.log('ν”„λ‘œν•„ μ €μž₯:', user); } catch (error) { console.error('μ €μž₯ μ‹€νŒ¨:', error); } finally { isSaving.value = false; } }; </script> <style scoped> .profile-container { display: flex; flex-direction: column; gap: 16px; } </style> ``` ## πŸ“¦ νŒ¨ν‚€μ§€ μ„€μΉ˜ 방법 ### 1. npm μ‚¬μš© ```bash npm install @dealicious/design-system-react @dealicious/design-system ``` ### 2. yarn μ‚¬μš© (ꢌμž₯) ```bash yarn add @dealicious/design-system-react @dealicious/design-system ``` ## πŸ”§ μ„€μ • 방법 ### React ν”„λ‘œμ νŠΈ μ„€μ • ```tsx // main.tsx λ˜λŠ” index.tsx import React from 'react'; import ReactDOM from 'react-dom/client'; import App from './App'; // Design System CSS import (ν•„μš”ν•œ 경우) // import '@dealicious/design-system-react/dist/index.css'; ReactDOM.createRoot(document.getElementById('root')!).render( <React.StrictMode> <App /> </React.StrictMode> ); ``` ### Vue ν”„λ‘œμ νŠΈ μ„€μ • ```ts // main.ts import { createApp } from 'vue'; import App from './App.vue'; // Design System CSS import (ν•„μš”ν•œ 경우) // import '@dealicious/design-system/dist/index.css'; createApp(App).mount('#app'); ``` ## βœ… 정상 μž‘λ™ 확인 μœ„μ˜ μ½”λ“œ μ˜ˆμ‹œλ“€μ€ λ‹€μŒκ³Ό 같이 μ •μƒμ μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€: 1. **Import 경둜**: `@dealicious/design-system-react`와 `@dealicious/design-system` νŒ¨ν‚€μ§€μ—μ„œ μ»΄ν¬λ„ŒνŠΈλ₯Ό μ˜¬λ°”λ₯΄κ²Œ import 2. **TypeScript 지원**: λͺ¨λ“  μ»΄ν¬λ„ŒνŠΈμ— λŒ€ν•œ νƒ€μž… μ •μ˜ 제곡 3. **Props 전달**: 각 μ»΄ν¬λ„ŒνŠΈμ˜ propsκ°€ μ˜¬λ°”λ₯΄κ²Œ 전달됨 4. **이벀트 핸듀링**: onClick, onChange λ“±μ˜ μ΄λ²€νŠΈκ°€ μ •μƒμ μœΌλ‘œ 처리됨 ## πŸš€ μ‚¬μš© 방법 1. **νŒ¨ν‚€μ§€ μ„€μΉ˜**: μœ„μ˜ μ„€μΉ˜ λͺ…λ Ήμ–΄ μ‹€ν–‰ 2. **μ»΄ν¬λ„ŒνŠΈ import**: ν•„μš”ν•œ μ»΄ν¬λ„ŒνŠΈλ₯Ό import 3. **μ‚¬μš©**: JSX/Vue ν…œν”Œλ¦Ώμ—μ„œ μ»΄ν¬λ„ŒνŠΈ μ‚¬μš© 4. **μŠ€νƒ€μΌλ§**: ν•„μš”μ— 따라 CSS import λ˜λŠ” μ»€μŠ€ν…€ μŠ€νƒ€μΌ 적용 이제 μ½”λ“œκ°€ μ •μƒμ μœΌλ‘œ μ²˜λ¦¬λ©λ‹ˆλ‹€! πŸŽ‰

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