@antelopejs/dms 0.9.8 → 0.11.0

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 (451) hide show
  1. package/CHANGELOG.md +171 -0
  2. package/README.md +1 -1
  3. package/data/module-store/catalog.json +2 -2
  4. package/dist/attachments/table-view.js +2 -2
  5. package/dist/attachments/table-view.js.map +1 -1
  6. package/dist/automation/actions.d.ts +2 -0
  7. package/dist/automation/actions.js +116 -71
  8. package/dist/automation/actions.js.map +1 -1
  9. package/dist/automation/i18n.d.ts +4 -0
  10. package/dist/automation/i18n.js +19 -0
  11. package/dist/automation/i18n.js.map +1 -0
  12. package/dist/automation/send-notification.d.ts +21 -0
  13. package/dist/automation/send-notification.js +163 -0
  14. package/dist/automation/send-notification.js.map +1 -0
  15. package/dist/automation/triggers.js +19 -25
  16. package/dist/automation/triggers.js.map +1 -1
  17. package/dist/client-origin-cors.d.ts +1 -0
  18. package/dist/client-origin-cors.js +19 -0
  19. package/dist/client-origin-cors.js.map +1 -0
  20. package/dist/config.d.ts +3 -2
  21. package/dist/config.js +5 -7
  22. package/dist/config.js.map +1 -1
  23. package/dist/frontend-module.d.ts +4 -0
  24. package/dist/frontend-module.js +37 -0
  25. package/dist/frontend-module.js.map +1 -0
  26. package/dist/implementations/dms/client-ip.js +1 -1
  27. package/dist/implementations/dms/client-ip.js.map +1 -1
  28. package/dist/implementations/dms/dev-reload.d.ts +5 -0
  29. package/dist/implementations/dms/dev-reload.js +23 -3
  30. package/dist/implementations/dms/dev-reload.js.map +1 -1
  31. package/dist/implementations/dms/frontend-modules.d.ts +2 -4
  32. package/dist/implementations/dms/frontend-modules.js +38 -94
  33. package/dist/implementations/dms/frontend-modules.js.map +1 -1
  34. package/dist/implementations/dms/frontend-ready.d.ts +12 -2
  35. package/dist/implementations/dms/frontend-ready.js +34 -4
  36. package/dist/implementations/dms/frontend-ready.js.map +1 -1
  37. package/dist/implementations/dms/layout-banners.d.ts +2 -1
  38. package/dist/implementations/dms/layout-banners.js +9 -0
  39. package/dist/implementations/dms/layout-banners.js.map +1 -1
  40. package/dist/implementations/dms/manifest.d.ts +7 -2
  41. package/dist/implementations/dms/manifest.js +12 -7
  42. package/dist/implementations/dms/manifest.js.map +1 -1
  43. package/dist/implementations/dms/page.d.ts +4 -3
  44. package/dist/implementations/dms/page.js +49 -18
  45. package/dist/implementations/dms/page.js.map +1 -1
  46. package/dist/implementations/dms/permissions-resolver.d.ts +2 -2
  47. package/dist/implementations/dms/permissions-resolver.js +2 -2
  48. package/dist/implementations/dms/permissions-resolver.js.map +1 -1
  49. package/dist/implementations/dms/realtime.js +1 -0
  50. package/dist/implementations/dms/realtime.js.map +1 -1
  51. package/dist/implementations/dms-base/bulk-selection.d.ts +1 -1
  52. package/dist/implementations/dms-base/bulk-selection.js +23 -1
  53. package/dist/implementations/dms-base/bulk-selection.js.map +1 -1
  54. package/dist/implementations/dms-base/filter-tokens.js +5 -3
  55. package/dist/implementations/dms-base/filter-tokens.js.map +1 -1
  56. package/dist/implementations/dms-base/search-route.d.ts +1 -0
  57. package/dist/implementations/dms-base/search-route.js +35 -13
  58. package/dist/implementations/dms-base/search-route.js.map +1 -1
  59. package/dist/implementations/dms-base/table-view.js +11 -6
  60. package/dist/implementations/dms-base/table-view.js.map +1 -1
  61. package/dist/implementations/dms-notifications/index.d.ts +2 -2
  62. package/dist/implementations/dms-notifications/index.js +5 -5
  63. package/dist/implementations/dms-notifications/index.js.map +1 -1
  64. package/dist/index.js +32 -55
  65. package/dist/index.js.map +1 -1
  66. package/dist/pages/modules/index.d.ts +1 -0
  67. package/dist/pages/modules/index.js +1 -0
  68. package/dist/pages/modules/index.js.map +1 -1
  69. package/dist/pages/modules/modules-store.d.ts +9 -0
  70. package/dist/pages/modules/modules-store.js +30 -0
  71. package/dist/pages/modules/modules-store.js.map +1 -0
  72. package/dist/pages/settings/users/account-credentials.js +2 -2
  73. package/dist/pages/settings/users/account-credentials.js.map +1 -1
  74. package/dist/pages/settings/users/account-data-store.js +25 -8
  75. package/dist/pages/settings/users/account-data-store.js.map +1 -1
  76. package/dist/pages/settings/users/invite-extension-routes.js +9 -3
  77. package/dist/pages/settings/users/invite-extension-routes.js.map +1 -1
  78. package/dist/pages/settings/users/member-management.js +13 -14
  79. package/dist/pages/settings/users/member-management.js.map +1 -1
  80. package/dist/pages/settings/users/profile.d.ts +1 -4
  81. package/dist/pages/settings/users/profile.js +0 -35
  82. package/dist/pages/settings/users/profile.js.map +1 -1
  83. package/dist/pages/settings/users/role-editor-store.js +26 -18
  84. package/dist/pages/settings/users/role-editor-store.js.map +1 -1
  85. package/dist/pages/settings/users/role-editor.d.ts +0 -1
  86. package/dist/pages/settings/users/role-editor.js +1 -2
  87. package/dist/pages/settings/users/role-editor.js.map +1 -1
  88. package/dist/pages/settings/users/role-preview.js +1 -2
  89. package/dist/pages/settings/users/role-preview.js.map +1 -1
  90. package/dist/pages/settings/users/roles.js +2 -2
  91. package/dist/pages/settings/users/roles.js.map +1 -1
  92. package/dist/pages/settings/users/two-factor-operations.js.map +1 -1
  93. package/dist/realtime/broker.d.ts +6 -0
  94. package/dist/realtime/broker.js +8 -1
  95. package/dist/realtime/broker.js.map +1 -1
  96. package/dist/realtime/presence.d.ts +8 -3
  97. package/dist/realtime/presence.js +8 -4
  98. package/dist/realtime/presence.js.map +1 -1
  99. package/dist/realtime/sessions.d.ts +11 -1
  100. package/dist/realtime/sessions.js +21 -3
  101. package/dist/realtime/sessions.js.map +1 -1
  102. package/dist/realtime/table-view.d.ts +2 -2
  103. package/dist/realtime/table-view.js +4 -3
  104. package/dist/realtime/table-view.js.map +1 -1
  105. package/dist/routes/auth/client-ip.d.ts +1 -0
  106. package/dist/routes/auth/client-ip.js +18 -0
  107. package/dist/routes/auth/client-ip.js.map +1 -1
  108. package/dist/routes/auth/oauth/config.d.ts +2 -1
  109. package/dist/routes/auth/oauth/config.js +5 -1
  110. package/dist/routes/auth/oauth/config.js.map +1 -1
  111. package/dist/routes/auth/session-handoff.d.ts +0 -1
  112. package/dist/routes/auth/session-handoff.js +0 -2
  113. package/dist/routes/auth/session-handoff.js.map +1 -1
  114. package/dist/routes/auth.js +3 -2
  115. package/dist/routes/auth.js.map +1 -1
  116. package/dist/routes/index.d.ts +0 -1
  117. package/dist/routes/index.js +0 -1
  118. package/dist/routes/index.js.map +1 -1
  119. package/dist/routes/realtime.d.ts +13 -1
  120. package/dist/routes/realtime.js +114 -29
  121. package/dist/routes/realtime.js.map +1 -1
  122. package/dist/startup-config.d.ts +2 -0
  123. package/dist/startup-config.js +62 -0
  124. package/dist/startup-config.js.map +1 -0
  125. package/dist/store/interfaces.d.ts +3 -2
  126. package/dist/store/interfaces.js +16 -6
  127. package/dist/store/interfaces.js.map +1 -1
  128. package/dist/store/listing.js +25 -15
  129. package/dist/store/listing.js.map +1 -1
  130. package/dist/store/operations.js +5 -2
  131. package/dist/store/operations.js.map +1 -1
  132. package/dist/store/requirements.js +3 -2
  133. package/dist/store/requirements.js.map +1 -1
  134. package/dist/store/runtime.d.ts +10 -1
  135. package/dist/store/runtime.js +33 -6
  136. package/dist/store/runtime.js.map +1 -1
  137. package/dist/store/types.d.ts +10 -0
  138. package/dist/utils/ensure-default-tenant.d.ts +2 -1
  139. package/dist/utils/ensure-default-tenant.js +13 -1
  140. package/dist/utils/ensure-default-tenant.js.map +1 -1
  141. package/dist/utils/export-jobs.js +2 -1
  142. package/dist/utils/export-jobs.js.map +1 -1
  143. package/dist/validation/auth.schema.d.ts +2 -2
  144. package/dist/validation/member-invite.schema.d.ts +2 -10
  145. package/dist/validation/member-invite.schema.js +2 -15
  146. package/dist/validation/member-invite.schema.js.map +1 -1
  147. package/frontend-vue/dms.frontend.ts +24 -5
  148. package/frontend-vue/dms.server.ts +17 -0
  149. package/frontend-vue/layers/dms-auth/server/accounts.ts +3 -4
  150. package/frontend-vue/layers/dms-core/app/build/composables/renderNow.ts +33 -0
  151. package/frontend-vue/layers/dms-core/app/build/composables/user/tablePreferences.ts +5 -1
  152. package/frontend-vue/layers/dms-core/app/build/utils/crossTab.ts +199 -0
  153. package/frontend-vue/layers/dms-core/app/build/utils/sharedRealtimeConnection.ts +410 -0
  154. package/frontend-vue/layers/dms-core/app/composables/auth/useApiData.ts +77 -12
  155. package/frontend-vue/layers/dms-core/app/composables/data-types/useDataType.ts +26 -0
  156. package/frontend-vue/layers/dms-core/app/composables/live/livePauseSource.ts +29 -0
  157. package/frontend-vue/layers/dms-core/app/composables/period/compareResolvers.ts +150 -9
  158. package/frontend-vue/layers/dms-core/app/composables/period/usePeriod.ts +6 -4
  159. package/frontend-vue/layers/dms-core/app/composables/period/usePeriodScope.ts +27 -1
  160. package/frontend-vue/layers/dms-core/app/composables/realtime/useUserRealtime.ts +256 -119
  161. package/frontend-vue/layers/dms-core/app/composables/translation/useComposedText.ts +21 -8
  162. package/frontend-vue/layers/dms-core/app/composables/translation/useTranslation.ts +25 -5
  163. package/frontend-vue/layers/dms-core/app/composables/useApiError.ts +3 -5
  164. package/frontend-vue/layers/dms-core/app/composables/useFieldErrors.ts +61 -26
  165. package/frontend-vue/layers/dms-core/app/plugins/dev-error-log.ts +16 -0
  166. package/frontend-vue/layers/dms-core/app/types/user.ts +6 -0
  167. package/frontend-vue/layers/dms-core/app/utils/composedText.ts +7 -2
  168. package/frontend-vue/layers/dms-core/app/utils/formatter.ts +134 -35
  169. package/frontend-vue/layers/dms-core/app/utils/url-interpolation.ts +18 -1
  170. package/frontend-vue/layers/dms-core/i18n/locales/core-en-GB.json +136 -2
  171. package/frontend-vue/layers/dms-core/i18n/locales/core-fr-FR.json +136 -2
  172. package/frontend-vue/layers/dms-core/shared/types/app-config.ts +0 -2
  173. package/frontend-vue/layers/dms-layout/app/app.config.ts +0 -1
  174. package/frontend-vue/layers/dms-layout/app/assets/css/main.css +11 -1
  175. package/frontend-vue/layers/dms-layout/app/assets/fonts/Geist-Italic-Variable.woff2 +0 -0
  176. package/frontend-vue/layers/dms-layout/app/assets/fonts/Geist-Variable.woff2 +0 -0
  177. package/frontend-vue/layers/dms-layout/app/assets/fonts/GeistMono-Italic-Variable.woff2 +0 -0
  178. package/frontend-vue/layers/dms-layout/app/assets/fonts/GeistMono-Variable.woff2 +0 -0
  179. package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardBanners.vue +3 -2
  180. package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardHeader.vue +41 -21
  181. package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardPageBody.vue +6 -2
  182. package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardSidebar.vue +4 -19
  183. package/frontend-vue/layers/dms-layout/app/build/components/layout/Footer.vue +11 -107
  184. package/frontend-vue/layers/dms-layout/app/build/components/layout/GithubStarPrompt.vue +18 -7
  185. package/frontend-vue/layers/dms-layout/app/build/components/layout/PageHeaderActionsOutlet.vue +4 -0
  186. package/frontend-vue/layers/dms-layout/app/build/components/layout/RowSidePanel.vue +43 -82
  187. package/frontend-vue/layers/dms-layout/app/build/components/layout/SidebarUserMenu.vue +44 -3
  188. package/frontend-vue/layers/dms-layout/app/build/components/layout/UserIdentity.vue +11 -3
  189. package/frontend-vue/layers/dms-layout/app/build/components/pages/modules/ModuleCatalogTile.vue +132 -35
  190. package/frontend-vue/layers/dms-layout/app/build/components/pages/modules/ModuleManageMenu.vue +59 -0
  191. package/frontend-vue/layers/dms-layout/app/build/components/pages/modules/ModuleSourceLabel.vue +25 -0
  192. package/frontend-vue/layers/dms-layout/app/build/components/pages/modules/ModuleStoreBanners.vue +73 -0
  193. package/frontend-vue/layers/dms-layout/app/build/components/pages/modules/ModuleStoreOperation.vue +116 -0
  194. package/frontend-vue/layers/dms-layout/app/build/components/pages/modules/ModuleStoreRequirements.vue +8 -3
  195. package/frontend-vue/layers/dms-layout/app/build/components/pages/modules/ModuleStoreTile.vue +85 -207
  196. package/frontend-vue/layers/dms-layout/app/build/components/pages/modules/ModuleTile.vue +10 -3
  197. package/frontend-vue/layers/dms-layout/app/build/components/pages/modules/ModuleTileSkeleton.vue +68 -0
  198. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/notification/NotificationInboxDisplay.vue +24 -8
  199. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/notification/NotificationInboxItem.vue +8 -5
  200. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/region/RegionTimeZoneInput.vue +1 -0
  201. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/roles/role-permissions.ts +19 -0
  202. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/roles/useRoleEditor.ts +2 -1
  203. package/frontend-vue/layers/dms-layout/app/build/composables/layout/useSidePanelWidth.ts +31 -70
  204. package/frontend-vue/layers/dms-layout/app/build/composables/notification/useNotificationGroupsOpen.ts +11 -1
  205. package/frontend-vue/layers/dms-layout/app/build/utils/dev-reload-stream.ts +81 -0
  206. package/frontend-vue/layers/dms-layout/app/build/utils/github-repository.ts +2 -2
  207. package/frontend-vue/layers/dms-layout/app/build/utils/module-store-catalog.ts +232 -36
  208. package/frontend-vue/layers/dms-layout/app/build/utils/modules-catalog.ts +122 -14
  209. package/frontend-vue/layers/dms-layout/app/composables/layout/useLayoutBanners.ts +32 -3
  210. package/frontend-vue/layers/dms-layout/app/composables/layout/useServedHeaderActions.ts +49 -11
  211. package/frontend-vue/layers/dms-layout/app/composables/page/useModuleHistory.ts +3 -2
  212. package/frontend-vue/layers/dms-layout/app/composables/page/useModuleStore.ts +59 -4
  213. package/frontend-vue/layers/dms-layout/app/composables/page/useModuleStoreActions.ts +194 -0
  214. package/frontend-vue/layers/dms-layout/app/composables/page/usePageComponentPreload.ts +23 -3
  215. package/frontend-vue/layers/dms-layout/app/composables/page/usePageLayout.ts +4 -2
  216. package/frontend-vue/layers/dms-layout/app/composables/page/usePageRecordDeletion.ts +162 -0
  217. package/frontend-vue/layers/dms-layout/app/composables/page/useSiteLayout.ts +6 -1
  218. package/frontend-vue/layers/dms-layout/app/custom-layouts/DefaultLayout.vue +6 -2
  219. package/frontend-vue/layers/dms-layout/app/custom-layouts/SettingsLayout.vue +6 -2
  220. package/frontend-vue/layers/dms-layout/app/custom-pages/modules-store.vue +291 -0
  221. package/frontend-vue/layers/dms-layout/app/custom-pages/modules.vue +87 -474
  222. package/frontend-vue/layers/dms-layout/app/middleware/module-routing.global.ts +3 -0
  223. package/frontend-vue/layers/dms-layout/app/pages/[...slug].vue +13 -22
  224. package/frontend-vue/layers/dms-layout/app/plugins/command-palette-navigation.client.ts +11 -10
  225. package/frontend-vue/layers/dms-layout/app/plugins/command-palette-personal-pages.client.ts +22 -52
  226. package/frontend-vue/layers/dms-layout/app/plugins/command-palette-quick-actions.client.ts +7 -7
  227. package/frontend-vue/layers/dms-layout/app/plugins/command-palette-session.client.ts +11 -10
  228. package/frontend-vue/layers/dms-layout/app/plugins/dms-dev-reload.client.ts +14 -9
  229. package/frontend-vue/layers/dms-layout/app/theme/actions.ts +5 -4
  230. package/frontend-vue/layers/dms-layout/app/theme/form-controls.ts +9 -4
  231. package/frontend-vue/layers/dms-layout/app/theme/surfaces.ts +22 -6
  232. package/frontend-vue/layers/dms-layout/app/types/module-store.ts +9 -0
  233. package/frontend-vue/layers/dms-layout/app/types/page.ts +15 -1
  234. package/frontend-vue/layers/dms-layout/app/utils/account-menu.ts +11 -0
  235. package/frontend-vue/layers/dms-layout/app/utils/breadcrumb.ts +57 -0
  236. package/frontend-vue/layers/dms-layout/app/utils/pageQuery.ts +26 -0
  237. package/frontend-vue/layers/dms-layout/i18n/locales/layout-en-GB.json +45 -18
  238. package/frontend-vue/layers/dms-layout/i18n/locales/layout-fr-FR.json +44 -17
  239. package/frontend-vue/layers/dms-ui/app/build/components/containers/TargetComponentTree.vue +31 -0
  240. package/frontend-vue/layers/dms-ui/app/build/components/containers/constants.ts +25 -0
  241. package/frontend-vue/layers/dms-ui/app/build/components/containers/drawer/DynamicDrawer.vue +244 -15
  242. package/frontend-vue/layers/dms-ui/app/build/components/containers/modal/DynamicModal.vue +42 -25
  243. package/frontend-vue/layers/dms-ui/app/build/components/containers/row/RowHeader.vue +153 -0
  244. package/frontend-vue/layers/dms-ui/app/build/components/containers/row/RowNotFound.vue +44 -0
  245. package/frontend-vue/layers/dms-ui/app/build/components/containers/row/drawerRowHeader.ts +35 -0
  246. package/frontend-vue/layers/dms-ui/app/build/components/form/FormEntries.vue +44 -9
  247. package/frontend-vue/layers/dms-ui/app/build/components/form/FormErrorSummary.vue +11 -4
  248. package/frontend-vue/layers/dms-ui/app/build/components/form/FormFieldControl.vue +38 -5
  249. package/frontend-vue/layers/dms-ui/app/build/components/form/FormFieldNotes.vue +29 -5
  250. package/frontend-vue/layers/dms-ui/app/build/components/form/FormLoadError.vue +5 -1
  251. package/frontend-vue/layers/dms-ui/app/build/components/form/FormSectionNav.vue +3 -1
  252. package/frontend-vue/layers/dms-ui/app/build/components/form/FormSections.vue +106 -27
  253. package/frontend-vue/layers/dms-ui/app/build/components/table/Actions.vue +12 -4
  254. package/frontend-vue/layers/dms-ui/app/build/components/table/Empty.vue +4 -2
  255. package/frontend-vue/layers/dms-ui/app/build/components/table/FiltersRow.vue +48 -1
  256. package/frontend-vue/layers/dms-ui/app/build/components/table/Pagination.vue +55 -54
  257. package/frontend-vue/layers/dms-ui/app/build/components/table/RowSelection.vue +2 -1
  258. package/frontend-vue/layers/dms-ui/app/build/components/table/Table.vue +396 -288
  259. package/frontend-vue/layers/dms-ui/app/build/components/table/Tabs.vue +2 -1
  260. package/frontend-vue/layers/dms-ui/app/build/components/table/Views.vue +2 -1
  261. package/frontend-vue/layers/dms-ui/app/build/components/table-view/CardAvatar.vue +59 -0
  262. package/frontend-vue/layers/dms-ui/app/build/components/table-view/CardGridSkeleton.vue +19 -2
  263. package/frontend-vue/layers/dms-ui/app/build/components/table-view/CardRowActions.vue +38 -0
  264. package/frontend-vue/layers/dms-ui/app/build/components/table-view/CardsDisplay.vue +148 -104
  265. package/frontend-vue/layers/dms-ui/app/build/components/table-view/LiveHoldBanner.vue +17 -2
  266. package/frontend-vue/layers/dms-ui/app/build/composables/actions/bulkSelection.ts +43 -9
  267. package/frontend-vue/layers/dms-ui/app/build/composables/actions/rowComponentOptions.ts +76 -0
  268. package/frontend-vue/layers/dms-ui/app/build/composables/actions/rowNavigation.ts +172 -27
  269. package/frontend-vue/layers/dms-ui/app/build/composables/actions/useActionTargets.ts +270 -46
  270. package/frontend-vue/layers/dms-ui/app/build/composables/confirm/actionError.ts +6 -1
  271. package/frontend-vue/layers/dms-ui/app/build/composables/confirm/confirmDialogTexts.ts +2 -0
  272. package/frontend-vue/layers/dms-ui/app/build/composables/containers/closingLayers.ts +186 -0
  273. package/frontend-vue/layers/dms-ui/app/build/composables/containers/context.ts +14 -0
  274. package/frontend-vue/layers/dms-ui/app/build/composables/containers/drawerSize.ts +229 -0
  275. package/frontend-vue/layers/dms-ui/app/build/composables/containers/useResizableSize.ts +175 -0
  276. package/frontend-vue/layers/dms-ui/app/build/composables/data-types/metricCells.ts +18 -35
  277. package/frontend-vue/layers/dms-ui/app/build/composables/data-types/numberSuffix.ts +44 -0
  278. package/frontend-vue/layers/dms-ui/app/build/composables/data-types/registerDefaults.ts +123 -27
  279. package/frontend-vue/layers/dms-ui/app/build/composables/data-types/registerFieldTypes.ts +2 -1
  280. package/frontend-vue/layers/dms-ui/app/build/composables/data-types/relationFilter.ts +75 -0
  281. package/frontend-vue/layers/dms-ui/app/build/composables/data-types/relationRows.ts +92 -0
  282. package/frontend-vue/layers/dms-ui/app/build/composables/data-types/relationValue.ts +39 -0
  283. package/frontend-vue/layers/dms-ui/app/build/composables/data-types/twoLineCell.ts +3 -3
  284. package/frontend-vue/layers/dms-ui/app/build/composables/data-types/useColumnValueRenderer.ts +6 -2
  285. package/frontend-vue/layers/dms-ui/app/build/composables/form/createFormFields.ts +15 -0
  286. package/frontend-vue/layers/dms-ui/app/build/composables/form/fieldSaved.ts +40 -0
  287. package/frontend-vue/layers/dms-ui/app/build/composables/form/fieldValueRule.ts +62 -0
  288. package/frontend-vue/layers/dms-ui/app/build/composables/form/formEntryContext.ts +5 -0
  289. package/frontend-vue/layers/dms-ui/app/build/composables/form/formFooter.ts +42 -7
  290. package/frontend-vue/layers/dms-ui/app/build/composables/form/formLayout.ts +106 -4
  291. package/frontend-vue/layers/dms-ui/app/build/composables/form/formRecordLoad.ts +11 -5
  292. package/frontend-vue/layers/dms-ui/app/build/composables/form/formSections.ts +32 -0
  293. package/frontend-vue/layers/dms-ui/app/build/composables/form/formValidation.ts +36 -4
  294. package/frontend-vue/layers/dms-ui/app/build/composables/form/readonlyValue.ts +19 -0
  295. package/frontend-vue/layers/dms-ui/app/build/composables/form/registerFormFunctions.ts +27 -0
  296. package/frontend-vue/layers/dms-ui/app/build/composables/form/repeaterTable.ts +78 -0
  297. package/frontend-vue/layers/dms-ui/app/build/composables/form/serverFieldErrors.ts +49 -0
  298. package/frontend-vue/layers/dms-ui/app/build/composables/form/toasterClearance.ts +118 -0
  299. package/frontend-vue/layers/dms-ui/app/build/composables/form/useInstantForm.ts +12 -1
  300. package/frontend-vue/layers/dms-ui/app/build/composables/live/currentPageLive.ts +41 -3
  301. package/frontend-vue/layers/dms-ui/app/build/composables/live/livePoller.ts +10 -2
  302. package/frontend-vue/layers/dms-ui/app/build/composables/live/pageReadClock.ts +28 -0
  303. package/frontend-vue/layers/dms-ui/app/build/composables/live/shortcuts.ts +1 -1
  304. package/frontend-vue/layers/dms-ui/app/build/composables/live/usePageLiveHost.ts +17 -3
  305. package/frontend-vue/layers/dms-ui/app/build/composables/live/useUpdatedLabel.ts +38 -0
  306. package/frontend-vue/layers/dms-ui/app/build/composables/page-toolbar/pageToolbarContext.ts +75 -0
  307. package/frontend-vue/layers/dms-ui/app/build/composables/page-toolbar/toolbarControlHeight.ts +29 -0
  308. package/frontend-vue/layers/dms-ui/app/build/composables/period/periodComparison.ts +52 -0
  309. package/frontend-vue/layers/dms-ui/app/build/composables/period/periodDisplay.ts +21 -0
  310. package/frontend-vue/layers/dms-ui/app/build/composables/period/periodShortLabels.ts +28 -0
  311. package/frontend-vue/layers/dms-ui/app/build/composables/period/usePeriodDraft.ts +1 -0
  312. package/frontend-vue/layers/dms-ui/app/build/composables/table/useRelationFilterLabels.ts +97 -0
  313. package/frontend-vue/layers/dms-ui/app/build/composables/table/useRowScrollAnchor.ts +106 -0
  314. package/frontend-vue/layers/dms-ui/app/build/composables/table/useTable.ts +9 -0
  315. package/frontend-vue/layers/dms-ui/app/build/composables/table/useTableColumns.ts +1 -2
  316. package/frontend-vue/layers/dms-ui/app/build/composables/table/utils/archivedCount.ts +31 -0
  317. package/frontend-vue/layers/dms-ui/app/build/composables/table/utils/filterEditorValue.ts +38 -0
  318. package/frontend-vue/layers/dms-ui/app/build/composables/table/utils/formatFilterValue.ts +33 -2
  319. package/frontend-vue/layers/dms-ui/app/build/composables/table/utils/scrollEdges.ts +31 -0
  320. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useCardFields.ts +33 -0
  321. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useMobileDisplay.ts +48 -0
  322. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useScrolledPastTop.ts +41 -18
  323. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableFooter.ts +3 -2
  324. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableLinkedVisit.ts +78 -0
  325. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableLiveHold.ts +135 -22
  326. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableRows.ts +56 -25
  327. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableViewRowActions.ts +90 -35
  328. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableViews.ts +86 -10
  329. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/bulkActions.ts +14 -4
  330. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/card.ts +127 -2
  331. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/compareValues.ts +13 -0
  332. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/expandedRows.ts +28 -0
  333. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/groupedRows.ts +114 -1
  334. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/linkedArrival.ts +308 -0
  335. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/locateRow.ts +106 -0
  336. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/pageArrival.ts +34 -0
  337. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/pinnedRows.ts +17 -0
  338. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/quickFilters.ts +41 -33
  339. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/recordLink.ts +24 -8
  340. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/tableCounts.ts +113 -0
  341. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/tableQuery.ts +27 -4
  342. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/views.ts +22 -6
  343. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/writeError.ts +21 -0
  344. package/frontend-vue/layers/dms-ui/app/build/utils/addressSuggestions.ts +49 -0
  345. package/frontend-vue/layers/dms-ui/app/build/utils/codeHighlight.ts +67 -29
  346. package/frontend-vue/layers/dms-ui/app/build/utils/eyebrow.ts +12 -0
  347. package/frontend-vue/layers/dms-ui/app/build/utils/fieldOptionsI18n.ts +51 -11
  348. package/frontend-vue/layers/dms-ui/app/build/utils/htmlGrammar.ts +79 -0
  349. package/frontend-vue/layers/dms-ui/app/build/utils/inputWidth.ts +53 -0
  350. package/frontend-vue/layers/dms-ui/app/build/utils/numberAdjustment.ts +6 -3
  351. package/frontend-vue/layers/dms-ui/app/build/utils/relativeDate.ts +19 -5
  352. package/frontend-vue/layers/dms-ui/app/build/utils/scrollWithin.ts +99 -0
  353. package/frontend-vue/layers/dms-ui/app/build/utils/shellParser.ts +1 -1
  354. package/frontend-vue/layers/dms-ui/app/build/utils/streamHighlight.ts +90 -0
  355. package/frontend-vue/layers/dms-ui/app/build/utils/urlVariables.ts +36 -14
  356. package/frontend-vue/layers/dms-ui/app/components/PasswordStrength.vue +1 -1
  357. package/frontend-vue/layers/dms-ui/app/components/RecursiveComponent.vue +9 -1
  358. package/frontend-vue/layers/dms-ui/app/components/blocks/LiveToggleBlock.vue +80 -32
  359. package/frontend-vue/layers/dms-ui/app/components/blocks/PageToolbarBlock.vue +137 -0
  360. package/frontend-vue/layers/dms-ui/app/components/blocks/StatGroupBlock.vue +5 -0
  361. package/frontend-vue/layers/dms-ui/app/components/chart/ApexChartHost.vue +16 -2
  362. package/frontend-vue/layers/dms-ui/app/components/chart/Chart.vue +24 -5
  363. package/frontend-vue/layers/dms-ui/app/components/chart/ChartCard.vue +41 -23
  364. package/frontend-vue/layers/dms-ui/app/components/code-snippet/CodeSnippet.vue +23 -12
  365. package/frontend-vue/layers/dms-ui/app/components/confirm/ConfirmModal.vue +1 -1
  366. package/frontend-vue/layers/dms-ui/app/components/container-footer/ContainerFooter.vue +34 -0
  367. package/frontend-vue/layers/dms-ui/app/components/field-row/FieldRow.vue +25 -2
  368. package/frontend-vue/layers/dms-ui/app/components/flow-canvas/FlowCanvas.vue +2 -2
  369. package/frontend-vue/layers/dms-ui/app/components/form/Form.vue +119 -36
  370. package/frontend-vue/layers/dms-ui/app/components/form/components/Cascader.vue +53 -22
  371. package/frontend-vue/layers/dms-ui/app/components/form/components/DatePicker.vue +20 -1
  372. package/frontend-vue/layers/dms-ui/app/components/form/components/Display.vue +13 -1
  373. package/frontend-vue/layers/dms-ui/app/components/form/components/Image.vue +8 -3
  374. package/frontend-vue/layers/dms-ui/app/components/form/components/InputAddress.vue +53 -5
  375. package/frontend-vue/layers/dms-ui/app/components/form/components/InputCode.vue +29 -5
  376. package/frontend-vue/layers/dms-ui/app/components/form/components/InputNumber.vue +45 -8
  377. package/frontend-vue/layers/dms-ui/app/components/form/components/InputPercentage.vue +28 -5
  378. package/frontend-vue/layers/dms-ui/app/components/form/components/InputSecret.vue +5 -0
  379. package/frontend-vue/layers/dms-ui/app/components/form/components/InputText.vue +19 -2
  380. package/frontend-vue/layers/dms-ui/app/components/form/components/InputTime.vue +2 -1
  381. package/frontend-vue/layers/dms-ui/app/components/form/components/Relation.vue +226 -65
  382. package/frontend-vue/layers/dms-ui/app/components/form/components/Repeater.vue +80 -30
  383. package/frontend-vue/layers/dms-ui/app/components/form/components/RepeaterTable.vue +210 -0
  384. package/frontend-vue/layers/dms-ui/app/components/form/components/Select.vue +4 -2
  385. package/frontend-vue/layers/dms-ui/app/components/grid/GridRow.vue +11 -2
  386. package/frontend-vue/layers/dms-ui/app/components/key-value-list/KeyValueList.vue +79 -70
  387. package/frontend-vue/layers/dms-ui/app/components/kpi/KpiCard.vue +117 -21
  388. package/frontend-vue/layers/dms-ui/app/components/meter/Meter.vue +2 -1
  389. package/frontend-vue/layers/dms-ui/app/components/period/PeriodSelector.vue +113 -34
  390. package/frontend-vue/layers/dms-ui/app/components/save-bar/SaveBar.vue +14 -2
  391. package/frontend-vue/layers/dms-ui/app/components/section-header/Eyebrow.vue +6 -1
  392. package/frontend-vue/layers/dms-ui/app/components/segmented/Segmented.vue +13 -0
  393. package/frontend-vue/layers/dms-ui/app/components/stat-group/StatGroup.vue +52 -3
  394. package/frontend-vue/layers/dms-ui/app/components/tab/Tab.vue +2 -1
  395. package/frontend-vue/layers/dms-ui/app/components/table-view/CascaderPath.vue +74 -25
  396. package/frontend-vue/layers/dms-ui/app/components/table-view/KanbanBoard.vue +48 -44
  397. package/frontend-vue/layers/dms-ui/app/components/table-view/KanbanDisplay.vue +4 -1
  398. package/frontend-vue/layers/dms-ui/app/components/table-view/TableView.vue +426 -97
  399. package/frontend-vue/layers/dms-ui/app/components/top-list/TopListCard.vue +33 -5
  400. package/frontend-vue/layers/dms-ui/app/composables/chart/apexCategoryLabels.ts +68 -0
  401. package/frontend-vue/layers/dms-ui/app/composables/chart/apexDatetimeBuckets.ts +306 -0
  402. package/frontend-vue/layers/dms-ui/app/composables/chart/formatValue.ts +4 -3
  403. package/frontend-vue/layers/dms-ui/app/composables/chart/heatmapColors.ts +93 -0
  404. package/frontend-vue/layers/dms-ui/app/composables/chart/localizeSeries.ts +62 -0
  405. package/frontend-vue/layers/dms-ui/app/composables/chart/useApexChart.ts +116 -8
  406. package/frontend-vue/layers/dms-ui/app/composables/chart/useApexChart.types.ts +7 -0
  407. package/frontend-vue/layers/dms-ui/app/composables/containers/types.ts +84 -1
  408. package/frontend-vue/layers/dms-ui/app/composables/containers/useDrawer.ts +69 -8
  409. package/frontend-vue/layers/dms-ui/app/composables/form/types/field-saved.ts +11 -0
  410. package/frontend-vue/layers/dms-ui/app/composables/form/types/field.ts +16 -0
  411. package/frontend-vue/layers/dms-ui/app/composables/form/types/functions.ts +1 -0
  412. package/frontend-vue/layers/dms-ui/app/composables/form/useForm.ts +189 -28
  413. package/frontend-vue/layers/dms-ui/app/composables/live/usePageLive.ts +29 -12
  414. package/frontend-vue/layers/dms-ui/app/composables/page-toolbar/usePageToolbarSize.ts +30 -0
  415. package/frontend-vue/layers/dms-ui/app/composables/table-view/kanban.ts +4 -2
  416. package/frontend-vue/layers/dms-ui/app/composables/table-view/types/action-target.ts +22 -3
  417. package/frontend-vue/layers/dms-ui/app/composables/table-view/types/config.ts +4 -0
  418. package/frontend-vue/layers/dms-ui/app/composables/table-view/types/display.ts +24 -1
  419. package/frontend-vue/layers/dms-ui/app/plugins/closing-layers.client.ts +10 -0
  420. package/frontend-vue/layers/dms-ui/app/plugins/live-pause-source.ts +15 -0
  421. package/frontend-vue/layers/dms-ui/app/plugins/register.ts +2 -0
  422. package/frontend-vue/layers/dms-ui/app/types/input-number.ts +3 -2
  423. package/frontend-vue/layers/dms-ui/app/types/page-toolbar.ts +7 -0
  424. package/frontend-vue/layers/dms-ui/app/types/row-action.ts +0 -2
  425. package/frontend-vue/layers/dms-ui/app/types/row-navigation.ts +17 -0
  426. package/frontend-vue/layers/dms-ui/app/types/table/query.ts +2 -1
  427. package/frontend-vue/layers/dms-ui/app/utils/blockRefresh.ts +3 -1
  428. package/frontend-vue/layers/dms-ui/app/utils/cascader.ts +94 -3
  429. package/frontend-vue/layers/dms-ui/app/utils/componentTree.ts +24 -0
  430. package/frontend-vue/layers/dms-ui/i18n/locales/ui-en-GB.json +20 -5
  431. package/frontend-vue/layers/dms-ui/i18n/locales/ui-fr-FR.json +20 -5
  432. package/frontend-vue/package.json +6 -2
  433. package/package.json +11 -10
  434. package/skills/dms/SKILL.md +1 -1
  435. package/skills/dms-auth/SKILL.md +5 -3
  436. package/skills/dms-best-practices/REFERENCE.md +2 -0
  437. package/skills/dms-best-practices/SKILL.md +4 -0
  438. package/skills/dms-module/SKILL.md +3 -2
  439. package/skills/dms-pages/REFERENCE.md +129 -16
  440. package/skills/dms-pages/SKILL.md +1 -1
  441. package/skills/dms-project/DEV-SERVERS.md +23 -1
  442. package/skills/dms-project/REFERENCE.md +1 -1
  443. package/skills/dms-project/SKILL.md +4 -1
  444. package/skills/dms-project/scripts/dms-dev.sh +205 -17
  445. package/dist/hooks/tenant-instances.d.ts +0 -1
  446. package/dist/hooks/tenant-instances.js +0 -13
  447. package/dist/hooks/tenant-instances.js.map +0 -1
  448. package/dist/routes/startup-gate.d.ts +0 -7
  449. package/dist/routes/startup-gate.js +0 -39
  450. package/dist/routes/startup-gate.js.map +0 -1
  451. package/frontend-vue/layers/dms-core/app/composables/period/periodRenderNow.ts +0 -42
