@vc-shell/vc-app-skill 2.1.0-pr255.87acc71 → 2.1.0-pr256.0fe3abb

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 (139) hide show
  1. package/package.json +1 -1
  2. package/runtime/knowledge/docs/core/api/platform.docs.md +20 -18
  3. package/runtime/knowledge/docs/core/blade-navigation/blade-nav-composables.docs.md +43 -34
  4. package/runtime/knowledge/docs/core/blade-navigation/table-query-state/useTableQueryState.docs.md +95 -0
  5. package/runtime/knowledge/docs/core/composables/useAppBarMobileButtons/useAppBarMobileButtons.docs.md +5 -3
  6. package/runtime/knowledge/docs/core/composables/useAppBarWidget/useAppBarWidget.docs.md +12 -10
  7. package/runtime/knowledge/docs/core/composables/useAppInsights/useAppInsights.docs.md +7 -5
  8. package/runtime/knowledge/docs/core/composables/useAssets/useAssets.docs.md +8 -6
  9. package/runtime/knowledge/docs/core/composables/useAssetsManager/useAssetsManager.docs.md +3 -1
  10. package/runtime/knowledge/docs/core/composables/useAsync/useAsync.docs.md +1 -1
  11. package/runtime/knowledge/docs/core/composables/useBladeRegistry/useBladeRegistry.docs.md +8 -5
  12. package/runtime/knowledge/docs/core/composables/useBladeWidgets/index.docs.md +12 -12
  13. package/runtime/knowledge/docs/core/composables/useBreadcrumbs/useBreadcrumbs.docs.md +3 -3
  14. package/runtime/knowledge/docs/core/composables/useConnectionStatus/useConnectionStatus.docs.md +4 -3
  15. package/runtime/knowledge/docs/core/composables/useDynamicProperties/useDynamicProperties.docs.md +1 -0
  16. package/runtime/knowledge/docs/core/composables/useFunctions/useFunctions.docs.md +3 -3
  17. package/runtime/knowledge/docs/core/composables/useKeyboardNavigation/useKeyboardNavigation.docs.md +5 -4
  18. package/runtime/knowledge/docs/core/composables/useLanguages/useLanguages.docs.md +3 -3
  19. package/runtime/knowledge/docs/core/composables/useLoading/useLoading.docs.md +2 -0
  20. package/runtime/knowledge/docs/core/composables/useModificationTracker/useModificationTracker.docs.md +1 -2
  21. package/runtime/knowledge/docs/core/composables/useNotifications/useNotifications.docs.md +1 -1
  22. package/runtime/knowledge/docs/core/composables/usePermissions/usePermissions.docs.md +3 -3
  23. package/runtime/knowledge/docs/core/composables/usePlatformLocaleSync/usePlatformLocaleSync.docs.md +35 -0
  24. package/runtime/knowledge/docs/core/composables/usePopup/usePopup.docs.md +1 -1
  25. package/runtime/knowledge/docs/core/composables/useResponsive/useResponsive.docs.md +2 -2
  26. package/runtime/knowledge/docs/core/composables/useSettings/useSettings.docs.md +2 -1
  27. package/runtime/knowledge/docs/core/composables/useSettingsMenu/useSettingsMenu.docs.md +18 -18
  28. package/runtime/knowledge/docs/core/composables/useSidebarState/useSidebarState.docs.md +3 -3
  29. package/runtime/knowledge/docs/core/composables/useSlowNetworkDetection/useSlowNetworkDetection.docs.md +10 -7
  30. package/runtime/knowledge/docs/core/composables/useTheme/useTheme.docs.md +7 -7
  31. package/runtime/knowledge/docs/core/composables/useToolbar/useToolbar.docs.md +18 -12
  32. package/runtime/knowledge/docs/core/composables/useUser/useUser.docs.md +2 -2
  33. package/runtime/knowledge/docs/core/composables/useUserManagement/useUserManagement.docs.md +20 -20
  34. package/runtime/knowledge/docs/core/composables/useWidgets/useWidgets.docs.md +15 -24
  35. package/runtime/knowledge/docs/core/directives/loading/loading.docs.md +2 -2
  36. package/runtime/knowledge/docs/core/notifications/composables/useBladeNotifications.docs.md +183 -0
  37. package/runtime/knowledge/docs/core/notifications/composables/useBroadcastFilter.docs.md +117 -0
  38. package/runtime/knowledge/docs/core/notifications/composables/useNotificationContext.docs.md +150 -0
  39. package/runtime/knowledge/docs/core/notifications/composables/useNotificationStore.docs.md +114 -0
  40. package/runtime/knowledge/docs/core/notifications/notifications.docs.md +50 -30
  41. package/runtime/knowledge/docs/core/plugins/ai-agent/ai-agent.docs.md +30 -11
  42. package/runtime/knowledge/docs/core/plugins/extension-points/extension-points.docs.md +1 -1
  43. package/runtime/knowledge/docs/core/plugins/global-error-handler/global-error-handler.docs.md +2 -3
  44. package/runtime/knowledge/docs/core/plugins/modularity/modularity.docs.md +26 -26
  45. package/runtime/knowledge/docs/core/plugins/permissions/permissions.docs.md +2 -3
  46. package/runtime/knowledge/docs/core/plugins/signalR/signalR.docs.md +11 -50
  47. package/runtime/knowledge/docs/core/plugins/validation/validation.docs.md +9 -6
  48. package/runtime/knowledge/docs/core/services/services.docs.md +15 -13
  49. package/runtime/knowledge/docs/core/types/types.docs.md +37 -40
  50. package/runtime/knowledge/docs/core/utilities/date/date-utilities.docs.md +1 -2
  51. package/runtime/knowledge/docs/core/utilities/shared-utilities.docs.md +21 -30
  52. package/runtime/knowledge/docs/core/utilities/thumbnail/thumbnail.docs.md +2 -2
  53. package/runtime/knowledge/docs/core/utilities/utilities.docs.md +9 -8
  54. package/runtime/knowledge/docs/injection-keys.docs.md +6 -11
  55. package/runtime/knowledge/docs/modules/assets/assets-details.docs.md +123 -0
  56. package/runtime/knowledge/docs/modules/assets-manager/assets-manager.docs.md +1 -1
  57. package/runtime/knowledge/docs/shell/_internal/popup/common/popup-common.docs.md +20 -12
  58. package/runtime/knowledge/docs/shell/auth/ChangePasswordPage/change-password-page.docs.md +10 -10
  59. package/runtime/knowledge/docs/shell/auth/ForgotPasswordPage/forgot-password-page.docs.md +6 -6
  60. package/runtime/knowledge/docs/shell/auth/InvitePage/invite-page.docs.md +4 -4
  61. package/runtime/knowledge/docs/shell/auth/LoginPage/login-page.docs.md +16 -14
  62. package/runtime/knowledge/docs/shell/auth/ResetPasswordPage/reset-password-page.docs.md +1 -1
  63. package/runtime/knowledge/docs/shell/auth/sign-in/sign-in.docs.md +12 -11
  64. package/runtime/knowledge/docs/shell/components/change-password/change-password.docs.md +10 -3
  65. package/runtime/knowledge/docs/shell/components/change-password-button/change-password-button.docs.md +3 -3
  66. package/runtime/knowledge/docs/shell/components/error-interceptor/error-interceptor.docs.md +9 -2
  67. package/runtime/knowledge/docs/shell/components/language-selector/language-selector.docs.md +4 -2
  68. package/runtime/knowledge/docs/shell/components/logout-button/logout-button.docs.md +1 -1
  69. package/runtime/knowledge/docs/shell/components/notification-dropdown/notification-dropdown.docs.md +35 -31
  70. package/runtime/knowledge/docs/shell/components/notification-template/notification-template.docs.md +17 -11
  71. package/runtime/knowledge/docs/shell/components/settings-menu/settings-menu.docs.md +8 -7
  72. package/runtime/knowledge/docs/shell/components/settings-menu-item/settings-menu-item.docs.md +23 -21
  73. package/runtime/knowledge/docs/shell/components/sidebar/sidebar.docs.md +5 -3
  74. package/runtime/knowledge/docs/shell/components/theme-selector/theme-selector.docs.md +7 -7
  75. package/runtime/knowledge/docs/shell/components/user-dropdown-button/user-dropdown-button.docs.md +11 -11
  76. package/runtime/knowledge/docs/shell/dashboard/dashboard-charts/dashboard-charts.docs.md +28 -16
  77. package/runtime/knowledge/docs/shell/dashboard/dashboard-widget-card/dashboard-widget-card.docs.md +17 -19
  78. package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/dashboard-widget-skeleton.docs.md +33 -0
  79. package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/draggable-dashboard.docs.md +21 -0
  80. package/runtime/knowledge/docs/ui/components/atoms/vc-badge/vc-badge.docs.md +2 -1
  81. package/runtime/knowledge/docs/ui/components/atoms/vc-banner/vc-banner.docs.md +2 -2
  82. package/runtime/knowledge/docs/ui/components/atoms/vc-button/vc-button.docs.md +15 -14
  83. package/runtime/knowledge/docs/ui/components/atoms/vc-container/vc-container.docs.md +9 -6
  84. package/runtime/knowledge/docs/ui/components/atoms/vc-environment-banner/vc-environment-banner.docs.md +42 -0
  85. package/runtime/knowledge/docs/ui/components/atoms/vc-hint/vc-hint.docs.md +1 -1
  86. package/runtime/knowledge/docs/ui/components/atoms/vc-icon/vc-icon.docs.md +10 -9
  87. package/runtime/knowledge/docs/ui/components/atoms/vc-image/vc-image.docs.md +19 -4
  88. package/runtime/knowledge/docs/ui/components/atoms/vc-label/vc-label.docs.md +2 -2
  89. package/runtime/knowledge/docs/ui/components/atoms/vc-link/vc-link.docs.md +5 -4
  90. package/runtime/knowledge/docs/ui/components/atoms/vc-loading/vc-loading.docs.md +5 -4
  91. package/runtime/knowledge/docs/ui/components/atoms/vc-progress/vc-progress.docs.md +9 -8
  92. package/runtime/knowledge/docs/ui/components/atoms/vc-scrollable-container/vc-scrollable-container.docs.md +7 -0
  93. package/runtime/knowledge/docs/ui/components/atoms/vc-skeleton/vc-skeleton.docs.md +1 -1
  94. package/runtime/knowledge/docs/ui/components/atoms/vc-status/vc-status.docs.md +2 -2
  95. package/runtime/knowledge/docs/ui/components/atoms/vc-status-icon/vc-status-icon.docs.md +1 -1
  96. package/runtime/knowledge/docs/ui/components/atoms/vc-tooltip/vc-tooltip.docs.md +11 -10
  97. package/runtime/knowledge/docs/ui/components/atoms/vc-video/vc-video.docs.md +28 -8
  98. package/runtime/knowledge/docs/ui/components/atoms/vc-widget/vc-widget.docs.md +22 -19
  99. package/runtime/knowledge/docs/ui/components/molecules/multilanguage-selector/multilanguage-selector.docs.md +8 -8
  100. package/runtime/knowledge/docs/ui/components/molecules/vc-accordion/vc-accordion.docs.md +16 -6
  101. package/runtime/knowledge/docs/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.docs.md +9 -8
  102. package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox/vc-checkbox.docs.md +42 -34
  103. package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.docs.md +1 -1
  104. package/runtime/knowledge/docs/ui/components/molecules/vc-color-input/vc-color-input.docs.md +14 -1
  105. package/runtime/knowledge/docs/ui/components/molecules/vc-date-picker/vc-date-picker.docs.md +3 -1
  106. package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown/vc-dropdown.docs.md +34 -33
  107. package/runtime/knowledge/docs/ui/components/molecules/vc-editor/vc-editor.docs.md +26 -24
  108. package/runtime/knowledge/docs/ui/components/molecules/vc-field/vc-field.docs.md +12 -14
  109. package/runtime/knowledge/docs/ui/components/molecules/vc-file-upload/vc-file-upload.docs.md +30 -30
  110. package/runtime/knowledge/docs/ui/components/molecules/vc-input/vc-input.docs.md +2 -2
  111. package/runtime/knowledge/docs/ui/components/molecules/vc-input-currency/vc-input-currency.docs.md +1 -1
  112. package/runtime/knowledge/docs/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.docs.md +34 -31
  113. package/runtime/knowledge/docs/ui/components/molecules/vc-input-group/vc-input-group.docs.md +14 -12
  114. package/runtime/knowledge/docs/ui/components/molecules/vc-menu/vc-menu.docs.md +1 -1
  115. package/runtime/knowledge/docs/ui/components/molecules/vc-multivalue/vc-multivalue.docs.md +36 -27
  116. package/runtime/knowledge/docs/ui/components/molecules/vc-pagination/vc-pagination.docs.md +5 -1
  117. package/runtime/knowledge/docs/ui/components/molecules/{vc-dropdown-panel/vc-dropdown-panel.docs.md → vc-popover/vc-popover.docs.md} +26 -25
  118. package/runtime/knowledge/docs/ui/components/molecules/vc-radio-button/vc-radio-button.docs.md +10 -9
  119. package/runtime/knowledge/docs/ui/components/molecules/vc-select/vc-select.docs.md +44 -19
  120. package/runtime/knowledge/docs/ui/components/molecules/vc-slider/vc-slider.docs.md +11 -11
  121. package/runtime/knowledge/docs/ui/components/molecules/vc-switch/vc-switch.docs.md +15 -14
  122. package/runtime/knowledge/docs/ui/components/molecules/vc-textarea/vc-textarea.docs.md +15 -15
  123. package/runtime/knowledge/docs/ui/components/molecules/vc-toast/vc-toast.docs.md +15 -13
  124. package/runtime/knowledge/docs/ui/components/organisms/vc-app/vc-app.docs.md +5 -1
  125. package/runtime/knowledge/docs/ui/components/organisms/vc-auth-layout/vc-auth-layout.docs.md +18 -0
  126. package/runtime/knowledge/docs/ui/components/organisms/vc-blade/vc-blade.docs.md +48 -78
  127. package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/composables/table-composables.docs.md +9 -11
  128. package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/vc-data-table.docs.md +71 -43
  129. package/runtime/knowledge/docs/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.docs.md +27 -20
  130. package/runtime/knowledge/docs/ui/components/organisms/vc-gallery/vc-gallery.docs.md +2 -2
  131. package/runtime/knowledge/docs/ui/components/organisms/vc-image-upload/vc-image-upload.docs.md +12 -12
  132. package/runtime/knowledge/docs/ui/components/organisms/vc-popup/vc-popup.docs.md +33 -24
  133. package/runtime/knowledge/docs/ui/components/organisms/vc-scheduler/vc-scheduler.docs.md +412 -0
  134. package/runtime/knowledge/docs/ui/components/organisms/vc-sidebar/vc-sidebar.docs.md +43 -26
  135. package/runtime/knowledge/docs/ui/composables/ui-composables.docs.md +15 -9
  136. package/runtime/knowledge/docs/ui/composables/useDataTableSort.docs.md +8 -6
  137. package/runtime/knowledge/docs/ui/composables/useTableSearch.docs.md +130 -0
  138. package/runtime/knowledge/docs/ui/composables/useTableSelection.docs.md +4 -4
  139. package/runtime/knowledge/docs/ui/composables/useTableSort.docs.md +2 -3
