@saasicat/ui-vue 0.22.2 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/README.md +1 -1
  2. package/dist/{chunk-LY52T4N4.js → chunk-TQQMKWN6.js} +58 -1
  3. package/dist/{chunk-XMMFN2WJ.js → chunk-VYMTWCTT.js} +51 -1
  4. package/dist/client/index.cjs +57 -0
  5. package/dist/client/index.d.cts +58 -1
  6. package/dist/client/index.d.ts +58 -1
  7. package/dist/client/index.js +15 -1
  8. package/dist/index.cjs +321 -159
  9. package/dist/index.d.cts +67 -4
  10. package/dist/index.d.ts +67 -4
  11. package/dist/index.js +72 -2
  12. package/dist/quasar/index.cjs +116 -20
  13. package/dist/quasar/index.d.cts +48 -3
  14. package/dist/quasar/index.d.ts +48 -3
  15. package/dist/quasar/index.js +58 -3
  16. package/dist/{use-super-admin-i18n-CgTuNi8h.d.cts → use-sa-theme-B5t7oXph.d.cts} +51 -1
  17. package/dist/{use-super-admin-i18n-CHNdsSlm.d.ts → use-sa-theme-OUBlaqgl.d.ts} +51 -1
  18. package/package.json +5 -2
  19. package/src/client/identity-accents.ts +129 -0
  20. package/src/client/index.ts +1 -0
  21. package/src/components/BundleVersionPublishDialog.vue +17 -17
  22. package/src/components/KvBlock.vue +6 -6
  23. package/src/components/MarketingPromotionsTab.vue +84 -80
  24. package/src/components/MfaPromptDialog.vue +2 -2
  25. package/src/components/TenantActionConfirmDialog.vue +5 -5
  26. package/src/components/VersionDiffPreview.vue +18 -18
  27. package/src/components/bundle-editor/BundleCreatePanel.vue +52 -52
  28. package/src/components/bundle-editor/BundleFeaturesEditor.vue +20 -20
  29. package/src/components/bundle-editor/BundlePlanCompatPicker.vue +33 -33
  30. package/src/components/bundle-editor/BundleQuotasEditor.vue +26 -26
  31. package/src/components/bundle-editor/BundleStatusBanner.vue +21 -21
  32. package/src/components/bundle-editor/BundleVersionInlineEditor.vue +49 -49
  33. package/src/components/bundle-editor/BundleVersionStrip.vue +30 -30
  34. package/src/components/dialogs/PilotCreateDialog.vue +20 -20
  35. package/src/components/dialogs/PilotEditDialog.vue +6 -6
  36. package/src/components/dialogs/PromoCodeCreateDialog.vue +9 -9
  37. package/src/components/dialogs/PromoCodeDialogFields.vue +64 -63
  38. package/src/components/dialogs/PromoCodeEditDialog.vue +11 -11
  39. package/src/components/dialogs/pilot-dialog.css +48 -48
  40. package/src/components/plan/PlanCycleToggle.vue +9 -16
  41. package/src/components/plan/PlanGrid.vue +30 -34
  42. package/src/components/plan/PriceSummary.vue +35 -35
  43. package/src/components/plan/PromoCodeInput.vue +26 -26
  44. package/src/components/plan/PublicBundleGrid.vue +32 -28
  45. package/src/components/plan-create-dialog/PlanCreateDialog.vue +50 -50
  46. package/src/components/plan-detail/PlanDetail.vue +178 -157
  47. package/src/components/plan-detail/PlanTitleEdit.vue +11 -11
  48. package/src/components/plan-list/PlanList.vue +116 -100
  49. package/src/components/plan-matrix/PlanMatrix.vue +97 -114
  50. package/src/components/plan-review/PlanReview.vue +61 -57
  51. package/src/components/plan-version-editor/PlanVersionEditor.vue +246 -203
  52. package/src/components/wizard-stepper/WizardStepper.vue +17 -17
  53. package/src/index.ts +1 -0
  54. package/src/pages-standard/AdminLayout.vue +58 -37
  55. package/src/pages-standard/AdminManifestErrorPage.vue +6 -6
  56. package/src/pages-standard/AuditPage.vue +3 -3
  57. package/src/pages-standard/BundlesPage.vue +37 -37
  58. package/src/pages-standard/DashboardPage.vue +22 -19
  59. package/src/pages-standard/DiscoveryPage.vue +55 -49
  60. package/src/pages-standard/EmailHistoryPage.vue +53 -71
  61. package/src/pages-standard/MarketingCatalogPage.vue +245 -221
  62. package/src/pages-standard/PilotsPage.vue +7 -6
  63. package/src/pages-standard/PlatformEmailPage.vue +18 -18
  64. package/src/pages-standard/PromoCodeDetailPage.vue +3 -3
  65. package/src/pages-standard/PromoCodesPage.vue +10 -7
  66. package/src/pages-standard/SuperAdminLoginPage.vue +39 -25
  67. package/src/pages-standard/SuperAdminSetupWizard.vue +44 -33
  68. package/src/pages-standard/TenantDetailPage.vue +7 -7
  69. package/src/pages-standard/TenantsPage.vue +16 -50
  70. package/src/pages-standard/bundles-page/BundleAccordionList.vue +13 -13
  71. package/src/pages-standard/discovery-page/CatalogEntryTransPanel.vue +24 -24
  72. package/src/pages-standard/discovery-page/DiscoveryCapList.vue +22 -22
  73. package/src/pages-standard/discovery-page/DiscoveryFeatureCard.vue +39 -39
  74. package/src/pages-standard/discovery-page/DiscoveryQuotaCard.vue +26 -26
  75. package/src/pages-standard/discovery-page/DiscoveryStatusControl.vue +1 -1
  76. package/src/pages-standard/discovery-page/discovery-ui.ts +10 -7
  77. package/src/pages-standard/marketing-catalog/MarketingCatalogAdmin.vue +2 -5
  78. package/src/pages-standard/plan-versions/PlanDiffCard.vue +27 -20
  79. package/src/pages-standard/plan-versions/PlanVersionsDiff.vue +24 -16
  80. package/src/pages-standard/plan-versions/PlanVersionsTimeline.vue +45 -45
  81. package/src/pages-standard/plans-page/PlanBundleOverview.vue +21 -15
  82. package/src/pages-standard/plans-page/PlanPublishDialog.vue +4 -4
  83. package/src/pages-standard/plans-page/PlansPageToast.vue +6 -6
  84. package/src/pages-standard/sa-theme.css +9 -687
  85. package/src/pages-standard/tenants/StatusPill.vue +13 -13
  86. package/src/pages-standard/tenants/format.ts +11 -12
  87. package/src/pages-tenant/LimitsRow.vue +4 -4
  88. package/src/pages-tenant/MySubscriptionBundlesPage.vue +70 -61
  89. package/src/pages-tenant/OnboardingConfigurator.vue +25 -25
  90. package/src/pages-tenant/PackageSnapshotPanel.vue +10 -16
  91. package/src/pages-tenant/PendingVersionBanner.vue +12 -12
  92. package/src/pages-tenant/PlanChangeWizard.vue +22 -76
  93. package/src/pages-tenant/TenantPlanSection.vue +19 -69
  94. package/src/pages-tenant/UsageBar.vue +7 -7
  95. package/src/pages-tenant/default-i18n.ts +113 -0
  96. package/src/pages-tenant/tenant-plan-section/BundlePreviewDialog.vue +14 -14
  97. package/src/pages-tenant/tenant-plan-section/TenantBundleStore.vue +10 -10
  98. package/src/pages-tenant/tenant-plan-section/TenantFeatureMatrix.vue +2 -2
  99. package/src/quasar/create-super-admin-app.ts +96 -1
  100. package/src/quasar/dark-bridge.ts +66 -0
  101. package/src/quasar/index.ts +1 -0
  102. package/src/ui/theme/_breakpoints.scss +34 -0
  103. package/src/ui/theme/base.css +50 -0
  104. package/src/ui/theme/components/body.css +23 -0
  105. package/src/ui/theme/components/button.css +158 -0
  106. package/src/ui/theme/components/card.css +74 -0
  107. package/src/ui/theme/components/field.css +38 -0
  108. package/src/ui/theme/components/hero.css +46 -0
  109. package/src/ui/theme/components/paginator.css +63 -0
  110. package/src/ui/theme/components/section.css +67 -0
  111. package/src/ui/theme/components/statistics.css +189 -0
  112. package/src/ui/theme/components/table.css +60 -0
  113. package/src/ui/theme/index.css +42 -0
  114. package/src/ui/theme/tokens.legacy.css +147 -0
  115. package/src/ui/theme/tokens.primitive.css +112 -0
  116. package/src/ui/theme/tokens.scale.css +103 -0
  117. package/src/ui/theme/tokens.semantic.dark.css +185 -0
  118. package/src/ui/theme/tokens.semantic.light.css +242 -0
  119. package/src/vue/use-sa-theme.ts +154 -0
