@saasicat/ui-vue 1.0.0-rc.2 → 1.0.0-rc.21

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 (309) hide show
  1. package/README.md +84 -19
  2. package/dist/.build-stamp +1 -1
  3. package/dist/assets/material-icons/material-icons.css +31 -0
  4. package/dist/assets/material-icons/web-font/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.woff +0 -0
  5. package/dist/assets/material-icons/web-font/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2 +0 -0
  6. package/dist/assets/quasar.css +11696 -0
  7. package/dist/assets/ui-vue.css +6923 -0
  8. package/dist/auth/SuperAdminLoginPage.js +213 -0
  9. package/dist/auth/SuperAdminSetupWizard.js +5 -0
  10. package/dist/{batch-column-fetcher-VwjOxerL.d.ts → batch-column-fetcher-DQ89o95K.d.cts} +5 -5
  11. package/dist/{batch-column-fetcher-Dk9X92db.d.cts → batch-column-fetcher-Sr48UWEX.d.ts} +5 -5
  12. package/dist/{catalog-C5VKGbxk.d.cts → catalog-0eZwciPW.d.cts} +125 -86
  13. package/dist/{catalog-C5VKGbxk.d.ts → catalog-0eZwciPW.d.ts} +125 -86
  14. package/dist/{chunk-L7HPDVHV.js → chunk-47HDYN35.js} +86 -7
  15. package/dist/{chunk-A7JICGQ5.js → chunk-7CHT2ATN.js} +16 -3
  16. package/dist/{chunk-P4EJF43F.js → chunk-CZIVA536.js} +358 -300
  17. package/dist/{chunk-6X6AGH66.js → chunk-RFJ4UGOE.js} +7 -4
  18. package/dist/chunk-U7LNAX6T.js +35 -0
  19. package/dist/{chunk-4CJBABLZ.js → chunk-VLGEOPZH.js} +685 -196
  20. package/dist/chunks/AdminAccordion.vue_vue_type_script_setup_true_lang-DOwlTV5_.js +175 -0
  21. package/dist/chunks/AdminBanner.vue_vue_type_script_setup_true_lang-D27JEaak.js +83 -0
  22. package/dist/chunks/AdminBody.vue_vue_type_script_setup_true_lang-DxcVRzXE.js +41 -0
  23. package/dist/chunks/AdminDialog.vue_vue_type_script_setup_true_lang-CpxfSrx-.js +138 -0
  24. package/dist/chunks/AdminEmptyState.vue_vue_type_script_setup_true_lang-jaYkgNbE.js +48 -0
  25. package/dist/chunks/AdminErrorBanner.vue_vue_type_script_setup_true_lang-t-5uqt82.js +50 -0
  26. package/dist/chunks/AdminField.vue_vue_type_script_setup_true_lang-CtPByt2w.js +63 -0
  27. package/dist/chunks/AdminFieldGrid.vue_vue_type_script_setup_true_lang-BxuyHtBU.js +21 -0
  28. package/dist/chunks/AdminFilters.vue_vue_type_script_setup_true_lang-DSnzAlwj.js +18 -0
  29. package/dist/chunks/AdminFormDialog.vue_vue_type_script_setup_true_lang-BpWshaWv.js +84 -0
  30. package/dist/chunks/AdminHero.vue_vue_type_script_setup_true_lang-CoaRxXLF.js +46 -0
  31. package/dist/chunks/AdminKpi.vue_vue_type_script_setup_true_lang-CgCcGGmY.js +79 -0
  32. package/dist/chunks/AdminPage.vue_vue_type_script_setup_true_lang-L7St_zOY.js +15 -0
  33. package/dist/chunks/AdminPaginator.vue_vue_type_script_setup_true_lang-Cv8EEBGP.js +157 -0
  34. package/dist/chunks/AdminRefreshBtn.vue_vue_type_script_setup_true_lang-Bxk5GWOB.js +41 -0
  35. package/dist/chunks/AdminSection.vue_vue_type_script_setup_true_lang-DpjApOU-.js +62 -0
  36. package/dist/chunks/AdminStatistics.vue_vue_type_script_setup_true_lang-DwHeeYCX.js +32 -0
  37. package/dist/chunks/AdminStatusPill.vue_vue_type_script_setup_true_lang-09G3rCxN.js +32 -0
  38. package/dist/chunks/AdminTable.vue_vue_type_script_setup_true_lang-BzAusc-r.js +2007 -0
  39. package/dist/chunks/ClosePopup-iyFHWknU.js +48 -0
  40. package/dist/chunks/PromoCodeEditDialog.vue_vue_type_script_setup_true_lang-NiW-Ky7H.js +639 -0
  41. package/dist/chunks/QBadge-B8LYhEVv.js +43 -0
  42. package/dist/chunks/QBtn-CSVcAwrE.js +770 -0
  43. package/dist/chunks/QCard-g0Hwqx6i.js +30 -0
  44. package/dist/chunks/QCardSection-FvPMZdQ4.js +22 -0
  45. package/dist/chunks/QCheckbox-BwxH7EyE.js +63 -0
  46. package/dist/chunks/QDialog-CcwVEueo.js +331 -0
  47. package/dist/chunks/QIcon-DaxYRLz0.js +195 -0
  48. package/dist/chunks/QInput-SRRCebo8.js +1663 -0
  49. package/dist/chunks/QItem-DunhGoPO.js +127 -0
  50. package/dist/chunks/QList-D3jMUITp.js +37 -0
  51. package/dist/chunks/QMenu-BFP-qtEm.js +831 -0
  52. package/dist/chunks/QSelect-jOvICNCy.js +1885 -0
  53. package/dist/chunks/QSeparator-CrLemO5z.js +60 -0
  54. package/dist/chunks/QSpinner-DblEBRSQ.js +57 -0
  55. package/dist/chunks/QToggle-BBogOutP.js +40 -0
  56. package/dist/chunks/QTooltip-Ch_r2hMZ.js +320 -0
  57. package/dist/chunks/SuperAdminSetupWizard-UO4j4Eyu.js +465 -0
  58. package/dist/chunks/TenantActionConfirmDialog-DU11RlmB.js +201 -0
  59. package/dist/chunks/_plugin-vue_export-helper-1tPrXgE0.js +10 -0
  60. package/dist/chunks/catalog-i18n-tKlkm6-2.js +32 -0
  61. package/dist/chunks/create-Ck-e8kVF.js +42 -0
  62. package/dist/chunks/detached-fullscreen-DuM-R9uv.js +488 -0
  63. package/dist/chunks/focus-manager-Cc4uTjsQ.js +301 -0
  64. package/dist/chunks/format-BIQKj_qk.js +23 -0
  65. package/dist/chunks/is-DNOHJAOK.js +269 -0
  66. package/dist/chunks/plan-area-context-RiY4rHni.js +20 -0
  67. package/dist/chunks/private.use-form-BdJSI6of.js +30 -0
  68. package/dist/chunks/render-DSsuXum_.js +32 -0
  69. package/dist/chunks/symbols-Cy0ehVpr.js +67 -0
  70. package/dist/chunks/touch-B8tpYG34.js +162 -0
  71. package/dist/chunks/use-checkbox-CBtmpkdc.js +221 -0
  72. package/dist/chunks/use-dark-VmDF1SYZ.js +14 -0
  73. package/dist/chunks/use-hydration-PO-eh3w4.js +14 -0
  74. package/dist/chunks/use-prevent-scroll-B9A_pIzH.js +156 -0
  75. package/dist/chunks/use-render-cache-Bj5SbY5v.js +22 -0
  76. package/dist/chunks/use-size-C7KmPm4L.js +23 -0
  77. package/dist/chunks/vm-Dl-TBfKC.js +182 -0
  78. package/dist/client/index.cjs +488 -306
  79. package/dist/client/index.d.cts +107 -7
  80. package/dist/client/index.d.ts +107 -7
  81. package/dist/client/index.js +25 -3
  82. package/dist/index.cjs +1226 -536
  83. package/dist/index.d.cts +5 -5
  84. package/dist/index.d.ts +5 -5
  85. package/dist/index.js +53 -7
  86. package/dist/layouts/AdminLayout.js +1711 -0
  87. package/dist/pages/AdminManifestErrorPage.js +99 -0
  88. package/dist/pages/AuditPage.js +244 -0
  89. package/dist/pages/BundlesPage.js +2883 -0
  90. package/dist/pages/DashboardPage.js +299 -0
  91. package/dist/pages/DiscoveryPage.js +2563 -0
  92. package/dist/pages/EmailHistoryPage.js +509 -0
  93. package/dist/pages/MarketingCatalogPage.js +2095 -0
  94. package/dist/pages/PilotsPage.js +1197 -0
  95. package/dist/pages/PlanReviewPage.js +563 -0
  96. package/dist/pages/PlanVersionEditorPage.js +1626 -0
  97. package/dist/pages/PlansPage.js +6164 -0
  98. package/dist/pages/PlatformEmailPage.js +455 -0
  99. package/dist/pages/PromoCodeDetailPage.js +240 -0
  100. package/dist/pages/PromoCodesPage.js +567 -0
  101. package/dist/pages/SettingsPage.js +216 -0
  102. package/dist/pages/SubscriptionsPage.js +113 -0
  103. package/dist/pages/TenantDetailPage.js +393 -0
  104. package/dist/pages/TenantsPage.js +430 -0
  105. package/dist/pages/UsersPage.js +386 -0
  106. package/dist/pages/index.js +75 -0
  107. package/dist/quasar/index.cjs +388 -297
  108. package/dist/quasar/index.d.cts +13 -3
  109. package/dist/quasar/index.d.ts +13 -3
  110. package/dist/quasar/index.js +10 -6
  111. package/dist/{resource-registry-CrHUvVx6.d.cts → resource-registry-GAxu2kn6.d.ts} +32 -18
  112. package/dist/{resource-registry-Cw_c0F11.d.ts → resource-registry-zfCLvEgx.d.cts} +32 -18
  113. package/dist/testing/admin-pages-suite.cjs +4 -1
  114. package/dist/testing/admin-pages-suite.d.cts +10 -1
  115. package/dist/testing/admin-pages-suite.d.ts +10 -1
  116. package/dist/testing/admin-pages-suite.js +3 -1
  117. package/dist/testing/mount-with-quasar.cjs +65 -0
  118. package/dist/testing/mount-with-quasar.d.cts +7 -0
  119. package/dist/testing/mount-with-quasar.d.ts +7 -0
  120. package/dist/testing/mount-with-quasar.js +63 -0
  121. package/dist/ui/data/AdminKpi.js +4 -0
  122. package/dist/ui/data/AdminPaginator.js +4 -0
  123. package/dist/ui/data/AdminRowActions.js +37 -0
  124. package/dist/ui/data/AdminStatistics.js +4 -0
  125. package/dist/ui/data/AdminStatusPill.js +4 -0
  126. package/dist/ui/data/AdminTable.js +4 -0
  127. package/dist/ui/data/KvBlock.js +24 -0
  128. package/dist/ui/entitlement/FeatureGate.js +25 -0
  129. package/dist/ui/feedback/AdminBanner.js +4 -0
  130. package/dist/ui/feedback/AdminEmptyState.js +4 -0
  131. package/dist/ui/feedback/AdminErrorBanner.js +4 -0
  132. package/dist/ui/feedback/AdminRefreshBtn.js +4 -0
  133. package/dist/ui/overlay/AdminConfirmDialog.js +112 -0
  134. package/dist/ui/overlay/AdminDialog.js +4 -0
  135. package/dist/ui/overlay/AdminFormDialog.js +4 -0
  136. package/dist/ui/overlay/MfaPromptDialog.js +131 -0
  137. package/dist/ui/page/AdminAccordion.js +4 -0
  138. package/dist/ui/page/AdminBody.js +4 -0
  139. package/dist/ui/page/AdminField.js +4 -0
  140. package/dist/ui/page/AdminFieldGrid.js +4 -0
  141. package/dist/ui/page/AdminFilters.js +4 -0
  142. package/dist/ui/page/AdminHero.js +4 -0
  143. package/dist/ui/page/AdminPage.js +4 -0
  144. package/dist/ui/page/AdminSection.js +4 -0
  145. package/dist/ui/page/AdminToolbar.js +35 -0
  146. package/dist/ui/page/LocaleSwitcher.js +90 -0
  147. package/dist/ui/page/ThemeSwitcher.js +95 -0
  148. package/dist/ui/page/WizardStepper.js +55 -0
  149. package/dist/vue/index.cjs +1135 -524
  150. package/dist/vue/index.d.cts +520 -44
  151. package/dist/vue/index.d.ts +520 -44
  152. package/dist/vue/index.js +30 -6
  153. package/package.json +30 -15
  154. package/src/auth/SuperAdminLoginPage.vue +16 -16
  155. package/src/auth/SuperAdminSetupWizard.vue +33 -28
  156. package/src/client/admin-resource-client.ts +23 -8
  157. package/src/client/billing-area.ts +14 -0
  158. package/src/client/brand-bridge.ts +98 -0
  159. package/src/client/http/axios-http-client.ts +4 -3
  160. package/src/client/http-json.ts +16 -3
  161. package/src/client/i18n/messages/audit.ts +1 -0
  162. package/src/client/i18n/messages/bundles.ts +17 -4
  163. package/src/client/i18n/messages/common.ts +1 -0
  164. package/src/client/i18n/messages/dashboard.ts +1 -0
  165. package/src/client/i18n/messages/discovery.ts +10 -19
  166. package/src/client/i18n/messages/email.ts +1 -0
  167. package/src/client/i18n/messages/errors.ts +1 -0
  168. package/src/client/i18n/messages/marketing.ts +7 -2
  169. package/src/client/i18n/messages/nav.ts +3 -0
  170. package/src/client/i18n/messages/pilots.ts +1 -0
  171. package/src/client/i18n/messages/plan-detail.ts +1 -0
  172. package/src/client/i18n/messages/plan-editor.ts +1 -0
  173. package/src/client/i18n/messages/plan-versions.ts +3 -4
  174. package/src/client/i18n/messages/plans.ts +9 -4
  175. package/src/client/i18n/messages/promos.ts +3 -0
  176. package/src/client/i18n/messages/settings.ts +75 -0
  177. package/src/client/i18n/messages/shell.ts +1 -0
  178. package/src/client/i18n/messages/tenants.ts +1 -0
  179. package/src/client/i18n/messages/users.ts +1 -0
  180. package/src/client/i18n/messages.ts +3 -0
  181. package/src/client/index.ts +10 -0
  182. package/src/client/mfa-header.ts +14 -0
  183. package/src/client/nav-builder.ts +7 -4
  184. package/src/client/reorder-priorities.ts +76 -0
  185. package/src/client/resources/bundles.resource.ts +24 -38
  186. package/src/client/resources/catalog.resource.ts +91 -113
  187. package/src/client/resources/define-resource.ts +2 -75
  188. package/src/client/resources/index.ts +3 -0
  189. package/src/client/resources/marketing.resource.ts +77 -80
  190. package/src/client/resources/pilots.resource.ts +1 -11
  191. package/src/client/resources/plans.resource.ts +47 -64
  192. package/src/client/resources/platform-email.resource.ts +1 -11
  193. package/src/client/resources/promotions.resource.ts +18 -25
  194. package/src/client/resources/settings.resource.ts +68 -0
  195. package/src/client/resources/tenants.resource.ts +10 -4
  196. package/src/client/resources/users.resource.ts +3 -2
  197. package/src/client/settings-view.ts +50 -0
  198. package/src/client/version-change-fields.ts +17 -0
  199. package/src/features/bundle/BundleVersionInlineEditor.vue +112 -155
  200. package/src/features/bundle/BundleVersionPublishDialog.vue +34 -16
  201. package/src/features/bundle/BundleVersionStrip.vue +25 -31
  202. package/src/features/bundle/VersionDiffPreview.vue +21 -15
  203. package/src/features/bundle/internal/BundleCreatePanel.vue +65 -119
  204. package/src/features/bundle/internal/BundleFeaturesEditor.vue +18 -31
  205. package/src/features/bundle/internal/BundlePlanCompatPicker.vue +23 -29
  206. package/src/features/bundle/internal/BundleQuotasEditor.vue +20 -41
  207. package/src/features/bundle/internal/BundleStatusBanner.vue +16 -70
  208. package/src/features/marketing/MarketingPromotionsTab.vue +155 -122
  209. package/src/features/plan/PlanCreateDialog.vue +49 -129
  210. package/src/features/plan/PlanDetail.vue +57 -76
  211. package/src/features/plan/PlanList.vue +81 -156
  212. package/src/features/plan/PlanMatrix.vue +89 -158
  213. package/src/features/plan/PlanReview.vue +62 -80
  214. package/src/features/plan/PlanVersionEditor.vue +134 -238
  215. package/src/features/plan/internal/PlanCatalogPreview.vue +22 -68
  216. package/src/features/plan/internal/PlanComponentPool.vue +18 -88
  217. package/src/features/plan/internal/PlanTitleEdit.vue +12 -9
  218. package/src/features/plan/internal/PlanVersionBasket.vue +65 -89
  219. package/src/features/plan/internal/PlanVersionEditorHeader.vue +16 -20
  220. package/src/features/plan/internal/PlanVersionsPanel.vue +29 -75
  221. package/src/features/tenant/TenantActionConfirmDialog.vue +4 -4
  222. package/src/index.ts +9 -0
  223. package/src/internal/bundles-page/BundleAccordionList.vue +32 -2
  224. package/src/internal/bundles-page/BundleDetailPanel.vue +37 -21
  225. package/src/internal/bundles-page/BundlesToolbar.vue +9 -5
  226. package/src/internal/dialogs/PilotCreateDialog.vue +65 -104
  227. package/src/internal/dialogs/PilotEditDialog.vue +22 -23
  228. package/src/internal/dialogs/PromoCodeCreateDialog.vue +27 -23
  229. package/src/internal/dialogs/PromoCodeDialogFields.vue +203 -252
  230. package/src/internal/dialogs/PromoCodeEditDialog.vue +52 -48
  231. package/src/internal/dialogs/pilot-dialog.css +16 -111
  232. package/src/internal/discovery-page/CatalogEntryTransPanel.vue +18 -18
  233. package/src/internal/discovery-page/DiscoveryCapList.vue +20 -20
  234. package/src/internal/discovery-page/DiscoveryFeatureCard.vue +20 -20
  235. package/src/internal/discovery-page/DiscoveryQuotaCard.vue +10 -10
  236. package/src/internal/discovery-page/DiscoveryStatusControl.vue +1 -1
  237. package/src/internal/marketing-catalog-page/MarketingCatalogAdmin.vue +660 -0
  238. package/src/internal/{marketing-catalog → marketing-catalog-page}/MarketingCatalogHeader.vue +21 -16
  239. package/src/internal/{marketing-catalog → marketing-catalog-page}/MarketingCatalogPreview.vue +26 -13
  240. package/src/internal/{marketing-catalog → marketing-catalog-page}/MarketingCatalogToolbar.vue +14 -10
  241. package/src/internal/plan-versions/PlanDiffCard.vue +15 -15
  242. package/src/internal/plan-versions/PlanVersionsDiff.vue +11 -11
  243. package/src/internal/plan-versions/PlanVersionsTimeline.vue +35 -31
  244. package/src/internal/plans-page/PlanBundleOverview.vue +8 -8
  245. package/src/internal/plans-page/PlanPublishDialog.vue +2 -2
  246. package/src/internal/tenant-detail/TenantUsage.vue +3 -3
  247. package/src/internal/tenant-detail/types.ts +2 -2
  248. package/src/layouts/AdminLayout.vue +22 -22
  249. package/src/pages/AdminManifestErrorPage.vue +7 -7
  250. package/src/pages/AuditPage.vue +2 -2
  251. package/src/pages/BundlesPage.vue +81 -89
  252. package/src/pages/DashboardPage.vue +106 -97
  253. package/src/pages/DiscoveryPage.vue +22 -28
  254. package/src/pages/EmailHistoryPage.vue +26 -34
  255. package/src/pages/MarketingCatalogPage.vue +289 -281
  256. package/src/pages/PilotsPage.vue +22 -35
  257. package/src/pages/PlanVersionEditorPage.vue +1 -1
  258. package/src/pages/PlansPage.vue +181 -107
  259. package/src/pages/PlatformEmailPage.vue +33 -41
  260. package/src/pages/PromoCodeDetailPage.vue +12 -18
  261. package/src/pages/PromoCodesPage.vue +36 -14
  262. package/src/pages/SettingsPage.vue +226 -0
  263. package/src/pages/TenantDetailPage.vue +28 -53
  264. package/src/pages/TenantsPage.vue +7 -7
  265. package/src/pages/UsersPage.vue +7 -20
  266. package/src/pages/index.ts +3 -1
  267. package/src/quasar/create-super-admin-app.ts +13 -2
  268. package/src/quasar/dark-bridge.ts +8 -4
  269. package/src/quasar/index.ts +11 -0
  270. package/src/testing/admin-pages-suite.ts +11 -1
  271. package/src/testing/mount-with-quasar.ts +73 -0
  272. package/src/ui/data/AdminPaginator.vue +30 -20
  273. package/src/ui/data/KvBlock.vue +4 -4
  274. package/src/ui/entitlement/FeatureGate.vue +2 -2
  275. package/src/ui/feedback/AdminRefreshBtn.vue +10 -7
  276. package/src/ui/overlay/MfaPromptDialog.vue +5 -6
  277. package/src/ui/page/AdminAccordion.vue +27 -10
  278. package/src/ui/page/WizardStepper.vue +7 -18
  279. package/src/ui/theme/base.css +31 -0
  280. package/src/ui/theme/components/accordion.css +9 -9
  281. package/src/ui/theme/components/button.css +10 -68
  282. package/src/ui/theme/components/card.css +0 -8
  283. package/src/ui/theme/components/paginator.css +14 -28
  284. package/src/ui/theme/tokens.semantic.dark.css +13 -0
  285. package/src/ui/theme/tokens.semantic.light.css +39 -0
  286. package/src/vue/index.ts +9 -0
  287. package/src/vue/platform-loaders.ts +1 -3
  288. package/src/vue/resource-registry.ts +0 -8
  289. package/src/vue/super-admin-context.ts +14 -15
  290. package/src/vue/use-applied-settings.ts +79 -0
  291. package/src/vue/use-bulk-publish.ts +2 -5
  292. package/src/vue/use-bundles.ts +6 -10
  293. package/src/vue/use-catalog-entries.ts +9 -16
  294. package/src/vue/use-dialog.ts +221 -0
  295. package/src/vue/use-marketing-projections.ts +5 -6
  296. package/src/vue/use-mfa-prompt.ts +61 -11
  297. package/src/vue/use-plans.ts +28 -21
  298. package/src/vue/use-promotions.ts +1 -7
  299. package/src/vue/use-row-reorder.ts +109 -0
  300. package/src/vue/use-sa-theme.ts +31 -0
  301. package/src/vue/use-steps.ts +109 -0
  302. package/src/vue/use-subscription-draft.ts +63 -60
  303. package/src/vue/use-tenant-billing-details.ts +119 -0
  304. package/src/vue/use-tenant-billing.ts +250 -33
  305. package/src/vue/use-tenant-payment-method.ts +112 -0
  306. package/src/vue/use-tenant-subscription-bundles.ts +8 -0
  307. package/src/internal/marketing-catalog/MarketingCatalogAdmin.vue +0 -553
  308. package/src/internal/plans-page/PlansPageToast.vue +0 -69
  309. /package/src/internal/{marketing-catalog → marketing-catalog-page}/types.ts +0 -0
