@vc-shell/vc-app-skill 2.0.0-alpha.33 → 2.0.0-alpha.34

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 (195) hide show
  1. package/CHANGELOG.md +78 -54
  2. package/README.md +42 -12
  3. package/package.json +4 -4
  4. package/runtime/VERSION +1 -1
  5. package/runtime/agents/api-analyzer.md +31 -16
  6. package/runtime/agents/blade-enhancer.md +15 -9
  7. package/runtime/agents/details-blade-generator.md +47 -31
  8. package/runtime/agents/list-blade-generator.md +21 -37
  9. package/runtime/agents/locales-generator.md +3 -0
  10. package/runtime/agents/migration-agent.md +18 -7
  11. package/runtime/agents/module-analyzer.md +2 -0
  12. package/runtime/agents/module-assembler.md +15 -0
  13. package/runtime/agents/promote-agent.md +15 -4
  14. package/runtime/agents/type-checker.md +11 -0
  15. package/runtime/knowledge/docs/_BUILD_HASH.md +1 -1
  16. package/runtime/knowledge/docs/core/api/platform.docs.md +30 -30
  17. package/runtime/knowledge/docs/core/blade-navigation/blade-nav-composables.docs.md +41 -41
  18. package/runtime/knowledge/docs/core/composables/bladeContext/index.docs.md +12 -10
  19. package/runtime/knowledge/docs/core/composables/useApiClient/useApiClient.docs.md +11 -14
  20. package/runtime/knowledge/docs/core/composables/useAppBarMobileButtons/useAppBarMobileButtons.docs.md +35 -35
  21. package/runtime/knowledge/docs/core/composables/useAppBarWidget/useAppBarWidget.docs.md +35 -35
  22. package/runtime/knowledge/docs/core/composables/useAppInsights/useAppInsights.docs.md +15 -15
  23. package/runtime/knowledge/docs/core/composables/useAssets/useAssets.docs.md +21 -18
  24. package/runtime/knowledge/docs/core/composables/useAssetsManager/useAssetsManager.docs.md +28 -24
  25. package/runtime/knowledge/docs/core/composables/useAsync/useAsync.docs.md +90 -61
  26. package/runtime/knowledge/docs/core/composables/useBeforeUnload/useBeforeUnload.docs.md +19 -18
  27. package/runtime/knowledge/docs/core/composables/useBlade/useBlade.docs.md +89 -68
  28. package/runtime/knowledge/docs/core/composables/useBladeForm/useBladeForm.docs.md +27 -25
  29. package/runtime/knowledge/docs/core/composables/useBladeRegistry/useBladeRegistry.docs.md +15 -15
  30. package/runtime/knowledge/docs/core/composables/useBladeWidgets/index.docs.md +43 -47
  31. package/runtime/knowledge/docs/core/composables/useBreadcrumbs/useBreadcrumbs.docs.md +11 -11
  32. package/runtime/knowledge/docs/core/composables/useConnectionStatus/useConnectionStatus.docs.md +27 -15
  33. package/runtime/knowledge/docs/core/composables/useDashboard/useDashboard.docs.md +30 -30
  34. package/runtime/knowledge/docs/core/composables/useDynamicProperties/useDynamicProperties.docs.md +34 -36
  35. package/runtime/knowledge/docs/core/composables/useErrorHandler/useErrorHandler.docs.md +44 -23
  36. package/runtime/knowledge/docs/core/composables/useFunctions/useFunctions.docs.md +14 -11
  37. package/runtime/knowledge/docs/core/composables/useKeyboardNavigation/useKeyboardNavigation.docs.md +47 -38
  38. package/runtime/knowledge/docs/core/composables/useLanguages/useLanguages.docs.md +37 -28
  39. package/runtime/knowledge/docs/core/composables/useLoading/useLoading.docs.md +23 -17
  40. package/runtime/knowledge/docs/core/composables/useMenuExpanded/index.docs.md +9 -9
  41. package/runtime/knowledge/docs/core/composables/useMenuService/useMenuService.docs.md +42 -42
  42. package/runtime/knowledge/docs/core/composables/useModificationTracker/useModificationTracker.docs.md +22 -12
  43. package/runtime/knowledge/docs/core/composables/useNotifications/useNotifications.docs.md +33 -41
  44. package/runtime/knowledge/docs/core/composables/usePermissions/usePermissions.docs.md +16 -16
  45. package/runtime/knowledge/docs/core/composables/usePlatformLocaleSync/usePlatformLocaleSync.docs.md +28 -0
  46. package/runtime/knowledge/docs/core/composables/usePopup/usePopup.docs.md +32 -24
  47. package/runtime/knowledge/docs/core/composables/useResponsive/useResponsive.docs.md +32 -11
  48. package/runtime/knowledge/docs/core/composables/useSettings/useSettings.docs.md +22 -13
  49. package/runtime/knowledge/docs/core/composables/useSettingsMenu/useSettingsMenu.docs.md +7 -7
  50. package/runtime/knowledge/docs/core/composables/useSidebarState/useSidebarState.docs.md +32 -24
  51. package/runtime/knowledge/docs/core/composables/useSlowNetworkDetection/useSlowNetworkDetection.docs.md +21 -17
  52. package/runtime/knowledge/docs/core/composables/useTheme/useTheme.docs.md +24 -24
  53. package/runtime/knowledge/docs/core/composables/useToolbar/useToolbar.docs.md +28 -31
  54. package/runtime/knowledge/docs/core/composables/useUser/useUser.docs.md +43 -24
  55. package/runtime/knowledge/docs/core/composables/useUserManagement/useUserManagement.docs.md +68 -48
  56. package/runtime/knowledge/docs/core/composables/useWebVitals/useWebVitals.docs.md +19 -19
  57. package/runtime/knowledge/docs/core/composables/useWidgets/useWidgets.docs.md +42 -47
  58. package/runtime/knowledge/docs/core/directives/autofocus/autofocus.docs.md +10 -4
  59. package/runtime/knowledge/docs/core/directives/loading/loading.docs.md +35 -20
  60. package/runtime/knowledge/docs/core/notifications/notifications.docs.md +36 -35
  61. package/runtime/knowledge/docs/core/plugins/ai-agent/ai-agent.docs.md +38 -38
  62. package/runtime/knowledge/docs/core/plugins/extension-points/extension-points.docs.md +79 -62
  63. package/runtime/knowledge/docs/core/plugins/global-error-handler/global-error-handler.docs.md +10 -10
  64. package/runtime/knowledge/docs/core/plugins/i18n/i18n.docs.md +21 -23
  65. package/runtime/knowledge/docs/core/plugins/modularity/modularity.docs.md +91 -83
  66. package/runtime/knowledge/docs/core/plugins/permissions/permissions.docs.md +10 -16
  67. package/runtime/knowledge/docs/core/plugins/signalR/signalR.docs.md +9 -9
  68. package/runtime/knowledge/docs/core/plugins/validation/validation.docs.md +65 -22
  69. package/runtime/knowledge/docs/core/services/services.docs.md +19 -22
  70. package/runtime/knowledge/docs/core/types/types.docs.md +40 -40
  71. package/runtime/knowledge/docs/core/utilities/date/date-utilities.docs.md +27 -27
  72. package/runtime/knowledge/docs/core/utilities/shared-utilities.docs.md +23 -23
  73. package/runtime/knowledge/docs/core/utilities/thumbnail/thumbnail.docs.md +22 -25
  74. package/runtime/knowledge/docs/core/utilities/utilities.docs.md +64 -64
  75. package/runtime/knowledge/docs/injection-keys.docs.md +52 -51
  76. package/runtime/knowledge/docs/modules/assets-manager/assets-manager.docs.md +9 -9
  77. package/runtime/knowledge/docs/shell/_internal/popup/common/popup-common.docs.md +23 -43
  78. package/runtime/knowledge/docs/shell/auth/ChangePasswordPage/change-password-page.docs.md +5 -5
  79. package/runtime/knowledge/docs/shell/auth/ForgotPasswordPage/forgot-password-page.docs.md +5 -5
  80. package/runtime/knowledge/docs/shell/auth/InvitePage/invite-page.docs.md +8 -7
  81. package/runtime/knowledge/docs/shell/auth/LoginPage/login-page.docs.md +7 -7
  82. package/runtime/knowledge/docs/shell/auth/ResetPasswordPage/reset-password-page.docs.md +8 -7
  83. package/runtime/knowledge/docs/shell/auth/sign-in/sign-in.docs.md +29 -13
  84. package/runtime/knowledge/docs/shell/components/change-password/change-password.docs.md +13 -16
  85. package/runtime/knowledge/docs/shell/components/change-password-button/change-password-button.docs.md +1 -7
  86. package/runtime/knowledge/docs/shell/components/error-interceptor/error-interceptor.docs.md +5 -5
  87. package/runtime/knowledge/docs/shell/components/language-selector/language-selector.docs.md +1 -1
  88. package/runtime/knowledge/docs/shell/components/logout-button/logout-button.docs.md +1 -1
  89. package/runtime/knowledge/docs/shell/components/notification-template/notification-template.docs.md +17 -9
  90. package/runtime/knowledge/docs/shell/components/settings-menu/settings-menu.docs.md +11 -17
  91. package/runtime/knowledge/docs/shell/components/settings-menu-item/settings-menu-item.docs.md +34 -65
  92. package/runtime/knowledge/docs/shell/components/sidebar/sidebar.docs.md +16 -26
  93. package/runtime/knowledge/docs/shell/components/theme-selector/theme-selector.docs.md +2 -2
  94. package/runtime/knowledge/docs/shell/components/user-dropdown-button/user-dropdown-button.docs.md +7 -9
  95. package/runtime/knowledge/docs/shell/dashboard/dashboard-charts/dashboard-charts.docs.md +30 -40
  96. package/runtime/knowledge/docs/shell/dashboard/dashboard-widget-card/dashboard-widget-card.docs.md +26 -19
  97. package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/draggable-dashboard.docs.md +15 -12
  98. package/runtime/knowledge/docs/ui/components/atoms/vc-badge/vc-badge.docs.md +15 -26
  99. package/runtime/knowledge/docs/ui/components/atoms/vc-banner/vc-banner.docs.md +21 -19
  100. package/runtime/knowledge/docs/ui/components/atoms/vc-button/vc-button.docs.md +83 -67
  101. package/runtime/knowledge/docs/ui/components/atoms/vc-card/vc-card.docs.md +100 -59
  102. package/runtime/knowledge/docs/ui/components/atoms/vc-col/vc-col.docs.md +28 -11
  103. package/runtime/knowledge/docs/ui/components/atoms/vc-container/vc-container.docs.md +20 -17
  104. package/runtime/knowledge/docs/ui/components/atoms/vc-hint/vc-hint.docs.md +26 -17
  105. package/runtime/knowledge/docs/ui/components/atoms/vc-icon/vc-icon.docs.md +30 -32
  106. package/runtime/knowledge/docs/ui/components/atoms/vc-image/vc-image.docs.md +25 -48
  107. package/runtime/knowledge/docs/ui/components/atoms/vc-label/vc-label.docs.md +29 -24
  108. package/runtime/knowledge/docs/ui/components/atoms/vc-link/vc-link.docs.md +23 -15
  109. package/runtime/knowledge/docs/ui/components/atoms/vc-loading/vc-loading.docs.md +22 -13
  110. package/runtime/knowledge/docs/ui/components/atoms/vc-progress/vc-progress.docs.md +33 -18
  111. package/runtime/knowledge/docs/ui/components/atoms/vc-row/vc-row.docs.md +56 -15
  112. package/runtime/knowledge/docs/ui/components/atoms/vc-scrollable-container/vc-scrollable-container.docs.md +28 -15
  113. package/runtime/knowledge/docs/ui/components/atoms/vc-skeleton/vc-skeleton.docs.md +40 -20
  114. package/runtime/knowledge/docs/ui/components/atoms/vc-status/vc-status.docs.md +25 -14
  115. package/runtime/knowledge/docs/ui/components/atoms/vc-status-icon/vc-status-icon.docs.md +40 -14
  116. package/runtime/knowledge/docs/ui/components/atoms/vc-tooltip/vc-tooltip.docs.md +54 -42
  117. package/runtime/knowledge/docs/ui/components/atoms/vc-video/vc-video.docs.md +17 -17
  118. package/runtime/knowledge/docs/ui/components/atoms/vc-widget/vc-widget.docs.md +21 -21
  119. package/runtime/knowledge/docs/ui/components/molecules/multilanguage-selector/multilanguage-selector.docs.md +23 -10
  120. package/runtime/knowledge/docs/ui/components/molecules/vc-accordion/vc-accordion.docs.md +55 -44
  121. package/runtime/knowledge/docs/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.docs.md +23 -20
  122. package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox/vc-checkbox.docs.md +92 -65
  123. package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.docs.md +22 -36
  124. package/runtime/knowledge/docs/ui/components/molecules/vc-color-input/vc-color-input.docs.md +65 -23
  125. package/runtime/knowledge/docs/ui/components/molecules/vc-date-picker/vc-date-picker.docs.md +52 -73
  126. package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown/vc-dropdown.docs.md +91 -85
  127. package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown-panel/vc-dropdown-panel.docs.md +38 -42
  128. package/runtime/knowledge/docs/ui/components/molecules/vc-editor/vc-editor.docs.md +56 -73
  129. package/runtime/knowledge/docs/ui/components/molecules/vc-field/vc-field.docs.md +61 -27
  130. package/runtime/knowledge/docs/ui/components/molecules/vc-file-upload/vc-file-upload.docs.md +42 -50
  131. package/runtime/knowledge/docs/ui/components/molecules/vc-form/vc-form.docs.md +35 -64
  132. package/runtime/knowledge/docs/ui/components/molecules/vc-image-tile/vc-image-tile.docs.md +38 -41
  133. package/runtime/knowledge/docs/ui/components/molecules/vc-input/vc-input.docs.md +109 -131
  134. package/runtime/knowledge/docs/ui/components/molecules/vc-input-currency/vc-input-currency.docs.md +47 -88
  135. package/runtime/knowledge/docs/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.docs.md +50 -64
  136. package/runtime/knowledge/docs/ui/components/molecules/vc-input-group/vc-input-group.docs.md +29 -24
  137. package/runtime/knowledge/docs/ui/components/molecules/vc-menu/vc-menu.docs.md +32 -28
  138. package/runtime/knowledge/docs/ui/components/molecules/vc-multivalue/vc-multivalue.docs.md +57 -65
  139. package/runtime/knowledge/docs/ui/components/molecules/vc-pagination/vc-pagination.docs.md +28 -26
  140. package/runtime/knowledge/docs/ui/components/molecules/vc-radio-button/vc-radio-button.docs.md +55 -20
  141. package/runtime/knowledge/docs/ui/components/molecules/vc-radio-group/vc-radio-group.docs.md +21 -35
  142. package/runtime/knowledge/docs/ui/components/molecules/vc-rating/vc-rating.docs.md +38 -33
  143. package/runtime/knowledge/docs/ui/components/molecules/vc-select/vc-select.docs.md +72 -83
  144. package/runtime/knowledge/docs/ui/components/molecules/vc-slider/vc-slider.docs.md +21 -16
  145. package/runtime/knowledge/docs/ui/components/molecules/vc-switch/vc-switch.docs.md +55 -64
  146. package/runtime/knowledge/docs/ui/components/molecules/vc-textarea/vc-textarea.docs.md +51 -70
  147. package/runtime/knowledge/docs/ui/components/molecules/vc-toast/vc-toast.docs.md +58 -57
  148. package/runtime/knowledge/docs/ui/components/organisms/vc-app/vc-app.docs.md +49 -26
  149. package/runtime/knowledge/docs/ui/components/organisms/vc-auth-layout/vc-auth-layout.docs.md +82 -28
  150. package/runtime/knowledge/docs/ui/components/organisms/vc-blade/vc-blade.docs.md +90 -75
  151. package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/composables/table-composables.docs.md +99 -48
  152. package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/vc-data-table.docs.md +548 -367
  153. package/runtime/knowledge/docs/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.docs.md +35 -52
  154. package/runtime/knowledge/docs/ui/components/organisms/vc-gallery/vc-gallery.docs.md +33 -62
  155. package/runtime/knowledge/docs/ui/components/organisms/vc-image-upload/vc-image-upload.docs.md +17 -23
  156. package/runtime/knowledge/docs/ui/components/organisms/vc-popup/vc-popup.docs.md +109 -68
  157. package/runtime/knowledge/docs/ui/components/organisms/vc-sidebar/vc-sidebar.docs.md +82 -44
  158. package/runtime/knowledge/docs/ui/composables/ui-composables.docs.md +8 -8
  159. package/runtime/knowledge/docs/ui/composables/useDataTablePagination.docs.md +164 -0
  160. package/runtime/knowledge/docs/ui/composables/useDataTableSort.docs.md +34 -26
  161. package/runtime/knowledge/docs/ui/composables/useTableSelection.docs.md +48 -40
  162. package/runtime/knowledge/docs/ui/composables/useTableSort.docs.md +30 -17
  163. package/runtime/knowledge/docs/ui/types/ui-types.docs.md +40 -29
  164. package/runtime/knowledge/examples/offers-module.md +15 -13
  165. package/runtime/knowledge/examples/team-module.md +82 -119
  166. package/runtime/knowledge/examples/videos-module.md +44 -17
  167. package/runtime/knowledge/index.md +22 -0
  168. package/runtime/knowledge/migration-prompts/blade-form-migration.md +17 -8
  169. package/runtime/knowledge/migration-prompts/blade-props-migration.md +1 -2
  170. package/runtime/knowledge/migration-prompts/datatable-migration.md +801 -0
  171. package/runtime/knowledge/migration-prompts/icon-migration.md +97 -0
  172. package/runtime/knowledge/migration-prompts/manual-migration-audit.md +117 -0
  173. package/runtime/knowledge/migration-prompts/notifications-migration.md +8 -3
  174. package/runtime/knowledge/migration-prompts/nswag-migration.md +25 -29
  175. package/runtime/knowledge/migration-prompts/use-assets-migration.md +164 -0
  176. package/runtime/knowledge/migration-prompts/use-data-table-pagination-migration.md +176 -0
  177. package/runtime/knowledge/migration-prompts/widgets-migration.md +48 -27
  178. package/runtime/knowledge/patterns/assets-management.md +20 -20
  179. package/runtime/knowledge/patterns/blade-navigation.md +7 -14
  180. package/runtime/knowledge/patterns/blade-widget.md +19 -17
  181. package/runtime/knowledge/patterns/child-blade-flow.md +19 -7
  182. package/runtime/knowledge/patterns/composable-details.md +20 -50
  183. package/runtime/knowledge/patterns/composable-list.md +43 -31
  184. package/runtime/knowledge/patterns/dashboard-widget.md +14 -16
  185. package/runtime/knowledge/patterns/datatable-pattern.md +521 -0
  186. package/runtime/knowledge/patterns/details-blade-pattern.md +78 -116
  187. package/runtime/knowledge/patterns/extension-points-usage.md +53 -44
  188. package/runtime/knowledge/patterns/form-validation.md +28 -64
  189. package/runtime/knowledge/patterns/list-blade-pattern.md +33 -21
  190. package/runtime/knowledge/patterns/module-structure.md +7 -1
  191. package/runtime/knowledge/patterns/multilanguage-fields.md +8 -14
  192. package/runtime/knowledge/patterns/notification-template.md +21 -14
  193. package/runtime/knowledge/patterns/signalr-notifications.md +30 -32
  194. package/runtime/knowledge/patterns/toolbar-pattern.md +18 -20
  195. package/runtime/vc-app.md +241 -62