@@ -240,40 +240,43 @@ Replace the default dropdown toggle with a custom element using the `button` slo
240
240
 
241
241
  ## Props
242
242
 
243
- | Prop | Type | Default | Description |
244
- | -------------- | -------------------------------------------------------------------------------------------------------------------- | --------- | ------------------------------------------------------ |
245
- | `modelValue` | `string \| number \| Date \| null` | -- | Input field value via `v-model` |
246
- | `option` | `unknown` | -- | Selected dropdown option via `v-model:option` |
247
- | `options` | `unknown[]` | `[]` | Available options for the dropdown |
248
- | `optionValue` | `string \| ((opt: unknown) => unknown)` | `"id"` | Property name or function to extract the option value |
249
- | `optionLabel` | `string \| ((opt: unknown) => string)` | `"title"` | Property name or function to extract the display label |
250
- | `inputType` | `"text" \| "number" \| "email" \| "tel" \| "password" \| "url" \| "time" \| "date" \| "datetime-local" \| "integer"` | `"text"` | HTML input type |
251
- | `searchable` | `boolean` | `false` | Enable search filtering in the dropdown |
252
- | `debounce` | `string \| number` | `0` | Debounce delay (ms) for search input |
253
- | `clearable` | `boolean` | `false` | Show a clear button on the input |
254
- | `prefix` | `string` | -- | Static prefix text inside the input |
255
- | `suffix` | `string` | -- | Static suffix text inside the input |
256
- | `maxlength` | `string \| number` | `1024` | Maximum character length for the input |
257
- | `label` | `string` | -- | Field label text |
258
- | `placeholder` | `string` | -- | Input placeholder text |
259
- | `hint` | `string` | -- | Hint text below the field |
260
- | `tooltip` | `string` | -- | Tooltip on the label |
261
- | `disabled` | `boolean` | `false` | Disable all interactions |
262
- | `required` | `boolean` | `false` | Mark field as required (shows asterisk) |
263
- | `loading` | `boolean` | `false` | Show loading spinner |
264
- | `autofocus` | `boolean` | `false` | Auto-focus on mount |
265
- | `error` | `boolean` | `false` | External error flag |
266
- | `errorMessage` | `string` | -- | Error message (sets error state when truthy) |
267
- | `name` | `string` | -- | HTML name attribute for the input |
243
+ | Prop | Type | Default | Description |
244
+ | ----------------- | -------------------------------------------------------------------------------------------------------------------- | --------- | --------------------------------------------------------------------------------- |
245
+ | `modelValue` | `string \| number \| Date \| null` | -- | Input field value via `v-model` |
246
+ | `option` | `unknown` | -- | Selected dropdown option via `v-model:option` |
247
+ | `options` | `unknown[]` | `[]` | Available options for the dropdown |
248
+ | `optionValue` | `string \| ((opt: unknown) => unknown)` | `"id"` | Property name or function to extract the option value |
249
+ | `optionLabel` | `string \| ((opt: unknown) => string)` | `"title"` | Property name or function to extract the display label |
250
+ | `inputType` | `"text" \| "number" \| "email" \| "tel" \| "password" \| "url" \| "time" \| "date" \| "datetime-local" \| "integer"` | `"text"` | HTML input type |
251
+ | `searchable` | `boolean` | `false` | Enable search filtering in the dropdown |
252
+ | `debounce` | `string \| number` | `0` | Debounce delay (ms) for search input |
253
+ | `clearable` | `boolean` | `false` | Show a clear button on the input |
254
+ | `prefix` | `string` | -- | Static prefix text inside the input |
255
+ | `suffix` | `string` | -- | Static suffix text inside the input |
256
+ | `maxlength` | `string \| number` | `1024` | Maximum character length for the input |
257
+ | `size` | `"default" \| "small"` | -- | Inherited from `ITextFieldProps`; currently inert (not forwarded to the template) |
258
+ | `label` | `string` | -- | Field label text |
259
+ | `placeholder` | `string` | -- | Input placeholder text |
260
+ | `hint` | `string` | -- | Hint text below the field |
261
+ | `tooltip` | `string` | -- | Tooltip on the label |
262
+ | `disabled` | `boolean` | `false` | Disable all interactions |
263
+ | `required` | `boolean` | `false` | Mark field as required (shows asterisk) |
264
+ | `loading` | `boolean` | `false` | Show loading spinner |
265
+ | `autofocus` | `boolean` | `false` | Auto-focus on mount |
266
+ | `error` | `boolean` | `false` | External error flag |
267
+ | `errorMessage` | `string` | -- | Error message (sets error state when truthy) |
268
+ | `name` | `string` | -- | HTML name attribute for the input |
269
+ | `multilanguage` | `boolean` | `false` | Enable multilanguage editing (forwarded to VcSelect) |
270
+ | `currentLanguage` | `string` | -- | Active language for multilanguage mode (forwarded to VcSelect) |
268
271
 
