@vc-shell/vc-app-skill 2.0.0-alpha.33 → 2.0.0-alpha.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/CHANGELOG.md +78 -54
  2. package/README.md +42 -12
  3. package/package.json +4 -4
  4. package/runtime/VERSION +1 -1
  5. package/runtime/agents/api-analyzer.md +31 -16
  6. package/runtime/agents/blade-enhancer.md +15 -9
  7. package/runtime/agents/details-blade-generator.md +47 -31
  8. package/runtime/agents/list-blade-generator.md +21 -37
  9. package/runtime/agents/locales-generator.md +3 -0
  10. package/runtime/agents/migration-agent.md +18 -7
  11. package/runtime/agents/module-analyzer.md +2 -0
  12. package/runtime/agents/module-assembler.md +15 -0
  13. package/runtime/agents/promote-agent.md +15 -4
  14. package/runtime/agents/type-checker.md +11 -0
  15. package/runtime/knowledge/docs/_BUILD_HASH.md +1 -1
  16. package/runtime/knowledge/docs/core/api/platform.docs.md +30 -30
  17. package/runtime/knowledge/docs/core/blade-navigation/blade-nav-composables.docs.md +41 -41
  18. package/runtime/knowledge/docs/core/composables/bladeContext/index.docs.md +12 -10
  19. package/runtime/knowledge/docs/core/composables/useApiClient/useApiClient.docs.md +11 -14
  20. package/runtime/knowledge/docs/core/composables/useAppBarMobileButtons/useAppBarMobileButtons.docs.md +35 -35
  21. package/runtime/knowledge/docs/core/composables/useAppBarWidget/useAppBarWidget.docs.md +35 -35
  22. package/runtime/knowledge/docs/core/composables/useAppInsights/useAppInsights.docs.md +15 -15
  23. package/runtime/knowledge/docs/core/composables/useAssets/useAssets.docs.md +21 -18
  24. package/runtime/knowledge/docs/core/composables/useAssetsManager/useAssetsManager.docs.md +28 -24
  25. package/runtime/knowledge/docs/core/composables/useAsync/useAsync.docs.md +90 -61
  26. package/runtime/knowledge/docs/core/composables/useBeforeUnload/useBeforeUnload.docs.md +19 -18
  27. package/runtime/knowledge/docs/core/composables/useBlade/useBlade.docs.md +89 -68
  28. package/runtime/knowledge/docs/core/composables/useBladeForm/useBladeForm.docs.md +27 -25
  29. package/runtime/knowledge/docs/core/composables/useBladeRegistry/useBladeRegistry.docs.md +15 -15
  30. package/runtime/knowledge/docs/core/composables/useBladeWidgets/index.docs.md +43 -47
  31. package/runtime/knowledge/docs/core/composables/useBreadcrumbs/useBreadcrumbs.docs.md +11 -11
  32. package/runtime/knowledge/docs/core/composables/useConnectionStatus/useConnectionStatus.docs.md +27 -15
  33. package/runtime/knowledge/docs/core/composables/useDashboard/useDashboard.docs.md +30 -30
  34. package/runtime/knowledge/docs/core/composables/useDynamicProperties/useDynamicProperties.docs.md +34 -36
  35. package/runtime/knowledge/docs/core/composables/useErrorHandler/useErrorHandler.docs.md +44 -23
  36. package/runtime/knowledge/docs/core/composables/useFunctions/useFunctions.docs.md +14 -11
  37. package/runtime/knowledge/docs/core/composables/useKeyboardNavigation/useKeyboardNavigation.docs.md +47 -38
  38. package/runtime/knowledge/docs/core/composables/useLanguages/useLanguages.docs.md +37 -28
  39. package/runtime/knowledge/docs/core/composables/useLoading/useLoading.docs.md +23 -17
  40. package/runtime/knowledge/docs/core/composables/useMenuExpanded/index.docs.md +9 -9
  41. package/runtime/knowledge/docs/core/composables/useMenuService/useMenuService.docs.md +42 -42
  42. package/runtime/knowledge/docs/core/composables/useModificationTracker/useModificationTracker.docs.md +22 -12
  43. package/runtime/knowledge/docs/core/composables/useNotifications/useNotifications.docs.md +33 -41
  44. package/runtime/knowledge/docs/core/composables/usePermissions/usePermissions.docs.md +16 -16
  45. package/runtime/knowledge/docs/core/composables/usePlatformLocaleSync/usePlatformLocaleSync.docs.md +28 -0
  46. package/runtime/knowledge/docs/core/composables/usePopup/usePopup.docs.md +32 -24
  47. package/runtime/knowledge/docs/core/composables/useResponsive/useResponsive.docs.md +32 -11
  48. package/runtime/knowledge/docs/core/composables/useSettings/useSettings.docs.md +22 -13
  49. package/runtime/knowledge/docs/core/composables/useSettingsMenu/useSettingsMenu.docs.md +7 -7
  50. package/runtime/knowledge/docs/core/composables/useSidebarState/useSidebarState.docs.md +32 -24
  51. package/runtime/knowledge/docs/core/composables/useSlowNetworkDetection/useSlowNetworkDetection.docs.md +21 -17
  52. package/runtime/knowledge/docs/core/composables/useTheme/useTheme.docs.md +24 -24
  53. package/runtime/knowledge/docs/core/composables/useToolbar/useToolbar.docs.md +28 -31
  54. package/runtime/knowledge/docs/core/composables/useUser/useUser.docs.md +43 -24
  55. package/runtime/knowledge/docs/core/composables/useUserManagement/useUserManagement.docs.md +68 -48
  56. package/runtime/knowledge/docs/core/composables/useWebVitals/useWebVitals.docs.md +19 -19
  57. package/runtime/knowledge/docs/core/composables/useWidgets/useWidgets.docs.md +42 -47
  58. package/runtime/knowledge/docs/core/directives/autofocus/autofocus.docs.md +10 -4
  59. package/runtime/knowledge/docs/core/directives/loading/loading.docs.md +35 -20
  60. package/runtime/knowledge/docs/core/notifications/notifications.docs.md +36 -35
  61. package/runtime/knowledge/docs/core/plugins/ai-agent/ai-agent.docs.md +38 -38
  62. package/runtime/knowledge/docs/core/plugins/extension-points/extension-points.docs.md +79 -62
  63. package/runtime/knowledge/docs/core/plugins/global-error-handler/global-error-handler.docs.md +10 -10
  64. package/runtime/knowledge/docs/core/plugins/i18n/i18n.docs.md +21 -23
  65. package/runtime/knowledge/docs/core/plugins/modularity/modularity.docs.md +91 -83
  66. package/runtime/knowledge/docs/core/plugins/permissions/permissions.docs.md +10 -16
  67. package/runtime/knowledge/docs/core/plugins/signalR/signalR.docs.md +9 -9
  68. package/runtime/knowledge/docs/core/plugins/validation/validation.docs.md +65 -22
  69. package/runtime/knowledge/docs/core/services/services.docs.md +19 -22
  70. package/runtime/knowledge/docs/core/types/types.docs.md +40 -40
  71. package/runtime/knowledge/docs/core/utilities/date/date-utilities.docs.md +27 -27
  72. package/runtime/knowledge/docs/core/utilities/shared-utilities.docs.md +23 -23
  73. package/runtime/knowledge/docs/core/utilities/thumbnail/thumbnail.docs.md +22 -25
  74. package/runtime/knowledge/docs/core/utilities/utilities.docs.md +64 -64
  75. package/runtime/knowledge/docs/injection-keys.docs.md +52 -51
  76. package/runtime/knowledge/docs/modules/assets-manager/assets-manager.docs.md +9 -9
  77. package/runtime/knowledge/docs/shell/_internal/popup/common/popup-common.docs.md +23 -43
  78. package/runtime/knowledge/docs/shell/auth/ChangePasswordPage/change-password-page.docs.md +5 -5
  79. package/runtime/knowledge/docs/shell/auth/ForgotPasswordPage/forgot-password-page.docs.md +5 -5
  80. package/runtime/knowledge/docs/shell/auth/InvitePage/invite-page.docs.md +8 -7
  81. package/runtime/knowledge/docs/shell/auth/LoginPage/login-page.docs.md +7 -7
  82. package/runtime/knowledge/docs/shell/auth/ResetPasswordPage/reset-password-page.docs.md +8 -7
  83. package/runtime/knowledge/docs/shell/auth/sign-in/sign-in.docs.md +29 -13
  84. package/runtime/knowledge/docs/shell/components/change-password/change-password.docs.md +13 -16
  85. package/runtime/knowledge/docs/shell/components/change-password-button/change-password-button.docs.md +1 -7
  86. package/runtime/knowledge/docs/shell/components/error-interceptor/error-interceptor.docs.md +5 -5
  87. package/runtime/knowledge/docs/shell/components/language-selector/language-selector.docs.md +1 -1
  88. package/runtime/knowledge/docs/shell/components/logout-button/logout-button.docs.md +1 -1
  89. package/runtime/knowledge/docs/shell/components/notification-template/notification-template.docs.md +17 -9
  90. package/runtime/knowledge/docs/shell/components/settings-menu/settings-menu.docs.md +11 -17
  91. package/runtime/knowledge/docs/shell/components/settings-menu-item/settings-menu-item.docs.md +34 -65
  92. package/runtime/knowledge/docs/shell/components/sidebar/sidebar.docs.md +16 -26
  93. package/runtime/knowledge/docs/shell/components/theme-selector/theme-selector.docs.md +2 -2
  94. package/runtime/knowledge/docs/shell/components/user-dropdown-button/user-dropdown-button.docs.md +7 -9
  95. package/runtime/knowledge/docs/shell/dashboard/dashboard-charts/dashboard-charts.docs.md +30 -40
  96. package/runtime/knowledge/docs/shell/dashboard/dashboard-widget-card/dashboard-widget-card.docs.md +26 -19
  97. package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/draggable-dashboard.docs.md +15 -12
  98. package/runtime/knowledge/docs/ui/components/atoms/vc-badge/vc-badge.docs.md +15 -26
  99. package/runtime/knowledge/docs/ui/components/atoms/vc-banner/vc-banner.docs.md +21 -19
  100. package/runtime/knowledge/docs/ui/components/atoms/vc-button/vc-button.docs.md +83 -67
  101. package/runtime/knowledge/docs/ui/components/atoms/vc-card/vc-card.docs.md +100 -59
  102. package/runtime/knowledge/docs/ui/components/atoms/vc-col/vc-col.docs.md +28 -11
  103. package/runtime/knowledge/docs/ui/components/atoms/vc-container/vc-container.docs.md +20 -17
  104. package/runtime/knowledge/docs/ui/components/atoms/vc-hint/vc-hint.docs.md +26 -17
  105. package/runtime/knowledge/docs/ui/components/atoms/vc-icon/vc-icon.docs.md +30 -32
  106. package/runtime/knowledge/docs/ui/components/atoms/vc-image/vc-image.docs.md +25 -48
  107. package/runtime/knowledge/docs/ui/components/atoms/vc-label/vc-label.docs.md +29 -24
  108. package/runtime/knowledge/docs/ui/components/atoms/vc-link/vc-link.docs.md +23 -15
  109. package/runtime/knowledge/docs/ui/components/atoms/vc-loading/vc-loading.docs.md +22 -13
  110. package/runtime/knowledge/docs/ui/components/atoms/vc-progress/vc-progress.docs.md +33 -18
  111. package/runtime/knowledge/docs/ui/components/atoms/vc-row/vc-row.docs.md +56 -15
  112. package/runtime/knowledge/docs/ui/components/atoms/vc-scrollable-container/vc-scrollable-container.docs.md +28 -15
  113. package/runtime/knowledge/docs/ui/components/atoms/vc-skeleton/vc-skeleton.docs.md +40 -20
  114. package/runtime/knowledge/docs/ui/components/atoms/vc-status/vc-status.docs.md +25 -14
  115. package/runtime/knowledge/docs/ui/components/atoms/vc-status-icon/vc-status-icon.docs.md +40 -14
  116. package/runtime/knowledge/docs/ui/components/atoms/vc-tooltip/vc-tooltip.docs.md +54 -42
  117. package/runtime/knowledge/docs/ui/components/atoms/vc-video/vc-video.docs.md +17 -17
  118. package/runtime/knowledge/docs/ui/components/atoms/vc-widget/vc-widget.docs.md +21 -21
  119. package/runtime/knowledge/docs/ui/components/molecules/multilanguage-selector/multilanguage-selector.docs.md +23 -10
  120. package/runtime/knowledge/docs/ui/components/molecules/vc-accordion/vc-accordion.docs.md +55 -44
  121. package/runtime/knowledge/docs/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.docs.md +23 -20
  122. package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox/vc-checkbox.docs.md +92 -65
  123. package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.docs.md +22 -36
  124. package/runtime/knowledge/docs/ui/components/molecules/vc-color-input/vc-color-input.docs.md +65 -23
  125. package/runtime/knowledge/docs/ui/components/molecules/vc-date-picker/vc-date-picker.docs.md +52 -73
  126. package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown/vc-dropdown.docs.md +91 -85
  127. package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown-panel/vc-dropdown-panel.docs.md +38 -42
  128. package/runtime/knowledge/docs/ui/components/molecules/vc-editor/vc-editor.docs.md +56 -73
  129. package/runtime/knowledge/docs/ui/components/molecules/vc-field/vc-field.docs.md +61 -27
  130. package/runtime/knowledge/docs/ui/components/molecules/vc-file-upload/vc-file-upload.docs.md +42 -50
  131. package/runtime/knowledge/docs/ui/components/molecules/vc-form/vc-form.docs.md +35 -64
  132. package/runtime/knowledge/docs/ui/components/molecules/vc-image-tile/vc-image-tile.docs.md +38 -41
  133. package/runtime/knowledge/docs/ui/components/molecules/vc-input/vc-input.docs.md +109 -131
  134. package/runtime/knowledge/docs/ui/components/molecules/vc-input-currency/vc-input-currency.docs.md +47 -88
  135. package/runtime/knowledge/docs/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.docs.md +50 -64
  136. package/runtime/knowledge/docs/ui/components/molecules/vc-input-group/vc-input-group.docs.md +29 -24
  137. package/runtime/knowledge/docs/ui/components/molecules/vc-menu/vc-menu.docs.md +32 -28
  138. package/runtime/knowledge/docs/ui/components/molecules/vc-multivalue/vc-multivalue.docs.md +57 -65
  139. package/runtime/knowledge/docs/ui/components/molecules/vc-pagination/vc-pagination.docs.md +28 -26
  140. package/runtime/knowledge/docs/ui/components/molecules/vc-radio-button/vc-radio-button.docs.md +55 -20
  141. package/runtime/knowledge/docs/ui/components/molecules/vc-radio-group/vc-radio-group.docs.md +21 -35
  142. package/runtime/knowledge/docs/ui/components/molecules/vc-rating/vc-rating.docs.md +38 -33
  143. package/runtime/knowledge/docs/ui/components/molecules/vc-select/vc-select.docs.md +72 -83
  144. package/runtime/knowledge/docs/ui/components/molecules/vc-slider/vc-slider.docs.md +21 -16
  145. package/runtime/knowledge/docs/ui/components/molecules/vc-switch/vc-switch.docs.md +55 -64
  146. package/runtime/knowledge/docs/ui/components/molecules/vc-textarea/vc-textarea.docs.md +51 -70
  147. package/runtime/knowledge/docs/ui/components/molecules/vc-toast/vc-toast.docs.md +58 -57
  148. package/runtime/knowledge/docs/ui/components/organisms/vc-app/vc-app.docs.md +49 -26
  149. package/runtime/knowledge/docs/ui/components/organisms/vc-auth-layout/vc-auth-layout.docs.md +82 -28
  150. package/runtime/knowledge/docs/ui/components/organisms/vc-blade/vc-blade.docs.md +90 -75
  151. package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/composables/table-composables.docs.md +99 -48
  152. package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/vc-data-table.docs.md +548 -367
  153. package/runtime/knowledge/docs/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.docs.md +35 -52
  154. package/runtime/knowledge/docs/ui/components/organisms/vc-gallery/vc-gallery.docs.md +33 -62
  155. package/runtime/knowledge/docs/ui/components/organisms/vc-image-upload/vc-image-upload.docs.md +17 -23
  156. package/runtime/knowledge/docs/ui/components/organisms/vc-popup/vc-popup.docs.md +109 -68
  157. package/runtime/knowledge/docs/ui/components/organisms/vc-sidebar/vc-sidebar.docs.md +82 -44
  158. package/runtime/knowledge/docs/ui/composables/ui-composables.docs.md +8 -8
  159. package/runtime/knowledge/docs/ui/composables/useDataTablePagination.docs.md +164 -0
  160. package/runtime/knowledge/docs/ui/composables/useDataTableSort.docs.md +34 -26
  161. package/runtime/knowledge/docs/ui/composables/useTableSelection.docs.md +48 -40
  162. package/runtime/knowledge/docs/ui/composables/useTableSort.docs.md +30 -17
  163. package/runtime/knowledge/docs/ui/types/ui-types.docs.md +40 -29
  164. package/runtime/knowledge/examples/offers-module.md +15 -13
  165. package/runtime/knowledge/examples/team-module.md +82 -119
  166. package/runtime/knowledge/examples/videos-module.md +44 -17
  167. package/runtime/knowledge/index.md +22 -0
  168. package/runtime/knowledge/migration-prompts/blade-form-migration.md +17 -8
  169. package/runtime/knowledge/migration-prompts/blade-props-migration.md +1 -2
  170. package/runtime/knowledge/migration-prompts/datatable-migration.md +801 -0
  171. package/runtime/knowledge/migration-prompts/icon-migration.md +97 -0
  172. package/runtime/knowledge/migration-prompts/manual-migration-audit.md +117 -0
  173. package/runtime/knowledge/migration-prompts/notifications-migration.md +8 -3
  174. package/runtime/knowledge/migration-prompts/nswag-migration.md +25 -29
  175. package/runtime/knowledge/migration-prompts/use-assets-migration.md +164 -0
  176. package/runtime/knowledge/migration-prompts/use-data-table-pagination-migration.md +176 -0
  177. package/runtime/knowledge/migration-prompts/widgets-migration.md +48 -27
  178. package/runtime/knowledge/patterns/assets-management.md +20 -20
  179. package/runtime/knowledge/patterns/blade-navigation.md +7 -14
  180. package/runtime/knowledge/patterns/blade-widget.md +19 -17
  181. package/runtime/knowledge/patterns/child-blade-flow.md +19 -7
  182. package/runtime/knowledge/patterns/composable-details.md +20 -50
  183. package/runtime/knowledge/patterns/composable-list.md +43 -31
  184. package/runtime/knowledge/patterns/dashboard-widget.md +14 -16
  185. package/runtime/knowledge/patterns/datatable-pattern.md +521 -0
  186. package/runtime/knowledge/patterns/details-blade-pattern.md +78 -116
  187. package/runtime/knowledge/patterns/extension-points-usage.md +53 -44
  188. package/runtime/knowledge/patterns/form-validation.md +28 -64
  189. package/runtime/knowledge/patterns/list-blade-pattern.md +33 -21
  190. package/runtime/knowledge/patterns/module-structure.md +7 -1
  191. package/runtime/knowledge/patterns/multilanguage-fields.md +8 -14
  192. package/runtime/knowledge/patterns/notification-template.md +21 -14
  193. package/runtime/knowledge/patterns/signalr-notifications.md +30 -32
  194. package/runtime/knowledge/patterns/toolbar-pattern.md +18 -20
  195. package/runtime/vc-app.md +241 -62