@@ -4,12 +4,12 @@ A bordered container with an optional header, icon, action buttons, and collapsi
4
4
 
5
5
  ## When to Use
6
6
 
7
- | Scenario | Component |
8
- |----------|-----------|
9
- | Grouping form fields or content with a header | **VcCard** |
10
- | Scrollable content wrapper without a header | [VcContainer](../vc-container/) |
7
+ | Scenario | Component |
8
+ | --------------------------------------------- | ---------------------------------------------------------------------------- |
9
+ | Grouping form fields or content with a header | **VcCard** |
10
+ | Scrollable content wrapper without a header | [VcContainer](../vc-container/) |
11
11
  | Collapsible section with rich toggle behavior | [VcAccordion](../../molecules/vc-accordion/) (for multiple exclusive panels) |
12
- | Alert or notification banner | [VcBanner](../vc-banner/) |
12
+ | Alert or notification banner | [VcBanner](../vc-banner/) |
13
13
 
14
14
  Use VcCard to visually separate content sections on a blade -- especially when you need a titled header, action buttons, or collapsible body. **Do not use** VcCard for dismissible alerts or status messages (use `VcBanner`), and avoid nesting VcCard when a simple `VcContainer` with padding would suffice.
15
15
 
@@ -66,11 +66,11 @@ Three variants control the header's background and text color to communicate sem
66
66
  </VcCard>