269
272
  ## Events
270
273
 
271
- | Event | Payload | Description |
272
- | ------------------- | ---------------------------------- | -------------------------- |
273
- | `update:modelValue` | `string \| number \| Date \| null` | Input value changed |
274
- | `update:option` | `unknown` | Dropdown selection changed |
275
- | `change` | `unknown` | Generic change event |
276
- | `blur` | `Event` | Input lost focus |
274
+ | Event | Payload | Description |
275
+ | ------------------- | ---------------------------------- | ---------------------------------- |
276
+ | `update:modelValue` | `string \| number \| Date \| null` | Input value changed |
277
+ | `update:option` | `unknown` | Dropdown selection changed |
278
+ | `change` | `unknown` | Declared but not currently emitted |
279
+ | `blur` | `Event` | Input lost focus |
277
280
 
278
281
  ## Slots
279
282
 
@@ -48,17 +48,19 @@ const lastName = ref("");
48
48
 
49
49
  ## Key Props
50
50
 
51
- | Prop | Type | Default | Description |
52
- | ------------------------ | ---------------------------- | ------------ | ------------------------------------------ |
53
- | `label` | `string` | -- | Group label rendered as a `<legend>` |
54
- | `tooltip` | `string` | -- | Tooltip on the label's info icon |
55
- | `hint` | `string` | -- | Helper text below the group |
56
- | `orientation` | `"vertical" \| "horizontal"` | `"vertical"` | Layout direction for child controls |
57
- | `role` | `"group" \| "radiogroup"` | `"group"` | ARIA role for the fieldset |
58
- | `disabled` | `boolean` | `false` | Disables all controls in the group |
59
- | `error` / `errorMessage` | `boolean` / `string` | -- | Group-level error styling and message |
60
- | `required` | `boolean` | `false` | Shows required indicator on the label |
61
- | `name` | `string` | -- | Shared `name` propagated to child controls |
51
+ | Prop | Type | Default | Description |
52
+ | ------------------------ | ---------------------------- | ------------ | ------------------------------------------------------------------- |
53
+ | `label` | `string` | -- | Group label rendered as a `<legend>` |
54
+ | `tooltip` | `string` | -- | Tooltip on the label's info icon |
55
+ | `hint` | `string` | -- | Helper text below the group |
56
+ | `orientation` | `"vertical" \| "horizontal"` | `"vertical"` | Layout direction for child controls |
57
+ | `role` | `"group" \| "radiogroup"` | `"group"` | ARIA role for the fieldset |
58
+ | `disabled` | `boolean` | `false` | Disables all controls in the group |
59
+ | `error` / `errorMessage` | `boolean` / `string` | -- | Group-level error styling and message |
60
+ | `required` | `boolean` | `false` | Shows required indicator on the label |
61
+ | `name` | `string` | -- | Shared `name` propagated to child controls |
62
+ | `ariaLabel` | `string` | -- | Sets `aria-label` on the fieldset |
63
+ | `ariaLabelledby` | `string` | -- | Sets `aria-labelledby` on the fieldset (fallback when no legend id) |
62
64
 