package/dist/index.d.cts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { BootLoaderOptions, ManifestLoaderOptions, BuildRouteEntry, SidebarSection, NavBuilderOptions, BatchColumnData, BatchColumnFetcherOptions, BootLoader, ManifestLoader } from './client/index.cjs';
2
- export { ADMIN_UI_VERSION, AdminPromoListFilter, AdminPromoListRow, AdminResourceClientOptions, BatchColumnDriftError, BatchColumnFetcher, BatchColumnRow, BatchColumnValue, BootLoadError, CachedManifestEntry, DEFAULT_STANDARD_PAGE_ROUTES, HttpJsonError, LoginBootProject, LoginBrandFallback, LoginBranding, ManifestLoadError, MessageParams, ParamStyle, PlanCounts, PlanRowLike, PlanVersionLike, ResolvePlansInput, ResolvedPlan, SidebarItem, buildRoutes, buildSidebar, countPlans, createAdminResourceClient, defaultSectionOrder, formatCurrency, formatMessage, getJson, isCurrentlyValid, isExpired, isFutureScheduled, isProductionBoot, postJson, resolveExtension, resolveLoginBranding, resolvePlans, todayIsoDate, trimTrailingSlashes } from './client/index.cjs';
2
+ export { ADMIN_UI_VERSION, AdminPromoListFilter, AdminPromoListRow, AdminResourceClientOptions, BatchColumnDriftError, BatchColumnFetcher, BatchColumnRow, BatchColumnValue, BootLoadError, CachedManifestEntry, DEFAULT_STANDARD_PAGE_ROUTES, HttpJsonError, IDENTITY_ACCENTS, IDENTITY_ACCENT_VALUES, IDENTITY_NEUTRAL, IDENTITY_NEUTRAL_VALUE, LoginBootProject, LoginBrandFallback, LoginBranding, ManifestLoadError, MessageParams, ParamStyle, PlanCounts, PlanRowLike, PlanVersionLike, ResolvePlansInput, ResolvedPlan, SidebarItem, buildRoutes, buildSidebar, countPlans, createAdminResourceClient, defaultSectionOrder, formatCurrency, formatMessage, getJson, identityAccentAt, identityAccentFor, identityChipStyle, isCurrentlyValid, isExpired, isFutureScheduled, isProductionBoot, postJson, resolveExtension, resolveLoginBranding, resolvePlans, todayIsoDate, trimTrailingSlashes } from './client/index.cjs';
3
3
  import { H as HttpClient, e as ActionRegistry, A as ActionHandler, K as KvStore, S as SaLocale } from './catalog-DJcfm5N2.cjs';
4
4
  export { f as ActionDefNotInManifestError, D as DEFAULT_SA_LOCALE, g as HttpResponse, M as MessageTree, h as MissingHandlerError, P as PartialMessages, R as ResolvedAction, i as SA_INTL_LOCALES, j as SA_LOCALES, k as SA_LOCALE_LABELS, l as SA_MESSAGES, m as SaBuiltinLocale, n as SaCatalog, o as SaCatalogOptions, c as SaLocaleDefinition, b as SaLocaleOption, a as SaMessages, d as SaMessagesOverrides, T as TranslationOf, p as createSaCatalog, q as defaultHttpClient, r as defaultKvStore, s as defineMessages, t as isSaBuiltinLocale, u as mergeMessages, v as resolveMessages } from './catalog-DJcfm5N2.cjs';