@@ -8,42 +8,42 @@ The utilities module provides a collection of commonly needed functions: string
8
8
 
9
9
  ## String Utilities
10
10
 
11
- | Function | Signature | Description |
12
- |----------|-----------|-------------|
13
- | `camelToSnake` | `(str: string) => string` | Converts camelCase to snake_case |
14
- | `camelize` | `(str: string) => string` | Converts delimited string to camelCase (splits on non-word chars) |
15
- | `kebabToCamel` | `(str: string) => string` | Converts kebab-case to camelCase |
16
- | `kebabToPascal` | `(str: string) => string` | Converts kebab-case to PascalCase |
11
+ | Function | Signature | Description |
12
+ | --------------- | ------------------------- | ----------------------------------------------------------------- |
13
+ | `camelToSnake` | `(str: string) => string` | Converts camelCase to snake_case |
14
+ | `camelize` | `(str: string) => string` | Converts delimited string to camelCase (splits on non-word chars) |
15
+ | `kebabToCamel` | `(str: string) => string` | Converts kebab-case to camelCase |
16
+ | `kebabToPascal` | `(str: string) => string` | Converts kebab-case to PascalCase |
17
17
 
18
18
  ### String utility examples
19
19
 
20
20
  ```typescript
21
21
  import { camelToSnake, camelize, kebabToCamel, kebabToPascal } from "@vc-shell/framework";
22
22
 
23
- camelToSnake("myPropName"); // "my_prop_name"
24
- camelToSnake("backgroundColor"); // "background_color"
23
+ camelToSnake("myPropName"); // "my_prop_name"
24
+ camelToSnake("backgroundColor"); // "background_color"
25
25
 
26
- camelize("some-prop-name"); // "somePropName"
27
- camelize("SOME_CONSTANT"); // "sOMECONSTANT" (splits on non-word chars)
26
+ camelize("some-prop-name"); // "somePropName"
27
+ camelize("SOME_CONSTANT"); // "sOMECONSTANT" (splits on non-word chars)
28
28
 
29
- kebabToCamel("vc-data-table"); // "vcDataTable"
30
- kebabToCamel("my-component-name"); // "myComponentName"
29
+ kebabToCamel("vc-data-table"); // "vcDataTable"
30
+ kebabToCamel("my-component-name"); // "myComponentName"
31
31
 
32
- kebabToPascal("vc-data-table"); // "VcDataTable"
33
- kebabToPascal("dashboard-widget"); // "DashboardWidget"
32
+ kebabToPascal("vc-data-table"); // "VcDataTable"
33
+ kebabToPascal("dashboard-widget"); // "DashboardWidget"
34
34
  ```