63
65
  ## Common Patterns
64
66
 
@@ -126,7 +128,7 @@ const lastName = ref("");
126
128
 
127
129
  ## Architecture Notes
128
130
 
129
- - `disabled` and `name` are provided via Vue's provide/inject mechanism using injection keys from `framework/injection-keys.ts`. Child form controls (`VcInput`, `VcRadioButton`, etc.) inject these to inherit group-level state automatically.
131
+ - Group state is provided via `InputGroupContextKey` (defined locally in `./context.ts`), carrying `{ name, disabled, invalid, describedBy }`. Child form controls (`VcInput`, `VcRadioButton`, etc.) inject this context to inherit group-level state automatically.
130
132
  - The `orientation` prop controls flex direction (`column` vs `row`) on the fieldset's content area.
131
133
  - Source file: `framework/ui/components/molecules/vc-input-group/vc-input-group.vue`
132
134
  - Context file: `framework/ui/components/molecules/vc-input-group/context.ts`
@@ -111,7 +111,7 @@ When `expanded` is `false`, the menu shows only icons and letter abbreviations.
111
111
 
112
112
  | Variable | Default | Description |
113
113
  | --------------- | ------- | ---------------------- |
114
- | `--vc-menu-gap` | `2px` | Gap between menu items |
114
+ | `--vc-menu-gap` | `8px` | Gap between menu items |
115
115
 
116
116
  ## Accessibility
117
117
 
@@ -49,7 +49,7 @@ const tags = ref<Array<{ id?: string }>>([]);
49
49
 
50
50
  ### Free-form Text Entry
51
51
 
52
- In the default mode (`multivalue` is `false`), users type a value into the input and press **Enter** or **comma** to add it as a chip. This mode works with different input types.
52
+ In the default mode (`multivalue` is `false`), users type a value into the input and press **Enter** to add it as a chip. This mode works with different input types.
53
53
 
