@vc-shell/framework 1.2.3-beta.0 → 1.2.3

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 (244) hide show
  1. package/core/composables/index.ts +0 -2
  2. package/core/composables/useAssets/index.ts +28 -72
  3. package/core/composables/useAsync/index.ts +1 -4
  4. package/core/composables/useBladeRegistry/index.ts +5 -6
  5. package/core/composables/useBreadcrumbs/index.ts +1 -4
  6. package/core/composables/useErrorHandler/index.ts +1 -4
  7. package/core/composables/useFunctions/debounce.ts +1 -0
  8. package/core/composables/useFunctions/delay.ts +1 -0
  9. package/core/composables/useFunctions/index.ts +1 -0
  10. package/core/composables/useFunctions/once.ts +1 -0
  11. package/core/composables/useFunctions/sleep.ts +1 -0
  12. package/core/composables/useFunctions/throttle.ts +1 -0
  13. package/core/composables/useGlobalSearch/index.ts +3 -3
  14. package/core/composables/useMenuService/index.ts +12 -7
  15. package/core/composables/useNotifications/index.ts +2 -5
  16. package/core/composables/useTheme/index.ts +1 -4
  17. package/core/composables/useUser/index.ts +20 -189
  18. package/core/composables/useWidgets/index.ts +2 -5
  19. package/core/constants/index.ts +0 -2
  20. package/core/interceptors/index.ts +2 -5
  21. package/core/plugins/modularity/index.ts +6 -8
  22. package/core/plugins/modularity/loader.ts +33 -36
  23. package/core/plugins/signalR/index.ts +3 -6
  24. package/core/services/app-bar-menu-service.ts +1 -4
  25. package/core/services/dashboard-service.ts +1 -4
  26. package/core/services/global-search-service.ts +36 -0
  27. package/core/services/index.ts +0 -2
  28. package/core/services/menu-service.ts +41 -5
  29. package/core/services/settings-menu-service.ts +1 -4
  30. package/core/services/toolbar-service.ts +3 -18
  31. package/core/services/widget-service.ts +4 -7
  32. package/core/types/index.ts +47 -3
  33. package/core/utilities/index.ts +0 -2
  34. package/dist/core/composables/useAssets/index.d.ts.map +1 -1
  35. package/dist/core/composables/useAsync/index.d.ts.map +1 -1
  36. package/dist/core/composables/useBladeRegistry/index.d.ts.map +1 -1
  37. package/dist/core/composables/useBreadcrumbs/index.d.ts.map +1 -1
  38. package/dist/core/composables/useErrorHandler/index.d.ts.map +1 -1
  39. package/dist/core/composables/useFunctions/debounce.d.ts.map +1 -1
  40. package/dist/core/composables/useFunctions/delay.d.ts.map +1 -1
  41. package/dist/core/composables/useFunctions/index.d.ts.map +1 -1
  42. package/dist/core/composables/useFunctions/once.d.ts.map +1 -1
  43. package/dist/core/composables/useFunctions/sleep.d.ts.map +1 -1
  44. package/dist/core/composables/useFunctions/throttle.d.ts.map +1 -1
  45. package/dist/core/composables/useGlobalSearch/index.d.ts.map +1 -1
  46. package/dist/core/composables/useMenuService/index.d.ts +2 -2
  47. package/dist/core/composables/useMenuService/index.d.ts.map +1 -1
  48. package/dist/core/composables/useNotifications/index.d.ts.map +1 -1
  49. package/dist/core/composables/useTheme/index.d.ts.map +1 -1
  50. package/dist/core/composables/useUser/index.d.ts +0 -8
  51. package/dist/core/composables/useUser/index.d.ts.map +1 -1
  52. package/dist/core/composables/useWidgets/index.d.ts.map +1 -1
  53. package/dist/core/constants/index.d.ts +0 -2
  54. package/dist/core/constants/index.d.ts.map +1 -1
  55. package/dist/core/interceptors/index.d.ts.map +1 -1
  56. package/dist/core/plugins/modularity/index.d.ts.map +1 -1
  57. package/dist/core/plugins/modularity/loader.d.ts.map +1 -1
  58. package/dist/core/plugins/signalR/index.d.ts.map +1 -1
  59. package/dist/core/services/app-bar-menu-service.d.ts.map +1 -1
  60. package/dist/core/services/dashboard-service.d.ts.map +1 -1
  61. package/dist/core/services/global-search-service.d.ts +10 -0
  62. package/dist/core/services/global-search-service.d.ts.map +1 -0
  63. package/dist/core/services/menu-service.d.ts +24 -1
  64. package/dist/core/services/menu-service.d.ts.map +1 -1
  65. package/dist/core/services/settings-menu-service.d.ts.map +1 -1
  66. package/dist/core/services/toolbar-service.d.ts.map +1 -1
  67. package/dist/core/services/widget-service.d.ts.map +1 -1
  68. package/dist/core/types/index.d.ts +34 -0
  69. package/dist/core/types/index.d.ts.map +1 -1
  70. package/dist/core/utilities/index.d.ts +0 -2
  71. package/dist/core/utilities/index.d.ts.map +1 -1
  72. package/dist/framework.js +8664 -9720
  73. package/dist/index.css +1 -1
  74. package/dist/index.d.ts +0 -19
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/injection-keys.d.ts +6 -21
  77. package/dist/injection-keys.d.ts.map +1 -1
  78. package/dist/shared/components/app-switcher/composables/useAppSwitcher/index.d.ts.map +1 -1
  79. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts.map +1 -1
  80. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
  81. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/internal/bladeActions.d.ts.map +1 -1
  82. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/internal/bladeRouteResolver.d.ts.map +1 -1
  83. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/internal/routerUtils.d.ts.map +1 -1
  84. package/dist/shared/components/draggable-dashboard/composables/useDashboardDragAndDrop.d.ts.map +1 -1
  85. package/dist/shared/components/draggable-dashboard/composables/useLayoutPersistence.d.ts.map +1 -1
  86. package/dist/shared/components/notifications/composables/useContainer/index.d.ts.map +1 -1
  87. package/dist/shared/components/notifications/composables/useInstance/index.d.ts.map +1 -1
  88. package/dist/shared/components/notifications/core/notification.d.ts.map +1 -1
  89. package/dist/shared/components/popup-handler/components/vc-popup-container/vc-popup-container.vue.d.ts.map +1 -1
  90. package/dist/shared/components/sign-in/useExternalProvider.d.ts.map +1 -1
  91. package/dist/shared/composables/useExternalWidgets.d.ts.map +1 -1
  92. package/dist/shared/composables/useMenuExpanded.d.ts.map +1 -1
  93. package/dist/shared/composables/useTableSelection.d.ts.map +1 -1
  94. package/dist/shared/composables/useTableSort.d.ts.map +1 -1
  95. package/dist/shared/modules/assets-manager/components/assets-manager/assets-manager.vue.d.ts.map +1 -1
  96. package/dist/shared/pages/LoginPage/components/login/Login.vue.d.ts.map +1 -1
  97. package/dist/shared/utilities/colorUtils.d.ts +6 -0
  98. package/dist/shared/utilities/colorUtils.d.ts.map +1 -1
  99. package/dist/tsconfig.tsbuildinfo +1 -1
  100. package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts +3 -0
  101. package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts.map +1 -1
  102. package/dist/ui/components/atoms/vc-banner/vc-banner.vue.d.ts.map +1 -1
  103. package/dist/ui/components/atoms/vc-button/vc-button.vue.d.ts +15 -0
  104. package/dist/ui/components/atoms/vc-button/vc-button.vue.d.ts.map +1 -1
  105. package/dist/ui/components/atoms/vc-container/vc-container.vue.d.ts.map +1 -1
  106. package/dist/ui/components/atoms/vc-icon/vc-icon.vue.d.ts.map +1 -1
  107. package/dist/ui/components/atoms/vc-icon/vc-lucide-icon.vue.d.ts.map +1 -1
  108. package/dist/ui/components/atoms/vc-image/vc-image.vue.d.ts.map +1 -1
  109. package/dist/ui/components/atoms/vc-link/vc-link.vue.d.ts.map +1 -1
  110. package/dist/ui/components/atoms/vc-loading/vc-loading.vue.d.ts.map +1 -1
  111. package/dist/ui/components/atoms/vc-status/vc-status.vue.d.ts +5 -0
  112. package/dist/ui/components/atoms/vc-status/vc-status.vue.d.ts.map +1 -1
  113. package/dist/ui/components/atoms/vc-tooltip/vc-tooltip.vue.d.ts.map +1 -1
  114. package/dist/ui/components/atoms/vc-video/vc-video.vue.d.ts.map +1 -1
  115. package/dist/ui/components/atoms/vc-widget/vc-widget.vue.d.ts.map +1 -1
  116. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.d.ts.map +1 -1
  117. package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts.map +1 -1
  118. package/dist/ui/components/molecules/vc-pagination/vc-pagination.vue.d.ts.map +1 -1
  119. package/dist/ui/components/molecules/vc-toast/vc-toast.vue.d.ts.map +1 -1
  120. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/useBadge.d.ts +18 -0
  121. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/useBadge.d.ts.map +1 -0
  122. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue.d.ts +4 -1
  123. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue.d.ts.map +1 -1
  124. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/vc-app-menu-item.vue.d.ts +4 -1
  125. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/vc-app-menu-item.vue.d.ts.map +1 -1
  126. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts.map +1 -1
  127. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
  128. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue.d.ts.map +1 -1
  129. package/dist/ui/components/organisms/vc-blade/vc-blade.vue.d.ts.map +1 -1
  130. package/dist/ui/components/organisms/vc-login-form/vc-login-form.vue.d.ts.map +1 -1
  131. package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts.map +1 -1
  132. package/dist/ui/components/organisms/vc-table/composables/useTableActions.d.ts.map +1 -1
  133. package/dist/ui/components/organisms/vc-table/composables/useTableColumnResize.d.ts.map +1 -1
  134. package/dist/ui/components/organisms/vc-table/composables/useTableRowReorder.d.ts.map +1 -1
  135. package/dist/ui/components/organisms/vc-table/composables/useTableSelection.d.ts.map +1 -1
  136. package/dist/ui/components/organisms/vc-table/composables/useTableState.d.ts.map +1 -1
  137. package/dist/{vendor-lodash-es-SgOIjJF8.js → vendor-lodash-es-BqkGj3Jl.js} +0 -2
  138. package/package.json +5 -5
  139. package/shared/components/app-switcher/composables/useAppSwitcher/index.ts +1 -4
  140. package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +4 -67
  141. package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +10 -13
  142. package/shared/components/blade-navigation/composables/useBladeNavigation/internal/bladeActions.ts +4 -7
  143. package/shared/components/blade-navigation/composables/useBladeNavigation/internal/bladeRouteResolver.ts +1 -4
  144. package/shared/components/blade-navigation/composables/useBladeNavigation/internal/routerUtils.ts +1 -4
  145. package/shared/components/change-password/change-password.vue +1 -1
  146. package/shared/components/draggable-dashboard/composables/useDashboardDragAndDrop.ts +5 -14
  147. package/shared/components/draggable-dashboard/composables/useLayoutPersistence.ts +2 -5
  148. package/shared/components/index.ts +0 -2
  149. package/shared/components/notifications/composables/useContainer/index.ts +6 -8
  150. package/shared/components/notifications/composables/useInstance/index.ts +1 -4
  151. package/shared/components/notifications/core/notification.ts +7 -10
  152. package/shared/components/popup-handler/components/vc-popup-container/vc-popup-container.vue +1 -20
  153. package/shared/components/sign-in/useExternalProvider.ts +4 -6
  154. package/shared/composables/useExternalWidgets.ts +4 -7
  155. package/shared/composables/useMenuExpanded.ts +1 -15
  156. package/shared/composables/useTableSelection.ts +0 -6
  157. package/shared/composables/useTableSort.ts +4 -4
  158. package/shared/modules/assets-manager/components/assets-manager/assets-manager.vue +3 -6
  159. package/shared/pages/LoginPage/components/login/Login.vue +1 -4
  160. package/shared/utilities/colorUtils.ts +12 -5
  161. package/ui/components/atoms/vc-badge/vc-badge.vue +59 -0
  162. package/ui/components/atoms/vc-banner/vc-banner.vue +1 -4
  163. package/ui/components/atoms/vc-button/vc-button.vue +25 -2
  164. package/ui/components/atoms/vc-container/vc-container.vue +3 -12
  165. package/ui/components/atoms/vc-icon/vc-icon.vue +10 -0
  166. package/ui/components/atoms/vc-icon/vc-lucide-icon.vue +2 -5
  167. package/ui/components/atoms/vc-image/vc-image.vue +1 -4
  168. package/ui/components/atoms/vc-link/vc-link.vue +54 -59
  169. package/ui/components/atoms/vc-loading/vc-loading.vue +0 -4
  170. package/ui/components/atoms/vc-status/vc-status.vue +5 -0
  171. package/ui/components/atoms/vc-status-icon/vc-status-icon.vue +4 -4
  172. package/ui/components/atoms/vc-tooltip/vc-tooltip.vue +1 -8
  173. package/ui/components/atoms/vc-video/vc-video.vue +2 -4
  174. package/ui/components/atoms/vc-widget/vc-widget.vue +1 -4
  175. package/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue +2 -7
  176. package/ui/components/molecules/vc-input/vc-input.vue +1 -0
  177. package/ui/components/molecules/vc-pagination/vc-pagination.vue +1 -6
  178. package/ui/components/molecules/vc-rating/vc-rating.vue +1 -1
  179. package/ui/components/molecules/vc-textarea/vc-textarea.vue +1 -1
  180. package/ui/components/molecules/vc-toast/vc-toast.vue +1 -11
  181. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/useBadge.ts +80 -0
  182. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue +53 -10
  183. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/vc-app-menu-item.vue +10 -1
  184. package/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue +3 -0
  185. package/ui/components/organisms/vc-app/vc-app.vue +3 -22
  186. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue +1 -4
  187. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue +14 -14
  188. package/ui/components/organisms/vc-blade/vc-blade.vue +1 -3
  189. package/ui/components/organisms/vc-login-form/vc-login-form.vue +1 -3
  190. package/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue +2 -34
  191. package/ui/components/organisms/vc-table/composables/useTableActions.ts +10 -7
  192. package/ui/components/organisms/vc-table/composables/useTableColumnResize.ts +1 -4
  193. package/ui/components/organisms/vc-table/composables/useTableRowReorder.ts +2 -5
  194. package/ui/components/organisms/vc-table/composables/useTableSelection.ts +18 -26
  195. package/ui/components/organisms/vc-table/composables/useTableState.ts +1 -4
  196. package/core/constants/defaults.ts +0 -76
  197. package/core/constants/ui.ts +0 -68
  198. package/core/plugins/ai-agent/README.md +0 -336
  199. package/core/plugins/ai-agent/components/VcAiAgentPanel.vue +0 -125
  200. package/core/plugins/ai-agent/components/_internal/VcAiAgentHeader.vue +0 -182
  201. package/core/plugins/ai-agent/components/_internal/VcAiAgentIframe.vue +0 -77
  202. package/core/plugins/ai-agent/components/index.ts +0 -1
  203. package/core/plugins/ai-agent/composables/index.ts +0 -4
  204. package/core/plugins/ai-agent/composables/useAiAgent.ts +0 -231
  205. package/core/plugins/ai-agent/composables/useAiAgentContext.ts +0 -280
  206. package/core/plugins/ai-agent/constants.ts +0 -89
  207. package/core/plugins/ai-agent/index.ts +0 -91
  208. package/core/plugins/ai-agent/services/ai-agent-service.ts +0 -598
  209. package/core/plugins/ai-agent/types.ts +0 -310
  210. package/core/types/services.ts +0 -194
  211. package/core/utilities/errorTypes.ts +0 -126
  212. package/core/utilities/logger.ts +0 -120
  213. package/dist/core/constants/defaults.d.ts +0 -63
  214. package/dist/core/constants/defaults.d.ts.map +0 -1
  215. package/dist/core/constants/ui.d.ts +0 -50
  216. package/dist/core/constants/ui.d.ts.map +0 -1
  217. package/dist/core/plugins/ai-agent/components/VcAiAgentPanel.vue.d.ts +0 -3
  218. package/dist/core/plugins/ai-agent/components/VcAiAgentPanel.vue.d.ts.map +0 -1
  219. package/dist/core/plugins/ai-agent/components/_internal/VcAiAgentHeader.vue.d.ts +0 -15
  220. package/dist/core/plugins/ai-agent/components/_internal/VcAiAgentHeader.vue.d.ts.map +0 -1
  221. package/dist/core/plugins/ai-agent/components/_internal/VcAiAgentIframe.vue.d.ts +0 -10
  222. package/dist/core/plugins/ai-agent/components/_internal/VcAiAgentIframe.vue.d.ts.map +0 -1
  223. package/dist/core/plugins/ai-agent/components/index.d.ts +0 -2
  224. package/dist/core/plugins/ai-agent/components/index.d.ts.map +0 -1
  225. package/dist/core/plugins/ai-agent/composables/index.d.ts +0 -4
  226. package/dist/core/plugins/ai-agent/composables/index.d.ts.map +0 -1
  227. package/dist/core/plugins/ai-agent/composables/useAiAgent.d.ts +0 -95
  228. package/dist/core/plugins/ai-agent/composables/useAiAgent.d.ts.map +0 -1
  229. package/dist/core/plugins/ai-agent/composables/useAiAgentContext.d.ts +0 -55
  230. package/dist/core/plugins/ai-agent/composables/useAiAgentContext.d.ts.map +0 -1
  231. package/dist/core/plugins/ai-agent/constants.d.ts +0 -47
  232. package/dist/core/plugins/ai-agent/constants.d.ts.map +0 -1
  233. package/dist/core/plugins/ai-agent/index.d.ts +0 -48
  234. package/dist/core/plugins/ai-agent/index.d.ts.map +0 -1
  235. package/dist/core/plugins/ai-agent/services/ai-agent-service.d.ts +0 -45
  236. package/dist/core/plugins/ai-agent/services/ai-agent-service.d.ts.map +0 -1
  237. package/dist/core/plugins/ai-agent/types.d.ts +0 -258
  238. package/dist/core/plugins/ai-agent/types.d.ts.map +0 -1
  239. package/dist/core/types/services.d.ts +0 -169
  240. package/dist/core/types/services.d.ts.map +0 -1
  241. package/dist/core/utilities/errorTypes.d.ts +0 -61
  242. package/dist/core/utilities/errorTypes.d.ts.map +0 -1
  243. package/dist/core/utilities/logger.d.ts +0 -259
  244. package/dist/core/utilities/logger.d.ts.map +0 -1
