@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.
Files changed (155) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/package.json +1 -1
  3. package/runtime/VERSION +1 -1
  4. package/runtime/knowledge/docs/_BUILD_HASH.md +1 -1
  5. package/runtime/knowledge/docs/core/api/platform.docs.md +7 -0
  6. package/runtime/knowledge/docs/core/blade-navigation/blade-nav-composables.docs.md +20 -4
  7. package/runtime/knowledge/docs/core/composables/bladeContext/index.docs.md +15 -3
  8. package/runtime/knowledge/docs/core/composables/useApiClient/useApiClient.docs.md +13 -4
  9. package/runtime/knowledge/docs/core/composables/useAppBarMobileButtons/useAppBarMobileButtons.docs.md +10 -0
  10. package/runtime/knowledge/docs/core/composables/useAppBarWidget/useAppBarWidget.docs.md +6 -0
  11. package/runtime/knowledge/docs/core/composables/useAppInsights/useAppInsights.docs.md +6 -0
  12. package/runtime/knowledge/docs/core/composables/useAssets/useAssets.docs.md +8 -1
  13. package/runtime/knowledge/docs/core/composables/useAssetsManager/useAssetsManager.docs.md +15 -4
  14. package/runtime/knowledge/docs/core/composables/useAsync/useAsync.docs.md +13 -0
  15. package/runtime/knowledge/docs/core/composables/useBeforeUnload/useBeforeUnload.docs.md +6 -0
  16. package/runtime/knowledge/docs/core/composables/useBlade/useBlade.docs.md +13 -0
  17. package/runtime/knowledge/docs/core/composables/useBladeForm/useBladeForm.docs.md +12 -2
  18. package/runtime/knowledge/docs/core/composables/useBladeRegistry/useBladeRegistry.docs.md +14 -4
  19. package/runtime/knowledge/docs/core/composables/useBladeWidgets/index.docs.md +23 -9
  20. package/runtime/knowledge/docs/core/composables/useBreadcrumbs/useBreadcrumbs.docs.md +6 -0
  21. package/runtime/knowledge/docs/core/composables/useConnectionStatus/useConnectionStatus.docs.md +10 -0
  22. package/runtime/knowledge/docs/core/composables/useDashboard/useDashboard.docs.md +9 -0
  23. package/runtime/knowledge/docs/core/composables/useDynamicProperties/useDynamicProperties.docs.md +6 -0
  24. package/runtime/knowledge/docs/core/composables/useErrorHandler/useErrorHandler.docs.md +6 -0
  25. package/runtime/knowledge/docs/core/composables/useFunctions/useFunctions.docs.md +6 -0
  26. package/runtime/knowledge/docs/core/composables/useKeyboardNavigation/useKeyboardNavigation.docs.md +10 -0
  27. package/runtime/knowledge/docs/core/composables/useLanguages/useLanguages.docs.md +6 -0
  28. package/runtime/knowledge/docs/core/composables/useLoading/useLoading.docs.md +10 -0
  29. package/runtime/knowledge/docs/core/composables/useMenuExpanded/index.docs.md +10 -0
  30. package/runtime/knowledge/docs/core/composables/useMenuService/useMenuService.docs.md +9 -0
  31. package/runtime/knowledge/docs/core/composables/useModificationTracker/useModificationTracker.docs.md +6 -0
  32. package/runtime/knowledge/docs/core/composables/useNotifications/useNotifications.docs.md +6 -0
  33. package/runtime/knowledge/docs/core/composables/usePermissions/usePermissions.docs.md +9 -0
  34. package/runtime/knowledge/docs/core/composables/usePlatformLocaleSync/usePlatformLocaleSync.docs.md +6 -0
  35. package/runtime/knowledge/docs/core/composables/usePopup/usePopup.docs.md +9 -0
  36. package/runtime/knowledge/docs/core/composables/useResponsive/useResponsive.docs.md +10 -0
  37. package/runtime/knowledge/docs/core/composables/useSettings/useSettings.docs.md +6 -0
  38. package/runtime/knowledge/docs/core/composables/useSettingsMenu/useSettingsMenu.docs.md +6 -0
  39. package/runtime/knowledge/docs/core/composables/useSidebarState/useSidebarState.docs.md +10 -0
  40. package/runtime/knowledge/docs/core/composables/useSlowNetworkDetection/useSlowNetworkDetection.docs.md +9 -0
  41. package/runtime/knowledge/docs/core/composables/useTheme/useTheme.docs.md +9 -0
  42. package/runtime/knowledge/docs/core/composables/useToolbar/useToolbar.docs.md +9 -0
  43. package/runtime/knowledge/docs/core/composables/useUser/useUser.docs.md +6 -0
  44. package/runtime/knowledge/docs/core/composables/useUserManagement/useUserManagement.docs.md +7 -0
  45. package/runtime/knowledge/docs/core/composables/useWebVitals/useWebVitals.docs.md +6 -0
  46. package/runtime/knowledge/docs/core/composables/useWidgets/useWidgets.docs.md +10 -0
  47. package/runtime/knowledge/docs/core/directives/autofocus/autofocus.docs.md +7 -0
  48. package/runtime/knowledge/docs/core/directives/loading/loading.docs.md +7 -0
  49. package/runtime/knowledge/docs/core/notifications/notifications.docs.md +21 -0
  50. package/runtime/knowledge/docs/core/plugins/ai-agent/ai-agent.docs.md +7 -0
  51. package/runtime/knowledge/docs/core/plugins/extension-points/extension-points.docs.md +10 -0
  52. package/runtime/knowledge/docs/core/plugins/global-error-handler/global-error-handler.docs.md +7 -0
  53. package/runtime/knowledge/docs/core/plugins/i18n/i18n.docs.md +10 -0
  54. package/runtime/knowledge/docs/core/plugins/modularity/modularity.docs.md +10 -0
  55. package/runtime/knowledge/docs/core/plugins/permissions/permissions.docs.md +8 -1
  56. package/runtime/knowledge/docs/core/plugins/signalR/signalR.docs.md +7 -0
  57. package/runtime/knowledge/docs/core/plugins/validation/validation.docs.md +10 -0
  58. package/runtime/knowledge/docs/core/services/services.docs.md +16 -1
  59. package/runtime/knowledge/docs/core/types/types.docs.md +7 -0
  60. package/runtime/knowledge/docs/core/utilities/date/date-utilities.docs.md +7 -0
  61. package/runtime/knowledge/docs/core/utilities/shared-utilities.docs.md +7 -0
  62. package/runtime/knowledge/docs/core/utilities/thumbnail/thumbnail.docs.md +7 -0
  63. package/runtime/knowledge/docs/core/utilities/utilities.docs.md +7 -0
  64. package/runtime/knowledge/docs/injection-keys.docs.md +11 -0
  65. package/runtime/knowledge/docs/modules/assets/assets-details.docs.md +123 -0
  66. package/runtime/knowledge/docs/modules/assets-manager/assets-manager.docs.md +89 -12
  67. package/runtime/knowledge/docs/shell/_internal/popup/common/popup-common.docs.md +7 -0
  68. package/runtime/knowledge/docs/shell/auth/ChangePasswordPage/change-password-page.docs.md +7 -0
  69. package/runtime/knowledge/docs/shell/auth/ForgotPasswordPage/forgot-password-page.docs.md +7 -0
  70. package/runtime/knowledge/docs/shell/auth/InvitePage/invite-page.docs.md +7 -0
  71. package/runtime/knowledge/docs/shell/auth/LoginPage/login-page.docs.md +7 -0
  72. package/runtime/knowledge/docs/shell/auth/ResetPasswordPage/reset-password-page.docs.md +7 -0
  73. package/runtime/knowledge/docs/shell/auth/sign-in/sign-in.docs.md +7 -0
  74. package/runtime/knowledge/docs/shell/components/change-password/change-password.docs.md +7 -0
  75. package/runtime/knowledge/docs/shell/components/change-password-button/change-password-button.docs.md +7 -0
  76. package/runtime/knowledge/docs/shell/components/error-interceptor/error-interceptor.docs.md +7 -0
  77. package/runtime/knowledge/docs/shell/components/language-selector/language-selector.docs.md +7 -0
  78. package/runtime/knowledge/docs/shell/components/logout-button/logout-button.docs.md +7 -0
  79. package/runtime/knowledge/docs/shell/components/notification-dropdown/notification-dropdown.docs.md +7 -0
  80. package/runtime/knowledge/docs/shell/components/notification-template/notification-template.docs.md +7 -0
  81. package/runtime/knowledge/docs/shell/components/settings-menu/settings-menu.docs.md +7 -0
  82. package/runtime/knowledge/docs/shell/components/settings-menu-item/settings-menu-item.docs.md +7 -0
  83. package/runtime/knowledge/docs/shell/components/sidebar/sidebar.docs.md +7 -0
  84. package/runtime/knowledge/docs/shell/components/theme-selector/theme-selector.docs.md +7 -0
  85. package/runtime/knowledge/docs/shell/components/user-dropdown-button/user-dropdown-button.docs.md +7 -0
  86. package/runtime/knowledge/docs/shell/dashboard/dashboard-charts/dashboard-charts.docs.md +7 -0
  87. package/runtime/knowledge/docs/shell/dashboard/dashboard-widget-card/dashboard-widget-card.docs.md +7 -0
  88. package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/dashboard-widget-skeleton.docs.md +7 -0
  89. package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/draggable-dashboard.docs.md +7 -0
  90. package/runtime/knowledge/docs/ui/components/atoms/vc-badge/vc-badge.docs.md +24 -0
  91. package/runtime/knowledge/docs/ui/components/atoms/vc-banner/vc-banner.docs.md +20 -0
  92. package/runtime/knowledge/docs/ui/components/atoms/vc-button/vc-button.docs.md +32 -5
  93. package/runtime/knowledge/docs/ui/components/atoms/vc-card/vc-card.docs.md +15 -2
  94. package/runtime/knowledge/docs/ui/components/atoms/vc-col/vc-col.docs.md +11 -1
  95. package/runtime/knowledge/docs/ui/components/atoms/vc-container/vc-container.docs.md +10 -0
  96. package/runtime/knowledge/docs/ui/components/atoms/vc-hint/vc-hint.docs.md +20 -0
  97. package/runtime/knowledge/docs/ui/components/atoms/vc-icon/vc-icon.docs.md +24 -0
  98. package/runtime/knowledge/docs/ui/components/atoms/vc-image/vc-image.docs.md +26 -0
  99. package/runtime/knowledge/docs/ui/components/atoms/vc-label/vc-label.docs.md +24 -0
  100. package/runtime/knowledge/docs/ui/components/atoms/vc-link/vc-link.docs.md +22 -0
  101. package/runtime/knowledge/docs/ui/components/atoms/vc-loading/vc-loading.docs.md +21 -0
  102. package/runtime/knowledge/docs/ui/components/atoms/vc-progress/vc-progress.docs.md +20 -0
  103. package/runtime/knowledge/docs/ui/components/atoms/vc-row/vc-row.docs.md +11 -1
  104. package/runtime/knowledge/docs/ui/components/atoms/vc-scrollable-container/vc-scrollable-container.docs.md +11 -1
  105. package/runtime/knowledge/docs/ui/components/atoms/vc-skeleton/vc-skeleton.docs.md +20 -0
  106. package/runtime/knowledge/docs/ui/components/atoms/vc-status/vc-status.docs.md +20 -0
  107. package/runtime/knowledge/docs/ui/components/atoms/vc-status-icon/vc-status-icon.docs.md +20 -0
  108. package/runtime/knowledge/docs/ui/components/atoms/vc-tooltip/vc-tooltip.docs.md +25 -1
  109. package/runtime/knowledge/docs/ui/components/atoms/vc-video/vc-video.docs.md +25 -0
  110. package/runtime/knowledge/docs/ui/components/atoms/vc-widget/vc-widget.docs.md +22 -0
  111. package/runtime/knowledge/docs/ui/components/molecules/multilanguage-selector/multilanguage-selector.docs.md +10 -0
  112. package/runtime/knowledge/docs/ui/components/molecules/vc-accordion/vc-accordion.docs.md +17 -0
  113. package/runtime/knowledge/docs/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.docs.md +27 -0
  114. package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox/vc-checkbox.docs.md +27 -0
  115. package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.docs.md +23 -0
  116. package/runtime/knowledge/docs/ui/components/molecules/vc-color-input/vc-color-input.docs.md +24 -0
  117. package/runtime/knowledge/docs/ui/components/molecules/vc-date-picker/vc-date-picker.docs.md +27 -0
  118. package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown/vc-dropdown.docs.md +27 -0
  119. package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown-panel/vc-dropdown-panel.docs.md +22 -0
  120. package/runtime/knowledge/docs/ui/components/molecules/vc-editor/vc-editor.docs.md +17 -0
  121. package/runtime/knowledge/docs/ui/components/molecules/vc-field/vc-field.docs.md +17 -0
  122. package/runtime/knowledge/docs/ui/components/molecules/vc-file-upload/vc-file-upload.docs.md +17 -0
  123. package/runtime/knowledge/docs/ui/components/molecules/vc-form/vc-form.docs.md +15 -0
  124. package/runtime/knowledge/docs/ui/components/molecules/vc-image-tile/vc-image-tile.docs.md +12 -0
  125. package/runtime/knowledge/docs/ui/components/molecules/vc-input/vc-input.docs.md +30 -0
  126. package/runtime/knowledge/docs/ui/components/molecules/vc-input-currency/vc-input-currency.docs.md +27 -0
  127. package/runtime/knowledge/docs/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.docs.md +26 -0
  128. package/runtime/knowledge/docs/ui/components/molecules/vc-input-group/vc-input-group.docs.md +21 -0
  129. package/runtime/knowledge/docs/ui/components/molecules/vc-menu/vc-menu.docs.md +24 -0
  130. package/runtime/knowledge/docs/ui/components/molecules/vc-multivalue/vc-multivalue.docs.md +28 -0
  131. package/runtime/knowledge/docs/ui/components/molecules/vc-pagination/vc-pagination.docs.md +25 -0
  132. package/runtime/knowledge/docs/ui/components/molecules/vc-radio-button/vc-radio-button.docs.md +25 -0
  133. package/runtime/knowledge/docs/ui/components/molecules/vc-radio-group/vc-radio-group.docs.md +22 -0
  134. package/runtime/knowledge/docs/ui/components/molecules/vc-rating/vc-rating.docs.md +17 -0
  135. package/runtime/knowledge/docs/ui/components/molecules/vc-select/vc-select.docs.md +32 -0
  136. package/runtime/knowledge/docs/ui/components/molecules/vc-slider/vc-slider.docs.md +22 -0
  137. package/runtime/knowledge/docs/ui/components/molecules/vc-switch/vc-switch.docs.md +25 -0
  138. package/runtime/knowledge/docs/ui/components/molecules/vc-textarea/vc-textarea.docs.md +27 -0
  139. package/runtime/knowledge/docs/ui/components/molecules/vc-toast/vc-toast.docs.md +28 -0
  140. package/runtime/knowledge/docs/ui/components/organisms/vc-app/vc-app.docs.md +19 -0
  141. package/runtime/knowledge/docs/ui/components/organisms/vc-auth-layout/vc-auth-layout.docs.md +13 -0
  142. package/runtime/knowledge/docs/ui/components/organisms/vc-blade/vc-blade.docs.md +22 -1
  143. package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/composables/table-composables.docs.md +30 -5
  144. package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/vc-data-table.docs.md +18 -0
  145. package/runtime/knowledge/docs/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.docs.md +12 -0
  146. package/runtime/knowledge/docs/ui/components/organisms/vc-gallery/vc-gallery.docs.md +14 -0
  147. package/runtime/knowledge/docs/ui/components/organisms/vc-image-upload/vc-image-upload.docs.md +12 -0
  148. package/runtime/knowledge/docs/ui/components/organisms/vc-popup/vc-popup.docs.md +14 -1
  149. package/runtime/knowledge/docs/ui/components/organisms/vc-sidebar/vc-sidebar.docs.md +13 -0
  150. package/runtime/knowledge/docs/ui/composables/ui-composables.docs.md +7 -0
  151. package/runtime/knowledge/docs/ui/composables/useDataTablePagination.docs.md +9 -3
  152. package/runtime/knowledge/docs/ui/composables/useDataTableSort.docs.md +6 -0
  153. package/runtime/knowledge/docs/ui/composables/useTableSelection.docs.md +6 -0
  154. package/runtime/knowledge/docs/ui/composables/useTableSort.docs.md +6 -0
  155. 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 -- from toolbar buttons and form submissions to inline table actions and navigation.
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
- > **Note:** Legacy aliases `xs` (maps to `sm`) and `base` (maps to `default`) are supported for backward compatibility.
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/) -- used internally for button icons
304
- - [VcBadge](../vc-badge/) -- can wrap a button to show notification counts
305
- - [VcButtonGroup](./vc-button-group.vue) -- groups buttons with shared size context
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. 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.
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
- > **Note:** 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.
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. 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.
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, 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.
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. 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.
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 -->