67
67
  ```
68
68
 
69
- | Variant | Header Background | Header Text | Use Case |
70
- |---------|-------------------|-------------|----------|
71
- | `default` | `var(--secondary-50)` (light gray) | `var(--secondary-950)` (dark) | Standard content grouping |
72
- | `success` | `var(--success-100)` (light green) | `var(--success-600)` (green) | Positive state confirmation |
73
- | `danger` | `var(--danger-100)` (light red) | `var(--danger-600)` (red) | Errors, warnings, destructive content |
69
+ | Variant | Header Background | Header Text | Use Case |
70
+ | --------- | ---------------------------------- | ----------------------------- | ------------------------------------- |
71
+ | `default` | `var(--secondary-50)` (light gray) | `var(--secondary-950)` (dark) | Standard content grouping |
72
+ | `success` | `var(--success-100)` (light green) | `var(--success-600)` (green) | Positive state confirmation |
73
+ | `danger` | `var(--danger-100)` (light red) | `var(--danger-600)` (red) | Errors, warnings, destructive content |
74
74
 
75
75
  ## Collapsible Sections
76
76
 
@@ -193,24 +193,61 @@ When `fill` is `true`, the card body applies `display: flex` to allow child cont
193
193
  ```vue
194
194
  <template>
195
195
  <div class="tw-flex tw-flex-col tw-gap-4">