@@ -186,8 +186,6 @@ interface PilotEditResult {
186
186
  interface ResourceContext {
187
187
  /** Admin API root, e.g. `/api/v1/admin`. No trailing slash. */
188
188
  readonly apiBase: string;
189
- /** The project whose catalogue is being administered. */
190
- readonly projectKey: string;
191
189
  /** Active UI locale, for the operations whose payload is per-language. */
192
190
  readonly locale: string;
193
191
  }
@@ -199,25 +197,6 @@ interface ResourceDef<TOps extends ResourceOps> {
199
197
  /** Name this resource is registered and overridden under. */
200
198
  readonly key: string;
201
199
  readonly ops: TOps;
202
- /**
203
- * Whether these operations read `ctx.projectKey`.
204
- *
205
- * Declared per descriptor rather than known centrally, because it is not a
206
- * property of the registry: one of the four platform resources is
207
- * project-scoped and three are not, and the tenant list would be refused
208
- * for a project it never asks about. `bindResource` refuses to bind a
209
- * descriptor that declares this against a context that names no project.
210
- *
211
- * `resources-declare-their-project-scope.test.js` drives every operation
212
- * and fails when a declaration and what the operations actually read
213
- * disagree — in either direction.
214
- */
215
- readonly projectScoped: boolean;
216
- }
217
- /** What a descriptor declares beyond its name and its operations. */
218
- interface DefineResourceOptions {
219
- /** See `ResourceDef.projectScoped`. Default `false`. */
220
- projectScoped?: boolean;
221
200
  }
222
201
  /**
223
202
  * The same operations with `(http, ctx)` already supplied — the form a page or
@@ -233,7 +212,7 @@ type Bound<TOps extends ResourceOps> = {
233
212
  * add behaviour. Anything it did at definition time would be a thing an
234
213
  * override could not replace.
235
214
  */
236
- declare function defineResource<const TOps extends ResourceOps>(key: string, ops: TOps, options?: DefineResourceOptions): ResourceDef<TOps>;
215
+ declare function defineResource<const TOps extends ResourceOps>(key: string, ops: TOps): ResourceDef<TOps>;
237
216
  /**
238
217
  * Supplies `(http, ctx)` once and hands back the callable operations.
239
218
  *
@@ -243,6 +222,45 @@ declare function defineResource<const TOps extends ResourceOps>(key: string, ops
243
222
  */
244
223
  declare function bindResource<TOps extends ResourceOps>(def: ResourceDef<TOps>, http: HttpClient, ctx: ResourceContext | (() => ResourceContext)): Bound<TOps>;
245
224
 
225
+ /**
226
+ * One leaf that differs between two starts, as the server names it.
227
+ *
228
+ * A type alias rather than an interface on purpose: the rows go straight into
229
+ * `AdminTable`, whose rows are `Record<string, unknown>`, and only an alias
230
+ * carries the implicit index signature that makes it one.
231
+ */
232
+ type SettingsDifferenceView = {
233
+ /** Dotted path, as the loader names a field: `tenantBilling.cancellationNoticeDays.monthly`. */
234
+ path: string;
235
+ /** Absent where the leaf did not exist on that side. */
236
+ before?: unknown;
237
+ after?: unknown;
238
+ };
239
+ interface SettingsChangeView {
240
+ id: string;
241
+ noticedAt: string;
242
+ source: string;
243
+ differences: SettingsDifferenceView[];
244
+ acknowledgedAt: string | null;
245
+ acknowledgedBy: string | null;
246
+ }
247
+ interface AppliedSettingsView {
248
+ /** Where the running settings came from: a file path, or a phrase saying they came in as code. */
249
+ source: string;
250
+ fingerprint: string;
251
+ settings: Record<string, unknown>;
252
+ /** Whether this installation keeps a record at all. */
253
+ recorded: boolean;
254
+ /** When these values became the running configuration; null where nothing is recorded. */
255
+ appliedAt: string | null;
256
+ /** Newest first. */
257
+ changes: SettingsChangeView[];
258
+ }
259
+ declare const settingsResource: ResourceDef<{
260
+ readonly read: (http: HttpClient, ctx: ResourceContext) => Promise<AppliedSettingsView>;
261
+ readonly acknowledgeChange: (http: HttpClient, ctx: ResourceContext, id: string) => Promise<SettingsChangeView>;
262
+ }>;
263
+
246
264
  /**
247
265
  * What the audit list can be narrowed by — the controller's query parameters.
248
266
  *
@@ -364,10 +382,11 @@ declare const tenantsResource: ResourceDef<{
364
382
  readonly detail: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<AdminTenantDetail | null>;
365
383
  /**
366
384
  * Suspends a tenant. The reason is recorded on the audit trail, so it is a
367
- * required argument rather than an option with a default.
385
+ * required argument rather than an option with a default. Suspending and
386
+ * reactivating both require the second factor.
368
387
  */
369
- readonly suspend: (http: HttpClient, ctx: ResourceContext, slug: string, reason: string) => Promise<void>;
370
- readonly reactivate: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<void>;
388
+ readonly suspend: (http: HttpClient, ctx: ResourceContext, slug: string, reason: string, mfaCode?: string) => Promise<void>;
389
+ readonly reactivate: (http: HttpClient, ctx: ResourceContext, slug: string, mfaCode?: string) => Promise<void>;
371
390
  }>;
