@saasicat/ui-vue 0.4.0 → 0.6.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.
- package/README.md +64 -4
- package/dist/chunk-A3W2N26K.js +714 -0
- package/dist/chunk-QZOSDCNP.js +98 -0
- package/dist/chunk-X5SQ5HMB.js +3231 -0
- package/dist/client/index.cjs +3988 -0
- package/dist/client/index.d.cts +321 -0
- package/dist/client/index.d.ts +321 -0
- package/dist/client/index.js +70 -0
- package/dist/index.cjs +4446 -1249
- package/dist/index.d.cts +297 -888
- package/dist/index.d.ts +297 -888
- package/dist/index.js +609 -1348
- package/dist/messages-7b0P8W75.d.cts +1652 -0
- package/dist/messages-7b0P8W75.d.ts +1652 -0
- package/dist/quasar/index.cjs +3340 -0
- package/dist/quasar/index.d.cts +95 -0
- package/dist/quasar/index.d.ts +95 -0
- package/dist/quasar/index.js +96 -0
- package/dist/testing-e2e/admin-pages-suite.cjs +14 -11
- package/dist/testing-e2e/admin-pages-suite.js +14 -11
- package/dist/use-super-admin-i18n-B3v3-SWZ.d.ts +210 -0
- package/dist/use-super-admin-i18n-DMktRVEt.d.cts +210 -0
- package/package.json +23 -3
- package/src/{action-registry.ts → client/action-registry.ts} +4 -4
- package/src/{batch-column-fetcher.ts → client/batch-column-fetcher.ts} +4 -4
- package/src/{boot-loader.ts → client/boot-loader.ts} +3 -3
- package/src/client/i18n/currency.ts +42 -0
- package/src/client/i18n/define.ts +59 -0
- package/src/client/i18n/format.ts +12 -0
- package/src/client/i18n/index.ts +14 -0
- package/src/client/i18n/locale.ts +15 -0
- package/src/client/i18n/messages/audit.ts +42 -0
- package/src/client/i18n/messages/bundles.ts +459 -0
- package/src/client/i18n/messages/common.ts +147 -0
- package/src/client/i18n/messages/dashboard.ts +16 -0
- package/src/client/i18n/messages/discovery.ts +229 -0
- package/src/client/i18n/messages/email.ts +125 -0
- package/src/client/i18n/messages/marketing.ts +270 -0
- package/src/client/i18n/messages/nav.ts +72 -0
- package/src/client/i18n/messages/pilots.ts +192 -0
- package/src/client/i18n/messages/plan-detail.ts +266 -0
- package/src/client/i18n/messages/plan-editor.ts +177 -0
- package/src/client/i18n/messages/plan-versions.ts +251 -0
- package/src/client/i18n/messages/plans.ts +503 -0
- package/src/client/i18n/messages/promos.ts +202 -0
- package/src/client/i18n/messages/shell.ts +145 -0
- package/src/client/i18n/messages/tenants.ts +104 -0
- package/src/client/i18n/messages/users.ts +78 -0
- package/src/client/i18n/messages.ts +84 -0
- package/src/client/index.ts +27 -0
- package/src/{manifest-loader.ts → client/manifest-loader.ts} +4 -4
- package/src/{nav-builder.ts → client/nav-builder.ts} +44 -51
- package/src/{plan-versions-catalog.ts → client/plan-versions-catalog.ts} +42 -30
- package/src/components/BundleVersionPublishDialog.vue +35 -24
- package/src/components/FeatureGate.vue +1 -1
- package/src/components/MarketingPromotionsTab.vue +112 -59
- package/src/components/MfaPromptDialog.vue +11 -11
- package/src/components/TenantActionConfirmDialog.vue +19 -17
- package/src/components/VersionDiffPreview.vue +72 -43
- package/src/components/bundle-editor/BundleCreatePanel.vue +76 -63
- package/src/components/bundle-editor/BundleFeaturesEditor.vue +13 -6
- package/src/components/bundle-editor/BundlePlanCompatPicker.vue +19 -14
- package/src/components/bundle-editor/BundleQuotasEditor.vue +7 -4
- package/src/components/bundle-editor/BundleStatusBanner.vue +36 -19
- package/src/components/bundle-editor/BundleVersionInlineEditor.vue +51 -35
- package/src/components/bundle-editor/BundleVersionStrip.vue +24 -12
- package/src/components/bundle-editor/bundle-version-status.ts +29 -29
- package/src/components/dialogs/PilotCreateDialog.vue +58 -63
- package/src/components/dialogs/PilotEditDialog.vue +40 -34
- package/src/components/dialogs/PromoCodeCreateDialog.vue +89 -63
- package/src/components/dialogs/PromoCodeEditDialog.vue +98 -66
- package/src/components/dialogs/types.ts +3 -13
- package/src/components/plan/PlanCycleToggle.vue +21 -10
- package/src/components/plan/PlanGrid.vue +2 -2
- package/src/components/plan/PriceSummary.vue +1 -1
- package/src/components/plan/PromoCodeInput.vue +1 -1
- package/src/components/plan/PublicBundleGrid.vue +1 -1
- package/src/components/plan-cockpit/PlanCockpit.vue +34 -15
- package/src/components/plan-cockpit/PlanCockpitAuditLog.vue +13 -6
- package/src/components/plan-cockpit/PlanCockpitDiffPanel.vue +18 -9
- package/src/components/plan-cockpit/PlanCockpitHeader.vue +9 -6
- package/src/components/plan-cockpit/PlanCockpitImpactPanel.vue +24 -11
- package/src/components/plan-cockpit/PlanCockpitKpis.vue +28 -17
- package/src/components/plan-cockpit/PlanCockpitVersions.vue +50 -25
- package/src/components/plan-create-dialog/PlanCreateDialog.vue +45 -35
- package/src/components/plan-detail/PlanAuditLog.vue +11 -6
- package/src/components/plan-detail/PlanDetail.vue +21 -23
- package/src/components/plan-detail/PlanDetailHeader.vue +20 -11
- package/src/components/plan-detail/PlanDetailKpis.vue +30 -17
- package/src/components/plan-detail/PlanTerminateDialog.vue +22 -9
- package/src/components/plan-detail/PlanVersionDiffPanel.vue +61 -27
- package/src/components/plan-detail/PlanVersionsPanel.vue +71 -36
- package/src/components/plan-list/PlanList.vue +99 -57
- package/src/components/plan-matrix/PlanMatrix.vue +85 -38
- package/src/components/plan-review/PlanReview.vue +105 -80
- package/src/components/plan-version-editor/PlanCatalogPreview.vue +43 -20
- package/src/components/plan-version-editor/PlanComponentPool.vue +15 -7
- package/src/components/plan-version-editor/PlanVersionBasket.vue +45 -24
- package/src/components/plan-version-editor/PlanVersionDiffDialog.vue +8 -7
- package/src/components/plan-version-editor/PlanVersionEditor.vue +74 -40
- package/src/components/plan-version-editor/PlanVersionEditorHeader.vue +24 -12
- package/src/index.ts +82 -79
- package/src/pages-standard/AdminLayout.vue +43 -18
- package/src/pages-standard/AdminManifestErrorPage.vue +10 -10
- package/src/pages-standard/AuditPage.vue +58 -19
- package/src/pages-standard/BundlesPage.vue +29 -18
- package/src/pages-standard/DashboardPage.vue +31 -17
- package/src/pages-standard/DiscoveryPage.vue +40 -28
- package/src/pages-standard/EmailHistoryPage.vue +98 -69
- package/src/pages-standard/MarketingCatalogPage.vue +40 -21
- package/src/pages-standard/PilotsPage.vue +64 -52
- package/src/pages-standard/PlanVersionsPage.vue +9 -5
- package/src/pages-standard/PlansPage.vue +91 -59
- package/src/pages-standard/PlatformEmailPage.vue +120 -53
- package/src/pages-standard/PromoCodeDetailPage.vue +66 -63
- package/src/pages-standard/PromoCodesPage.vue +51 -54
- package/src/pages-standard/SubscriptionsPage.vue +14 -9
- package/src/pages-standard/SuperAdminLoginPage.vue +19 -16
- package/src/pages-standard/SuperAdminSetupWizard.vue +53 -49
- package/src/pages-standard/TenantDetailPage.vue +54 -40
- package/src/pages-standard/TenantsPage.vue +57 -44
- package/src/pages-standard/UsersPage.vue +70 -52
- package/src/pages-standard/bundles-page/BundleAccordionList.vue +20 -8
- package/src/pages-standard/bundles-page/BundleDetailPanel.vue +28 -18
- package/src/pages-standard/bundles-page/BundlesFilterBar.vue +4 -1
- package/src/pages-standard/bundles-page/BundlesHeader.vue +9 -8
- package/src/pages-standard/bundles-page/BundlesKpis.vue +29 -11
- package/src/pages-standard/discovery-page/CatalogEntryTransPanel.vue +20 -8
- package/src/pages-standard/discovery-page/DiscoveryCapList.vue +5 -3
- package/src/pages-standard/discovery-page/DiscoveryFeatureCard.vue +43 -24
- package/src/pages-standard/discovery-page/DiscoveryHeader.vue +7 -4
- package/src/pages-standard/discovery-page/DiscoveryKpis.vue +28 -15
- package/src/pages-standard/discovery-page/DiscoveryQuotaCard.vue +20 -10
- package/src/pages-standard/discovery-page/DiscoveryStatusControl.vue +9 -6
- package/src/pages-standard/discovery-page/discovery-ui.ts +40 -52
- package/src/pages-standard/marketing-catalog/MarketingCatalogAdmin.vue +81 -49
- package/src/pages-standard/marketing-catalog/MarketingCatalogHeader.vue +13 -10
- package/src/pages-standard/marketing-catalog/MarketingCatalogPreview.vue +24 -20
- package/src/pages-standard/marketing-catalog/MarketingCatalogToolbar.vue +6 -3
- package/src/pages-standard/plan-versions/PlanDiffCard.vue +16 -6
- package/src/pages-standard/plan-versions/PlanVersionHeader.vue +42 -26
- package/src/pages-standard/plan-versions/PlanVersionsAudit.vue +46 -27
- package/src/pages-standard/plan-versions/PlanVersionsDiff.vue +8 -6
- package/src/pages-standard/plan-versions/PlanVersionsList.vue +40 -17
- package/src/pages-standard/plan-versions/PlanVersionsMatrix.vue +1 -1
- package/src/pages-standard/plan-versions/PlanVersionsTimeline.vue +25 -13
- package/src/pages-standard/plan-versions/format.ts +33 -17
- package/src/pages-standard/plans-page/PlanArchiveDialog.vue +12 -8
- package/src/pages-standard/plans-page/PlanBundleOverview.vue +15 -6
- package/src/pages-standard/plans-page/PlanDiscardDraftDialog.vue +18 -7
- package/src/pages-standard/plans-page/PlanPublishDialog.vue +23 -12
- package/src/pages-standard/tenants/format.ts +3 -2
- package/src/pages-tenant/MySubscriptionBundlesPage.vue +73 -38
- package/src/pages-tenant/OnboardingConfigurator.vue +3 -3
- package/src/pages-tenant/PackageSnapshotPanel.vue +1 -1
- package/src/pages-tenant/PlanChangeWizard.vue +10 -6
- package/src/pages-tenant/TenantPlanSection.vue +20 -16
- package/src/pages-tenant/default-i18n.ts +217 -1
- package/src/pages-tenant/tenant-plan-section/BundlePreviewDialog.vue +9 -7
- package/src/pages-tenant/tenant-plan-section/TenantBundleStore.vue +11 -12
- package/src/pages-tenant/tenant-plan-section/TenantFeatureMatrix.vue +4 -1
- package/src/pages-tenant/tenant-plan-section/TenantPlanCardHeader.vue +1 -1
- package/src/pages-tenant/tenant-plan-section/TenantUsageGrid.vue +1 -1
- package/src/quasar/create-super-admin-app.ts +192 -0
- package/src/quasar/index.ts +11 -0
- package/src/quasar/notify.ts +30 -0
- package/src/testing-e2e/admin-pages-suite.ts +14 -11
- package/src/{manifest-store-factory.ts → vue/manifest-store-factory.ts} +1 -1
- package/src/{platform-loaders.ts → vue/platform-loaders.ts} +4 -4
- package/src/{project-page-host.ts → vue/project-page-host.ts} +6 -4
- package/src/{create-super-admin-app.ts → vue/super-admin-context.ts} +20 -139
- package/src/vue/ui-notify.ts +30 -0
- package/src/{use-actions.ts → vue/use-actions.ts} +1 -1
- package/src/{use-api-list.ts → vue/use-api-list.ts} +1 -1
- package/src/{use-audit-entries.ts → vue/use-audit-entries.ts} +3 -3
- package/src/{use-batch-columns.ts → vue/use-batch-columns.ts} +1 -1
- package/src/{use-bulk-publish.ts → vue/use-bulk-publish.ts} +7 -5
- package/src/{use-bundle-versions-map.ts → vue/use-bundle-versions-map.ts} +7 -5
- package/src/{use-bundles.ts → vue/use-bundles.ts} +14 -14
- package/src/{use-catalog-entries.ts → vue/use-catalog-entries.ts} +14 -11
- package/src/{use-discovery.ts → vue/use-discovery.ts} +9 -6
- package/src/{use-entitlement.ts → vue/use-entitlement.ts} +4 -4
- package/src/{use-live-plan-versions.ts → vue/use-live-plan-versions.ts} +5 -5
- package/src/{use-manifest.ts → vue/use-manifest.ts} +1 -1
- package/src/{use-marketing-projections.ts → vue/use-marketing-projections.ts} +10 -7
- package/src/{use-nav.ts → vue/use-nav.ts} +9 -3
- package/src/{use-plan-editor.ts → vue/use-plan-editor.ts} +2 -2
- package/src/{use-plan-versions.ts → vue/use-plan-versions.ts} +3 -3
- package/src/{use-plans.ts → vue/use-plans.ts} +13 -13
- package/src/{use-platform-tenant-actions.ts → vue/use-platform-tenant-actions.ts} +9 -6
- package/src/{use-promotions.ts → vue/use-promotions.ts} +10 -11
- package/src/{use-public-boot.ts → vue/use-public-boot.ts} +1 -1
- package/src/{use-subscription-draft.ts → vue/use-subscription-draft.ts} +2 -3
- package/src/{use-super-admin-context.ts → vue/use-super-admin-context.ts} +5 -5
- package/src/vue/use-super-admin-i18n.ts +82 -0
- package/src/{use-tenant-action-flow.ts → vue/use-tenant-action-flow.ts} +12 -7
- package/src/{use-tenant-billing-catalog.ts → vue/use-tenant-billing-catalog.ts} +2 -2
- package/src/{use-tenant-billing.ts → vue/use-tenant-billing.ts} +2 -2
- package/src/{use-tenant-manifest.ts → vue/use-tenant-manifest.ts} +2 -4
- package/src/{use-tenant-subscription-bundles.ts → vue/use-tenant-subscription-bundles.ts} +5 -5
- package/src/{use-tenants.ts → vue/use-tenants.ts} +3 -3
- package/dist/testing-e2e/admin-pages-suite.d.cts +0 -37
- package/dist/testing-e2e/admin-pages-suite.d.ts +0 -37
- package/src/components/BusinessTypeVersionEditorDialog.vue +0 -417
- package/src/components/BusinessTypeVersionPublishDialog.vue +0 -258
- package/src/pages-standard/BusinessTypesPage.vue +0 -662
- package/src/pages-standard/plan-versions/VersionDiffPreview.vue +0 -167
- package/src/use-business-types.ts +0 -269
- /package/src/{http-json.ts → client/http-json.ts} +0 -0
- /package/src/{types.ts → client/types.ts} +0 -0
- /package/src/{version.ts → client/version.ts} +0 -0
- /package/src/{create-admin-routes.ts → vue/create-admin-routes.ts} +0 -0
- /package/src/{entitlement-provider.ts → vue/entitlement-provider.ts} +0 -0
- /package/src/{feature-router-guard.ts → vue/feature-router-guard.ts} +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,66 +1,47 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { BootLoaderOptions, ManifestLoaderOptions, BuildRouteEntry, SidebarSection, NavBuilderOptions, BatchColumnData, BatchColumnFetcherOptions, BootLoader, ManifestLoader } from './client/index.js';
|
|
2
|
+
export { ADMIN_UI_VERSION, BatchColumnDriftError, BatchColumnFetcher, BatchColumnRow, BatchColumnValue, BootLoadError, BuildSnapshotsOptions, CachedManifestEntry, CatalogSnapshot, DEFAULT_STANDARD_PAGE_ROUTES, HttpJsonError, ManifestLoadError, MessageParams, ParamStyle, RawCatalogData, ResolvedPlan, SidebarItem, SnapshotKind, buildRoutes, buildSidebar, buildSnapshots, defaultSectionOrder, formatCurrency, formatMessage, getJson, listOpenDrafts, postJson, resolveExtension, trimTrailingSlashes } from './client/index.js';
|
|
3
|
+
import { H as HttpClient, c as ActionRegistry, A as ActionHandler, K as KvStore, S as SaLocale } from './messages-7b0P8W75.js';
|
|
4
|
+
export { d as ActionDefNotInManifestError, D as DEFAULT_SA_LOCALE, e as HttpResponse, M as MessageTree, f as MissingHandlerError, P as PartialMessages, R as ResolvedAction, g as SA_INTL_LOCALES, h as SA_LOCALES, i as SA_MESSAGES, a as SaMessages, b as SaMessagesOverrides, T as TranslationOf, j as defaultHttpClient, k as defaultKvStore, l as defineMessages, m as mergeMessages, r as resolveMessages } from './messages-7b0P8W75.js';
|
|
5
|
+
import { A as ActionsMap, a as SuperAdminBrand, b as SuperAdminEndpoints, E as ExtensionsMap, c as SuperAdminLoginAdapter } from './use-super-admin-i18n-B3v3-SWZ.js';
|
|
6
|
+
export { f as ExtensionLoader, I as InstallPlugin, g as SUPER_ADMIN_ACTIONS_KEY, h as SUPER_ADMIN_BRAND_KEY, i as SUPER_ADMIN_ENDPOINTS_KEY, j as SUPER_ADMIN_EXTENSIONS_KEY, k as SUPER_ADMIN_HTTP_KEY, l as SUPER_ADMIN_I18N_KEY, m as SUPER_ADMIN_LOGIN_ADAPTER_KEY, n as SUPER_ADMIN_MANIFEST_KEY, o as SUPER_ADMIN_NOTIFY_KEY, p as SuperAdminAuthGuardOptions, S as SuperAdminGuardOptions, e as SuperAdminI18n, d as SuperAdminI18nOptions, q as SuperAdminLoginResult, r as SuperAdminManifestGuardOptions, U as UiNotify, s as UiNotifyKind, t as UiNotifyOptions, u as buildNavigationGuard, v as createSuperAdminI18n, w as useSaMessages, x as useSuperAdminI18n } from './use-super-admin-i18n-B3v3-SWZ.js';
|
|
7
|
+
import { AdminManifest, TenantListFilter, TenantDto, AuditQuery, AuditEntry, FeatureUiRegistry, PromoPreviewResponse, OnboardingSelectionRequest, PublicMarketingBundle, FeatureDef, FeatureKey, PublicBootResponse, DiscoverySnapshot, CapabilityCatalogEntryRow, FeatureCatalogEntryRow, QuotaCatalogEntryRow, ReviewCatalogEntryData, CatalogEntryI18n, UpdateCatalogEntryBaseData, SyncDiscoveryResult, BundleVersionRow, CreateBundleVersionDraftData, BundleVersionMutationResult, UpdateBundleVersionDraftData, BundleRow, CreateBundleData, UpdateBundleData, SubscriptionBundleRecord, MarketingProjectionFilter, MarketingProjectionRow, CreateMarketingProjectionData, UpdateMarketingProjectionData, PromotionRow, CreatePromotionData, UpdatePromotionData, PlanVersionRow as PlanVersionRow$1, CreatePlanVersionDraftData, PlanVersionMutationResult, UpdatePlanVersionDraftData, PlanRow, CreatePlanData, UpdatePlanData, TenantActionDef } from '@saasicat/types';
|
|
8
|
+
import { RouteRecordRaw, NavigationGuardWithThis } from 'vue-router';
|
|
3
9
|
import * as vue from 'vue';
|
|
4
|
-
import { Ref, InjectionKey, App, ComputedRef
|
|
5
|
-
import {
|
|
6
|
-
import { Pinia, StoreDefinition } from 'pinia';
|
|
10
|
+
import { Ref, InjectionKey, App, ComputedRef } from 'vue';
|
|
11
|
+
import { StoreDefinition } from 'pinia';
|
|
7
12
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
* implementation (e.g. an axios wrapper that already injects auth headers
|
|
13
|
-
* and tenant headers).
|
|
14
|
-
*/
|
|
15
|
-
type HttpClient = (url: string, init?: {
|
|
16
|
-
method?: string;
|
|
17
|
-
headers?: Record<string, string>;
|
|
18
|
-
body?: string;
|
|
19
|
-
}) => Promise<HttpResponse>;
|
|
20
|
-
interface HttpResponse {
|
|
21
|
-
status: number;
|
|
22
|
-
headers: {
|
|
23
|
-
get(name: string): string | null;
|
|
24
|
-
};
|
|
25
|
-
json(): Promise<unknown>;
|
|
26
|
-
text(): Promise<string>;
|
|
27
|
-
}
|
|
28
|
-
/** Simple persistence adapter; default is `localStorage`. */
|
|
29
|
-
interface KvStore {
|
|
30
|
-
get(key: string): string | null;
|
|
31
|
-
set(key: string, value: string): void;
|
|
32
|
-
remove(key: string): void;
|
|
33
|
-
}
|
|
13
|
+
/** Returns the `extensions:` map registered in `createSuperAdminApp()`. */
|
|
14
|
+
declare function useSuperAdminExtensions(): ExtensionsMap;
|
|
15
|
+
/** Returns the `actions:` map registered in `createSuperAdminApp()`. */
|
|
16
|
+
declare function useSuperAdminActions(): ActionsMap;
|
|
34
17
|
/**
|
|
35
|
-
* Returns
|
|
36
|
-
*
|
|
18
|
+
* Returns the app branding. Throws when the component is rendered outside a
|
|
19
|
+
* `createSuperAdminApp()` shell — that is a setup bug, not a runtime
|
|
20
|
+
* problem.
|
|
37
21
|
*/
|
|
38
|
-
declare function
|
|
22
|
+
declare function useSuperAdminBrand(): SuperAdminBrand;
|
|
23
|
+
/** Returns the app endpoints (apiBase, publicBootEndpoint, manifestEndpoint). */
|
|
24
|
+
declare function useSuperAdminEndpoints(): Required<SuperAdminEndpoints>;
|
|
39
25
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
26
|
+
* Returns the manifest accessor that was provided via
|
|
27
|
+
* `createSuperAdminApp({ manifestGuard: { getManifest } })`.
|
|
28
|
+
* Returns `null` if the app did not pass an accessor — components
|
|
29
|
+
* (e.g. `<ProjectPageHost>`) must handle the null case cleanly, because
|
|
30
|
+
* the accessor is optional.
|
|
42
31
|
*/
|
|
43
|
-
declare function
|
|
44
|
-
|
|
32
|
+
declare function useSuperAdminManifest(): AdminManifest | null;
|
|
45
33
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
34
|
+
* Returns the login adapter the app registered via
|
|
35
|
+
* `createSuperAdminApp({ loginAdapter })`. Throws when none was
|
|
36
|
+
* set — the shared `<SuperAdminLoginPage>` needs it.
|
|
49
37
|
*/
|
|
50
|
-
declare
|
|
51
|
-
readonly status: number;
|
|
52
|
-
readonly code?: string | undefined;
|
|
53
|
-
constructor(status: number, code?: string | undefined);
|
|
54
|
-
}
|
|
38
|
+
declare function useSuperAdminLoginAdapter(): SuperAdminLoginAdapter;
|
|
55
39
|
/**
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* end in many slashes.
|
|
40
|
+
* Returns the pre-login `HttpClient` (boot, first-run setup) the app registered
|
|
41
|
+
* via `createSuperAdminApp({ http })`. Falls back to `defaultHttpClient()`
|
|
42
|
+
* if none was provided (e.g. in isolated tests).
|
|
60
43
|
*/
|
|
61
|
-
declare function
|
|
62
|
-
declare function getJson<T>(http: HttpClient, url: string): Promise<T>;
|
|
63
|
-
declare function postJson<T>(http: HttpClient, url: string, body: unknown): Promise<T>;
|
|
44
|
+
declare function useSuperAdminHttp(): HttpClient;
|
|
64
45
|
|
|
65
46
|
/** Eager or lazy component loader (`() => import(...)`). */
|
|
66
47
|
type RouteComponent = NonNullable<RouteRecordRaw['component']>;
|
|
@@ -86,265 +67,6 @@ interface CreateAdminRoutesOptions {
|
|
|
86
67
|
}
|
|
87
68
|
declare function createAdminRoutes(options: CreateAdminRoutesOptions): RouteRecordRaw[];
|
|
88
69
|
|
|
89
|
-
interface BootLoaderOptions {
|
|
90
|
-
/**
|
|
91
|
-
* Fully-qualified boot endpoint incl. app globalPrefix
|
|
92
|
-
* (`/api/admin/boot`, `/api/v1/admin/boot`, …). Mandatory.
|
|
93
|
-
*/
|
|
94
|
-
endpoint: string;
|
|
95
|
-
/** Defaults to `defaultHttpClient()` (= `fetch`). */
|
|
96
|
-
http?: HttpClient;
|
|
97
|
-
}
|
|
98
|
-
declare class BootLoadError extends Error {
|
|
99
|
-
readonly status: number;
|
|
100
|
-
constructor(status: number, message: string);
|
|
101
|
-
}
|
|
102
|
-
declare class BootLoader {
|
|
103
|
-
private readonly endpoint;
|
|
104
|
-
private readonly http;
|
|
105
|
-
constructor(options: BootLoaderOptions);
|
|
106
|
-
load(): Promise<PublicBootResponse>;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
interface ManifestLoaderOptions {
|
|
110
|
-
/**
|
|
111
|
-
* Fully-qualified manifest endpoint incl. app globalPrefix
|
|
112
|
-
* (`/api/admin/manifest`, `/api/v1/admin/manifest`, …). Mandatory.
|
|
113
|
-
*/
|
|
114
|
-
endpoint: string;
|
|
115
|
-
http?: HttpClient;
|
|
116
|
-
storage?: KvStore;
|
|
117
|
-
/**
|
|
118
|
-
* Storage key prefix — consumers with multiple apps under one domain
|
|
119
|
-
* set this to e.g. `'ma:'` or `'da:'`, so that the caches
|
|
120
|
-
* are separated.
|
|
121
|
-
*/
|
|
122
|
-
storageKeyPrefix?: string;
|
|
123
|
-
/**
|
|
124
|
-
* Auth header for `Authorization: Bearer <token>`. Sent with every
|
|
125
|
-
* request. The consumer supplies a function that pulls the
|
|
126
|
-
* current token from the auth store.
|
|
127
|
-
*/
|
|
128
|
-
getAuthToken?: () => string | null;
|
|
129
|
-
}
|
|
130
|
-
declare class ManifestLoadError extends Error {
|
|
131
|
-
readonly status: number;
|
|
132
|
-
constructor(status: number, message: string);
|
|
133
|
-
}
|
|
134
|
-
interface CachedManifestEntry {
|
|
135
|
-
etag: string;
|
|
136
|
-
body: AdminManifest;
|
|
137
|
-
}
|
|
138
|
-
declare class ManifestLoader {
|
|
139
|
-
private readonly endpoint;
|
|
140
|
-
private readonly http;
|
|
141
|
-
private readonly storage;
|
|
142
|
-
private readonly bodyKey;
|
|
143
|
-
private readonly etagKey;
|
|
144
|
-
private readonly getAuthToken?;
|
|
145
|
-
constructor(options: ManifestLoaderOptions);
|
|
146
|
-
/**
|
|
147
|
-
* Loads the current manifest. On a cache hit (304) the cached
|
|
148
|
-
* body is returned — otherwise the fresh server body.
|
|
149
|
-
*/
|
|
150
|
-
load(): Promise<AdminManifest>;
|
|
151
|
-
/** Reads the cached manifest body from storage; null if absent. */
|
|
152
|
-
readCachedBody(): CachedManifestEntry | null;
|
|
153
|
-
/** Clears the cache — e.g. on logout or after `manifest reload`. */
|
|
154
|
-
clearCache(): void;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Default routes for the platform standard pages. Consumers may override this
|
|
159
|
-
* via the `standardPageRoutes` option (e.g. `/admin/users` →
|
|
160
|
-
* `/admin/team`).
|
|
161
|
-
*/
|
|
162
|
-
declare const DEFAULT_STANDARD_PAGE_ROUTES: Record<StandardPageKey, string>;
|
|
163
|
-
interface BuildRouteEntry {
|
|
164
|
-
/** Stable identifier — the key for standard pages, the `id` for project pages. */
|
|
165
|
-
id: string;
|
|
166
|
-
/** Route path (`/admin/...`). */
|
|
167
|
-
path: string;
|
|
168
|
-
/** Visible for the UI. */
|
|
169
|
-
label: string;
|
|
170
|
-
icon?: string;
|
|
171
|
-
/** Sort key for drawer groups. */
|
|
172
|
-
navSection?: string;
|
|
173
|
-
/** Lookup key in the `extensions:` map (project) or the platform standard map. */
|
|
174
|
-
componentKey: string;
|
|
175
|
-
/** Required capability or null. */
|
|
176
|
-
requiredCapability: string | null;
|
|
177
|
-
/** Platform standard page (`true`) or project page (`false`). */
|
|
178
|
-
isStandard: boolean;
|
|
179
|
-
/** Hint for anticipatory lazy loading. */
|
|
180
|
-
prefetchOnIdle?: boolean;
|
|
181
|
-
}
|
|
182
|
-
interface NavBuilderOptions {
|
|
183
|
-
/**
|
|
184
|
-
* Optional: overrides the default routes for certain standard pages.
|
|
185
|
-
* Consumers set this if they want an alternative URL structure.
|
|
186
|
-
*/
|
|
187
|
-
standardPageRoutes?: Partial<Record<StandardPageKey, string>>;
|
|
188
|
-
/**
|
|
189
|
-
* Default labels for standard pages — consumers may localize.
|
|
190
|
-
*/
|
|
191
|
-
standardPageLabels?: Partial<Record<StandardPageKey, string>>;
|
|
192
|
-
/** Default icons for standard pages. */
|
|
193
|
-
standardPageIcons?: Partial<Record<StandardPageKey, string>>;
|
|
194
|
-
/** Default `navSection` for standard pages. */
|
|
195
|
-
standardPageNavSection?: Partial<Record<StandardPageKey, string>>;
|
|
196
|
-
/**
|
|
197
|
-
* Optional: set of known `componentKey`s from the shell's `extensions:`
|
|
198
|
-
* map. ProjectPages whose `componentKey` is not contained here
|
|
199
|
-
* are filtered out — they would otherwise appear in the sidebar but on
|
|
200
|
-
* click be redirected by the catch-all (silent dead link).
|
|
201
|
-
* Consumers without an `extensions:` map omit the field → as before.
|
|
202
|
-
*/
|
|
203
|
-
availableExtensions?: Set<string>;
|
|
204
|
-
}
|
|
205
|
-
declare const DEFAULT_SECTION_ORDER: readonly string[];
|
|
206
|
-
/**
|
|
207
|
-
* Returns the list of all routes defined by the current manifest —
|
|
208
|
-
* filtered to the capabilities that the logged-in user has.
|
|
209
|
-
*
|
|
210
|
-
* The consumer shell then builds its Vue router configuration and its
|
|
211
|
-
* sidebar drawer from it.
|
|
212
|
-
*/
|
|
213
|
-
declare function buildRoutes(manifest: AdminManifest, options?: NavBuilderOptions): BuildRouteEntry[];
|
|
214
|
-
interface SidebarItem {
|
|
215
|
-
id: string;
|
|
216
|
-
path: string;
|
|
217
|
-
label: string;
|
|
218
|
-
icon?: string;
|
|
219
|
-
}
|
|
220
|
-
interface SidebarSection {
|
|
221
|
-
/** `null` for the default section (items without `navSection`). */
|
|
222
|
-
section: string | null;
|
|
223
|
-
items: SidebarItem[];
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* Groups the routes by `navSection` for the drawer.
|
|
227
|
-
*
|
|
228
|
-
* Section order:
|
|
229
|
-
* 1. Default section (`null`) — items without `navSection`.
|
|
230
|
-
* 2. Sections from `sectionOrder` in exactly this order.
|
|
231
|
-
* 3. Remaining sections alphabetically.
|
|
232
|
-
*
|
|
233
|
-
* The default order matches the plan simulation layout (Übersicht →
|
|
234
|
-
* Produktkatalog → Kunden → System); consumers can override it.
|
|
235
|
-
*/
|
|
236
|
-
declare function buildSidebar(routes: BuildRouteEntry[], sectionOrder?: readonly string[]): SidebarSection[];
|
|
237
|
-
/**
|
|
238
|
-
* Returns the Vue component registered for the given `componentKey`.
|
|
239
|
-
* The consumer shell calls this function with its own `extensions:` map.
|
|
240
|
-
* For unknown keys → `null` (the UI then renders a fallback
|
|
241
|
-
* component, e.g. "Component not found in shell build").
|
|
242
|
-
*
|
|
243
|
-
* `extensions` is `Record<string, T>` — `T` is typically a
|
|
244
|
-
* Vue component (either imported directly or as a
|
|
245
|
-
* `defineAsyncComponent` wrapper).
|
|
246
|
-
*/
|
|
247
|
-
declare function resolveExtension<T>(componentKey: string, extensions: Record<string, T>): T | null;
|
|
248
|
-
|
|
249
|
-
/** Consumer implementation; receives the action inputs as a generic object. */
|
|
250
|
-
type ActionHandler<TInput = unknown, TResult = unknown> = (input: TInput) => Promise<TResult>;
|
|
251
|
-
interface ResolvedAction<TInput = unknown, TResult = unknown> {
|
|
252
|
-
def: TenantActionDef;
|
|
253
|
-
handler: ActionHandler<TInput, TResult>;
|
|
254
|
-
}
|
|
255
|
-
declare class MissingHandlerError extends Error {
|
|
256
|
-
constructor(actionKey: string);
|
|
257
|
-
}
|
|
258
|
-
declare class ActionDefNotInManifestError extends Error {
|
|
259
|
-
constructor(actionKey: string);
|
|
260
|
-
}
|
|
261
|
-
declare class ActionRegistry {
|
|
262
|
-
private readonly defs;
|
|
263
|
-
private readonly handlers;
|
|
264
|
-
constructor(manifest: AdminManifest, handlers?: Record<string, ActionHandler>);
|
|
265
|
-
/**
|
|
266
|
-
* Registers a handler after the fact (e.g. when consumer code loads
|
|
267
|
-
* lazily). Throws `ActionDefNotInManifestError` if the `actionKey` is not
|
|
268
|
-
* declared in the manifest — prevents dead registrations.
|
|
269
|
-
*/
|
|
270
|
-
register<TInput, TResult>(actionKey: string, handler: ActionHandler<TInput, TResult>): void;
|
|
271
|
-
/**
|
|
272
|
-
* Returns the `{def, handler}` pair. Throws if the key is missing from
|
|
273
|
-
* the manifest or no handler is registered. The shell's UI layer calls
|
|
274
|
-
* the method, checks `def.requiresMfa` / `def.confirmType` for the
|
|
275
|
-
* pre-flow, and then calls `handler(input)`.
|
|
276
|
-
*/
|
|
277
|
-
get<TInput = unknown, TResult = unknown>(actionKey: string): ResolvedAction<TInput, TResult>;
|
|
278
|
-
/**
|
|
279
|
-
* Convenience: `get(key).handler(input)`. UI convenience for actions
|
|
280
|
-
* that need neither MFA nor confirm.
|
|
281
|
-
*/
|
|
282
|
-
dispatch<TInput, TResult>(actionKey: string, input: TInput): Promise<TResult>;
|
|
283
|
-
/**
|
|
284
|
-
* List of actionKeys that are declared in the manifest but have no
|
|
285
|
-
* handler. Consumers use this in a doctor check to detect drift between
|
|
286
|
-
* the manifest and the shell build.
|
|
287
|
-
*/
|
|
288
|
-
listOrphanedDefs(): string[];
|
|
289
|
-
/**
|
|
290
|
-
* List of registered handlers that are missing from the manifest. Drift
|
|
291
|
-
* in the other direction.
|
|
292
|
-
*/
|
|
293
|
-
listOrphanedHandlers(): string[];
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
type BatchColumnValue = unknown;
|
|
297
|
-
/** One value per `tenantId` (freely structured). */
|
|
298
|
-
type BatchColumnRow = Record<string, BatchColumnValue>;
|
|
299
|
-
/** One `tenantId → value` map per column key. */
|
|
300
|
-
type BatchColumnData = Record<string, BatchColumnRow>;
|
|
301
|
-
type ParamStyle = 'comma' | 'repeat';
|
|
302
|
-
interface BatchColumnFetcherOptions {
|
|
303
|
-
http?: HttpClient;
|
|
304
|
-
/**
|
|
305
|
-
* How the `tenantIds` are passed to the endpoint. Default `'comma'` →
|
|
306
|
-
* `?tenantIds=t1,t2,t3`. `'repeat'` → `?tenantIds=t1&tenantIds=t2`.
|
|
307
|
-
* Consumer backends decide based on their framework (NestJS accepts
|
|
308
|
-
* comma-separated strings by default, or via `@Query() ids: string[]`).
|
|
309
|
-
*/
|
|
310
|
-
paramStyle?: ParamStyle;
|
|
311
|
-
/**
|
|
312
|
-
* Auth-token provider for `Authorization: Bearer <token>`. The consumer
|
|
313
|
-
* supplies a function that pulls the current token from the auth store.
|
|
314
|
-
*/
|
|
315
|
-
getAuthToken?: () => string | null;
|
|
316
|
-
}
|
|
317
|
-
declare class BatchColumnDriftError extends Error {
|
|
318
|
-
readonly column: TenantColumnDef;
|
|
319
|
-
constructor(column: TenantColumnDef, reason: string);
|
|
320
|
-
}
|
|
321
|
-
declare class BatchColumnFetcher {
|
|
322
|
-
private readonly http;
|
|
323
|
-
private readonly paramStyle;
|
|
324
|
-
private readonly getAuthToken?;
|
|
325
|
-
constructor(options?: BatchColumnFetcherOptions);
|
|
326
|
-
/**
|
|
327
|
-
* Loads the data for all columns declared in the manifest in parallel
|
|
328
|
-
* (one request per column, all `tenantIds` in the batch). Columns without
|
|
329
|
-
* a satisfied capability are ignored.
|
|
330
|
-
*/
|
|
331
|
-
fetchAll(manifest: AdminManifest, tenantIds: string[]): Promise<BatchColumnData>;
|
|
332
|
-
/** Fetch a single column (consumers may also use this directly). */
|
|
333
|
-
fetchOne(column: TenantColumnDef, tenantIds: string[]): Promise<BatchColumnRow>;
|
|
334
|
-
/**
|
|
335
|
-
* Column drift against the manifest. Consumers use this for CI smoke
|
|
336
|
-
* tests of the manifest-vs-shell build.
|
|
337
|
-
*/
|
|
338
|
-
listDriftIssues(manifest: AdminManifest): BatchColumnDriftError[];
|
|
339
|
-
/**
|
|
340
|
-
* Which columns have a satisfied `requiredCapability`? Manifest =
|
|
341
|
-
* discovery, so a local check is enough.
|
|
342
|
-
*/
|
|
343
|
-
eligibleColumns(manifest: AdminManifest): TenantColumnDef[];
|
|
344
|
-
private validateBatchEndpoint;
|
|
345
|
-
private buildUrl;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
70
|
interface ApiListResponse<T> {
|
|
349
71
|
items: T[];
|
|
350
72
|
page?: number;
|
|
@@ -901,147 +623,6 @@ interface SubscriptionDraft {
|
|
|
901
623
|
}
|
|
902
624
|
declare function useSubscriptionDraft(options: UseSubscriptionDraftOptions): SubscriptionDraft;
|
|
903
625
|
|
|
904
|
-
interface TenantPlanSectionI18n {
|
|
905
|
-
sectionTitle: string;
|
|
906
|
-
sectionSubtitle: string;
|
|
907
|
-
loading: string;
|
|
908
|
-
noSubscription: string;
|
|
909
|
-
activePlan: string;
|
|
910
|
-
cycleMonthly: string;
|
|
911
|
-
cycleYearly: string;
|
|
912
|
-
statusActive: string;
|
|
913
|
-
statusTrial: string;
|
|
914
|
-
statusPastDue: string;
|
|
915
|
-
statusCanceled: string;
|
|
916
|
-
statusPendingSales: string;
|
|
917
|
-
trialEndsAt: string;
|
|
918
|
-
pilotEndsAt: string;
|
|
919
|
-
nextBillingDate: string;
|
|
920
|
-
pendingChange: string;
|
|
921
|
-
changeFromTo: string;
|
|
922
|
-
changeEffectiveAt: string;
|
|
923
|
-
changePlanButton: string;
|
|
924
|
-
cancelSubscriptionButton: string;
|
|
925
|
-
usageTitle: string;
|
|
926
|
-
/** #18 — feature / scope-of-services matrix (included + locked). */
|
|
927
|
-
featuresOverviewTitle: string;
|
|
928
|
-
featuresActive: string;
|
|
929
|
-
featuresLocked: string;
|
|
930
|
-
/** #15 — bundle store (booked + available bundles). */
|
|
931
|
-
bundlesStoreTitle: string;
|
|
932
|
-
bundlesBookedTitle: string;
|
|
933
|
-
bundlesAvailableTitle: string;
|
|
934
|
-
bundlesAvailableEmpty: string;
|
|
935
|
-
bundlesPerMonth: string;
|
|
936
|
-
bundleBookAction: string;
|
|
937
|
-
bundleBookInProgress: string;
|
|
938
|
-
bundleCancelAction: string;
|
|
939
|
-
bundleReactivateAction: string;
|
|
940
|
-
bundleReactivateConfirmTitle: string;
|
|
941
|
-
bundleReactivateConfirmBody: string;
|
|
942
|
-
bundleCanceledAt: string;
|
|
943
|
-
bundleMinimumTermUntil: string;
|
|
944
|
-
bundleIncludesLabel: string;
|
|
945
|
-
bundleAlreadyBooked: string;
|
|
946
|
-
bundleIncompatible: string;
|
|
947
|
-
/** #37/#61 — requires graying-out + booking/cancellation preview. */
|
|
948
|
-
bundleMissingRequires: string;
|
|
949
|
-
bundlePreviewAddTitle: string;
|
|
950
|
-
bundlePreviewCancelTitle: string;
|
|
951
|
-
bundlePreviewLoading: string;
|
|
952
|
-
bundlePreviewProrationTitle: string;
|
|
953
|
-
bundlePreviewProratedNow: string;
|
|
954
|
-
bundlePreviewProrationDays: string;
|
|
955
|
-
bundlePreviewNextPeriod: string;
|
|
956
|
-
bundlePreviewTrialNote: string;
|
|
957
|
-
bundlePreviewNoPrice: string;
|
|
958
|
-
bundlePreviewMinimumTermLabel: string;
|
|
959
|
-
bundlePreviewMinimumTermMonths: string;
|
|
960
|
-
bundlePreviewMinimumTermNone: string;
|
|
961
|
-
bundlePreviewRedundantTitle: string;
|
|
962
|
-
bundlePreviewRedundantCoveredByPlan: string;
|
|
963
|
-
bundlePreviewRedundantCoveredByBundle: string;
|
|
964
|
-
bundlePreviewMissingRequiresTitle: string;
|
|
965
|
-
bundlePreviewBlockersTitle: string;
|
|
966
|
-
bundlePreviewWarningsTitle: string;
|
|
967
|
-
bundlePreviewEffectiveAt: string;
|
|
968
|
-
bundlePreviewSavings: string;
|
|
969
|
-
bundlePreviewConfirmAdd: string;
|
|
970
|
-
bundlePreviewConfirmCancel: string;
|
|
971
|
-
bundlePreviewInProgress: string;
|
|
972
|
-
bundlePreviewClose: string;
|
|
973
|
-
pendingVersionTitle: string;
|
|
974
|
-
pendingVersionChipNonRegressive: string;
|
|
975
|
-
pendingVersionChipRegressive: string;
|
|
976
|
-
pendingVersionEffectiveAt: string;
|
|
977
|
-
pendingVersionAcceptAction: string;
|
|
978
|
-
pendingVersionAcceptInProgress: string;
|
|
979
|
-
pendingVersionAcceptedAt: string;
|
|
980
|
-
wizardTitle: string;
|
|
981
|
-
wizardClose: string;
|
|
982
|
-
wizardCurrent: string;
|
|
983
|
-
wizardBadgeCurrent: string;
|
|
984
|
-
wizardBadgePopular: string;
|
|
985
|
-
wizardPriceUnitMonthly: string;
|
|
986
|
-
wizardPriceUnitYearly: string;
|
|
987
|
-
wizardPriceOnRequest: string;
|
|
988
|
-
wizardStepChoose: string;
|
|
989
|
-
wizardStepChooseIntro: string;
|
|
990
|
-
wizardStepPreview: string;
|
|
991
|
-
wizardStepConfirm: string;
|
|
992
|
-
wizardNext: string;
|
|
993
|
-
wizardBack: string;
|
|
994
|
-
wizardPreviewLoading: string;
|
|
995
|
-
wizardEffectiveAtLabel: string;
|
|
996
|
-
wizardEffectiveImmediate: string;
|
|
997
|
-
wizardProrationTitle: string;
|
|
998
|
-
wizardProrationLine: string;
|
|
999
|
-
wizardProrationDays: string;
|
|
1000
|
-
wizardLimitsTitle: string;
|
|
1001
|
-
wizardLimitsUsed: string;
|
|
1002
|
-
wizardLimitsCurrent: string;
|
|
1003
|
-
wizardLimitsTarget: string;
|
|
1004
|
-
wizardFeaturesGained: string;
|
|
1005
|
-
wizardFeaturesLost: string;
|
|
1006
|
-
wizardBlockersTitle: string;
|
|
1007
|
-
wizardConfirmImmediate: string;
|
|
1008
|
-
wizardConfirmScheduled: string;
|
|
1009
|
-
wizardConfirmAction: string;
|
|
1010
|
-
wizardConfirmInProgress: string;
|
|
1011
|
-
/** #17 — price overview in the confirm step. */
|
|
1012
|
-
wizardConfirmPriceTitle: string;
|
|
1013
|
-
wizardConfirmProratedNow: string;
|
|
1014
|
-
wizardConfirmRecurringNext: string;
|
|
1015
|
-
wizardConfirmRecurringFrom: string;
|
|
1016
|
-
wizardConfirmPerCycleMonthly: string;
|
|
1017
|
-
wizardConfirmPerCycleYearly: string;
|
|
1018
|
-
/** #17 — trial case in the confirm step (nothing due during the trial). */
|
|
1019
|
-
wizardConfirmTrialNote: string;
|
|
1020
|
-
wizardConfirmRecurringTrialEnd: string;
|
|
1021
|
-
wizardChangeTypeUpgrade: string;
|
|
1022
|
-
wizardChangeTypeDowngrade: string;
|
|
1023
|
-
wizardChangeTypeCycle: string;
|
|
1024
|
-
wizardChangeTypeNoop: string;
|
|
1025
|
-
/** P11.4: read-only display of the package snapshot. */
|
|
1026
|
-
packageSnapshotTitle: string;
|
|
1027
|
-
packageSnapshotSubtitle: string;
|
|
1028
|
-
packageSnapshotCapturedAt: string;
|
|
1029
|
-
packageSnapshotOfferRef: string;
|
|
1030
|
-
packageSnapshotPlanLabel: string;
|
|
1031
|
-
packageSnapshotPlanVersionLabel: string;
|
|
1032
|
-
packageSnapshotCycleLabel: string;
|
|
1033
|
-
packageSnapshotBundlesLabel: string;
|
|
1034
|
-
packageSnapshotBundlesEmpty: string;
|
|
1035
|
-
packageSnapshotPriceMonthly: string;
|
|
1036
|
-
packageSnapshotPriceYearly: string;
|
|
1037
|
-
packageSnapshotPriceTotal: string;
|
|
1038
|
-
packageSnapshotNone: string;
|
|
1039
|
-
packageSnapshotShowRaw: string;
|
|
1040
|
-
packageSnapshotHideRaw: string;
|
|
1041
|
-
}
|
|
1042
|
-
/** German default strings — apps can override them selectively. */
|
|
1043
|
-
declare const DEFAULT_I18N_DE: TenantPlanSectionI18n;
|
|
1044
|
-
|
|
1045
626
|
/**
|
|
1046
627
|
* Generic filter shape for versions lists.
|
|
1047
628
|
* `state`: 'draft' (publishedAt null), 'live' (publishedAt set, supersededAt null),
|
|
@@ -1380,48 +961,6 @@ declare class TenantSubscriptionBundlesApiError extends Error {
|
|
|
1380
961
|
}
|
|
1381
962
|
declare function useTenantSubscriptionBundles(options: UseTenantSubscriptionBundlesOptions): UseTenantSubscriptionBundlesResult;
|
|
1382
963
|
|
|
1383
|
-
interface UseBusinessTypesOptions {
|
|
1384
|
-
adminEndpoint: string;
|
|
1385
|
-
http?: HttpClient;
|
|
1386
|
-
getAuthToken?: () => string | null;
|
|
1387
|
-
projectKey: string;
|
|
1388
|
-
autoLoad?: boolean;
|
|
1389
|
-
}
|
|
1390
|
-
declare class BusinessTypesApiError extends Error {
|
|
1391
|
-
readonly status: number;
|
|
1392
|
-
readonly body: unknown;
|
|
1393
|
-
constructor(status: number, body: unknown, message: string);
|
|
1394
|
-
}
|
|
1395
|
-
interface UseBusinessTypesResult {
|
|
1396
|
-
businessTypes: Ref<BusinessTypeRow[]>;
|
|
1397
|
-
loading: Ref<boolean>;
|
|
1398
|
-
error: Ref<Error | null>;
|
|
1399
|
-
load: () => Promise<void>;
|
|
1400
|
-
create: (data: CreateBusinessTypeData) => Promise<BusinessTypeRow>;
|
|
1401
|
-
update: (businessTypeId: string, data: UpdateBusinessTypeData) => Promise<BusinessTypeRow>;
|
|
1402
|
-
softDelete: (businessTypeId: string) => Promise<void>;
|
|
1403
|
-
}
|
|
1404
|
-
declare function useBusinessTypes(options: UseBusinessTypesOptions): UseBusinessTypesResult;
|
|
1405
|
-
interface UseBusinessTypeVersionsOptions {
|
|
1406
|
-
adminEndpoint: string;
|
|
1407
|
-
businessTypeId: string;
|
|
1408
|
-
http?: HttpClient;
|
|
1409
|
-
getAuthToken?: () => string | null;
|
|
1410
|
-
autoLoad?: boolean;
|
|
1411
|
-
}
|
|
1412
|
-
interface UseBusinessTypeVersionsResult {
|
|
1413
|
-
versions: Ref<BusinessTypeVersionRow[]>;
|
|
1414
|
-
loading: Ref<boolean>;
|
|
1415
|
-
error: Ref<Error | null>;
|
|
1416
|
-
load: () => Promise<void>;
|
|
1417
|
-
createDraft: (data: Omit<CreateBusinessTypeVersionDraftData, 'businessTypeId'>) => Promise<BusinessTypeVersionMutationResult>;
|
|
1418
|
-
updateDraft: (versionId: string, data: UpdateBusinessTypeVersionDraftData) => Promise<BusinessTypeVersionMutationResult>;
|
|
1419
|
-
publish: (versionId: string, opts?: {
|
|
1420
|
-
forceRegressive?: boolean;
|
|
1421
|
-
}) => Promise<BusinessTypeVersionMutationResult>;
|
|
1422
|
-
}
|
|
1423
|
-
declare function useBusinessTypeVersions(options: UseBusinessTypeVersionsOptions): UseBusinessTypeVersionsResult;
|
|
1424
|
-
|
|
1425
964
|
interface UseMarketingProjectionsOptions {
|
|
1426
965
|
adminEndpoint: string;
|
|
1427
966
|
http?: HttpClient;
|
|
@@ -1783,61 +1322,104 @@ interface UseBatchColumnsResult {
|
|
|
1783
1322
|
}
|
|
1784
1323
|
declare function useBatchColumns(manifest: Ref<AdminManifest | null>, tenantIds: Ref<string[]>, options?: BatchColumnFetcherOptions): UseBatchColumnsResult;
|
|
1785
1324
|
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
interface ResolvedPlan<P extends PlanVersionRow$1 = PlanVersionRow$1> {
|
|
1806
|
-
/** Which PlanVersionRow was selected to represent this slot. */
|
|
1807
|
-
source: P;
|
|
1808
|
-
/** Live predecessor (only set when `source` is a DRAFT; otherwise null). */
|
|
1809
|
-
liveBase: P | null;
|
|
1810
|
-
isDraft: boolean;
|
|
1811
|
-
planId: string;
|
|
1812
|
-
features: string[];
|
|
1813
|
-
/** Quota map (from `source.quotas` or legacy fields; empty if none). */
|
|
1814
|
-
quotas: Record<string, number>;
|
|
1815
|
-
monthlyNet: number;
|
|
1816
|
-
yearlyNet: number;
|
|
1817
|
-
marketed: boolean;
|
|
1818
|
-
version: number;
|
|
1819
|
-
/** @deprecated Read from `quotas['users']`. */
|
|
1820
|
-
maxUsers?: number;
|
|
1821
|
-
/** @deprecated Legacy field; read from `quotas['vehicles']`. */
|
|
1822
|
-
maxVehicles?: number;
|
|
1823
|
-
/** @deprecated Read from `quotas['storageGb']`. */
|
|
1824
|
-
maxStorageGb?: number;
|
|
1325
|
+
interface CreatePlatformLoadersOptions {
|
|
1326
|
+
/**
|
|
1327
|
+
* Same endpoint configuration as for `createSuperAdminApp()`.
|
|
1328
|
+
* `publicBootEndpoint` / `manifestEndpoint` are derived from `apiBase`
|
|
1329
|
+
* when not set explicitly.
|
|
1330
|
+
*/
|
|
1331
|
+
endpoints: SuperAdminEndpoints;
|
|
1332
|
+
/** HTTP adapter. App-specific, because auth-header / base-URL conventions vary. */
|
|
1333
|
+
http: HttpClient;
|
|
1334
|
+
/** Storage for the `ManifestLoader` ETag cache. Defaults to `defaultKvStore()`. */
|
|
1335
|
+
storage?: KvStore;
|
|
1336
|
+
/**
|
|
1337
|
+
* Storage key prefix — consumers with multiple apps under one domain
|
|
1338
|
+
* set this to e.g. `'ma:'` or `'da:'` so the caches stay separate.
|
|
1339
|
+
* Only forwarded to the `ManifestLoader`.
|
|
1340
|
+
*/
|
|
1341
|
+
storageKeyPrefix?: string;
|
|
1342
|
+
/** Auth-token provider for `Authorization: Bearer …` (ManifestLoader only). */
|
|
1343
|
+
getAuthToken?: () => string | null;
|
|
1825
1344
|
}
|
|
1826
|
-
interface
|
|
1827
|
-
|
|
1345
|
+
interface PlatformLoaders {
|
|
1346
|
+
bootLoader: BootLoader;
|
|
1347
|
+
manifestLoader: ManifestLoader;
|
|
1828
1348
|
}
|
|
1829
|
-
|
|
1349
|
+
/**
|
|
1350
|
+
* Builds `BootLoader` + `ManifestLoader` from a single endpoint constant.
|
|
1351
|
+
* Apps use the same constant for `createSuperAdminApp({ endpoints })`.
|
|
1352
|
+
*/
|
|
1353
|
+
declare function createPlatformLoaders(options: CreatePlatformLoadersOptions): PlatformLoaders;
|
|
1354
|
+
|
|
1355
|
+
declare const ProjectPageHost: vue.DefineComponent<{}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
1356
|
+
[key: string]: any;
|
|
1357
|
+
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
1358
|
+
/**
|
|
1359
|
+
* Returns a Vue Router child route that is registered as a catch-all under
|
|
1360
|
+
* the app's `/admin` layout. Children defined statically in the app router
|
|
1361
|
+
* (e.g. `/admin/dashboard`) win, because
|
|
1362
|
+
* Vue Router 4 matches specific routes before wildcard children.
|
|
1363
|
+
*
|
|
1364
|
+
* Example (simplified):
|
|
1365
|
+
*
|
|
1366
|
+
* {
|
|
1367
|
+
* path: '/admin',
|
|
1368
|
+
* component: AdminLayout,
|
|
1369
|
+
* children: [
|
|
1370
|
+
* { path: '', redirect: '/admin/dashboard' },
|
|
1371
|
+
* { path: 'dashboard', component: DashboardPage },
|
|
1372
|
+
* // ...more static children
|
|
1373
|
+
* createProjectPageHostRoute(),
|
|
1374
|
+
* ],
|
|
1375
|
+
* }
|
|
1376
|
+
*/
|
|
1377
|
+
declare function createProjectPageHostRoute(options?: {
|
|
1830
1378
|
/**
|
|
1831
|
-
*
|
|
1832
|
-
*
|
|
1833
|
-
*
|
|
1379
|
+
* Path pattern of the catch-all route. Default `:projectPagePath(.+)`, so
|
|
1380
|
+
* that `/admin` and `/admin/` are not swallowed by the ProjectPageHost,
|
|
1381
|
+
* but the dashboard redirect child can take effect.
|
|
1834
1382
|
*/
|
|
1835
|
-
|
|
1383
|
+
path?: string;
|
|
1384
|
+
}): RouteRecordRaw;
|
|
1385
|
+
|
|
1386
|
+
interface ManifestStoreState {
|
|
1387
|
+
manifest: Ref<AdminManifest | null>;
|
|
1388
|
+
loading: Ref<boolean>;
|
|
1389
|
+
error: Ref<Error | null>;
|
|
1390
|
+
loaded: Ref<boolean>;
|
|
1836
1391
|
}
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1392
|
+
interface ManifestStoreActions {
|
|
1393
|
+
/**
|
|
1394
|
+
* Loads once per session. Concurrent calls share the promise.
|
|
1395
|
+
*
|
|
1396
|
+
* **Behavior on loader error:** the store caches the error in
|
|
1397
|
+
* `error.value` and resets `loaded = false`/`manifest = null`, and the
|
|
1398
|
+
* promise REJECTS with the original error. Callers must either
|
|
1399
|
+
* call `.catch(...)` (defensive behavior) or let the rejection
|
|
1400
|
+
* propagate. The platform router guard
|
|
1401
|
+
* (`createSuperAdminApp({ manifestGuard.errorRoute })`) provides a
|
|
1402
|
+
* fail-closed path with a redirect to a dedicated error route.
|
|
1403
|
+
*/
|
|
1404
|
+
ensureLoaded: () => Promise<void>;
|
|
1405
|
+
/** Discards cache + state (logout path). */
|
|
1406
|
+
clearCache: () => void;
|
|
1407
|
+
/** Forces a server refresh (e.g. after `manifest reload`). */
|
|
1408
|
+
reload: () => Promise<void>;
|
|
1409
|
+
}
|
|
1410
|
+
interface CreateManifestStoreOptions {
|
|
1411
|
+
/** Platform `ManifestLoader` instance (typically via `createPlatformLoaders()`). */
|
|
1412
|
+
loader: ManifestLoader;
|
|
1413
|
+
/** Pinia store ID. Default `admin-manifest`. */
|
|
1414
|
+
id?: string;
|
|
1415
|
+
}
|
|
1416
|
+
type ManifestStoreDefinition = StoreDefinition<string, ManifestStoreState, Record<string, never>, ManifestStoreActions>;
|
|
1417
|
+
/**
|
|
1418
|
+
* Returns a `useStore` function for the manifest store. Apps call the
|
|
1419
|
+
* factory once at module top level and export the result as
|
|
1420
|
+
* `useManifestStore`.
|
|
1421
|
+
*/
|
|
1422
|
+
declare function createManifestStore(options: CreateManifestStoreOptions): ManifestStoreDefinition;
|
|
1841
1423
|
|
|
1842
1424
|
interface PilotCreatePayload {
|
|
1843
1425
|
tenant: {
|
|
@@ -1877,9 +1459,9 @@ interface PilotEditResult {
|
|
|
1877
1459
|
changed?: string[];
|
|
1878
1460
|
}
|
|
1879
1461
|
/**
|
|
1880
|
-
* Tenant-specific vocabulary for the pilot dialogs. The platform
|
|
1881
|
-
*
|
|
1882
|
-
* their domain language (e.g. "Verein" or "Händler").
|
|
1462
|
+
* Tenant-specific vocabulary for the pilot dialogs. The platform provides
|
|
1463
|
+
* neutral defaults via the `pilots.copyDefaults` message namespace; consumers
|
|
1464
|
+
* override with their domain language (e.g. "Verein" or "Händler").
|
|
1883
1465
|
*/
|
|
1884
1466
|
interface PilotCopy {
|
|
1885
1467
|
/** Subtitle of the tenant section in the create dialog. */
|
|
@@ -1895,8 +1477,6 @@ interface PilotCopy {
|
|
|
1895
1477
|
/** Placeholder for the internal note (create + edit). */
|
|
1896
1478
|
notePlaceholder?: string;
|
|
1897
1479
|
}
|
|
1898
|
-
/** Neutral, tenant-agnostic defaults for {@link PilotCopy}. */
|
|
1899
|
-
declare const DEFAULT_PILOT_COPY: Required<PilotCopy>;
|
|
1900
1480
|
type PromoCodeValueType = 'PERCENT' | 'ABSOLUTE';
|
|
1901
1481
|
type PromoCodeDurationType = 'ONCE' | 'MONTHS' | 'BILLING_CYCLES';
|
|
1902
1482
|
interface PromoCodeCreatePayload {
|
|
@@ -2053,343 +1633,172 @@ interface EmailHistoryResendResult {
|
|
|
2053
1633
|
message?: string;
|
|
2054
1634
|
}
|
|
2055
1635
|
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
/**
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
/**
|
|
2217
|
-
* Optional: `HttpClient` for all pre-login calls (boot, first-run setup).
|
|
2218
|
-
* Default `defaultHttpClient()` (= `fetch`). Consumers pass their own
|
|
2219
|
-
* variant through (auth header, baseURL, retry) — it then applies uniformly,
|
|
2220
|
-
* including for the setup wizard. Consumed via `useSuperAdminHttp()`.
|
|
2221
|
-
*/
|
|
2222
|
-
http?: HttpClient;
|
|
2223
|
-
}
|
|
2224
|
-
interface SuperAdminAppHandle {
|
|
2225
|
-
app: App;
|
|
2226
|
-
router: Router;
|
|
2227
|
-
pinia: Pinia;
|
|
2228
|
-
/** Mounts the app on a selector. Returns the root component instance. */
|
|
2229
|
-
mount: (selector: string | Element) => ReturnType<App['mount']>;
|
|
2230
|
-
}
|
|
2231
|
-
/** Vue inject key for `useSuperAdminBrand()`. */
|
|
2232
|
-
declare const SUPER_ADMIN_BRAND_KEY: InjectionKey<SuperAdminBrand>;
|
|
2233
|
-
/** Vue inject key for `useSuperAdminEndpoints()`. */
|
|
2234
|
-
declare const SUPER_ADMIN_ENDPOINTS_KEY: InjectionKey<Required<SuperAdminEndpoints>>;
|
|
2235
|
-
/** Vue inject key for `useSuperAdminExtensions()`. */
|
|
2236
|
-
declare const SUPER_ADMIN_EXTENSIONS_KEY: InjectionKey<ExtensionsMap>;
|
|
2237
|
-
/** Vue inject key for `useSuperAdminActions()`. */
|
|
2238
|
-
declare const SUPER_ADMIN_ACTIONS_KEY: InjectionKey<ActionsMap>;
|
|
2239
|
-
/**
|
|
2240
|
-
* Vue inject key for the manifest accessor. Only provided when
|
|
2241
|
-
* `manifestGuard.getManifest` was passed to `createSuperAdminApp()` — the
|
|
2242
|
-
* `<ProjectPageHost>` needs it to resolve project pages.
|
|
2243
|
-
*/
|
|
2244
|
-
declare const SUPER_ADMIN_MANIFEST_KEY: InjectionKey<() => AdminManifest | null>;
|
|
2245
|
-
/** Vue inject key for `useSuperAdminLoginAdapter()`. */
|
|
2246
|
-
declare const SUPER_ADMIN_LOGIN_ADAPTER_KEY: InjectionKey<SuperAdminLoginAdapter>;
|
|
2247
|
-
/** Vue inject key for `useSuperAdminHttp()` (pre-login HttpClient). */
|
|
2248
|
-
declare const SUPER_ADMIN_HTTP_KEY: InjectionKey<HttpClient>;
|
|
2249
|
-
/**
|
|
2250
|
-
* Universal bootstrap function for SuperAdmin apps. Replaces the `main.ts`
|
|
2251
|
-
* boilerplate duplicated per app today (Quasar + Pinia + Router + manifest
|
|
2252
|
-
* guard) and exposes the platform maps via `provide()` for downstream
|
|
2253
|
-
* components.
|
|
2254
|
-
*/
|
|
2255
|
-
declare function createSuperAdminApp(options: CreateSuperAdminAppOptions): SuperAdminAppHandle;
|
|
2256
|
-
/**
|
|
2257
|
-
* Internal helper, exported for isolated unit tests of the navigation
|
|
2258
|
-
* behavior (auth redirect, manifest fail-closed path). Consumers should call
|
|
2259
|
-
* `createSuperAdminApp()`, not this helper directly.
|
|
2260
|
-
*/
|
|
2261
|
-
declare function buildNavigationGuard(options: Pick<CreateSuperAdminAppOptions, 'authGuard' | 'manifestGuard'>): NavigationGuardWithThis<undefined> | null;
|
|
2262
|
-
|
|
2263
|
-
/** Returns the `extensions:` map registered in `createSuperAdminApp()`. */
|
|
2264
|
-
declare function useSuperAdminExtensions(): ExtensionsMap;
|
|
2265
|
-
/** Returns the `actions:` map registered in `createSuperAdminApp()`. */
|
|
2266
|
-
declare function useSuperAdminActions(): ActionsMap;
|
|
2267
|
-
/**
|
|
2268
|
-
* Returns the app branding. Throws when the component is rendered outside a
|
|
2269
|
-
* `createSuperAdminApp()` shell — that is a setup bug, not a runtime
|
|
2270
|
-
* problem.
|
|
2271
|
-
*/
|
|
2272
|
-
declare function useSuperAdminBrand(): SuperAdminBrand;
|
|
2273
|
-
/** Returns the app endpoints (apiBase, publicBootEndpoint, manifestEndpoint). */
|
|
2274
|
-
declare function useSuperAdminEndpoints(): Required<SuperAdminEndpoints>;
|
|
2275
|
-
/**
|
|
2276
|
-
* Returns the manifest accessor that was provided via
|
|
2277
|
-
* `createSuperAdminApp({ manifestGuard: { getManifest } })`.
|
|
2278
|
-
* Returns `null` if the app did not pass an accessor — components
|
|
2279
|
-
* (e.g. `<ProjectPageHost>`) must handle the null case cleanly, because
|
|
2280
|
-
* the accessor is optional.
|
|
2281
|
-
*/
|
|
2282
|
-
declare function useSuperAdminManifest(): AdminManifest | null;
|
|
2283
|
-
/**
|
|
2284
|
-
* Returns the login adapter the app registered via
|
|
2285
|
-
* `createSuperAdminApp({ loginAdapter })`. Throws when none was
|
|
2286
|
-
* set — the shared `<SuperAdminLoginPage>` needs it.
|
|
2287
|
-
*/
|
|
2288
|
-
declare function useSuperAdminLoginAdapter(): SuperAdminLoginAdapter;
|
|
2289
|
-
/**
|
|
2290
|
-
* Returns the pre-login `HttpClient` (boot, first-run setup) the app registered
|
|
2291
|
-
* via `createSuperAdminApp({ http })`. Falls back to `defaultHttpClient()`
|
|
2292
|
-
* if none was provided (e.g. in isolated tests).
|
|
2293
|
-
*/
|
|
2294
|
-
declare function useSuperAdminHttp(): HttpClient;
|
|
2295
|
-
|
|
2296
|
-
interface CreatePlatformLoadersOptions {
|
|
2297
|
-
/**
|
|
2298
|
-
* Same endpoint configuration as for `createSuperAdminApp()`.
|
|
2299
|
-
* `publicBootEndpoint` / `manifestEndpoint` are derived from `apiBase`
|
|
2300
|
-
* when not set explicitly.
|
|
2301
|
-
*/
|
|
2302
|
-
endpoints: SuperAdminEndpoints;
|
|
2303
|
-
/** HTTP adapter. App-specific, because auth-header / base-URL conventions vary. */
|
|
2304
|
-
http: HttpClient;
|
|
2305
|
-
/** Storage for the `ManifestLoader` ETag cache. Defaults to `defaultKvStore()`. */
|
|
2306
|
-
storage?: KvStore;
|
|
2307
|
-
/**
|
|
2308
|
-
* Storage key prefix — consumers with multiple apps under one domain
|
|
2309
|
-
* set this to e.g. `'ma:'` or `'da:'` so the caches stay separate.
|
|
2310
|
-
* Only forwarded to the `ManifestLoader`.
|
|
2311
|
-
*/
|
|
2312
|
-
storageKeyPrefix?: string;
|
|
2313
|
-
/** Auth-token provider for `Authorization: Bearer …` (ManifestLoader only). */
|
|
2314
|
-
getAuthToken?: () => string | null;
|
|
2315
|
-
}
|
|
2316
|
-
interface PlatformLoaders {
|
|
2317
|
-
bootLoader: BootLoader;
|
|
2318
|
-
manifestLoader: ManifestLoader;
|
|
2319
|
-
}
|
|
2320
|
-
/**
|
|
2321
|
-
* Builds `BootLoader` + `ManifestLoader` from a single endpoint constant.
|
|
2322
|
-
* Apps use the same constant for `createSuperAdminApp({ endpoints })`.
|
|
2323
|
-
*/
|
|
2324
|
-
declare function createPlatformLoaders(options: CreatePlatformLoadersOptions): PlatformLoaders;
|
|
2325
|
-
|
|
2326
|
-
declare const ProjectPageHost: vue.DefineComponent<{}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
2327
|
-
[key: string]: any;
|
|
2328
|
-
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
2329
|
-
/**
|
|
2330
|
-
* Returns a Vue Router child route that is registered as a catch-all under
|
|
2331
|
-
* the app's `/admin` layout. Children defined statically in the app router
|
|
2332
|
-
* (e.g. `/admin/dashboard`) win, because
|
|
2333
|
-
* Vue Router 4 matches specific routes before wildcard children.
|
|
2334
|
-
*
|
|
2335
|
-
* Example (simplified):
|
|
2336
|
-
*
|
|
2337
|
-
* {
|
|
2338
|
-
* path: '/admin',
|
|
2339
|
-
* component: AdminLayout,
|
|
2340
|
-
* children: [
|
|
2341
|
-
* { path: '', redirect: '/admin/dashboard' },
|
|
2342
|
-
* { path: 'dashboard', component: DashboardPage },
|
|
2343
|
-
* // ...more static children
|
|
2344
|
-
* createProjectPageHostRoute(),
|
|
2345
|
-
* ],
|
|
2346
|
-
* }
|
|
2347
|
-
*/
|
|
2348
|
-
declare function createProjectPageHostRoute(options?: {
|
|
2349
|
-
/**
|
|
2350
|
-
* Path pattern of the catch-all route. Default `:projectPagePath(.+)`, so
|
|
2351
|
-
* that `/admin` and `/admin/` are not swallowed by the ProjectPageHost,
|
|
2352
|
-
* but the dashboard redirect child can take effect.
|
|
2353
|
-
*/
|
|
2354
|
-
path?: string;
|
|
2355
|
-
}): RouteRecordRaw;
|
|
2356
|
-
|
|
2357
|
-
interface ManifestStoreState {
|
|
2358
|
-
manifest: Ref<AdminManifest | null>;
|
|
2359
|
-
loading: Ref<boolean>;
|
|
2360
|
-
error: Ref<Error | null>;
|
|
2361
|
-
loaded: Ref<boolean>;
|
|
2362
|
-
}
|
|
2363
|
-
interface ManifestStoreActions {
|
|
2364
|
-
/**
|
|
2365
|
-
* Loads once per session. Concurrent calls share the promise.
|
|
2366
|
-
*
|
|
2367
|
-
* **Behavior on loader error:** the store caches the error in
|
|
2368
|
-
* `error.value` and resets `loaded = false`/`manifest = null`, and the
|
|
2369
|
-
* promise REJECTS with the original error. Callers must either
|
|
2370
|
-
* call `.catch(...)` (defensive behavior) or let the rejection
|
|
2371
|
-
* propagate. The platform router guard
|
|
2372
|
-
* (`createSuperAdminApp({ manifestGuard.errorRoute })`) provides a
|
|
2373
|
-
* fail-closed path with a redirect to a dedicated error route.
|
|
2374
|
-
*/
|
|
2375
|
-
ensureLoaded: () => Promise<void>;
|
|
2376
|
-
/** Discards cache + state (logout path). */
|
|
2377
|
-
clearCache: () => void;
|
|
2378
|
-
/** Forces a server refresh (e.g. after `manifest reload`). */
|
|
2379
|
-
reload: () => Promise<void>;
|
|
2380
|
-
}
|
|
2381
|
-
interface CreateManifestStoreOptions {
|
|
2382
|
-
/** Platform `ManifestLoader` instance (typically via `createPlatformLoaders()`). */
|
|
2383
|
-
loader: ManifestLoader;
|
|
2384
|
-
/** Pinia store ID. Default `admin-manifest`. */
|
|
2385
|
-
id?: string;
|
|
1636
|
+
interface TenantPlanSectionI18n {
|
|
1637
|
+
sectionTitle: string;
|
|
1638
|
+
sectionSubtitle: string;
|
|
1639
|
+
loading: string;
|
|
1640
|
+
noSubscription: string;
|
|
1641
|
+
activePlan: string;
|
|
1642
|
+
cycleMonthly: string;
|
|
1643
|
+
cycleYearly: string;
|
|
1644
|
+
statusActive: string;
|
|
1645
|
+
statusTrial: string;
|
|
1646
|
+
statusPastDue: string;
|
|
1647
|
+
statusCanceled: string;
|
|
1648
|
+
statusPendingSales: string;
|
|
1649
|
+
trialEndsAt: string;
|
|
1650
|
+
pilotEndsAt: string;
|
|
1651
|
+
nextBillingDate: string;
|
|
1652
|
+
pendingChange: string;
|
|
1653
|
+
changeFromTo: string;
|
|
1654
|
+
changeEffectiveAt: string;
|
|
1655
|
+
changePlanButton: string;
|
|
1656
|
+
cancelSubscriptionButton: string;
|
|
1657
|
+
usageTitle: string;
|
|
1658
|
+
/** #18 — feature / scope-of-services matrix (included + locked). */
|
|
1659
|
+
featuresOverviewTitle: string;
|
|
1660
|
+
featuresActive: string;
|
|
1661
|
+
featuresLocked: string;
|
|
1662
|
+
/** #15 — bundle store (booked + available bundles). */
|
|
1663
|
+
bundlesStoreTitle: string;
|
|
1664
|
+
bundlesBookedTitle: string;
|
|
1665
|
+
bundlesAvailableTitle: string;
|
|
1666
|
+
bundlesAvailableEmpty: string;
|
|
1667
|
+
bundlesPerMonth: string;
|
|
1668
|
+
bundleBookAction: string;
|
|
1669
|
+
bundleBookInProgress: string;
|
|
1670
|
+
bundleCancelAction: string;
|
|
1671
|
+
bundleReactivateAction: string;
|
|
1672
|
+
bundleReactivateConfirmTitle: string;
|
|
1673
|
+
bundleReactivateConfirmBody: string;
|
|
1674
|
+
bundleCanceledAt: string;
|
|
1675
|
+
bundleMinimumTermUntil: string;
|
|
1676
|
+
bundleIncludesLabel: string;
|
|
1677
|
+
bundleAlreadyBooked: string;
|
|
1678
|
+
bundleIncompatible: string;
|
|
1679
|
+
/** #37/#61 — requires graying-out + booking/cancellation preview. */
|
|
1680
|
+
bundleMissingRequires: string;
|
|
1681
|
+
bundlePreviewAddTitle: string;
|
|
1682
|
+
bundlePreviewCancelTitle: string;
|
|
1683
|
+
bundlePreviewLoading: string;
|
|
1684
|
+
bundlePreviewProrationTitle: string;
|
|
1685
|
+
bundlePreviewProratedNow: string;
|
|
1686
|
+
bundlePreviewProrationDays: string;
|
|
1687
|
+
bundlePreviewNextPeriod: string;
|
|
1688
|
+
bundlePreviewTrialNote: string;
|
|
1689
|
+
bundlePreviewNoPrice: string;
|
|
1690
|
+
bundlePreviewMinimumTermLabel: string;
|
|
1691
|
+
bundlePreviewMinimumTermMonths: string;
|
|
1692
|
+
bundlePreviewMinimumTermNone: string;
|
|
1693
|
+
bundlePreviewRedundantTitle: string;
|
|
1694
|
+
bundlePreviewRedundantCoveredByPlan: string;
|
|
1695
|
+
bundlePreviewRedundantCoveredByBundle: string;
|
|
1696
|
+
bundlePreviewMissingRequiresTitle: string;
|
|
1697
|
+
bundlePreviewBlockersTitle: string;
|
|
1698
|
+
bundlePreviewWarningsTitle: string;
|
|
1699
|
+
bundlePreviewEffectiveAt: string;
|
|
1700
|
+
bundlePreviewSavings: string;
|
|
1701
|
+
bundlePreviewConfirmAdd: string;
|
|
1702
|
+
bundlePreviewConfirmCancel: string;
|
|
1703
|
+
bundlePreviewInProgress: string;
|
|
1704
|
+
bundlePreviewClose: string;
|
|
1705
|
+
pendingVersionTitle: string;
|
|
1706
|
+
pendingVersionChipNonRegressive: string;
|
|
1707
|
+
pendingVersionChipRegressive: string;
|
|
1708
|
+
pendingVersionEffectiveAt: string;
|
|
1709
|
+
pendingVersionAcceptAction: string;
|
|
1710
|
+
pendingVersionAcceptInProgress: string;
|
|
1711
|
+
pendingVersionAcceptedAt: string;
|
|
1712
|
+
wizardTitle: string;
|
|
1713
|
+
wizardClose: string;
|
|
1714
|
+
wizardCurrent: string;
|
|
1715
|
+
wizardBadgeCurrent: string;
|
|
1716
|
+
wizardBadgePopular: string;
|
|
1717
|
+
wizardPriceUnitMonthly: string;
|
|
1718
|
+
wizardPriceUnitYearly: string;
|
|
1719
|
+
wizardPriceOnRequest: string;
|
|
1720
|
+
wizardStepChoose: string;
|
|
1721
|
+
wizardStepChooseIntro: string;
|
|
1722
|
+
wizardStepPreview: string;
|
|
1723
|
+
wizardStepConfirm: string;
|
|
1724
|
+
wizardNext: string;
|
|
1725
|
+
wizardBack: string;
|
|
1726
|
+
wizardPreviewLoading: string;
|
|
1727
|
+
wizardEffectiveAtLabel: string;
|
|
1728
|
+
wizardEffectiveImmediate: string;
|
|
1729
|
+
wizardProrationTitle: string;
|
|
1730
|
+
wizardProrationLine: string;
|
|
1731
|
+
wizardProrationDays: string;
|
|
1732
|
+
wizardLimitsTitle: string;
|
|
1733
|
+
wizardLimitsUsed: string;
|
|
1734
|
+
wizardLimitsCurrent: string;
|
|
1735
|
+
wizardLimitsTarget: string;
|
|
1736
|
+
wizardFeaturesGained: string;
|
|
1737
|
+
wizardFeaturesLost: string;
|
|
1738
|
+
wizardBlockersTitle: string;
|
|
1739
|
+
wizardConfirmImmediate: string;
|
|
1740
|
+
wizardConfirmScheduled: string;
|
|
1741
|
+
wizardConfirmAction: string;
|
|
1742
|
+
wizardConfirmInProgress: string;
|
|
1743
|
+
/** #17 — price overview in the confirm step. */
|
|
1744
|
+
wizardConfirmPriceTitle: string;
|
|
1745
|
+
wizardConfirmProratedNow: string;
|
|
1746
|
+
wizardConfirmRecurringNext: string;
|
|
1747
|
+
wizardConfirmRecurringFrom: string;
|
|
1748
|
+
wizardConfirmPerCycleMonthly: string;
|
|
1749
|
+
wizardConfirmPerCycleYearly: string;
|
|
1750
|
+
/** #17 — trial case in the confirm step (nothing due during the trial). */
|
|
1751
|
+
wizardConfirmTrialNote: string;
|
|
1752
|
+
wizardConfirmRecurringTrialEnd: string;
|
|
1753
|
+
wizardChangeTypeUpgrade: string;
|
|
1754
|
+
wizardChangeTypeDowngrade: string;
|
|
1755
|
+
wizardChangeTypeCycle: string;
|
|
1756
|
+
wizardChangeTypeNoop: string;
|
|
1757
|
+
/** P11.4: read-only display of the package snapshot. */
|
|
1758
|
+
packageSnapshotTitle: string;
|
|
1759
|
+
packageSnapshotSubtitle: string;
|
|
1760
|
+
packageSnapshotCapturedAt: string;
|
|
1761
|
+
packageSnapshotOfferRef: string;
|
|
1762
|
+
packageSnapshotPlanLabel: string;
|
|
1763
|
+
packageSnapshotPlanVersionLabel: string;
|
|
1764
|
+
packageSnapshotCycleLabel: string;
|
|
1765
|
+
packageSnapshotBundlesLabel: string;
|
|
1766
|
+
packageSnapshotBundlesEmpty: string;
|
|
1767
|
+
packageSnapshotPriceMonthly: string;
|
|
1768
|
+
packageSnapshotPriceYearly: string;
|
|
1769
|
+
packageSnapshotPriceTotal: string;
|
|
1770
|
+
packageSnapshotNone: string;
|
|
1771
|
+
packageSnapshotShowRaw: string;
|
|
1772
|
+
packageSnapshotHideRaw: string;
|
|
1773
|
+
/** Inline error prefix (`Fehler: …`). */
|
|
1774
|
+
errorLabel: string;
|
|
1775
|
+
/** Tenant self-service page "Meine Bundles" (MySubscriptionBundlesPage). */
|
|
1776
|
+
myBundlesTitle: string;
|
|
1777
|
+
myBundlesSubtitle: string;
|
|
1778
|
+
myBundlesEmptyPrefix: string;
|
|
1779
|
+
myBundlesEmptySuffix: string;
|
|
1780
|
+
myBundlesBookedSince: string;
|
|
1781
|
+
myBundlesCanceledAt: string;
|
|
1782
|
+
myBundlesRunsUntil: string;
|
|
1783
|
+
myBundlesCancelInProgress: string;
|
|
1784
|
+
myBundlesBookInProgress: string;
|
|
1785
|
+
myBundlesCancelConfirm: string;
|
|
1786
|
+
myBundlesStatusCanceledPending: string;
|
|
1787
|
+
myBundlesStatusEnded: string;
|
|
1788
|
+
myBundlesAddBundleLabel: string;
|
|
1789
|
+
myBundlesAddSelectPlaceholder: string;
|
|
1790
|
+
myBundlesPricePerMonthShort: string;
|
|
1791
|
+
myBundlesHiddenIncompatible: string;
|
|
1792
|
+
myBundlesBundleVersionIdLabel: string;
|
|
1793
|
+
myBundlesBundleVersionIdPlaceholder: string;
|
|
1794
|
+
myBundlesMinimumTermLabel: string;
|
|
1795
|
+
myBundlesMinimumTermPlaceholder: string;
|
|
2386
1796
|
}
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
declare function createManifestStore(options: CreateManifestStoreOptions): ManifestStoreDefinition;
|
|
1797
|
+
/** German default strings — apps can override them selectively. */
|
|
1798
|
+
declare const DEFAULT_I18N_DE: TenantPlanSectionI18n;
|
|
1799
|
+
/** English default strings — mirror of {@link DEFAULT_I18N_DE}. */
|
|
1800
|
+
declare const DEFAULT_I18N_EN: TenantPlanSectionI18n;
|
|
1801
|
+
/** Default map for the given UI locale — fallback layer under the `i18n` prop. */
|
|
1802
|
+
declare function defaultTenantPlanSectionI18n(locale: SaLocale): TenantPlanSectionI18n;
|
|
2394
1803
|
|
|
2395
|
-
export {
|
|
1804
|
+
export { ActionHandler, ActionRegistry, ActionsMap, type ApiListResponse, BatchColumnData, BatchColumnFetcherOptions, type BillingCycleStr, BootLoader, BootLoaderOptions, BuildRouteEntry, type BulkItemKind, type BulkItemStatus, type BulkPublishItem, type BundleAddPreviewShape, type BundleCancelPreviewShape, type BundlePreviewIssueShape, type BundlePreviewShape, type BundlePreviewSnapshotShape, BundlesApiError, CATALOG_DEFAULT_LOCALE, type CatalogBundle, CatalogEntriesApiError, type CatalogPlan, type ConfirmDialogState, type CreateAdminRoutesOptions, type CreateManifestStoreOptions, type CreatePlatformLoadersOptions, DEFAULT_I18N_DE, DEFAULT_I18N_EN, DEFAULT_YEARLY_FACTOR, DiscoveryLoadError, type DraftPricing, ENTITLEMENT_INJECTION_KEY, type EmailHistoryDetail, type EmailHistoryFilter, type EmailHistoryListResult, type EmailHistoryResendResult, type EmailHistoryRow, type EmailHistoryStatus, type EntitlementSnapshotShape, ExtensionsMap, type FeatureRegistryEntry, type FeatureRouterGuardOptions, type FeatureRowMarkers, HttpClient, KvStore, ManifestLoader, ManifestLoaderOptions, type ManifestStoreActions, type ManifestStoreDefinition, type ManifestStoreState, MarketingProjectionsApiError, type MfaDialogState, NavBuilderOptions, type PackageSnapshotShape, type PilotCopy, type PilotCreatePayload, type PilotCreateResult, type PilotEditPayload, type PilotEditResult, type PlanChangePreviewShape, type PlanSnapshotShape, type PlanVersionListFilter, type PlanVersionRow, PlannedOnlyFeatureError, PlansApiError, type PlatformEmailProvider, type PlatformEmailTestInput, type PlatformEmailTestResult, type PlatformEmailWriteInput, type PlatformLoaders, type PlatformTenantActionRow, type PlatformTenantActionTone, type PlatformTenantActionsOptions, type PlatformTenantActionsResult, type PriceLineItem, ProjectPageHost, type PromoCodeCreatePayload, type PromoCodeDurationType, type PromoCodePlanOption, type PromoCodeUpdatePayload, type PromoCodeValueType, type PromoState, type PromoStatus, PromotionsApiError, type QuotaMeta, type RedundantFeatureHintShape, type ResolvedTenantAction, SaLocale, SidebarSection, type SubscriptionBundleShape, type SubscriptionDraft, SuperAdminBrand, SuperAdminEndpoints, SuperAdminLoginAdapter, type TenantActionFlowProviders, type TenantActionInput, type TenantManifestNavItem, type TenantManifestShape, type TenantPlanSectionI18n, type TenantRowLike, TenantSubscriptionBundlesApiError, type UsageSnapshotShape, type UseActionsResult, type UseApiListOptions, type UseApiListResult, type UseAuditEntriesOptions, type UseAuditEntriesResult, type UseBatchColumnsResult, type UseBulkPublishOptions, type UseBulkPublishResult, type UseBundleVersionsMapOptions, type UseBundleVersionsMapResult, type UseBundleVersionsOptions, type UseBundleVersionsResult, type UseBundlesOptions, type UseBundlesResult, type UseCatalogEntriesOptions, type UseCatalogEntriesResult, type UseDiscoveryOptions, type UseDiscoveryResult, type UseEntitlementOptions, type UseEntitlementResult, type UseLivePlanVersionsOptions, type UseLivePlanVersionsResult, type UseManifestResult, type UseMarketingProjectionsOptions, type UseMarketingProjectionsResult, type UseNavResult, type UsePlanEditorOptions, type UsePlanEditorResult, type UsePlanVersionsOptions, type UsePlanVersionsResult, type UsePlansOptions, type UsePlansResult, type UsePromotionsOptions, type UsePromotionsResult, type UsePublicBootResult, type UseSubscriptionDraftOptions, type UseTenantActionFlowResult, type UseTenantBillingCatalogOptions, type UseTenantBillingCatalogResult, type UseTenantBillingOptions, type UseTenantBillingResult, type UseTenantManifestOptions, type UseTenantManifestResult, type UseTenantSubscriptionBundlesOptions, type UseTenantSubscriptionBundlesResult, type UseTenantsOptions, type UseTenantsResult, type VersionsOptions, type VersionsResult, buildFeatureRegistry, buildFeatureRouterGuard, buildQuotaRegistry, createAdminRoutes, createManifestStore, createPlatformLoaders, createProjectPageHostRoute, defaultIconForActionKey, defaultTenantPlanSectionI18n, defaultToneForActionKey, provideEntitlement, useActions, useApiList, useAuditEntries, useBatchColumns, useBulkPublish, useBundleVersions, useBundleVersionsMap, useBundles, useCatalogEntries, useDiscovery, useEntitlement, useInjectedEntitlement, useLivePlanVersions, useManifest, useMarketingProjections, useNav, usePlanEditor, usePlanVersions, usePlanVersionsCatalog, usePlans, usePlatformTenantActions, usePromotions, usePublicBoot, useSubscriptionDraft, useSuperAdminActions, useSuperAdminBrand, useSuperAdminEndpoints, useSuperAdminExtensions, useSuperAdminHttp, useSuperAdminLoginAdapter, useSuperAdminManifest, useTenantActionFlow, useTenantBilling, useTenantBillingCatalog, useTenantManifest, useTenantSubscriptionBundles, useTenants };
|