196
- <VcCard header="Basic Information" icon="lucide-file-text">
196
+ <VcCard
197
+ header="Basic Information"
198
+ icon="lucide-file-text"
199
+ >
197
200
  <div class="tw-p-4 tw-grid tw-grid-cols-2 tw-gap-4">
198
- <VcInput v-model="form.name" label="Product Name" required />
199
- <VcInput v-model="form.sku" label="SKU" required />
200
- <VcInput v-model="form.price" label="Price" type="number" />
201
- <VcSelect v-model="form.category" label="Category" :options="categories" />
201
+ <VcInput
202
+ v-model="form.name"
203
+ label="Product Name"
204
+ required
205
+ />
206
+ <VcInput
207
+ v-model="form.sku"
208
+ label="SKU"
209
+ required
210
+ />
211
+ <VcInput
212
+ v-model="form.price"
213
+ label="Price"
214
+ type="number"
215
+ />
216
+ <VcSelect
217
+ v-model="form.category"
218
+ label="Category"
219
+ :options="categories"
220
+ />
202
221
  </div>
203
222
  </VcCard>
204
223
 
205
- <VcCard header="SEO Settings" icon="lucide-search" is-collapsable is-collapsed>
224
+ <VcCard
225
+ header="SEO Settings"
226
+ icon="lucide-search"
227
+ is-collapsable
228
+ is-collapsed
229
+ >
206
230
  <div class="tw-p-4 tw-grid tw-grid-cols-2 tw-gap-4">
207
- <VcInput v-model="form.metaTitle" label="Meta Title" />
208
- <VcInput v-model="form.metaDescription" label="Meta Description" />
209
- <VcInput v-model="form.slug" label="URL Slug" />
231
+ <VcInput
232
+ v-model="form.metaTitle"
233
+ label="Meta Title"
234
+ />
235
+ <VcInput
236
+ v-model="form.metaDescription"
237
+ label="Meta Description"
238
+ />
239
+ <VcInput
240
+ v-model="form.slug"
241
+ label="URL Slug"
242
+ />
210
243
  </div>
211
244
  </VcCard>
212
245
 
213
- <VcCard header="Inventory" icon="lucide-warehouse" is-collapsable>
246
+ <VcCard
247
+ header="Inventory"
248
+ icon="lucide-warehouse"
249
+ is-collapsable
250
+ >
214
251
  <div class="tw-p-4">