@@ -8,9 +8,6 @@ import type { notification as NotificationServiceType } from "../../../../notifi
8
8
  import type { BladeVNode, IBladeEvent, BladeInstanceConstructor } from "../../../types";
9
9
  import type { _createBladeStateManagement } from "./bladeState";
10
10
  import type { _createRouterUtils } from "./routerUtils";
11
- import { createLogger } from "../../../../../../core/utilities";
12
-
13
- const logger = createLogger("blade-actions");
14
11
 
15
12
  // --- Blade Actions Module ---
16
13
  export function _createBladeActions(
@@ -71,7 +68,7 @@ export function _createBladeActions(
71
68
  }
72
69
  }
73
70
  } catch (e) {
74
- logger.error("Error opening workspace:", e);
71
+ console.error(e);
75
72
  const bladeNameForError =
76
73
  bladeComponent?.type?.name ||
77
74
  (typeof bladeInput === "object" && "name" in bladeInput ? bladeInput.name : "Unknown");
@@ -95,11 +92,11 @@ export function _createBladeActions(
95
92
  const instanceComponent = sourceBladeInstance || bladeState.activeWorkspace.value;
96
93
 
97
94
  if (!instanceComponent) {
98
- logger.error("No active workspace or source blade instance provided to open a blade into.");
95
+ console.error("No active workspace or source blade instance provided to open a blade into.");
99
96
  throw new Error("No workspace or source blade context to open blade.");
100
97
  }
101
98
  if (!isVNode(instanceComponent)) {
102
- logger.error("Source blade instance or active workspace is not a valid VNode.", instanceComponent);
99
+ console.error("Source blade instance or active workspace is not a valid VNode.", instanceComponent);
103
100
  throw new Error("Internal error: Invalid instanceComponent for opening blade.");
104
101
  }
105
102
 
@@ -143,7 +140,7 @@ export function _createBladeActions(
143
140
  }
144
141
  }
145
142
  } catch (e) {
146
- logger.error("Error in openBlade:", e);
143
+ console.error("Error in openBlade:", e);
147
144
  }
