@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
@@ -13,25 +13,25 @@ Every service follows the same architecture:
13
13
 
14
14
  ### Internal Building Blocks (`_internal/`)
15
15
 
16
- | Helper | Purpose |
17
- |---|---|
18
- | `createPreregistrationBus` | Generic bus that stores items by key and replays them into a service. Supports live-register (after service is up) and broadcast. |
19
- | `createBladeScopedRegistry` | Reactive `Map<bladeId, Item[]>` with register/unregister/update/clear. Used by WidgetService and ToolbarService. |
20
- | `createSimpleMapRegistry` | Reactive `Map<id, Item>` with sorted computed output. Used by SettingsMenuService and AppBarMenuService. |
16
+ | Helper | Purpose |
17
+ | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
18
+ | `createPreregistrationBus` | Generic bus that stores items by key and replays them into a service. Supports live-register (after service is up) and broadcast. |
19
+ | `createBladeScopedRegistry` | Reactive `Map<bladeId, Item[]>` with register/unregister/update/clear. Used by WidgetService and ToolbarService. |
20
+ | `createSimpleMapRegistry` | Reactive `Map<id, Item>` with sorted computed output. Used by SettingsMenuService and AppBarMenuService. |
21
21
 
22
22
  ## Services
23
23
 
24
- | Service | Factory | Module-level API | Key Type |
25
- |---|---|---|---|
26
- | **MenuService** | `createMenuService()` | `addMenuItem()`, `removeRegisteredMenuItem()`, `setMenuBadge()` | `MenuItem` |
27
- | **WidgetService** | `createWidgetService()` | `registerWidget()`, `registerExternalWidget()` | `IWidget` |
28
- | **ToolbarService** | `createToolbarService()` | `registerToolbarItem()` | `IToolbarItem` |
29
- | **DashboardService** | `createDashboardService()` | `registerDashboardWidget()` | `DashboardWidget` |
30
- | **SettingsMenuService** | `createSettingsMenuService()` | `addSettingsMenuItem()` | `ISettingsMenuItem` |
31
- | **AppBarWidgetService** | `createAppBarWidgetService()` | `addAppBarWidget()` | `AppBarWidget` |
32
- | **AppBarMobileButtonsService** | `createAppBarMobileButtonsService()` | (direct API) | `AppBarButtonContent` |
33
- | **GlobalSearchService** | `createGlobalSearchService()` | (direct API) | per-blade search state |
34
- | **LanguageService** | `createLanguageService()` | (direct API) | locale strings |
24
+ | Service | Factory | Module-level API | Key Type |
25
+ | ------------------------------ | ------------------------------------ | --------------------------------------------------------------- | ---------------------- |
26
+ | **MenuService** | `createMenuService()` | `addMenuItem()`, `removeRegisteredMenuItem()`, `setMenuBadge()` | `MenuItem` |
27
+ | **WidgetService** | `createWidgetService()` | `registerWidget()`, `registerExternalWidget()` | `IWidget` |
28
+ | **ToolbarService** | `createToolbarService()` | `registerToolbarItem()` | `IToolbarItem` |
29
+ | **DashboardService** | `createDashboardService()` | `registerDashboardWidget()` | `DashboardWidget` |
30
+ | **SettingsMenuService** | `createSettingsMenuService()` | `addSettingsMenuItem()` | `ISettingsMenuItem` |
31
+ | **AppBarWidgetService** | `createAppBarWidgetService()` | `addAppBarWidget()` | `AppBarWidget` |
32
+ | **AppBarMobileButtonsService** | `createAppBarMobileButtonsService()` | (direct API) | `AppBarButtonContent` |
33
+ | **GlobalSearchService** | `createGlobalSearchService()` | (direct API) | per-blade search state |
34
+ | **LanguageService** | `createLanguageService()` | (direct API) | locale strings |
35
35
 
36
36
  ## Usage
37
37
 
@@ -48,10 +48,7 @@ addMenuItem({
48
48
  priority: 10,
49
49
  });