@@ -49,3 +49,60 @@ export function buildBreadcrumbTarget(
49
49
 
50
50
  return buildPageTarget(path, metadata.validation, currentQuery);
51
51
  }
52
+
53
+ /** The crumb a folded breadcrumb shows for the crumbs it hides. */
54
+ export interface FoldedCrumbs<T> {
55
+ isFolded: true;
56
+ slot: string;
57
+ children: T[];
58
+ }
59
+
60
+ export function isFoldedCrumbs<T>(
61
+ crumb: T | FoldedCrumbs<T>,
62
+ ): crumb is FoldedCrumbs<T> {
63
+ return (crumb as Partial<FoldedCrumbs<T>>).isFolded === true;
64
+ }
65
+
66
+ /**
67
+ * A phone's breadcrumb: the first and the last crumb, the ones between
68
+ * folded into one `slot` crumb. A single crumb between them stays as it is,
69
+ * a "…" holding one name only hid it.
70
+ */
71
+ export function foldBreadcrumb<T>(
72
+ crumbs: readonly T[],
73
+ slot: string,
74
+ ): (T | FoldedCrumbs<T>)[] {
75
+ if (crumbs.length <= 3) return [...crumbs];
76
+ return [
77
+ crumbs[0]!,
78
+ { isFolded: true, slot, children: crumbs.slice(1, -1) },
79
+ crumbs.at(-1)!,
80
+ ];
81
+ }
82
+
83
+ /** What a crumb is compared on: the URL it opens. */
84
+ interface LinkedCrumb {
85
+ to?: unknown;
86
+ }
87
+
88
+ /**
89
+ * `crumbs` with the crumb of the page the current one is a detail of
90
+ * (`MenuOptions.parent`) before the last, unless a crumb already opens it:
91
+ * a hidden detail page then leads back to its list.
92
+ */
93
+ export function withParentCrumb<T extends object>(
94
+ crumbs: readonly T[],
95
+ parent: T | null | undefined,
96
+ ): T[] {
97
+ if (!parent || crumbs.length < 2) return [...crumbs];
98
+ const parentTo = (parent as LinkedCrumb).to;
99
+ if (
100
+ crumbs.some(
101
+ (crumb) =>
102
+ parentTo !== undefined && (crumb as LinkedCrumb).to === parentTo,
103
+ )
104
+ ) {
105
+ return [...crumbs];
106
+ }
107
+ return [...crumbs.slice(0, -1), parent, crumbs.at(-1)!];
108
+ }
@@ -57,3 +57,29 @@ export function layoutUrlWithQuery(
57
57
  const search = new URLSearchParams(query).toString();
58
58
  return search ? `${layoutUrl}?${search}` : layoutUrl;
59
59
  }