148
145
  }
149
146
 
@@ -6,9 +6,6 @@ import type { BladeInstanceConstructor, BladeVNode } from "../../../types";
6
6
  import type { _createBladeStateManagement } from "./bladeState";
7
7
  import type { _createRouterUtils } from "./routerUtils";
8
8
  import type { _createBladeActions } from "./bladeActions";
9
- import { createLogger } from "../../../../../../core/utilities";
10
-
11
- const logger = createLogger("blade-route-resolver");
12
9
 
13
10
  /**
14
11
  * Checks if a component is routable from URL
@@ -93,7 +90,7 @@ export function _createBladeRouteResolver(
93
90
 
94
91
  return undefined;
95
92
  } catch (error) {
96
- logger.error("Error in findBladeComponentByUrlSegment:", error instanceof Error ? error.message : String(error));
93
+ console.error("Error in findBladeComponentByUrlSegment:", error instanceof Error ? error.message : String(error));
97
94
  return undefined;
98
95
  }
99
96
  }
@@ -1,9 +1,6 @@
1
1
  import { computed, shallowRef, Ref, markRaw, watch } from "vue";
2
2
  import { RouteLocationNormalized, Router, LocationQuery, RouteRecordNameGeneric, RouteParamsGeneric } from "vue-router";
3
3
  import type { BladeVNode } from "../../../types";
4
- import { createLogger } from "../../../../../../core/utilities";
5
-
6
- const logger = createLogger("blade-router-utils");
7
4
 
8
5
  const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
9
6
 
@@ -146,7 +143,7 @@ export function _createRouterUtils(router: Router, route: RouteLocationNormalize
146
143
  if (mainRouteAlias?.name) {
147
144
  return { name: mainRouteAlias.name as RouteRecordNameGeneric, params: route.params as RouteParamsGeneric };
148
145
  }
149
- logger.error("goToRoot: Main route or its alias with a name not found!");
146
+ console.error("goToRoot: Main route or its alias with a name not found!");
150
147
  return { path: "/" };
151
148
  },
152
149
  };
@@ -102,7 +102,7 @@
102
102
  class="tw-grow tw-basis-0"
103
103
  ></span> -->
104
104
  <VcButton
105
- variant="secondary"
105
+ :outline="true"
106
106
  class="tw-mr-3"
107
107
  @click="cancelChange"
108
108
  >
@@ -11,15 +11,6 @@ import { useGridPosition, type CellSize } from "./useGridPosition";
11
11
  // Value of 80px is defined in DraggableDashboard.vue
12
12
  const CELL_HEIGHT = 80;
13
13
 
14
- /** Minimum movement threshold in pixels to start dragging */
15
- const DRAG_THRESHOLD = 3;
16
- /** Gap between widgets in pixels */
17
- const WIDGET_GAP = 20;
18
- /** Delay in ms for animation style application */
19
- const ANIMATION_STYLE_DELAY = 20;
20
- /** Delay in ms for state reset after drag ends */
21
- const STATE_RESET_DELAY = 50;
22
-
23
14
  /**
24
15
  * Return type for the useDashboardDragAndDrop composable.
25
16
  */