5
- import { A as ActionsMap, a as SuperAdminBrand, b as SuperAdminEndpoints, E as ExtensionsMap, c as SuperAdminLoginAdapter } from './use-super-admin-i18n-CgTuNi8h.cjs';
6
- export { f as ExtensionLoader, I as InstallPlugin, g as SA_LOCALE_STORAGE_KEY, h as SUPER_ADMIN_ACTIONS_KEY, i as SUPER_ADMIN_BRAND_KEY, j as SUPER_ADMIN_ENDPOINTS_KEY, k as SUPER_ADMIN_EXTENSIONS_KEY, l as SUPER_ADMIN_HTTP_KEY, m as SUPER_ADMIN_I18N_KEY, n as SUPER_ADMIN_LOGIN_ADAPTER_KEY, o as SUPER_ADMIN_MANIFEST_CLEAR_CACHE_KEY, p as SUPER_ADMIN_MANIFEST_KEY, q as SUPER_ADMIN_NOTIFY_KEY, r as SuperAdminAuthGuardOptions, S as SuperAdminGuardOptions, e as SuperAdminI18n, d as SuperAdminI18nOptions, s as SuperAdminLoginResult, t as SuperAdminManifestGuardOptions, U as UiNotify, u as UiNotifyKind, v as UiNotifyOptions, w as buildNavigationGuard, x as createSuperAdminI18n, y as useSaMessages, z as useSuperAdminI18n } from './use-super-admin-i18n-CgTuNi8h.cjs';
5
+ import { A as ActionsMap, a as SuperAdminBrand, b as SuperAdminEndpoints, E as ExtensionsMap, c as SuperAdminLoginAdapter } from './use-sa-theme-B5t7oXph.cjs';
6
+ export { h as ExtensionLoader, I as InstallPlugin, i as SA_LOCALE_STORAGE_KEY, j as SA_THEME_KEY, k as SUPER_ADMIN_ACTIONS_KEY, l as SUPER_ADMIN_BRAND_KEY, m as SUPER_ADMIN_ENDPOINTS_KEY, n as SUPER_ADMIN_EXTENSIONS_KEY, o as SUPER_ADMIN_HTTP_KEY, p as SUPER_ADMIN_I18N_KEY, q as SUPER_ADMIN_LOGIN_ADAPTER_KEY, r as SUPER_ADMIN_MANIFEST_CLEAR_CACHE_KEY, s as SUPER_ADMIN_MANIFEST_KEY, t as SUPER_ADMIN_NOTIFY_KEY, u as SaColorScheme, v as SaResolvedScheme, g as SaTheme, e as SaThemeOptions, w as SuperAdminAuthGuardOptions, S as SuperAdminGuardOptions, f as SuperAdminI18n, d as SuperAdminI18nOptions, x as SuperAdminLoginResult, y as SuperAdminManifestGuardOptions, U as UiNotify, z as UiNotifyKind, B as UiNotifyOptions, C as buildNavigationGuard, D as createSaTheme, F as createSuperAdminI18n, G as useSaMessages, H as useSaTheme, J as useSuperAdminI18n } from './use-sa-theme-B5t7oXph.cjs';
7
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, CreatePlanVersionDraftData, PlanVersionMutationResult, UpdatePlanVersionDraftData, PlanRow, CreatePlanData, UpdatePlanData, TenantActionDef } from '@saasicat/types';
8
8
  import { RouteRecordRaw, NavigationGuardWithThis } from 'vue-router';
9
9
  import * as vue from 'vue';
@@ -1777,5 +1777,68 @@ declare const DEFAULT_I18N_DE: TenantPlanSectionI18n;
1777
1777
  declare const DEFAULT_I18N_EN: TenantPlanSectionI18n;
1778
1778
  /** Default map for the given UI locale — fallback layer under the `i18n` prop. */
1779
1779
  declare function defaultTenantPlanSectionI18n(locale: SaLocale): TenantPlanSectionI18n;
1780
+ /**
1781
+ * The strings `PlanChangeWizard` takes.
1782
+ *
1783
+ * A projection of `TenantPlanSectionI18n` with the `wizard` prefix dropped, so
1784
+ * the wizard's own template reads `i18n.stepChoose` rather than
1785
+ * `i18n.wizardStepChoose`.
1786
+ */
1787
+ interface PlanChangeWizardI18n {
1788
+ title: string;
1789
+ close: string;
1790
+ currentLabel: string;
1791
+ cycleMonthly: string;
1792
+ cycleYearly: string;
1793
+ badgeCurrent: string;
1794
+ badgePopular: string;
1795
+ priceUnitMonthly: string;
1796
+ priceUnitYearly: string;
1797
+ priceOnRequest: string;
1798
+ stepChoose: string;
1799
+ stepChooseIntro: string;
1800
+ stepPreview: string;
1801
+ stepConfirm: string;
1802
+ next: string;
1803
+ back: string;
1804
+ previewLoading: string;
1805
+ effectiveAtLabel: string;
1806
+ effectiveImmediate: string;
1807
+ prorationTitle: string;
1808
+ prorationLine: string;
1809
+ prorationDays: string;
1810
+ limitsTitle: string;
1811
+ limitsUsed: string;
1812
+ limitsCurrent: string;
1813
+ limitsTarget: string;
1814
+ featuresGained: string;
1815
+ featuresLost: string;
1816
+ blockersTitle: string;
1817
+ confirmImmediate: string;
1818
+ confirmScheduled: string;
1819
+ confirmAction: string;
1820
+ confirmInProgress: string;
1821
+ confirmPriceTitle: string;
1822
+ confirmProratedNow: string;
1823
+ confirmRecurringNext: string;
1824
+ confirmRecurringFrom: string;
1825
+ perCycleMonthly: string;
1826
+ perCycleYearly: string;
1827
+ confirmTrialNote: string;
1828
+ confirmRecurringTrialEnd: string;
1829
+ changeTypeUpgrade: string;
1830
+ changeTypeDowngrade: string;
1831
+ changeTypeCycle: string;
1832
+ changeTypeNoop: string;
1833
+ }
1834
+ /**
1835
+ * Builds the wizard's strings from the section's.
1836
+ *
1837
+ * Here rather than inline in `TenantPlanSection.vue`, because the wizard is an
1838
+ * exported component: a consumer who mounts it directly would otherwise have to
1839
+ * reproduce all 44 keys of this mapping by hand, and a visual fixture had to do
1840
+ * exactly that before it moved.
1841
+ */
1842
+ declare function planChangeWizardI18n(i18n: TenantPlanSectionI18n): PlanChangeWizardI18n;
1780
1843
 
