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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/CHANGELOG.md +78 -54
  2. package/README.md +42 -12
  3. package/package.json +4 -4
  4. package/runtime/VERSION +1 -1
  5. package/runtime/agents/api-analyzer.md +31 -16
  6. package/runtime/agents/blade-enhancer.md +15 -9
  7. package/runtime/agents/details-blade-generator.md +47 -31
  8. package/runtime/agents/list-blade-generator.md +21 -37
  9. package/runtime/agents/locales-generator.md +3 -0
  10. package/runtime/agents/migration-agent.md +18 -7
  11. package/runtime/agents/module-analyzer.md +2 -0
  12. package/runtime/agents/module-assembler.md +15 -0
  13. package/runtime/agents/promote-agent.md +15 -4
  14. package/runtime/agents/type-checker.md +11 -0
  15. package/runtime/knowledge/docs/_BUILD_HASH.md +1 -1
  16. package/runtime/knowledge/docs/core/api/platform.docs.md +30 -30
  17. package/runtime/knowledge/docs/core/blade-navigation/blade-nav-composables.docs.md +41 -41
  18. package/runtime/knowledge/docs/core/composables/bladeContext/index.docs.md +12 -10
  19. package/runtime/knowledge/docs/core/composables/useApiClient/useApiClient.docs.md +11 -14
  20. package/runtime/knowledge/docs/core/composables/useAppBarMobileButtons/useAppBarMobileButtons.docs.md +35 -35
  21. package/runtime/knowledge/docs/core/composables/useAppBarWidget/useAppBarWidget.docs.md +35 -35
  22. package/runtime/knowledge/docs/core/composables/useAppInsights/useAppInsights.docs.md +15 -15
  23. package/runtime/knowledge/docs/core/composables/useAssets/useAssets.docs.md +21 -18
  24. package/runtime/knowledge/docs/core/composables/useAssetsManager/useAssetsManager.docs.md +28 -24
  25. package/runtime/knowledge/docs/core/composables/useAsync/useAsync.docs.md +90 -61
  26. package/runtime/knowledge/docs/core/composables/useBeforeUnload/useBeforeUnload.docs.md +19 -18
  27. package/runtime/knowledge/docs/core/composables/useBlade/useBlade.docs.md +89 -68
  28. package/runtime/knowledge/docs/core/composables/useBladeForm/useBladeForm.docs.md +27 -25
  29. package/runtime/knowledge/docs/core/composables/useBladeRegistry/useBladeRegistry.docs.md +15 -15
  30. package/runtime/knowledge/docs/core/composables/useBladeWidgets/index.docs.md +43 -47
  31. package/runtime/knowledge/docs/core/composables/useBreadcrumbs/useBreadcrumbs.docs.md +11 -11
  32. package/runtime/knowledge/docs/core/composables/useConnectionStatus/useConnectionStatus.docs.md +27 -15
  33. package/runtime/knowledge/docs/core/composables/useDashboard/useDashboard.docs.md +30 -30
  34. package/runtime/knowledge/docs/core/composables/useDynamicProperties/useDynamicProperties.docs.md +34 -36
  35. package/runtime/knowledge/docs/core/composables/useErrorHandler/useErrorHandler.docs.md +44 -23
  36. package/runtime/knowledge/docs/core/composables/useFunctions/useFunctions.docs.md +14 -11
  37. package/runtime/knowledge/docs/core/composables/useKeyboardNavigation/useKeyboardNavigation.docs.md +47 -38
  38. package/runtime/knowledge/docs/core/composables/useLanguages/useLanguages.docs.md +37 -28
  39. package/runtime/knowledge/docs/core/composables/useLoading/useLoading.docs.md +23 -17
  40. package/runtime/knowledge/docs/core/composables/useMenuExpanded/index.docs.md +9 -9
  41. package/runtime/knowledge/docs/core/composables/useMenuService/useMenuService.docs.md +42 -42
  42. package/runtime/knowledge/docs/core/composables/useModificationTracker/useModificationTracker.docs.md +22 -12
  43. package/runtime/knowledge/docs/core/composables/useNotifications/useNotifications.docs.md +33 -41
  44. package/runtime/knowledge/docs/core/composables/usePermissions/usePermissions.docs.md +16 -16
  45. package/runtime/knowledge/docs/core/composables/usePlatformLocaleSync/usePlatformLocaleSync.docs.md +28 -0
  46. package/runtime/knowledge/docs/core/composables/usePopup/usePopup.docs.md +32 -24
  47. package/runtime/knowledge/docs/core/composables/useResponsive/useResponsive.docs.md +32 -11
  48. package/runtime/knowledge/docs/core/composables/useSettings/useSettings.docs.md +22 -13
  49. package/runtime/knowledge/docs/core/composables/useSettingsMenu/useSettingsMenu.docs.md +7 -7
  50. package/runtime/knowledge/docs/core/composables/useSidebarState/useSidebarState.docs.md +32 -24
  51. package/runtime/knowledge/docs/core/composables/useSlowNetworkDetection/useSlowNetworkDetection.docs.md +21 -17
  52. package/runtime/knowledge/docs/core/composables/useTheme/useTheme.docs.md +24 -24
  53. package/runtime/knowledge/docs/core/composables/useToolbar/useToolbar.docs.md +28 -31
  54. package/runtime/knowledge/docs/core/composables/useUser/useUser.docs.md +43 -24
  55. package/runtime/knowledge/docs/core/composables/useUserManagement/useUserManagement.docs.md +68 -48
  56. package/runtime/knowledge/docs/core/composables/useWebVitals/useWebVitals.docs.md +19 -19
  57. package/runtime/knowledge/docs/core/composables/useWidgets/useWidgets.docs.md +42 -47
  58. package/runtime/knowledge/docs/core/directives/autofocus/autofocus.docs.md +10 -4
  59. package/runtime/knowledge/docs/core/directives/loading/loading.docs.md +35 -20
  60. package/runtime/knowledge/docs/core/notifications/notifications.docs.md +36 -35
  61. package/runtime/knowledge/docs/core/plugins/ai-agent/ai-agent.docs.md +38 -38
  62. package/runtime/knowledge/docs/core/plugins/extension-points/extension-points.docs.md +79 -62
  63. package/runtime/knowledge/docs/core/plugins/global-error-handler/global-error-handler.docs.md +10 -10
  64. package/runtime/knowledge/docs/core/plugins/i18n/i18n.docs.md +21 -23
  65. package/runtime/knowledge/docs/core/plugins/modularity/modularity.docs.md +91 -83
  66. package/runtime/knowledge/docs/core/plugins/permissions/permissions.docs.md +10 -16
  67. package/runtime/knowledge/docs/core/plugins/signalR/signalR.docs.md +9 -9
  68. package/runtime/knowledge/docs/core/plugins/validation/validation.docs.md +65 -22
  69. package/runtime/knowledge/docs/core/services/services.docs.md +19 -22
  70. package/runtime/knowledge/docs/core/types/types.docs.md +40 -40
  71. package/runtime/knowledge/docs/core/utilities/date/date-utilities.docs.md +27 -27
  72. package/runtime/knowledge/docs/core/utilities/shared-utilities.docs.md +23 -23
  73. package/runtime/knowledge/docs/core/utilities/thumbnail/thumbnail.docs.md +22 -25
  74. package/runtime/knowledge/docs/core/utilities/utilities.docs.md +64 -64
  75. package/runtime/knowledge/docs/injection-keys.docs.md +52 -51
  76. package/runtime/knowledge/docs/modules/assets-manager/assets-manager.docs.md +9 -9
  77. package/runtime/knowledge/docs/shell/_internal/popup/common/popup-common.docs.md +23 -43
  78. package/runtime/knowledge/docs/shell/auth/ChangePasswordPage/change-password-page.docs.md +5 -5
  79. package/runtime/knowledge/docs/shell/auth/ForgotPasswordPage/forgot-password-page.docs.md +5 -5
  80. package/runtime/knowledge/docs/shell/auth/InvitePage/invite-page.docs.md +8 -7
  81. package/runtime/knowledge/docs/shell/auth/LoginPage/login-page.docs.md +7 -7
  82. package/runtime/knowledge/docs/shell/auth/ResetPasswordPage/reset-password-page.docs.md +8 -7
  83. package/runtime/knowledge/docs/shell/auth/sign-in/sign-in.docs.md +29 -13
  84. package/runtime/knowledge/docs/shell/components/change-password/change-password.docs.md +13 -16
  85. package/runtime/knowledge/docs/shell/components/change-password-button/change-password-button.docs.md +1 -7
  86. package/runtime/knowledge/docs/shell/components/error-interceptor/error-interceptor.docs.md +5 -5
  87. package/runtime/knowledge/docs/shell/components/language-selector/language-selector.docs.md +1 -1
  88. package/runtime/knowledge/docs/shell/components/logout-button/logout-button.docs.md +1 -1
  89. package/runtime/knowledge/docs/shell/components/notification-template/notification-template.docs.md +17 -9
  90. package/runtime/knowledge/docs/shell/components/settings-menu/settings-menu.docs.md +11 -17
  91. package/runtime/knowledge/docs/shell/components/settings-menu-item/settings-menu-item.docs.md +34 -65
  92. package/runtime/knowledge/docs/shell/components/sidebar/sidebar.docs.md +16 -26
  93. package/runtime/knowledge/docs/shell/components/theme-selector/theme-selector.docs.md +2 -2
  94. package/runtime/knowledge/docs/shell/components/user-dropdown-button/user-dropdown-button.docs.md +7 -9
  95. package/runtime/knowledge/docs/shell/dashboard/dashboard-charts/dashboard-charts.docs.md +30 -40
  96. package/runtime/knowledge/docs/shell/dashboard/dashboard-widget-card/dashboard-widget-card.docs.md +26 -19
  97. package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/draggable-dashboard.docs.md +15 -12
  98. package/runtime/knowledge/docs/ui/components/atoms/vc-badge/vc-badge.docs.md +15 -26
  99. package/runtime/knowledge/docs/ui/components/atoms/vc-banner/vc-banner.docs.md +21 -19
  100. package/runtime/knowledge/docs/ui/components/atoms/vc-button/vc-button.docs.md +83 -67
  101. package/runtime/knowledge/docs/ui/components/atoms/vc-card/vc-card.docs.md +100 -59
  102. package/runtime/knowledge/docs/ui/components/atoms/vc-col/vc-col.docs.md +28 -11
  103. package/runtime/knowledge/docs/ui/components/atoms/vc-container/vc-container.docs.md +20 -17
  104. package/runtime/knowledge/docs/ui/components/atoms/vc-hint/vc-hint.docs.md +26 -17
  105. package/runtime/knowledge/docs/ui/components/atoms/vc-icon/vc-icon.docs.md +30 -32
  106. package/runtime/knowledge/docs/ui/components/atoms/vc-image/vc-image.docs.md +25 -48
  107. package/runtime/knowledge/docs/ui/components/atoms/vc-label/vc-label.docs.md +29 -24
  108. package/runtime/knowledge/docs/ui/components/atoms/vc-link/vc-link.docs.md +23 -15
  109. package/runtime/knowledge/docs/ui/components/atoms/vc-loading/vc-loading.docs.md +22 -13
  110. package/runtime/knowledge/docs/ui/components/atoms/vc-progress/vc-progress.docs.md +33 -18
  111. package/runtime/knowledge/docs/ui/components/atoms/vc-row/vc-row.docs.md +56 -15
  112. package/runtime/knowledge/docs/ui/components/atoms/vc-scrollable-container/vc-scrollable-container.docs.md +28 -15
  113. package/runtime/knowledge/docs/ui/components/atoms/vc-skeleton/vc-skeleton.docs.md +40 -20
  114. package/runtime/knowledge/docs/ui/components/atoms/vc-status/vc-status.docs.md +25 -14
  115. package/runtime/knowledge/docs/ui/components/atoms/vc-status-icon/vc-status-icon.docs.md +40 -14
  116. package/runtime/knowledge/docs/ui/components/atoms/vc-tooltip/vc-tooltip.docs.md +54 -42
  117. package/runtime/knowledge/docs/ui/components/atoms/vc-video/vc-video.docs.md +17 -17
  118. package/runtime/knowledge/docs/ui/components/atoms/vc-widget/vc-widget.docs.md +21 -21
  119. package/runtime/knowledge/docs/ui/components/molecules/multilanguage-selector/multilanguage-selector.docs.md +23 -10
  120. package/runtime/knowledge/docs/ui/components/molecules/vc-accordion/vc-accordion.docs.md +55 -44
  121. package/runtime/knowledge/docs/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.docs.md +23 -20
  122. package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox/vc-checkbox.docs.md +92 -65
  123. package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.docs.md +22 -36
  124. package/runtime/knowledge/docs/ui/components/molecules/vc-color-input/vc-color-input.docs.md +65 -23
  125. package/runtime/knowledge/docs/ui/components/molecules/vc-date-picker/vc-date-picker.docs.md +52 -73
  126. package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown/vc-dropdown.docs.md +91 -85
  127. package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown-panel/vc-dropdown-panel.docs.md +38 -42
  128. package/runtime/knowledge/docs/ui/components/molecules/vc-editor/vc-editor.docs.md +56 -73
  129. package/runtime/knowledge/docs/ui/components/molecules/vc-field/vc-field.docs.md +61 -27
  130. package/runtime/knowledge/docs/ui/components/molecules/vc-file-upload/vc-file-upload.docs.md +42 -50
  131. package/runtime/knowledge/docs/ui/components/molecules/vc-form/vc-form.docs.md +35 -64
  132. package/runtime/knowledge/docs/ui/components/molecules/vc-image-tile/vc-image-tile.docs.md +38 -41
  133. package/runtime/knowledge/docs/ui/components/molecules/vc-input/vc-input.docs.md +109 -131
  134. package/runtime/knowledge/docs/ui/components/molecules/vc-input-currency/vc-input-currency.docs.md +47 -88
  135. package/runtime/knowledge/docs/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.docs.md +50 -64
  136. package/runtime/knowledge/docs/ui/components/molecules/vc-input-group/vc-input-group.docs.md +29 -24
  137. package/runtime/knowledge/docs/ui/components/molecules/vc-menu/vc-menu.docs.md +32 -28
  138. package/runtime/knowledge/docs/ui/components/molecules/vc-multivalue/vc-multivalue.docs.md +57 -65
  139. package/runtime/knowledge/docs/ui/components/molecules/vc-pagination/vc-pagination.docs.md +28 -26
  140. package/runtime/knowledge/docs/ui/components/molecules/vc-radio-button/vc-radio-button.docs.md +55 -20
  141. package/runtime/knowledge/docs/ui/components/molecules/vc-radio-group/vc-radio-group.docs.md +21 -35
  142. package/runtime/knowledge/docs/ui/components/molecules/vc-rating/vc-rating.docs.md +38 -33
  143. package/runtime/knowledge/docs/ui/components/molecules/vc-select/vc-select.docs.md +72 -83
  144. package/runtime/knowledge/docs/ui/components/molecules/vc-slider/vc-slider.docs.md +21 -16
  145. package/runtime/knowledge/docs/ui/components/molecules/vc-switch/vc-switch.docs.md +55 -64
  146. package/runtime/knowledge/docs/ui/components/molecules/vc-textarea/vc-textarea.docs.md +51 -70
  147. package/runtime/knowledge/docs/ui/components/molecules/vc-toast/vc-toast.docs.md +58 -57
  148. package/runtime/knowledge/docs/ui/components/organisms/vc-app/vc-app.docs.md +49 -26
  149. package/runtime/knowledge/docs/ui/components/organisms/vc-auth-layout/vc-auth-layout.docs.md +82 -28
  150. package/runtime/knowledge/docs/ui/components/organisms/vc-blade/vc-blade.docs.md +90 -75
  151. package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/composables/table-composables.docs.md +99 -48
  152. package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/vc-data-table.docs.md +548 -367
  153. package/runtime/knowledge/docs/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.docs.md +35 -52
  154. package/runtime/knowledge/docs/ui/components/organisms/vc-gallery/vc-gallery.docs.md +33 -62
  155. package/runtime/knowledge/docs/ui/components/organisms/vc-image-upload/vc-image-upload.docs.md +17 -23
  156. package/runtime/knowledge/docs/ui/components/organisms/vc-popup/vc-popup.docs.md +109 -68
  157. package/runtime/knowledge/docs/ui/components/organisms/vc-sidebar/vc-sidebar.docs.md +82 -44
  158. package/runtime/knowledge/docs/ui/composables/ui-composables.docs.md +8 -8
  159. package/runtime/knowledge/docs/ui/composables/useDataTablePagination.docs.md +164 -0
  160. package/runtime/knowledge/docs/ui/composables/useDataTableSort.docs.md +34 -26
  161. package/runtime/knowledge/docs/ui/composables/useTableSelection.docs.md +48 -40
  162. package/runtime/knowledge/docs/ui/composables/useTableSort.docs.md +30 -17
  163. package/runtime/knowledge/docs/ui/types/ui-types.docs.md +40 -29
  164. package/runtime/knowledge/examples/offers-module.md +15 -13
  165. package/runtime/knowledge/examples/team-module.md +82 -119
  166. package/runtime/knowledge/examples/videos-module.md +44 -17
  167. package/runtime/knowledge/index.md +22 -0
  168. package/runtime/knowledge/migration-prompts/blade-form-migration.md +17 -8
  169. package/runtime/knowledge/migration-prompts/blade-props-migration.md +1 -2
  170. package/runtime/knowledge/migration-prompts/datatable-migration.md +801 -0
  171. package/runtime/knowledge/migration-prompts/icon-migration.md +97 -0
  172. package/runtime/knowledge/migration-prompts/manual-migration-audit.md +117 -0
  173. package/runtime/knowledge/migration-prompts/notifications-migration.md +8 -3
  174. package/runtime/knowledge/migration-prompts/nswag-migration.md +25 -29
  175. package/runtime/knowledge/migration-prompts/use-assets-migration.md +164 -0
  176. package/runtime/knowledge/migration-prompts/use-data-table-pagination-migration.md +176 -0
  177. package/runtime/knowledge/migration-prompts/widgets-migration.md +48 -27
  178. package/runtime/knowledge/patterns/assets-management.md +20 -20
  179. package/runtime/knowledge/patterns/blade-navigation.md +7 -14
  180. package/runtime/knowledge/patterns/blade-widget.md +19 -17
  181. package/runtime/knowledge/patterns/child-blade-flow.md +19 -7
  182. package/runtime/knowledge/patterns/composable-details.md +20 -50
  183. package/runtime/knowledge/patterns/composable-list.md +43 -31
  184. package/runtime/knowledge/patterns/dashboard-widget.md +14 -16
  185. package/runtime/knowledge/patterns/datatable-pattern.md +521 -0
  186. package/runtime/knowledge/patterns/details-blade-pattern.md +78 -116
  187. package/runtime/knowledge/patterns/extension-points-usage.md +53 -44
  188. package/runtime/knowledge/patterns/form-validation.md +28 -64
  189. package/runtime/knowledge/patterns/list-blade-pattern.md +33 -21
  190. package/runtime/knowledge/patterns/module-structure.md +7 -1
  191. package/runtime/knowledge/patterns/multilanguage-fields.md +8 -14
  192. package/runtime/knowledge/patterns/notification-template.md +21 -14
  193. package/runtime/knowledge/patterns/signalr-notifications.md +30 -32
  194. package/runtime/knowledge/patterns/toolbar-pattern.md +18 -20
  195. package/runtime/vc-app.md +241 -62
