@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.
- package/CHANGELOG.md +78 -54
- package/README.md +42 -12
- package/package.json +4 -4
- package/runtime/VERSION +1 -1
- package/runtime/agents/api-analyzer.md +31 -16
- package/runtime/agents/blade-enhancer.md +15 -9
- package/runtime/agents/details-blade-generator.md +47 -31
- package/runtime/agents/list-blade-generator.md +21 -37
- package/runtime/agents/locales-generator.md +3 -0
- package/runtime/agents/migration-agent.md +18 -7
- package/runtime/agents/module-analyzer.md +2 -0
- package/runtime/agents/module-assembler.md +15 -0
- package/runtime/agents/promote-agent.md +15 -4
- package/runtime/agents/type-checker.md +11 -0
- package/runtime/knowledge/docs/_BUILD_HASH.md +1 -1
- package/runtime/knowledge/docs/core/api/platform.docs.md +30 -30
- package/runtime/knowledge/docs/core/blade-navigation/blade-nav-composables.docs.md +41 -41
- package/runtime/knowledge/docs/core/composables/bladeContext/index.docs.md +12 -10
- package/runtime/knowledge/docs/core/composables/useApiClient/useApiClient.docs.md +11 -14
- package/runtime/knowledge/docs/core/composables/useAppBarMobileButtons/useAppBarMobileButtons.docs.md +35 -35
- package/runtime/knowledge/docs/core/composables/useAppBarWidget/useAppBarWidget.docs.md +35 -35
- package/runtime/knowledge/docs/core/composables/useAppInsights/useAppInsights.docs.md +15 -15
- package/runtime/knowledge/docs/core/composables/useAssets/useAssets.docs.md +21 -18
- package/runtime/knowledge/docs/core/composables/useAssetsManager/useAssetsManager.docs.md +28 -24
- package/runtime/knowledge/docs/core/composables/useAsync/useAsync.docs.md +90 -61
- package/runtime/knowledge/docs/core/composables/useBeforeUnload/useBeforeUnload.docs.md +19 -18
- package/runtime/knowledge/docs/core/composables/useBlade/useBlade.docs.md +89 -68
- package/runtime/knowledge/docs/core/composables/useBladeForm/useBladeForm.docs.md +27 -25
- package/runtime/knowledge/docs/core/composables/useBladeRegistry/useBladeRegistry.docs.md +15 -15
- package/runtime/knowledge/docs/core/composables/useBladeWidgets/index.docs.md +43 -47
- package/runtime/knowledge/docs/core/composables/useBreadcrumbs/useBreadcrumbs.docs.md +11 -11
- package/runtime/knowledge/docs/core/composables/useConnectionStatus/useConnectionStatus.docs.md +27 -15
- package/runtime/knowledge/docs/core/composables/useDashboard/useDashboard.docs.md +30 -30
- package/runtime/knowledge/docs/core/composables/useDynamicProperties/useDynamicProperties.docs.md +34 -36
- package/runtime/knowledge/docs/core/composables/useErrorHandler/useErrorHandler.docs.md +44 -23
- package/runtime/knowledge/docs/core/composables/useFunctions/useFunctions.docs.md +14 -11
- package/runtime/knowledge/docs/core/composables/useKeyboardNavigation/useKeyboardNavigation.docs.md +47 -38
- package/runtime/knowledge/docs/core/composables/useLanguages/useLanguages.docs.md +37 -28
- package/runtime/knowledge/docs/core/composables/useLoading/useLoading.docs.md +23 -17
- package/runtime/knowledge/docs/core/composables/useMenuExpanded/index.docs.md +9 -9
- package/runtime/knowledge/docs/core/composables/useMenuService/useMenuService.docs.md +42 -42
- package/runtime/knowledge/docs/core/composables/useModificationTracker/useModificationTracker.docs.md +22 -12
- package/runtime/knowledge/docs/core/composables/useNotifications/useNotifications.docs.md +33 -41
- package/runtime/knowledge/docs/core/composables/usePermissions/usePermissions.docs.md +16 -16
- package/runtime/knowledge/docs/core/composables/usePlatformLocaleSync/usePlatformLocaleSync.docs.md +28 -0
- package/runtime/knowledge/docs/core/composables/usePopup/usePopup.docs.md +32 -24
- package/runtime/knowledge/docs/core/composables/useResponsive/useResponsive.docs.md +32 -11
- package/runtime/knowledge/docs/core/composables/useSettings/useSettings.docs.md +22 -13
- package/runtime/knowledge/docs/core/composables/useSettingsMenu/useSettingsMenu.docs.md +7 -7
- package/runtime/knowledge/docs/core/composables/useSidebarState/useSidebarState.docs.md +32 -24
- package/runtime/knowledge/docs/core/composables/useSlowNetworkDetection/useSlowNetworkDetection.docs.md +21 -17
- package/runtime/knowledge/docs/core/composables/useTheme/useTheme.docs.md +24 -24
- package/runtime/knowledge/docs/core/composables/useToolbar/useToolbar.docs.md +28 -31
- package/runtime/knowledge/docs/core/composables/useUser/useUser.docs.md +43 -24
- package/runtime/knowledge/docs/core/composables/useUserManagement/useUserManagement.docs.md +68 -48
- package/runtime/knowledge/docs/core/composables/useWebVitals/useWebVitals.docs.md +19 -19
- package/runtime/knowledge/docs/core/composables/useWidgets/useWidgets.docs.md +42 -47
- package/runtime/knowledge/docs/core/directives/autofocus/autofocus.docs.md +10 -4
- package/runtime/knowledge/docs/core/directives/loading/loading.docs.md +35 -20
- package/runtime/knowledge/docs/core/notifications/notifications.docs.md +36 -35
- package/runtime/knowledge/docs/core/plugins/ai-agent/ai-agent.docs.md +38 -38
- package/runtime/knowledge/docs/core/plugins/extension-points/extension-points.docs.md +79 -62
- package/runtime/knowledge/docs/core/plugins/global-error-handler/global-error-handler.docs.md +10 -10
- package/runtime/knowledge/docs/core/plugins/i18n/i18n.docs.md +21 -23
- package/runtime/knowledge/docs/core/plugins/modularity/modularity.docs.md +91 -83
- package/runtime/knowledge/docs/core/plugins/permissions/permissions.docs.md +10 -16
- package/runtime/knowledge/docs/core/plugins/signalR/signalR.docs.md +9 -9
- package/runtime/knowledge/docs/core/plugins/validation/validation.docs.md +65 -22
- package/runtime/knowledge/docs/core/services/services.docs.md +19 -22
- package/runtime/knowledge/docs/core/types/types.docs.md +40 -40
- package/runtime/knowledge/docs/core/utilities/date/date-utilities.docs.md +27 -27
- package/runtime/knowledge/docs/core/utilities/shared-utilities.docs.md +23 -23
- package/runtime/knowledge/docs/core/utilities/thumbnail/thumbnail.docs.md +22 -25
- package/runtime/knowledge/docs/core/utilities/utilities.docs.md +64 -64
- package/runtime/knowledge/docs/injection-keys.docs.md +52 -51
- package/runtime/knowledge/docs/modules/assets-manager/assets-manager.docs.md +9 -9
- package/runtime/knowledge/docs/shell/_internal/popup/common/popup-common.docs.md +23 -43
- package/runtime/knowledge/docs/shell/auth/ChangePasswordPage/change-password-page.docs.md +5 -5
- package/runtime/knowledge/docs/shell/auth/ForgotPasswordPage/forgot-password-page.docs.md +5 -5
- package/runtime/knowledge/docs/shell/auth/InvitePage/invite-page.docs.md +8 -7
- package/runtime/knowledge/docs/shell/auth/LoginPage/login-page.docs.md +7 -7
- package/runtime/knowledge/docs/shell/auth/ResetPasswordPage/reset-password-page.docs.md +8 -7
- package/runtime/knowledge/docs/shell/auth/sign-in/sign-in.docs.md +29 -13
- package/runtime/knowledge/docs/shell/components/change-password/change-password.docs.md +13 -16
- package/runtime/knowledge/docs/shell/components/change-password-button/change-password-button.docs.md +1 -7
- package/runtime/knowledge/docs/shell/components/error-interceptor/error-interceptor.docs.md +5 -5
- package/runtime/knowledge/docs/shell/components/language-selector/language-selector.docs.md +1 -1
- package/runtime/knowledge/docs/shell/components/logout-button/logout-button.docs.md +1 -1
- package/runtime/knowledge/docs/shell/components/notification-template/notification-template.docs.md +17 -9
- package/runtime/knowledge/docs/shell/components/settings-menu/settings-menu.docs.md +11 -17
- package/runtime/knowledge/docs/shell/components/settings-menu-item/settings-menu-item.docs.md +34 -65
- package/runtime/knowledge/docs/shell/components/sidebar/sidebar.docs.md +16 -26
- package/runtime/knowledge/docs/shell/components/theme-selector/theme-selector.docs.md +2 -2
- package/runtime/knowledge/docs/shell/components/user-dropdown-button/user-dropdown-button.docs.md +7 -9
- package/runtime/knowledge/docs/shell/dashboard/dashboard-charts/dashboard-charts.docs.md +30 -40
- package/runtime/knowledge/docs/shell/dashboard/dashboard-widget-card/dashboard-widget-card.docs.md +26 -19
- package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/draggable-dashboard.docs.md +15 -12
- package/runtime/knowledge/docs/ui/components/atoms/vc-badge/vc-badge.docs.md +15 -26
- package/runtime/knowledge/docs/ui/components/atoms/vc-banner/vc-banner.docs.md +21 -19
- package/runtime/knowledge/docs/ui/components/atoms/vc-button/vc-button.docs.md +83 -67
- package/runtime/knowledge/docs/ui/components/atoms/vc-card/vc-card.docs.md +100 -59
- package/runtime/knowledge/docs/ui/components/atoms/vc-col/vc-col.docs.md +28 -11
- package/runtime/knowledge/docs/ui/components/atoms/vc-container/vc-container.docs.md +20 -17
- package/runtime/knowledge/docs/ui/components/atoms/vc-hint/vc-hint.docs.md +26 -17
- package/runtime/knowledge/docs/ui/components/atoms/vc-icon/vc-icon.docs.md +30 -32
- package/runtime/knowledge/docs/ui/components/atoms/vc-image/vc-image.docs.md +25 -48
- package/runtime/knowledge/docs/ui/components/atoms/vc-label/vc-label.docs.md +29 -24
- package/runtime/knowledge/docs/ui/components/atoms/vc-link/vc-link.docs.md +23 -15
- package/runtime/knowledge/docs/ui/components/atoms/vc-loading/vc-loading.docs.md +22 -13
- package/runtime/knowledge/docs/ui/components/atoms/vc-progress/vc-progress.docs.md +33 -18
- package/runtime/knowledge/docs/ui/components/atoms/vc-row/vc-row.docs.md +56 -15
- package/runtime/knowledge/docs/ui/components/atoms/vc-scrollable-container/vc-scrollable-container.docs.md +28 -15
- package/runtime/knowledge/docs/ui/components/atoms/vc-skeleton/vc-skeleton.docs.md +40 -20
- package/runtime/knowledge/docs/ui/components/atoms/vc-status/vc-status.docs.md +25 -14
- package/runtime/knowledge/docs/ui/components/atoms/vc-status-icon/vc-status-icon.docs.md +40 -14
- package/runtime/knowledge/docs/ui/components/atoms/vc-tooltip/vc-tooltip.docs.md +54 -42
- package/runtime/knowledge/docs/ui/components/atoms/vc-video/vc-video.docs.md +17 -17
- package/runtime/knowledge/docs/ui/components/atoms/vc-widget/vc-widget.docs.md +21 -21
- package/runtime/knowledge/docs/ui/components/molecules/multilanguage-selector/multilanguage-selector.docs.md +23 -10
- package/runtime/knowledge/docs/ui/components/molecules/vc-accordion/vc-accordion.docs.md +55 -44
- package/runtime/knowledge/docs/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.docs.md +23 -20
- package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox/vc-checkbox.docs.md +92 -65
- package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.docs.md +22 -36
- package/runtime/knowledge/docs/ui/components/molecules/vc-color-input/vc-color-input.docs.md +65 -23
- package/runtime/knowledge/docs/ui/components/molecules/vc-date-picker/vc-date-picker.docs.md +52 -73
- package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown/vc-dropdown.docs.md +91 -85
- package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown-panel/vc-dropdown-panel.docs.md +38 -42
- package/runtime/knowledge/docs/ui/components/molecules/vc-editor/vc-editor.docs.md +56 -73
- package/runtime/knowledge/docs/ui/components/molecules/vc-field/vc-field.docs.md +61 -27
- package/runtime/knowledge/docs/ui/components/molecules/vc-file-upload/vc-file-upload.docs.md +42 -50
- package/runtime/knowledge/docs/ui/components/molecules/vc-form/vc-form.docs.md +35 -64
- package/runtime/knowledge/docs/ui/components/molecules/vc-image-tile/vc-image-tile.docs.md +38 -41
- package/runtime/knowledge/docs/ui/components/molecules/vc-input/vc-input.docs.md +109 -131
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-currency/vc-input-currency.docs.md +47 -88
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.docs.md +50 -64
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-group/vc-input-group.docs.md +29 -24
- package/runtime/knowledge/docs/ui/components/molecules/vc-menu/vc-menu.docs.md +32 -28
- package/runtime/knowledge/docs/ui/components/molecules/vc-multivalue/vc-multivalue.docs.md +57 -65
- package/runtime/knowledge/docs/ui/components/molecules/vc-pagination/vc-pagination.docs.md +28 -26
- package/runtime/knowledge/docs/ui/components/molecules/vc-radio-button/vc-radio-button.docs.md +55 -20
- package/runtime/knowledge/docs/ui/components/molecules/vc-radio-group/vc-radio-group.docs.md +21 -35
- package/runtime/knowledge/docs/ui/components/molecules/vc-rating/vc-rating.docs.md +38 -33
- package/runtime/knowledge/docs/ui/components/molecules/vc-select/vc-select.docs.md +72 -83
- package/runtime/knowledge/docs/ui/components/molecules/vc-slider/vc-slider.docs.md +21 -16
- package/runtime/knowledge/docs/ui/components/molecules/vc-switch/vc-switch.docs.md +55 -64
- package/runtime/knowledge/docs/ui/components/molecules/vc-textarea/vc-textarea.docs.md +51 -70
- package/runtime/knowledge/docs/ui/components/molecules/vc-toast/vc-toast.docs.md +58 -57
- package/runtime/knowledge/docs/ui/components/organisms/vc-app/vc-app.docs.md +49 -26
- package/runtime/knowledge/docs/ui/components/organisms/vc-auth-layout/vc-auth-layout.docs.md +82 -28
- package/runtime/knowledge/docs/ui/components/organisms/vc-blade/vc-blade.docs.md +90 -75
- package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/composables/table-composables.docs.md +99 -48
- package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/vc-data-table.docs.md +548 -367
- package/runtime/knowledge/docs/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.docs.md +35 -52
- package/runtime/knowledge/docs/ui/components/organisms/vc-gallery/vc-gallery.docs.md +33 -62
- package/runtime/knowledge/docs/ui/components/organisms/vc-image-upload/vc-image-upload.docs.md +17 -23
- package/runtime/knowledge/docs/ui/components/organisms/vc-popup/vc-popup.docs.md +109 -68
- package/runtime/knowledge/docs/ui/components/organisms/vc-sidebar/vc-sidebar.docs.md +82 -44
- package/runtime/knowledge/docs/ui/composables/ui-composables.docs.md +8 -8
- package/runtime/knowledge/docs/ui/composables/useDataTablePagination.docs.md +164 -0
- package/runtime/knowledge/docs/ui/composables/useDataTableSort.docs.md +34 -26
- package/runtime/knowledge/docs/ui/composables/useTableSelection.docs.md +48 -40
- package/runtime/knowledge/docs/ui/composables/useTableSort.docs.md +30 -17
- package/runtime/knowledge/docs/ui/types/ui-types.docs.md +40 -29
- package/runtime/knowledge/examples/offers-module.md +15 -13
- package/runtime/knowledge/examples/team-module.md +82 -119
- package/runtime/knowledge/examples/videos-module.md +44 -17
- package/runtime/knowledge/index.md +22 -0
- package/runtime/knowledge/migration-prompts/blade-form-migration.md +17 -8
- package/runtime/knowledge/migration-prompts/blade-props-migration.md +1 -2
- package/runtime/knowledge/migration-prompts/datatable-migration.md +801 -0
- package/runtime/knowledge/migration-prompts/icon-migration.md +97 -0
- package/runtime/knowledge/migration-prompts/manual-migration-audit.md +117 -0
- package/runtime/knowledge/migration-prompts/notifications-migration.md +8 -3
- package/runtime/knowledge/migration-prompts/nswag-migration.md +25 -29
- package/runtime/knowledge/migration-prompts/use-assets-migration.md +164 -0
- package/runtime/knowledge/migration-prompts/use-data-table-pagination-migration.md +176 -0
- package/runtime/knowledge/migration-prompts/widgets-migration.md +48 -27
- package/runtime/knowledge/patterns/assets-management.md +20 -20
- package/runtime/knowledge/patterns/blade-navigation.md +7 -14
- package/runtime/knowledge/patterns/blade-widget.md +19 -17
- package/runtime/knowledge/patterns/child-blade-flow.md +19 -7
- package/runtime/knowledge/patterns/composable-details.md +20 -50
- package/runtime/knowledge/patterns/composable-list.md +43 -31
- package/runtime/knowledge/patterns/dashboard-widget.md +14 -16
- package/runtime/knowledge/patterns/datatable-pattern.md +521 -0
- package/runtime/knowledge/patterns/details-blade-pattern.md +78 -116
- package/runtime/knowledge/patterns/extension-points-usage.md +53 -44
- package/runtime/knowledge/patterns/form-validation.md +28 -64
- package/runtime/knowledge/patterns/list-blade-pattern.md +33 -21
- package/runtime/knowledge/patterns/module-structure.md +7 -1
- package/runtime/knowledge/patterns/multilanguage-fields.md +8 -14
- package/runtime/knowledge/patterns/notification-template.md +21 -14
- package/runtime/knowledge/patterns/signalr-notifications.md +30 -32
- package/runtime/knowledge/patterns/toolbar-pattern.md +18 -20
- 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
|
|
8
|
-
|
|
9
|
-
| Grouping form fields or content with a header | **VcCard**
|
|
10
|
-
| Scrollable content wrapper without a header
|
|
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
|
|
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
|
|
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)
|
|
73
|
-
| `danger`
|
|
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
|
|
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
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
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
|
|
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
|
|
208
|
-
|
|
209
|
-
|
|
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
|
|
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
|
|
233
|
-
|
|
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
|
|
299
|
-
|
|
300
|
-
| `header`
|
|
301
|
-
| `icon`
|
|
302
|
-
| `variant`
|
|
303
|
-
| `isCollapsable` | `boolean`
|
|
304
|
-
| `isCollapsed`
|
|
305
|
-
| `fill`
|
|
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
|
|
310
|
-
|
|
311
|
-
| `header:click`
|
|
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
|
|
317
|
-
|
|
318
|
-
| `default` | Card body content
|
|
319
|
-
| `header`
|
|
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
|
|
325
|
-
|
|
326
|
-
| `--card-background`
|
|
327
|
-
| `--card-border-color`
|
|
328
|
-
| `--card-border-radius`
|
|
329
|
-
| `--card-header-background`
|
|
330
|
-
| `--card-header-color`
|
|
331
|
-
| `--card-header-background-success` | `var(--success-100)`
|
|
332
|
-
| `--card-header-background-danger`
|
|
333
|
-
| `--card-header-color-success`
|
|
334
|
-
| `--card-header-color-danger`
|
|
335
|
-
| `--card-header-padding-hor`
|
|
336
|
-
| `--card-header-padding-vert`
|
|
337
|
-
| `--card-hover-shadow`
|
|
338
|
-
| `--card-focus-ring-color`
|
|
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
|
|
24
|
-
|
|
25
|
-
| `size` | `number` | `1`
|
|
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
|
|
30
|
-
|
|
31
|
-
| `--col-gap` | `0`
|
|
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
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
|
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
|
|
23
|
-
|
|
24
|
-
| `shadow`
|
|
25
|
-
| `noPadding` | `boolean` | `false` | Removes the default 16px inner padding
|
|
26
|
-
| `ariaLabel` | `string`
|
|
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
|
|
31
|
-
|
|
32
|
-
| `--container-padding`
|
|
33
|
-
| `--container-bg`
|
|
34
|
-
| `--container-border-radius` | `0`
|
|
35
|
-
| `--container-gap`
|
|
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
|
|
40
|
-
|
|
39
|
+
| Method | Description |
|
|
40
|
+
| ------------- | ------------------------------------------------ |
|
|
41
41
|
| `scrollTop()` | Programmatically scroll the container to the top |
|
|
42
|
-
| `component`
|
|
42
|
+
| `component` | Ref to the inner scrollable DOM element |
|
|
43
43
|
|
|
44
44
|
## Events
|
|
45
45
|
|
|
46
|
-
| Event
|
|
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
|
|
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
|
|
22
|
-
|
|
23
|
-
| `id`
|
|
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
|
|
29
|
-
|
|
30
|
-
| `--hint-color`
|
|
31
|
-
| `--hint-error-color` | `var(--danger-500)`
|
|
32
|
-
| `--hint-font-size`
|
|
33
|
-
| `--hint-line-height` | `1.4`
|
|
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
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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
|
|
99
|
-
|
|
100
|
-
|
|
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
|
|
21
|
-
|
|
22
|
-
| `icon`
|
|
23
|
-
| `size`
|
|
24
|
-
| `variant`
|
|
25
|
-
| `customSize` | `number`
|
|
26
|
-
| `ariaLabel`
|
|
27
|
-
| `basePath`
|
|
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
|
|
32
|
-
|
|
33
|
-
| `xs`
|
|
34
|
-
| `s`
|
|
35
|
-
| `m`
|
|
36
|
-
| `l`
|
|
37
|
-
| `xl`
|
|
38
|
-
| `xxl`
|
|
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
|
|
44
|
-
|
|
45
|
-
| `lucide-`
|
|
46
|
-
| `fa-` / `fas fa-` | Font Awesome
|
|
47
|
-
| `bi-`
|
|
48
|
-
| `material-`
|
|
49
|
-
| `svg:`
|
|
50
|
-
| _(Component)_
|
|
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
|
|
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
|
|
21
|
-
|
|
22
|
-
| `src`
|
|
23
|
-
| `size`
|
|
24
|
-
| `aspect`
|
|
25
|
-
| `background`
|
|
26
|
-
| `rounded`
|
|
27
|
-
| `bordered`
|
|
28
|
-
| `clickable`
|
|
29
|
-
| `emptyIcon`
|
|
30
|
-
| `alt`
|
|
31
|
-
| `thumbnailSize` | `ThumbnailSize`
|
|
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
|
|
36
|
-
|
|
37
|
-
| `xxs`
|
|
38
|
-
| `xs`
|
|
39
|
-
| `s`
|
|
40
|
-
| `m`
|
|
41
|
-
| `l`
|
|
42
|
-
| `xl`
|
|
43
|
-
| `xxl`
|
|
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
|