215
252
  <!-- inventory fields -->
216
253
  </div>
@@ -229,8 +266,16 @@ When `fill` is `true`, the card body applies `display: flex` to allow child cont
229
266
  :icon="errors.length > 0 ? 'lucide-alert-triangle' : 'lucide-check-circle'"
230
267
  >
231
268
  <div class="tw-p-4">
232
- <ul v-if="errors.length > 0" class="tw-list-disc tw-pl-4 tw-space-y-1">
233
- <li v-for="error in errors" :key="error">{{ error }}</li>
269
+ <ul
270
+ v-if="errors.length > 0"
271
+ class="tw-list-disc tw-pl-4 tw-space-y-1"
272
+ >
273
+ <li
274
+ v-for="error in errors"
275
+ :key="error"
276
+ >
277
+ {{ error }}
278
+ </li>
234
279
  </ul>
235
280
  <p v-else>All validations passed.</p>
236
281
  </div>
@@ -241,11 +286,7 @@ When `fill` is `true`, the card body applies `display: flex` to allow child cont
241
286
  import { computed } from "vue";
242
287
 
243
288
  const errors = ref<string[]>([]);
244
- const validationHeader = computed(() =>
245
- errors.value.length > 0
246
- ? `${errors.value.length} Validation Error(s)`
247
- : "Validation Passed"
248
- );
289
+ const validationHeader = computed(() => (errors.value.length > 0 ? `${errors.value.length} Validation Error(s)` : "Validation Passed"));
249
290
  </script>
250
291
  ```
251
292
 
@@ -295,47 +336,47 @@ const validationHeader = computed(() =>
295
336
 
296
337
  ## Props
297
338
 
298
- | Prop | Type | Default | Description |
299
- |------|------|---------|-------------|
300
- | `header` | `string` | -- | Title text displayed in the card header |
301
- | `icon` | `string` | -- | Icon identifier shown before the title |
302
- | `variant` | `"default" \| "success" \| "danger"` | `"default"` | Header color variant |
303
- | `isCollapsable` | `boolean` | `false` | Enables collapse/expand on header click |
304
- | `isCollapsed` | `boolean` | `false` | Controls the collapsed state (requires `isCollapsable`) |
305
- | `fill` | `boolean` | `false` | Makes body content fill available vertical space via flex |
339
+ | Prop | Type | Default | Description |
340
+ | --------------- | ------------------------------------ | ----------- | --------------------------------------------------------- |
341
+ | `header` | `string` | -- | Title text displayed in the card header |
342
+ | `icon` | `string` | -- | Icon identifier shown before the title |
343
+ | `variant` | `"default" \| "success" \| "danger"` | `"default"` | Header color variant |
344
+ | `isCollapsable` | `boolean` | `false` | Enables collapse/expand on header click |
345
+ | `isCollapsed` | `boolean` | `false` | Controls the collapsed state (requires `isCollapsable`) |
346
+ | `fill` | `boolean` | `false` | Makes body content fill available vertical space via flex |
306
347
 
307
348
  ## Events
308
349
 
309
- | Event | Payload | Description |
310
- |-------|---------|-------------|
311
- | `header:click` | -- | Emitted when the header is clicked (always, regardless of collapsable state) |
312
- | `state:collapsed` | `boolean` | Emitted when the collapsed state changes (`true` = collapsed) |
350
+ | Event | Payload | Description |
351
+ | ----------------- | --------- | ---------------------------------------------------------------------------- |
352
+ | `header:click` | -- | Emitted when the header is clicked (always, regardless of collapsable state) |
353
+ | `state:collapsed` | `boolean` | Emitted when the collapsed state changes (`true` = collapsed) |
313
354
 
314
355
  ## Slots
315
356
 
316
- | Slot | Description |
317
- |------|-------------|
318
- | `default` | Card body content |
319
- | `header` | Custom header content (replaces the default title + icon) |
320
- | `actions` | Action buttons rendered on the right side of the header |
357
+ | Slot | Description |
358
+ | --------- | --------------------------------------------------------- |
359
+ | `default` | Card body content |
360
+ | `header` | Custom header content (replaces the default title + icon) |
361
+ | `actions` | Action buttons rendered on the right side of the header |
321
362
 
322
363
  ## CSS Custom Properties
323
364
 
324
- | Variable | Default | Description |
325
- |----------|---------|-------------|
326
- | `--card-background` | `var(--additional-50)` | Card body background |
327
- | `--card-border-color` | `var(--neutrals-200)` | Border color |
328
- | `--card-border-radius` | `6px` | Corner radius |
329
- | `--card-header-background` | `var(--secondary-50)` | Default header background |
330
- | `--card-header-color` | `var(--secondary-950)` | Default header text color |
331
- | `--card-header-background-success` | `var(--success-100)` | Success variant header background |
332
- | `--card-header-background-danger` | `var(--danger-100)` | Danger variant header background |
333
- | `--card-header-color-success` | `var(--success-600)` | Success variant header text |
334
- | `--card-header-color-danger` | `var(--danger-600)` | Danger variant header text |
335
- | `--card-header-padding-hor` | `24px` | Header horizontal padding |
336
- | `--card-header-padding-vert` | `17px` | Header vertical padding |
337
- | `--card-hover-shadow` | `0 2px 8px rgba(0,0,0,0.06)` | Hover shadow |
338
- | `--card-focus-ring-color` | `var(--primary-300)` | Focus ring for collapsable headers |
365
+ | Variable | Default | Description |
366
+ | ---------------------------------- | ---------------------------- | ---------------------------------- |
367
+ | `--card-background` | `var(--additional-50)` | Card body background |
368
+ | `--card-border-color` | `var(--neutrals-200)` | Border color |
369
+ | `--card-border-radius` | `6px` | Corner radius |
370
+ | `--card-header-background` | `var(--secondary-50)` | Default header background |
371
+ | `--card-header-color` | `var(--secondary-950)` | Default header text color |
372
+ | `--card-header-background-success` | `var(--success-100)` | Success variant header background |
373
+ | `--card-header-background-danger` | `var(--danger-100)` | Danger variant header background |
374
+ | `--card-header-color-success` | `var(--success-600)` | Success variant header text |
375
+ | `--card-header-color-danger` | `var(--danger-600)` | Danger variant header text |
376
+ | `--card-header-padding-hor` | `24px` | Header horizontal padding |
377
+ | `--card-header-padding-vert` | `17px` | Header vertical padding |
378
+ | `--card-hover-shadow` | `0 2px 8px rgba(0,0,0,0.06)` | Hover shadow |
379
+ | `--card-focus-ring-color` | `var(--primary-300)` | Focus ring for collapsable headers |
339
380
 
340
381
  ## Accessibility
341
382
 
@@ -20,15 +20,15 @@ A flexbox column layout primitive that stacks its children vertically. Designed
20
20
 
21
21
  ## Key Props
22
22
 
23
- | Prop | Type | Default | Description |
24
- |------|------|---------|-------------|
25
- | `size` | `number` | `1` | Flex-grow value controlling how much space the column occupies relative to siblings |
23
+ | Prop | Type | Default | Description |
24
+ | ------ | -------- | ------- | ----------------------------------------------------------------------------------- |
25
+ | `size` | `number` | `1` | Flex-grow value controlling how much space the column occupies relative to siblings |
26
26
 
27
27
  ## CSS Variables
28
28
 
29
- | Variable | Default | Description |
30
- |----------|---------|-------------|
31
- | `--col-gap` | `0` | Vertical gap between child elements |
29
+ | Variable | Default | Description |
30
+ | ----------- | ------- | ----------------------------------- |
31
+ | `--col-gap` | `0` | Vertical gap between child elements |
32
32
 
33
33
  ## Common Patterns
34
34
 
@@ -75,12 +75,29 @@ A common blade layout places metadata in a narrow sidebar column and form fields
75
75
  ```vue