@@ -5,6 +5,7 @@ The pattern is identical to the details pattern, but the blade is oriented aroun
5
5
  existing item or creating a new one via an "add URL" flow rather than a traditional form.
6
6
 
7
7
  Key patterns shown here that differ from team-module:
8
+
8
9
  - `isWorkspace: false` (child blade, not sidebar nav) — videos is opened FROM another blade
9
10
  - `callParent` with multiple methods from the same child blade
10
11
  - `rowActions` on VcDataTable — per-row action buttons
@@ -110,7 +111,7 @@ import { VideosEmptyGridTemplateNew } from "../components";
110
111
  // PATTERN: defineBlade without isWorkspace — this blade is embedded, not a top-level workspace
111
112
  defineBlade({
112
113
  name: "Videos",
113
- isWorkspace: true, // true here because it can be a workspace entry-point too
114
+ isWorkspace: true, // true here because it can be a workspace entry-point too
114
115
  });
115
116
 
116
117
  // PATTERN: typed options from parent blade
@@ -274,7 +275,10 @@ exposeToChildren({ reload, markProductDirty });
274
275
  <div class="tw-p-4">
275
276
  <VcForm>
276
277
  <!-- PATTERN: v-if="!param" = create-only section -->
277
- <div v-if="!param" class="tw-mb-4 tw-flex tw-flex-row">
278
+ <div
279
+ v-if="!param"
280
+ class="tw-mb-4 tw-flex tw-flex-row"
281
+ >
278
282
  <Field