@@ -178,7 +169,7 @@ export function useDashboardDragAndDrop(
178
169
 
179
170
  if (originalWidget) {
180
171
  const cellSize = calculateCellSize();
181
- const widgetGap = WIDGET_GAP;
172
+ const widgetGap = 20; // Widget gap in pixels
182
173
 
183
174
  // Get the current position of the clone (where the user released the mouse)
184
175
  const cloneRect = dragClone.value.getBoundingClientRect();
@@ -224,7 +215,7 @@ export function useDashboardDragAndDrop(
224
215
  setTimeout(() => {
225
216
  originalWidget.style.transition = `transform var(--dashboard-transition-duration) var(--dashboard-transition-timing)`;
226
217
  originalWidget.style.transform = `translate(${finalX}px, ${finalY}px)`;
227
- }, ANIMATION_STYLE_DELAY);
218
+ }, 20); // Small delay for correct style application
228
219
  } else {
229
220
  // If the original is not found, simply remove the clone and update the data
230
221
  removeDragClone();
@@ -259,7 +250,7 @@ export function useDashboardDragAndDrop(
259
250
  isDragging.value = false;
260
251
  draggedWidget.value = null;
261
252
  resetPosition();
262
- }, STATE_RESET_DELAY);
253
+ }, 50);
263
254
  };
