@vc-shell/create-vc-app 1.1.99-alpha.2 → 1.1.99-alpha.5
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 +41 -5
- package/dist/cli/argv.d.ts.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/types.d.ts +5 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/commands/generate-blade.d.ts +5 -0
- package/dist/commands/generate-blade.d.ts.map +1 -1
- package/dist/index.js +940 -789
- package/dist/templates/base/_package.json +5 -5
- package/dist/templates/blades/grid/blade.vue +4 -15
- package/dist/utils/naming.d.ts +1 -0
- package/dist/utils/naming.d.ts.map +1 -1
- package/dist/utils/register-module.d.ts +4 -0
- package/dist/utils/register-module.d.ts.map +1 -1
- package/dist/utils/templates.d.ts +10 -0
- package/dist/utils/templates.d.ts.map +1 -0
- package/dist/workflows/create-app.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/templates/base/ai-guides/.cursorrules-vc-shell +0 -529
- package/dist/templates/base/ai-guides/README.md +0 -360
- package/dist/templates/base/ai-guides/guides/AI_GUIDE.md +0 -195
- package/dist/templates/base/ai-guides/guides/blade-patterns.md +0 -384
- package/dist/templates/base/ai-guides/guides/complete-workflow.md +0 -781
- package/dist/templates/base/ai-guides/guides/composables-reference.md +0 -338
- package/dist/templates/base/ai-guides/guides/troubleshooting.md +0 -529
- package/dist/templates/base/ai-guides/guides/ui-components-reference.md +0 -903
- package/dist/templates/base/ai-guides/prompts/adapt-existing-module.md +0 -1026
- package/dist/templates/base/ai-guides/prompts/advanced-scenarios.md +0 -852
- package/dist/templates/base/ai-guides/prompts/api-client-generation.md +0 -877
- package/dist/templates/base/ai-guides/prompts/cli-usage.md +0 -640
- package/dist/templates/base/ai-guides/prompts/quick-start-scenarios.md +0 -773
- package/dist/templates/base/ai-guides/prompts/simple-modifications.md +0 -987
|
@@ -1,903 +0,0 @@
|
|
|
1
|
-
# UI Components Reference
|
|
2
|
-
|
|
3
|
-
Complete reference for all 45 UI components in VC-Shell framework, organized by category.
|
|
4
|
-
|
|
5
|
-
## Atoms (20 components)
|
|
6
|
-
|
|
7
|
-
### VcBadge
|
|
8
|
-
**Purpose**: Notification badge for status indicators
|
|
9
|
-
|
|
10
|
-
**Props**:
|
|
11
|
-
- `content`: string | number - Badge content
|
|
12
|
-
- `active`: boolean - Active state
|
|
13
|
-
- `disabled`: boolean - Disabled state
|
|
14
|
-
- `clickable`: boolean - Makes badge clickable
|
|
15
|
-
- `size`: 's' | 'm' - Size variant
|
|
16
|
-
- `isDot`: boolean - Show as dot
|
|
17
|
-
- `variant`: 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'secondary' - Color variant
|
|
18
|
-
- `customPosition`: boolean - Custom positioning
|
|
19
|
-
- `top`: string - Top position
|
|
20
|
-
- `right`: string - Right position
|
|
21
|
-
|
|
22
|
-
**Events**:
|
|
23
|
-
- `click` - Click event
|
|
24
|
-
|
|
25
|
-
**Slots**:
|
|
26
|
-
- `default` - Badge content
|
|
27
|
-
|
|
28
|
-
**Example**:
|
|
29
|
-
```vue
|
|
30
|
-
<VcBadge :content="5" variant="danger" />
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### VcButton
|
|
34
|
-
**Purpose**: Action button with icons
|
|
35
|
-
|
|
36
|
-
**Props**:
|
|
37
|
-
- `icon`: string - Icon name
|
|
38
|
-
- `iconClass`: string - Icon CSS class
|
|
39
|
-
- `iconSize`: string - Icon size
|
|
40
|
-
- `variant`: 'primary' | 'secondary' - Button variant
|
|
41
|
-
- `disabled`: boolean - Disabled state
|
|
42
|
-
- `size`: 'xs' | 'sm' | 'base' - Button size
|
|
43
|
-
- `selected`: boolean - Selected state
|
|
44
|
-
- `text`: string - Button text
|
|
45
|
-
|
|
46
|
-
**Events**:
|
|
47
|
-
- `click` - Click event
|
|
48
|
-
|
|
49
|
-
**Slots**:
|
|
50
|
-
- `default` - Button content
|
|
51
|
-
|
|
52
|
-
**Example**:
|
|
53
|
-
```vue
|
|
54
|
-
<VcButton icon="save" variant="primary" @click="handleSave">Save</VcButton>
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### VcCard
|
|
58
|
-
**Purpose**: Container card with header
|
|
59
|
-
|
|
60
|
-
**Props**:
|
|
61
|
-
- `header`: string - Header text
|
|
62
|
-
- `icon`: string - Header icon
|
|
63
|
-
- `isCollapsable`: boolean - Can collapse
|
|
64
|
-
- `isCollapsed`: boolean - Collapsed state
|
|
65
|
-
- `fill`: boolean - Fill container
|
|
66
|
-
- `variant`: 'default' | 'success' | 'danger' - Card variant
|
|
67
|
-
|
|
68
|
-
**Events**:
|
|
69
|
-
- `header:click` - Header click
|
|
70
|
-
- `state:collapsed` - Collapse state change
|
|
71
|
-
|
|
72
|
-
**Slots**:
|
|
73
|
-
- `default` - Card content
|
|
74
|
-
- `actions` - Header actions
|
|
75
|
-
- `header` - Custom header
|
|
76
|
-
|
|
77
|
-
**Example**:
|
|
78
|
-
```vue
|
|
79
|
-
<VcCard header="Details" icon="info">
|
|
80
|
-
Content here
|
|
81
|
-
</VcCard>
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### VcCol
|
|
85
|
-
**Purpose**: Column in grid layout
|
|
86
|
-
|
|
87
|
-
**Props**:
|
|
88
|
-
- `size`: number - Column size (1-12)
|
|
89
|
-
|
|
90
|
-
**Slots**:
|
|
91
|
-
- `default` - Column content
|
|
92
|
-
|
|
93
|
-
**Example**:
|
|
94
|
-
```vue
|
|
95
|
-
<VcCol :size="6">Left column</VcCol>
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### VcContainer
|
|
99
|
-
**Purpose**: Scrollable container
|
|
100
|
-
|
|
101
|
-
**Props**:
|
|
102
|
-
- `shadow`: boolean - Show shadow
|
|
103
|
-
- `noPadding`: boolean - Remove padding
|
|
104
|
-
- `usePtr`: boolean - Pull to refresh
|
|
105
|
-
|
|
106
|
-
**Events**:
|
|
107
|
-
- `scroll:ptr` - Pull to refresh
|
|
108
|
-
- `scroll` - Scroll event
|
|
109
|
-
|
|
110
|
-
**Methods**:
|
|
111
|
-
- `scrollTop()` - Scroll to top
|
|
112
|
-
|
|
113
|
-
**Example**:
|
|
114
|
-
```vue
|
|
115
|
-
<VcContainer @scroll="handleScroll">
|
|
116
|
-
Content
|
|
117
|
-
</VcContainer>
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### VcHint
|
|
121
|
-
**Purpose**: Helper text
|
|
122
|
-
|
|
123
|
-
**Slots**:
|
|
124
|
-
- `default` - Hint text
|
|
125
|
-
|
|
126
|
-
**Example**:
|
|
127
|
-
```vue
|
|
128
|
-
<VcHint>This field is required</VcHint>
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
### VcIcon
|
|
132
|
-
**Purpose**: Universal icon component
|
|
133
|
-
|
|
134
|
-
**Props**:
|
|
135
|
-
- `icon`: string - Icon name (material-, bi-, lucide-, fas fa-, svg:)
|
|
136
|
-
- `size`: 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' | 'xxxl' - Icon size
|
|
137
|
-
- `variant`: 'warning' | 'danger' | 'success' - Icon variant
|
|
138
|
-
- `customSize`: string - Custom size
|
|
139
|
-
- `useContainer`: boolean - Use container
|
|
140
|
-
|
|
141
|
-
**Example**:
|
|
142
|
-
```vue
|
|
143
|
-
<VcIcon icon="material-save" size="m" />
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
### VcImage
|
|
147
|
-
**Purpose**: Image display
|
|
148
|
-
|
|
149
|
-
**Props**:
|
|
150
|
-
- `src`: string - Image source
|
|
151
|
-
- `alt`: string - Alt text
|
|
152
|
-
- `size`: string - Image size
|
|
153
|
-
- `aspectRatio`: string - Aspect ratio
|
|
154
|
-
- `bordered`: boolean - Show border
|
|
155
|
-
- `rounded`: boolean - Rounded corners
|
|
156
|
-
|
|
157
|
-
**Example**:
|
|
158
|
-
```vue
|
|
159
|
-
<VcImage src="/path/to/image.jpg" alt="Product" />
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
### VcLabel
|
|
163
|
-
**Purpose**: Form label
|
|
164
|
-
|
|
165
|
-
**Props**:
|
|
166
|
-
- `text`: string - Label text
|
|
167
|
-
- `required`: boolean - Required indicator
|
|
168
|
-
|
|
169
|
-
**Slots**:
|
|
170
|
-
- `default` - Label content
|
|
171
|
-
|
|
172
|
-
**Example**:
|
|
173
|
-
```vue
|
|
174
|
-
<VcLabel text="Name" :required="true" />
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### VcLink
|
|
178
|
-
**Purpose**: Navigation link
|
|
179
|
-
|
|
180
|
-
**Props**:
|
|
181
|
-
- `to`: string - Router link
|
|
182
|
-
- `href`: string - External link
|
|
183
|
-
- `target`: string - Link target
|
|
184
|
-
|
|
185
|
-
**Slots**:
|
|
186
|
-
- `default` - Link text
|
|
187
|
-
|
|
188
|
-
**Example**:
|
|
189
|
-
```vue
|
|
190
|
-
<VcLink to="/products">Products</VcLink>
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
### VcLoading
|
|
194
|
-
**Purpose**: Loading indicator
|
|
195
|
-
|
|
196
|
-
**Props**:
|
|
197
|
-
- `active`: boolean - Show loading
|
|
198
|
-
|
|
199
|
-
**Example**:
|
|
200
|
-
```vue
|
|
201
|
-
<VcLoading :active="loading" />
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
### VcProgress
|
|
205
|
-
**Purpose**: Progress bar
|
|
206
|
-
|
|
207
|
-
**Props**:
|
|
208
|
-
- `value`: number - Progress value (0-100)
|
|
209
|
-
- `variant`: string - Progress variant
|
|
210
|
-
|
|
211
|
-
**Example**:
|
|
212
|
-
```vue
|
|
213
|
-
<VcProgress :value="75" />
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
### VcRow
|
|
217
|
-
**Purpose**: Row in grid layout
|
|
218
|
-
|
|
219
|
-
**Slots**:
|
|
220
|
-
- `default` - Row content
|
|
221
|
-
|
|
222
|
-
**Example**:
|
|
223
|
-
```vue
|
|
224
|
-
<VcRow>
|
|
225
|
-
<VcCol :size="6">Content</VcCol>
|
|
226
|
-
</VcRow>
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
### VcSkeleton
|
|
230
|
-
**Purpose**: Loading skeleton
|
|
231
|
-
|
|
232
|
-
**Props**:
|
|
233
|
-
- `variant`: 'text' | 'circle' | 'rect' - Skeleton variant
|
|
234
|
-
- `width`: string - Width
|
|
235
|
-
- `height`: string - Height
|
|
236
|
-
- `count`: number - Number of skeletons
|
|
237
|
-
|
|
238
|
-
**Example**:
|
|
239
|
-
```vue
|
|
240
|
-
<VcSkeleton variant="text" :count="3" />
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
### VcStatus
|
|
244
|
-
**Purpose**: Status indicator
|
|
245
|
-
|
|
246
|
-
**Props**:
|
|
247
|
-
- `variant`: string - Status variant
|
|
248
|
-
- `outline`: boolean - Outline style
|
|
249
|
-
- `extend`: boolean - Extended style
|
|
250
|
-
|
|
251
|
-
**Slots**:
|
|
252
|
-
- `default` - Status text
|
|
253
|
-
|
|
254
|
-
**Example**:
|
|
255
|
-
```vue
|
|
256
|
-
<VcStatus variant="success">Active</VcStatus>
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
### VcStatusIcon
|
|
260
|
-
**Purpose**: Status icon
|
|
261
|
-
|
|
262
|
-
**Props**:
|
|
263
|
-
- `variant`: string - Status variant
|
|
264
|
-
|
|
265
|
-
**Example**:
|
|
266
|
-
```vue
|
|
267
|
-
<VcStatusIcon variant="success" />
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
### VcTooltip
|
|
271
|
-
**Purpose**: Tooltip for help text
|
|
272
|
-
|
|
273
|
-
**Props**:
|
|
274
|
-
- `text`: string - Tooltip text
|
|
275
|
-
- `placement`: string - Tooltip placement
|
|
276
|
-
- `width`: string - Tooltip width
|
|
277
|
-
- `maxWidth`: string - Max width
|
|
278
|
-
|
|
279
|
-
**Slots**:
|
|
280
|
-
- `default` - Trigger element
|
|
281
|
-
|
|
282
|
-
**Example**:
|
|
283
|
-
```vue
|
|
284
|
-
<VcTooltip text="Help text">
|
|
285
|
-
<VcIcon icon="help" />
|
|
286
|
-
</VcTooltip>
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
### VcVideo
|
|
290
|
-
**Purpose**: Video player
|
|
291
|
-
|
|
292
|
-
**Props**:
|
|
293
|
-
- `src`: string - Video source
|
|
294
|
-
- `poster`: string - Poster image
|
|
295
|
-
- `controls`: boolean - Show controls
|
|
296
|
-
- `autoplay`: boolean - Autoplay
|
|
297
|
-
- `loop`: boolean - Loop video
|
|
298
|
-
- `muted`: boolean - Muted
|
|
299
|
-
|
|
300
|
-
**Example**:
|
|
301
|
-
```vue
|
|
302
|
-
<VcVideo src="/video.mp4" :controls="true" />
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
### VcWidget
|
|
306
|
-
**Purpose**: Dashboard widget
|
|
307
|
-
|
|
308
|
-
**Props**:
|
|
309
|
-
- `title`: string - Widget title
|
|
310
|
-
- `icon`: string - Widget icon
|
|
311
|
-
- `value`: string | number - Widget value
|
|
312
|
-
- `loading`: boolean - Loading state
|
|
313
|
-
|
|
314
|
-
**Events**:
|
|
315
|
-
- `click` - Click event
|
|
316
|
-
|
|
317
|
-
**Example**:
|
|
318
|
-
```vue
|
|
319
|
-
<VcWidget title="Orders" icon="shopping_cart" :value="42" />
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
### VcBanner
|
|
323
|
-
**Purpose**: Banner message
|
|
324
|
-
|
|
325
|
-
**Props**:
|
|
326
|
-
- `variant`: string - Banner variant
|
|
327
|
-
- `icon`: string - Banner icon
|
|
328
|
-
- `iconSize`: string - Icon size
|
|
329
|
-
- `iconVariant`: string - Icon variant
|
|
330
|
-
|
|
331
|
-
**Slots**:
|
|
332
|
-
- `title` - Banner title
|
|
333
|
-
- `default` - Banner content
|
|
334
|
-
- `trigger` - Trigger element
|
|
335
|
-
|
|
336
|
-
**Example**:
|
|
337
|
-
```vue
|
|
338
|
-
<VcBanner variant="info">
|
|
339
|
-
<template #title>Information</template>
|
|
340
|
-
Banner content
|
|
341
|
-
</VcBanner>
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
## Molecules (18 components)
|
|
345
|
-
|
|
346
|
-
### VcBreadcrumbs
|
|
347
|
-
**Purpose**: Navigation breadcrumbs
|
|
348
|
-
|
|
349
|
-
**Props**:
|
|
350
|
-
- `items`: Array<{id: string, title: string, icon?: string}> - Breadcrumb items
|
|
351
|
-
|
|
352
|
-
**Events**:
|
|
353
|
-
- `item:click` - Item click event
|
|
354
|
-
|
|
355
|
-
**Example**:
|
|
356
|
-
```vue
|
|
357
|
-
<VcBreadcrumbs :items="breadcrumbItems" />
|
|
358
|
-
```
|
|
359
|
-
|
|
360
|
-
### VcCheckbox
|
|
361
|
-
**Purpose**: Checkbox input
|
|
362
|
-
|
|
363
|
-
**Props**:
|
|
364
|
-
- `modelValue`: boolean - Checked state
|
|
365
|
-
- `label`: string - Checkbox label
|
|
366
|
-
- `disabled`: boolean - Disabled state
|
|
367
|
-
- `errorMessage`: string - Error message
|
|
368
|
-
- `hint`: string - Helper text
|
|
369
|
-
|
|
370
|
-
**Events**:
|
|
371
|
-
- `update:modelValue` - Value change
|
|
372
|
-
|
|
373
|
-
**Example**:
|
|
374
|
-
```vue
|
|
375
|
-
<VcCheckbox v-model="checked" label="I agree" />
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
### VcEditor
|
|
379
|
-
**Purpose**: Rich text editor (TipTap)
|
|
380
|
-
|
|
381
|
-
**Props**:
|
|
382
|
-
- `modelValue`: string - Editor content
|
|
383
|
-
- `placeholder`: string - Placeholder text
|
|
384
|
-
- `editable`: boolean - Editable state
|
|
385
|
-
- `customToolbar`: boolean - Custom toolbar
|
|
386
|
-
|
|
387
|
-
**Events**:
|
|
388
|
-
- `update:modelValue` - Content change
|
|
389
|
-
|
|
390
|
-
**Example**:
|
|
391
|
-
```vue
|
|
392
|
-
<VcEditor v-model="content" placeholder="Enter text" />
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
### VcField
|
|
396
|
-
**Purpose**: Form field wrapper
|
|
397
|
-
|
|
398
|
-
**Props**:
|
|
399
|
-
- `label`: string - Field label
|
|
400
|
-
- `required`: boolean - Required indicator
|
|
401
|
-
- `errorMessage`: string - Error message
|
|
402
|
-
- `hint`: string - Helper text
|
|
403
|
-
- `tooltip`: string - Tooltip text
|
|
404
|
-
|
|
405
|
-
**Slots**:
|
|
406
|
-
- `default` - Field input
|
|
407
|
-
|
|
408
|
-
**Example**:
|
|
409
|
-
```vue
|
|
410
|
-
<VcField label="Name" :required="true">
|
|
411
|
-
<VcInput v-model="name" />
|
|
412
|
-
</VcField>
|
|
413
|
-
```
|
|
414
|
-
|
|
415
|
-
### VcForm
|
|
416
|
-
**Purpose**: Form container (VeeValidate)
|
|
417
|
-
|
|
418
|
-
**Events**:
|
|
419
|
-
- `submit` - Form submit
|
|
420
|
-
|
|
421
|
-
**Slots**:
|
|
422
|
-
- `default` - Form content
|
|
423
|
-
|
|
424
|
-
**Example**:
|
|
425
|
-
```vue
|
|
426
|
-
<VcForm @submit="handleSubmit">
|
|
427
|
-
<!-- form fields -->
|
|
428
|
-
</VcForm>
|
|
429
|
-
```
|
|
430
|
-
|
|
431
|
-
### VcInput
|
|
432
|
-
**Purpose**: Text input
|
|
433
|
-
|
|
434
|
-
**Props**:
|
|
435
|
-
- `modelValue`: string - Input value
|
|
436
|
-
- `label`: string - Input label
|
|
437
|
-
- `placeholder`: string - Placeholder text
|
|
438
|
-
- `type`: string - Input type
|
|
439
|
-
- `disabled`: boolean - Disabled state
|
|
440
|
-
- `required`: boolean - Required indicator
|
|
441
|
-
- `clearable`: boolean - Show clear button
|
|
442
|
-
- `errorMessage`: string - Error message
|
|
443
|
-
- `tooltip`: string - Tooltip text
|
|
444
|
-
- `maxlength`: number - Max length
|
|
445
|
-
- `prefix`: string - Prefix text
|
|
446
|
-
- `suffix`: string - Suffix text
|
|
447
|
-
|
|
448
|
-
**Events**:
|
|
449
|
-
- `update:modelValue` - Value change
|
|
450
|
-
- `blur` - Blur event
|
|
451
|
-
- `focus` - Focus event
|
|
452
|
-
- `clear` - Clear event
|
|
453
|
-
|
|
454
|
-
**Example**:
|
|
455
|
-
```vue
|
|
456
|
-
<VcInput
|
|
457
|
-
v-model="name"
|
|
458
|
-
label="Name"
|
|
459
|
-
placeholder="Enter name"
|
|
460
|
-
:required="true"
|
|
461
|
-
/>
|
|
462
|
-
```
|
|
463
|
-
|
|
464
|
-
### VcInputCurrency
|
|
465
|
-
**Purpose**: Currency input
|
|
466
|
-
|
|
467
|
-
**Props**:
|
|
468
|
-
- `modelValue`: number - Currency value
|
|
469
|
-
- `label`: string - Field label
|
|
470
|
-
- `currency`: string - Currency code
|
|
471
|
-
- `locale`: string - Locale
|
|
472
|
-
- `disabled`: boolean - Disabled state
|
|
473
|
-
- `required`: boolean - Required indicator
|
|
474
|
-
- `errorMessage`: string - Error message
|
|
475
|
-
|
|
476
|
-
**Events**:
|
|
477
|
-
- `update:modelValue` - Value change
|
|
478
|
-
|
|
479
|
-
**Example**:
|
|
480
|
-
```vue
|
|
481
|
-
<VcInputCurrency v-model="price" label="Price" currency="USD" />
|
|
482
|
-
```
|
|
483
|
-
|
|
484
|
-
### VcInputDropdown
|
|
485
|
-
**Purpose**: Input with dropdown
|
|
486
|
-
|
|
487
|
-
**Props**:
|
|
488
|
-
- `modelValue`: string - Input value
|
|
489
|
-
- `option`: any - Selected option
|
|
490
|
-
- `options`: Array<any> - Options list
|
|
491
|
-
- `label`: string - Field label
|
|
492
|
-
- `placeholder`: string - Placeholder text
|
|
493
|
-
- `disabled`: boolean - Disabled state
|
|
494
|
-
|
|
495
|
-
**Events**:
|
|
496
|
-
- `update:modelValue` - Value change
|
|
497
|
-
- `update:option` - Option change
|
|
498
|
-
|
|
499
|
-
**Example**:
|
|
500
|
-
```vue
|
|
501
|
-
<VcInputDropdown
|
|
502
|
-
v-model="search"
|
|
503
|
-
:options="options"
|
|
504
|
-
placeholder="Search..."
|
|
505
|
-
/>
|
|
506
|
-
```
|
|
507
|
-
|
|
508
|
-
### VcMultivalue
|
|
509
|
-
**Purpose**: Multi-value input
|
|
510
|
-
|
|
511
|
-
**Props**:
|
|
512
|
-
- `modelValue`: Array<any> - Selected values
|
|
513
|
-
- `placeholder`: string - Placeholder text
|
|
514
|
-
- `disabled`: boolean - Disabled state
|
|
515
|
-
- `dictionary`: Array<any> - Dictionary values
|
|
516
|
-
|
|
517
|
-
**Events**:
|
|
518
|
-
- `update:modelValue` - Values change
|
|
519
|
-
|
|
520
|
-
**Example**:
|
|
521
|
-
```vue
|
|
522
|
-
<VcMultivalue v-model="tags" placeholder="Add tags" />
|
|
523
|
-
```
|
|
524
|
-
|
|
525
|
-
### VcPagination
|
|
526
|
-
**Purpose**: Pagination controls
|
|
527
|
-
|
|
528
|
-
**Props**:
|
|
529
|
-
- `pages`: number - Total pages
|
|
530
|
-
- `currentPage`: number - Current page
|
|
531
|
-
- `maxVisiblePages`: number - Max visible pages
|
|
532
|
-
|
|
533
|
-
**Events**:
|
|
534
|
-
- `itemClick` - Page click
|
|
535
|
-
|
|
536
|
-
**Example**:
|
|
537
|
-
```vue
|
|
538
|
-
<VcPagination
|
|
539
|
-
:pages="totalPages"
|
|
540
|
-
:current-page="currentPage"
|
|
541
|
-
@item-click="handlePageChange"
|
|
542
|
-
/>
|
|
543
|
-
```
|
|
544
|
-
|
|
545
|
-
### VcRadioButton
|
|
546
|
-
**Purpose**: Radio button
|
|
547
|
-
|
|
548
|
-
**Props**:
|
|
549
|
-
- `modelValue`: any - Selected value
|
|
550
|
-
- `value`: any - Radio value
|
|
551
|
-
- `label`: string - Radio label
|
|
552
|
-
- `name`: string - Radio name
|
|
553
|
-
- `disabled`: boolean - Disabled state
|
|
554
|
-
|
|
555
|
-
**Events**:
|
|
556
|
-
- `update:modelValue` - Value change
|
|
557
|
-
|
|
558
|
-
**Example**:
|
|
559
|
-
```vue
|
|
560
|
-
<VcRadioButton
|
|
561
|
-
v-model="selected"
|
|
562
|
-
value="option1"
|
|
563
|
-
label="Option 1"
|
|
564
|
-
/>
|
|
565
|
-
```
|
|
566
|
-
|
|
567
|
-
### VcRating
|
|
568
|
-
**Purpose**: Star rating
|
|
569
|
-
|
|
570
|
-
**Props**:
|
|
571
|
-
- `modelValue`: number - Rating value
|
|
572
|
-
- `max`: number - Max rating
|
|
573
|
-
- `readonly`: boolean - Readonly state
|
|
574
|
-
- `size`: string - Star size
|
|
575
|
-
|
|
576
|
-
**Events**:
|
|
577
|
-
- `update:modelValue` - Rating change
|
|
578
|
-
|
|
579
|
-
**Example**:
|
|
580
|
-
```vue
|
|
581
|
-
<VcRating v-model="rating" :max="5" />
|
|
582
|
-
```
|
|
583
|
-
|
|
584
|
-
### VcSelect
|
|
585
|
-
**Purpose**: Dropdown select with async search
|
|
586
|
-
|
|
587
|
-
**Props**:
|
|
588
|
-
- `modelValue`: any - Selected value
|
|
589
|
-
- `options`: Array<any> - Options list
|
|
590
|
-
- `label`: string - Field label
|
|
591
|
-
- `placeholder`: string - Placeholder text
|
|
592
|
-
- `multiple`: boolean - Multiple selection
|
|
593
|
-
- `searchable`: boolean - Searchable
|
|
594
|
-
- `clearable`: boolean - Clearable
|
|
595
|
-
- `disabled`: boolean - Disabled state
|
|
596
|
-
- `loading`: boolean - Loading state
|
|
597
|
-
- `errorMessage`: string - Error message
|
|
598
|
-
- `optionValue`: string - Option value field
|
|
599
|
-
- `optionLabel`: string - Option label field
|
|
600
|
-
- `searchMethod`: Function - Search method
|
|
601
|
-
- `tooltip`: string - Tooltip text
|
|
602
|
-
|
|
603
|
-
**Events**:
|
|
604
|
-
- `update:modelValue` - Value change
|
|
605
|
-
- `search` - Search event
|
|
606
|
-
- `open` - Open event
|
|
607
|
-
- `close` - Close event
|
|
608
|
-
|
|
609
|
-
**Example**:
|
|
610
|
-
```vue
|
|
611
|
-
<VcSelect
|
|
612
|
-
v-model="category"
|
|
613
|
-
:options="categories"
|
|
614
|
-
label="Category"
|
|
615
|
-
searchable
|
|
616
|
-
/>
|
|
617
|
-
```
|
|
618
|
-
|
|
619
|
-
### VcSlider
|
|
620
|
-
**Purpose**: Range slider
|
|
621
|
-
|
|
622
|
-
**Props**:
|
|
623
|
-
- `modelValue`: number - Slider value
|
|
624
|
-
- `min`: number - Minimum value
|
|
625
|
-
- `max`: number - Maximum value
|
|
626
|
-
- `step`: number - Step value
|
|
627
|
-
- `disabled`: boolean - Disabled state
|
|
628
|
-
|
|
629
|
-
**Events**:
|
|
630
|
-
- `update:modelValue` - Value change
|
|
631
|
-
|
|
632
|
-
**Example**:
|
|
633
|
-
```vue
|
|
634
|
-
<VcSlider v-model="value" :min="0" :max="100" :step="1" />
|
|
635
|
-
```
|
|
636
|
-
|
|
637
|
-
### VcSwitch
|
|
638
|
-
**Purpose**: Toggle switch
|
|
639
|
-
|
|
640
|
-
**Props**:
|
|
641
|
-
- `modelValue`: boolean - Switch state
|
|
642
|
-
- `label`: string - Switch label
|
|
643
|
-
- `disabled`: boolean - Disabled state
|
|
644
|
-
|
|
645
|
-
**Events**:
|
|
646
|
-
- `update:modelValue` - State change
|
|
647
|
-
|
|
648
|
-
**Example**:
|
|
649
|
-
```vue
|
|
650
|
-
<VcSwitch v-model="enabled" label="Enable feature" />
|
|
651
|
-
```
|
|
652
|
-
|
|
653
|
-
### VcTextarea
|
|
654
|
-
**Purpose**: Multi-line text input
|
|
655
|
-
|
|
656
|
-
**Props**:
|
|
657
|
-
- `modelValue`: string - Textarea value
|
|
658
|
-
- `label`: string - Field label
|
|
659
|
-
- `placeholder`: string - Placeholder text
|
|
660
|
-
- `rows`: number - Number of rows
|
|
661
|
-
- `maxlength`: number - Max length
|
|
662
|
-
- `disabled`: boolean - Disabled state
|
|
663
|
-
- `required`: boolean - Required indicator
|
|
664
|
-
- `errorMessage`: string - Error message
|
|
665
|
-
|
|
666
|
-
**Events**:
|
|
667
|
-
- `update:modelValue` - Value change
|
|
668
|
-
|
|
669
|
-
**Example**:
|
|
670
|
-
```vue
|
|
671
|
-
<VcTextarea
|
|
672
|
-
v-model="description"
|
|
673
|
-
label="Description"
|
|
674
|
-
:rows="5"
|
|
675
|
-
/>
|
|
676
|
-
```
|
|
677
|
-
|
|
678
|
-
### VcToast
|
|
679
|
-
**Purpose**: Toast notification
|
|
680
|
-
|
|
681
|
-
**Props**:
|
|
682
|
-
- `variant`: string - Toast variant
|
|
683
|
-
- `text`: string - Toast text
|
|
684
|
-
- `timeout`: number - Auto-close timeout
|
|
685
|
-
- `closable`: boolean - Show close button
|
|
686
|
-
|
|
687
|
-
**Usage via API**:
|
|
688
|
-
```typescript
|
|
689
|
-
notification.success('Success message');
|
|
690
|
-
notification.error('Error message');
|
|
691
|
-
```
|
|
692
|
-
|
|
693
|
-
## Organisms (7 components)
|
|
694
|
-
|
|
695
|
-
### VcApp
|
|
696
|
-
**Purpose**: Application shell
|
|
697
|
-
|
|
698
|
-
**Props**:
|
|
699
|
-
- `disableMenu`: boolean - Disable menu
|
|
700
|
-
- `disableAppSwitcher`: boolean - Disable app switcher
|
|
701
|
-
- `version`: string - App version
|
|
702
|
-
- `avatar`: string - User avatar
|
|
703
|
-
- `name`: string - User name
|
|
704
|
-
- `role`: string - User role
|
|
705
|
-
- `appsList`: Array<any> - Apps list
|
|
706
|
-
- `isEmbedded`: boolean - Embedded mode
|
|
707
|
-
|
|
708
|
-
**Events**:
|
|
709
|
-
- `menuItemClick` - Menu item click
|
|
710
|
-
- `switchApp` - App switch
|
|
711
|
-
|
|
712
|
-
**Slots**:
|
|
713
|
-
- `navmenu` - Navigation menu
|
|
714
|
-
- `userDropdown` - User dropdown
|
|
715
|
-
- `appSwitcher` - App switcher
|
|
716
|
-
- `toolbar` - Toolbar
|
|
717
|
-
- `default` - Main content
|
|
718
|
-
|
|
719
|
-
### VcBlade
|
|
720
|
-
**Purpose**: Blade container
|
|
721
|
-
|
|
722
|
-
**Props**:
|
|
723
|
-
- `title`: string - Blade title
|
|
724
|
-
- `toolbarItems`: IBladeToolbar[] - Toolbar items
|
|
725
|
-
- `expanded`: boolean - Expansion state (required)
|
|
726
|
-
- `closable`: boolean - Can be closed (required)
|
|
727
|
-
- `param`: string - Entity ID (required)
|
|
728
|
-
- `options`: unknown - Additional data (required)
|
|
729
|
-
- `width`: string - Blade width
|
|
730
|
-
- `modified`: boolean - Modified indicator
|
|
731
|
-
|
|
732
|
-
**Events**:
|
|
733
|
-
- `parent:call` - Communication with parent
|
|
734
|
-
- `close:blade` - Close blade
|
|
735
|
-
- `collapse:blade` - Collapse blade
|
|
736
|
-
- `expand:blade` - Expand blade
|
|
737
|
-
|
|
738
|
-
**Slots**:
|
|
739
|
-
- `default` - Blade content
|
|
740
|
-
- `toolbar` - Custom toolbar
|
|
741
|
-
- `actions` - Action buttons
|
|
742
|
-
|
|
743
|
-
**Example**:
|
|
744
|
-
```vue
|
|
745
|
-
<VcBlade
|
|
746
|
-
:expanded="true"
|
|
747
|
-
:closable="true"
|
|
748
|
-
:param="id"
|
|
749
|
-
:options="undefined"
|
|
750
|
-
title="Details"
|
|
751
|
-
>
|
|
752
|
-
Content
|
|
753
|
-
</VcBlade>
|
|
754
|
-
```
|
|
755
|
-
|
|
756
|
-
### VcDynamicProperty
|
|
757
|
-
**Purpose**: Dynamic properties form
|
|
758
|
-
|
|
759
|
-
**Props**:
|
|
760
|
-
- `properties`: Array<any> - Property definitions
|
|
761
|
-
- `modelValue`: any - Property values
|
|
762
|
-
- `disabled`: boolean - Disabled state
|
|
763
|
-
|
|
764
|
-
**Events**:
|
|
765
|
-
- `update:modelValue` - Values change
|
|
766
|
-
|
|
767
|
-
**Example**:
|
|
768
|
-
```vue
|
|
769
|
-
<VcDynamicProperty
|
|
770
|
-
:properties="properties"
|
|
771
|
-
v-model="values"
|
|
772
|
-
/>
|
|
773
|
-
```
|
|
774
|
-
|
|
775
|
-
### VcGallery
|
|
776
|
-
**Purpose**: Image gallery
|
|
777
|
-
|
|
778
|
-
**Props**:
|
|
779
|
-
- `images`: Array<string> - Image URLs
|
|
780
|
-
- `activeIndex`: number - Active image index
|
|
781
|
-
|
|
782
|
-
**Events**:
|
|
783
|
-
- `update:activeIndex` - Index change
|
|
784
|
-
- `close` - Close gallery
|
|
785
|
-
|
|
786
|
-
**Example**:
|
|
787
|
-
```vue
|
|
788
|
-
<VcGallery :images="images" v-model:active-index="index" />
|
|
789
|
-
```
|
|
790
|
-
|
|
791
|
-
### VcLoginForm
|
|
792
|
-
**Purpose**: Login form
|
|
793
|
-
|
|
794
|
-
**Props**:
|
|
795
|
-
- `logo`: string - Logo URL
|
|
796
|
-
- `title`: string - Form title
|
|
797
|
-
|
|
798
|
-
**Events**:
|
|
799
|
-
- `submit` - Form submit
|
|
800
|
-
|
|
801
|
-
**Example**:
|
|
802
|
-
```vue
|
|
803
|
-
<VcLoginForm @submit="handleLogin" />
|
|
804
|
-
```
|
|
805
|
-
|
|
806
|
-
### VcPopup
|
|
807
|
-
**Purpose**: Modal popup
|
|
808
|
-
|
|
809
|
-
**Props**:
|
|
810
|
-
- `modelValue`: boolean - Show popup
|
|
811
|
-
- `title`: string - Popup title
|
|
812
|
-
- `variant`: string - Popup variant
|
|
813
|
-
- `width`: string - Popup width
|
|
814
|
-
- `maxWidth`: string - Max width
|
|
815
|
-
- `closable`: boolean - Show close button
|
|
816
|
-
|
|
817
|
-
**Events**:
|
|
818
|
-
- `update:modelValue` - Visibility change
|
|
819
|
-
- `close` - Close event
|
|
820
|
-
|
|
821
|
-
**Slots**:
|
|
822
|
-
- `default` - Popup content
|
|
823
|
-
- `actions` - Action buttons
|
|
824
|
-
- `title` - Custom title
|
|
825
|
-
|
|
826
|
-
**Example**:
|
|
827
|
-
```vue
|
|
828
|
-
<VcPopup v-model="showPopup" title="Confirm">
|
|
829
|
-
<template #actions>
|
|
830
|
-
<VcButton @click="confirm">Confirm</VcButton>
|
|
831
|
-
</template>
|
|
832
|
-
</VcPopup>
|
|
833
|
-
```
|
|
834
|
-
|
|
835
|
-
### VcTable
|
|
836
|
-
**Purpose**: Data table with sorting, pagination, selection
|
|
837
|
-
|
|
838
|
-
**Props**:
|
|
839
|
-
- `items`: Array<any> - Table items
|
|
840
|
-
- `columns`: ITableColumn[] - Column definitions
|
|
841
|
-
- `loading`: boolean - Loading state
|
|
842
|
-
- `selectedItemId`: string - Selected item ID
|
|
843
|
-
- `totalCount`: number - Total items count
|
|
844
|
-
- `pages`: number - Total pages
|
|
845
|
-
- `currentPage`: number - Current page
|
|
846
|
-
- `enableItemActions`: boolean - Enable row actions
|
|
847
|
-
- `itemActionBuilder`: Function - Action builder
|
|
848
|
-
- `multiselect`: boolean - Multiple selection
|
|
849
|
-
- `stateKey`: string - State persistence key
|
|
850
|
-
|
|
851
|
-
**Events**:
|
|
852
|
-
- `itemClick` - Item click
|
|
853
|
-
- `selectionChanged` - Selection change
|
|
854
|
-
- `headerClick` - Header click
|
|
855
|
-
- `pageChanged` - Page change
|
|
856
|
-
- `reorder` - Column reorder
|
|
857
|
-
|
|
858
|
-
**Slots**:
|
|
859
|
-
- `header` - Custom header
|
|
860
|
-
- `filters` - Filter row
|
|
861
|
-
- `mobile-item` - Mobile item template
|
|
862
|
-
- `item_[field]` - Custom field cell
|
|
863
|
-
- `header_[field]` - Custom header cell
|
|
864
|
-
- `notfound` - No results template
|
|
865
|
-
- `empty` - Empty state template
|
|
866
|
-
- `footer` - Table footer
|
|
867
|
-
|
|
868
|
-
**Column Definition**:
|
|
869
|
-
```typescript
|
|
870
|
-
interface ITableColumn {
|
|
871
|
-
id: string;
|
|
872
|
-
title: string;
|
|
873
|
-
field: string;
|
|
874
|
-
type?: string;
|
|
875
|
-
sortable?: boolean;
|
|
876
|
-
width?: number | string;
|
|
877
|
-
alwaysVisible?: boolean;
|
|
878
|
-
}
|
|
879
|
-
```
|
|
880
|
-
|
|
881
|
-
**Example**:
|
|
882
|
-
```vue
|
|
883
|
-
<VcTable
|
|
884
|
-
:items="items"
|
|
885
|
-
:columns="columns"
|
|
886
|
-
:loading="loading"
|
|
887
|
-
@item-click="handleItemClick"
|
|
888
|
-
/>
|
|
889
|
-
```
|
|
890
|
-
|
|
891
|
-
## Best Practices
|
|
892
|
-
|
|
893
|
-
1. Always use proper TypeScript types
|
|
894
|
-
2. Handle all events appropriately
|
|
895
|
-
3. Use slots for customization
|
|
896
|
-
4. Follow component naming (Vc prefix)
|
|
897
|
-
5. Use proper validation with VeeValidate
|
|
898
|
-
6. Implement loading states
|
|
899
|
-
7. Handle errors gracefully
|
|
900
|
-
8. Use localization for text
|
|
901
|
-
9. Follow accessibility guidelines
|
|
902
|
-
10. Test all component interactions
|
|
903
|
-
|