@kokimin/vue-framework 0.0.17 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -0,0 +1,306 @@
1
+ # @kokimin/vue-framework
2
+
3
+ Vue 3 기반의 재사용 가능한 UI 컴포넌트 라이브러리입니다.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@kokimin/vue-framework.svg)](https://www.npmjs.com/package/@kokimin/vue-framework)
6
+ [![license](https://img.shields.io/npm/l/@kokimin/vue-framework.svg)](https://github.com/kokimin/npm-framework-storybook/blob/main/LICENSE)
7
+
8
+ ## 특징
9
+
10
+ - 🎨 **16개의 UI 컴포넌트** - 버튼, 폼, 네비게이션, 레이아웃 등
11
+ - ✅ **Vee-Validate 통합** - 강력한 폼 유효성 검사
12
+ - 🎯 **TypeScript 타입 정의** - 타입 안정성 제공
13
+ - 📱 **반응형 디자인** - 모든 디바이스에서 작동
14
+ - 🎭 **Storybook** - 100개 이상의 사용 예시
15
+ - 🌐 **i18n 지원** - 다국어 지원
16
+
17
+ ## 설치
18
+ ```bash
19
+ npm install @kokimin/vue-framework
20
+ ```
21
+ ```bash
22
+ yarn add @kokimin/vue-framework
23
+ ```
24
+ ```bash
25
+ pnpm add @kokimin/vue-framework
26
+ ```
27
+
28
+ ## 사용법
29
+
30
+ ### 전체 등록
31
+ ```javascript
32
+ import { createApp } from 'vue';
33
+ import App from './App.vue';
34
+ import VueFramework from '@kokimin/vue-framework';
35
+ import '@kokimin/vue-framework/style.css';
36
+
37
+ const app = createApp(App);
38
+ app.use(VueFramework);
39
+ app.mount('#app');
40
+ ```
41
+
42
+ ### 개별 컴포넌트 등록
43
+ ```vue
44
+ <script setup>
45
+ import { ElementButton, ElementText } from '@kokimin/vue-framework';
46
+ import '@kokimin/vue-framework/style.css';
47
+ </script>
48
+
49
+ <template>
50
+ <ElementButton theme="primary" size="sm">
51
+ 클릭하세요
52
+ </ElementButton>
53
+ </template>
54
+ ```
55
+
56
+ ## 컴포넌트
57
+
58
+ ### Containment
59
+ - **ElementButton** - 다양한 스타일의 버튼
60
+ - **ElementTooltip** - 툴팁
61
+
62
+ ### Form
63
+ - **ElementText** - 텍스트 입력
64
+ - **ElementNumber** - 숫자 입력 (포맷팅 지원)
65
+ - **ElementSelect** - 셀렉트 박스 (단일/복수 선택, 검색)
66
+ - **ElementCheckbox** - 체크박스
67
+ - **ElementMultiCheckbox** - 다중 체크박스
68
+ - **ElementRadio** - 라디오 버튼
69
+ - **ElementRadioButton** - 라디오 버튼 (버튼 스타일)
70
+ - **ElementToggle** - 토글 스위치
71
+ - **ElementDatePicker** - 날짜 선택
72
+ - **ElementDateRangePicker** - 날짜 범위 선택
73
+ - **ElementEditor** - WYSIWYG 에디터
74
+
75
+ ### Navigation
76
+ - **ElementTab** - 탭
77
+
78
+ ### Display
79
+ - **ElementScroll** - 커스텀 스크롤바
80
+ - **ElementSplitPanes** - 분할 패널
81
+
82
+ ## 예제
83
+
84
+ ### 기본 버튼
85
+ ```vue
86
+ <template>
87
+ <ElementButton theme="primary" size="sm" @click="handleClick">
88
+ 클릭
89
+ </ElementButton>
90
+ </template>
91
+ ```
92
+
93
+ ### 폼 입력 (유효성 검사)
94
+ ```vue
95
+ <script setup>
96
+ import { ref } from 'vue';
97
+ import { ElementText, ElementNumber } from '@kokimin/vue-framework';
98
+
99
+ const email = ref('');
100
+ const age = ref(null);
101
+ </script>
102
+
103
+ <template>
104
+ <ElementText
105
+ v-model="email"
106
+ type="email"
107
+ name="email"
108
+ placeholder="이메일"
109
+ rules="required|email"
110
+ :isClear="true"
111
+ />
112
+
113
+ <ElementNumber
114
+ v-model="age"
115
+ name="age"
116
+ placeholder="나이"
117
+ :min="0"
118
+ :max="150"
119
+ rules="required"
120
+ />
121
+ </template>
122
+ ```
123
+
124
+ ### 날짜 선택
125
+ ```vue
126
+ <script setup>
127
+ import { ref } from 'vue';
128
+ import { ElementDatePicker } from '@kokimin/vue-framework';
129
+
130
+ const selectedDate = ref('');
131
+ </script>
132
+
133
+ <template>
134
+ <ElementDatePicker
135
+ v-model="selectedDate"
136
+ type="day"
137
+ name="date"
138
+ :isClear="true"
139
+ />
140
+ </template>
141
+ ```
142
+
143
+ ### 셀렉트 박스
144
+ ```vue
145
+ <script setup>
146
+ import { ref } from 'vue';
147
+ import { ElementSelect } from '@kokimin/vue-framework';
148
+
149
+ const selected = ref('');
150
+ const options = [
151
+ { label: '옵션 1', value: 'option1' },
152
+ { label: '옵션 2', value: 'option2' },
153
+ { label: '옵션 3', value: 'option3' },
154
+ ];
155
+ </script>
156
+
157
+ <template>
158
+ <ElementSelect
159
+ v-model="selected"
160
+ type="single"
161
+ name="select"
162
+ placeholder="선택하세요"
163
+ :options="options"
164
+ :isSearch="true"
165
+ />
166
+ </template>
167
+ ```
168
+
169
+ ### 탭
170
+ ```vue
171
+ <script setup>
172
+ import { ref } from 'vue';
173
+ import { ElementTab } from '@kokimin/vue-framework';
174
+
175
+ const activeTab = ref('tab1');
176
+ const tabs = [
177
+ { label: '탭 1', value: 'tab1' },
178
+ { label: '탭 2', value: 'tab2' },
179
+ { label: '탭 3', value: 'tab3' },
180
+ ];
181
+ </script>
182
+
183
+ <template>
184
+ <ElementTab v-model="activeTab" :options="tabs" />
185
+
186
+ <div v-if="activeTab === 'tab1'">탭 1 내용</div>
187
+ <div v-if="activeTab === 'tab2'">탭 2 내용</div>
188
+ <div v-if="activeTab === 'tab3'">탭 3 내용</div>
189
+ </template>
190
+ ```
191
+
192
+ ### 분할 패널
193
+ ```vue
194
+ <template>
195
+ <div style="height: 500px;">
196
+ <ElementSplitPanes :leftSize="30">
197
+ <template #leftSlot>
198
+ <div>왼쪽 패널</div>
199
+ </template>
200
+ <template #rightSlot>
201
+ <div>오른쪽 패널</div>
202
+ </template>
203
+ </ElementSplitPanes>
204
+ </div>
205
+ </template>
206
+ ```
207
+
208
+ ## Props 및 이벤트
209
+
210
+ 각 컴포넌트의 상세한 Props, Events, Slots 정보는 [Storybook 문서](https://kokimin.github.io/npm-framework-storybook/)에서 확인할 수 있습니다.
211
+
212
+ ### 공통 Props (Form 컴포넌트)
213
+
214
+ | Prop | Type | Default | Description |
215
+ |------|------|---------|-------------|
216
+ | `modelValue` | String/Number/Boolean | - | v-model 값 |
217
+ | `name` | String | '' | vee-validate 필드 이름 |
218
+ | `rules` | String | '' | vee-validate 유효성 규칙 |
219
+ | `placeholder` | String | '' | 플레이스홀더 |
220
+ | `disabled` | Boolean | false | 비활성화 |
221
+ | `readonly` | Boolean | false | 읽기 전용 |
222
+ | `isClear` | Boolean | true | 초기화 버튼 표시 |
223
+
224
+ ### Vee-Validate 규칙
225
+
226
+ - `required` - 필수 입력
227
+ - `email` - 이메일 형식
228
+ - `min:8` - 최소 길이
229
+ - `max:20` - 최대 길이
230
+ - `url` - URL 형식
231
+
232
+ 여러 규칙을 `|`로 연결: `rules="required|email"`
233
+
234
+ ## 브라우저 지원
235
+
236
+ - Chrome (최신)
237
+ - Firefox (최신)
238
+ - Safari (최신)
239
+ - Edge (최신)
240
+
241
+ ## 의존성
242
+
243
+ - Vue 3.4.0+
244
+ - Vee-Validate 4.15.1+
245
+ - Vue Router 4.6.4+
246
+ - Vue i18n 11.2.2+
247
+
248
+ ## 개발
249
+ ```bash
250
+ # 설치
251
+ npm install
252
+
253
+ # 개발 서버 실행
254
+ npm run dev
255
+
256
+ # Storybook 실행
257
+ npm run storybook
258
+
259
+ # 빌드
260
+ npm run build
261
+
262
+ # Storybook 빌드
263
+ npm run build-storybook
264
+ ```
265
+
266
+ ## 기여
267
+
268
+ 기여를 환영합니다! 이슈나 PR을 자유롭게 제출해주세요.
269
+
270
+ 1. Fork the repository
271
+ 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
272
+ 3. Commit your changes (`git commit -m 'Add some amazing feature'`)
273
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
274
+ 5. Open a Pull Request
275
+
276
+ ## 라이선스
277
+
278
+ MIT License
279
+
280
+ ## 변경 사항
281
+
282
+ 변경 사항은 [CHANGELOG.md](./CHANGELOG.md)에서 확인할 수 있습니다.
283
+
284
+ ## 지원
285
+
286
+ - 📧 Email: support@kokimin.com
287
+ - 🐛 Issues: [GitHub Issues](https://github.com/kokimin/npm-framework-storybook/issues)
288
+ - 📖 Documentation: [Storybook](https://kokimin.github.io/npm-framework-storybook/)
289
+
290
+ **오류나 문의 사항이 있으시면 [GitHub Issues](https://github.com/kokimin/npm-framework-storybook/issues)에 이슈를 남겨주세요.**
291
+
292
+ ## 크레딧
293
+
294
+ 이 프로젝트는 다음 오픈소스 라이브러리를 사용합니다:
295
+
296
+ - [Vue 3](https://vuejs.org/)
297
+ - [Vee-Validate](https://vee-validate.logaretm.com/)
298
+ - [Vue Datepicker](https://vue3datepicker.com/)
299
+ - [Toast UI Editor](https://ui.toast.com/tui-editor)
300
+ - [Vue Multiselect](https://vue-multiselect.js.org/)
301
+ - [Splitpanes](https://antoniandre.github.io/splitpanes/)
302
+ - [Simplebar](https://grsmto.github.io/simplebar/)
303
+
304
+ ---
305
+
306
+ Made with ❤️ by Kokimin