54
54
  ```vue
55
55
  <VcMultivalue v-model="tags" label="Keywords" placeholder="Type and press Enter" />
@@ -305,34 +305,44 @@ const selectedArray = ref([{ id: "1", title: "Option 1" }]);
305
305
 
306
306
  ## Slots
307
307
 
308
- | Slot | Scope | Description |
309
- | --------------- | ------------------------------------------------------------------------- | ---------------------------------------------------------- |
310
- | `option` | `{ item: T, index: number }` | Custom rendering for dropdown options (dictionary mode) |
311
- | `selected-item` | `{ value: string \| number, item: T, index: number, remove: () => void }` | Custom rendering for selected value chips |
312
- | `prepend` | -- | Content rendered before the field area (inside the border) |
313
- | `append` | -- | Content rendered after the field area (inside the border) |
314
- | `error` | -- | Custom error message markup (replaces default VcHint) |
315
- | `hint` | -- | Custom hint markup (replaces default VcHint) |
308
+ | Slot | Scope | Description |
309
+ | --------------- | --------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
310
+ | `option` | `{ item: T, index: number }` | Custom rendering for dropdown options (dictionary mode) |
311
+ | `selected-item` | `{ value: string \| number \| T[keyof T], item: T, index: number, remove: () => void }` | Custom rendering for selected value chips |
312
+ | `prepend` | -- | Content rendered before the field area (inside the border) |
313
+ | `append` | -- | Content rendered after the field area (inside the border) |
314
+ | `error` | -- | Custom error message markup (replaces default VcHint) |
315
+ | `hint` | -- | Custom hint markup (replaces default VcHint) |
316
316
 
317
317
  ## CSS Variables
318
318
 
319
319
  The component uses `--multivalue-*` variables that fall back to `--select-*` tokens for visual consistency with VcSelect.
320
320
 
321
- | Variable | Default | Description |
322
- | ------------------------------------ | ---------------------------------------------------------------------- | --------------------------------- |
323
- | `--multivalue-height` | `36px` | Minimum height of the input field |
324
- | `--multivalue-border-radius` | `var(--select-border-radius, 6px)` | Border radius |
325
- | `--multivalue-border-color` | `var(--select-border-color, var(--neutrals-300))` | Default border color |
326
- | `--multivalue-background-color` | `var(--select-background-color, transparent)` | Field background |
327
- | `--multivalue-text-color` | `var(--select-text-color, var(--neutrals-800))` | Field text color |
328
- | `--multivalue-chip-background-color` | `var(--select-multiple-options-background-color, var(--neutrals-100))` | Chip background |
329
- | `--multivalue-chip-border-color` | `var(--select-multiple-options-border-color, var(--neutrals-200))` | Chip border |
330
- | `--multivalue-border-color-focus` | `var(--select-border-color-focus, var(--primary-500))` | Border color on focus |
331
- | `--multivalue-focus-ring-color` | `var(--select-focus-ring-color, var(--primary-100))` | Focus ring color |
332
- | `--multivalue-border-color-error` | `var(--select-border-color-error, var(--danger-500))` | Border on error |
333
- | `--multivalue-error-ring-color` | `var(--select-error-ring-color, var(--danger-100))` | Error ring color |
334
- | `--multivalue-disabled-text-color` | `var(--neutrals-500)` | Disabled text color |
335
- | `--multivalue-loading-color` | `var(--select-loading-color, var(--info-500))` | Loading spinner color |
321
+ | Variable | Default | Description |
322
+ | ------------------------------------------ | ----------------------------------------------------------------------------------------------- | --------------------------------- |
323
+ | `--multivalue-height` | `36px` | Minimum height of the input field |
324
+ | `--multivalue-border-radius` | `var(--select-border-radius, 6px)` | Border radius |
325
+ | `--multivalue-border-color` | `var(--select-border-color, var(--neutrals-300))` | Default border color |
326
+ | `--multivalue-background-color` | `var(--select-background-color, transparent)` | Field background |
327
+ | `--multivalue-text-color` | `var(--select-text-color, var(--neutrals-800))` | Field text color |
328
+ | `--multivalue-placeholder-color` | `var(--select-placeholder-color, var(--neutrals-400))` | Placeholder text color |
329
+ | `--multivalue-padding` | `10px` | Field inner padding |
330
+ | `--multivalue-dropdown-bg` | `var(--select-dropdown-bg, var(--additional-50))` | Dropdown panel background |
331
+ | `--multivalue-dropdown-border` | `var(--select-dropdown-border, var(--neutrals-200))` | Dropdown panel border |
332
+ | `--multivalue-dropdown-shadow` | `var(--select-dropdown-shadow, 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1))` | Dropdown panel shadow |
333
+ | `--multivalue-search-border-color` | `var(--select-search-border-color, var(--neutrals-200))` | Search input border color |
334
+ | `--multivalue-item-hover-background-color` | `var(--select-option-background-color-hover, var(--neutrals-100))` | Option row hover background |
335
+ | `--multivalue-chip-background-color` | `var(--select-multiple-options-background-color, var(--neutrals-100))` | Chip background |
336
+ | `--multivalue-chip-border-color` | `var(--select-multiple-options-border-color, var(--neutrals-200))` | Chip border |
337
+ | `--multivalue-clear-icon-color` | `var(--select-clear-color, var(--neutrals-400))` | Clear icon color |
338
+ | `--multivalue-clear-icon-color-hover` | `var(--select-clear-color-hover, var(--neutrals-600))` | Clear icon hover color |
339
+ | `--multivalue-border-color-focus` | `var(--select-border-color-focus, var(--primary-500))` | Border color on focus |
340
+ | `--multivalue-focus-ring-color` | `var(--select-focus-ring-color, var(--primary-100))` | Focus ring color |
341
+ | `--multivalue-border-color-error` | `var(--select-border-color-error, var(--danger-500))` | Border on error |
342
+ | `--multivalue-error-ring-color` | `var(--select-error-ring-color, var(--danger-100))` | Error ring color |
343
+ | `--multivalue-hint-color` | `var(--danger-500)` | Hint/error message text color |
344
+ | `--multivalue-disabled-text-color` | `var(--neutrals-500)` | Disabled text color |
345
+ | `--multivalue-loading-color` | `var(--select-loading-color, var(--info-500))` | Loading spinner color |
336
346
 
337
347
  ## Accessibility
338
348
 
@@ -341,8 +351,7 @@ The component uses `--multivalue-*` variables that fall back to `--select-*` tok
341
351
  - Dropdown list has `role="listbox"` with a generated `id`
342
352
  - Chip remove buttons are individually focusable
343
353
  - Keyboard navigation:
344
- - **Enter** / **comma** -- submits the current input as a new value
345
- - **Backspace** -- removes the last chip when the input is empty
354
+ - **Enter** -- submits the current input as a new value (blur also submits, via `onInputSubmit`)
346
355
  - **Arrow keys** -- navigate items in the dropdown (dictionary mode)
347
356
  - **Escape** -- closes the dropdown
348
357
  - The `required` prop sets `aria-required` on the field
@@ -366,7 +375,7 @@ This behavior is powered by `BladeLoadingKey` via Vue's provide/inject. The comp
366
375
 
367
376
  - Composed of internal sub-components in `vc-multivalue/_internal/`: the chip list renderer, the dropdown panel, and the trigger input.
368
377
  - Composables are in `vc-multivalue/composables/` — chip management and dropdown open/close state are separated into composables.
369
- - Free-form mode: each `keydown` for Enter or comma (`','`) triggers a chip add; Backspace on empty input removes the last chip.
378
+ - Free-form mode: Enter (`@keypress.enter`) or blur triggers a chip add. Chip removal is done only via the chip's remove button.
370
379
  - Dictionary mode: already-selected items are filtered out of the dropdown list reactively.
371
380
  - Source file: `framework/ui/components/molecules/vc-multivalue/vc-multivalue.vue`
372
381
  - Internal components: `framework/ui/components/molecules/vc-multivalue/_internal/`
@@ -57,7 +57,7 @@ VcPagination displays a sliding window of page number buttons centered on the cu
57
57
  - **Desktop:** 5 visible page buttons (default)
58
58
  - **Mobile:** 3 visible page buttons (default)
59
59
 
60
- The component detects the viewport via the injected `IsMobileKey`. You can override the window size with the `maxPages` prop regardless of viewport.
60
+ The component detects the viewport via `useResponsive()` (`isMobile`). You can override the window size with the `maxPages` prop regardless of viewport.
61
61
 
62
62
  ```vue