35
35
 
36
36
  ## Date Utilities
37
37
 
38
38
  Located in `date/`. Uses `date-fns` internally with lazy locale loading.
39
39
 
40
- | Function | Signature | Description |
41
- |----------|-----------|-------------|
42
- | `formatDateRelative` | `(value: DateInput, localeCode?: string) => string` | Formats date as relative time (e.g. "3 hours ago") via `formatDistanceToNow` |
43
- | `formatDateWithPattern` | `(value: DateInput, momentFormatStr: string, localeCode?: string) => string` | Formats date using a Moment.js-style format string, auto-converted to date-fns tokens |
44
- | `convertMomentFormat` | `(momentFormat: string) => string` | Converts a Moment.js format string to date-fns format (e.g. `YYYY` to `yyyy`, `DD` to `dd`) |
45
- | `resolveLocale` | `(localeCode: string) => Promise<Locale>` | Async-loads a date-fns locale by code, with fallback to base language then `enUS` |
46
- | `resolveLocaleSync` | `(localeCode: string) => Locale` | Returns cached locale synchronously; triggers async load if missing, returns `enUS` as fallback |
40
+ | Function | Signature | Description |
41
+ | ----------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
42
+ | `formatDateRelative` | `(value: DateInput, localeCode?: string) => string` | Formats date as relative time (e.g. "3 hours ago") via `formatDistanceToNow` |
43
+ | `formatDateWithPattern` | `(value: DateInput, momentFormatStr: string, localeCode?: string) => string` | Formats date using a Moment.js-style format string, auto-converted to date-fns tokens |
44
+ | `convertMomentFormat` | `(momentFormat: string) => string` | Converts a Moment.js format string to date-fns format (e.g. `YYYY` to `yyyy`, `DD` to `dd`) |
45
+ | `resolveLocale` | `(localeCode: string) => Promise<Locale>` | Async-loads a date-fns locale by code, with fallback to base language then `enUS` |
46
+ | `resolveLocaleSync` | `(localeCode: string) => Locale` | Returns cached locale synchronously; triggers async load if missing, returns `enUS` as fallback |
47
47
 