50
50
 
51
- registerWidget(
52
- { id: "order-stats", component: OrderStatsWidget },
53
- "OrderDetails",
54
- );
51
+ registerWidget({ id: "order-stats", component: OrderStatsWidget }, "OrderDetails");
55
52
  ```
56
53
 
57
54
  ### Using inside a component
@@ -59,8 +56,8 @@ registerWidget(
59
56
  ```typescript
60
57
  import { useMenu, useToolbar } from "@vc-shell/framework";
61
58
 
62
- const { menuItems } = useMenu(); // reactive menu tree
63
- const { toolbarItems } = useToolbar(); // toolbar items for current blade
59
+ const { menuItems } = useMenu(); // reactive menu tree
60
+ const { toolbarItems } = useToolbar(); // toolbar items for current blade
64
61
  ```
65
62
 
66
63
  ### Menu badges
@@ -14,66 +14,66 @@ All types are re-exported from `@vc-shell/framework`, so module developers impor
14
14
 
15
15
  ### Validation
16
16
 
17
- | Type | Description |
18
- |------|-------------|
17
+ | Type | Description |
18
+ | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
19
19
  | `IValidationRules` | Validation rule map for form fields. Supports `required`, `email`, `min`, `max`, `regex`, `between`, `confirmed`, `ext`, `mimes`, `dimensions`, `before`/`after` date comparison, and more. |
20
20
 
21
21
  ### Menu System (`menu-types.ts`)
22
22
 
23
- | Type | Description |
24
- |------|-------------|
25
- | `MenuItemConfig` | Configuration for registering a menu item: `title`, `icon`, `priority`, `permissions`, `group`/`groupConfig`, `badge`. |
26
- | `MenuItemBadge` | Badge display config: `content` (static, ref, computed, or function), `variant`, `isDot`. |
27
- | `MenuItemBadgeConfig` | Union: full `MenuItemBadge` object or shorthand `number \| string \| Ref \| ComputedRef \| function`. |
28
- | `MenuItem` | Runtime menu item extending `MenuItemConfig` with `routeId`, `url`, `children[]`, `groupIcon`, `groupId`. |
23
+ | Type | Description |
24
+ | --------------------- | ---------------------------------------------------------------------------------------------------------------------- |
25
+ | `MenuItemConfig` | Configuration for registering a menu item: `title`, `icon`, `priority`, `permissions`, `group`/`groupConfig`, `badge`. |
26
+ | `MenuItemBadge` | Badge display config: `content` (static, ref, computed, or function), `variant`, `isDot`. |
27
+ | `MenuItemBadgeConfig` | Union: full `MenuItemBadge` object or shorthand `number \| string \| Ref \| ComputedRef \| function`. |
28
+ | `MenuItem` | Runtime menu item extending `MenuItemConfig` with `routeId`, `url`, `children[]`, `groupIcon`, `groupId`. |
29
29
 
30
30
  ### Toolbar
31
31
 
32
- | Type | Description |
33
- |------|-------------|
34
- | `IBladeToolbar` | Toolbar button config: `id`, `icon`, `disabled`, `title`, `isVisible`, `clickHandler`, `separator`, `permissions`. |
35
- | `ToolbarMenu<T>` | Generic toolbar menu item that infers component props from the provided component type. |
32
+ | Type | Description |
33
+ | ---------------- | ------------------------------------------------------------------------------------------------------------------ |
34
+ | `IBladeToolbar` | Toolbar button config: `id`, `icon`, `disabled`, `title`, `isVisible`, `clickHandler`, `separator`, `permissions`. |
35
+ | `ToolbarMenu<T>` | Generic toolbar menu item that infers component props from the provided component type. |
36
36
 
37
37
  ### Table Columns
38
38
 
39
- | Type | Description |
40
- |------|-------------|
41
- | `ITableColumnsBase` | Column definition: `id`, `title`, `width`, `field`, `type` (money, date, image, status, etc.), `sortable`, `editable`, `rules`, `filter`, `mobilePosition`, `mobileVisible`. |
42
- | `ITableColumns` | Union of `ITableColumnsBase` with specialized image and money column variants. |
43
- | `IColumnFilterConfig` | Column filter: `true` (text), `string` (custom field), `{ options }` (select), `{ range }` (date range). |
44
- | `IFilterOption` | Select filter option: `{ value, label }`. |
39
+ | Type | Description |
40
+ | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
41
+ | `ITableColumnsBase` | Column definition: `id`, `title`, `width`, `field`, `type` (money, date, image, status, etc.), `sortable`, `editable`, `rules`, `filter`, `mobilePosition`, `mobileVisible`. |
42
+ | `ITableColumns` | Union of `ITableColumnsBase` with specialized image and money column variants. |
43
+ | `IColumnFilterConfig` | Column filter: `true` (text), `string` (custom field), `{ options }` (select), `{ range }` (date range). |
44
+ | `IFilterOption` | Select filter option: `{ value, label }`. |
45
45
 
46
46
  ### Assets
47
47
 
48
- | Type | Description |
49
- |------|-------------|
50
- | `ICommonAsset` | Asset record: `url`, `relativeUrl`, `title`, `name`, `size`, `sortOrder`, `typeId`, dates. |
48
+ | Type | Description |
49
+ | ------------------ | ------------------------------------------------------------------------------------------ |
50
+ | `ICommonAsset` | Asset record: `url`, `relativeUrl`, `title`, `name`, `size`, `sortOrder`, `typeId`, dates. |
51
51
  | `AssetsHandler<T>` | Asset operations: `upload()`, `edit()`, `remove()`, `loading` ref, `noRemoveConfirmation`. |
52
52
 
53
53
  ### Service Abstractions (`services.ts`)
54
54
 
55
- | Type | Description |
56
- |------|-------------|
57
- | `ServiceLifecycle<T>` | Service create/provide/cleanup lifecycle. |
58
- | `PreregistrationQueue<T>` | Queue for items registered before a service initializes: `register()`, `flush()`, `clear()`. |
59
- | `RegistryService<TKey, TItem>` | Generic registry: `register()`, `unregister()`, `get()`, `has()`, `getAll()`, `clear()`. |
60
- | `ListService<T>` | Reactive list: `items` ref, `add()`, `remove()`, `find()`, `filter()`. |
61
- | `OrderedListService<T>` | Extends `ListService` with `reorder()` and `getSorted()`. |
62
- | `ObservableService<T>` | Subscribe/getValue pattern for change observation. |
63
- | `ServiceResult<T>` | Async operation result: `success`, `data?`, `error?` with code/message/details. |
64
- | `WidgetRegistration` | Widget entry: `id`, `component`, `props`, `order`, `isVisible`. |
65
- | `MenuItemRegistration` | Menu item entry: `id`, `title`, `icon`, `priority`, `permissions`, `routeId`, `group`, `children`. |
66
- | `ToolbarItemRegistration` | Toolbar item entry: `id`, `title`, `icon`, `order`, `disabled`, `clickHandler`, `permissions`. |
55
+ | Type | Description |
56
+ | ------------------------------ | -------------------------------------------------------------------------------------------------- |
57
+ | `ServiceLifecycle<T>` | Service create/provide/cleanup lifecycle. |
58
+ | `PreregistrationQueue<T>` | Queue for items registered before a service initializes: `register()`, `flush()`, `clear()`. |
59
+ | `RegistryService<TKey, TItem>` | Generic registry: `register()`, `unregister()`, `get()`, `has()`, `getAll()`, `clear()`. |
60
+ | `ListService<T>` | Reactive list: `items` ref, `add()`, `remove()`, `find()`, `filter()`. |
61
+ | `OrderedListService<T>` | Extends `ListService` with `reorder()` and `getSorted()`. |
62
+ | `ObservableService<T>` | Subscribe/getValue pattern for change observation. |
63
+ | `ServiceResult<T>` | Async operation result: `success`, `data?`, `error?` with code/message/details. |
64
+ | `WidgetRegistration` | Widget entry: `id`, `component`, `props`, `order`, `isVisible`. |
65
+ | `MenuItemRegistration` | Menu item entry: `id`, `title`, `icon`, `priority`, `permissions`, `routeId`, `group`, `children`. |
66
+ | `ToolbarItemRegistration` | Toolbar item entry: `id`, `title`, `icon`, `order`, `disabled`, `clickHandler`, `permissions`. |
67
67
 
68
68
  ### Other
69
69
 
70
- | Type | Description |
71
- |------|-------------|
72
- | `IBladeDropdownItem` | Blade dropdown option: `id`, `title`, `icon`, `clickHandler`. |
73
- | `IMenuItem<T>` | Generic menu item with optional component slot. |
74
- | `NotificationTemplateConstructor` | Component constructor with a `notifyType` static field. |
75
- | `IActionBuilderResult<T>` | Row action definition: `icon`, `title`, `type` (danger/success/warning/info), `clickHandler`. |
76
- | `RequestPasswordResult` | Password reset result: `succeeded`, `error`, `errorCode`. |
70
+ | Type | Description |
71
+ | --------------------------------- | --------------------------------------------------------------------------------------------- |
72
+ | `IBladeDropdownItem` | Blade dropdown option: `id`, `title`, `icon`, `clickHandler`. |
73
+ | `IMenuItem<T>` | Generic menu item with optional component slot. |
74
+ | `NotificationTemplateConstructor` | Component constructor with a `notifyType` static field. |
75
+ | `IActionBuilderResult<T>` | Row action definition: `icon`, `title`, `type` (danger/success/warning/info), `clickHandler`. |
76
+ | `RequestPasswordResult` | Password reset result: `succeeded`, `error`, `errorCode`. |
77
77
 
78
78
  ## Usage Examples
79
79
 
@@ -8,13 +8,13 @@ The framework migrated from Moment.js to `date-fns`. These utilities handle the
8
8
 
9
9
  ## Exports
10
10
 
11
- | Export | Description |
12
- |---|---|
13
- | `formatDateRelative` | Formats a date as relative time (e.g., "3 hours ago", "2 days ago") |
14
- | `formatDateWithPattern` | Formats a date using a Moment.js-compatible format string |
15
- | `convertMomentFormat` | Converts a Moment.js format string to date-fns format |
16
- | `resolveLocale` | Async: loads and caches a date-fns locale by code (e.g., "fr", "de") |
17
- | `resolveLocaleSync` | Sync: returns cached locale or falls back to `enUS` while loading |
11
+ | Export | Description |
12
+ | ----------------------- | -------------------------------------------------------------------- |
13
+ | `formatDateRelative` | Formats a date as relative time (e.g., "3 hours ago", "2 days ago") |
14
+ | `formatDateWithPattern` | Formats a date using a Moment.js-compatible format string |
15
+ | `convertMomentFormat` | Converts a Moment.js format string to date-fns format |
16
+ | `resolveLocale` | Async: loads and caches a date-fns locale by code (e.g., "fr", "de") |
17
+ | `resolveLocaleSync` | Sync: returns cached locale or falls back to `enUS` while loading |
18
18
 
19
19
  ## Usage
20
20
 
@@ -48,30 +48,30 @@ formatDateWithPattern("2024-03-15T14:30:00Z", "LLL", "de");
48
48
  ```typescript