264
255
 
265
256
  // Mouse/touch event handler with passive listeners
@@ -293,8 +284,8 @@ export function useDashboardDragAndDrop(
293
284
 
294
285
  const currentCoords = getEventCoordinates(moveEvent);
295
286
 
296
- // Start dragging only if the mouse has moved beyond threshold
297
- if (hasMovedBeyondThreshold(currentCoords, DRAG_THRESHOLD)) {
287
+ // Start dragging only if the mouse has moved more than 3 pixels
288
+ if (hasMovedBeyondThreshold(currentCoords, 3)) {
298
289
  hasDragStarted = true;
299
290
  isDragging.value = true;
300
291
  draggedWidget.value = widget;
@@ -1,8 +1,5 @@
1
1
  import { useLocalStorage } from "@vueuse/core";
2
2
  import type { DashboardWidgetPosition } from "../types";
3
- import { createLogger } from "../../../../core/utilities";
4
-
5
- const logger = createLogger("use-layout-persistence");
6
3
 
7
4
  /**
8
5
  * Hook for managing the saving and loading of the dashboard layout
@@ -37,7 +34,7 @@ export function useLayoutPersistence(
37
34
  // Save to localStorage through the reactive variable
38
35
  savedLayout.value = layoutData;
39
36
  } catch (error) {
40
- logger.error("Failed to save dashboard layout to localStorage:", error);
37
+ console.error("Failed to save dashboard layout to localStorage:", error);
41
38
  }
42
39
  };
43
40
 
@@ -64,7 +61,7 @@ export function useLayoutPersistence(
64
61
 
65
62
  return true;
66
63
  } catch (error) {
67
- logger.error("Failed to load dashboard layout from localStorage:", error);
64
+ console.error("Failed to load dashboard layout from localStorage:", error);
68
65
  return false;
69
66
  }
70
67
  };
@@ -16,5 +16,3 @@ export * from "./generic-dropdown";
16
16
  export * from "./draggable-dashboard";
17
17
  export * from "./dashboard-widget-card";
18
18
  export * from "./multilanguage-selector";
19
- // ai-agent-panel is now part of the ai-agent plugin
20
- // export * from "./core/plugins/ai-agent";
@@ -3,9 +3,7 @@ import { NotificationOptions, NotificationPosition } from "../../types";
3
3
  import { NotificationContainer } from "../../components";
4
4
  import { useInstance } from "../useInstance";
5
5
  import * as _ from "lodash-es";
6
- import { generateId, createLogger } from "../../../../../core/utilities";
7
-
8
- const logger = createLogger("notification-container");
6
+ import { generateId } from "../../../../../core/utilities";
9
7
 
10
8
  export interface PendingNotification {
11
9
  notificationId: string | number;
@@ -306,7 +304,7 @@ export function useContainer(): IUseContainer {
306
304
 
307
305
  // If we found the notification and container to update
308
306
  if (notification && containerToUpdate) {
309
- logger.debug(`Updating notification ${option.notificationId} in position ${containerPosition}`);
307
+ console.log(`Updating notification ${option.notificationId} in position ${containerPosition}`);
310
308
 
311
309
  // If the position changes, move the notification between containers
312
310
  if (option.position && option.position !== containerPosition) {
@@ -327,16 +325,16 @@ export function useContainer(): IUseContainer {
327
325
  // Check if a container already exists for the target position
328
326
  if (!getInstanceByPosition(targetPosition)) {
329
327
  // If no container exists for the target position, create a new one
330
- logger.debug(`Creating new container for position ${targetPosition}`);
328
+ console.log(`Creating new container for position ${targetPosition}`);
331
329
  appendInstance(updatedNotification);
332
330
  } else {
333
331
  // If a container exists for the target position, add the updated notification
334
- logger.debug(`Adding to existing container for position ${targetPosition}`);
332
+ console.log(`Adding to existing container for position ${targetPosition}`);
335
333
  notificationContainers[targetPosition].value.push(updatedNotification);
336
334
  }
337
335
  } else {
338
336
  // Standard update of notification properties
339
- logger.debug(`Standard update of notification properties`);
337
+ console.log(`Standard update of notification properties`);
340
338
 
341
339
  // Apply all new properties from option to notification
342
340
  Object.keys(option).forEach((key) => {
@@ -355,7 +353,7 @@ export function useContainer(): IUseContainer {
355
353
 
356
354
  return true;
357
355
  } else {
358
- logger.warn(`Notification with ID ${option.notificationId} not found for update`);
356
+ console.warn(`Notification with ID ${option.notificationId} not found for update`);
359
357
  return false;
360
358
  }
361
359
  }
@@ -1,8 +1,5 @@
1
1
  import { App, Ref, ref } from "vue";
2
2
  import { NotificationPosition } from "../../types";
3
- import { createLogger } from "../../../../../core/utilities";
4
-
5
- const logger = createLogger("notification-instance");
6
3
 
7
4
  interface IUseInstance {
8
5
  saveInstance(app: App<Element>, id: string, position: NotificationPosition): void;
@@ -54,7 +51,7 @@ export function useInstance(): IUseInstance {
54
51
  }
55
52
  }
56
53
  } catch (error) {
57
- logger.error("Failed to unmount notification component:", error);
54
+ console.error(error);
58
55
  }
59
56
  }
60
57
 
@@ -1,9 +1,6 @@
1
1
  import { mergeProps } from "vue";
2
2
  import { Content, InternalNotificationOptions, NotificationOptions, NotificationPosition } from "../types";
3
3
  import { useContainer } from "../composables/useContainer";
4
- import { createLogger } from "../../../../core/utilities";
5
-
6
- const logger = createLogger("notification");
7
4
 
8
5
  const {
9
6
  defaultOptions,
@@ -106,7 +103,7 @@ notification.remove = (notificationId?: number | string) => {
106
103
  notification.update = (notificationId: string | number, options: NotificationOptions) => {
107
104
  // Check if notification exists
108
105
  if (!hasNotification(notificationId)) {
109
- logger.warn(`Cannot update: notification with ID ${notificationId} not found`);
106
+ console.warn(`Cannot update: notification with ID ${notificationId} not found`);
110
107
  return notificationId;
111
108
  }
112
109
 
@@ -198,12 +195,12 @@ notification.clearPosition = (position: NotificationPosition) => {
198
195
  notification.debug = () => {
199
196
  // Default settings information
200
197
  Object.entries(defaultOptions).forEach(([key, value]) => {
201
- logger.debug(`Default option ${key}: `, value);
198
+ console.log(`Default option ${key}: `, value);
202
199
  });
203
200
 
204
201
  // Available actions
205
202
  Object.entries(actions).forEach(([key]) => {
206
- logger.debug(`Available action: ${key}`);
203
+ console.log(`Available action: ${key}`);
207
204
  });
208
205
 
209
206
  // Collect statistics on notifications in different positions
@@ -234,14 +231,14 @@ notification.debug = () => {
234
231
 
235
232
  // Display group information
236
233
  Object.entries(groupedNotifications).forEach(([position, items]) => {
237
- logger.debug(`Position ${position}: ${items.length} notifications`);
238
- items.forEach((item) => logger.debug(` - ${item.id} (${item.type}): ${item.content}`));
234
+ console.log(`Position ${position}: ${items.length} notifications`);
235
+ items.forEach((item) => console.log(` - ${item.id} (${item.type}): ${item.content}`));
239
236
  });
240
237
 
241
238
  // Collect statistics on pending notifications
242
- logger.debug(`Pending notifications: ${pending.items.length}`);
239
+ console.log(`Pending notifications: ${pending.items.length}`);
243
240
  pending.items.forEach((item) => {
244
- logger.debug(` - ${item.notificationId} (position: ${item.position})`);
241
+ console.log(` - ${item.notificationId} (position: ${item.position})`);
245
242
  });
246
243
 
247
244
  return {
@@ -14,7 +14,7 @@
14
14
  <div
15
15
  v-if="typeof slot === 'string'"
16
16
  class="tw-h-full tw-w-full"
17
- v-html="sanitizeHtml(slot)"
17
+ v-html="slot"
18
18
  ></div>
19
19
  <component
20
20
  :is="slot"
@@ -25,25 +25,6 @@
25
25
  </template>
26
26
 
27
27
  <script setup lang="ts">
28
- // eslint-disable-next-line import/no-named-as-default
29
- import DOMPurify from "dompurify";
30
28
  import { getPopupPlugin } from "./../../utils";
31
-
32
29
  const popupPlugin = getPopupPlugin();
33
-
34
- /**
35
- * Sanitize HTML content to prevent XSS attacks
36
- */
37
- function sanitizeHtml(html: string): string {
38
- return DOMPurify.sanitize(html, {
39
- ALLOWED_TAGS: [
40
- "p", "br", "strong", "em", "u", "s", "h1", "h2", "h3", "h4", "h5", "h6",
41
- "ul", "ol", "li", "blockquote", "pre", "code", "a", "img", "table",
42
- "thead", "tbody", "tr", "th", "td", "hr", "div", "span",
43
- ],
44
- ALLOWED_ATTR: ["href", "src", "alt", "title", "class", "id", "colspan", "rowspan", "align", "valign"],
45
- FORBID_TAGS: ["script", "object", "embed", "form", "input"],
46
- FORBID_ATTR: ["onerror", "onload", "onclick", "onmouseover", "onfocus", "onblur", "style"],
47
- });
48
- }
49
30
  </script>
@@ -1,9 +1,6 @@
1
1
  import { useLocalStorage } from "@vueuse/core";
2
2
  import type { Ref } from "vue";
3
3
  import { ExternalSignInClient, ExternalSignInProviderInfo } from "../../../core/api/platform";
4
- import { createLogger } from "../../../core/utilities";
5
-
6
- const logger = createLogger("use-external-provider");
7
4
 
8
5
  export interface IUseExternalProvider {
9
6
  storage: Ref<{ providerType?: string | undefined }>;
@@ -56,7 +53,7 @@ export const useExternalProvider = (): IUseExternalProvider => {
56
53
  // Redirect to the constructed URL
57
54
  window.location.assign(url);
58
55
  } catch (e) {
59
- logger.error("External sign-in failed:", e);
56
+ console.error(e);
60
57
  throw e;
61
58
  }
62
59
  }
@@ -78,7 +75,7 @@ export const useExternalProvider = (): IUseExternalProvider => {
78
75
  // Redirect to the sign-out URL
79
76
  window.location.assign(url);
80
77
  } catch (e) {
81
- logger.error("External sign-out failed:", e);
78
+ console.error(e);
82
79
  throw e;
83
80
  }
84
81
  }
@@ -88,7 +85,8 @@ export const useExternalProvider = (): IUseExternalProvider => {
88
85
  try {
89
86
  result = await externalSecurityClient.getExternalLoginProviders();
90
87
  } catch (e) {
91
- logger.error("Failed to get external login providers:", e);
88
+ console.error(e);
89
+ // TODO check error in app!!!
92
90
  }
93
91
 
94
92
  return result;
@@ -2,9 +2,6 @@ import { computed, inject, onMounted, onUnmounted, watch, toValue, Ref, Computed
2
2
  import { WidgetServiceKey, BladeInstance } from "../../injection-keys";
3
3
  import { IWidget } from "../../core/services";
4
4
  import { useBlade } from "../../core/composables";
5
- import { createLogger } from "../../core/utilities";
6
-
7
- const logger = createLogger("use-external-widgets");
8
5
 
9
6
  export interface UseExternalWidgetsOptions {
10
7
  bladeId: Ref<string> | string;
@@ -24,7 +21,7 @@ export function useExternalWidgets(options: UseExternalWidgetsOptions) {
24
21
 
25
22
  const registerExternalWidgets = () => {
26
23
  if (!widgetService || !blade?.value.id) {
27
- logger.warn("Widget service or blade instance not available");
24
+ console.warn("useExternalWidgets: Widget service or blade instance not available");
28
25
  return;
29
26
  }
30
27
 
@@ -51,7 +48,7 @@ export function useExternalWidgets(options: UseExternalWidgetsOptions) {
51
48
  widgetService.registerWidget(newWidget, normalizedBladeId.value);
52
49
  registeredExternalWidgetIds.add(externalWidget.id);
53
50
  } catch (error) {
54
- logger.error(`Failed to register external widget '${externalWidget.id}':`, error);
51
+ console.error(`Failed to register external widget '${externalWidget.id}':`, error);
55
52
  }
56
53
  });
57
54
  };
@@ -71,7 +68,7 @@ export function useExternalWidgets(options: UseExternalWidgetsOptions) {
71
68
  widget: { props: resolvedProps },
72
69
  });
73
70
  } catch (error) {
74
- logger.error(`Failed to update props for widget '${widget.id}':`, error);
71
+ console.error(`Failed to update props for widget '${widget.id}':`, error);
75
72
  }
76
73
  }
77
74
  });