48
48
  `DateInput` is `string | number | Date | null | undefined`.
49
49
 
@@ -53,46 +53,46 @@ Located in `date/`. Uses `date-fns` internally with lazy locale loading.
53
53
  import { formatDateRelative, formatDateWithPattern, convertMomentFormat } from "@vc-shell/framework";
54
54
 
55
55
  // Relative time
56
- formatDateRelative("2024-01-15"); // "about 2 years ago"
57
- formatDateRelative(new Date(Date.now() - 3600000)); // "about 1 hour ago"
58
- formatDateRelative("2024-01-15", "de"); // "vor etwa 2 Jahren"
56
+ formatDateRelative("2024-01-15"); // "about 2 years ago"
57
+ formatDateRelative(new Date(Date.now() - 3600000)); // "about 1 hour ago"
58
+ formatDateRelative("2024-01-15", "de"); // "vor etwa 2 Jahren"
59
59
 
60
60
  // Formatted dates using Moment.js-style patterns (auto-converted to date-fns)
61
- formatDateWithPattern("2024-01-15", "LL"); // "January 15, 2024"
62
- formatDateWithPattern("2024-06-01", "DD/MM/YYYY"); // "01/06/2024"
63
- formatDateWithPattern("2024-01-15", "LL", "de"); // "15. Januar 2024"
61
+ formatDateWithPattern("2024-01-15", "LL"); // "January 15, 2024"
62
+ formatDateWithPattern("2024-06-01", "DD/MM/YYYY"); // "01/06/2024"
63
+ formatDateWithPattern("2024-01-15", "LL", "de"); // "15. Januar 2024"
64
64
 
65
65
  // Format conversion