49
49
  import { convertMomentFormat } from "@vc-shell/framework";
50
50
 
51
- convertMomentFormat("YYYY-MM-DD"); // => "yyyy-MM-dd"
52
- convertMomentFormat("DD/MM/YYYY"); // => "dd/MM/yyyy"
53
- convertMomentFormat("LLL"); // => "PPp"
54
- convertMomentFormat("dddd"); // => "EEEE"
51
+ convertMomentFormat("YYYY-MM-DD"); // => "yyyy-MM-dd"
52
+ convertMomentFormat("DD/MM/YYYY"); // => "dd/MM/yyyy"
53
+ convertMomentFormat("LLL"); // => "PPp"
54
+ convertMomentFormat("dddd"); // => "EEEE"
55
55
  ```
56
56
 
57
57
  ### Token mapping reference
58
58
 
59
- | Moment | date-fns | Meaning |
60
- |--------|----------|---------|
61
- | `YYYY` | `yyyy` | 4-digit year |
62
- | `YY` | `yy` | 2-digit year |
63
- | `DD` | `dd` | Day of month (zero-padded) |
64
- | `D` | `d` | Day of month |
65
- | `Do` | `do` | Day ordinal |
66
- | `dddd` | `EEEE` | Weekday name |
67
- | `ddd` | `EEE` | Weekday abbreviation |
68
- | `A` | `a` | AM/PM |
69
- | `L` | `P` | Localized date |
70
- | `LL` | `PP` | Localized date (long) |
71
- | `LLL` | `PPp` | Localized date + time |
72
- | `LLLL` | `PPPp` | Localized date + time (full) |
73
- | `LT` | `p` | Localized time |
74
- | `LTS` | `pp` | Localized time with seconds |
59
+ | Moment | date-fns | Meaning |
60
+ | ------ | -------- | ---------------------------- |
61
+ | `YYYY` | `yyyy` | 4-digit year |
62
+ | `YY` | `yy` | 2-digit year |
63
+ | `DD` | `dd` | Day of month (zero-padded) |
64
+ | `D` | `d` | Day of month |
65
+ | `Do` | `do` | Day ordinal |
66
+ | `dddd` | `EEEE` | Weekday name |
67
+ | `ddd` | `EEE` | Weekday abbreviation |
68
+ | `A` | `a` | AM/PM |
69
+ | `L` | `P` | Localized date |
70
+ | `LL` | `PP` | Localized date (long) |
71
+ | `LLL` | `PPp` | Localized date + time |
72
+ | `LLLL` | `PPPp` | Localized date + time (full) |
73
+ | `LT` | `p` | Localized time |
74
+ | `LTS` | `pp` | Localized time with seconds |
75
75
 
76
76
  ### Locale resolution
77
77
 
@@ -8,18 +8,18 @@ This directory provides small, focused utility modules for asset handling, color
8
8
 
9
9
  ## Exports
10
10
 
11
- | Export | Module | Description |
12
- |---|---|---|
13
- | `isImage(name)` | `assets.ts` | Returns `true` if the file extension is an image (png, jpg, jpeg, svg, gif) |
14
- | `getFileThumbnail(name)` | `assets.ts` | Returns a Bootstrap icon class for the file type (e.g., `bi-filetype-pdf`) |
15
- | `readableSize(bytes)` | `assets.ts` | Formats byte count as human-readable string (e.g., `"1.5 MB"`) |
16
- | `convertColorNameToHex(name)` | `colorUtils.ts` | Converts a CSS color name to hex using the Canvas API |
17
- | `isValidHexColor(value)` | `colorUtils.ts` | Validates a 6-digit hex color string |
18
- | `normalizeHexColor(hex)` | `colorUtils.ts` | Ensures hex string starts with `#` |
19
- | `formatBadgeCount(value)` | `formatBadgeCount.ts` | Truncates numbers > 99 to `"99+"` for badge display |
20
- | `ComponentProps<T>` | `vueUtils.ts` | Extracts props type from a Vue component |
21
- | `ComponentSlots<T>` | `vueUtils.ts` | Extracts slots type from a Vue component |
22
- | `ComponentEmit<T>` | `vueUtils.ts` | Extracts emit type from a Vue component |
11
+ | Export | Module | Description |
12
+ | ----------------------------- | --------------------- | --------------------------------------------------------------------------- |
13
+ | `isImage(name)` | `assets.ts` | Returns `true` if the file extension is an image (png, jpg, jpeg, svg, gif) |
14
+ | `getFileThumbnail(name)` | `assets.ts` | Returns a Bootstrap icon class for the file type (e.g., `bi-filetype-pdf`) |
15
+ | `readableSize(bytes)` | `assets.ts` | Formats byte count as human-readable string (e.g., `"1.5 MB"`) |
16
+ | `convertColorNameToHex(name)` | `colorUtils.ts` | Converts a CSS color name to hex using the Canvas API |
17
+ | `isValidHexColor(value)` | `colorUtils.ts` | Validates a 6-digit hex color string |
18
+ | `normalizeHexColor(hex)` | `colorUtils.ts` | Ensures hex string starts with `#` |
19
+ | `formatBadgeCount(value)` | `formatBadgeCount.ts` | Truncates numbers > 99 to `"99+"` for badge display |
20
+ | `ComponentProps<T>` | `vueUtils.ts` | Extracts props type from a Vue component |
21
+ | `ComponentSlots<T>` | `vueUtils.ts` | Extracts slots type from a Vue component |
22
+ | `ComponentEmit<T>` | `vueUtils.ts` | Extracts emit type from a Vue component |
23
23
 