60
+
61
+ /**
62
+ * A page path or layout URL with its `:name` segments filled from `params`;
63
+ * a segment `params` has no value for stays as it is. The page's layout route
64
+ * reads them as the page URL's own.
65
+ */
66
+ export function fillRouteParams(
67
+ layoutUrl: string,
68
+ params: Record<string, string>,
69
+ ): string {
70
+ return layoutUrl.replace(/:([^/]+)/g, (segment, name: string) =>
71
+ name in params ? params[name]! : segment,
72
+ );
73
+ }
74
+
75
+ /** Whether two sets of route parameters hold the same values. */
76
+ export function isSameRouteParams(
77
+ left: Record<string, string>,
78
+ right: Record<string, string>,
79
+ ): boolean {
80
+ const names = Object.keys(left);
81
+ return (
82
+ names.length === Object.keys(right).length &&
83
+ names.every((name) => left[name] === right[name])
84
+ );
85
+ }
@@ -100,6 +100,10 @@
100
100
  "no_content_title": "No content available",
101
101
  "no_content_message": "This page has not been configured yet. Please contact the administrator."
102
102
  },
103
+ "record_deleted": {
104
+ "title": "Deleted",
105
+ "description": "What this page showed was deleted. It is no longer available."
106
+ },
103
107
  "no_visible_blocks": {
104
108
  "title": "Nothing to show for you here",
105
109
  "description": "Your role doesn’t let you see any part of this page. Ask a workspace owner for access."
@@ -188,6 +192,8 @@
188
192
  "mark_unread": "Mark unread",
189
193
  "delete": "Delete",
190
194
  "delete_one": "Delete notification",
195
+ "delete_one_title": "Delete this notification?",
196
+ "delete_one_description": "It leaves your inbox for good. This can’t be undone.",
191
197
  "empty_title": "You’re all caught up",
192
198
  "empty_description": "New notifications land here. Choose what you receive in Preferences above.",
193
199
  "loading_more": "Loading older notifications · {count} more",
@@ -647,6 +653,10 @@
647
653
  "tab": {
648
654
  "title": "Tabs",
649
655
  "description": "Pages split into tabs."
656
+ },
657
+ "livetoggle": {
658
+ "title": "Live toggle",
659
+ "description": "Pages with a Live / Pause switch."
650
660
  }
651
661
  }