1781
- export { ALL_ROWS, 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_ROWS_PER_PAGE, 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, PAGE_SIZE_OPTIONS, type PackageSnapshotShape, type PilotCopy, type PilotCreatePayload, type PilotCreateResult, type PilotEditPayload, type PilotEditResult, type PlanChangePreviewShape, type PlanSnapshotShape, 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, SERVER_PAGE_SIZE_OPTIONS, 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 UsePaginationResult, 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, 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, usePagination, usePlanEditor, usePlanVersions, usePlans, usePlatformTenantActions, usePromotions, usePublicBoot, useSubscriptionDraft, useSuperAdminActions, useSuperAdminBrand, useSuperAdminEndpoints, useSuperAdminExtensions, useSuperAdminHttp, useSuperAdminLoginAdapter, useSuperAdminManifest, useTenantActionFlow, useTenantBilling, useTenantBillingCatalog, useTenantManifest, useTenantSubscriptionBundles, useTenants };
1844
+ export { ALL_ROWS, 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_ROWS_PER_PAGE, 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, PAGE_SIZE_OPTIONS, type PackageSnapshotShape, type PilotCopy, type PilotCreatePayload, type PilotCreateResult, type PilotEditPayload, type PilotEditResult, type PlanChangePreviewShape, type PlanChangeWizardI18n, type PlanSnapshotShape, 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, SERVER_PAGE_SIZE_OPTIONS, 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 UsePaginationResult, 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, buildFeatureRegistry, buildFeatureRouterGuard, buildQuotaRegistry, createAdminRoutes, createManifestStore, createPlatformLoaders, createProjectPageHostRoute, defaultIconForActionKey, defaultTenantPlanSectionI18n, defaultToneForActionKey, planChangeWizardI18n, provideEntitlement, useActions, useApiList, useAuditEntries, useBatchColumns, useBulkPublish, useBundleVersions, useBundleVersionsMap, useBundles, useCatalogEntries, useDiscovery, useEntitlement, useInjectedEntitlement, useLivePlanVersions, useManifest, useMarketingProjections, useNav, usePagination, usePlanEditor, usePlanVersions, usePlans, usePlatformTenantActions, usePromotions, usePublicBoot, useSubscriptionDraft, useSuperAdminActions, useSuperAdminBrand, useSuperAdminEndpoints, useSuperAdminExtensions, useSuperAdminHttp, useSuperAdminLoginAdapter, useSuperAdminManifest, useTenantActionFlow, useTenantBilling, useTenantBillingCatalog, useTenantManifest, useTenantSubscriptionBundles, useTenants };
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { BootLoaderOptions, ManifestLoaderOptions, BuildRouteEntry, SidebarSection, NavBuilderOptions, BatchColumnData, BatchColumnFetcherOptions, BootLoader, ManifestLoader } from './client/index.js';
2
- export { ADMIN_UI_VERSION, AdminPromoListFilter, AdminPromoListRow, AdminResourceClientOptions, BatchColumnDriftError, BatchColumnFetcher, BatchColumnRow, BatchColumnValue, BootLoadError, CachedManifestEntry, DEFAULT_STANDARD_PAGE_ROUTES, HttpJsonError, LoginBootProject, LoginBrandFallback, LoginBranding, ManifestLoadError, MessageParams, ParamStyle, PlanCounts, PlanRowLike, PlanVersionLike, ResolvePlansInput, ResolvedPlan, SidebarItem, buildRoutes, buildSidebar, countPlans, createAdminResourceClient, defaultSectionOrder, formatCurrency, formatMessage, getJson, isCurrentlyValid, isExpired, isFutureScheduled, isProductionBoot, postJson, resolveExtension, resolveLoginBranding, resolvePlans, todayIsoDate, trimTrailingSlashes } from './client/index.js';
2
+ export { ADMIN_UI_VERSION, AdminPromoListFilter, AdminPromoListRow, AdminResourceClientOptions, BatchColumnDriftError, BatchColumnFetcher, BatchColumnRow, BatchColumnValue, BootLoadError, CachedManifestEntry, DEFAULT_STANDARD_PAGE_ROUTES, HttpJsonError, IDENTITY_ACCENTS, IDENTITY_ACCENT_VALUES, IDENTITY_NEUTRAL, IDENTITY_NEUTRAL_VALUE, LoginBootProject, LoginBrandFallback, LoginBranding, ManifestLoadError, MessageParams, ParamStyle, PlanCounts, PlanRowLike, PlanVersionLike, ResolvePlansInput, ResolvedPlan, SidebarItem, buildRoutes, buildSidebar, countPlans, createAdminResourceClient, defaultSectionOrder, formatCurrency, formatMessage, getJson, identityAccentAt, identityAccentFor, identityChipStyle, isCurrentlyValid, isExpired, isFutureScheduled, isProductionBoot, postJson, resolveExtension, resolveLoginBranding, resolvePlans, todayIsoDate, trimTrailingSlashes } from './client/index.js';
3
3
  import { H as HttpClient, e as ActionRegistry, A as ActionHandler, K as KvStore, S as SaLocale } from './catalog-DJcfm5N2.js';
4
4
  export { f as ActionDefNotInManifestError, D as DEFAULT_SA_LOCALE, g as HttpResponse, M as MessageTree, h as MissingHandlerError, P as PartialMessages, R as ResolvedAction, i as SA_INTL_LOCALES, j as SA_LOCALES, k as SA_LOCALE_LABELS, l as SA_MESSAGES, m as SaBuiltinLocale, n as SaCatalog, o as SaCatalogOptions, c as SaLocaleDefinition, b as SaLocaleOption, a as SaMessages, d as SaMessagesOverrides, T as TranslationOf, p as createSaCatalog, q as defaultHttpClient, r as defaultKvStore, s as defineMessages, t as isSaBuiltinLocale, u as mergeMessages, v as resolveMessages } from './catalog-DJcfm5N2.js';
5
- import { A as ActionsMap, a as SuperAdminBrand, b as SuperAdminEndpoints, E as ExtensionsMap, c as SuperAdminLoginAdapter } from './use-super-admin-i18n-CHNdsSlm.js';
6
- export { f as ExtensionLoader, I as InstallPlugin, g as SA_LOCALE_STORAGE_KEY, h as SUPER_ADMIN_ACTIONS_KEY, i as SUPER_ADMIN_BRAND_KEY, j as SUPER_ADMIN_ENDPOINTS_KEY, k as SUPER_ADMIN_EXTENSIONS_KEY, l as SUPER_ADMIN_HTTP_KEY, m as SUPER_ADMIN_I18N_KEY, n as SUPER_ADMIN_LOGIN_ADAPTER_KEY, o as SUPER_ADMIN_MANIFEST_CLEAR_CACHE_KEY, p as SUPER_ADMIN_MANIFEST_KEY, q as SUPER_ADMIN_NOTIFY_KEY, r as SuperAdminAuthGuardOptions, S as SuperAdminGuardOptions, e as SuperAdminI18n, d as SuperAdminI18nOptions, s as SuperAdminLoginResult, t as SuperAdminManifestGuardOptions, U as UiNotify, u as UiNotifyKind, v as UiNotifyOptions, w as buildNavigationGuard, x as createSuperAdminI18n, y as useSaMessages, z as useSuperAdminI18n } from './use-super-admin-i18n-CHNdsSlm.js';
5
+ import { A as ActionsMap, a as SuperAdminBrand, b as SuperAdminEndpoints, E as ExtensionsMap, c as SuperAdminLoginAdapter } from './use-sa-theme-OUBlaqgl.js';
6
+ export { h as ExtensionLoader, I as InstallPlugin, i as SA_LOCALE_STORAGE_KEY, j as SA_THEME_KEY, k as SUPER_ADMIN_ACTIONS_KEY, l as SUPER_ADMIN_BRAND_KEY, m as SUPER_ADMIN_ENDPOINTS_KEY, n as SUPER_ADMIN_EXTENSIONS_KEY, o as SUPER_ADMIN_HTTP_KEY, p as SUPER_ADMIN_I18N_KEY, q as SUPER_ADMIN_LOGIN_ADAPTER_KEY, r as SUPER_ADMIN_MANIFEST_CLEAR_CACHE_KEY, s as SUPER_ADMIN_MANIFEST_KEY, t as SUPER_ADMIN_NOTIFY_KEY, u as SaColorScheme, v as SaResolvedScheme, g as SaTheme, e as SaThemeOptions, w as SuperAdminAuthGuardOptions, S as SuperAdminGuardOptions, f as SuperAdminI18n, d as SuperAdminI18nOptions, x as SuperAdminLoginResult, y as SuperAdminManifestGuardOptions, U as UiNotify, z as UiNotifyKind, B as UiNotifyOptions, C as buildNavigationGuard, D as createSaTheme, F as createSuperAdminI18n, G as useSaMessages, H as useSaTheme, J as useSuperAdminI18n } from './use-sa-theme-OUBlaqgl.js';
7
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, CreatePlanVersionDraftData, PlanVersionMutationResult, UpdatePlanVersionDraftData, PlanRow, CreatePlanData, UpdatePlanData, TenantActionDef } from '@saasicat/types';
8
8
  import { RouteRecordRaw, NavigationGuardWithThis } from 'vue-router';