24
24
  ## Usage
25
25
 
@@ -28,15 +28,15 @@ This directory provides small, focused utility modules for asset handling, color
28
28
  ```typescript
29
29
  import { isImage, getFileThumbnail, readableSize } from "@vc-shell/framework";
30
30
 
31
- isImage("photo.jpg"); // true
32
- isImage("document.pdf"); // false
31
+ isImage("photo.jpg"); // true
32
+ isImage("document.pdf"); // false
33
33
 
34
34
  getFileThumbnail("report.xlsx"); // "bi-filetype-xls"
35
35
  getFileThumbnail("archive.zip"); // "bi-file-zip"
36
36
  getFileThumbnail("unknown.abc"); // "bi-file-earmark"
37
37
 
38
- readableSize(1536); // "1.5 KB"
39
- readableSize(0); // "0 Bytes"
38
+ readableSize(1536); // "1.5 KB"
39
+ readableSize(0); // "0 Bytes"
40
40
  ```
41
41
 
42
42
  ### Color utilities
@@ -44,14 +44,14 @@ readableSize(0); // "0 Bytes"
44
44
  ```typescript
45
45
  import { convertColorNameToHex, isValidHexColor, normalizeHexColor } from "@vc-shell/framework";
46
46
 
47
- convertColorNameToHex("red"); // "#ff0000"
47
+ convertColorNameToHex("red"); // "#ff0000"
48
48
  convertColorNameToHex("invalid"); // null
49
49
 
50
- isValidHexColor("#ff0000"); // true
51
- isValidHexColor("ff0000"); // true (checks with/without #)
52
- isValidHexColor("#fff"); // false (only 6-digit supported)
50
+ isValidHexColor("#ff0000"); // true
51
+ isValidHexColor("ff0000"); // true (checks with/without #)
52
+ isValidHexColor("#fff"); // false (only 6-digit supported)
53
53
 
54
- normalizeHexColor("ff0000"); // "#ff0000"
54
+ normalizeHexColor("ff0000"); // "#ff0000"
55
55
  ```
