@vc-shell/vc-app-skill 2.0.3 → 2.0.4
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 +4 -0
- package/package.json +1 -1
- package/runtime/VERSION +1 -1
- package/runtime/knowledge/docs/_BUILD_HASH.md +1 -1
- package/runtime/knowledge/docs/core/api/platform.docs.md +7 -0
- package/runtime/knowledge/docs/core/blade-navigation/blade-nav-composables.docs.md +20 -4
- package/runtime/knowledge/docs/core/composables/bladeContext/index.docs.md +15 -3
- package/runtime/knowledge/docs/core/composables/useApiClient/useApiClient.docs.md +13 -4
- package/runtime/knowledge/docs/core/composables/useAppBarMobileButtons/useAppBarMobileButtons.docs.md +10 -0
- package/runtime/knowledge/docs/core/composables/useAppBarWidget/useAppBarWidget.docs.md +6 -0
- package/runtime/knowledge/docs/core/composables/useAppInsights/useAppInsights.docs.md +6 -0
- package/runtime/knowledge/docs/core/composables/useAssets/useAssets.docs.md +8 -1
- package/runtime/knowledge/docs/core/composables/useAssetsManager/useAssetsManager.docs.md +15 -4
- package/runtime/knowledge/docs/core/composables/useAsync/useAsync.docs.md +13 -0
- package/runtime/knowledge/docs/core/composables/useBeforeUnload/useBeforeUnload.docs.md +6 -0
- package/runtime/knowledge/docs/core/composables/useBlade/useBlade.docs.md +13 -0
- package/runtime/knowledge/docs/core/composables/useBladeForm/useBladeForm.docs.md +12 -2
- package/runtime/knowledge/docs/core/composables/useBladeRegistry/useBladeRegistry.docs.md +14 -4
- package/runtime/knowledge/docs/core/composables/useBladeWidgets/index.docs.md +23 -9
- package/runtime/knowledge/docs/core/composables/useBreadcrumbs/useBreadcrumbs.docs.md +6 -0
- package/runtime/knowledge/docs/core/composables/useConnectionStatus/useConnectionStatus.docs.md +10 -0
- package/runtime/knowledge/docs/core/composables/useDashboard/useDashboard.docs.md +9 -0
- package/runtime/knowledge/docs/core/composables/useDynamicProperties/useDynamicProperties.docs.md +6 -0
- package/runtime/knowledge/docs/core/composables/useErrorHandler/useErrorHandler.docs.md +6 -0
- package/runtime/knowledge/docs/core/composables/useFunctions/useFunctions.docs.md +6 -0
- package/runtime/knowledge/docs/core/composables/useKeyboardNavigation/useKeyboardNavigation.docs.md +10 -0
- package/runtime/knowledge/docs/core/composables/useLanguages/useLanguages.docs.md +6 -0
- package/runtime/knowledge/docs/core/composables/useLoading/useLoading.docs.md +10 -0
- package/runtime/knowledge/docs/core/composables/useMenuExpanded/index.docs.md +10 -0
- package/runtime/knowledge/docs/core/composables/useMenuService/useMenuService.docs.md +9 -0
- package/runtime/knowledge/docs/core/composables/useModificationTracker/useModificationTracker.docs.md +6 -0
- package/runtime/knowledge/docs/core/composables/useNotifications/useNotifications.docs.md +6 -0
- package/runtime/knowledge/docs/core/composables/usePermissions/usePermissions.docs.md +9 -0
- package/runtime/knowledge/docs/core/composables/usePlatformLocaleSync/usePlatformLocaleSync.docs.md +6 -0
- package/runtime/knowledge/docs/core/composables/usePopup/usePopup.docs.md +9 -0
- package/runtime/knowledge/docs/core/composables/useResponsive/useResponsive.docs.md +10 -0
- package/runtime/knowledge/docs/core/composables/useSettings/useSettings.docs.md +6 -0
- package/runtime/knowledge/docs/core/composables/useSettingsMenu/useSettingsMenu.docs.md +6 -0
- package/runtime/knowledge/docs/core/composables/useSidebarState/useSidebarState.docs.md +10 -0
- package/runtime/knowledge/docs/core/composables/useSlowNetworkDetection/useSlowNetworkDetection.docs.md +9 -0
- package/runtime/knowledge/docs/core/composables/useTheme/useTheme.docs.md +9 -0
- package/runtime/knowledge/docs/core/composables/useToolbar/useToolbar.docs.md +9 -0
- package/runtime/knowledge/docs/core/composables/useUser/useUser.docs.md +6 -0
- package/runtime/knowledge/docs/core/composables/useUserManagement/useUserManagement.docs.md +7 -0
- package/runtime/knowledge/docs/core/composables/useWebVitals/useWebVitals.docs.md +6 -0
- package/runtime/knowledge/docs/core/composables/useWidgets/useWidgets.docs.md +10 -0
- package/runtime/knowledge/docs/core/directives/autofocus/autofocus.docs.md +7 -0
- package/runtime/knowledge/docs/core/directives/loading/loading.docs.md +7 -0
- package/runtime/knowledge/docs/core/notifications/notifications.docs.md +21 -0
- package/runtime/knowledge/docs/core/plugins/ai-agent/ai-agent.docs.md +7 -0
- package/runtime/knowledge/docs/core/plugins/extension-points/extension-points.docs.md +10 -0
- package/runtime/knowledge/docs/core/plugins/global-error-handler/global-error-handler.docs.md +7 -0
- package/runtime/knowledge/docs/core/plugins/i18n/i18n.docs.md +10 -0
- package/runtime/knowledge/docs/core/plugins/modularity/modularity.docs.md +10 -0
- package/runtime/knowledge/docs/core/plugins/permissions/permissions.docs.md +8 -1
- package/runtime/knowledge/docs/core/plugins/signalR/signalR.docs.md +7 -0
- package/runtime/knowledge/docs/core/plugins/validation/validation.docs.md +10 -0
- package/runtime/knowledge/docs/core/services/services.docs.md +16 -1
- package/runtime/knowledge/docs/core/types/types.docs.md +7 -0
- package/runtime/knowledge/docs/core/utilities/date/date-utilities.docs.md +7 -0
- package/runtime/knowledge/docs/core/utilities/shared-utilities.docs.md +7 -0
- package/runtime/knowledge/docs/core/utilities/thumbnail/thumbnail.docs.md +7 -0
- package/runtime/knowledge/docs/core/utilities/utilities.docs.md +7 -0
- package/runtime/knowledge/docs/injection-keys.docs.md +11 -0
- package/runtime/knowledge/docs/modules/assets/assets-details.docs.md +123 -0
- package/runtime/knowledge/docs/modules/assets-manager/assets-manager.docs.md +89 -12
- package/runtime/knowledge/docs/shell/_internal/popup/common/popup-common.docs.md +7 -0
- package/runtime/knowledge/docs/shell/auth/ChangePasswordPage/change-password-page.docs.md +7 -0
- package/runtime/knowledge/docs/shell/auth/ForgotPasswordPage/forgot-password-page.docs.md +7 -0
- package/runtime/knowledge/docs/shell/auth/InvitePage/invite-page.docs.md +7 -0
- package/runtime/knowledge/docs/shell/auth/LoginPage/login-page.docs.md +7 -0
- package/runtime/knowledge/docs/shell/auth/ResetPasswordPage/reset-password-page.docs.md +7 -0
- package/runtime/knowledge/docs/shell/auth/sign-in/sign-in.docs.md +7 -0
- package/runtime/knowledge/docs/shell/components/change-password/change-password.docs.md +7 -0
- package/runtime/knowledge/docs/shell/components/change-password-button/change-password-button.docs.md +7 -0
- package/runtime/knowledge/docs/shell/components/error-interceptor/error-interceptor.docs.md +7 -0
- package/runtime/knowledge/docs/shell/components/language-selector/language-selector.docs.md +7 -0
- package/runtime/knowledge/docs/shell/components/logout-button/logout-button.docs.md +7 -0
- package/runtime/knowledge/docs/shell/components/notification-dropdown/notification-dropdown.docs.md +7 -0
- package/runtime/knowledge/docs/shell/components/notification-template/notification-template.docs.md +7 -0
- package/runtime/knowledge/docs/shell/components/settings-menu/settings-menu.docs.md +7 -0
- package/runtime/knowledge/docs/shell/components/settings-menu-item/settings-menu-item.docs.md +7 -0
- package/runtime/knowledge/docs/shell/components/sidebar/sidebar.docs.md +7 -0
- package/runtime/knowledge/docs/shell/components/theme-selector/theme-selector.docs.md +7 -0
- package/runtime/knowledge/docs/shell/components/user-dropdown-button/user-dropdown-button.docs.md +7 -0
- package/runtime/knowledge/docs/shell/dashboard/dashboard-charts/dashboard-charts.docs.md +7 -0
- package/runtime/knowledge/docs/shell/dashboard/dashboard-widget-card/dashboard-widget-card.docs.md +7 -0
- package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/dashboard-widget-skeleton.docs.md +7 -0
- package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/draggable-dashboard.docs.md +7 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-badge/vc-badge.docs.md +24 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-banner/vc-banner.docs.md +20 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-button/vc-button.docs.md +32 -5
- package/runtime/knowledge/docs/ui/components/atoms/vc-card/vc-card.docs.md +15 -2
- package/runtime/knowledge/docs/ui/components/atoms/vc-col/vc-col.docs.md +11 -1
- package/runtime/knowledge/docs/ui/components/atoms/vc-container/vc-container.docs.md +10 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-hint/vc-hint.docs.md +20 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-icon/vc-icon.docs.md +24 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-image/vc-image.docs.md +26 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-label/vc-label.docs.md +24 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-link/vc-link.docs.md +22 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-loading/vc-loading.docs.md +21 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-progress/vc-progress.docs.md +20 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-row/vc-row.docs.md +11 -1
- package/runtime/knowledge/docs/ui/components/atoms/vc-scrollable-container/vc-scrollable-container.docs.md +11 -1
- package/runtime/knowledge/docs/ui/components/atoms/vc-skeleton/vc-skeleton.docs.md +20 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-status/vc-status.docs.md +20 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-status-icon/vc-status-icon.docs.md +20 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-tooltip/vc-tooltip.docs.md +25 -1
- package/runtime/knowledge/docs/ui/components/atoms/vc-video/vc-video.docs.md +25 -0
- package/runtime/knowledge/docs/ui/components/atoms/vc-widget/vc-widget.docs.md +22 -0
- package/runtime/knowledge/docs/ui/components/molecules/multilanguage-selector/multilanguage-selector.docs.md +10 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-accordion/vc-accordion.docs.md +17 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.docs.md +27 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox/vc-checkbox.docs.md +27 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.docs.md +23 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-color-input/vc-color-input.docs.md +24 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-date-picker/vc-date-picker.docs.md +27 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown/vc-dropdown.docs.md +27 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown-panel/vc-dropdown-panel.docs.md +22 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-editor/vc-editor.docs.md +17 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-field/vc-field.docs.md +17 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-file-upload/vc-file-upload.docs.md +17 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-form/vc-form.docs.md +15 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-image-tile/vc-image-tile.docs.md +12 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-input/vc-input.docs.md +30 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-currency/vc-input-currency.docs.md +27 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.docs.md +26 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-group/vc-input-group.docs.md +21 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-menu/vc-menu.docs.md +24 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-multivalue/vc-multivalue.docs.md +28 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-pagination/vc-pagination.docs.md +25 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-radio-button/vc-radio-button.docs.md +25 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-radio-group/vc-radio-group.docs.md +22 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-rating/vc-rating.docs.md +17 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-select/vc-select.docs.md +32 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-slider/vc-slider.docs.md +22 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-switch/vc-switch.docs.md +25 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-textarea/vc-textarea.docs.md +27 -0
- package/runtime/knowledge/docs/ui/components/molecules/vc-toast/vc-toast.docs.md +28 -0
- package/runtime/knowledge/docs/ui/components/organisms/vc-app/vc-app.docs.md +19 -0
- package/runtime/knowledge/docs/ui/components/organisms/vc-auth-layout/vc-auth-layout.docs.md +13 -0
- package/runtime/knowledge/docs/ui/components/organisms/vc-blade/vc-blade.docs.md +22 -1
- package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/composables/table-composables.docs.md +30 -5
- package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/vc-data-table.docs.md +18 -0
- package/runtime/knowledge/docs/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.docs.md +12 -0
- package/runtime/knowledge/docs/ui/components/organisms/vc-gallery/vc-gallery.docs.md +14 -0
- package/runtime/knowledge/docs/ui/components/organisms/vc-image-upload/vc-image-upload.docs.md +12 -0
- package/runtime/knowledge/docs/ui/components/organisms/vc-popup/vc-popup.docs.md +14 -1
- package/runtime/knowledge/docs/ui/components/organisms/vc-sidebar/vc-sidebar.docs.md +13 -0
- package/runtime/knowledge/docs/ui/composables/ui-composables.docs.md +7 -0
- package/runtime/knowledge/docs/ui/composables/useDataTablePagination.docs.md +9 -3
- package/runtime/knowledge/docs/ui/composables/useDataTableSort.docs.md +6 -0
- package/runtime/knowledge/docs/ui/composables/useTableSelection.docs.md +6 -0
- package/runtime/knowledge/docs/ui/composables/useTableSort.docs.md +6 -0
- package/runtime/knowledge/docs/ui/types/ui-types.docs.md +7 -0
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcButton
|
|
3
|
+
category: components
|
|
4
|
+
group: misc
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcButton
|
|
2
8
|
|
|
3
|
-
A versatile button component supporting 9 style variants, 5 size options, loading state, and icon integration. VcButton is the primary interactive element for triggering actions throughout the application
|
|
9
|
+
A versatile button component supporting 9 style variants, 5 size options, loading state, and icon integration. VcButton is the primary interactive element for triggering actions throughout the application — from toolbar buttons and form submissions to inline table actions and navigation.
|
|
10
|
+
|
|
11
|
+
::storybook id="action-vcbutton--primary"
|
|
4
12
|
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
@@ -33,6 +41,8 @@ import { VcButton } from "@vc-shell/framework";
|
|
|
33
41
|
|
|
34
42
|
VcButton provides 9 visual variants organized into three emphasis levels.
|
|
35
43
|
|
|
44
|
+
::storybook id="action-vcbutton--all-variants" height="500"
|
|
45
|
+
|
|
36
46
|
### Filled Variants (High Emphasis)
|
|
37
47
|
|
|
38
48
|
Solid background colors for primary and prominent actions.
|
|
@@ -85,6 +95,8 @@ No border or background, used for inline or de-emphasized actions.
|
|
|
85
95
|
|
|
86
96
|
Five size options cover all common use cases from toolbar icons to prominent CTAs.
|
|
87
97
|
|
|
98
|
+
::storybook id="action-vcbutton--all-sizes"
|
|
99
|
+
|
|
88
100
|
```vue
|
|
89
101
|
<VcButton size="sm">Small</VcButton>
|
|
90
102
|
<VcButton size="default">Default</VcButton>
|
|
@@ -101,7 +113,8 @@ Five size options cover all common use cases from toolbar icons to prominent CTA
|
|
|
101
113
|
| `icon` | 36x36px | 0 (square) | Toolbar icon buttons |
|
|
102
114
|
| `icon-sm` | 24x24px | 0 (square) | Table cell actions, inline controls |
|
|
103
115
|
|
|
104
|
-
|
|
116
|
+
!!! note "Legacy size aliases"
|
|
117
|
+
`xs` (maps to `sm`) and `base` (maps to `default`) are supported for backward compatibility but should not be used in new code.
|
|
105
118
|
|
|
106
119
|
## Icons
|
|
107
120
|
|
|
@@ -122,6 +135,8 @@ The `icon` prop accepts a string (icon identifier like `lucide-plus`) or a Vue c
|
|
|
122
135
|
|
|
123
136
|
## Loading State
|
|
124
137
|
|
|
138
|
+
::storybook id="action-vcbutton--loading"
|
|
139
|
+
|
|
125
140
|
When `loading` is `true`, the button shows a spinner in place of its icon and becomes non-interactive:
|
|
126
141
|
|
|
127
142
|
```vue
|
|
@@ -213,6 +228,9 @@ VcButton integrates with `VcButtonGroup` via provide/inject. The group can set a
|
|
|
213
228
|
</template>
|
|
214
229
|
```
|
|
215
230
|
|
|
231
|
+
!!! warning "Don't disable buttons during async actions"
|
|
232
|
+
Use the `loading` prop, not `disabled`. A disabled button gives no progress feedback; a loading button shows a spinner and announces busy state via `aria-busy`.
|
|
233
|
+
|
|
216
234
|
## Common Mistakes
|
|
217
235
|
|
|
218
236
|
### Missing aria-label on icon-only buttons
|
|
@@ -300,6 +318,15 @@ All visual properties are customizable through CSS custom properties. Each varia
|
|
|
300
318
|
|
|
301
319
|
## Related Components
|
|
302
320
|
|
|
303
|
-
- [VcIcon](../vc-icon/)
|
|
304
|
-
- [VcBadge](../vc-badge/)
|
|
305
|
-
-
|
|
321
|
+
- [VcIcon](../vc-icon/) — used internally for button icons
|
|
322
|
+
- [VcBadge](../vc-badge/) — can wrap a button to show notification counts
|
|
323
|
+
- `VcButtonGroup` — groups buttons with shared size context (see component source for usage)
|
|
324
|
+
|
|
325
|
+
<!-- internal:start -->
|
|
326
|
+
|
|
327
|
+
## Architecture notes
|
|
328
|
+
|
|
329
|
+
- VcButton calls `e.preventDefault()` on click to support `link` variant pattern. Form submit buttons must use `type="submit"` to bypass this.
|
|
330
|
+
- `VcButtonGroup` integration is via provide/inject (`vcButtonGroupSize` injection key in `framework/injection-keys.ts`).
|
|
331
|
+
- Size aliases `xs`/`base` are kept for vendor-portal backward compatibility — slated for removal in v3.
|
|
332
|
+
<!-- internal:end -->
|
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcCard
|
|
3
|
+
category: components
|
|
4
|
+
group: layout
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcCard
|
|
2
8
|
|
|
3
|
-
A bordered container with an optional header, icon, action buttons, and collapsible body.
|
|
9
|
+
A bordered container with an optional header, icon, action buttons, and collapsible body.
|
|
10
|
+
|
|
11
|
+
::storybook id="data-display-vccard--default" VcCard groups related content into visually distinct sections on blades and detail views. It supports three color variants for semantic meaning and smooth animated collapse/expand.
|
|
4
12
|
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
@@ -45,6 +53,8 @@ The icon renders at `xl` size using the `VcIcon` component. It inherits the head
|
|
|
45
53
|
|
|
46
54
|
## Variants
|
|
47
55
|
|
|
56
|
+
::storybook id="data-display-vccard--all-variants" height="400"
|
|
57
|
+
|
|
48
58
|
Three variants control the header's background and text color to communicate semantic meaning.
|
|
49
59
|
|
|
50
60
|
```vue
|
|
@@ -74,6 +84,8 @@ Three variants control the header's background and text color to communicate sem
|
|
|
74
84
|
|
|
75
85
|
## Collapsible Sections
|
|
76
86
|
|
|
87
|
+
::storybook id="data-display-vccard--collapsable" height="300"
|
|
88
|
+
|
|
77
89
|
Enable collapse/expand behavior by setting `is-collapsable`. The card header becomes clickable and shows a chevron indicator.
|
|
78
90
|
|
|
79
91
|
```vue
|
|
@@ -173,7 +185,8 @@ Replace the entire header content using the `#header` slot. This overrides the d
|
|
|
173
185
|
</VcCard>
|
|
174
186
|
```
|
|
175
187
|
|
|
176
|
-
|
|
188
|
+
!!! note "Header required for header section"
|
|
189
|
+
The `header` prop must be set (even to an empty string) for the header section to render. If neither `header` prop nor `#header` slot is provided, no header is displayed.
|
|
177
190
|
|
|
178
191
|
## Fill Mode
|
|
179
192
|
|
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcCol
|
|
3
|
+
category: components
|
|
4
|
+
group: layout
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcCol
|
|
2
8
|
|
|
3
|
-
A flexbox column layout primitive that stacks its children vertically.
|
|
9
|
+
A flexbox column layout primitive that stacks its children vertically.
|
|
10
|
+
|
|
11
|
+
::storybook id="layout-vccol--default" Designed to work with `VcRow` for proportional multi-column layouts. The `size` prop maps directly to `flex-grow`, so columns with higher values consume more horizontal space relative to their siblings.
|
|
4
12
|
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
@@ -68,6 +76,8 @@ A flexbox column layout primitive that stacks its children vertically. Designed
|
|
|
68
76
|
</VcCol>
|
|
69
77
|
```
|
|
70
78
|
|
|
79
|
+
::storybook id="layout-vccol--content-layout" height="400"
|
|
80
|
+
|
|
71
81
|
## Recipe: Blade Detail Form with Sidebar
|
|
72
82
|
|
|
73
83
|
A common blade layout places metadata in a narrow sidebar column and form fields in the wider main column:
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcContainer
|
|
3
|
+
category: components
|
|
4
|
+
group: layout
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcContainer
|
|
2
8
|
|
|
3
9
|
A scrollable content wrapper that fills its parent, provides configurable padding, and optionally shows an inset shadow to indicate overflow. The standard building block for blade body content.
|
|
4
10
|
|
|
11
|
+
::storybook id="layout-vccontainer--default"
|
|
12
|
+
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
7
15
|
- Wrap blade body content that may exceed the visible area
|
|
@@ -11,6 +19,8 @@ A scrollable content wrapper that fills its parent, provides configurable paddin
|
|
|
11
19
|
|
|
12
20
|
## Basic Usage
|
|
13
21
|
|
|
22
|
+
::storybook id="layout-vccontainer--with-shadow" height="300"
|
|
23
|
+
|
|
14
24
|
```vue
|
|
15
25
|
<VcContainer shadow>
|
|
16
26
|
<p>Scrollable content goes here...</p>
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcHint
|
|
3
|
+
category: components
|
|
4
|
+
group: feedback
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcHint
|
|
2
8
|
|
|
3
9
|
A small text component for displaying helper text, validation messages, or supplementary guidance below form fields. It renders as a lightweight `<div>` with muted styling in its default state and switches to a danger color with `role="alert"` when the `error` prop is set, ensuring screen readers announce validation problems immediately.
|
|
4
10
|
|
|
11
|
+
::storybook id="data-display-vchint--default"
|
|
12
|
+
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
7
15
|
- Show helper text beneath input fields explaining expected format or constraints
|
|
@@ -34,6 +42,8 @@ A small text component for displaying helper text, validation messages, or suppl
|
|
|
34
42
|
|
|
35
43
|
## Common Patterns
|
|
36
44
|
|
|
45
|
+
::storybook id="data-display-vchint--form-field-hint"
|
|
46
|
+
|
|
37
47
|
### Helper Text Below an Input
|
|
38
48
|
|
|
39
49
|
```vue
|
|
@@ -129,3 +139,13 @@ Show helper text by default, but swap to an error message when validation fails:
|
|
|
129
139
|
- [VcLabel](../vc-label/) -- field label component, typically placed above the input
|
|
130
140
|
- [VcBanner](../vc-banner/) -- for longer or more prominent alert messages
|
|
131
141
|
- [VcInput](../../molecules/vc-input/) -- form input component often paired with VcHint
|
|
142
|
+
|
|
143
|
+
<!-- internal:start -->
|
|
144
|
+
|
|
145
|
+
## Architecture notes
|
|
146
|
+
|
|
147
|
+
- VcHint is a single `<div>` element — no wrapper. `role="alert"` is toggled reactively via `:role` binding when `error` prop changes.
|
|
148
|
+
- CSS variables are scoped with `.vc-hint` selector in `vc-hint.vue` `<style scoped>`.
|
|
149
|
+
- Source: `framework/ui/components/atoms/vc-hint/vc-hint.vue`
|
|
150
|
+
|
|
151
|
+
<!-- internal:end -->
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcIcon
|
|
3
|
+
category: components
|
|
4
|
+
group: misc
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcIcon
|
|
2
8
|
|
|
3
9
|
A unified icon component that renders icons from multiple libraries. Lucide Icons (`lucide-` prefix) are the standard; legacy libraries (FontAwesome, Bootstrap, Material) are deprecated.
|
|
4
10
|
|
|
11
|
+
::storybook id="layout-vcicon--basic"
|
|
12
|
+
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
7
15
|
- Display icons in buttons, menus, toolbars, and status indicators
|
|
@@ -26,6 +34,8 @@ A unified icon component that renders icons from multiple libraries. Lucide Icon
|
|
|
26
34
|
| `ariaLabel` | `string` | — | Accessible label for meaningful icons |
|
|
27
35
|
| `basePath` | `string` | `"/assets/icons"` | Base path for SVG sprite icons |
|
|
28
36
|
|
|
37
|
+
::storybook id="layout-vcicon--all-sizes" height="300"
|
|
38
|
+
|
|
29
39
|
## Size Reference
|
|
30
40
|
|
|
31
41
|
| Size | Pixels |
|
|
@@ -38,6 +48,8 @@ A unified icon component that renders icons from multiple libraries. Lucide Icon
|
|
|
38
48
|
| `xxl` | 30px |
|
|
39
49
|
| `xxxl` | 64px |
|
|
40
50
|
|
|
51
|
+
::storybook id="layout-vcicon--all-variants" height="200"
|
|
52
|
+
|
|
41
53
|
## Icon Prefix Guide
|
|
42
54
|
|
|
43
55
|
| Prefix | Library | Status |
|
|
@@ -106,3 +118,15 @@ import MyCustomIcon from "./MyCustomIcon.vue";
|
|
|
106
118
|
- [VcButton](../vc-button/) — uses VcIcon internally for button icons
|
|
107
119
|
- [VcImage](../vc-image/) — for photos and larger imagery
|
|
108
120
|
- [VcBanner](../vc-banner/) — uses VcIcon for the leading alert icon
|
|
121
|
+
|
|
122
|
+
<!-- internal:start -->
|
|
123
|
+
|
|
124
|
+
## Architecture notes
|
|
125
|
+
|
|
126
|
+
- VcIcon lives in `framework/ui/components/atoms/vc-icon/`.
|
|
127
|
+
- Icon resolution is handled by a switch on the string prefix: `lucide-` maps to the Lucide component registry; `fa-` / `fas fa-` / `bi-` / `material-` are legacy paths kept for backward compatibility and will be removed in v3.
|
|
128
|
+
- The `svg:` prefix loads from an SVG sprite at `basePath` (default `/assets/icons`) using a `<use>` element. Sprite must be included in the app's static assets.
|
|
129
|
+
- `customSize` takes a number and sets `width`/`height` inline; it overrides the `size` prop class entirely.
|
|
130
|
+
- Color variants (`warning`, `danger`, `success`) apply CSS custom property overrides (`--icon-color`) rather than inline style to allow theme-level customization.
|
|
131
|
+
|
|
132
|
+
<!-- internal:end -->
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcImage
|
|
3
|
+
category: components
|
|
4
|
+
group: media
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcImage
|
|
2
8
|
|
|
3
9
|
An image display component with predefined sizes, aspect ratio control, and a placeholder for missing sources. Renders images as CSS backgrounds with automatic HTTPS enforcement.
|
|
4
10
|
|
|
11
|
+
::storybook id="data-display-vcimage--default"
|
|
12
|
+
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
7
15
|
- Display product thumbnails, profile avatars, or media previews
|
|
@@ -30,6 +38,8 @@ An image display component with predefined sizes, aspect ratio control, and a pl
|
|
|
30
38
|
| `alt` | `string` | — | Accessible alt text |
|
|
31
39
|
| `thumbnailSize` | `ThumbnailSize` | — | Load a thumbnail variant instead of full-size image. Values: `"sm"`, `"md"`, `"lg"`, `"64x64"`, `"128x128"`, `"168x168"`, `"216x216"`, `"348x348"` |
|
|
32
40
|
|
|
41
|
+
::storybook id="data-display-vcimage--size-variants" height="300"
|
|
42
|
+
|
|
33
43
|
## Size Reference
|
|
34
44
|
|
|
35
45
|
| Size | Width |
|
|
@@ -83,7 +93,23 @@ An image display component with predefined sizes, aspect ratio control, and a pl
|
|
|
83
93
|
- Focus ring appears on `:focus-visible` for clickable images
|
|
84
94
|
- HTTP URLs are automatically upgraded to HTTPS when the page is served over HTTPS
|
|
85
95
|
|
|
96
|
+
!!! tip "Use thumbnailSize for faster load times"
|
|
97
|
+
When displaying images in lists or grids, pass a `thumbnailSize` (e.g. `"128x128"`) to request a pre-scaled variant from the platform CDN instead of loading the full-resolution original. This significantly reduces bandwidth and speeds up initial render.
|
|
98
|
+
|
|
86
99
|
## Related Components
|
|
87
100
|
|
|
88
101
|
- [VcIcon](../vc-icon/) — for symbolic icons rather than photographic content
|
|
89
102
|
- [VcImageTile](../../molecules/vc-image-tile/) — combines VcImage with overlay actions for gallery use
|
|
103
|
+
|
|
104
|
+
<!-- internal:start -->
|
|
105
|
+
|
|
106
|
+
## Architecture notes
|
|
107
|
+
|
|
108
|
+
- VcImage lives in `framework/ui/components/atoms/vc-image/`.
|
|
109
|
+
- Images are rendered as CSS `background-image` on a `<div>` rather than an `<img>` tag; this enables `background-size: cover/contain` and preserves aspect-ratio without JS.
|
|
110
|
+
- HTTPS enforcement: the `src` watcher rewrites `http://` to `https://` when `window.location.protocol === 'https:'`.
|
|
111
|
+
- `thumbnailSize` appends a query parameter to the URL compatible with Virto Commerce image proxy: `?size=128x128`. This is a platform-specific convention.
|
|
112
|
+
- Aspect ratios are implemented as Tailwind aspect-ratio utility classes (`tw-aspect-square`, `tw-aspect-video`, etc.).
|
|
113
|
+
- Clickable mode adds `role="button"` and forwards keyboard Enter/Space to the click handler, consistent with other atom-level interactive components.
|
|
114
|
+
|
|
115
|
+
<!-- internal:end -->
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcLabel
|
|
3
|
+
category: components
|
|
4
|
+
group: misc
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcLabel
|
|
2
8
|
|
|
3
9
|
A form field label component with support for required indicators, info tooltips, multilanguage badges, and error states. Renders as a `<label>` when linked to an input via `htmlFor`, or a `<div>` otherwise. VcLabel is the standard way to label any form control in the framework and is used internally by most input molecules (VcInput, VcSelect, VcTextarea, etc.).
|
|
4
10
|
|
|
11
|
+
::storybook id="data-display-vclabel--default"
|
|
12
|
+
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
7
15
|
- Label form inputs, selects, and textareas
|
|
@@ -48,6 +56,8 @@ A form field label component with support for required indicators, info tooltips
|
|
|
48
56
|
| `--label-lang-color` | `var(--neutrals-500)` | Language badge text color |
|
|
49
57
|
| `--label-error-color` | `var(--danger-500)` | Text color in error state |
|
|
50
58
|
|
|
59
|
+
::storybook id="data-display-vclabel--required" height="200"
|
|
60
|
+
|
|
51
61
|
## Common Patterns
|
|
52
62
|
|
|
53
63
|
### Required Field with Tooltip
|
|
@@ -144,8 +154,22 @@ Use a different icon for the tooltip trigger:
|
|
|
144
154
|
- Tooltip icon is focusable and keyboard-accessible via the underlying VcTooltip component
|
|
145
155
|
- Error state changes the visual color but does not add ARIA attributes to the label; pair with `aria-invalid` and `aria-describedby` on the input
|
|
146
156
|
|
|
157
|
+
::storybook id="data-display-vclabel--with-form-field" height="300"
|
|
158
|
+
|
|
147
159
|
## Related Components
|
|
148
160
|
|
|
149
161
|
- [VcHint](../vc-hint/) -- helper/error text placed below the input
|
|
150
162
|
- [VcTooltip](../vc-tooltip/) -- used internally for the info tooltip
|
|
151
163
|
- [VcInput](../../molecules/vc-input/) -- form input component commonly paired with VcLabel
|
|
164
|
+
|
|
165
|
+
<!-- internal:start -->
|
|
166
|
+
|
|
167
|
+
## Architecture notes
|
|
168
|
+
|
|
169
|
+
- VcLabel lives in `framework/ui/components/atoms/vc-label/`.
|
|
170
|
+
- The element type (`<label>` vs `<div>`) is determined by a computed `tag` that checks whether `htmlFor` is a non-empty string.
|
|
171
|
+
- The tooltip trigger is rendered by `VcTooltip` (internal molecule); the `tooltipIcon` prop simply passes through to an inner `VcIcon` instance.
|
|
172
|
+
- `multilanguage` + `currentLanguage` render a small pill via an inline `<span>` with `.vc-label__lang` class — not a separate component.
|
|
173
|
+
- VcLabel is the canonical label primitive consumed by `VcInput`, `VcSelect`, `VcTextarea`, `VcCheckbox`, and `VcRadioButton` in `framework/ui/components/molecules/`.
|
|
174
|
+
|
|
175
|
+
<!-- internal:end -->
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcLink
|
|
3
|
+
category: components
|
|
4
|
+
group: navigation
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcLink
|
|
2
8
|
|
|
3
9
|
A clickable inline link element styled as a button, used for navigation or triggering actions within text or toolbars. Despite its link-like appearance, VcLink renders as a native `<button>` element, which provides correct keyboard behavior and avoids the need for an `href` attribute when the action is handled in JavaScript.
|
|
4
10
|
|
|
11
|
+
::storybook id="action-vclink--default"
|
|
12
|
+
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
7
15
|
- Trigger navigation or actions inline with other content
|
|
@@ -38,6 +46,8 @@ function openDetails() {
|
|
|
38
46
|
| ------- | ------- | ----------------------------------------------------------- |
|
|
39
47
|
| `click` | none | Fired when the link is clicked (suppressed when `disabled`) |
|
|
40
48
|
|
|
49
|
+
::storybook id="action-vclink--navigation-example" height="250"
|
|
50
|
+
|
|
41
51
|
## Common Patterns
|
|
42
52
|
|
|
43
53
|
### Navigation Bar
|
|
@@ -138,3 +148,15 @@ const activeTab = ref("Overview");
|
|
|
138
148
|
## Related Components
|
|
139
149
|
|
|
140
150
|
- [VcButton](../vc-button/) -- for primary actions and form submissions
|
|
151
|
+
|
|
152
|
+
<!-- internal:start -->
|
|
153
|
+
|
|
154
|
+
## Architecture notes
|
|
155
|
+
|
|
156
|
+
- VcLink lives in `framework/ui/components/atoms/vc-link/`.
|
|
157
|
+
- Renders as a native `<button type="button">` with all default button styles reset via CSS (no background, no border, no padding). The link appearance is achieved purely through color and text-decoration.
|
|
158
|
+
- The `active` prop adds `.vc-link--active` modifier which applies `--link-text-color-active` and removes the hover underline to signal current selection.
|
|
159
|
+
- The `disabled` prop sets both the native `disabled` attribute (removes from tab order) and `aria-disabled="true"` (for assistive technologies that still read disabled buttons).
|
|
160
|
+
- No `href` prop is intentional — VcLink is for JS-driven navigation (e.g., `openBlade`, `router.push`). For real anchor links, use `<a>` or `<router-link>` directly.
|
|
161
|
+
|
|
162
|
+
<!-- internal:end -->
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcLoading
|
|
3
|
+
category: components
|
|
4
|
+
group: feedback
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcLoading
|
|
2
8
|
|
|
3
9
|
A lightweight animated loading overlay that displays a sweeping progress bar over its parent container. The overlay uses a translucent backdrop with a subtle blur effect, drawing user attention to the animated bar while keeping the underlying content partially visible so users retain context about what is loading.
|
|
4
10
|
|
|
11
|
+
::storybook id="layout-vcloading--default"
|
|
12
|
+
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
7
15
|
- Show loading state while fetching data for a blade, card, or section
|
|
@@ -46,6 +54,8 @@ const isLoading = ref(true);
|
|
|
46
54
|
| `--loading-bar-height` | `4px` | Height of the progress bar |
|
|
47
55
|
| `--loading-z-index` | `9998` | Z-index of the overlay layer |
|
|
48
56
|
|
|
57
|
+
::storybook id="layout-vcloading--interactive"
|
|
58
|
+
|
|
49
59
|
## Recipe: Loading State in a Blade
|
|
50
60
|
|
|
51
61
|
Blades have a built-in loading mechanism, but you can use VcLoading to cover a specific section within a blade body — for example, loading a chart or a related-items panel independently.
|
|
@@ -123,3 +133,14 @@ Override the bar color to match a specific status or brand theme:
|
|
|
123
133
|
|
|
124
134
|
- **VcBlade** -- blades use VcLoading internally for their loading state
|
|
125
135
|
- [VcProgress](../vc-progress/) -- determinate progress bar when percentage is known
|
|
136
|
+
|
|
137
|
+
<!-- internal:start -->
|
|
138
|
+
|
|
139
|
+
## Architecture notes
|
|
140
|
+
|
|
141
|
+
- The overlay is a single `<div>` with `v-show` (not `v-if`) so it remains in the DOM and retains animation state. `display: none` from `v-show` removes it from the paint tree when inactive.
|
|
142
|
+
- The sweeping bar is a child `<div>` animated via `@keyframes vc-loading-sweep` (translateX from `-100%` to `100%`).
|
|
143
|
+
- `backdrop-filter: blur(3px)` is applied to the overlay div directly; older Safari requires `-webkit-backdrop-filter` as a fallback.
|
|
144
|
+
- Source: `framework/ui/components/atoms/vc-loading/vc-loading.vue`
|
|
145
|
+
|
|
146
|
+
<!-- internal:end -->
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcProgress
|
|
3
|
+
category: components
|
|
4
|
+
group: feedback
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcProgress
|
|
2
8
|
|
|
3
9
|
A horizontal progress bar that visualizes the completion percentage of a task or process. The bar fills smoothly from left to right using a CSS `transform` transition, and an optional striped variant adds an animated diagonal pattern to indicate active processing.
|
|
4
10
|
|
|
11
|
+
::storybook id="layout-vcprogress--default"
|
|
12
|
+
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
7
15
|
- Display upload, import, or export progress
|
|
@@ -51,6 +59,8 @@ const uploadPercent = ref(45);
|
|
|
51
59
|
</template>
|
|
52
60
|
```
|
|
53
61
|
|
|
62
|
+
::storybook id="layout-vcprogress--striped"
|
|
63
|
+
|
|
54
64
|
### Multiple Progress Stages
|
|
55
65
|
|
|
56
66
|
```vue
|
|
@@ -164,3 +174,13 @@ async function handleUpload(files: FileList) {
|
|
|
164
174
|
|
|
165
175
|
- [VcLoading](../vc-loading/) -- indeterminate loading overlay when percentage is unknown
|
|
166
176
|
- [VcHint](../vc-hint/) -- helper text to display percentage or status message below the bar
|
|
177
|
+
|
|
178
|
+
<!-- internal:start -->
|
|
179
|
+
|
|
180
|
+
## Architecture notes
|
|
181
|
+
|
|
182
|
+
- The fill width is driven by `transform: scaleX(value / 100)` with `transform-origin: left`, not `width`, for smoother GPU-accelerated animation.
|
|
183
|
+
- The `value` prop is clamped via `Math.min(100, Math.max(0, props.value))` in a computed.
|
|
184
|
+
- Source: `framework/ui/components/atoms/vc-progress/vc-progress.vue`
|
|
185
|
+
|
|
186
|
+
<!-- internal:end -->
|
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcRow
|
|
3
|
+
category: components
|
|
4
|
+
group: layout
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcRow
|
|
2
8
|
|
|
3
|
-
A simple layout primitive that arranges child elements in a horizontal flexbox row
|
|
9
|
+
A simple layout primitive that arranges child elements in a horizontal flexbox row
|
|
10
|
+
|
|
11
|
+
::storybook id="layout-vcrow--default", automatically switching to a CSS grid on mobile viewports. VcRow has no props of its own — it is a purely presentational wrapper that applies consistent flex behavior and responsive breakpoints so you do not have to repeat the same Tailwind utilities across every horizontal layout.
|
|
4
12
|
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
@@ -100,6 +108,8 @@ The `--row-gap` CSS variable (default `0`) controls spacing. You can also overri
|
|
|
100
108
|
</template>
|
|
101
109
|
```
|
|
102
110
|
|
|
111
|
+
::storybook id="layout-vcrow--with-cards" height="300"
|
|
112
|
+
|
|
103
113
|
## Recipe: Form Section with Label and Fields
|
|
104
114
|
|
|
105
115
|
Use VcRow to place a section label next to a group of fields in a blade detail view:
|
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcScrollableContainer
|
|
3
|
+
category: components
|
|
4
|
+
group: layout
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcScrollableContainer
|
|
2
8
|
|
|
3
|
-
A container component that wraps overflowing content with auto-hiding scroll arrows at the top and bottom edges.
|
|
9
|
+
A container component that wraps overflowing content with auto-hiding scroll arrows at the top and bottom edges.
|
|
10
|
+
|
|
11
|
+
::storybook id="layout-vcscrollablecontainer--default" The native scrollbar is hidden via CSS, replaced by subtle chevron indicators that appear only when scrolling in that direction is possible. Users can hover over an arrow to scroll continuously or use keyboard arrow keys when the viewport is focused.
|
|
4
12
|
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
@@ -50,6 +58,8 @@ import { VcScrollableContainer } from "@vc-shell/framework";
|
|
|
50
58
|
| `viewportRef` | `Ref<HTMLElement \| null>` | Direct reference to the viewport DOM element |
|
|
51
59
|
| `updateScrollState` | `() => void` | Manually recalculate arrow visibility |
|
|
52
60
|
|
|
61
|
+
::storybook id="layout-vcscrollablecontainer--custom-speed" height="350"
|
|
62
|
+
|
|
53
63
|
## Recipe: Sidebar Filter List in a Blade
|
|
54
64
|
|
|
55
65
|
```vue
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcSkeleton
|
|
3
|
+
category: components
|
|
4
|
+
group: feedback
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcSkeleton
|
|
2
8
|
|
|
3
9
|
A loading placeholder component that renders animated shimmer shapes (text lines, circles, or rectangular blocks) to indicate content is being fetched.
|
|
4
10
|
|
|
11
|
+
::storybook id="layout-vcskeleton--default"
|
|
12
|
+
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
7
15
|
- Show placeholder UI while async data loads for blades, lists, or cards
|
|
@@ -47,6 +55,8 @@ The last row automatically renders at 60% width for a natural paragraph feel.
|
|
|
47
55
|
<VcSkeleton variant="circle" :width="48" :height="48" />
|
|
48
56
|
```
|
|
49
57
|
|
|
58
|
+
::storybook id="layout-vcskeleton--card-skeleton" height="450"
|
|
59
|
+
|
|
50
60
|
### Card Skeleton
|
|
51
61
|
|
|
52
62
|
```vue
|
|
@@ -121,3 +131,13 @@ The last row automatically renders at 60% width for a natural paragraph feel.
|
|
|
121
131
|
|
|
122
132
|
- [VcLoading](../vc-loading/) -- animated overlay for sections already rendered
|
|
123
133
|
- [VcProgress](../vc-progress/) -- determinate progress bar
|
|
134
|
+
|
|
135
|
+
<!-- internal:start -->
|
|
136
|
+
|
|
137
|
+
## Architecture notes
|
|
138
|
+
|
|
139
|
+
- The `text` variant uses an `Array(rows).fill(0)` to render `<span>` elements via `v-for`. The last row gets a `width: 60%` inline style for a natural paragraph taper.
|
|
140
|
+
- Animation uses a CSS `@keyframes` pulse (opacity oscillation), not a moving shimmer, for simplicity and performance.
|
|
141
|
+
- Source: `framework/ui/components/atoms/vc-skeleton/vc-skeleton.vue`
|
|
142
|
+
|
|
143
|
+
<!-- internal:end -->
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcStatus
|
|
3
|
+
category: components
|
|
4
|
+
group: feedback
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcStatus
|
|
2
8
|
|
|
3
9
|
A colored badge that communicates the state of an entity -- such as an order, product, or workflow step -- using semantic color variants.
|
|
4
10
|
|
|
11
|
+
::storybook id="data-display-vcstatus--default"
|
|
12
|
+
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
7
15
|
- Display order or fulfillment status (e.g., "Paid", "Pending", "Cancelled")
|
|
@@ -31,6 +39,8 @@ import { VcStatus } from "@vc-shell/framework";
|
|
|
31
39
|
|
|
32
40
|
## Common Patterns
|
|
33
41
|
|
|
42
|
+
::storybook id="data-display-vcstatus--all-variants" height="450"
|
|
43
|
+
|
|
34
44
|
### Status in a Table Cell
|
|
35
45
|
|
|
36
46
|
```vue
|
|
@@ -116,3 +126,13 @@ Each variant has its own set of CSS variables following the pattern `--status-{v
|
|
|
116
126
|
|
|
117
127
|
- [VcStatusIcon](../vc-status-icon/) -- boolean check/cross icon for active/inactive states
|
|
118
128
|
- [VcBadge](../vc-badge/) -- numeric count badge overlay
|
|
129
|
+
|
|
130
|
+
<!-- internal:start -->
|
|
131
|
+
|
|
132
|
+
## Architecture notes
|
|
133
|
+
|
|
134
|
+
- The `extend` prop switches a CSS class; all color theming is done via `--status-{variant}-*` CSS variables scoped under `.vc-status`.
|
|
135
|
+
- Special variants `"light-danger"`, `"info-dark"`, and `"primary"` are kept for backward compatibility and mapped via a `variantClassMap` in `vc-status.vue`.
|
|
136
|
+
- Source: `framework/ui/components/atoms/vc-status/vc-status.vue`
|
|
137
|
+
|
|
138
|
+
<!-- internal:end -->
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: VcStatusIcon
|
|
3
|
+
category: components
|
|
4
|
+
group: feedback
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# VcStatusIcon
|
|
2
8
|
|
|
3
9
|
A simple boolean status indicator that displays a green check icon for active/success or a muted cross icon for inactive/failure. It is designed for compact spaces like table cells and lists where a full text label would be too verbose.
|
|
4
10
|
|
|
11
|
+
::storybook id="data-display-vcstatusicon--both-statuses"
|
|
12
|
+
|
|
5
13
|
## When to Use
|
|
6
14
|
|
|
7
15
|
- Show on/off or pass/fail state in tables and lists (e.g., "Is Active", "Email Verified")
|
|
@@ -104,6 +112,8 @@ import { VcStatusIcon } from "@vc-shell/framework";
|
|
|
104
112
|
</template>
|
|
105
113
|
```
|
|
106
114
|
|
|
115
|
+
::storybook id="data-display-vcstatusicon--in-context"
|
|
116
|
+
|
|
107
117
|
## Recipe: Status Icon with Custom Label
|
|
108
118
|
|
|
109
119
|
VcStatusIcon is intentionally minimal. If you need a text label next to the icon, compose it yourself:
|
|
@@ -146,3 +156,13 @@ VcStatusIcon is intentionally minimal. If you need a text label next to the icon
|
|
|
146
156
|
- [VcStatus](../vc-status/) -- labeled multi-variant status badge for richer state display
|
|
147
157
|
- [VcIcon](../vc-icon/) -- standalone icon component used internally
|
|
148
158
|
- [VcBadge](../vc-badge/) -- inline pill badges for multi-state indicators
|
|
159
|
+
|
|
160
|
+
<!-- internal:start -->
|
|
161
|
+
|
|
162
|
+
## Architecture notes
|
|
163
|
+
|
|
164
|
+
- VcStatusIcon wraps two `VcIcon` instances in a single `<span>` with `v-if`/`v-else` switching on the `status` prop.
|
|
165
|
+
- Icon size inherits from parent font-size; no dedicated size prop is exposed.
|
|
166
|
+
- Source: `framework/ui/components/atoms/vc-status-icon/vc-status-icon.vue`
|
|
167
|
+
|
|
168
|
+
<!-- internal:end -->
|