@@ -84,7 +81,7 @@ export function useExternalWidgets(options: UseExternalWidgetsOptions) {
84
81
  try {
85
82
  widgetService.unregisterWidget(widgetId, normalizedBladeId.value);
86
83
  } catch (error) {
87
- logger.error(`Failed to unregister external widget '${widgetId}':`, error);
84
+ console.error(`Failed to unregister external widget '${widgetId}':`, error);
88
85
  }
89
86
  });
90
87
  registeredExternalWidgetIds.clear();
@@ -1,5 +1,5 @@
1
1
  import { useLocalStorage } from "@vueuse/core";
2
- import { ref, onScopeDispose } from "vue";
2
+ import { ref } from "vue";
3
3
 
4
4
  const STORAGE_KEY_PREFIX = "VC_APP_MENU_EXPANDED";
5
5
  const HOVER_DELAY = 200;
@@ -42,20 +42,6 @@ export const useMenuExpanded = () => {
42
42
  }
43
43
  };
44
44
 
45
- /**
46
- * Cleanup timeout when the effect scope is disposed
47
- * This prevents memory leaks when component using this composable is unmounted
48
- */
49
- const cleanup = () => {
50
- if (expandTimeout) {
51
- clearTimeout(expandTimeout);
52
- expandTimeout = null;
53
- }
54
- };
55
-
56
- // Register cleanup function to be called when effect scope is disposed
57
- onScopeDispose(cleanup);
58
-
59
45
  return {
60
46
  isExpanded,
61
47
  toggleExpanded,
@@ -1,7 +1,4 @@
1
1
  import { ref, computed, Ref, ComputedRef } from "vue";
2
- import { createLogger } from "../../core/utilities";
3
-
4
- const logger = createLogger("use-table-selection");
5
2
 
6
3
  export interface UseTableSelectionOptions<T> {
7
4
  /**
@@ -101,7 +98,6 @@ export function useTableSelection<T extends object>(
101
98
  if (items.length === 0) {
102
99
  allSelected.value = false;
103
100
  }
104
- logger.debug("Selection changed", { count: items.length });
105
101
  };
106
102
 
107
103
  const handleSelectAll = (selected: boolean): void => {
@@ -109,13 +105,11 @@ export function useTableSelection<T extends object>(
109
105
  if (!selected) {
110
106
  selectedItems.value = [];
111
107
  }
112
- logger.debug("Select all changed", { selected });
113
108
  };
114
109
 
115
110
  const resetSelection = (): void => {
116
111
  selectedItems.value = [];
117
112
  allSelected.value = false;
118
- logger.debug("Selection reset");
119
113
  };
120
114
 
121
115
  const isSelected = (item: T): boolean => {
@@ -1,9 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  // framework/composables/useTableSort.ts
3
3
  import { ref, computed, Ref, WritableComputedRef } from "vue";
4
- import { createLogger } from "../../core/utilities";
5
-
6
- const logger = createLogger("use-table-sort");
7
4
 
8
5
  export type ITableSortDirection = "ASC" | "DESC";
9
6
 
@@ -51,6 +48,8 @@ export function useTableSort(options?: UseTableSortOptions): UseTableSortReturn
51
48
  });
52
49
 
53
50
  const handleSortChange = (sortParam: SortParam) => {
51
+ console.log("[useTableSort] handleSortChange triggered. Received sortParam:", JSON.stringify(sortParam));
52
+
54
53
  let newSortProperty: string | undefined = undefined;
55
54
  let newSortDirection: ITableSortDirection | undefined = undefined;
56
55
 
@@ -80,8 +79,9 @@ export function useTableSort(options?: UseTableSortOptions): UseTableSortReturn
80
79
  currentSortProperty.value = newSortProperty;
81
80
  currentSortDirection.value = newSortDirection || "ASC"; // Default to ASC if no direction provided
82
81
  }
82
+ console.log(`[useTableSort] New sort state: ${currentSortProperty.value}:${currentSortDirection.value}`);
83
83
  } else {
84
- logger.warn("Could not determine valid sort property from sortParam:", sortParam);
84
+ console.warn("[useTableSort] Could not determine valid sort property from sortParam:", sortParam);
85
85
  }
86
86
  };
87
87
 
@@ -160,9 +160,6 @@ import moment from "moment";
160
160
  import { isImage, getFileThumbnail, readableSize } from "./../../../../utilities/assets";
161
161
  import * as _ from "lodash-es";
162
162
  import { IParentCallArgs, useBladeNavigation } from "../../../../components";
163
- import { createLogger } from "../../../../../core/utilities";
164
-
165
- const logger = createLogger("assets-manager");
166
163
 
167
164
  export interface Props {
168
165
  expanded?: boolean;
@@ -320,7 +317,7 @@ async function onDrop(event: DragEvent) {
320
317
  try {
321
318
  await upload(fileList);
322
319
  } catch (error) {
323
- logger.error("Failed to upload dropped files:", error);
320
+ console.error(error);
324
321
  throw error;
325
322
  }
326
323
 
@@ -365,7 +362,7 @@ async function upload(files: FileList) {
365
362
  try {
366
363
  defaultAssets.value = await props.options.assetsUploadHandler(modifiedFileList.files);
367
364
  } catch (error) {
368
- logger.error("Failed to upload assets:", error);
365
+ console.error(error);
369
366
  throw error;
370
367
  }
371
368
  }
@@ -379,7 +376,7 @@ async function inputUpload(event: Event) {
379
376
  try {
380
377
  await upload(fileList);
381
378
  } catch (error) {
382
- logger.error("Failed to upload files:", error);
379
+ console.error(error);
383
380
  throw error;
384
381
  }
385
382
 
@@ -183,9 +183,6 @@ import { useI18n } from "vue-i18n";
183
183
  import { default as ExternalProviders } from "./../../../../../shared/components/sign-in/external-providers.vue";
184
184
  import { useExternalProvider } from "./../../../../../shared/components/sign-in/useExternalProvider";
185
185
  import { ExtensionSlot, useExtensionSlot } from '../../../../../core/plugins/extension-points';
186
- import { createLogger } from "../../../../../core/utilities";
187
-
188
- const logger = createLogger("login-page");
189
186
 
190
187
  type ForgotPasswordFunc = (args: { loginOrEmail: string }) => Promise<void>;
191
188
 
@@ -308,7 +305,7 @@ const togglePassRequest = () => {
308
305
  }
309
306
  };
310
307
 
311
- logger.debug("Init login-page");
308
+ console.debug("Init login-page");
312
309
  </script>
313
310
 
314
311
  <style lang="scss">
@@ -1,7 +1,3 @@
1
- import { createLogger } from "../../core/utilities";
2
-
3
- const logger = createLogger("color-utils");
4
-
5
1
  /**
6
2
  * Convert CSS color name to hex code using Canvas API
7
3
  * @param colorName - CSS color name (e.g., "red", "blue", "lime")
@@ -31,11 +27,22 @@ export function convertColorNameToHex(colorName: string): string | null {
31
27
 
32
28
  return ctx.fillStyle; // Returns hex format
33
29
  } catch (error) {
34
- logger.warn("Error converting color name to hex:", error);
30
+ console.warn("Error converting color name to hex:", error);
35
31
  return null;
36
32
  }
37
33
  }
38
34
 
35
+ /**
36
+ * Convert hex code to human-readable color name
37
+ * @param hex - Hex color code (e.g., "#ff0000", "ff0000")
38
+ * @returns Always returns null - don't auto-fill color names
39
+ */
40
+ export function convertHexToColorName(hex: string): string | null {
41
+ // Always return null - don't auto-fill
42
+ // User should enter custom color name manually
43
+ return null;
44
+ }
45
+
39
46
  /**
40
47
  * Check if a string is a valid hex color
41
48
  * @param value - String to check