56
56
 
57
57
  ### Badge formatting
@@ -59,8 +59,8 @@ normalizeHexColor("ff0000"); // "#ff0000"
59
59
  ```typescript
60
60
  import { formatBadgeCount } from "@vc-shell/framework";
61
61
 
62
- formatBadgeCount(5); // "5"
63
- formatBadgeCount(150); // "99+"
62
+ formatBadgeCount(5); // "5"
63
+ formatBadgeCount(150); // "99+"
64
64
  formatBadgeCount(undefined); // undefined
65
65
  ```
66
66
 
@@ -12,21 +12,21 @@ Transforms full-size image URLs into thumbnail variants by appending size suffix
12
12
 
13
13
  ### Named Presets
14
14
 
15
- | Preset | Use Case |
16
- |--------|----------|
17
- | `sm` | Small icons, table cells, avatar thumbnails |
18
- | `md` | Medium previews, cards |
19
- | `lg` | Large previews, hero images |
15
+ | Preset | Use Case |
16
+ | ------ | ------------------------------------------- |
17
+ | `sm` | Small icons, table cells, avatar thumbnails |
18
+ | `md` | Medium previews, cards |
19
+ | `lg` | Large previews, hero images |
20
20
 
21
21
  ### Pixel Sizes
22
22
 
