@vc-shell/vc-app-skill 2.0.0-alpha.33 → 2.0.0-alpha.33-pr220.455e322
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 +52 -55
- package/README.md +18 -12
- package/package.json +4 -4
- 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/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 +31 -27
- 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 +74 -78
- 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 +10 -10
- 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/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 +24 -15
- 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 +107 -91
- 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 +98 -90
- 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 +12 -18
- 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 +30 -44
- package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/vc-data-table.docs.md +512 -369
- 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
|
@@ -26,11 +26,11 @@ const uploadPercent = ref(45);
|
|
|
26
26
|
|
|
27
27
|
## Key Props
|
|
28
28
|
|
|
29
|
-
| Prop
|
|
30
|
-
|
|
31
|
-
| `value`
|
|
32
|
-
| `variant`
|
|
33
|
-
| `ariaLabel` | `string`
|
|
29
|
+
| Prop | Type | Default | Description |
|
|
30
|
+
| ----------- | ------------------------ | ------------ | --------------------------------------------------------- |
|
|
31
|
+
| `value` | `number` | `0` | Current progress (0--100). Clamped automatically. |
|
|
32
|
+
| `variant` | `"default" \| "striped"` | `"default"` | Visual style; `striped` adds an animated diagonal pattern |
|
|
33
|
+
| `ariaLabel` | `string` | `"Progress"` | Accessible label describing what the bar represents |
|
|
34
34
|
|
|
35
35
|
## Common Patterns
|
|
36
36
|
|
|
@@ -43,7 +43,10 @@ const uploadPercent = ref(45);
|
|
|
43
43
|
<span>Importing catalog...</span>
|
|
44
44
|
<span>{{ progress }}%</span>
|
|
45
45
|
</div>
|
|
46
|
-
<VcProgress
|
|
46
|
+
<VcProgress
|
|
47
|
+
:value="progress"
|
|
48
|
+
:variant="progress === 100 ? 'striped' : 'default'"
|
|
49
|
+
/>
|
|
47
50
|
</div>
|
|
48
51
|
</template>
|
|
49
52
|
```
|
|
@@ -53,7 +56,10 @@ const uploadPercent = ref(45);
|
|
|
53
56
|
```vue
|
|
54
57
|
<template>
|
|
55
58
|
<div class="tw-space-y-4">
|
|
56
|
-
<div
|
|
59
|
+
<div
|
|
60
|
+
v-for="stage in stages"
|
|
61
|
+
:key="stage.label"
|
|
62
|
+
>
|
|
57
63
|
<span class="tw-text-sm">{{ stage.label }}</span>
|
|
58
64
|
<VcProgress :value="stage.value" />
|
|
59
65
|
</div>
|
|
@@ -74,7 +80,10 @@ const uploadPercent = ref(45);
|
|
|
74
80
|
:value="(usedGB / totalGB) * 100"
|
|
75
81
|
aria-label="Storage usage"
|
|
76
82
|
/>
|
|
77
|
-
<VcHint
|
|
83
|
+
<VcHint
|
|
84
|
+
v-if="usedGB / totalGB > 0.9"
|
|
85
|
+
error
|
|
86
|
+
>
|
|
78
87
|
You are running low on storage.
|
|
79
88
|
</VcHint>
|
|
80
89
|
</div>
|
|
@@ -105,11 +114,17 @@ async function handleUpload(files: FileList) {
|
|
|
105
114
|
|
|
106
115
|
<template>
|
|
107
116
|
<VcBlade title="Import Products">
|
|
108
|
-
<VcButton
|
|
109
|
-
|
|
117
|
+
<VcButton
|
|
118
|
+
:disabled="isUploading"
|
|
119
|
+
@click="triggerUpload"
|
|
120
|
+
>
|
|
121
|
+
{{ isUploading ? "Uploading..." : "Select File" }}
|
|
110
122
|
</VcButton>
|
|
111
123
|
|
|
112
|
-
<div
|
|
124
|
+
<div
|
|
125
|
+
v-if="isUploading"
|
|
126
|
+
class="tw-mt-4"
|
|
127
|
+
>
|
|
113
128
|
<VcProgress
|
|
114
129
|
:value="uploadProgress"
|
|
115
130
|
variant="striped"
|
|
@@ -123,13 +138,13 @@ async function handleUpload(files: FileList) {
|
|
|
123
138
|
|
|
124
139
|
## CSS Custom Properties
|
|
125
140
|
|
|
126
|
-
| Variable
|
|
127
|
-
|
|
128
|
-
| `--progressbar-height`
|
|
129
|
-
| `--progressbar-border-radius`
|
|
130
|
-
| `--progressbar-background-color` | `var(--neutrals-200)` | Track background
|
|
131
|
-
| `--progressbar-foreground-color` | `var(--primary-500)`
|
|
132
|
-
| `--progressbar-striped-bg`
|
|
141
|
+
| Variable | Default | Description |
|
|
142
|
+
| -------------------------------- | --------------------- | -------------------------- |
|
|
143
|
+
| `--progressbar-height` | `8px` | Bar height |
|
|
144
|
+
| `--progressbar-border-radius` | `9999px` | Border radius (pill shape) |
|
|
145
|
+
| `--progressbar-background-color` | `var(--neutrals-200)` | Track background |
|
|
146
|
+
| `--progressbar-foreground-color` | `var(--primary-500)` | Fill color |
|
|
147
|
+
| `--progressbar-striped-bg` | gradient | Striped variant background |
|
|
133
148
|
|
|
134
149
|
## Tips
|
|
135
150
|
|
|
@@ -14,9 +14,18 @@ A simple layout primitive that arranges child elements in a horizontal flexbox r
|
|
|
14
14
|
```vue
|
|
15
15
|
<template>
|
|
16
16
|
<VcRow>
|
|
17
|
-
<VcImage
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
<VcImage
|
|
18
|
+
src="/img/a.jpg"
|
|
19
|
+
size="xl"
|
|
20
|
+
/>
|
|
21
|
+
<VcImage
|
|
22
|
+
src="/img/b.jpg"
|
|
23
|
+
size="xl"
|
|
24
|
+
/>
|
|
25
|
+
<VcImage
|
|
26
|
+
src="/img/c.jpg"
|
|
27
|
+
size="xl"
|
|
28
|
+
/>
|
|
20
29
|
</VcRow>
|
|
21
30
|
</template>
|
|
22
31
|
|
|
@@ -38,7 +47,11 @@ The `--row-gap` CSS variable (default `0`) controls spacing. You can also overri
|
|
|
38
47
|
```vue
|
|
39
48
|
<template>
|
|
40
49
|
<VcRow class="tw-gap-4">
|
|
41
|
-
<div
|
|
50
|
+
<div
|
|
51
|
+
v-for="i in 4"
|
|
52
|
+
:key="i"
|
|
53
|
+
class="tw-p-4 tw-bg-gray-100 tw-rounded"
|
|
54
|
+
>
|
|
42
55
|
Item {{ i }}
|
|
43
56
|
</div>
|
|
44
57
|
</VcRow>
|
|
@@ -50,7 +63,11 @@ The `--row-gap` CSS variable (default `0`) controls spacing. You can also overri
|
|
|
50
63
|
```vue
|
|
51
64
|
<template>
|
|
52
65
|
<VcRow class="tw-gap-4">
|
|
53
|
-
<div
|
|
66
|
+
<div
|
|
67
|
+
v-for="card in cards"
|
|
68
|
+
:key="card.id"
|
|
69
|
+
class="tw-w-64 tw-p-4 tw-border tw-rounded tw-shadow-sm"
|
|
70
|
+
>
|
|
54
71
|
<h3 class="tw-font-medium">{{ card.title }}</h3>
|
|
55
72
|
<p class="tw-text-sm tw-text-gray-600">{{ card.description }}</p>
|
|
56
73
|
</div>
|
|
@@ -64,11 +81,20 @@ The `--row-gap` CSS variable (default `0`) controls spacing. You can also overri
|
|
|
64
81
|
<template>
|
|
65
82
|
<VcRow class="tw-gap-6">
|
|
66
83
|
<VcCol :size="1">
|
|
67
|
-
<VcImage
|
|
84
|
+
<VcImage
|
|
85
|
+
:src="product.imageUrl"
|
|
86
|
+
size="xl"
|
|
87
|
+
/>
|
|
68
88
|
</VcCol>
|
|
69
89
|
<VcCol :size="2">
|
|
70
|
-
<VcInput
|
|
71
|
-
|
|
90
|
+
<VcInput
|
|
91
|
+
label="Product Name"
|
|
92
|
+
v-model="product.name"
|
|
93
|
+
/>
|
|
94
|
+
<VcInput
|
|
95
|
+
label="SKU"
|
|
96
|
+
v-model="product.sku"
|
|
97
|
+
/>
|
|
72
98
|
</VcCol>
|
|
73
99
|
</VcRow>
|
|
74
100
|
</template>
|
|
@@ -84,10 +110,25 @@ Use VcRow to place a section label next to a group of fields in a blade detail v
|
|
|
84
110
|
<VcCol :size="1">
|
|
85
111
|
<span class="tw-font-medium tw-text-sm tw-text-gray-700">Pricing</span>
|
|
86
112
|
</VcCol>
|
|
87
|
-
<VcCol
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
113
|
+
<VcCol
|
|
114
|
+
:size="3"
|
|
115
|
+
class="tw-gap-3"
|
|
116
|
+
>
|
|
117
|
+
<VcInput
|
|
118
|
+
label="List Price"
|
|
119
|
+
v-model="form.listPrice"
|
|
120
|
+
type="number"
|
|
121
|
+
/>
|
|
122
|
+
<VcInput
|
|
123
|
+
label="Sale Price"
|
|
124
|
+
v-model="form.salePrice"
|
|
125
|
+
type="number"
|
|
126
|
+
/>
|
|
127
|
+
<VcSelect
|
|
128
|
+
label="Currency"
|
|
129
|
+
v-model="form.currency"
|
|
130
|
+
:options="currencies"
|
|
131
|
+
/>
|
|
91
132
|
</VcCol>
|
|
92
133
|
</VcRow>
|
|
93
134
|
</template>
|
|
@@ -95,9 +136,9 @@ Use VcRow to place a section label next to a group of fields in a blade detail v
|
|
|
95
136
|
|
|
96
137
|
## CSS Custom Properties
|
|
97
138
|
|
|
98
|
-
| Variable
|
|
99
|
-
|
|
100
|
-
| `--row-gap` | `0`
|
|
139
|
+
| Variable | Default | Description |
|
|
140
|
+
| ----------- | ------- | -------------------------- |
|
|
141
|
+
| `--row-gap` | `0` | Gap between child elements |
|
|
101
142
|
|
|
102
143
|
## Tips
|
|
103
144
|
|
|
@@ -14,7 +14,11 @@ A container component that wraps overflowing content with auto-hiding scroll arr
|
|
|
14
14
|
```vue
|
|
15
15
|
<template>
|
|
16
16
|
<VcScrollableContainer style="height: 200px;">
|
|
17
|
-
<div
|
|
17
|
+
<div
|
|
18
|
+
v-for="i in 30"
|
|
19
|
+
:key="i"
|
|
20
|
+
class="tw-px-3 tw-py-2"
|
|
21
|
+
>
|
|
18
22
|
Item {{ i }}
|
|
19
23
|
</div>
|
|
20
24
|
</VcScrollableContainer>
|
|
@@ -27,24 +31,24 @@ import { VcScrollableContainer } from "@vc-shell/framework";
|
|
|
27
31
|
|
|
28
32
|
## Key Props
|
|
29
33
|
|
|
30
|
-
| Prop
|
|
31
|
-
|
|
32
|
-
| `speed` | `number` | `2`
|
|
34
|
+
| Prop | Type | Default | Description |
|
|
35
|
+
| ------- | -------- | ------- | ---------------------------------------------------------------- |
|
|
36
|
+
| `speed` | `number` | `2` | Scroll speed in px/frame. Captured once at mount (not reactive). |
|
|
33
37
|
|
|
34
38
|
## Slots
|
|
35
39
|
|
|
36
|
-
| Slot
|
|
37
|
-
|
|
38
|
-
| `default`
|
|
39
|
-
| `arrow-up`
|
|
40
|
+
| Slot | Description |
|
|
41
|
+
| ------------ | ------------------------------------------------------ |
|
|
42
|
+
| `default` | Content rendered inside the scrollable viewport |
|
|
43
|
+
| `arrow-up` | Custom up-arrow indicator (replaces default chevron) |
|
|
40
44
|
| `arrow-down` | Custom down-arrow indicator (replaces default chevron) |
|
|
41
45
|
|
|
42
46
|
## Exposed
|
|
43
47
|
|
|
44
|
-
| Property
|
|
45
|
-
|
|
46
|
-
| `viewportRef`
|
|
47
|
-
| `updateScrollState` | `() => void`
|
|
48
|
+
| Property | Type | Description |
|
|
49
|
+
| ------------------- | -------------------------- | -------------------------------------------- |
|
|
50
|
+
| `viewportRef` | `Ref<HTMLElement \| null>` | Direct reference to the viewport DOM element |
|
|
51
|
+
| `updateScrollState` | `() => void` | Manually recalculate arrow visibility |
|
|
48
52
|
|
|
49
53
|
## Recipe: Sidebar Filter List in a Blade
|
|
50
54
|
|
|
@@ -52,13 +56,19 @@ import { VcScrollableContainer } from "@vc-shell/framework";
|
|
|
52
56
|
<template>
|
|
53
57
|
<div class="tw-w-64 tw-border-r tw-border-gray-200">
|
|
54
58
|
<h3 class="tw-px-3 tw-py-2 tw-font-semibold tw-text-sm">Filters</h3>
|
|
55
|
-
<VcScrollableContainer
|
|
59
|
+
<VcScrollableContainer
|
|
60
|
+
style="max-height: 320px;"
|
|
61
|
+
:speed="3"
|
|
62
|
+
>
|
|
56
63
|
<label
|
|
57
64
|
v-for="filter in filters"
|
|
58
65
|
:key="filter.id"
|
|
59
66
|
class="tw-flex tw-items-center tw-gap-2 tw-px-3 tw-py-1.5 hover:tw-bg-gray-50 tw-cursor-pointer"
|
|
60
67
|
>
|
|
61
|
-
<input
|
|
68
|
+
<input
|
|
69
|
+
type="checkbox"
|
|
70
|
+
v-model="filter.active"
|
|
71
|
+
/>
|
|
62
72
|
<span class="tw-text-sm">{{ filter.label }}</span>
|
|
63
73
|
</label>
|
|
64
74
|
</VcScrollableContainer>
|
|
@@ -83,7 +93,10 @@ watch(activeCategory, () => {
|
|
|
83
93
|
</script>
|
|
84
94
|
|
|
85
95
|
<template>
|
|
86
|
-
<VcScrollableContainer
|
|
96
|
+
<VcScrollableContainer
|
|
97
|
+
ref="scrollContainer"
|
|
98
|
+
style="height: 300px;"
|
|
99
|
+
>
|
|
87
100
|
<ItemList :category="activeCategory" />
|
|
88
101
|
</VcScrollableContainer>
|
|
89
102
|
</template>
|
|
@@ -22,14 +22,14 @@ import { VcSkeleton } from "@vc-shell/framework";
|
|
|
22
22
|
|
|
23
23
|
## Key Props
|
|
24
24
|
|
|
25
|
-
| Prop
|
|
26
|
-
|
|
27
|
-
| `variant`
|
|
28
|
-
| `rows`
|
|
29
|
-
| `width`
|
|
30
|
-
| `height`
|
|
31
|
-
| `animated`
|
|
32
|
-
| `ariaLabel` | `string`
|
|
25
|
+
| Prop | Type | Default | Description |
|
|
26
|
+
| ----------- | ------------------------------- | -------------- | -------------------------------------------------- |
|
|
27
|
+
| `variant` | `"text" \| "circle" \| "block"` | `"text"` | Shape variant: text rows, circular, or rectangular |
|
|
28
|
+
| `rows` | `number` | `1` | Number of text rows (only for `variant="text"`) |
|
|
29
|
+
| `width` | `string \| number` | -- | Custom width for circle/block (number = px) |
|
|
30
|
+
| `height` | `string \| number` | -- | Custom height for circle/block (number = px) |
|
|
31
|
+
| `animated` | `boolean` | `true` | Enables pulse animation |
|
|
32
|
+
| `ariaLabel` | `string` | `"Loading..."` | Screen reader announcement |
|
|
33
33
|
|
|
34
34
|
## Common Patterns
|
|
35
35
|
|
|
@@ -52,9 +52,17 @@ The last row automatically renders at 60% width for a natural paragraph feel.
|
|
|
52
52
|
```vue
|
|
53
53
|
<template>
|
|
54
54
|
<div class="tw-border tw-rounded-lg tw-overflow-hidden tw-shadow-sm">
|
|
55
|
-
<VcSkeleton
|
|
55
|
+
<VcSkeleton
|
|
56
|
+
variant="block"
|
|
57
|
+
width="100%"
|
|
58
|
+
height="200px"
|
|
59
|
+
/>
|
|
56
60
|
<div class="tw-p-4">
|
|
57
|
-
<VcSkeleton
|
|
61
|
+
<VcSkeleton
|
|
62
|
+
variant="block"
|
|
63
|
+
width="60%"
|
|
64
|
+
height="20px"
|
|
65
|
+
/>
|
|
58
66
|
<div class="tw-mt-3">
|
|
59
67
|
<VcSkeleton :rows="3" />
|
|
60
68
|
</div>
|
|
@@ -68,10 +76,22 @@ The last row automatically renders at 60% width for a natural paragraph feel.
|
|
|
68
76
|
```vue
|
|
69
77
|
<template>
|
|
70
78
|
<div class="tw-space-y-4">
|
|
71
|
-
<div
|
|
72
|
-
|
|
79
|
+
<div
|
|
80
|
+
v-for="i in 3"
|
|
81
|
+
:key="i"
|
|
82
|
+
class="tw-flex tw-gap-4 tw-items-center"
|
|
83
|
+
>
|
|
84
|
+
<VcSkeleton
|
|
85
|
+
variant="circle"
|
|
86
|
+
:width="40"
|
|
87
|
+
:height="40"
|
|
88
|
+
/>
|
|
73
89
|
<div class="tw-flex-1">
|
|
74
|
-
<VcSkeleton
|
|
90
|
+
<VcSkeleton
|
|
91
|
+
variant="block"
|
|
92
|
+
width="40%"
|
|
93
|
+
height="14px"
|
|
94
|
+
/>
|
|
75
95
|
<div class="tw-mt-2">
|
|
76
96
|
<VcSkeleton :rows="1" />
|
|
77
97
|
</div>
|
|
@@ -83,13 +103,13 @@ The last row automatically renders at 60% width for a natural paragraph feel.
|
|
|
83
103
|
|
|
84
104
|
## CSS Custom Properties
|
|
85
105
|
|
|
86
|
-
| Variable
|
|
87
|
-
|
|
88
|
-
| `--vc-skeleton-bg`
|
|
89
|
-
| `--vc-skeleton-highlight`
|
|
90
|
-
| `--vc-skeleton-border-radius` | `6px`
|
|
91
|
-
| `--vc-skeleton-row-height`
|
|
92
|
-
| `--vc-skeleton-row-gap`
|
|
106
|
+
| Variable | Default | Description |
|
|
107
|
+
| ----------------------------- | --------------------- | -------------------------------------- |
|
|
108
|
+
| `--vc-skeleton-bg` | `var(--neutrals-200)` | Shape background color |
|
|
109
|
+
| `--vc-skeleton-highlight` | `var(--neutrals-300)` | Highlight color (for future shimmer) |
|
|
110
|
+
| `--vc-skeleton-border-radius` | `6px` | Corner radius for text rows and blocks |
|
|
111
|
+
| `--vc-skeleton-row-height` | `16px` | Height of each text row |
|
|
112
|
+
| `--vc-skeleton-row-gap` | `12px` | Vertical gap between text rows |
|
|
93
113
|
|
|
94
114
|
## Accessibility
|
|
95
115
|
|
|
@@ -23,11 +23,11 @@ import { VcStatus } from "@vc-shell/framework";
|
|
|
23
23
|
|
|
24
24
|
## Key Props
|
|
25
25
|
|
|
26
|
-
| Prop
|
|
27
|
-
|
|
28
|
-
| `variant` | `"info" \| "warning" \| "danger" \| "success" \| "light-danger" \| "info-dark" \| "primary"` | `"info"` | Semantic color theme
|
|
29
|
-
| `extend`
|
|
30
|
-
| `dot`
|
|
26
|
+
| Prop | Type | Default | Description |
|
|
27
|
+
| --------- | -------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------- |
|
|
28
|
+
| `variant` | `"info" \| "warning" \| "danger" \| "success" \| "light-danger" \| "info-dark" \| "primary"` | `"info"` | Semantic color theme |
|
|
29
|
+
| `extend` | `boolean` | -- | Extended layout with larger padding, rounded corners, and colored background |
|
|
30
|
+
| `dot` | `boolean` | `false` | Renders as a small colored circle without text |
|
|
31
31
|
|
|
32
32
|
## Common Patterns
|
|
33
33
|
|
|
@@ -60,7 +60,10 @@ Use the `dot` prop for compact status representation alongside text labels.
|
|
|
60
60
|
```vue
|
|
61
61
|
<template>
|
|
62
62
|
<div class="tw-flex tw-items-center tw-gap-2">
|
|
63
|
-
<VcStatus
|
|
63
|
+
<VcStatus
|
|
64
|
+
variant="success"
|
|
65
|
+
dot
|
|
66
|
+
/>
|
|
64
67
|
<span>Online</span>
|
|
65
68
|
</div>
|
|
66
69
|
</template>
|
|
@@ -72,9 +75,17 @@ The `extend` prop creates a banner-like status with a colored background, suitab
|
|
|
72
75
|
|
|
73
76
|
```vue
|
|
74
77
|
<template>
|
|
75
|
-
<VcStatus
|
|
78
|
+
<VcStatus
|
|
79
|
+
variant="danger"
|
|
80
|
+
extend
|
|
81
|
+
>
|
|
76
82
|
<div class="tw-flex tw-items-center">
|
|
77
|
-
<VcIcon
|
|
83
|
+
<VcIcon
|
|
84
|
+
icon="lucide-triangle-alert"
|
|
85
|
+
size="xl"
|
|
86
|
+
variant="danger"
|
|
87
|
+
class="tw-mr-3"
|
|
88
|
+
/>
|
|
78
89
|
<div>
|
|
79
90
|
<h3 class="tw-font-bold">Payment Failed</h3>
|
|
80
91
|
<p>The last transaction was declined. Please update your payment method.</p>
|
|
@@ -88,12 +99,12 @@ The `extend` prop creates a banner-like status with a colored background, suitab
|
|
|
88
99
|
|
|
89
100
|
Each variant has its own set of CSS variables following the pattern `--status-{variant}-color`, `--status-{variant}-main-color`, `--status-{variant}-bg-color`. Key shared variables:
|
|
90
101
|
|
|
91
|
-
| Variable
|
|
92
|
-
|
|
93
|
-
| `--status-border-radius`
|
|
94
|
-
| `--status-border-radius-extended` | `6px`
|
|
95
|
-
| `--status-dot-size`
|
|
96
|
-
| `--status-text-color`
|
|
102
|
+
| Variable | Default | Description |
|
|
103
|
+
| --------------------------------- | --------------------- | --------------------------------- |
|
|
104
|
+
| `--status-border-radius` | `9999px` | Pill shape for standard mode |
|
|
105
|
+
| `--status-border-radius-extended` | `6px` | Rounded corners for extended mode |
|
|
106
|
+
| `--status-dot-size` | `10px` | Diameter of the dot indicator |
|
|
107
|
+
| `--status-text-color` | `var(--neutrals-700)` | Default label text color |
|
|
97
108
|
|
|
98
109
|
## Accessibility
|
|
99
110
|
|
|
@@ -23,8 +23,8 @@ import { VcStatusIcon } from "@vc-shell/framework";
|
|
|
23
23
|
|
|
24
24
|
## Key Props
|
|
25
25
|
|
|
26
|
-
| Prop
|
|
27
|
-
|
|
26
|
+
| Prop | Type | Default | Description |
|
|
27
|
+
| -------- | --------- | ----------- | --------------------------------------------------------------------- |
|
|
28
28
|
| `status` | `boolean` | `undefined` | `true` shows a green check circle; `false` shows a muted cross circle |
|
|
29
29
|
|
|
30
30
|
## Common Patterns
|
|
@@ -33,7 +33,11 @@ import { VcStatusIcon } from "@vc-shell/framework";
|
|
|
33
33
|
|
|
34
34
|
```vue
|
|
35
35
|
<template>
|
|
36
|
-
<VcColumn
|
|
36
|
+
<VcColumn
|
|
37
|
+
id="isActive"
|
|
38
|
+
header="Active"
|
|
39
|
+
:width="80"
|
|
40
|
+
>
|
|
37
41
|
<template #default="{ row }">
|
|
38
42
|
<VcStatusIcon :status="row.isActive" />
|
|
39
43
|
</template>
|
|
@@ -45,18 +49,33 @@ import { VcStatusIcon } from "@vc-shell/framework";
|
|
|
45
49
|
|
|
46
50
|
```vue
|
|
47
51
|
<template>
|
|
48
|
-
<VcDataTable
|
|
49
|
-
|
|
52
|
+
<VcDataTable
|
|
53
|
+
:columns="columns"
|
|
54
|
+
:items="users"
|
|
55
|
+
>
|
|
56
|
+
<VcColumn
|
|
57
|
+
id="emailVerified"
|
|
58
|
+
header="Email"
|
|
59
|
+
:width="70"
|
|
60
|
+
>
|
|
50
61
|
<template #default="{ row }">
|
|
51
62
|
<VcStatusIcon :status="row.emailVerified" />
|
|
52
63
|
</template>
|
|
53
64
|
</VcColumn>
|
|
54
|
-
<VcColumn
|
|
65
|
+
<VcColumn
|
|
66
|
+
id="isActive"
|
|
67
|
+
header="Active"
|
|
68
|
+
:width="70"
|
|
69
|
+
>
|
|
55
70
|
<template #default="{ row }">
|
|
56
71
|
<VcStatusIcon :status="row.isActive" />
|
|
57
72
|
</template>
|
|
58
73
|
</VcColumn>
|
|
59
|
-
<VcColumn
|
|
74
|
+
<VcColumn
|
|
75
|
+
id="hasAvatar"
|
|
76
|
+
header="Avatar"
|
|
77
|
+
:width="70"
|
|
78
|
+
>
|
|
60
79
|
<template #default="{ row }">
|
|
61
80
|
<VcStatusIcon :status="!!row.avatarUrl" />
|
|
62
81
|
</template>
|
|
@@ -70,10 +89,14 @@ import { VcStatusIcon } from "@vc-shell/framework";
|
|
|
70
89
|
```vue
|
|
71
90
|
<template>
|
|
72
91
|
<div class="tw-space-y-2">
|
|
73
|
-
<div
|
|
92
|
+
<div
|
|
93
|
+
v-for="service in services"
|
|
94
|
+
:key="service.name"
|
|
95
|
+
class="tw-flex tw-justify-between tw-items-center tw-py-2 tw-border-b"
|
|
96
|
+
>
|
|
74
97
|
<span>{{ service.name }}</span>
|
|
75
98
|
<div class="tw-flex tw-items-center tw-gap-2">
|
|
76
|
-
<span class="tw-text-sm">{{ service.status ?
|
|
99
|
+
<span class="tw-text-sm">{{ service.status ? "Online" : "Offline" }}</span>
|
|
77
100
|
<VcStatusIcon :status="service.status" />
|
|
78
101
|
</div>
|
|
79
102
|
</div>
|
|
@@ -89,8 +112,11 @@ VcStatusIcon is intentionally minimal. If you need a text label next to the icon
|
|
|
89
112
|
<template>
|
|
90
113
|
<div class="tw-flex tw-items-center tw-gap-2">
|
|
91
114
|
<VcStatusIcon :status="order.isPaid" />
|
|
92
|
-
<span
|
|
93
|
-
|
|
115
|
+
<span
|
|
116
|
+
class="tw-text-sm"
|
|
117
|
+
:class="order.isPaid ? 'tw-text-green-600' : 'tw-text-gray-400'"
|
|
118
|
+
>
|
|
119
|
+
{{ order.isPaid ? "Paid" : "Unpaid" }}
|
|
94
120
|
</span>
|
|
95
121
|
</div>
|
|
96
122
|
</template>
|
|
@@ -98,9 +124,9 @@ VcStatusIcon is intentionally minimal. If you need a text label next to the icon
|
|
|
98
124
|
|
|
99
125
|
## CSS Custom Properties
|
|
100
126
|
|
|
101
|
-
| Variable
|
|
102
|
-
|
|
103
|
-
| `--status-icon-success-color`
|
|
127
|
+
| Variable | Default | Description |
|
|
128
|
+
| ------------------------------ | --------------------- | ----------------------- |
|
|
129
|
+
| `--status-icon-success-color` | `var(--success-500)` | Color of the check icon |
|
|
104
130
|
| `--status-icon-inactive-color` | `var(--neutrals-300)` | Color of the cross icon |
|
|
105
131
|
|
|
106
132
|
## Tips
|