9
9
  import * as vue from 'vue';
@@ -1777,5 +1777,68 @@ declare const DEFAULT_I18N_DE: TenantPlanSectionI18n;
1777
1777
  declare const DEFAULT_I18N_EN: TenantPlanSectionI18n;
1778
1778
  /** Default map for the given UI locale — fallback layer under the `i18n` prop. */
1779
1779
  declare function defaultTenantPlanSectionI18n(locale: SaLocale): TenantPlanSectionI18n;
1780
+ /**
1781
+ * The strings `PlanChangeWizard` takes.
1782
+ *
1783
+ * A projection of `TenantPlanSectionI18n` with the `wizard` prefix dropped, so
1784
+ * the wizard's own template reads `i18n.stepChoose` rather than
1785
+ * `i18n.wizardStepChoose`.
1786
+ */
1787
+ interface PlanChangeWizardI18n {
1788
+ title: string;
1789
+ close: string;
1790
+ currentLabel: string;
1791
+ cycleMonthly: string;
1792
+ cycleYearly: string;
1793
+ badgeCurrent: string;
1794
+ badgePopular: string;
1795
+ priceUnitMonthly: string;
1796
+ priceUnitYearly: string;
1797
+ priceOnRequest: string;
1798
+ stepChoose: string;
1799
+ stepChooseIntro: string;
1800
+ stepPreview: string;
1801
+ stepConfirm: string;
1802
+ next: string;
1803
+ back: string;
1804
+ previewLoading: string;
1805
+ effectiveAtLabel: string;
1806
+ effectiveImmediate: string;
1807
+ prorationTitle: string;
1808
+ prorationLine: string;
1809
+ prorationDays: string;
1810
+ limitsTitle: string;
1811
+ limitsUsed: string;
1812
+ limitsCurrent: string;
1813
+ limitsTarget: string;
1814
+ featuresGained: string;
1815
+ featuresLost: string;
1816
+ blockersTitle: string;
1817
+ confirmImmediate: string;
1818
+ confirmScheduled: string;
1819
+ confirmAction: string;
1820
+ confirmInProgress: string;
1821
+ confirmPriceTitle: string;
1822
+ confirmProratedNow: string;
1823
+ confirmRecurringNext: string;
1824
+ confirmRecurringFrom: string;
1825
+ perCycleMonthly: string;
1826
+ perCycleYearly: string;
1827
+ confirmTrialNote: string;
1828
+ confirmRecurringTrialEnd: string;
1829
+ changeTypeUpgrade: string;
1830
+ changeTypeDowngrade: string;
1831
+ changeTypeCycle: string;
1832
+ changeTypeNoop: string;
1833
+ }
1834
+ /**
1835
+ * Builds the wizard's strings from the section's.
1836
+ *
1837
+ * Here rather than inline in `TenantPlanSection.vue`, because the wizard is an
1838
+ * exported component: a consumer who mounts it directly would otherwise have to
1839
+ * reproduce all 44 keys of this mapping by hand, and a visual fixture had to do
1840
+ * exactly that before it moved.
1841
+ */
1842
+ declare function planChangeWizardI18n(i18n: TenantPlanSectionI18n): PlanChangeWizardI18n;
1780
1843
 