652
662
  },
@@ -722,6 +732,7 @@
722
732
  "open": "Open",
723
733
  "owner_badge": "Platform owners",
724
734
  "refresh": "Refresh",
735
+ "browse_store": "Browse the store",
725
736
  "empty": {
726
737
  "title": "No module is installed yet",
727
738
  "description": "Modules are added to the project with the AntelopeJS CLI, then appear here after a restart."
@@ -734,11 +745,15 @@
734
745
  },
735
746
  "installed": {
736
747
  "title": "Installed",
737
- "description": "Status and a live readout for each module. Open a module to pick up where you left off."
748
+ "description": "Status, a live readout and the store actions of each module, paused ones included. Open a module to start from its home page."
738
749
  },
739
750
  "store": {
740
751
  "title": "Module store",
741
- "description": "Official AntelopeJS modules: install, update, pause or remove them without touching the project’s code.",
752
+ "description": "Official AntelopeJS modules to discover and install. An installed module is managed from its tile among the installed modules.",
753
+ "back": "Installed modules",
754
+ "installed": "Installed",
755
+ "view_installed": "View in installed modules",
756
+ "update_available": "Update available",
742
757
  "scope": {
743
758
  "label": "Show",
744
759
  "all": "All · {count}",
@@ -749,16 +764,16 @@
749
764
  "available": "Available",
750
765
  "busy": "Working",
751
766
  "active": "Active",
752
- "disabled": "Paused",
753
- "error": "Failed",
767
+ "disabled": "Inactive",
768
+ "error": "Error",
754
769
  "pending": "Not applied",
755
- "update_available": "Update"
770
+ "update_available": "Update available"
756
771
  },
757
772
  "actions": {
758
773
  "install": "Install",
759
774
  "update": "Update",
760
775
  "enable": "Resume",
761
- "disable": "Pause",
776
+ "disable": "Pause (keep the configuration)",
762
777
  "uninstall": "Uninstall",
763
778
  "apply": "Apply",
764
779
  "manage": "Manage"
@@ -783,9 +798,10 @@
783
798
  "no_release": "The npm registry has no release of it this platform can read",
784
799
  "locked": "Another module is being changed",
785
800
  "pending_hint": "antelope.config.ts and the running platform disagree: Apply brings them in line.",
801
+ "working_copy_hint": "Local copy declared in antelope.config.ts.",
786
802
  "uninstall_confirm": {
787
803
  "title": "Uninstall {module}?",
788
- "description": "{module} stops and leaves the menu. Its data (collections, files, settings) stays in place and comes back if you install it again."
804
+ "description": "{module} stops and leaves the menu. Its data (collections, files, settings) stays in place and comes back if you install it again. Its configuration block is removed from antelope.config.ts."
789
805
  },
790
806
  "action_failed": "{module} could not be changed",
791
807
  "errors": {
@@ -793,8 +809,10 @@
793
809
  "store_module_unknown": "This module is not in the catalog.",
794
810
  "store_disabled": "The store is read-only on this platform.",
795
811
  "store_invalid_state": "The module changed in the meantime. The list is up to date again.",
812
+ "store_working_copy": "This module runs from a local copy that antelope.config.ts declares: change it there.",
796
813
  "unauthorized": "Only platform owners manage modules.",
797
- "store_module_required": "Other running modules need this one. Remove them first."
814
+ "store_module_required": "Other running modules need this one. Remove them first.",
815
+ "store_module_used_by_project": "The project’s code uses this module: remove that use before uninstalling it."
798
816
  },
799
817
  "frontend": {
800
818
  "dev": {
@@ -812,7 +830,7 @@
812
830
  },
813
831
  "disabled": {
814
832
  "title": "The store is read-only here",
815
- "description": "Modules are installed from development, which writes them to antelope.config.ts; this platform loads what that file declares. Set store.enabled to true in the DMS configuration to change them from here."
833
+ "description": "Modules are installed from development, which writes them to antelope.config.ts; this platform loads what that file declares. Change them from development."
816
834
  },
817
835
  "load_error": "The module store could not be loaded",
818
836
  "search_placeholder": "Search the store",
@@ -823,15 +841,17 @@
823
841
  },
824
842
  "all_installed": {
825
843
  "title": "Every official module is installed",
826
- "description": "New modules from the AntelopeJS catalog will show up here."
844
+ "description": "Nothing is left to install. New modules from the AntelopeJS catalog will show up here.",
845
+ "show_all": "Show all modules"
827
846
  },
828
847
  "category": {
829
848
  "ai": "AI",
849
+ "analytics": "Analytics",
830
850
  "business": "Business",
851
+ "communication": "Communication",
831
852
  "content": "Content",
832
853
  "data": "Data",
833
854
  "developer": "Developer",
834
- "growth": "Growth",
835
855
  "operations": "Operations"
836
856
  },
837
857
  "catalog": {
@@ -891,6 +911,8 @@
891
911
  "requires": "Requires: {interfaces}",
892
912
  "requires_first": "Needs {interfaces}, which no running module implements: install a module that does first.",
893
913
  "used_by": "Used by: {modules}. Remove them first.",
914
+ "used_by_project": "The project’s code uses this module: remove that use before uninstalling it.",
915
+ "dependents": "Used by: {modules}",
894
916
  "frontend_version": {
895
917
  "label": "dms-frontend {version}",
896
918
  "reported": "Reported by the running frontend server",
@@ -926,12 +948,19 @@
926
948
  },
927
949
  "category_other": "Other",
928
950
  "status": {
929
- "live": "Live",
951
+ "live": "Active",
930
952
  "beta": "Beta",
931
- "update": "Update",
932
- "attention": "Attention"
953
+ "update": "Update available",
954
+ "attention": "Attention",
955
+ "restart_required": "Restart required"
956
+ },
957
+ "source": {
958
+ "npm": "npm",
959
+ "github": "GitHub",
960
+ "gitlab": "GitLab",
961
+ "git": "Git",
962
+ "local": "Local"
933
963
  },
934
- "update_available": "update available",
935
964
  "no_result": {
936
965
  "title": "No installed module matches “{query}”",
937
966
  "title_filtered": "No installed module matches these filters",
@@ -1015,9 +1044,7 @@
1015
1044
  "footer": {
1016
1045
  "documentation": "Documentation",
1017
1046
  "website": "Website",
1018
- "language": "Language",
1019
- "github_star": "Star",
1020
- "github_star_label": "Star AntelopeJS DMS on GitHub"
1047
+ "language": "Language"
1021
1048
  }
1022
1049
  },
1023
1050
  "error": {
@@ -100,6 +100,10 @@
100
100
  "no_content_title": "Aucun contenu disponible",
101
101
  "no_content_message": "Cette page n'a pas encore été configurée. Veuillez contacter l'administrateur."
102
102
  },
103
+ "record_deleted": {
104
+ "title": "Supprimé",
105
+ "description": "Ce que montrait cette page a été supprimé. Il n’est plus disponible."
106
+ },
103
107
  "no_visible_blocks": {
104
108
  "title": "Rien à afficher pour vous ici",
105
109
  "description": "Votre rôle ne vous permet de voir aucune partie de cette page. Demandez l’accès à un propriétaire de l’espace."
@@ -188,6 +192,8 @@
188
192
  "mark_unread": "Marquer non lu",
189
193
  "delete": "Supprimer",
190
194
  "delete_one": "Supprimer la notification",
195
+ "delete_one_title": "Supprimer cette notification ?",
196
+ "delete_one_description": "Elle quitte définitivement votre boîte de réception. Cette action est irréversible.",
191
197
  "empty_title": "Vous êtes à jour",
192
198
  "empty_description": "Les nouvelles notifications arrivent ici. Choisissez ce que vous recevez dans les préférences ci-dessus.",
193
199
  "loading_more": "Chargement des notifications plus anciennes · {count} de plus",
@@ -651,6 +657,10 @@
651
657
  "tab": {
652
658
  "title": "Onglets",
653
659
  "description": "Pages découpées en onglets."
660
+ },
661
+ "livetoggle": {
662
+ "title": "Direct / Pause",
663
+ "description": "Pages avec un bouton Direct / Pause."
654
664
  }
655
665
  }
656
666
  },
@@ -726,6 +736,7 @@
726
736
  "open": "Ouvrir",
727
737
  "owner_badge": "Propriétaires de la plateforme",
728
738
  "refresh": "Actualiser",
739
+ "browse_store": "Accéder au store",
729
740
  "empty": {
730
741
  "title": "Aucun module n’est encore installé",
731
742
  "description": "Les modules s’ajoutent au projet avec la CLI AntelopeJS, puis apparaissent ici après un redémarrage."
@@ -738,11 +749,15 @@
738
749
  },
739
750
  "installed": {
740
751
  "title": "Installés",
741
- "description": "L’état et un relevé en direct de chaque module. Ouvrez un module pour reprendre là où vous en étiez."
752
+ "description": "L’état, un relevé en direct et les actions du store de chaque module, ceux en pause compris. Ouvrez un module pour arriver sur sa page d’accueil."
742
753
  },
743
754
  "store": {
744
755
  "title": "Store de modules",
745
- "description": "Les modules officiels AntelopeJS : installez-les, mettez-les à jour, mettez-les en pause ou retirez-les sans toucher au code du projet.",
756
+ "description": "Les modules officiels AntelopeJS, à découvrir et à installer. Un module installé se gère depuis sa tuile parmi les modules installés.",
757
+ "back": "Modules installés",
758
+ "installed": "Installé",
759
+ "view_installed": "Voir dans les modules installés",
760
+ "update_available": "Mise à jour disponible",
746
761
  "scope": {
747
762
  "label": "Afficher",
748
763
  "all": "Tous · {count}",
@@ -753,16 +768,16 @@
753
768
  "available": "Disponible",
754
769
  "busy": "En cours",
755
770
  "active": "Actif",
756
- "disabled": "En pause",
757
- "error": "Échec",
771
+ "disabled": "Inactif",
772
+ "error": "Erreur",
758
773
  "pending": "Non appliqué",
759
- "update_available": "Mise à jour"
774
+ "update_available": "Mise à jour disponible"
760
775
  },
761
776
  "actions": {
762
777
  "install": "Installer",
763
778
  "update": "Mettre à jour",
764
779
  "enable": "Reprendre",
765
- "disable": "Mettre en pause",
780
+ "disable": "Mettre en pause (garder la configuration)",
766
781
  "uninstall": "Désinstaller",
767
782
  "apply": "Appliquer",
768
783
  "manage": "Gérer"
@@ -787,9 +802,10 @@
787
802
  "no_release": "Le registre npm ne propose aucune version lisible depuis cette plateforme",
788
803
  "locked": "Un autre module est en cours de modification",
789
804
  "pending_hint": "antelope.config.ts et la plateforme ne concordent pas : Appliquer les remet d’accord.",
805
+ "working_copy_hint": "Copie locale déclarée dans antelope.config.ts.",
790
806
  "uninstall_confirm": {
791
807
  "title": "Désinstaller {module} ?",
792
- "description": "{module} s’arrête et quitte le menu. Ses données (collections, fichiers, réglages) restent en place et reviennent si vous le réinstallez."
808
+ "description": "{module} s’arrête et quitte le menu. Ses données (collections, fichiers, réglages) restent en place et reviennent si vous le réinstallez. Son bloc de configuration est retiré d’antelope.config.ts."
793
809
  },
794
810
  "action_failed": "{module} n’a pas pu être modifié",
795
811
  "errors": {
@@ -797,8 +813,10 @@
797
813
  "store_module_unknown": "Ce module n’est pas dans le catalogue.",
798
814
  "store_disabled": "Le store est en lecture seule sur cette plateforme.",
799
815
  "store_invalid_state": "Le module a changé entre-temps. La liste est de nouveau à jour.",
816
+ "store_working_copy": "Ce module tourne depuis une copie locale déclarée dans antelope.config.ts : modifiez-le là.",
800
817
  "unauthorized": "Seuls les propriétaires de la plateforme gèrent les modules.",
801
- "store_module_required": "D’autres modules en cours d’exécution ont besoin de celui-ci. Retirez-les d’abord."
818
+ "store_module_required": "D’autres modules en cours d’exécution ont besoin de celui-ci. Retirez-les d’abord.",
819
+ "store_module_used_by_project": "Le code du projet utilise ce module : retirez cet usage avant de le désinstaller."
802
820
  },
803
821
  "frontend": {
804
822
  "dev": {
@@ -816,7 +834,7 @@
816
834
  },
817
835
  "disabled": {
818
836
  "title": "Le store est en lecture seule ici",
819
- "description": "Les modules s’installent depuis le développement, qui les écrit dans antelope.config.ts ; cette plateforme charge ce que déclare ce fichier. Passez store.enabled à true dans la configuration du DMS pour les modifier d’ici."
837
+ "description": "Les modules s’installent depuis le développement, qui les écrit dans antelope.config.ts ; cette plateforme charge ce que déclare ce fichier. Modifiez-les depuis le développement."
820
838
  },
821
839
  "load_error": "Le store de modules n’a pas pu être chargé",
822
840
  "search_placeholder": "Rechercher dans le store",
@@ -827,15 +845,17 @@
827
845
  },
828
846
  "all_installed": {
829
847
  "title": "Tous les modules officiels sont installés",
830
- "description": "Les nouveaux modules du catalogue AntelopeJS apparaîtront ici."
848
+ "description": "Il ne reste rien à installer. Les nouveaux modules du catalogue AntelopeJS apparaîtront ici.",
849
+ "show_all": "Afficher tous les modules"
831
850
  },
832
851
  "category": {
833
852
  "ai": "IA",
853
+ "analytics": "Mesure d'audience",
834
854
  "business": "Business",
855
+ "communication": "Communication",
835
856
  "content": "Contenu",
836
857
  "data": "Données",
837
858
  "developer": "Développement",
838
- "growth": "Croissance",
839
859
  "operations": "Opérations"
840
860
  },
841
861
  "catalog": {
@@ -895,6 +915,8 @@
895
915
  "requires": "Requiert : {interfaces}",
896
916
  "requires_first": "Demande {interfaces}, qu’aucun module en cours d’exécution n’implémente : installez d’abord un module qui le fait.",
897
917
  "used_by": "Utilisé par : {modules}. Retirez-les d’abord.",
918
+ "used_by_project": "Le code du projet utilise ce module : retirez cet usage avant de le désinstaller.",
919
+ "dependents": "Utilisé par : {modules}",
898
920
  "frontend_version": {
899
921
  "label": "dms-frontend {version}",
900
922
  "reported": "Indiquée par le serveur frontend en cours d’exécution",
@@ -932,10 +954,17 @@
932
954
  "status": {
933
955
  "live": "Actif",
934
956
  "beta": "Bêta",
935
- "update": "Mise à jour",
936
- "attention": "Attention"
957
+ "update": "Mise à jour disponible",
958
+ "attention": "Attention",
959
+ "restart_required": "Redémarrage requis"
960
+ },
961
+ "source": {
962
+ "npm": "npm",
963
+ "github": "GitHub",
964
+ "gitlab": "GitLab",
965
+ "git": "Git",
966
+ "local": "Local"
937
967
  },
938
- "update_available": "mise à jour disponible",
939
968
  "no_result": {
940
969
  "title": "Aucun module installé ne correspond à « {query} »",
941
970
  "title_filtered": "Aucun module installé ne correspond à ces filtres",
@@ -1019,9 +1048,7 @@
1019
1048
  "footer": {
1020
1049
  "documentation": "Documentation",
1021
1050
  "website": "Site web",
1022
- "language": "Langue",
1023
- "github_star": "Star",
1024
- "github_star_label": "Mettre une étoile à AntelopeJS DMS sur GitHub"
1051
+ "language": "Langue"
1025
1052
  }
1026
1053
  },
1027
1054
  "error": {
@@ -0,0 +1,31 @@
1
+ <script setup lang="ts">
2
+ // The component of a drawer, modal or side panel action target that holds
3
+ // blocks of its own (a Card, a VStack, a Grid, a Tab): drawn as a page draws
4
+ // a layout block, its children mounted in its slots. The container's own
5
+ // props (`rowData`, `navigation`, `onSuccessCallback`…) and listeners go to
6
+ // the container block, as they go to a single block.
7
+ import { useAttrs } from "vue";
8
+ import DmsRecursiveComponent from "../../../components/RecursiveComponent.vue";
9
+
10
+ defineOptions({ inheritAttrs: false });
11
+
12
+ interface Props {
13
+ /** The container block, its children resolved and filled with the row. */
14
+ targetTree: ResolvedComponentInfo;
15
+ pageId: string;
16
+ componentId: string;
17
+ }
18
+
19
+ defineProps<Props>();
20
+
21
+ const attrs = useAttrs();
22
+ </script>
23
+
24
+ <template>
25
+ <DmsRecursiveComponent
26
+ :component="targetTree"
27
+ :page-id="pageId"
28
+ :component-id="componentId"
29
+ :root-props="attrs"
30
+ />
31
+ </template>
@@ -1,2 +1,27 @@
1
1
  /** Placeholder field rows shown while the container body resolves. */
2
2
  export const CONTAINER_SKELETON_FIELDS = 4;
3
+
4
+ /**
5
+ * The placeholder rows' grid: two columns once the drawer or modal body has
6
+ * a form's room for them (FieldRow's 560px step), whatever the window.
7
+ */
8
+ export const CONTAINER_SKELETON_CLASS = "grid gap-4 @min-[560px]:grid-cols-2";
9
+
10
+ /**
11
+ * The backdrop of a closing drawer or modal: it lets a click through to the
12
+ * page as soon as the close starts and fades out quickly (at once with reduced
13
+ * motion), while the panel still animates out and returns focus. Important:
14
+ * reka sets `pointer-events: auto` inline on the overlay, and vaul's
15
+ * unlayered rules time a drawer's fade.
16
+ */
17
+ export const CLOSING_OVERLAY_CLASS =
18
+ "data-[state=closed]:pointer-events-none! data-[state=closed]:[animation-duration:100ms]! motion-reduce:data-[state=closed]:[animation:none]!";
19
+
20
+ /**
21
+ * The panel of a drawer, modal or slideover a closing dialog uncovered (see
22
+ * `UNCOVERED_ATTRIBUTE` in `closingLayers.ts`): it takes clicks again while
23
+ * the one above animates out. Important: reka keeps `pointer-events: none`
24
+ * inline on it until the one above has unmounted.
25
+ */
26
+ export const UNCOVERED_PANEL_CLASS =
27
+ "data-[dms-uncovered]:pointer-events-auto!";