76
76
  <template>
77
77
  <VcRow class="tw-gap-6">
78
- <VcCol :size="3" class="tw-gap-4">
79
- <VcInput label="Name" v-model="form.name" required />
80
- <VcTextarea label="Description" v-model="form.description" />
81
- <VcSelect label="Category" v-model="form.category" :options="categories" />
78
+ <VcCol
79
+ :size="3"
80
+ class="tw-gap-4"
81
+ >
82
+ <VcInput
83
+ label="Name"
84
+ v-model="form.name"
85
+ required
86
+ />
87
+ <VcTextarea
88
+ label="Description"
89
+ v-model="form.description"
90
+ />
91
+ <VcSelect
92
+ label="Category"
93
+ v-model="form.category"
94
+ :options="categories"
95
+ />
82
96
  </VcCol>
83
- <VcCol :size="1" class="tw-gap-4">
97
+ <VcCol
98
+ :size="1"
99
+ class="tw-gap-4"
100
+ >
84
101
  <VcStatusIcon :status="form.isPublished" />
85
102
  <VcHint>Created: {{ form.createdDate }}</VcHint>
86
103
  <VcHint>Modified: {{ form.modifiedDate }}</VcHint>
@@ -19,32 +19,32 @@ A scrollable content wrapper that fills its parent, provides configurable paddin
19
19
 
20
20
  ## Key Props
21
21
 
22
- | Prop | Type | Default | Description |
23
- |------|------|---------|-------------|
24
- | `shadow` | `boolean` | `false` | Shows an inset shadow when content overflows |
25
- | `noPadding` | `boolean` | `false` | Removes the default 16px inner padding |
26
- | `ariaLabel` | `string` | — | When provided, renders as `<section>` with this label instead of `<div>` |
22
+ | Prop | Type | Default | Description |
23
+ | ----------- | --------- | ------- | ------------------------------------------------------------------------ |
24
+ | `shadow` | `boolean` | `false` | Shows an inset shadow when content overflows |
25
+ | `noPadding` | `boolean` | `false` | Removes the default 16px inner padding |
26
+ | `ariaLabel` | `string` | — | When provided, renders as `<section>` with this label instead of `<div>` |
27
27
 
28
28
  ## CSS Variables
29
29
 
30
- | Variable | Default | Description |
31
- |----------|---------|-------------|
32
- | `--container-padding` | `16px` | Inner padding of the scrollable area |
33
- | `--container-bg` | `transparent` | Background color |
34
- | `--container-border-radius` | `0` | Border radius |
35
- | `--container-gap` | `0` | Gap between child elements |
30
+ | Variable | Default | Description |
31
+ | --------------------------- | ------------- | ------------------------------------ |
32
+ | `--container-padding` | `16px` | Inner padding of the scrollable area |
33
+ | `--container-bg` | `transparent` | Background color |
34
+ | `--container-border-radius` | `0` | Border radius |
35
+ | `--container-gap` | `0` | Gap between child elements |
36
36
 
37
37
  ## Exposed Methods
38
38
 
39
- | Method | Description |
40
- |--------|-------------|
39
+ | Method | Description |
40
+ | ------------- | ------------------------------------------------ |
41
41
  | `scrollTop()` | Programmatically scroll the container to the top |
42
- | `component` | Ref to the inner scrollable DOM element |
42
+ | `component` | Ref to the inner scrollable DOM element |
43
43
 
44
44
  ## Events
45
45
 
46
- | Event | Payload | Description |
47
- |-------|---------|-------------|
46
+ | Event | Payload | Description |
47
+ | -------- | ------- | ----------------------------- |
48
48
  | `scroll` | `Event` | Emitted on every scroll event |
49
49
 
50
50
  ## Common Patterns