63
63
  <!-- Always show exactly 3 page buttons -->
@@ -265,6 +265,7 @@ currentPage.value = Math.min(currentPage.value, totalPages.value);
265
265
  | `maxPages` | `number` | -- | Override visible page button count. Default: 3 on mobile, 5 on desktop |
266
266
  | `showFirstLast` | `boolean` | `true` | Show first/last page navigation buttons |
267
267
  | `variant` | `"default" \| "minimal"` | `"default"` | Visual style variant |
268
+ | `expanded` | `boolean` | -- | Declared but currently unused in the template |
268
269
 
269
270
  ## Events
270
271
 
@@ -287,6 +288,9 @@ currentPage.value = Math.min(currentPage.value, totalPages.value);
287
288
  | `--pagination-item-color-disabled` | `var(--neutrals-400)` | Disabled button text color |
288
289
  | `--pagination-item-background-color-disabled` | `var(--neutrals-100)` | Disabled button background |
289
290
  | `--pagination-item-border-color` | `var(--secondary-100)` | Default border color |
291
+ | `--pagination-item-border-color-hover` | `var(--neutrals-200)` | Hover border color |
292
+ | `--pagination-item-border-color-current` | `var(--neutrals-200)` | Current page border color |
293
+ | `--pagination-item-border-color-disabled` | `var(--neutrals-200)` | Disabled button border color |
290
294
  | `--pagination-focus-ring-color` | `var(--primary-100)` | Focus ring color for keyboard navigation |
291
295
 
292
296
  ## Accessibility
@@ -1,14 +1,14 @@
1
1
  ---
2
- title: VcDropdownPanel
2
+ title: VcPopover
3
3
  category: components
4
4
  group: navigation
5
5
  ---
6
6
 
7
- # VcDropdownPanel
7
+ # VcPopover
8
8
 
9
- Floating dropdown panel positioned relative to an anchor element, with header, scrollable content, and optional footer. Built on `@floating-ui/vue`.
9
+ Anchored floating panel (popover) positioned relative to an anchor element, with header, scrollable content, and optional footer. Built on `@floating-ui/vue`.
10
10
 
11
- ::storybook id="overlay-vcdropdownpanel--default"
11
+ ::storybook id="overlay-vcpopover--default"
12
12
 
13
13
  ## When to Use
14
14
 
@@ -27,7 +27,7 @@ Floating dropdown panel positioned relative to an anchor element, with header, s
27
27
  >
28
28
  Toggle Panel
29
29
  </button>
30
- <VcDropdownPanel
30
+ <VcPopover
31
31
  v-model:show="open"
32
32
  :anchor-ref="anchorEl"
33
33
  title="Filter Options"
@@ -35,12 +35,12 @@ Floating dropdown panel positioned relative to an anchor element, with header, s
35
35
  <div class="tw-p-4">
36
36
  <p>Panel content here</p>
37
37
  </div>
38
- </VcDropdownPanel>
38
+ </VcPopover>
39
39
  </template>
40
40
 
41
41
  <script setup lang="ts">
42
42
  import { ref } from "vue";
43
- import { VcDropdownPanel } from "@vc-shell/framework";
43
+ import { VcPopover } from "@vc-shell/framework";
44
44
 
45
45
  const anchorEl = ref<HTMLElement | null>(null);
46
46
  const open = ref(false);
@@ -78,12 +78,12 @@ const open = ref(false);
78
78
 
79
79
  ## Common Patterns
80
80
 
81
- ::storybook id="overlay-vcdropdownpanel--with-footer"
81
+ ::storybook id="overlay-vcpopover--with-footer"
82
82
 
83
83
  ### Filter Panel with Footer Actions
84
84
 
85
85
  ```vue
86
- <VcDropdownPanel v-model:show="showFilters" :anchor-ref="filterButton" title="Filters">
86
+ <VcPopover v-model:show="showFilters" :anchor-ref="filterButton" title="Filters">
87
87
  <div class="tw-p-4 tw-flex tw-flex-col tw-gap-2">
88
88
  <VcCheckbox v-model="filters.active">Active only</VcCheckbox>
89
89
  <VcCheckbox v-model="filters.inStock">In stock</VcCheckbox>
@@ -93,13 +93,13 @@ const open = ref(false);
93
93
  <VcButton variant="secondary" @click="resetFilters">Reset</VcButton>
94
94
  <VcButton @click="applyFilters">Apply</VcButton>
95
95
  </template>
96
- </VcDropdownPanel>
96
+ </VcPopover>
97
97
  ```
98
98
 
99
99
  ### Custom Header
100
100
 