279
283
  v-slot="{ errorMessage, handleChange, errors }"
280
284
  :label="t('VIDEOS.PAGES.DETAILS.FIELDS.ADD.TITLE')"
@@ -296,7 +300,12 @@ exposeToChildren({ reload, markProductDirty });
296
300
  <VcButton
297
301
  :disabled="previewDisabled"
298
302
  small
299
- @click="async (e: MouseEvent) => { await getVideo(); handleChange(e); }"
303
+ @click="
304
+ async (e: MouseEvent) => {
305
+ await getVideo();
306
+ handleChange(e);
307
+ }
308
+ "
300
309
  >
301
310
  {{ $t("VIDEOS.PAGES.DETAILS.FIELDS.ADD.ADD_BUTTON") }}
302
311
  </VcButton>
@@ -309,7 +318,12 @@ exposeToChildren({ reload, markProductDirty });
309
318
  <div v-if="!!param || newVideoLoaded">
310
319
  <VcRow>
311
320
  <VcCol :size="1">
312
- <VcImage size="xl" :src="video?.thumbnailUrl" bordered background="contain" />
321
+ <VcImage
322
+ size="xl"
323
+ :src="video?.thumbnailUrl"
324
+ bordered
325
+ background="contain"
326
+ />
313
327
  </VcCol>