66
- convertMomentFormat("YYYY-MM-DD"); // "yyyy-MM-dd"
67
- convertMomentFormat("DD/MM/YYYY"); // "dd/MM/yyyy"
68
- convertMomentFormat("hh:mm A"); // "hh:mm a"
66
+ convertMomentFormat("YYYY-MM-DD"); // "yyyy-MM-dd"
67
+ convertMomentFormat("DD/MM/YYYY"); // "dd/MM/yyyy"
68
+ convertMomentFormat("hh:mm A"); // "hh:mm a"
69
69
  ```
70
70
 
71
71
  ## Error Utilities
72
72
 
73
73
  ### Display errors (`error.ts`)
74
74
 
75
- | Export | Signature | Description |
76
- |--------|-----------|-------------|
77
- | `DisplayableError` | `class extends Error` | Normalized error with `details: string` and `originalError: unknown` properties |
78
- | `parseError` | `(errorToParse: unknown) => DisplayableError` | Parses any error type (Axios, plain object, string, JSON) into a `DisplayableError` |
75
+ | Export | Signature | Description |
76
+ | ------------------ | --------------------------------------------- | ----------------------------------------------------------------------------------- |
77
+ | `DisplayableError` | `class extends Error` | Normalized error with `details: string` and `originalError: unknown` properties |
78
+ | `parseError` | `(errorToParse: unknown) => DisplayableError` | Parses any error type (Axios, plain object, string, JSON) into a `DisplayableError` |
79
79
 
80
80
  ### Typed framework errors (`errorTypes.ts`)
81
81
 
82
- | Class | Code | Constructor |
83
- |-------|------|-------------|
84
- | `FrameworkError` | custom | `(message, code, context?)` -- base class with `toJSON()` |
85
- | `ValidationError` | `VALIDATION_ERROR` | `(message, context?)` |
86
- | `ServiceError` | `SERVICE_ERROR` | `(message, context?)` |
87
- | `InjectionError` | `INJECTION_ERROR` | `(serviceName, context?)` |
88
- | `RegistrationError` | `REGISTRATION_ERROR` | `(componentName, reason, context?)` |
89
- | `BladeError` | `BLADE_ERROR` | `(message, bladeId?, context?)` |
90
- | `ModuleLoadError` | `MODULE_LOAD_ERROR` | `(moduleId, reason, context?)` |
91
-
92
- | Function | Signature | Description |
93
- |----------|-----------|-------------|
94
- | `isFrameworkError` | `(error: unknown) => error is FrameworkError` | Type guard for `FrameworkError` instances |
95
- | `wrapError` | `(error: unknown, code?: string) => FrameworkError` | Wraps any error into a `FrameworkError`, preserving existing ones |
82
+ | Class | Code | Constructor |
83
+ | ------------------- | -------------------- | --------------------------------------------------------- |
84
+ | `FrameworkError` | custom | `(message, code, context?)` -- base class with `toJSON()` |
85
+ | `ValidationError` | `VALIDATION_ERROR` | `(message, context?)` |
86
+ | `ServiceError` | `SERVICE_ERROR` | `(message, context?)` |
87
+ | `InjectionError` | `INJECTION_ERROR` | `(serviceName, context?)` |
88
+ | `RegistrationError` | `REGISTRATION_ERROR` | `(componentName, reason, context?)` |
89
+ | `BladeError` | `BLADE_ERROR` | `(message, bladeId?, context?)` |
90
+ | `ModuleLoadError` | `MODULE_LOAD_ERROR` | `(moduleId, reason, context?)` |
91
+
92
+ | Function | Signature | Description |
93
+ | ------------------ | --------------------------------------------------- | ----------------------------------------------------------------- |
94
+ | `isFrameworkError` | `(error: unknown) => error is FrameworkError` | Type guard for `FrameworkError` instances |
95
+ | `wrapError` | `(error: unknown, code?: string) => FrameworkError` | Wraps any error into a `FrameworkError`, preserving existing ones |
96
96
 
97
97
  ### Error utility examples
98
98
 
@@ -103,12 +103,12 @@ try {
103
103
  await apiClient.save(data);
104
104
  } catch (err) {
105
105
  const parsed = parseError(err);
106
- console.log(parsed.message); // "Request failed with status 422"
107
- console.log(parsed.details); // "Validation error: name is required"
106
+ console.log(parsed.message); // "Request failed with status 422"
107
+ console.log(parsed.details); // "Validation error: name is required"
108
108
  }
109
109
 
110
110
  if (isFrameworkError(err)) {
111
- console.log(err.code); // e.g. "INJECTION_ERROR"
111
+ console.log(err.code); // e.g. "INJECTION_ERROR"
112
112
  }
113
113
 
114
114
  throw new InjectionError("WidgetService"); // "WidgetService is not provided. ..."
@@ -116,8 +116,8 @@ throw new InjectionError("WidgetService"); // "WidgetService is not provided. ..
116
116
 
117
117
  ## ID Generation
118
118
 
119
- | Function | Signature | Description |
120
- |----------|-----------|-------------|
119
+ | Function | Signature | Description |
120
+ | ------------ | -------------- | --------------------------------------------------------------------------------- |
121
121
  | `generateId` | `() => string` | Returns a random 7-character alphanumeric string via `Math.random().toString(36)` |
122
122
 
123
123
  ```typescript
@@ -131,12 +131,12 @@ const widgetId = `widget-${generateId()}`; // e.g. "widget-m7p2x1b"
131
131
 
132
132
  Factory-based logger with level filtering. Default level: `debug` in dev, `warn` in production.
133
133
 
134
- | Export | Type | Description |
135
- |--------|------|-------------|
134
+ | Export | Type | Description |
135
+ | -------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------- |
136
136
  | `createLogger` | `(context?: string) => Logger` | Creates a logger instance with `debug`, `info`, `warn`, `error`, `child`, `setLevel`, `setEnabled` methods |
137
- | `logger` | `Logger` | Default logger instance (no context prefix) |
138
- | `loggers` | `Record<string, Logger>` | Pre-configured loggers: `core`, `ui`, `shared`, `plugins`, `services`, `composables` |
139
- | `LogLevel` | `type` | `"debug" \| "info" \| "warn" \| "error" \| "none"` |
137
+ | `logger` | `Logger` | Default logger instance (no context prefix) |
138
+ | `loggers` | `Record<string, Logger>` | Pre-configured loggers: `core`, `ui`, `shared`, `plugins`, `services`, `composables` |
139
+ | `LogLevel` | `type` | `"debug" \| "info" \| "warn" \| "error" \| "none"` |
140
140
 
141
141
  ### Logger examples
142
142
 
@@ -144,13 +144,13 @@ Factory-based logger with level filtering. Default level: `debug` in dev, `warn`
144
144
  import { createLogger, loggers } from "@vc-shell/framework";
145
145
 
146
146
  const log = createLogger("OrdersModule");
147
- log.info("Module initialized"); // [OrdersModule] Module initialized
148
- log.error("Failed to load orders", error); // [OrdersModule] Failed to load orders Error: ...
147
+ log.info("Module initialized"); // [OrdersModule] Module initialized
148
+ log.error("Failed to load orders", error); // [OrdersModule] Failed to load orders Error: ...
149
149
 
150
150
  const subLog = log.child("DataSync");
151
- subLog.debug("Syncing 50 records"); // [OrdersModule:DataSync] Syncing 50 records
151
+ subLog.debug("Syncing 50 records"); // [OrdersModule:DataSync] Syncing 50 records
152
152
 
153
- log.setLevel("error"); // Only errors will be logged
153
+ log.setLevel("error"); // Only errors will be logged
154
154
  ```
155
155
 
156
156
  ## Tip: Use createLogger Instead of console.log
@@ -171,8 +171,8 @@ log.info("Order saved", { orderId: order.id });
171
171
  The `convertMomentFormat` function maps common Moment.js tokens to date-fns tokens, but does not cover every edge case. Uncommon tokens (like `X` for Unix timestamp) may need manual handling:
172
172
 
173
173
  ```typescript