101
101
  ```vue
102
- <VcDropdownPanel v-model:show="open" :anchor-ref="anchor">
102
+ <VcPopover v-model:show="open" :anchor-ref="anchor">
103
103
  <template #header="{ close }">
104
104
  <div class="tw-flex tw-items-center tw-justify-between tw-w-full tw-px-4 tw-py-3">
105
105
  <span class="tw-font-semibold">Custom Header</span>
@@ -107,13 +107,13 @@ const open = ref(false);
107
107
  </div>
108
108
  </template>
109
109
  <div class="tw-p-4">Content here</div>
110
- </VcDropdownPanel>
110
+ </VcPopover>
111
111
  ```
112
112
 
113
113
  ### Scrollable List
114
114
 
115
115
  ```vue
116
- <VcDropdownPanel v-model:show="open" :anchor-ref="anchor" title="Long Content" :max-height="250">
116
+ <VcPopover v-model:show="open" :anchor-ref="anchor" title="Long Content" :max-height="250">
117
117
  <div class="tw-py-1">
118
118
  <div
119
119
  v-for="item in items"
@@ -123,22 +123,23 @@ const open = ref(false);
123
123
  {{ item.name }}
124
124
  </div>
125
125
  </div>
126
- </VcDropdownPanel>
126
+ </VcPopover>
127
127
  ```
128
128
 
129
129
  ## CSS Variables
130
130
 
131
- | Variable | Default | Description |
132
- | ------------------------------------ | ----------------------------- | ------------------------ |
133
- | `--dropdown-panel-bg` | `var(--additional-50)` | Panel background |
134
- | `--dropdown-panel-border-color` | `var(--neutrals-200)` | Border color |
135
- | `--dropdown-panel-border-radius` | `6px` | Corner radius |
136
- | `--dropdown-panel-shadow` | `0 4px 16px rgba(0,0,0,0.08)` | Box shadow |
137
- | `--dropdown-panel-z-index` | `10001` | Z-index |
138
- | `--dropdown-panel-title-color` | `var(--neutrals-900)` | Title text color |
139
- | `--dropdown-panel-close-color` | `var(--neutrals-400)` | Close button color |
140
- | `--dropdown-panel-close-hover-color` | `var(--neutrals-600)` | Close button hover color |
141
- | `--dropdown-panel-footer-bg` | `var(--neutrals-50)` | Footer background |
131
+ | Variable | Default | Description |
132
+ | -------------------------------- | ----------------------------- | ------------------------ |
133
+ | `--vc-popover-bg` | `var(--additional-50)` | Panel background |
134
+ | `--vc-popover-border-color` | `var(--neutrals-200)` | Border color |
135
+ | `--vc-popover-border-radius` | `6px` | Corner radius |
136
+ | `--vc-popover-shadow` | `0 4px 16px rgba(0,0,0,0.08)` | Box shadow |
137
+ | `--vc-popover-title-color` | `var(--neutrals-900)` | Title text color |
138
+ | `--vc-popover-close-color` | `var(--neutrals-400)` | Close button color |
139
+ | `--vc-popover-close-hover-color` | `var(--neutrals-600)` | Close button hover color |
140
+ | `--vc-popover-footer-bg` | `var(--neutrals-50)` | Footer background |
141
+
142
+ The panel's z-index comes from the global `--z-critical-floating-panel` token and is not overridable per-instance.
142
143
 
143
144
  ## Accessibility
144
145
 
@@ -66,15 +66,16 @@ const method = ref("standard");
66
66
 
67
67
  ## Key Props
68
68
 
69
- | Prop | Type | Default | Description |
70
- | ------------------------ | -------------------- | -------------- | --------------------------------------------------------------- |
71
- | `modelValue` | `T` | `undefined` | Bound value via `v-model` (shared across the group) |
72
- | `value` | `T` | -- | This radio button's value. Selected when `modelValue === value` |
73
- | `label` | `string` | -- | Text label next to the radio circle |
74
- | `name` | `string` | `"RadioField"` | HTML `name` attribute (must be shared within a group) |
75
- | `binary` | `boolean` | `false` | Enables boolean toggle mode (clicking toggles `true`/`false`) |
76
- | `disabled` | `boolean` | `false` | Disables this radio button |
77
- | `error` / `errorMessage` | `boolean` / `string` | -- | Error styling and message |
69
+ | Prop | Type | Default | Description |
70
+ | ------------------------ | -------------------- | -------------- | ------------------------------------------------------------------------------------------------- |
71
+ | `modelValue` | `T` | `undefined` | Bound value via `v-model` (shared across the group) |
72
+ | `value` | `T` | -- | This radio button's value. Selected when `modelValue === value` |
73
+ | `label` | `string` | -- | Text label next to the radio circle |
74
+ | `name` | `string` | `"RadioField"` | HTML `name` attribute (must be shared within a group) |
75
+ | `binary` | `boolean` | `false` | Enables boolean toggle mode (clicking toggles `true`/`false`) |
76
+ | `disabled` | `boolean` | `false` | Disables this radio button |
77
+ | `error` / `errorMessage` | `boolean` / `string` | -- | Error styling and message |
78
+ | `ariaLabel` | `string` | -- | Accessible name for the input when no visible `label` is set. Applied only when `label` is empty. |
78
79
 
79
80
  ## Common Patterns
80
81
 
@@ -642,36 +642,61 @@ Don't forget `:key` with cascading selects, otherwise the second select will ret
642
642
 
643
643
  ## Slots
644
644
 
645
- | Slot | Scope | Description |
646
- | -------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------ |
647
- | `option` | `{ index, opt, selected, toggleOption }` | Custom option rendering. **You must call `toggleOption(opt)` on click.** |
648
- | `selected-item` | `{ index, opt, selected, removeAtIndex }` | Custom rendering of selected chips (multiple) |
649
- | `control` | `{ toggleHandler, isOpened }` | Full trigger replacement |
650
- | `prepend` / `append` | — | Content outside the field |
651
- | `prepend-inner` / `append-inner` | — | Content inside the field |
652
- | `no-options` | — | Shown when there are no options |
653
- | `error` / `hint` | — | Custom rendering of error/hint |
645
+ | Slot | Scope | Description |
646
+ | -------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------ |
647
+ | `option` | `{ index, opt, selected, label, toggleOption }` | Custom option rendering. **You must call `toggleOption(opt)` on click.** |
648
+ | `selected-item` | `{ index, opt, selected, removeAtIndex }` | Custom rendering of selected chips (multiple) |
649
+ | `control` | `{ toggleHandler, isOpened }` | Full trigger replacement |
650
+ | `prepend` / `append` | — | Content outside the field |
651
+ | `prepend-inner` / `append-inner` | — | Content inside the field |
652
+ | `no-options` | — | Shown when there are no options |
653
+ | `error` / `hint` | — | Custom rendering of error/hint |
654
654
 
