@vc-shell/create-vc-app 1.1.98-rc.5 → 1.1.99-alpha.0

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.
Files changed (83) hide show
  1. package/README.md +552 -26
  2. package/dist/cli/argv.d.ts +4 -0
  3. package/dist/cli/argv.d.ts.map +1 -0
  4. package/dist/cli/constants.d.ts +4 -0
  5. package/dist/cli/constants.d.ts.map +1 -0
  6. package/dist/cli/errors.d.ts +12 -0
  7. package/dist/cli/errors.d.ts.map +1 -0
  8. package/dist/cli/help.d.ts +3 -0
  9. package/dist/cli/help.d.ts.map +1 -0
  10. package/dist/cli/run.d.ts +2 -0
  11. package/dist/cli/run.d.ts.map +1 -0
  12. package/dist/cli/runtime.d.ts +7 -0
  13. package/dist/cli/runtime.d.ts.map +1 -0
  14. package/dist/cli/types.d.ts +30 -0
  15. package/dist/cli/types.d.ts.map +1 -0
  16. package/dist/cli/utils.d.ts +4 -0
  17. package/dist/cli/utils.d.ts.map +1 -0
  18. package/dist/cli/validation.d.ts +5 -0
  19. package/dist/cli/validation.d.ts.map +1 -0
  20. package/dist/commands/generate-blade.d.ts +16 -0
  21. package/dist/commands/generate-blade.d.ts.map +1 -0
  22. package/dist/index.js +1900 -530
  23. package/dist/templates/base/_package.json +5 -5
  24. package/dist/templates/base/ai-guides/.cursorrules-vc-shell +529 -0
  25. package/dist/templates/base/ai-guides/README.md +360 -0
  26. package/dist/templates/base/ai-guides/guides/AI_GUIDE.md +195 -0
  27. package/dist/templates/base/ai-guides/guides/blade-patterns.md +384 -0
  28. package/dist/templates/base/ai-guides/guides/complete-workflow.md +781 -0
  29. package/dist/templates/base/ai-guides/guides/composables-reference.md +338 -0
  30. package/dist/templates/base/ai-guides/guides/troubleshooting.md +529 -0
  31. package/dist/templates/base/ai-guides/guides/ui-components-reference.md +903 -0
  32. package/dist/templates/base/ai-guides/prompts/adapt-existing-module.md +1026 -0
  33. package/dist/templates/base/ai-guides/prompts/advanced-scenarios.md +852 -0
  34. package/dist/templates/base/ai-guides/prompts/api-client-generation.md +877 -0
  35. package/dist/templates/base/ai-guides/prompts/cli-usage.md +640 -0
  36. package/dist/templates/base/ai-guides/prompts/quick-start-scenarios.md +773 -0
  37. package/dist/templates/base/ai-guides/prompts/simple-modifications.md +987 -0
  38. package/dist/templates/base/src/main.ts +0 -4
  39. package/dist/templates/blades/details/blade.vue +175 -0
  40. package/dist/templates/blades/grid/blade.vue +340 -0
  41. package/dist/templates/composables/details-composable.ts +101 -0
  42. package/dist/templates/composables/grid-composable.ts +244 -0
  43. package/dist/templates/module/components/index.ts +2 -0
  44. package/dist/templates/module/components/widgets/index.ts +2 -0
  45. package/dist/templates/module/composables/index.ts +3 -0
  46. package/dist/templates/module/index.ts +13 -0
  47. package/dist/templates/module/locales/en.json +65 -0
  48. package/dist/templates/module/locales/index.ts +4 -0
  49. package/dist/templates/module/pages/index.ts +3 -0
  50. package/dist/templates/widgets/widget.vue +113 -0
  51. package/dist/utils/form-builder.d.ts +69 -0
  52. package/dist/utils/form-builder.d.ts.map +1 -0
  53. package/dist/utils/format.d.ts +24 -0
  54. package/dist/utils/format.d.ts.map +1 -0
  55. package/dist/utils/naming.d.ts +44 -0
  56. package/dist/utils/naming.d.ts.map +1 -0
  57. package/dist/utils/register-module.d.ts +21 -0
  58. package/dist/utils/register-module.d.ts.map +1 -0
  59. package/dist/workflows/create-app.d.ts +14 -0
  60. package/dist/workflows/create-app.d.ts.map +1 -0
  61. package/package.json +12 -7
  62. package/dist/templates/mocks/sample-data/constants.ts +0 -89
  63. package/dist/templates/mocks/sample-data/index.ts +0 -2
  64. package/dist/templates/mocks/sample-data/methods.ts +0 -65
  65. package/dist/templates/modules/classic-module/composables/index.ts +0 -2
  66. package/dist/templates/modules/classic-module/composables/use{{ModuleNamePascalCase}}Details/index.ts +0 -24
  67. package/dist/templates/modules/classic-module/composables/use{{ModuleNamePascalCase}}List/index.ts +0 -47
  68. package/dist/templates/modules/classic-module/index.ts +0 -8
  69. package/dist/templates/modules/classic-module/locales/en.json +0 -37
  70. package/dist/templates/modules/classic-module/locales/index.ts +0 -2
  71. package/dist/templates/modules/classic-module/pages/details.vue +0 -87
  72. package/dist/templates/modules/classic-module/pages/index.ts +0 -2
  73. package/dist/templates/modules/classic-module/pages/list.vue +0 -257
  74. package/dist/templates/sample/classic-module/composables/index.ts +0 -2
  75. package/dist/templates/sample/classic-module/composables/useDetails/index.ts +0 -54
  76. package/dist/templates/sample/classic-module/composables/useList/index.ts +0 -62
  77. package/dist/templates/sample/classic-module/index.ts +0 -8
  78. package/dist/templates/sample/classic-module/locales/en.json +0 -67
  79. package/dist/templates/sample/classic-module/locales/index.ts +0 -2
  80. package/dist/templates/sample/classic-module/pages/details.vue +0 -238
  81. package/dist/templates/sample/classic-module/pages/index.ts +0 -2
  82. package/dist/templates/sample/classic-module/pages/list.vue +0 -300
  83. package/dist/templates/sample/overrides/main.ts +0 -52
@@ -0,0 +1,903 @@
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
+