1781
- export { ALL_ROWS, 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_ROWS_PER_PAGE, 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, PAGE_SIZE_OPTIONS, type PackageSnapshotShape, type PilotCopy, type PilotCreatePayload, type PilotCreateResult, type PilotEditPayload, type PilotEditResult, type PlanChangePreviewShape, type PlanSnapshotShape, 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, SERVER_PAGE_SIZE_OPTIONS, 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 UsePaginationResult, 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, 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, usePagination, usePlanEditor, usePlanVersions, usePlans, usePlatformTenantActions, usePromotions, usePublicBoot, useSubscriptionDraft, useSuperAdminActions, useSuperAdminBrand, useSuperAdminEndpoints, useSuperAdminExtensions, useSuperAdminHttp, useSuperAdminLoginAdapter, useSuperAdminManifest, useTenantActionFlow, useTenantBilling, useTenantBillingCatalog, useTenantManifest, useTenantSubscriptionBundles, useTenants };
1844
+ export { ALL_ROWS, 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_ROWS_PER_PAGE, 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, PAGE_SIZE_OPTIONS, type PackageSnapshotShape, type PilotCopy, type PilotCreatePayload, type PilotCreateResult, type PilotEditPayload, type PilotEditResult, type PlanChangePreviewShape, type PlanChangeWizardI18n, type PlanSnapshotShape, 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, SERVER_PAGE_SIZE_OPTIONS, 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 UsePaginationResult, 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, buildFeatureRegistry, buildFeatureRouterGuard, buildQuotaRegistry, createAdminRoutes, createManifestStore, createPlatformLoaders, createProjectPageHostRoute, defaultIconForActionKey, defaultTenantPlanSectionI18n, defaultToneForActionKey, planChangeWizardI18n, provideEntitlement, useActions, useApiList, useAuditEntries, useBatchColumns, useBulkPublish, useBundleVersions, useBundleVersionsMap, useBundles, useCatalogEntries, useDiscovery, useEntitlement, useInjectedEntitlement, useLivePlanVersions, useManifest, useMarketingProjections, useNav, usePagination, usePlanEditor, usePlanVersions, usePlans, usePlatformTenantActions, usePromotions, usePublicBoot, useSubscriptionDraft, useSuperAdminActions, useSuperAdminBrand, useSuperAdminEndpoints, useSuperAdminExtensions, useSuperAdminHttp, useSuperAdminLoginAdapter, useSuperAdminManifest, useTenantActionFlow, useTenantBilling, useTenantBillingCatalog, useTenantManifest, useTenantSubscriptionBundles, useTenants };
package/dist/index.js CHANGED
@@ -8,6 +8,10 @@ import {
8
8
  BootLoader,
9
9
  DEFAULT_STANDARD_PAGE_ROUTES,
10
10
  HttpJsonError,
11
+ IDENTITY_ACCENTS,
12
+ IDENTITY_ACCENT_VALUES,
13
+ IDENTITY_NEUTRAL,
14
+ IDENTITY_NEUTRAL_VALUE,
11
15
  ManifestLoadError,
12
16
  ManifestLoader,
13
17
  MissingHandlerError,
@@ -17,6 +21,9 @@ import {
17
21
  createAdminResourceClient,
18
22
  defaultSectionOrder,
19
23
  getJson,
24
+ identityAccentAt,
25
+ identityAccentFor,
26
+ identityChipStyle,
20
27
  isCurrentlyValid,
21
28
  isExpired,
22
29
  isFutureScheduled,
@@ -27,9 +34,10 @@ import {
27
34
  resolvePlans,
28
35
  todayIsoDate,
29
36
  trimTrailingSlashes
30
- } from "./chunk-XMMFN2WJ.js";
37
+ } from "./chunk-VYMTWCTT.js";
31
38
  import {
32
39
  SA_LOCALE_STORAGE_KEY,
40
+ SA_THEME_KEY,
33
41
  SUPER_ADMIN_ACTIONS_KEY,
34
42
  SUPER_ADMIN_BRAND_KEY,
35
43
  SUPER_ADMIN_ENDPOINTS_KEY,
@@ -41,10 +49,12 @@ import {
41
49
  SUPER_ADMIN_MANIFEST_KEY,
42
50
  SUPER_ADMIN_NOTIFY_KEY,
43
51
  buildNavigationGuard,
52
+ createSaTheme,
44
53
  createSuperAdminI18n,
45
54
  useSaMessages,
55
+ useSaTheme,
46
56
  useSuperAdminI18n
47
- } from "./chunk-LY52T4N4.js";
57
+ } from "./chunk-TQQMKWN6.js";
48
58
  import {
49
59
  DEFAULT_SA_LOCALE,
50
60
  SA_INTL_LOCALES,
@@ -2823,6 +2833,55 @@ var DEFAULT_I18N_EN = {
2823
2833
  function defaultTenantPlanSectionI18n(locale) {
2824
2834
  return locale === "en" ? DEFAULT_I18N_EN : DEFAULT_I18N_DE;
2825
2835
  }
2836
+ function planChangeWizardI18n(i18n) {
2837
+ return {
2838
+ title: i18n.wizardTitle,
2839
+ close: i18n.wizardClose,
2840
+ currentLabel: i18n.wizardCurrent,
2841
+ cycleMonthly: i18n.cycleMonthly,
2842
+ cycleYearly: i18n.cycleYearly,
2843
+ badgeCurrent: i18n.wizardBadgeCurrent,
2844
+ badgePopular: i18n.wizardBadgePopular,
2845
+ priceUnitMonthly: i18n.wizardPriceUnitMonthly,
2846
+ priceUnitYearly: i18n.wizardPriceUnitYearly,
2847
+ priceOnRequest: i18n.wizardPriceOnRequest,
2848
+ stepChoose: i18n.wizardStepChoose,
2849
+ stepChooseIntro: i18n.wizardStepChooseIntro,
2850
+ stepPreview: i18n.wizardStepPreview,
2851
+ stepConfirm: i18n.wizardStepConfirm,
2852
+ next: i18n.wizardNext,
2853
+ back: i18n.wizardBack,
2854
+ previewLoading: i18n.wizardPreviewLoading,
2855
+ effectiveAtLabel: i18n.wizardEffectiveAtLabel,
2856
+ effectiveImmediate: i18n.wizardEffectiveImmediate,
2857
+ prorationTitle: i18n.wizardProrationTitle,
2858
+ prorationLine: i18n.wizardProrationLine,
2859
+ prorationDays: i18n.wizardProrationDays,
2860
+ limitsTitle: i18n.wizardLimitsTitle,
2861
+ limitsUsed: i18n.wizardLimitsUsed,
2862
+ limitsCurrent: i18n.wizardLimitsCurrent,
2863
+ limitsTarget: i18n.wizardLimitsTarget,
2864
+ featuresGained: i18n.wizardFeaturesGained,
2865
+ featuresLost: i18n.wizardFeaturesLost,
2866
+ blockersTitle: i18n.wizardBlockersTitle,
2867
+ confirmImmediate: i18n.wizardConfirmImmediate,
2868
+ confirmScheduled: i18n.wizardConfirmScheduled,
2869
+ confirmAction: i18n.wizardConfirmAction,
2870
+ confirmInProgress: i18n.wizardConfirmInProgress,
2871
+ confirmPriceTitle: i18n.wizardConfirmPriceTitle,
2872
+ confirmProratedNow: i18n.wizardConfirmProratedNow,
2873
+ confirmRecurringNext: i18n.wizardConfirmRecurringNext,
2874
+ confirmRecurringFrom: i18n.wizardConfirmRecurringFrom,
2875
+ perCycleMonthly: i18n.wizardConfirmPerCycleMonthly,
2876
+ perCycleYearly: i18n.wizardConfirmPerCycleYearly,
2877
+ confirmTrialNote: i18n.wizardConfirmTrialNote,
2878
+ confirmRecurringTrialEnd: i18n.wizardConfirmRecurringTrialEnd,
2879
+ changeTypeUpgrade: i18n.wizardChangeTypeUpgrade,
2880
+ changeTypeDowngrade: i18n.wizardChangeTypeDowngrade,
2881
+ changeTypeCycle: i18n.wizardChangeTypeCycle,
2882
+ changeTypeNoop: i18n.wizardChangeTypeNoop
2883
+ };
2884
+ }
2826
2885
  export {
2827
2886
  ADMIN_UI_VERSION,
2828
2887
  ALL_ROWS,
@@ -2844,6 +2903,10 @@ export {
2844
2903
  DiscoveryLoadError,
2845
2904
  ENTITLEMENT_INJECTION_KEY,
2846
2905
  HttpJsonError,
2906
+ IDENTITY_ACCENTS,
2907
+ IDENTITY_ACCENT_VALUES,
2908
+ IDENTITY_NEUTRAL,
2909
+ IDENTITY_NEUTRAL_VALUE,
2847
2910
  ManifestLoadError,
2848
2911
  ManifestLoader,
2849
2912
  MarketingProjectionsApiError,
@@ -2858,6 +2921,7 @@ export {
2858
2921
  SA_LOCALE_LABELS,
2859
2922
  SA_LOCALE_STORAGE_KEY,
2860
2923
  SA_MESSAGES,
2924
+ SA_THEME_KEY,
2861
2925
  SERVER_PAGE_SIZE_OPTIONS,
2862
2926
  SUPER_ADMIN_ACTIONS_KEY,
2863
2927
  SUPER_ADMIN_BRAND_KEY,
@@ -2883,6 +2947,7 @@ export {
2883
2947
  createPlatformLoaders,
2884
2948
  createProjectPageHostRoute,
2885
2949
  createSaCatalog,
2950
+ createSaTheme,
2886
2951
  createSuperAdminI18n,
2887
2952
  defaultHttpClient,
2888
2953
  defaultIconForActionKey,
@@ -2894,12 +2959,16 @@ export {
2894
2959
  formatCurrency,
2895
2960
  formatMessage,
2896
2961
  getJson,
2962
+ identityAccentAt,
2963
+ identityAccentFor,
2964
+ identityChipStyle,
2897
2965
  isCurrentlyValid,
2898
2966
  isExpired,
2899
2967
  isFutureScheduled,
2900
2968
  isProductionBoot,
2901
2969
  isSaBuiltinLocale,
2902
2970
  mergeMessages,
2971
+ planChangeWizardI18n,
2903
2972
  postJson,
2904
2973
  provideEntitlement,
2905
2974
  resolveExtension,
@@ -2932,6 +3001,7 @@ export {
2932
3001
  usePromotions,
2933
3002
  usePublicBoot,
2934
3003
  useSaMessages,
3004
+ useSaTheme,
2935
3005
  useSubscriptionDraft,
2936
3006
  useSuperAdminActions,
2937
3007
  useSuperAdminBrand,
@@ -20,6 +20,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/quasar/index.ts
21
21
  var quasar_exports = {};
22
22
  __export(quasar_exports, {
23
+ SA_PORTAL_CLASS: () => SA_PORTAL_CLASS,
24
+ bindSaThemeToDocument: () => bindSaThemeToDocument,
23
25
  createSuperAdminApp: () => createSuperAdminApp,
24
26
  quasarNotify: () => quasarNotify,
25
27
  useSuperAdminNotify: () => useSuperAdminNotify
@@ -27,8 +29,8 @@ __export(quasar_exports, {
27
29
  module.exports = __toCommonJS(quasar_exports);
28
30
 
29
31
  // src/quasar/create-super-admin-app.ts
30
- var import_vue3 = require("vue");
31
- var import_quasar2 = require("quasar");
32
+ var import_vue5 = require("vue");
33
+ var import_quasar3 = require("quasar");
32
34
  var import_pinia = require("pinia");
33
35
  var import_vue_router = require("vue-router");
34
36
 
@@ -146,8 +148,49 @@ var SUPER_ADMIN_NOTIFY_KEY = /* @__PURE__ */ Symbol.for(
146
148
  "@saasicat/ui-vue/SUPER_ADMIN_NOTIFY"
147
149
  );
148
150
 
149
- // src/vue/use-super-admin-i18n.ts
151
+ // src/vue/use-sa-theme.ts
150
152
  var import_vue = require("vue");
153
+ var SCHEMES = ["light", "dark", "system"];
154
+ var STORAGE_KEY = "saasicat.theme.scheme";
155
+ function isScheme(value) {
156
+ return typeof value === "string" && SCHEMES.includes(value);
157
+ }
158
+ function systemScheme() {
159
+ const value = (0, import_vue.ref)("light");
160
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function") {
161
+ return { value, unsubscribe: () => {
162
+ } };
163
+ }
164
+ const query = window.matchMedia("(prefers-color-scheme: dark)");
165
+ value.value = query.matches ? "dark" : "light";
166
+ const onChange = (event) => {
167
+ value.value = event.matches ? "dark" : "light";
168
+ };
169
+ query.addEventListener("change", onChange);
170
+ return { value, unsubscribe: () => query.removeEventListener("change", onChange) };
171
+ }
172
+ function createSaTheme(options = {}) {
173
+ const storage = options.storage ?? defaultKvStore();
174
+ const persist = options.persist !== false;
175
+ const provided = options.scheme;
176
+ const appOwnsIt = (0, import_vue.isRef)(provided);
177
+ const stored = persist && !appOwnsIt ? storage.get(STORAGE_KEY) : null;
178
+ const scheme = (0, import_vue.isRef)(provided) ? provided : (0, import_vue.ref)(isScheme(stored) ? stored : provided ?? "system");
179
+ const { value: system, unsubscribe } = systemScheme();
180
+ const stopPersisting = persist && !appOwnsIt ? (0, import_vue.watch)(scheme, (next) => storage.set(STORAGE_KEY, next)) : null;
181
+ return {
182
+ scheme,
183
+ resolved: (0, import_vue.computed)(() => scheme.value === "system" ? system.value : scheme.value),
184
+ dispose: () => {
185
+ unsubscribe();
186
+ stopPersisting?.();
187
+ }
188
+ };
189
+ }
190
+ var SA_THEME_KEY = /* @__PURE__ */ Symbol.for("@saasicat/ui-vue/SA_THEME");
191
+
192
+ // src/vue/use-super-admin-i18n.ts
193
+ var import_vue2 = require("vue");
151
194
 
152
195
  // src/client/i18n/locale.ts
153
196
  var SA_LOCALES = ["de", "en"];
@@ -186,7 +229,7 @@ function mergeMessages(base, overrides) {
186
229
  }
187
230
 
188
231
  // src/client/i18n/format.ts
189
- var import_types = require("@saasicat/types");
232
+ var import_types2 = require("@saasicat/types");
190
233
 
191
234
  // src/client/i18n/messages/audit.ts
192
235
  var auditMessages = defineMessages(
@@ -3250,13 +3293,13 @@ var SUPER_ADMIN_I18N_KEY = /* @__PURE__ */ Symbol.for(
3250
3293
  );
3251
3294
  function createSuperAdminI18n(options = {}) {
3252
3295
  const catalog = createSaCatalog(options);
3253
- const locale = (0, import_vue.isRef)(options.locale) ? options.locale : createOwnedLocale(options, catalog);
3254
- const active = (0, import_vue.computed)(
3296
+ const locale = (0, import_vue2.isRef)(options.locale) ? options.locale : createOwnedLocale(options, catalog);
3297
+ const active = (0, import_vue2.computed)(
3255
3298
  () => catalog.has(locale.value) ? locale.value : catalog.defaultLocale
3256
3299
  );
3257
- const messages = (0, import_vue.computed)(() => catalog.messagesFor(active.value));
3258
- const intlLocale = (0, import_vue.computed)(() => catalog.intlLocaleFor(active.value));
3259
- const writable = !(0, import_vue.isReadonly)(locale);
3300
+ const messages = (0, import_vue2.computed)(() => catalog.messagesFor(active.value));
3301
+ const intlLocale = (0, import_vue2.computed)(() => catalog.intlLocaleFor(active.value));
3302
+ const writable = !(0, import_vue2.isReadonly)(locale);
3260
3303
  return {
3261
3304
  locale,
3262
3305
  messages,
@@ -3267,20 +3310,47 @@ function createSuperAdminI18n(options = {}) {
3267
3310
  }
3268
3311
  function createOwnedLocale(options, catalog) {
3269
3312
  const initial = options.locale ?? catalog.defaultLocale;
3270
- if (options.persist === false) return (0, import_vue.ref)(initial);
3313
+ if (options.persist === false) return (0, import_vue2.ref)(initial);
3271
3314
  const storage = options.storage ?? defaultKvStore();
3272
3315
  const key = `${options.storageKeyPrefix ?? ""}${SA_LOCALE_STORAGE_KEY}`;
3273
3316
  const stored = storage.get(key);
3274
- const locale = (0, import_vue.ref)(stored && catalog.has(stored) ? stored : initial);
3275
- (0, import_vue.watch)(locale, (next) => storage.set(key, next));
3317
+ const locale = (0, import_vue2.ref)(stored && catalog.has(stored) ? stored : initial);
3318
+ (0, import_vue2.watch)(locale, (next) => storage.set(key, next));
3276
3319
  return locale;
3277
3320
  }
3278
3321
 
3279
- // src/quasar/notify.ts
3280
- var import_vue2 = require("vue");
3322
+ // src/quasar/dark-bridge.ts
3281
3323
  var import_quasar = require("quasar");
3324
+ var import_vue3 = require("vue");
3325
+ function bindSaThemeToDocument(theme) {
3326
+ const toQuasar = (0, import_vue3.watch)(
3327
+ theme.resolved,
3328
+ (resolved) => {
3329
+ if (typeof document !== "undefined") {
3330
+ document.documentElement.setAttribute("data-sa-theme", resolved);
3331
+ }
3332
+ import_quasar.Dark.set(resolved === "dark");
3333
+ },
3334
+ { immediate: true }
3335
+ );
3336
+ const fromQuasar = (0, import_vue3.watch)(
3337
+ () => import_quasar.Dark.isActive,
3338
+ (isDark) => {
3339
+ const asScheme = isDark ? "dark" : "light";
3340
+ if (theme.resolved.value !== asScheme) theme.scheme.value = asScheme;
3341
+ }
3342
+ );
3343
+ return () => {
3344
+ toQuasar();
3345
+ fromQuasar();
3346
+ };
3347
+ }
3348
+
3349
+ // src/quasar/notify.ts
3350
+ var import_vue4 = require("vue");
3351
+ var import_quasar2 = require("quasar");
3282
3352
  var quasarNotify = (kind, message, options) => {
3283
- import_quasar.Notify.create({
3353
+ import_quasar2.Notify.create({
3284
3354
  type: kind,
3285
3355
  message,
3286
3356
  position: "top",
@@ -3289,17 +3359,29 @@ var quasarNotify = (kind, message, options) => {
3289
3359
  });
3290
3360
  };
3291
3361
  function useSuperAdminNotify() {
3292
- return (0, import_vue2.inject)(SUPER_ADMIN_NOTIFY_KEY, quasarNotify);
3362
+ return (0, import_vue4.inject)(SUPER_ADMIN_NOTIFY_KEY, quasarNotify);
3293
3363
  }
3294
3364
 
3295
3365
  // src/quasar/create-super-admin-app.ts
3366
+ var SA_PORTAL_CLASS = "sa-portal";
3296
3367
  var DEFAULT_QUASAR_OPTIONS = {
3297
- plugins: { Notify: import_quasar2.Notify, Dialog: import_quasar2.Dialog, Loading: import_quasar2.Loading },
3368
+ plugins: { Notify: import_quasar3.Notify, Dialog: import_quasar3.Dialog, Loading: import_quasar3.Loading },
3298
3369
  config: { notify: { position: "top-right", timeout: 3e3 } }
3299
3370
  };
3300
3371
  function createSuperAdminApp(options) {
3301
- const app = (0, import_vue3.createApp)(options.rootComponent);
3302
- app.use(import_quasar2.Quasar, options.quasarOptions ?? DEFAULT_QUASAR_OPTIONS);
3372
+ const app = (0, import_vue5.createApp)(options.rootComponent);
3373
+ const quasarOptions = options.quasarOptions ?? DEFAULT_QUASAR_OPTIONS;
3374
+ const config = quasarOptions.config;
3375
+ const existingPortalClass = config?.globalNodes?.class;
3376
+ app.use(import_quasar3.Quasar, {
3377
+ ...quasarOptions,
3378
+ config: {
3379
+ ...quasarOptions.config,
3380
+ globalNodes: {
3381
+ class: [existingPortalClass, SA_PORTAL_CLASS].filter(Boolean).join(" ")
3382
+ }
3383
+ }
3384
+ });
3303
3385
  const pinia = (0, import_pinia.createPinia)();
3304
3386
  app.use(pinia);
3305
3387
  const router = (0, import_vue_router.createRouter)({
@@ -3317,8 +3399,15 @@ function createSuperAdminApp(options) {
3317
3399
  manifestEndpoint: options.endpoints.manifestEndpoint ?? `${options.endpoints.apiBase}/manifest`
3318
3400
  };
3319
3401
  const i18n = createSuperAdminI18n(options.i18n);
3402
+ const configuredDark = options.quasarOptions?.config?.dark;
3403
+ const theme = createSaTheme({
3404
+ ...options.theme,
3405
+ scheme: options.theme?.scheme ?? (typeof configuredDark === "boolean" ? configuredDark ? "dark" : "light" : void 0)
3406
+ });
3407
+ const stopThemeBridge = bindSaThemeToDocument(theme);
3320
3408
  app.provide(SUPER_ADMIN_BRAND_KEY, { tag: "SuperAdmin", ...options.brand });
3321
3409
  app.provide(SUPER_ADMIN_I18N_KEY, i18n);
3410
+ app.provide(SA_THEME_KEY, theme);
3322
3411
  app.provide(SUPER_ADMIN_ENDPOINTS_KEY, endpoints);
3323
3412
  app.provide(SUPER_ADMIN_EXTENSIONS_KEY, options.extensions ?? {});
3324
3413
  app.provide(SUPER_ADMIN_ACTIONS_KEY, options.actions ?? {});
@@ -3341,11 +3430,18 @@ function createSuperAdminApp(options) {
3341
3430
  router,
3342
3431
  pinia,
3343
3432
  i18n,
3344
- mount: (selector) => app.mount(selector)
3433
+ theme,
3434
+ mount: (selector) => app.mount(selector),
3435
+ dispose: () => {
3436
+ stopThemeBridge();
3437
+ theme.dispose();
3438
+ }
3345
3439
  };
3346
3440
  }
3347
3441
  // Annotate the CommonJS export names for ESM import in node:
3348
3442
  0 && (module.exports = {
3443
+ SA_PORTAL_CLASS,
3444
+ bindSaThemeToDocument,
3349
3445
  createSuperAdminApp,
3350
3446
  quasarNotify,
3351
3447
  useSuperAdminNotify