174
- convertMomentFormat("YYYY-MM-DD"); // "yyyy-MM-dd" (correct)
175
- convertMomentFormat("X"); // May not convert as expected
174
+ convertMomentFormat("YYYY-MM-DD"); // "yyyy-MM-dd" (correct)
175
+ convertMomentFormat("X"); // May not convert as expected
176
176
  ```
177
177
 
178
178
  ## Related
@@ -9,6 +9,7 @@ The vc-shell framework uses Vue's provide/inject mechanism extensively to share
9
9
  All keys are defined in a single file (`framework/injection-keys.ts`) to avoid symbol duplication and ensure type safety. The app shell provides these values at the root during bootstrap; components and composables inject them using the corresponding key.
10
10
 
11
11
  This centralized approach has several advantages:
12
+
12
13
  - **Type safety**: `inject(MenuServiceKey)` returns `MenuService | undefined`, not `unknown`
13
14
  - **No symbol collisions**: each key is a unique `Symbol`, preventing accidental overwrites
14
15
  - **Testability**: services can be mocked by providing different values in test wrappers
@@ -18,76 +19,76 @@ This centralized approach has several advantages:
18
19
 
19
20
  ### Blade Navigation
20
21
 
21
- | Key | Type | Description |
22
- |-----|------|-------------|
23
- | `NavigationViewLocationKey` | `BladeVNode` | Current blade VNode location in navigation |
24
- | `BladeDescriptorKey` | `ComputedRef<BladeDescriptor>` | Current blade descriptor metadata |
25
- | `BladeBackButtonKey` | `Component \| undefined` | Custom back button component for a blade |
26
- | `BladeDataKey` | *(from blade-navigation types)* | Data passed between parent/child blades |
27
- | `BladeContextKey` | `ComputedRef<Record<string, unknown>>` | Blade-exposed context for widgets/extensions |
28
- | `BladeRoutesKey` | `BladeRoutesRecord[]` | Registered blade routes |
29
- | `InternalRoutesKey` | `BladeRoutesRecord[]` | Internal framework routes |
22
+ | Key | Type | Description |
23
+ | --------------------------- | -------------------------------------- | -------------------------------------------- |
24
+ | `NavigationViewLocationKey` | `BladeVNode` | Current blade VNode location in navigation |
25
+ | `BladeDescriptorKey` | `ComputedRef<BladeDescriptor>` | Current blade descriptor metadata |
26
+ | `BladeBackButtonKey` | `Component \| undefined` | Custom back button component for a blade |
27
+ | `BladeDataKey` | _(from blade-navigation types)_ | Data passed between parent/child blades |
28
+ | `BladeContextKey` | `ComputedRef<Record<string, unknown>>` | Blade-exposed context for widgets/extensions |
29
+ | `BladeRoutesKey` | `BladeRoutesRecord[]` | Registered blade routes |
30
+ | `InternalRoutesKey` | `BladeRoutesRecord[]` | Internal framework routes |
30
31
 
31
32
  ### Notifications
32
33
 
33
- | Key | Type | Description |
34
- |-----|------|-------------|
34
+ | Key | Type | Description |
35
+ | -------------------------- | ----------------------------------- | ------------------------------------------- |
35
36
  | `NotificationTemplatesKey` | `NotificationTemplateConstructor[]` | Registered notification template components |
36
- | `NotificationStoreKey` | `NotificationStore` | Shared notification store singleton |
37
+ | `NotificationStoreKey` | `NotificationStore` | Shared notification store singleton |
37
38
 
38
39
  ### Services
39
40
 
40
- | Key | Type | Description |
41
- |-----|------|-------------|
42
- | `WidgetServiceKey` | `IWidgetService` | Widget registration and lookup |
43
- | `DashboardServiceKey` | `IDashboardService` | Dashboard widget management |
44
- | `GlobalSearchKey` | `GlobalSearchState` | Global search state |
45
- | `MenuServiceKey` | `MenuService` | Main navigation menu |
46
- | `SettingsMenuServiceKey` | `ISettingsMenuService` | Settings sidebar menu |
47
- | `AppBarWidgetServiceKey` | `IAppBarWidgetService` | App bar widget slots |
48
- | `AppBarMobileButtonsServiceKey` | `IAppBarMobileButtonsService` | Mobile app bar buttons |
49
- | `LanguageServiceKey` | `ILanguageService` | Localization service |
50
- | `ToolbarServiceKey` | `IToolbarService` | Blade toolbar actions |
51
- | `AiAgentServiceKey` | `IAiAgentService` | AI agent integration |
41
+ | Key | Type | Description |
42
+ | ------------------------------- | ----------------------------- | ------------------------------ |
43
+ | `WidgetServiceKey` | `IWidgetService` | Widget registration and lookup |
44
+ | `DashboardServiceKey` | `IDashboardService` | Dashboard widget management |
45
+ | `GlobalSearchKey` | `GlobalSearchState` | Global search state |
46
+ | `MenuServiceKey` | `MenuService` | Main navigation menu |
47
+ | `SettingsMenuServiceKey` | `ISettingsMenuService` | Settings sidebar menu |
48
+ | `AppBarWidgetServiceKey` | `IAppBarWidgetService` | App bar widget slots |
49
+ | `AppBarMobileButtonsServiceKey` | `IAppBarMobileButtonsService` | Mobile app bar buttons |
50
+ | `LanguageServiceKey` | `ILanguageService` | Localization service |
51
+ | `ToolbarServiceKey` | `IToolbarService` | Blade toolbar actions |
52
+ | `AiAgentServiceKey` | `IAiAgentService` | AI agent integration |
52
53
 
53
54
  ### Module System
54
55
 
55
- | Key | Type | Description |
56
- |-----|------|-------------|
57
- | `DynamicModulesKey` | `DynamicModuleRegistry \| undefined` | Registry of loaded dynamic modules (extensible via declaration merging) |
58
- | `ModulesReadyKey` | `Ref<boolean>` | Whether all modules have finished loading |
59
- | `ModulesLoadErrorKey` | `Ref<boolean>` | Whether all modules failed to load |
56
+ | Key | Type | Description |
57
+ | --------------------- | ------------------------------------ | ----------------------------------------------------------------------- |
58
+ | `DynamicModulesKey` | `DynamicModuleRegistry \| undefined` | Registry of loaded dynamic modules (extensible via declaration merging) |
59
+ | `ModulesReadyKey` | `Ref<boolean>` | Whether all modules have finished loading |
60
+ | `ModulesLoadErrorKey` | `Ref<boolean>` | Whether all modules failed to load |
60
61
 
61
62
  ### UI State
62
63
 
63
- | Key | Type | Description |
64
- |-----|------|-------------|
65
- | `WidgetScopeKey` | `IWidgetScope` | Widget scope (provided by WidgetContainer for component-based widgets via `WidgetScope.vue`) |
66
- | `AppRootElementKey` | `Ref<HTMLElement \| undefined>` | App root element for scoped Teleport |
67
- | `EmbeddedModeKey` | `boolean` | Whether the app runs in embedded mode |
68
- | `ShellIndicatorsKey` | `ComputedRef<boolean>` | Unread indicator state for sidebar |
69
- | `CloseSettingsMenuKey` | `() => void` | Callback to close the settings menu |
64
+ | Key | Type | Description |
65
+ | ---------------------- | ------------------------------- | -------------------------------------------------------------------------------------------- |
66
+ | `WidgetScopeKey` | `IWidgetScope` | Widget scope (provided by WidgetContainer for component-based widgets via `WidgetScope.vue`) |
67
+ | `AppRootElementKey` | `Ref<HTMLElement \| undefined>` | App root element for scoped Teleport |
68
+ | `EmbeddedModeKey` | `boolean` | Whether the app runs in embedded mode |
69
+ | `ShellIndicatorsKey` | `ComputedRef<boolean>` | Unread indicator state for sidebar |
70
+ | `CloseSettingsMenuKey` | `() => void` | Callback to close the settings menu |
70
71
 
71
72
  ### Breakpoints
72
73
 
73
- | Key | Type | Description |
74
- |-----|------|-------------|
75
- | `IsMobileKey` | `Ref<boolean>` | Mobile breakpoint |
76
- | `IsDesktopKey` | `Ref<boolean>` | Desktop breakpoint |
77
- | `IsPhoneKey` | `Ref<boolean>` | Phone breakpoint |
78
- | `IsTabletKey` | `Ref<boolean>` | Tablet breakpoint |
79
- | `IsTouchKey` | `boolean` | Touch device detection |
74
+ | Key | Type | Description |
75
+ | -------------- | -------------- | ---------------------- |
76
+ | `IsMobileKey` | `Ref<boolean>` | Mobile breakpoint |
77
+ | `IsDesktopKey` | `Ref<boolean>` | Desktop breakpoint |
78
+ | `IsPhoneKey` | `Ref<boolean>` | Phone breakpoint |
79
+ | `IsTabletKey` | `Ref<boolean>` | Tablet breakpoint |
80
+ | `IsTouchKey` | `boolean` | Touch device detection |
80
81
 
81
82
  ### Legacy Aliases (Deprecated)
82
83
 
83
- | Deprecated | Use Instead |
84
- |------------|-------------|
85
- | `navigationViewLocation` | `NavigationViewLocationKey` |
86
- | `BladeDescriptor` | `BladeDescriptorKey` |
87
- | `NotificationTemplatesSymbol` | `NotificationTemplatesKey` |
88
- | `BLADE_BACK_BUTTON` | `BladeBackButtonKey` |
89
- | `TOOLBAR_SERVICE` | `ToolbarServiceKey` |
90
- | `EMBEDDED_MODE` | `EmbeddedModeKey` |
84
+ | Deprecated | Use Instead |
85
+ | ----------------------------- | --------------------------- |
86
+ | `navigationViewLocation` | `NavigationViewLocationKey` |
87
+ | `BladeDescriptor` | `BladeDescriptorKey` |
88
+ | `NotificationTemplatesSymbol` | `NotificationTemplatesKey` |
89
+ | `BLADE_BACK_BUTTON` | `BladeBackButtonKey` |
90
+ | `TOOLBAR_SERVICE` | `ToolbarServiceKey` |
91
+ | `EMBEDDED_MODE` | `EmbeddedModeKey` |
91
92
 
92
93
  ## Usage Examples
93
94
 
@@ -21,12 +21,12 @@ The module exports `AssetsManagerModule` (a Vue plugin) and the `AssetsManager`
21
21
 
22
22
  The blade reads its configuration from `options` via `useBlade<AssetsManagerOptions>()` (not props):
23
23
 
24
- | Option | Type | Description |
25
- |---|---|---|
26
- | `title` | `string?` | Custom blade title (defaults to i18n `ASSETS_MANAGER.TITLE`) |
27
- | `manager` | `UseAssetsManagerReturn` | The asset manager instance from `useAssetsManager()`. **Must be wrapped in `markRaw()`** |
28
- | `disabled` | `boolean?` | When true, hides upload/delete actions and disables reordering |
29
- | `hiddenFields` | `string[]?` | Fields to hide in the detail view |
24
+ | Option | Type | Description |
25
+ | -------------- | ------------------------ | ---------------------------------------------------------------------------------------- |
26
+ | `title` | `string?` | Custom blade title (defaults to i18n `ASSETS_MANAGER.TITLE`) |
27
+ | `manager` | `UseAssetsManagerReturn` | The asset manager instance from `useAssetsManager()`. **Must be wrapped in `markRaw()`** |
28
+ | `disabled` | `boolean?` | When true, hides upload/delete actions and disables reordering |
29
+ | `hiddenFields` | `string[]?` | Fields to hide in the detail view |
30
30
 
31
31
  > **Breaking change:** The old options (`assets`, `loading`, `assetsUploadHandler`, `assetsEditHandler`, `assetsRemoveHandler`) have been removed. Pass a single `manager` instance instead. See [migration guide #32](../../../migration/32-use-assets-manager.md).
32
32
 
@@ -71,9 +71,9 @@ openBlade({
71
71
 
72
72
  ## Toolbar
73
73
 
74
- | Button | Condition | Action |
75
- |---|---|---|
76
- | Add | `!disabled` | Opens file picker for upload |
74
+ | Button | Condition | Action |
75
+ | ------ | ------------------------------ | ------------------------------------------------ |
76
+ | Add | `!disabled` | Opens file picker for upload |
77
77
  | Delete | `!disabled` and items selected | Calls `manager.removeMany()` with selected items |
78
78
 
79
79
  ## Tips
@@ -12,18 +12,18 @@ These components provide ready-to-use modal dialogs for common scenarios. Each v
12
12
 
13
13
  The foundation component. Wraps `VcPopup` and adds footer action buttons based on the `mode`.
14
14
 
15
- | Prop | Type | Default | Description |
16
- |---|---|---|---|
17
- | `title` | `string` | -- | Dialog title |
18
- | `variant` | `PopupVariant` | `"default"` | Visual style: `"default"`, `"warning"`, `"error"`, `"info"` |
19
- | `mode` | `"acknowledge" \| "confirm"` | `"acknowledge"` | `acknowledge` = single OK button; `confirm` = Confirm + Cancel |
20
- | `actionLabel` | `string` | `""` | Label for the single button in acknowledge mode |
21
- | `confirmLabel` | `string` | `""` | Label for the confirm button |
22
- | `cancelLabel` | `string` | `""` | Label for the cancel button |
23
- | `confirmAsText` | `boolean` | `false` | Render confirm button as text-only style |
24
- | `closable` | `boolean` | `true` | Show close (X) button in the header |
25
- | `isMobileFullscreen` | `boolean` | `true` | Expand to fullscreen on mobile |
26
- | `closeOnConfirm` | `boolean` | `false` | Auto-close the popup after confirm is emitted |
15
+ | Prop | Type | Default | Description |
16
+ | -------------------- | ---------------------------- | --------------- | -------------------------------------------------------------- |
17
+ | `title` | `string` | -- | Dialog title |
18
+ | `variant` | `PopupVariant` | `"default"` | Visual style: `"default"`, `"warning"`, `"error"`, `"info"` |
19
+ | `mode` | `"acknowledge" \| "confirm"` | `"acknowledge"` | `acknowledge` = single OK button; `confirm` = Confirm + Cancel |
20
+ | `actionLabel` | `string` | `""` | Label for the single button in acknowledge mode |
21
+ | `confirmLabel` | `string` | `""` | Label for the confirm button |
22
+ | `cancelLabel` | `string` | `""` | Label for the cancel button |
23
+ | `confirmAsText` | `boolean` | `false` | Render confirm button as text-only style |
24
+ | `closable` | `boolean` | `true` | Show close (X) button in the header |
25
+ | `isMobileFullscreen` | `boolean` | `true` | Expand to fullscreen on mobile |
26
+ | `closeOnConfirm` | `boolean` | `false` | Auto-close the popup after confirm is emitted |
27
27
 
28
28
  Events: `close`, `confirm`
29
29
 
@@ -34,17 +34,13 @@ Slots: `header`, `default` (content), `footer` (receives `{ close, confirm }`)
34
34
  A confirm dialog styled with the `warning` variant. Shows Confirm and Cancel buttons.
35
35
 
36
36
  ```vue