655
655
  ## CSS Variables
656
656
 
657
657
  ```css
658
658
  :root {
659
659
  --select-height: 36px;
660
- --select-height-small: 28px;
661
- --select-border-radius: 4px;
660
+ --select-height-small: 32px;
661
+ --select-border-radius: 6px;
662
662
  --select-border-color: var(--neutrals-300);
663
- --select-border-color-focus: var(--primary-100);
664
- --select-border-color-error: var(--danger-500);
665
663
  --select-text-color: var(--neutrals-800);
666
- --select-padding: 10px;
664
+ --select-padding: 12px;
665
+
667
666
  --select-background-color: var(--additional-50);
668
- --select-background-color-disabled: var(--neutrals-200);
667
+
669
668
  --select-placeholder-color: var(--neutrals-400);
670
- --select-chevron-color: var(--primary-500);
671
- --select-clear-color: var(--primary-500);
669
+
670
+ --select-chevron-color: var(--neutrals-500);
671
+ --select-chevron-color-hover: var(--neutrals-700);
672
+ --select-clear-color: var(--neutrals-400);
673
+ --select-clear-color-hover: var(--neutrals-600);
674
+
675
+ --select-loading-color: var(--info-500);
676
+
677
+ --select-option-background-color-hover: var(--neutrals-100);
678
+ --select-option-background-color-selected: var(--accent-100);
679
+ --select-option-check-color: var(--primary-500);
680
+
681
+ --select-multiple-options-background-color: var(--neutrals-100);
682
+ --select-multiple-options-border-color: var(--neutrals-200);
683
+
672
684
  --select-dropdown-bg: var(--additional-50);
673
- --select-option-background-color-hover: var(--accent-100);
674
- --select-option-background-color-selected: var(--accent-200);
685
+ --select-dropdown-border: var(--neutrals-200);
686
+ --select-dropdown-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
687
+
688
+ --select-search-border-color: var(--neutrals-200);
689
+ --select-search-background-color: var(--additional-50);
690
+ --select-border-color-input: var(--secondary-200);
691
+
692
+ --select-border-color-focus: var(--primary-500);
693
+ --select-focus-ring-color: var(--primary-100);
694
+
695
+ --select-background-color-disabled: var(--neutrals-200);
696
+ --select-disabled-text-color: var(--neutrals-500);
697
+
698
+ --select-border-color-error: var(--danger-500);
699
+ --select-error-ring-color: var(--danger-100);
675
700
  }
676
701
  ```
677
702
 
@@ -50,21 +50,21 @@ const products = [
50
50
 
51
51
  ## Key Props
52
52
 
53
- | Prop | Type | Default | Description |
54
- | -------------------- | ---------------------------------------- | -------------------- | ------------------------------------------------------- |
55
- | `slides` | `Record<string, unknown>[] \| unknown[]` | `[]` | Array of slide data objects |
56
- | `navigation` | `boolean` | `false` | Show previous/next navigation buttons |
57
- | `slidesPerView` | `string \| "auto"` | `"auto"` | Number of visible slides at once |
58
- | `spaceBetweenSlides` | `number` | `10` | Gap between slides in pixels |
59
- | `overflow` | `boolean` | `false` | Allow slides to be visible outside the container bounds |
60
- | `ariaLabel` | `string` | `"Content carousel"` | Accessible label for the slider region |
53
+ | Prop | Type | Default | Description |
54
+ | -------------------- | ---------------------------------------- | -------- | ------------------------------------------------------------------------------------- |
55
+ | `slides` | `Record<string, unknown>[] \| unknown[]` | `[]` | Array of slide data objects |
56
+ | `navigation` | `boolean` | `false` | Show previous/next navigation buttons |
57
+ | `slidesPerView` | `string \| "auto"` | `"auto"` | Number of visible slides at once |
58
+ | `spaceBetweenSlides` | `number` | `10` | Gap between slides in pixels |
59
+ | `overflow` | `boolean` | `false` | Allow slides to be visible outside the container bounds |
60
+ | `ariaLabel` | `string` | -- | Accessible label for the slider region. Falls back to `"Content carousel"` when unset |
61
61
 
62
62
  ## Common Patterns
63
63
 
64
64
  ### Fixed Slides Per View
65
65
 
66
66
  ```vue
67
- <VcSlider :slides="items" :slides-per-view="3" navigation :space-between-slides="20">
67
+ <VcSlider :slides="items" :slides-per-view="'3'" navigation :space-between-slides="20">
68
68
  <template #default="{ slide }">
69
69
  <ProductCard :product="slide" />
70
70
  </template>
@@ -96,7 +96,7 @@ const products = [
96
96
  ### Single Slide View
97
97
 
98
98
  ```vue
99
- <VcSlider :slides="banners" :slides-per-view="1" navigation>
99
+ <VcSlider :slides="banners" :slides-per-view="'1'" navigation>
100
100
  <template #default="{ slide }">
101
101
  <img :src="slide.imageUrl" class="tw-w-full tw-rounded" />
102
102
  </template>
@@ -140,7 +140,7 @@ When placed inside a `VcBlade` with `loading=true`, the component automatically
140
140
 
141
141
  - VcSlider wraps the `swiper/vue` `<Swiper>` / `<SwiperSlide>` components with the `Navigation` module. Navigation buttons are custom DOM elements (`.vc-slider__prev` / `.vc-slider__next`) referenced by Swiper's `navigation.prevEl` / `nextEl` selectors.
142
142
  - `overflow` prop toggles `overflow: visible` on the swiper container, allowing slides to bleed outside bounds — useful for "peek" effects.
143
- - `slidesPerView="auto"` (default) lets each slide size itself from content. Pass a number for fixed-count layouts.
143
+ - `slidesPerView="auto"` (default) lets each slide size itself from content. Pass a numeric string (e.g. `"3"`) for fixed-count layouts.
144
144
  - The `slides` prop accepts any array. Each item is exposed as `{ slide }` in the default scoped slot.
145
145
  - Source file: `framework/ui/components/molecules/vc-slider/vc-slider.vue`
146
146