@@ -88,7 +88,10 @@ function scrollToTop() {
88
88
  </script>
89
89
 
90
90
  <template>
91
- <VcContainer ref="containerRef" shadow>
91
+ <VcContainer
92
+ ref="containerRef"
93
+ shadow
94
+ >
92
95
  <!-- long content -->
93
96
  </VcContainer>
94
97
  <VcButton @click="scrollToTop">Back to Top</VcButton>
@@ -18,19 +18,19 @@ A small text component for displaying helper text, validation messages, or suppl
18
18
 
19
19
  ## Key Props
20
20
 
21
- | Prop | Type | Default | Description |
22
- |------|------|---------|-------------|
23
- | `id` | `string` | -- | Optional id for linking with `aria-describedby` on the associated input |
24
- | `error` | `boolean` | `false` | Shows the hint in error state (danger color) |
21
+ | Prop | Type | Default | Description |
22
+ | ------- | --------- | ------- | ----------------------------------------------------------------------- |
23
+ | `id` | `string` | -- | Optional id for linking with `aria-describedby` on the associated input |
24
+ | `error` | `boolean` | `false` | Shows the hint in error state (danger color) |
25
25
 
26
26
  ## CSS Variables
27
27
 
28
- | Variable | Default | Description |
29
- |----------|---------|-------------|
30
- | `--hint-color` | `var(--neutrals-500)` | Default text color |
31
- | `--hint-error-color` | `var(--danger-500)` | Text color in error state |
32
- | `--hint-font-size` | `12px` | Font size |
33
- | `--hint-line-height` | `1.4` | Line height |
28
+ | Variable | Default | Description |
29
+ | -------------------- | --------------------- | ------------------------- |
30
+ | `--hint-color` | `var(--neutrals-500)` | Default text color |
31
+ | `--hint-error-color` | `var(--danger-500)` | Text color in error state |
32
+ | `--hint-font-size` | `12px` | Font size |
33
+ | `--hint-line-height` | `1.4` | Line height |
34
34
 
35
35
  ## Common Patterns
36
36
 
@@ -82,10 +82,11 @@ const isOverLimit = computed(() => remaining.value < 0);
82
82
  </script>
83
83
 
84
84
  <template>
85
- <VcTextarea label="Description" v-model="description" />
86
- <VcHint :error="isOverLimit">
87
- {{ remaining }} characters remaining
88
- </VcHint>
85
+ <VcTextarea
86
+ label="Description"
87
+ v-model="description"
88
+ />
89
+ <VcHint :error="isOverLimit"> {{ remaining }} characters remaining </VcHint>
89
90
  </template>
90
91
  ```
91
92
 
@@ -95,9 +96,17 @@ Show helper text by default, but swap to an error message when validation fails:
95
96
 
96
97
  ```vue
97
98
  <template>
98
- <VcInput label="Slug" v-model="slug" :error="!!slugError" aria-describedby="slug-hint" />
99
- <VcHint id="slug-hint" :error="!!slugError">
100
- {{ slugError || 'URL-friendly identifier. Use lowercase letters and hyphens.' }}
99
+ <VcInput
100
+ label="Slug"
101
+ v-model="slug"
102
+ :error="!!slugError"
103
+ aria-describedby="slug-hint"
104
+ />
105
+ <VcHint
106
+ id="slug-hint"
107
+ :error="!!slugError"
108
+ >
109
+ {{ slugError || "URL-friendly identifier. Use lowercase letters and hyphens." }}
101
110
  </VcHint>
102
111
  </template>
103
112
  ```
@@ -17,37 +17,37 @@ A unified icon component that renders icons from multiple libraries. Lucide Icon
17
17
 
18
18
  ## Key Props
19
19
 
20
- | Prop | Type | Default | Description |
21
- |------|------|---------|-------------|
22
- | `icon` | `string \| Component` | `"lucide-square"` | Icon identifier or Vue component |
23
- | `size` | `"xs" \| "s" \| "m" \| "l" \| "xl" \| "xxl" \| "xxxl"` | `"m"` | Predefined size |
24
- | `variant` | `"warning" \| "danger" \| "success"` | — | Semantic color variant |
25
- | `customSize` | `number` | — | Custom size in pixels (overrides `size`) |
26
- | `ariaLabel` | `string` | — | Accessible label for meaningful icons |
27
- | `basePath` | `string` | `"/assets/icons"` | Base path for SVG sprite icons |
20
+ | Prop | Type | Default | Description |
21
+ | ------------ | ------------------------------------------------------ | ----------------- | ---------------------------------------- |
22
+ | `icon` | `string \| Component` | `"lucide-square"` | Icon identifier or Vue component |
23
+ | `size` | `"xs" \| "s" \| "m" \| "l" \| "xl" \| "xxl" \| "xxxl"` | `"m"` | Predefined size |
24
+ | `variant` | `"warning" \| "danger" \| "success"` | — | Semantic color variant |
25
+ | `customSize` | `number` | — | Custom size in pixels (overrides `size`) |
26
+ | `ariaLabel` | `string` | — | Accessible label for meaningful icons |
27
+ | `basePath` | `string` | `"/assets/icons"` | Base path for SVG sprite icons |
28
28
 
29
29
  ## Size Reference
30
30
 
31
- | Size | Pixels |
32
- |------|--------|
33
- | `xs` | 12px |
34
- | `s` | 14px |
35
- | `m` | 18px |
36
- | `l` | 20px |
37
- | `xl` | 22px |
38
- | `xxl` | 30px |
39
- | `xxxl` | 64px |
31
+ | Size | Pixels |
32
+ | ------ | ------ |
33
+ | `xs` | 12px |
34
+ | `s` | 14px |
35
+ | `m` | 18px |
36
+ | `l` | 20px |
37
+ | `xl` | 22px |
38
+ | `xxl` | 30px |
39
+ | `xxxl` | 64px |
40
40
 
41
41
  ## Icon Prefix Guide
42
42
 
43
- | Prefix | Library | Status |
44
- |--------|---------|--------|
45
- | `lucide-` | Lucide Icons | Standard (recommended) |
46
- | `fa-` / `fas fa-` | Font Awesome | Deprecated |
47
- | `bi-` | Bootstrap Icons | Deprecated |
48
- | `material-` | Material Symbols | Deprecated |
49
- | `svg:` | SVG sprite file | Supported |
50
- | _(Component)_ | Vue component instance | Supported |
43
+ | Prefix | Library | Status |
44
+ | ----------------- | ---------------------- | ---------------------- |
45
+ | `lucide-` | Lucide Icons | Standard (recommended) |
46
+ | `fa-` / `fas fa-` | Font Awesome | Deprecated |
47
+ | `bi-` | Bootstrap Icons | Deprecated |
48
+ | `material-` | Material Symbols | Deprecated |
49
+ | `svg:` | SVG sprite file | Supported |
50
+ | _(Component)_ | Vue component instance | Supported |
51
51
 
52
52
  ## Common Patterns
53
53
 
@@ -75,12 +75,7 @@ A unified icon component that renders icons from multiple libraries. Lucide Icon
75
75
  ### Meaningful Icon with Accessible Label
76
76
 
77
77
  ```vue
78
- <VcIcon
79
- icon="lucide-triangle-alert"
80
- variant="warning"
81
- size="l"
82
- aria-label="Warning: low stock"
83
- />
78
+ <VcIcon icon="lucide-triangle-alert" variant="warning" size="l" aria-label="Warning: low stock" />
84
79
  ```
85
80
 
86
81
  ### Custom Vue Component as Icon
@@ -92,7 +87,10 @@ import MyCustomIcon from "./MyCustomIcon.vue";
92
87
  </script>
93
88
 
94
89
  <template>
95
- <VcIcon :icon="MyCustomIcon" size="l" />
90
+ <VcIcon
91
+ :icon="MyCustomIcon"
92
+ size="l"
93
+ />
96
94
  </template>
97
95
  ```
98
96
 
@@ -17,30 +17,30 @@ An image display component with predefined sizes, aspect ratio control, and a pl
17
17
 
18
18
  ## Key Props
19
19
 
20
- | Prop | Type | Default | Description |
21
- |------|------|---------|-------------|
22
- | `src` | `string` | — | Image URL; shows a placeholder icon when empty |
23
- | `size` | `"auto" \| "xxs" \| "xs" \| "s" \| "m" \| "l" \| "xl" \| "xxl"` | `"auto"` | Predefined width |
24
- | `aspect` | `"1x1" \| "16x9" \| "4x3" \| "3x2"` | `"1x1"` | Aspect ratio of the container |
25
- | `background` | `"cover" \| "contain" \| "auto"` | `"cover"` | CSS background-size mode |
26
- | `rounded` | `boolean` | `false` | Applies fully rounded corners (circular on 1x1) |
27
- | `bordered` | `boolean` | `false` | Adds a subtle border |
28
- | `clickable` | `boolean` | `false` | Makes the image interactive with cursor and click event |
29
- | `emptyIcon` | `string` | `"lucide-image"` | Icon shown when `src` is empty |
30
- | `alt` | `string` | — | Accessible alt text |
31
- | `thumbnailSize` | `ThumbnailSize` | — | Load a thumbnail variant instead of full-size image. Values: `"sm"`, `"md"`, `"lg"`, `"64x64"`, `"128x128"`, `"168x168"`, `"216x216"`, `"348x348"` |
20
+ | Prop | Type | Default | Description |
21
+ | --------------- | --------------------------------------------------------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
22
+ | `src` | `string` | — | Image URL; shows a placeholder icon when empty |
23
+ | `size` | `"auto" \| "xxs" \| "xs" \| "s" \| "m" \| "l" \| "xl" \| "xxl"` | `"auto"` | Predefined width |
24
+ | `aspect` | `"1x1" \| "16x9" \| "4x3" \| "3x2"` | `"1x1"` | Aspect ratio of the container |
25
+ | `background` | `"cover" \| "contain" \| "auto"` | `"cover"` | CSS background-size mode |
26
+ | `rounded` | `boolean` | `false` | Applies fully rounded corners (circular on 1x1) |
27
+ | `bordered` | `boolean` | `false` | Adds a subtle border |
28
+ | `clickable` | `boolean` | `false` | Makes the image interactive with cursor and click event |
29
+ | `emptyIcon` | `string` | `"lucide-image"` | Icon shown when `src` is empty |
30
+ | `alt` | `string` | — | Accessible alt text |
31
+ | `thumbnailSize` | `ThumbnailSize` | — | Load a thumbnail variant instead of full-size image. Values: `"sm"`, `"md"`, `"lg"`, `"64x64"`, `"128x128"`, `"168x168"`, `"216x216"`, `"348x348"` |
32
32
 
33
33
  ## Size Reference
34
34
 
35
- | Size | Width |
36
- |------|-------|
37
- | `xxs` | 24px |
38
- | `xs` | 32px |
39
- | `s` | 48px |
40
- | `m` | 64px |
41
- | `l` | 96px |
42
- | `xl` | 128px |
43
- | `xxl` | 145px |
35
+ | Size | Width |
36
+ | ------ | -------------- |
37
+ | `xxs` | 24px |
38
+ | `xs` | 32px |
39
+ | `s` | 48px |
40
+ | `m` | 64px |
41
+ | `l` | 96px |
42
+ | `xl` | 128px |
43
+ | `xxl` | 145px |
44
44
  | `auto` | 100% of parent |
45
45
 
46
46
  ## Common Patterns
@@ -48,48 +48,25 @@ An image display component with predefined sizes, aspect ratio control, and a pl
48
48
  ### Product Thumbnail in a List
49
49
 
50
50
  ```vue
51
- <VcImage
52
- :src="product.primaryImage"
53
- size="s"
54
- aspect="1x1"
55
- bordered
56
- :alt="product.name"
57
- />
51
+ <VcImage :src="product.primaryImage" size="s" aspect="1x1" bordered :alt="product.name" />
58
52
  ```
59
53
 
60
54
  ### Profile Avatar
61
55
 
62
56
  ```vue
63
- <VcImage
64
- :src="user.avatarUrl"
65
- size="m"
66
- rounded
67
- :alt="user.displayName"
68
- />
57
+ <VcImage :src="user.avatarUrl" size="m" rounded :alt="user.displayName" />
69
58
  ```
70
59
 
71
60
  ### Widescreen Banner
72
61
 
73
62
  ```vue
74
- <VcImage
75
- :src="category.bannerUrl"
76
- aspect="16x9"
77
- background="cover"
78
- alt="Category banner"
79
- />
63
+ <VcImage :src="category.bannerUrl" aspect="16x9" background="cover" alt="Category banner" />
80
64
  ```
81
65
 
82
66
  ### Clickable Gallery Image
83
67
 
84
68
  ```vue
85
- <VcImage
86
- :src="image.url"
87
- size="l"
88
- bordered
89
- clickable
90
- :alt="image.caption"
91
- @click="openLightbox(image)"
92
- />
69
+ <VcImage :src="image.url" size="l" bordered clickable :alt="image.caption" @click="openLightbox(image)" />
93
70
  ```
94
71
 
95
72
  ### Empty State Placeholder