37
- <VcPopupWarning
38
- title="Delete item?"
39
- @close="onCancel"
40
- @confirm="onDelete"
41
- >
37
+ <VcPopupWarning title="Delete item?" @close="onCancel" @confirm="onDelete">
42
38
  <p>This action cannot be undone.</p>
43
39
  </VcPopupWarning>
44
40
  ```
45
41
 
46
- | Prop | Type | Description |
47
- |---|---|---|
42
+ | Prop | Type | Description |
43
+ | ------- | -------- | ------------ |
48
44
  | `title` | `string` | Dialog title |
49
45
 
50
46
  Events: `close`, `confirm`
@@ -55,16 +51,13 @@ Slots: `header`, `default`
55
51
  An acknowledge dialog styled with the `error` variant. Shows a single OK button.
56
52
 
57
53
  ```vue
58
- <VcPopupError
59
- title="Operation Failed"
60
- @close="dismiss"
61
- >
54
+ <VcPopupError title="Operation Failed" @close="dismiss">
62
55
  <p>Could not save changes. Please try again.</p>
63
56
  </VcPopupError>
64
57
  ```
65
58
 
66
- | Prop | Type | Description |
67
- |---|---|---|
59
+ | Prop | Type | Description |
60
+ | ------- | -------- | ------------ |
68
61
  | `title` | `string` | Dialog title |
69
62
 
70
63
  Events: `close`
@@ -75,16 +68,13 @@ Slots: `header`, `default`
75
68
  An acknowledge dialog styled with the `info` variant. Shows a single OK button.
76
69
 
77
70
  ```vue