314
328
  <VcCol :size="2">
315
329
  <!-- PATTERN: VcField for read-only display fields -->
@@ -326,10 +340,23 @@ exposeToChildren({ reload, markProductDirty });
326
340
  />
327
341
  </VcCol>
328
342
  </VcRow>
329
- <VcInput v-model="video.name" :label="$t('VIDEOS.PAGES.DETAILS.FIELDS.NAME.TITLE')" required disabled />
330
- <VcTextarea v-model="video.description" :label="t('VIDEOS.PAGES.DETAILS.FIELDS.DESCRIPTION.TITLE')" disabled />
343
+ <VcInput
344
+ v-model="video.name"
345
+ :label="$t('VIDEOS.PAGES.DETAILS.FIELDS.NAME.TITLE')"
346
+ required
347
+ disabled
348
+ />
349
+ <VcTextarea
350
+ v-model="video.description"
351
+ :label="t('VIDEOS.PAGES.DETAILS.FIELDS.DESCRIPTION.TITLE')"
352
+ disabled
353
+ />
331
354
  <!-- PATTERN: VcVideo component for embedded video preview -->
332
- <VcVideo :source="video?.embedUrl" :label="$t('VIDEOS.PAGES.DETAILS.FIELDS.PREVIEW.TITLE')" size="xxl" />
355
+ <VcVideo
356
+ :source="video?.embedUrl"
357
+ :label="$t('VIDEOS.PAGES.DETAILS.FIELDS.PREVIEW.TITLE')"
358
+ size="xxl"
359
+ />
333
360
  </div>
