@vc-shell/vc-app-skill 2.0.0-alpha.32 → 2.0.0-alpha.33-pr220.455e322

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 +59 -47
  2. package/README.md +18 -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 +94 -0
  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 +31 -27
  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 +75 -19
  29. package/runtime/knowledge/docs/core/composables/useBladeRegistry/useBladeRegistry.docs.md +15 -15
  30. package/runtime/knowledge/docs/core/composables/useBladeWidgets/index.docs.md +74 -78
  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 +10 -10
  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/usePopup/usePopup.docs.md +32 -24
  46. package/runtime/knowledge/docs/core/composables/useResponsive/useResponsive.docs.md +32 -11
  47. package/runtime/knowledge/docs/core/composables/useSettings/useSettings.docs.md +24 -15
  48. package/runtime/knowledge/docs/core/composables/useSettingsMenu/useSettingsMenu.docs.md +7 -7
  49. package/runtime/knowledge/docs/core/composables/useSidebarState/useSidebarState.docs.md +32 -24
  50. package/runtime/knowledge/docs/core/composables/useSlowNetworkDetection/useSlowNetworkDetection.docs.md +21 -17
  51. package/runtime/knowledge/docs/core/composables/useTheme/useTheme.docs.md +24 -24
  52. package/runtime/knowledge/docs/core/composables/useToolbar/useToolbar.docs.md +28 -31
  53. package/runtime/knowledge/docs/core/composables/useUser/useUser.docs.md +43 -24
  54. package/runtime/knowledge/docs/core/composables/useUserManagement/useUserManagement.docs.md +68 -48
  55. package/runtime/knowledge/docs/core/composables/useWebVitals/useWebVitals.docs.md +19 -19
  56. package/runtime/knowledge/docs/core/composables/useWidgets/useWidgets.docs.md +42 -47
  57. package/runtime/knowledge/docs/core/directives/autofocus/autofocus.docs.md +10 -4
  58. package/runtime/knowledge/docs/core/directives/loading/loading.docs.md +35 -20
  59. package/runtime/knowledge/docs/core/notifications/notifications.docs.md +36 -35
  60. package/runtime/knowledge/docs/core/plugins/ai-agent/ai-agent.docs.md +38 -38
  61. package/runtime/knowledge/docs/core/plugins/extension-points/extension-points.docs.md +107 -91
  62. package/runtime/knowledge/docs/core/plugins/global-error-handler/global-error-handler.docs.md +10 -10
  63. package/runtime/knowledge/docs/core/plugins/i18n/i18n.docs.md +21 -23
  64. package/runtime/knowledge/docs/core/plugins/modularity/modularity.docs.md +98 -90
  65. package/runtime/knowledge/docs/core/plugins/permissions/permissions.docs.md +10 -16
  66. package/runtime/knowledge/docs/core/plugins/signalR/signalR.docs.md +9 -9
  67. package/runtime/knowledge/docs/core/plugins/validation/validation.docs.md +65 -22
  68. package/runtime/knowledge/docs/core/services/services.docs.md +19 -22
  69. package/runtime/knowledge/docs/core/types/types.docs.md +40 -40
  70. package/runtime/knowledge/docs/core/utilities/date/date-utilities.docs.md +27 -27
  71. package/runtime/knowledge/docs/core/utilities/shared-utilities.docs.md +23 -23
  72. package/runtime/knowledge/docs/core/utilities/thumbnail/thumbnail.docs.md +22 -25
  73. package/runtime/knowledge/docs/core/utilities/utilities.docs.md +64 -64
  74. package/runtime/knowledge/docs/injection-keys.docs.md +52 -51
  75. package/runtime/knowledge/docs/modules/assets-manager/assets-manager.docs.md +9 -9
  76. package/runtime/knowledge/docs/shell/_internal/popup/common/popup-common.docs.md +23 -43
  77. package/runtime/knowledge/docs/shell/auth/ChangePasswordPage/change-password-page.docs.md +102 -0
  78. package/runtime/knowledge/docs/shell/auth/ForgotPasswordPage/forgot-password-page.docs.md +5 -5
  79. package/runtime/knowledge/docs/shell/auth/InvitePage/invite-page.docs.md +8 -7
  80. package/runtime/knowledge/docs/shell/auth/LoginPage/login-page.docs.md +7 -7
  81. package/runtime/knowledge/docs/shell/auth/ResetPasswordPage/reset-password-page.docs.md +8 -7
  82. package/runtime/knowledge/docs/shell/auth/sign-in/sign-in.docs.md +29 -13
  83. package/runtime/knowledge/docs/shell/components/change-password/change-password.docs.md +13 -16
  84. package/runtime/knowledge/docs/shell/components/change-password-button/change-password-button.docs.md +1 -7
  85. package/runtime/knowledge/docs/shell/components/error-interceptor/error-interceptor.docs.md +5 -5
  86. package/runtime/knowledge/docs/shell/components/language-selector/language-selector.docs.md +1 -1
  87. package/runtime/knowledge/docs/shell/components/logout-button/logout-button.docs.md +1 -1
  88. package/runtime/knowledge/docs/shell/components/notification-template/notification-template.docs.md +17 -9
  89. package/runtime/knowledge/docs/shell/components/settings-menu/settings-menu.docs.md +12 -18
  90. package/runtime/knowledge/docs/shell/components/settings-menu-item/settings-menu-item.docs.md +34 -65
  91. package/runtime/knowledge/docs/shell/components/sidebar/sidebar.docs.md +16 -26
  92. package/runtime/knowledge/docs/shell/components/theme-selector/theme-selector.docs.md +2 -2
  93. package/runtime/knowledge/docs/shell/components/user-dropdown-button/user-dropdown-button.docs.md +7 -9
  94. package/runtime/knowledge/docs/shell/dashboard/dashboard-charts/dashboard-charts.docs.md +30 -40
  95. package/runtime/knowledge/docs/shell/dashboard/dashboard-widget-card/dashboard-widget-card.docs.md +26 -19
  96. package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/draggable-dashboard.docs.md +15 -12
  97. package/runtime/knowledge/docs/ui/components/atoms/vc-badge/vc-badge.docs.md +15 -26
  98. package/runtime/knowledge/docs/ui/components/atoms/vc-banner/vc-banner.docs.md +21 -19
  99. package/runtime/knowledge/docs/ui/components/atoms/vc-button/vc-button.docs.md +83 -67
  100. package/runtime/knowledge/docs/ui/components/atoms/vc-card/vc-card.docs.md +104 -59
  101. package/runtime/knowledge/docs/ui/components/atoms/vc-col/vc-col.docs.md +28 -11
  102. package/runtime/knowledge/docs/ui/components/atoms/vc-container/vc-container.docs.md +20 -17
  103. package/runtime/knowledge/docs/ui/components/atoms/vc-hint/vc-hint.docs.md +26 -17
  104. package/runtime/knowledge/docs/ui/components/atoms/vc-icon/vc-icon.docs.md +30 -32
  105. package/runtime/knowledge/docs/ui/components/atoms/vc-image/vc-image.docs.md +25 -48
  106. package/runtime/knowledge/docs/ui/components/atoms/vc-label/vc-label.docs.md +29 -24
  107. package/runtime/knowledge/docs/ui/components/atoms/vc-link/vc-link.docs.md +23 -15
  108. package/runtime/knowledge/docs/ui/components/atoms/vc-loading/vc-loading.docs.md +22 -13
  109. package/runtime/knowledge/docs/ui/components/atoms/vc-progress/vc-progress.docs.md +33 -18
  110. package/runtime/knowledge/docs/ui/components/atoms/vc-row/vc-row.docs.md +56 -15
  111. package/runtime/knowledge/docs/ui/components/atoms/vc-scrollable-container/vc-scrollable-container.docs.md +28 -15
  112. package/runtime/knowledge/docs/ui/components/atoms/vc-skeleton/vc-skeleton.docs.md +40 -20
  113. package/runtime/knowledge/docs/ui/components/atoms/vc-status/vc-status.docs.md +25 -14
  114. package/runtime/knowledge/docs/ui/components/atoms/vc-status-icon/vc-status-icon.docs.md +40 -14
  115. package/runtime/knowledge/docs/ui/components/atoms/vc-tooltip/vc-tooltip.docs.md +54 -42
  116. package/runtime/knowledge/docs/ui/components/atoms/vc-video/vc-video.docs.md +17 -17
  117. package/runtime/knowledge/docs/ui/components/atoms/vc-widget/vc-widget.docs.md +21 -21
  118. package/runtime/knowledge/docs/ui/components/molecules/multilanguage-selector/multilanguage-selector.docs.md +23 -10
  119. package/runtime/knowledge/docs/ui/components/molecules/vc-accordion/vc-accordion.docs.md +59 -44
  120. package/runtime/knowledge/docs/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.docs.md +23 -20
  121. package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox/vc-checkbox.docs.md +96 -64
  122. package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.docs.md +26 -35
  123. package/runtime/knowledge/docs/ui/components/molecules/vc-color-input/vc-color-input.docs.md +69 -22
  124. package/runtime/knowledge/docs/ui/components/molecules/vc-date-picker/vc-date-picker.docs.md +58 -72
  125. package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown/vc-dropdown.docs.md +91 -85
  126. package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown-panel/vc-dropdown-panel.docs.md +38 -42
  127. package/runtime/knowledge/docs/ui/components/molecules/vc-editor/vc-editor.docs.md +60 -72
  128. package/runtime/knowledge/docs/ui/components/molecules/vc-field/vc-field.docs.md +65 -26
  129. package/runtime/knowledge/docs/ui/components/molecules/vc-file-upload/vc-file-upload.docs.md +46 -49
  130. package/runtime/knowledge/docs/ui/components/molecules/vc-form/vc-form.docs.md +35 -64
  131. package/runtime/knowledge/docs/ui/components/molecules/vc-image-tile/vc-image-tile.docs.md +38 -41
  132. package/runtime/knowledge/docs/ui/components/molecules/vc-input/vc-input.docs.md +115 -130
  133. package/runtime/knowledge/docs/ui/components/molecules/vc-input-currency/vc-input-currency.docs.md +53 -87
  134. package/runtime/knowledge/docs/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.docs.md +56 -63
  135. package/runtime/knowledge/docs/ui/components/molecules/vc-input-group/vc-input-group.docs.md +29 -24
  136. package/runtime/knowledge/docs/ui/components/molecules/vc-menu/vc-menu.docs.md +32 -28
  137. package/runtime/knowledge/docs/ui/components/molecules/vc-multivalue/vc-multivalue.docs.md +63 -64
  138. package/runtime/knowledge/docs/ui/components/molecules/vc-pagination/vc-pagination.docs.md +28 -26
  139. package/runtime/knowledge/docs/ui/components/molecules/vc-radio-button/vc-radio-button.docs.md +59 -19
  140. package/runtime/knowledge/docs/ui/components/molecules/vc-radio-group/vc-radio-group.docs.md +25 -34
  141. package/runtime/knowledge/docs/ui/components/molecules/vc-rating/vc-rating.docs.md +42 -32
  142. package/runtime/knowledge/docs/ui/components/molecules/vc-select/vc-select.docs.md +78 -82
  143. package/runtime/knowledge/docs/ui/components/molecules/vc-slider/vc-slider.docs.md +25 -15
  144. package/runtime/knowledge/docs/ui/components/molecules/vc-switch/vc-switch.docs.md +59 -63
  145. package/runtime/knowledge/docs/ui/components/molecules/vc-textarea/vc-textarea.docs.md +57 -69
  146. package/runtime/knowledge/docs/ui/components/molecules/vc-toast/vc-toast.docs.md +58 -57
  147. package/runtime/knowledge/docs/ui/components/organisms/vc-app/vc-app.docs.md +49 -26
  148. package/runtime/knowledge/docs/ui/components/organisms/vc-auth-layout/vc-auth-layout.docs.md +82 -28
  149. package/runtime/knowledge/docs/ui/components/organisms/vc-blade/vc-blade.docs.md +120 -75
  150. package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/composables/table-composables.docs.md +30 -44
  151. package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/vc-data-table.docs.md +536 -365
  152. package/runtime/knowledge/docs/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.docs.md +35 -52
  153. package/runtime/knowledge/docs/ui/components/organisms/vc-gallery/vc-gallery.docs.md +33 -62
  154. package/runtime/knowledge/docs/ui/components/organisms/vc-image-upload/vc-image-upload.docs.md +17 -23
  155. package/runtime/knowledge/docs/ui/components/organisms/vc-popup/vc-popup.docs.md +109 -68
  156. package/runtime/knowledge/docs/ui/components/organisms/vc-sidebar/vc-sidebar.docs.md +82 -44
  157. package/runtime/knowledge/docs/ui/composables/ui-composables.docs.md +8 -8
  158. package/runtime/knowledge/docs/ui/composables/useDataTablePagination.docs.md +164 -0
  159. package/runtime/knowledge/docs/ui/composables/useDataTableSort.docs.md +34 -26
  160. package/runtime/knowledge/docs/ui/composables/useTableSelection.docs.md +48 -40
  161. package/runtime/knowledge/docs/ui/composables/useTableSort.docs.md +30 -17
  162. package/runtime/knowledge/docs/ui/types/ui-types.docs.md +40 -29
  163. package/runtime/knowledge/examples/offers-module.md +15 -13
  164. package/runtime/knowledge/examples/team-module.md +82 -119
  165. package/runtime/knowledge/examples/videos-module.md +44 -17
  166. package/runtime/knowledge/index.md +22 -0
  167. package/runtime/knowledge/migration-prompts/blade-form-migration.md +255 -0
  168. package/runtime/knowledge/migration-prompts/blade-props-migration.md +194 -0
  169. package/runtime/knowledge/migration-prompts/datatable-migration.md +801 -0
  170. package/runtime/knowledge/migration-prompts/icon-migration.md +97 -0
  171. package/runtime/knowledge/migration-prompts/manual-migration-audit.md +117 -0
  172. package/runtime/knowledge/migration-prompts/notifications-migration.md +223 -0
  173. package/runtime/knowledge/migration-prompts/nswag-migration.md +244 -0
  174. package/runtime/knowledge/migration-prompts/use-assets-migration.md +164 -0
  175. package/runtime/knowledge/migration-prompts/use-data-table-pagination-migration.md +176 -0
  176. package/runtime/knowledge/migration-prompts/widgets-migration.md +178 -0
  177. package/runtime/knowledge/patterns/assets-management.md +20 -20
  178. package/runtime/knowledge/patterns/blade-navigation.md +7 -14
  179. package/runtime/knowledge/patterns/blade-widget.md +19 -17
  180. package/runtime/knowledge/patterns/child-blade-flow.md +19 -7
  181. package/runtime/knowledge/patterns/composable-details.md +20 -50
  182. package/runtime/knowledge/patterns/composable-list.md +43 -31
  183. package/runtime/knowledge/patterns/dashboard-widget.md +14 -16
  184. package/runtime/knowledge/patterns/datatable-pattern.md +521 -0
  185. package/runtime/knowledge/patterns/details-blade-pattern.md +78 -116
  186. package/runtime/knowledge/patterns/extension-points-usage.md +53 -44
  187. package/runtime/knowledge/patterns/form-validation.md +28 -64
  188. package/runtime/knowledge/patterns/list-blade-pattern.md +33 -21
  189. package/runtime/knowledge/patterns/module-structure.md +7 -1
  190. package/runtime/knowledge/patterns/multilanguage-fields.md +8 -14
  191. package/runtime/knowledge/patterns/notification-template.md +21 -14
  192. package/runtime/knowledge/patterns/signalr-notifications.md +30 -32
  193. package/runtime/knowledge/patterns/toolbar-pattern.md +18 -20
  194. package/runtime/vc-app.md +354 -49
  195. package/runtime/knowledge/docs/core/constants/constants.docs.md +0 -185
@@ -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
@@ -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