372
391
 
373
392
  /** What the promo list can be narrowed by, including its "all" state. */
@@ -412,12 +431,7 @@ declare const promoCodesResource: ResourceDef<{
412
431
  readonly remove: (http: HttpClient, ctx: ResourceContext, id: string) => Promise<void>;
413
432
  }>;
414
433
 
415
- /**
416
- * What the projection list can be narrowed by, beyond the bound project.
417
- *
418
- * `projectKey` is deliberately absent: it comes from the context, so a page
419
- * cannot list one project's projections while creating in another.
420
- */
434
+ /** What the projection list can be narrowed by. */
421
435
  interface MarketingProjectionsFilter {
422
436
  targetType?: string;
423
437
  targetVersionId?: string;
@@ -515,18 +529,10 @@ interface PublishBundleVersionOptions {
515
529
  validFrom?: string | null;
516
530
  validUntil?: string | null;
517
531
  }
518
- /**
519
- * The bundle catalogue — read per project, like the plan catalogue.
520
- *
521
- * `create` takes the project from the context rather than from the caller, for
522
- * the reason spelled out on `plansResource.create`: the composable this
523
- * replaces made it the caller's job, so `list()` and `create()` read two
524
- * different sources for one value and a stale one creates a bundle outside the
525
- * project the list is showing.
526
- */
532
+ /** The bundle catalogue: the stem list and the stem CRUD. */
527
533
  declare const bundlesResource: ResourceDef<{
528
534
  readonly list: (http: HttpClient, ctx: ResourceContext) => Promise<BundleRow[]>;
529
- readonly create: (http: HttpClient, ctx: ResourceContext, data: Omit<CreateBundleData, "projectKey">) => Promise<BundleRow>;
535
+ readonly create: (http: HttpClient, ctx: ResourceContext, data: CreateBundleData) => Promise<BundleRow>;
530
536
  readonly update: (http: HttpClient, ctx: ResourceContext, bundleId: string, data: UpdateBundleData) => Promise<BundleRow>;
531
537
  /** Marks the bundle deleted. */
532
538
  readonly softDelete: (http: HttpClient, ctx: ResourceContext, bundleId: string) => Promise<void>;
@@ -545,7 +551,8 @@ declare const bundleVersionsResource: ResourceDef<{
545
551
  readonly listForBundle: (http: HttpClient, ctx: ResourceContext, bundleId: string) => Promise<BundleVersionRow[]>;
546
552
  readonly createDraft: (http: HttpClient, ctx: ResourceContext, bundleId: string, data: Omit<CreateBundleVersionDraftData, "bundleId">) => Promise<BundleVersionMutationResult>;
547
553
  readonly updateDraft: (http: HttpClient, ctx: ResourceContext, versionId: string, data: UpdateBundleVersionDraftData) => Promise<BundleVersionMutationResult>;
548
- readonly publish: (http: HttpClient, ctx: ResourceContext, versionId: string, options?: PublishBundleVersionOptions) => Promise<BundleVersionMutationResult>;
554
+ /** Puts a draft live. The route requires the second factor. */
555
+ readonly publish: (http: HttpClient, ctx: ResourceContext, versionId: string, options?: PublishBundleVersionOptions, mfaCode?: string) => Promise<BundleVersionMutationResult>;
549
556
  /**
550
557
  * Discards a draft. A published version cannot be discarded — the API
551
558
  * answers 422 `BUNDLE_VERSION_ALREADY_PUBLISHED`.
@@ -560,38 +567,26 @@ interface PublishPlanVersionOptions {
560
567
  validFrom?: string | null;
561
568
  validUntil?: string | null;
562
569
  }
563
- /**
564
- * The plan catalogue — the one platform resource that is read per project.
565
- *
566
- * `list`, `tenantCounts` and `create` all carry `ctx.projectKey`, so binding
567
- * this against a context that names no project is refused rather than sent (see
568
- * `bindResource`). Its three siblings address a plan or a version by id and are
569
- * not declared here.
570
- */
570
+ /** The plan catalogue: the stem list, its tenant counts, and the stem CRUD. */
571
571
  declare const plansResource: ResourceDef<{
572
572
  readonly list: (http: HttpClient, ctx: ResourceContext) => Promise<PlanRow[]>;
573
573
  readonly tenantCounts: (http: HttpClient, ctx: ResourceContext) => Promise<Record<string, number>>;
574
- /**
575
- * The project comes from the context, not from the caller.
576
- *
577
- * The endpoint takes it in the body, and the composable this replaces
578
- * made that the caller's job — so a page had to keep hold of the
579
- * project it was administering just to create in it, and `list()` and
580
- * `create()` read two different sources for one value. A stale one
581
- * creates a plan outside the project the list is showing.
582
- */
583
- readonly create: (http: HttpClient, ctx: ResourceContext, data: Omit<CreatePlanData, "projectKey">) => Promise<PlanRow>;
574
+ readonly create: (http: HttpClient, ctx: ResourceContext, data: CreatePlanData) => Promise<PlanRow>;
584
575
  readonly update: (http: HttpClient, ctx: ResourceContext, planId: string, data: UpdatePlanData) => Promise<PlanRow>;
585
576
  /** Marks the plan deleted. Fails while it still has versions. */
586
577
  readonly softDelete: (http: HttpClient, ctx: ResourceContext, planId: string) => Promise<void>;
587
- /** Removes the plan for good. 422 `PLAN_HAS_VERSIONS` when it cannot. */
588
- readonly hardDelete: (http: HttpClient, ctx: ResourceContext, planId: string) => Promise<void>;
578
+ /**
579
+ * Removes the plan for good. 422 `PLAN_HAS_VERSIONS` when it cannot. The
580
+ * route requires the second factor.
581
+ */
582
+ readonly hardDelete: (http: HttpClient, ctx: ResourceContext, planId: string, mfaCode?: string) => Promise<void>;
589
583
  }>;
590
584
  declare const planVersionsResource: ResourceDef<{
591
585
  readonly listForPlan: (http: HttpClient, ctx: ResourceContext, planId: string) => Promise<PlanVersionRow[]>;
592
586
  readonly createDraft: (http: HttpClient, ctx: ResourceContext, planId: string, data: Omit<CreatePlanVersionDraftData, "planId">) => Promise<PlanVersionMutationResult>;
593
587
  readonly updateDraft: (http: HttpClient, ctx: ResourceContext, versionId: string, data: UpdatePlanVersionDraftData) => Promise<PlanVersionMutationResult>;
594
- readonly publish: (http: HttpClient, ctx: ResourceContext, versionId: string, options?: PublishPlanVersionOptions) => Promise<PlanVersionMutationResult>;
588
+ /** Puts a draft live. The route requires the second factor. */
589
+ readonly publish: (http: HttpClient, ctx: ResourceContext, versionId: string, options?: PublishPlanVersionOptions, mfaCode?: string) => Promise<PlanVersionMutationResult>;
595
590
  readonly discardDraft: (http: HttpClient, ctx: ResourceContext, versionId: string) => Promise<void>;
596
591
  /**
597
592
  * Ends a live version on `endsAt`, with no successor. Idempotent — a
@@ -599,8 +594,9 @@ declare const planVersionsResource: ResourceDef<{
599
594
  *
600
595
  * `endsAt` is the date itself, not a payload: the endpoint's body is
601
596
  * `{ endsAt }` and wrapping it is this operation's job, not the caller's.
597
+ * The route requires the second factor.
602
598
  */
603
- readonly terminate: (http: HttpClient, ctx: ResourceContext, versionId: string, endsAt: string) => Promise<PlanVersionRow>;
599
+ readonly terminate: (http: HttpClient, ctx: ResourceContext, versionId: string, endsAt: string, mfaCode?: string) => Promise<PlanVersionRow>;
604
600
  }>;
605
601
 
606
602
  /**
@@ -614,22 +610,22 @@ declare const platformResources: {
614
610
  plans: ResourceDef<{
615
611
  readonly list: (http: HttpClient, ctx: ResourceContext) => Promise<_saasicat_core.PlanRow[]>;
616
612
  readonly tenantCounts: (http: HttpClient, ctx: ResourceContext) => Promise<Record<string, number>>;
617
- readonly create: (http: HttpClient, ctx: ResourceContext, data: Omit<_saasicat_core.CreatePlanData, "projectKey">) => Promise<_saasicat_core.PlanRow>;
613
+ readonly create: (http: HttpClient, ctx: ResourceContext, data: _saasicat_core.CreatePlanData) => Promise<_saasicat_core.PlanRow>;
618
614
  readonly update: (http: HttpClient, ctx: ResourceContext, planId: string, data: _saasicat_core.UpdatePlanData) => Promise<_saasicat_core.PlanRow>;
619
615
  readonly softDelete: (http: HttpClient, ctx: ResourceContext, planId: string) => Promise<void>;
620
- readonly hardDelete: (http: HttpClient, ctx: ResourceContext, planId: string) => Promise<void>;
616
+ readonly hardDelete: (http: HttpClient, ctx: ResourceContext, planId: string, mfaCode?: string) => Promise<void>;
621
617
  }>;
622
618
  planVersions: ResourceDef<{
623
619
  readonly listForPlan: (http: HttpClient, ctx: ResourceContext, planId: string) => Promise<_saasicat_core.PlanVersionRow[]>;
624
620
  readonly createDraft: (http: HttpClient, ctx: ResourceContext, planId: string, data: Omit<_saasicat_core.CreatePlanVersionDraftData, "planId">) => Promise<_saasicat_core.PlanVersionMutationResult>;
625
621
  readonly updateDraft: (http: HttpClient, ctx: ResourceContext, versionId: string, data: _saasicat_core.UpdatePlanVersionDraftData) => Promise<_saasicat_core.PlanVersionMutationResult>;
626
- readonly publish: (http: HttpClient, ctx: ResourceContext, versionId: string, options?: PublishPlanVersionOptions) => Promise<_saasicat_core.PlanVersionMutationResult>;
622
+ readonly publish: (http: HttpClient, ctx: ResourceContext, versionId: string, options?: PublishPlanVersionOptions, mfaCode?: string) => Promise<_saasicat_core.PlanVersionMutationResult>;
627
623
  readonly discardDraft: (http: HttpClient, ctx: ResourceContext, versionId: string) => Promise<void>;
628
- readonly terminate: (http: HttpClient, ctx: ResourceContext, versionId: string, endsAt: string) => Promise<_saasicat_core.PlanVersionRow>;
624
+ readonly terminate: (http: HttpClient, ctx: ResourceContext, versionId: string, endsAt: string, mfaCode?: string) => Promise<_saasicat_core.PlanVersionRow>;
629
625
  }>;
630
626
  bundles: ResourceDef<{
631
627
  readonly list: (http: HttpClient, ctx: ResourceContext) => Promise<_saasicat_core.BundleRow[]>;
632
- readonly create: (http: HttpClient, ctx: ResourceContext, data: Omit<_saasicat_core.CreateBundleData, "projectKey">) => Promise<_saasicat_core.BundleRow>;
628
+ readonly create: (http: HttpClient, ctx: ResourceContext, data: _saasicat_core.CreateBundleData) => Promise<_saasicat_core.BundleRow>;
633
629
  readonly update: (http: HttpClient, ctx: ResourceContext, bundleId: string, data: _saasicat_core.UpdateBundleData) => Promise<_saasicat_core.BundleRow>;
634
630
  readonly softDelete: (http: HttpClient, ctx: ResourceContext, bundleId: string) => Promise<void>;
635
631
  }>;
@@ -637,7 +633,7 @@ declare const platformResources: {
637
633
  readonly listForBundle: (http: HttpClient, ctx: ResourceContext, bundleId: string) => Promise<_saasicat_core.BundleVersionRow[]>;
638
634
  readonly createDraft: (http: HttpClient, ctx: ResourceContext, bundleId: string, data: Omit<_saasicat_core.CreateBundleVersionDraftData, "bundleId">) => Promise<_saasicat_core.BundleVersionMutationResult>;
639
635
  readonly updateDraft: (http: HttpClient, ctx: ResourceContext, versionId: string, data: _saasicat_core.UpdateBundleVersionDraftData) => Promise<_saasicat_core.BundleVersionMutationResult>;
640
- readonly publish: (http: HttpClient, ctx: ResourceContext, versionId: string, options?: PublishBundleVersionOptions) => Promise<_saasicat_core.BundleVersionMutationResult>;
636
+ readonly publish: (http: HttpClient, ctx: ResourceContext, versionId: string, options?: PublishBundleVersionOptions, mfaCode?: string) => Promise<_saasicat_core.BundleVersionMutationResult>;
641
637
  readonly discardDraft: (http: HttpClient, ctx: ResourceContext, versionId: string) => Promise<void>;
642
638
  }>;
643
639
  catalog: ResourceDef<{
@@ -686,8 +682,8 @@ declare const platformResources: {
686
682
  tenants: ResourceDef<{
687
683
  readonly list: ListOp<_saasicat_core.TenantDto, TenantsListFilter>;
688
684
  readonly detail: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<_saasicat_core.AdminTenantDetail | null>;
689
- readonly suspend: (http: HttpClient, ctx: ResourceContext, slug: string, reason: string) => Promise<void>;
690
- readonly reactivate: (http: HttpClient, ctx: ResourceContext, slug: string) => Promise<void>;
685
+ readonly suspend: (http: HttpClient, ctx: ResourceContext, slug: string, reason: string, mfaCode?: string) => Promise<void>;
686
+ readonly reactivate: (http: HttpClient, ctx: ResourceContext, slug: string, mfaCode?: string) => Promise<void>;
691
687
  }>;
692
688
  users: ResourceDef<{
693
689
  readonly list: (http: HttpClient, ctx: ResourceContext, filter?: _saasicat_core.AdminUserListFilter) => Promise<_saasicat_core.AdminUserListRow[]>;
@@ -702,6 +698,10 @@ declare const platformResources: {
702
698
  audit: ResourceDef<{
703
699
  readonly list: (http: HttpClient, ctx: ResourceContext, filter?: AuditListFilter) => Promise<_saasicat_core.AuditEntry[]>;
704
700
  }>;
701
+ settings: ResourceDef<{
702
+ readonly read: (http: HttpClient, ctx: ResourceContext) => Promise<AppliedSettingsView>;
703
+ readonly acknowledgeChange: (http: HttpClient, ctx: ResourceContext, id: string) => Promise<SettingsChangeView>;
704
+ }>;
705
705
  pilots: ResourceDef<{
706
706
  readonly list: (http: HttpClient, ctx: ResourceContext) => Promise<PilotRow[]>;
707
707
  readonly reviewSoon: (http: HttpClient, ctx: ResourceContext) => Promise<PilotRow[]>;
@@ -829,7 +829,9 @@ declare const bundlesMessages: Record<SaBuiltinLocale, {
829
829
  emptyBefore: string;
830
830
  emptyAfter: string;
831
831
  strictWarnings: string;
832
+ confirmSoftDeleteTitle: string;
832
833
  confirmSoftDelete: string;
834
+ confirmDiscardVersionTitle: string;
833
835
  confirmDiscardVersion: string;
834
836
  };
835
837
  header: {
@@ -892,6 +894,7 @@ declare const bundlesMessages: Record<SaBuiltinLocale, {
892
894
  save: string;
893
895
  noVersion: string;
894
896
  publishVersion: string;
897
+ unsavedChanges: string;
895
898
  softDelete: string;
896
899
  };
897
900
  create: {
@@ -962,6 +965,7 @@ declare const bundlesMessages: Record<SaBuiltinLocale, {
962
965
  changeNotePlaceholder: string;
963
966
  selectedCount: string;
964
967
  saveTooltip: string;
968
+ saveVersion: string;
965
969
  saveDisabledTooltip: string;
966
970
  };
967
971
  featuresEditor: {
@@ -1006,6 +1010,7 @@ declare const bundlesMessages: Record<SaBuiltinLocale, {
1006
1010
  forceRegressive: string;
1007
1011
  confirm: string;
1008
1012
  confirmRegressive: string;
1013
+ mfaDescription: string;
1009
1014
  };
1010
1015
  }>;
1011
1016
 
@@ -1122,7 +1127,11 @@ declare const discoveryMessages: Record<SaBuiltinLocale, {
1122
1127
  reapproveEmphasis: string;
1123
1128
  capList: {
1124
1129
  orphanFeature: string;
1130
+ flagNew: string;
1131
+ flagExperimental: string;
1132
+ flagDeprecated: string;
1125
1133
  removedFromCode: string;
1134
+ implementedAt: string;
1126
1135
  };
1127
1136
  kpi: {
1128
1137
  featuresTotal: string;
@@ -1182,14 +1191,6 @@ declare const discoveryMessages: Record<SaBuiltinLocale, {
1182
1191
  noUsageProviderWarning: string;
1183
1192
  outdatedBanner: string;
1184
1193
  };
1185
- caps: {
1186
- emptyHint: string;
1187
- flagNew: string;
1188
- flagExperimental: string;
1189
- flagDeprecated: string;
1190
- flagRemoved: string;
1191
- implementedAt: string;
1192
- };
1193
1194
  trans: {
1194
1195
  sourceBadge: string;
1195
1196
  fieldLabel: string;
@@ -1320,8 +1321,10 @@ declare const marketingMessages: Record<SaBuiltinLocale, {
1320
1321
  colPlan: string;
1321
1322
  colVisible: string;
1322
1323
  colBadge: string;
1323
- colPriority: string;
1324
+ colOrder: string;
1324
1325
  colHighlight: string;
1326
+ reorderLabel: string;
1327
+ reorderTitle: string;
1325
1328
  versionTabsLabel: string;
1326
1329
  versionTitle: string;
1327
1330
  versionValidFromUnknown: string;
@@ -1748,8 +1751,7 @@ declare const planVersionsMessages: Record<SaBuiltinLocale, {
1748
1751
  diffFields: {
1749
1752
  featuresAdded: string;
1750
1753
  featuresRemoved: string;
1751
- maxUsers: string;
1752
- maxStorageGb: string;
1754
+ quota: string;
1753
1755
  monthlyNet: string;
1754
1756
  yearlyNet: string;
1755
1757
  unitSize: string;
@@ -1779,6 +1781,9 @@ declare const plansMessages: Record<SaBuiltinLocale, {
1779
1781
  toastPlanDeleted: string;
1780
1782
  toastDraftDiscarded: string;
1781
1783
  toastVersionTerminated: string;
1784
+ mfaPublish: string;
1785
+ mfaTerminate: string;
1786
+ mfaPurge: string;
1782
1787
  errorSessionExpiredSave: string;
1783
1788
  errorStrictMode: string;
1784
1789
  errorStrictModeFallback: string;
@@ -1809,8 +1814,7 @@ declare const plansMessages: Record<SaBuiltinLocale, {
1809
1814
  yearlyNet: string;
1810
1815
  featuresRemoved: string;
1811
1816
  featuresAdded: string;
1812
- quotasLowered: string;
1813
- quotasRaised: string;
1817
+ quota: string;
1814
1818
  bundlesRemoved: string;
1815
1819
  bundlesAdded: string;
1816
1820
  };
@@ -2004,6 +2008,7 @@ declare const promosMessages: Record<SaBuiltinLocale, {
2004
2008
  columnCode: string;
2005
2009
  columnValue: string;
2006
2010
  columnRedemptions: string;
2011
+ redemptionsHeld: string;
2007
2012
  columnCampaign: string;
2008
2013
  columnValidUntil: string;
2009
2014
  actionPause: string;
@@ -2090,6 +2095,39 @@ declare const promosMessages: Record<SaBuiltinLocale, {
2090
2095
  };
2091
2096
  }>;
2092
2097
 
2098
+ declare const settingsMessages: Record<SaBuiltinLocale, {
2099
+ title: string;
2100
+ subtitle: string;
2101
+ applied: {
2102
+ title: string;
2103
+ appliedAt: string;
2104
+ source: string;
2105
+ fingerprint: string;
2106
+ notRecorded: string;
2107
+ recordStale: string;
2108
+ readOnly: string;
2109
+ };
2110
+ changes: {
2111
+ title: string;
2112
+ empty: string;
2113
+ noticedAt: string;
2114
+ leaf: string;
2115
+ before: string;
2116
+ after: string;
2117
+ absent: string;
2118
+ acknowledge: string;
2119
+ acknowledgedBy: string;
2120
+ open: string;
2121
+ acknowledged: string;
2122
+ };
2123
+ values: {
2124
+ title: string;
2125
+ value: string;
2126
+ };
2127
+ loadFailed: string;
2128
+ acknowledgeFailed: string;
2129
+ }>;
2130
+
2093
2131
  declare const shellMessages: Record<SaBuiltinLocale, {
2094
2132
  emailLabel: string;
2095
2133
  passwordLabel: string;
@@ -2272,6 +2310,7 @@ type SaMessages = {
2272
2310
  readonly promos: (typeof promosMessages)['de'];
2273
2311
  readonly pilots: (typeof pilotsMessages)['de'];
2274
2312
  readonly email: (typeof emailMessages)['de'];
2313
+ readonly settings: (typeof settingsMessages)['de'];
2275
2314
  };
2276
2315
  /** Shape of app-side string overrides (deep partial of the catalog). */
2277
2316
  type SaMessagesOverrides = PartialMessages<SaMessages>;
@@ -2386,4 +2425,4 @@ interface SaCatalog {
2386
2425
  */
2387
2426
  declare function createSaCatalog(options?: SaCatalogOptions): SaCatalog;
2388
2427
 
2389
- export { type SaBuiltinLocale as $, ActionDefNotInManifestError as A, type Bound as B, type PlatformEmailTestInput as C, DEFAULT_SA_LOCALE as D, type EmailHistoryDetail as E, type PlatformEmailTestResult as F, type PlatformEmailWriteInput as G, type HttpClient as H, type PlatformResources as I, type PromoCodesFilter as J, type KpiReading as K, LIST_FIRST_PAGE as L, type MarketingProjectionsFilter as M, type PromoDetail as N, type PublishBundleVersionOptions as O, type PartialMessages as P, type PublishPlanVersionOptions as Q, type ResolvedAction as R, type ResourceContext as S, type ResourceDef as T, type ResourceListPage as U, type ResourceOp as V, type ResourceOps as W, SA_INTL_LOCALES as X, SA_LOCALES as Y, SA_LOCALE_LABELS as Z, SA_MESSAGES as _, type ActionHandler as a, type SaCatalog as a0, type SaCatalogOptions as a1, type SaLocale as a2, type SaLocaleDefinition as a3, type SaLocaleOption as a4, type SaMessages as a5, type SaMessagesOverrides as a6, type TenantsListFilter as a7, type TranslationOf as a8, auditResource as a9, type SaNavMessages as aA, bindResource as aa, bundleVersionsResource as ab, bundlesResource as ac, clampListPage as ad, clampListPageSize as ae, createSaCatalog as af, dashboardResource as ag, defaultHttpClient as ah, defaultKvStore as ai, defineListOp as aj, defineMessages as ak, defineResource as al, discoveryResource as am, filterQueryString as an, isSaBuiltinLocale as ao, isSentInQuery as ap, listUrl as aq, marketingResource as ar, mergeMessages as as, planVersionsResource as at, plansResource as au, platformResources as av, promoCodesResource as aw, readListPage as ax, resolveMessages as ay, tenantsResource as az, ActionRegistry as b, type AuditListFilter as c, type DefineResourceOptions as d, type DiscoveryRead as e, type EmailHistoryFilter as f, type EmailHistoryListResult as g, type EmailHistoryResendResult as h, type EmailHistoryRow as i, type EmailHistoryStatus as j, type HttpResponse as k, type KvStore as l, LIST_PAGE_SIZE_DEFAULT as m, LIST_PAGE_SIZE_MAX as n, LIST_PAGINATION_PARAMS as o, type ListFilterOf as p, type ListOp as q, type ListQuery as r, type MessageTree as s, MissingHandlerError as t, type PilotCreatePayload as u, type PilotCreateResult as v, type PilotEditPayload as w, type PilotEditResult as x, type PilotRow as y, type PlatformEmailProvider as z };
2428
+ export { type SaBuiltinLocale as $, ActionDefNotInManifestError as A, type Bound as B, type PlatformEmailTestInput as C, DEFAULT_SA_LOCALE as D, type EmailHistoryDetail as E, type PlatformEmailTestResult as F, type PlatformEmailWriteInput as G, type HttpClient as H, type PlatformResources as I, type PromoCodesFilter as J, type KpiReading as K, LIST_FIRST_PAGE as L, type MarketingProjectionsFilter as M, type PromoDetail as N, type PublishBundleVersionOptions as O, type PartialMessages as P, type PublishPlanVersionOptions as Q, type ResolvedAction as R, type ResourceContext as S, type ResourceDef as T, type ResourceListPage as U, type ResourceOp as V, type ResourceOps as W, SA_INTL_LOCALES as X, SA_LOCALES as Y, SA_LOCALE_LABELS as Z, SA_MESSAGES as _, type ActionHandler as a, type SaCatalog as a0, type SaCatalogOptions as a1, type SaLocale as a2, type SaLocaleDefinition as a3, type SaLocaleOption as a4, type SaMessages as a5, type SaMessagesOverrides as a6, type SettingsChangeView as a7, type SettingsDifferenceView as a8, type TenantsListFilter as a9, resolveMessages as aA, settingsResource as aB, tenantsResource as aC, type SaNavMessages as aD, type TranslationOf as aa, auditResource as ab, bindResource as ac, bundleVersionsResource as ad, bundlesResource as ae, clampListPage as af, clampListPageSize as ag, createSaCatalog as ah, dashboardResource as ai, defaultHttpClient as aj, defaultKvStore as ak, defineListOp as al, defineMessages as am, defineResource as an, discoveryResource as ao, filterQueryString as ap, isSaBuiltinLocale as aq, isSentInQuery as ar, listUrl as as, marketingResource as at, mergeMessages as au, planVersionsResource as av, plansResource as aw, platformResources as ax, promoCodesResource as ay, readListPage as az, ActionRegistry as b, type AppliedSettingsView as c, type AuditListFilter as d, type DiscoveryRead as e, type EmailHistoryFilter as f, type EmailHistoryListResult as g, type EmailHistoryResendResult as h, type EmailHistoryRow as i, type EmailHistoryStatus as j, type HttpResponse as k, type KvStore as l, LIST_PAGE_SIZE_DEFAULT as m, LIST_PAGE_SIZE_MAX as n, LIST_PAGINATION_PARAMS as o, type ListFilterOf as p, type ListOp as q, type ListQuery as r, type MessageTree as s, MissingHandlerError as t, type PilotCreatePayload as u, type PilotCreateResult as v, type PilotEditPayload as w, type PilotEditResult as x, type PilotRow as y, type PlatformEmailProvider as z };