78
- <VcPopupInfo
79
- title="Information"
80
- @close="dismiss"
81
- >
71
+ <VcPopupInfo title="Information" @close="dismiss">
82
72
  <p>Your changes have been saved successfully.</p>
83
73
  </VcPopupInfo>
84
74
  ```
85
75
 
86
- | Prop | Type | Description |
87
- |---|---|---|
76
+ | Prop | Type | Description |
77
+ | ------- | -------- | ------------ |
88
78
  | `title` | `string` | Dialog title |
89
79
 
90
80
  Events: `close`
@@ -95,12 +85,7 @@ Slots: `header`, `default`
95
85
  ### Confirmation before destructive action
96
86
 
97
87
  ```vue
98
- <VcPopupWarning
99
- v-if="showDeleteConfirm"
100
- title="Delete Order"
101
- @confirm="deleteOrder"
102
- @close="showDeleteConfirm = false"
103
- >
88
+ <VcPopupWarning v-if="showDeleteConfirm" title="Delete Order" @confirm="deleteOrder" @close="showDeleteConfirm = false">
104
89
  Are you sure you want to delete this order?
105
90
  </VcPopupWarning>
106
91
  ```
@@ -108,12 +93,7 @@ Slots: `header`, `default`
108
93
  ### Custom footer in VcPopupBase
109
94
 
110
95
  ```vue
111
- <VcPopupBase
112
- variant="warning"
113
- mode="confirm"
114
- title="Custom Actions"
115
- @close="onClose"
116
- >
96
+ <VcPopupBase variant="warning" mode="confirm" title="Custom Actions" @close="onClose">
117
97
  <template #footer="{ close, confirm }">
118
98
  <VcButton variant="danger" @click="confirm">Delete Forever</VcButton>
119
99
  <VcButton @click="close">Keep</VcButton>
@@ -35,11 +35,11 @@ With custom branding:
35
35
 
36
36
  ## Key Props
37
37
 
38
- | Prop | Type | Default | Description |
39
- |------|------|---------|-------------|
40
- | `forced` | `boolean` | `false` | Show expired-password info banner and adjusted title |
41
- | `logo` | `string` | - | Override logo image URL |
42
- | `background` | `string` | - | Custom background image URL |
38
+ | Prop | Type | Default | Description |
39
+ | ------------ | --------- | ------- | ---------------------------------------------------- |
40
+ | `forced` | `boolean` | `false` | Show expired-password info banner and adjusted title |
41
+ | `logo` | `string` | - | Override logo image URL |
42
+ | `background` | `string` | - | Custom background image URL |
43
43
 
44
44
  ## Recipe: Router Configuration with Forced Mode
45
45
 
@@ -31,11 +31,11 @@ With custom branding:
31
31
 
32
32
  ## Key Props
33
33
 
34
- | Prop | Type | Default | Description |
35
- |------|------|---------|-------------|
36
- | `logo` | `string` | - | Override logo image URL |
37
- | `background` | `string` | - | Custom background image URL |
38
- | `composable` | `() => { forgotPassword }` | - | Custom composable providing `forgotPassword(args)` |
34
+ | Prop | Type | Default | Description |
35
+ | ------------ | -------------------------- | ------- | -------------------------------------------------- |
36
+ | `logo` | `string` | - | Override logo image URL |
37
+ | `background` | `string` | - | Custom background image URL |
38
+ | `composable` | `() => { forgotPassword }` | - | Custom composable providing `forgotPassword(args)` |
39
39
 
40
40
  ## Recipe: Custom Reset Flow with a Different API
41
41
 
@@ -36,13 +36,13 @@ With custom branding:
36
36
 
37
37
  ## Key Props
38
38
 
39
- | Prop | Type | Default | Description |
40
- |------|------|---------|-------------|
41
- | `userId` | `string` | **required** | Invited user's ID from the link |
42
- | `userName` | `string` | **required** | Invited user's email (shown as disabled field) |
43
- | `token` | `string` | **required** | Invitation token from the email link |
44
- | `logo` | `string` | `/assets/logo-white.svg` | Logo image URL |
45
- | `background` | `string` | `/assets/background.jpg` | Background image URL |
39
+ | Prop | Type | Default | Description |
40
+ | ------------ | -------- | ------------------------ | ---------------------------------------------- |
41
+ | `userId` | `string` | **required** | Invited user's ID from the link |
42
+ | `userName` | `string` | **required** | Invited user's email (shown as disabled field) |
43
+ | `token` | `string` | **required** | Invitation token from the email link |
44
+ | `logo` | `string` | `/assets/logo-white.svg` | Logo image URL |
45
+ | `background` | `string` | `/assets/background.jpg` | Background image URL |
46
46
 
47
47
  ## Recipe: Router Configuration
48
48
 
@@ -67,6 +67,7 @@ const routes = [
67
67
  ```
68
68
 
69
69
  The invitation email link typically looks like:
70
+
70
71
  ```
71
72
  https://your-app.com/invite?userId=abc123&userName=jane@example.com&token=xyz789...
72
73
  ```
@@ -34,13 +34,13 @@ SSO-only mode:
34
34
 
35
35
  ## Key Props
36
36
 
37
- | Prop | Type | Default | Description |
38
- |------|------|---------|-------------|
39
- | `logo` | `string` | - | Override logo image URL |
40
- | `background` | `string` | - | Custom background image URL |
41
- | `title` | `string` | i18n `LOGIN.TITLE` | Page heading text |
42
- | `subtitle` | `string` | i18n `LOGIN.SUBTITLE` | Page subheading text |
43
- | `ssoOnly` | `boolean` | `false` | Hide credentials form, show only SSO providers |
37
+ | Prop | Type | Default | Description |
38
+ | ------------ | --------- | --------------------- | ---------------------------------------------- |
39
+ | `logo` | `string` | - | Override logo image URL |
40
+ | `background` | `string` | - | Custom background image URL |
41
+ | `title` | `string` | i18n `LOGIN.TITLE` | Page heading text |
42
+ | `subtitle` | `string` | i18n `LOGIN.SUBTITLE` | Page subheading text |
43
+ | `ssoOnly` | `boolean` | `false` | Hide credentials form, show only SSO providers |
44
44
 
45
45
  ## Recipe: Router Configuration
46
46