23
- | Size | Pixels | Use Case |
24
- |------|--------|----------|
25
- | `64x64` | 64px | Table cells, tiny thumbnails |
26
- | `128x128` | 128px | Small tiles, list items |
27
- | `168x168` | 168px | Medium tiles |
28
- | `216x216` | 216px | Gallery tiles (md) |
29
- | `348x348` | 348px | Large gallery tiles |
23
+ | Size | Pixels | Use Case |
24
+ | --------- | ------ | ---------------------------- |
25
+ | `64x64` | 64px | Table cells, tiny thumbnails |
26
+ | `128x128` | 128px | Small tiles, list items |
27
+ | `168x168` | 168px | Medium tiles |
28
+ | `216x216` | 216px | Gallery tiles (md) |
29
+ | `348x348` | 348px | Large gallery tiles |
30
30
 
31
31
  ## API
32
32
 
@@ -37,20 +37,21 @@ Transforms an image URL by inserting a size suffix before the file extension.
37
37
  ```ts
38
38
  import { getThumbnailUrl } from "@core/utilities/thumbnail";
39
39
 
40
- getThumbnailUrl("https://cdn.example.com/photo.jpg", "sm")
40
+ getThumbnailUrl("https://cdn.example.com/photo.jpg", "sm");
41
41
  // → "https://cdn.example.com/photo_sm.jpg"
42
42
 
43
- getThumbnailUrl("https://cdn.example.com/photo.jpg", "128x128")
43
+ getThumbnailUrl("https://cdn.example.com/photo.jpg", "128x128");
44
44
  // → "https://cdn.example.com/photo_128x128.jpg"
45
45
 
46
- getThumbnailUrl("https://cdn.example.com/photo.jpg")
46
+ getThumbnailUrl("https://cdn.example.com/photo.jpg");
47
47
  // → "https://cdn.example.com/photo.jpg" (unchanged)
48
48
 
49
- getThumbnailUrl(undefined, "sm")
49
+ getThumbnailUrl(undefined, "sm");
50
50
  // → undefined
51
51
  ```
52
52
 
53
53
  **Parameters:**
54
+
54
55
  - `url` — Original image URL (string or undefined)
55
56
  - `size` — Thumbnail size preset or pixel dimensions (optional)
56
57
 
@@ -63,10 +64,10 @@ Maps a CSS pixel display size to the best-fit thumbnail preset. Picks the smalle
63
64
  ```ts
64
65
  import { getBestThumbnailSize } from "@core/utilities/thumbnail";
65
66
 
66
- getBestThumbnailSize(48) // → "64x64"
67
- getBestThumbnailSize(96) // → "128x128"
68
- getBestThumbnailSize(200) // → "216x216"
69
- getBestThumbnailSize(500) // → "lg"
67
+ getBestThumbnailSize(48); // → "64x64"
68
+ getBestThumbnailSize(96); // → "128x128"
69
+ getBestThumbnailSize(200); // → "216x216"
70
+ getBestThumbnailSize(500); // → "lg"
70
71
  ```
71
72
 
72
73
  ## Usage in Components
@@ -74,11 +75,7 @@ getBestThumbnailSize(500) // → "lg"
74
75
  ### VcImage
75
76
 
76
77
  ```vue
77
- <VcImage
78
- :src="product.imgSrc"
79
- thumbnail-size="sm"
80
- size="s"
81
- />
78
+ <VcImage :src="product.imgSrc" thumbnail-size="sm" size="s" />
82
79
  ```
83
80
 
84
81
  ### VcGallery