334
361
  </VcForm>
335
362
  </div>
@@ -342,7 +369,7 @@ import { computed, ref, onMounted } from "vue";
342
369
  import { useI18n } from "vue-i18n";
343
370
  import { IBladeToolbar, usePopup, useBlade } from "@vc-shell/framework";
344
371
  import { Video } from "../../../api_client/virtocommerce.catalog";
345
- import { CreateVideoCommand } from "../../../api_client/virtocommerce.marketplacevendor";
372
+ import { CreateVideoCommand } from "../../../api_client/virtocommerce.mymodule";
346
373
  import { useVideo, useVideos } from "../composables";
347
374
  import { Field, useForm } from "vee-validate";
348
375
 
@@ -385,21 +412,21 @@ const bladeToolbar = ref<IBladeToolbar[]>([
385
412
  closeSelf();
386
413
  },
387
414
  disabled: computed(() => !newVideoLoaded.value),
388
- isVisible: computed(() => !param.value), // only visible in create mode
415
+ isVisible: computed(() => !param.value), // only visible in create mode
389
416
  },
390
417
  {
391
418
  id: "delete",
392
419
  title: computed(() => t("VIDEOS.PAGES.DETAILS.TOOLBAR.DELETE")),
393
420
  icon: "lucide-trash-2",
394
421
  async clickHandler() {
395
- if (await showConfirmation(t("VIDEOS.PAGES.DETAILS.DELETE_CONFIRMATION.MESSAGE")) && video.value.id) {
422
+ if ((await showConfirmation(t("VIDEOS.PAGES.DETAILS.DELETE_CONFIRMATION.MESSAGE"))) && video.value.id) {
396
423
  await deleteVideos([video.value.id]);
397
424
  callParent("reload");
398
425
  callParent("markProductDirty");
399
426
  closeSelf();
400
427
  }
401
428
  },
402
- isVisible: computed(() => !!param.value), // only visible in edit mode
429
+ isVisible: computed(() => !!param.value), // only visible in edit mode
403
430
  },
404
431
  ]);
405
432
 
@@ -433,12 +460,12 @@ const validateUrl = async () => {
433
460
 
434
461
  ## Summary: Edit-blade vs Details-blade naming
435
462
 
436
- | Aspect | Details blade | Edit blade |
437
- |---|---|---|
438
- | Name convention | `*Details` (e.g. `TeamMemberDetails`) | `*Edit` (e.g. `VideoEdit`) |
439
- | Typical use | Full form with vee-validate | Lighter editing or multi-step create |
440
- | `onBeforeClose` | Common (unsaved changes guard) | Optional |
441
- | Difference | N/A | Same pattern — just a naming convention |
463
+ | Aspect | Details blade | Edit blade |
464
+ | --------------- | ------------------------------------- | --------------------------------------- |
465
+ | Name convention | `*Details` (e.g. `TeamMemberDetails`) | `*Edit` (e.g. `VideoEdit`) |
466
+ | Typical use | Full form with vee-validate | Lighter editing or multi-step create |
467
+ | `onBeforeClose` | Common (unsaved changes guard) | Optional |
468
+ | Difference | N/A | Same pattern — just a naming convention |
442
469
 
443
470
  Both patterns use identical framework APIs. The "edit" name is used when the blade
444
471
  primarily handles a simplified or specialized editing flow.
@@ -23,6 +23,7 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
23
23
  **Task:** Generates `<module>-list.vue` + `use<Entity>s` composable.
24
24
 
25
25
  ### Pattern files to read:
26
+
26
27
  - `knowledge/patterns/list-blade-pattern.md`
27
28
  - `knowledge/patterns/composable-list.md`
28
29
  - `knowledge/patterns/toolbar-pattern.md`
@@ -31,11 +32,13 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
31
32
  ### Framework docs to read (basename glob):
32
33
 
33
34
  **Core table components (always read):**
35
+
34
36
  - `**/vc-blade.docs.md`
35
37
  - `**/vc-data-table.docs.md`
36
38
  - `**/vc-pagination.docs.md`
37
39
 
38
40
  **Cell renderer components (read for custom #body slots in VcColumn):**
41
+
39
42
  - `**/vc-status.docs.md` — for status/state columns (variant-colored badge)
40
43
  - `**/vc-status-icon.docs.md` — for boolean columns (check/cross icon)
41
44
  - `**/vc-badge.docs.md` — for count/tag columns (numeric badge, category tag)
@@ -46,6 +49,7 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
46
49
  - `**/vc-tooltip.docs.md` — for columns with truncated text that need hover detail
47
50
 
48
51
  **Composable docs (always read):**
52
+
49
53
  - `**/useBlade.docs.md`
50
54
  - `**/useAsync.docs.md`
51
55
  - `**/useLoading.docs.md`
@@ -58,6 +62,7 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
58
62
  **Task:** Generates `<module>-details.vue` + `use<Entity>` composable.
59
63
 
60
64
  ### Pattern files to read:
65
+
61
66
  - `knowledge/patterns/details-blade-pattern.md`
62
67
  - `knowledge/patterns/composable-details.md`
63
68
  - `knowledge/patterns/toolbar-pattern.md`
@@ -66,6 +71,7 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
66
71
  ### Framework docs to read (basename glob):
67
72
 
68
73
  **Core form components (always read):**
74
+
69
75
  - `**/vc-blade.docs.md`
70
76
  - `**/vc-form.docs.md`
71
77
  - `**/vc-input.docs.md`
@@ -73,6 +79,7 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
73
79
  - `**/vc-switch.docs.md`
74
80
 
75
81
  **Extended form components (read based on field types — see Field Type → Component Mapping in details-blade-pattern.md):**
82
+
76
83
  - `**/vc-textarea.docs.md` — for `text` / `rich-text` fields
77
84
  - `**/vc-editor.docs.md` — for `rich-text` fields (WYSIWYG HTML editor)
78
85
  - `**/vc-date-picker.docs.md` — for `date-time` fields (calendar widget, preferred over VcInput type="datetime-local")
@@ -88,9 +95,11 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
88
95
  - `**/vc-input-group.docs.md` — for grouped inputs (prefix/suffix patterns like URL, phone)
89
96
 
90
97
  **Read-only display components (read when blade has view-only fields):**
98
+
91
99
  - `**/vc-field.docs.md` — for read-only key-value display (horizontal label:value, copyable, tooltip). Use instead of VcInput for non-editable data.
92
100
 
93
101
  **Layout & display components (read when the form has sections or read-only data):**
102
+
94
103
  - `**/vc-card.docs.md` — for grouping form sections visually (ALWAYS use for 3+ field groups)
95
104
  - `**/vc-accordion.docs.md` — for collapsible form sections
96
105
  - `**/vc-badge.docs.md` — for status indicators in form headers
@@ -100,11 +109,13 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
100
109
  - `**/vc-button.docs.md` — for inline action buttons (e.g., inside banners)
101
110
 
102
111
  **Media components (read when entity has images/gallery/video):**
112
+
103
113
  - `**/vc-image-upload.docs.md` — for `image` fields (single image upload with preview)
104
114
  - `**/vc-gallery.docs.md` — for `gallery` / `images` fields (multi-image management)
105
115
  - `**/vc-image.docs.md` — for read-only image display
106
116
 
107
117
  **Composable docs (always read):**
118
+
108
119
  - `**/useBlade.docs.md`
109
120
  - `**/useAsync.docs.md`
110
121
  - `**/useModificationTracker.docs.md`
@@ -112,11 +123,13 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
112
123
  - `**/validation.docs.md`
113
124
 
114
125
  **Composable docs (read when entity has related sub-entities):**
126
+
115
127
  - `**/useBladeWidgets.docs.md` — for blade sidebar widgets (icon buttons with badge counts that open child blades)
116
128
 
117
129
  ### Advanced patterns to read (based on design intent):
118
130
 
119
131
  Read `knowledge/patterns/` files when the design requires these patterns:
132
+
120
133
  - `knowledge/patterns/blade-widget.md` — when entity has related sub-entities that need sidebar widget navigation
121
134
  - `knowledge/patterns/dashboard-widget.md` — when module should contribute a dashboard card
122
135
  - `knowledge/patterns/notification-template.md` — when module needs push notification rendering
@@ -128,9 +141,11 @@ Read `knowledge/patterns/` files when the design requires these patterns:
128
141
  **Task:** Creates `index.ts`, `pages/index.ts`, `composables/index.ts`, `locales/index.ts`, and registers the module in the app's module registry.
129
142
 
130
143
  ### Pattern files to read:
144
+
131
145
  - `knowledge/patterns/module-structure.md`
132
146
 
133
147
  ### Framework docs to read:
148
+
134
149
  _(None required — module assembly is purely structural.)_
135
150
 
136
151
  ---
@@ -140,12 +155,15 @@ _(None required — module assembly is purely structural.)_
140
155
  **Task:** Generates `locales/en.json` with i18n keys for all requested blades.
141
156
 
142
157
  ### Pattern files to read:
158
+
143
159
  _(None — reads the already-generated blade files to extract `$t(...)` and `t(...)` calls.)_
144
160
 
145
161
  ### Framework docs to read:
162
+
146
163
  _(None required.)_
147
164
 
148
165
  ### Instructions:
166
+
149
167
  1. Read all generated `.vue` files for the module.
150
168
  2. Extract every `$t('...')` and `t('...')` call.
151
169
  3. Build a nested JSON object from the dot-separated keys (e.g., `"TEAM.PAGES.LIST.TITLE"` → `{ "TEAM": { "PAGES": { "LIST": { "TITLE": "" } } } }`).
@@ -158,9 +176,11 @@ _(None required.)_
158
176
  **Task:** Analyzes a generated API client file to discover available types and methods for user selection.
159
177
 
160
178
  ### Pattern files to read:
179
+
161
180
  _(None — reads the API client file directly.)_
162
181
 
163
182
  ### Framework docs to read:
183
+
164
184
  - `**/useApiClient.docs.md`
165
185
  - `**/useAsync.docs.md`
166
186
 
@@ -171,7 +191,9 @@ _(None — reads the API client file directly.)_
171
191
  **Task:** Runs `vue-tsc --noEmit`, analyzes errors in generated files, proposes and applies fixes.
172
192
 
173
193
  ### Pattern files to read:
194
+
174
195
  _(All relevant pattern files for the blade types involved — re-read before fixing.)_
175
196
 
176
197
  ### Framework docs to read:
198
+
177
199
  _(Read docs for any component/composable that appears in the error output.)_
@@ -19,7 +19,11 @@ const { item, loading, load, save } = useMyDetails();
19
19
  const { onBeforeClose } = useBlade();
20
20
  const { showConfirmation } = usePopup();
21
21
 
22
- const { errorBag, setFieldError, meta: formMeta } = useForm({
22
+ const {
23
+ errorBag,
24
+ setFieldError,
25
+ meta: formMeta,
26
+ } = useForm({
23
27
  initialValues: item,
24
28
  });
25
29
 
@@ -34,9 +38,7 @@ onBeforeClose(async () => {
34
38
  return true;
35
39
  });
36
40
 
37
- const canSave = computed(
38
- () => isModified.value && formMeta.value.valid && !loading.value,
39
- );
41
+ const canSave = computed(() => isModified.value && formMeta.value.valid && !loading.value);
40
42
 
41
43
  async function handleSave() {
42
44
  await save(item.value);
@@ -61,9 +63,13 @@ const { canSave, isModified, setBaseline, revert, setFieldError, errorBag } = us
61
63
  closeConfirmMessage: () => t("MY_MODULE.ALERTS.CLOSE_CONFIRMATION"),
62
64
  });
63
65
 
64
- watch(item, () => {
65
- if (item.value) setBaseline();
66
- }, { once: true });
66
+ watch(
67
+ item,
68
+ () => {
69
+ if (item.value) setBaseline();
70
+ },
71
+ { once: true },
72
+ );
67
73
 
68
74
  async function handleSave() {
69
75
  await save(item.value);
@@ -216,7 +222,10 @@ Remove `:modified` prop from `<VcBlade>` — it is auto-detected via provide/inj
216
222
 
217
223
  ```vue
218
224
  <template>
219
- <VcBlade :modified="isModified" :closable="true">
225
+ <VcBlade
226
+ :modified="isModified"
227
+ :closable="true"
228
+ >
220
229
  <!-- content -->
221
230
  </VcBlade>
222
231
  </template>
@@ -75,8 +75,7 @@ const emit = defineEmits<Emits>();
75
75
  ```typescript
76
76
  import { useBlade } from "@vc-shell/framework";
77
77
 
78
- const { param, options, openBlade, closeSelf, callParent } =
79
- useBlade<{ sellerProduct?: SellerProduct }>();
78
+ const { param, options, openBlade, closeSelf, callParent } = useBlade<{ sellerProduct?: SellerProduct }>();
80
79
  ```
81
80
 
82
81
  If the Props interface has other non-blade props, keep only those: