@saasicat/ui-vue 0.5.0 → 0.7.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 (186) hide show
  1. package/README.md +17 -0
  2. package/dist/{chunk-EH7TOD4H.js → chunk-A3W2N26K.js} +73 -77
  3. package/dist/{chunk-3YP2ZAOD.js → chunk-QZOSDCNP.js} +36 -1
  4. package/dist/chunk-X5SQ5HMB.js +3231 -0
  5. package/dist/client/index.cjs +3279 -76
  6. package/dist/client/index.d.cts +31 -5
  7. package/dist/client/index.d.ts +31 -5
  8. package/dist/client/index.js +23 -5
  9. package/dist/index.cjs +3709 -465
  10. package/dist/index.d.cts +37 -54
  11. package/dist/index.d.ts +37 -54
  12. package/dist/index.js +347 -311
  13. package/dist/messages-7b0P8W75.d.cts +1652 -0
  14. package/dist/messages-7b0P8W75.d.ts +1652 -0
  15. package/dist/quasar/index.cjs +3185 -4
  16. package/dist/quasar/index.d.cts +11 -2
  17. package/dist/quasar/index.d.ts +11 -2
  18. package/dist/quasar/index.js +8 -3
  19. package/dist/testing-e2e/admin-pages-suite.cjs +14 -11
  20. package/dist/testing-e2e/admin-pages-suite.js +14 -11
  21. package/dist/{ui-notify-COUzXEQ4.d.ts → use-super-admin-i18n-B3v3-SWZ.d.ts} +35 -3
  22. package/dist/{ui-notify-D_eAAwRh.d.cts → use-super-admin-i18n-DMktRVEt.d.cts} +35 -3
  23. package/package.json +2 -2
  24. package/src/client/action-registry.ts +4 -4
  25. package/src/client/batch-column-fetcher.ts +4 -4
  26. package/src/client/boot-loader.ts +3 -3
  27. package/src/client/i18n/currency.ts +42 -0
  28. package/src/client/i18n/define.ts +59 -0
  29. package/src/client/i18n/format.ts +12 -0
  30. package/src/client/i18n/index.ts +14 -0
  31. package/src/client/i18n/locale.ts +15 -0
  32. package/src/client/i18n/messages/audit.ts +42 -0
  33. package/src/client/i18n/messages/bundles.ts +459 -0
  34. package/src/client/i18n/messages/common.ts +147 -0
  35. package/src/client/i18n/messages/dashboard.ts +16 -0
  36. package/src/client/i18n/messages/discovery.ts +229 -0
  37. package/src/client/i18n/messages/email.ts +125 -0
  38. package/src/client/i18n/messages/marketing.ts +270 -0
  39. package/src/client/i18n/messages/nav.ts +72 -0
  40. package/src/client/i18n/messages/pilots.ts +192 -0
  41. package/src/client/i18n/messages/plan-detail.ts +266 -0
  42. package/src/client/i18n/messages/plan-editor.ts +177 -0
  43. package/src/client/i18n/messages/plan-versions.ts +251 -0
  44. package/src/client/i18n/messages/plans.ts +503 -0
  45. package/src/client/i18n/messages/promos.ts +202 -0
  46. package/src/client/i18n/messages/shell.ts +145 -0
  47. package/src/client/i18n/messages/tenants.ts +104 -0
  48. package/src/client/i18n/messages/users.ts +78 -0
  49. package/src/client/i18n/messages.ts +84 -0
  50. package/src/client/index.ts +2 -0
  51. package/src/client/manifest-loader.ts +4 -4
  52. package/src/client/nav-builder.ts +44 -51
  53. package/src/client/plan-versions-catalog.ts +42 -30
  54. package/src/components/BundleVersionPublishDialog.vue +35 -24
  55. package/src/components/MarketingPromotionsTab.vue +112 -59
  56. package/src/components/MfaPromptDialog.vue +11 -11
  57. package/src/components/TenantActionConfirmDialog.vue +19 -17
  58. package/src/components/VersionDiffPreview.vue +72 -43
  59. package/src/components/bundle-editor/BundleCreatePanel.vue +76 -63
  60. package/src/components/bundle-editor/BundleFeaturesEditor.vue +13 -6
  61. package/src/components/bundle-editor/BundlePlanCompatPicker.vue +19 -14
  62. package/src/components/bundle-editor/BundleQuotasEditor.vue +7 -4
  63. package/src/components/bundle-editor/BundleStatusBanner.vue +36 -19
  64. package/src/components/bundle-editor/BundleVersionInlineEditor.vue +51 -35
  65. package/src/components/bundle-editor/BundleVersionStrip.vue +24 -12
  66. package/src/components/bundle-editor/bundle-version-status.ts +29 -29
  67. package/src/components/dialogs/PilotCreateDialog.vue +58 -63
  68. package/src/components/dialogs/PilotEditDialog.vue +40 -34
  69. package/src/components/dialogs/PromoCodeCreateDialog.vue +89 -63
  70. package/src/components/dialogs/PromoCodeEditDialog.vue +98 -66
  71. package/src/components/dialogs/types.ts +3 -13
  72. package/src/components/plan/PlanCycleToggle.vue +20 -9
  73. package/src/components/plan-cockpit/PlanCockpit.vue +34 -15
  74. package/src/components/plan-cockpit/PlanCockpitAuditLog.vue +13 -6
  75. package/src/components/plan-cockpit/PlanCockpitDiffPanel.vue +18 -9
  76. package/src/components/plan-cockpit/PlanCockpitHeader.vue +9 -6
  77. package/src/components/plan-cockpit/PlanCockpitImpactPanel.vue +24 -11
  78. package/src/components/plan-cockpit/PlanCockpitKpis.vue +28 -17
  79. package/src/components/plan-cockpit/PlanCockpitVersions.vue +50 -25
  80. package/src/components/plan-create-dialog/PlanCreateDialog.vue +45 -35
  81. package/src/components/plan-detail/PlanAuditLog.vue +11 -6
  82. package/src/components/plan-detail/PlanDetail.vue +21 -23
  83. package/src/components/plan-detail/PlanDetailHeader.vue +20 -11
  84. package/src/components/plan-detail/PlanDetailKpis.vue +30 -17
  85. package/src/components/plan-detail/PlanTerminateDialog.vue +22 -9
  86. package/src/components/plan-detail/PlanVersionDiffPanel.vue +61 -27
  87. package/src/components/plan-detail/PlanVersionsPanel.vue +71 -36
  88. package/src/components/plan-list/PlanList.vue +99 -57
  89. package/src/components/plan-matrix/PlanMatrix.vue +85 -38
  90. package/src/components/plan-review/PlanReview.vue +105 -80
  91. package/src/components/plan-version-editor/PlanCatalogPreview.vue +43 -20
  92. package/src/components/plan-version-editor/PlanComponentPool.vue +15 -7
  93. package/src/components/plan-version-editor/PlanVersionBasket.vue +45 -24
  94. package/src/components/plan-version-editor/PlanVersionDiffDialog.vue +8 -7
  95. package/src/components/plan-version-editor/PlanVersionEditor.vue +74 -40
  96. package/src/components/plan-version-editor/PlanVersionEditorHeader.vue +24 -12
  97. package/src/index.ts +1 -1
  98. package/src/pages-standard/AdminLayout.vue +42 -17
  99. package/src/pages-standard/AdminManifestErrorPage.vue +10 -10
  100. package/src/pages-standard/AuditPage.vue +58 -19
  101. package/src/pages-standard/BundlesPage.vue +29 -18
  102. package/src/pages-standard/DashboardPage.vue +29 -15
  103. package/src/pages-standard/DiscoveryPage.vue +40 -28
  104. package/src/pages-standard/EmailHistoryPage.vue +92 -59
  105. package/src/pages-standard/MarketingCatalogPage.vue +35 -16
  106. package/src/pages-standard/PilotsPage.vue +57 -41
  107. package/src/pages-standard/PlanVersionsPage.vue +7 -3
  108. package/src/pages-standard/PlansPage.vue +89 -57
  109. package/src/pages-standard/PlatformEmailPage.vue +115 -50
  110. package/src/pages-standard/PromoCodeDetailPage.vue +66 -63
  111. package/src/pages-standard/PromoCodesPage.vue +46 -35
  112. package/src/pages-standard/SubscriptionsPage.vue +14 -9
  113. package/src/pages-standard/SuperAdminLoginPage.vue +16 -13
  114. package/src/pages-standard/SuperAdminSetupWizard.vue +51 -47
  115. package/src/pages-standard/TenantDetailPage.vue +50 -36
  116. package/src/pages-standard/TenantsPage.vue +54 -41
  117. package/src/pages-standard/UsersPage.vue +66 -42
  118. package/src/pages-standard/bundles-page/BundleAccordionList.vue +20 -8
  119. package/src/pages-standard/bundles-page/BundleDetailPanel.vue +28 -18
  120. package/src/pages-standard/bundles-page/BundlesFilterBar.vue +4 -1
  121. package/src/pages-standard/bundles-page/BundlesHeader.vue +9 -8
  122. package/src/pages-standard/bundles-page/BundlesKpis.vue +29 -11
  123. package/src/pages-standard/discovery-page/CatalogEntryTransPanel.vue +20 -8
  124. package/src/pages-standard/discovery-page/DiscoveryCapList.vue +5 -3
  125. package/src/pages-standard/discovery-page/DiscoveryFeatureCard.vue +43 -24
  126. package/src/pages-standard/discovery-page/DiscoveryHeader.vue +7 -4
  127. package/src/pages-standard/discovery-page/DiscoveryKpis.vue +28 -15
  128. package/src/pages-standard/discovery-page/DiscoveryQuotaCard.vue +20 -10
  129. package/src/pages-standard/discovery-page/DiscoveryStatusControl.vue +9 -6
  130. package/src/pages-standard/discovery-page/discovery-ui.ts +40 -52
  131. package/src/pages-standard/marketing-catalog/MarketingCatalogAdmin.vue +81 -49
  132. package/src/pages-standard/marketing-catalog/MarketingCatalogHeader.vue +13 -10
  133. package/src/pages-standard/marketing-catalog/MarketingCatalogPreview.vue +24 -20
  134. package/src/pages-standard/marketing-catalog/MarketingCatalogToolbar.vue +6 -3
  135. package/src/pages-standard/plan-versions/PlanDiffCard.vue +16 -6
  136. package/src/pages-standard/plan-versions/PlanVersionHeader.vue +41 -25
  137. package/src/pages-standard/plan-versions/PlanVersionsAudit.vue +45 -26
  138. package/src/pages-standard/plan-versions/PlanVersionsDiff.vue +7 -5
  139. package/src/pages-standard/plan-versions/PlanVersionsList.vue +39 -16
  140. package/src/pages-standard/plan-versions/PlanVersionsTimeline.vue +24 -12
  141. package/src/pages-standard/plan-versions/format.ts +33 -17
  142. package/src/pages-standard/plans-page/PlanArchiveDialog.vue +12 -8
  143. package/src/pages-standard/plans-page/PlanBundleOverview.vue +15 -6
  144. package/src/pages-standard/plans-page/PlanDiscardDraftDialog.vue +18 -7
  145. package/src/pages-standard/plans-page/PlanPublishDialog.vue +23 -12
  146. package/src/pages-standard/tenants/format.ts +3 -2
  147. package/src/pages-tenant/MySubscriptionBundlesPage.vue +72 -37
  148. package/src/pages-tenant/PlanChangeWizard.vue +8 -4
  149. package/src/pages-tenant/TenantPlanSection.vue +17 -13
  150. package/src/pages-tenant/default-i18n.ts +217 -1
  151. package/src/pages-tenant/tenant-plan-section/BundlePreviewDialog.vue +8 -6
  152. package/src/pages-tenant/tenant-plan-section/TenantBundleStore.vue +9 -10
  153. package/src/pages-tenant/tenant-plan-section/TenantFeatureMatrix.vue +4 -1
  154. package/src/quasar/create-super-admin-app.ts +19 -0
  155. package/src/testing-e2e/admin-pages-suite.ts +14 -11
  156. package/src/vue/project-page-host.ts +5 -3
  157. package/src/vue/use-audit-entries.ts +3 -3
  158. package/src/vue/use-bulk-publish.ts +6 -4
  159. package/src/vue/use-bundle-versions-map.ts +6 -4
  160. package/src/vue/use-bundles.ts +13 -13
  161. package/src/vue/use-catalog-entries.ts +13 -10
  162. package/src/vue/use-discovery.ts +8 -5
  163. package/src/vue/use-entitlement.ts +3 -3
  164. package/src/vue/use-live-plan-versions.ts +4 -4
  165. package/src/vue/use-marketing-projections.ts +9 -6
  166. package/src/vue/use-nav.ts +8 -2
  167. package/src/vue/use-plan-editor.ts +2 -2
  168. package/src/vue/use-plan-versions.ts +3 -3
  169. package/src/vue/use-plans.ts +12 -12
  170. package/src/vue/use-platform-tenant-actions.ts +9 -6
  171. package/src/vue/use-promotions.ts +9 -10
  172. package/src/vue/use-subscription-draft.ts +2 -3
  173. package/src/vue/use-super-admin-context.ts +3 -3
  174. package/src/vue/use-super-admin-i18n.ts +82 -0
  175. package/src/vue/use-tenant-action-flow.ts +11 -6
  176. package/src/vue/use-tenant-manifest.ts +1 -3
  177. package/src/vue/use-tenant-subscription-bundles.ts +4 -4
  178. package/src/vue/use-tenants.ts +3 -3
  179. package/dist/action-registry-CQ2wL3R-.d.cts +0 -85
  180. package/dist/action-registry-CQ2wL3R-.d.ts +0 -85
  181. package/dist/chunk-LVGUSD3T.js +0 -26
  182. package/src/components/BusinessTypeVersionEditorDialog.vue +0 -417
  183. package/src/components/BusinessTypeVersionPublishDialog.vue +0 -258
  184. package/src/pages-standard/BusinessTypesPage.vue +0 -662
  185. package/src/pages-standard/plan-versions/VersionDiffPreview.vue +0 -167
  186. package/src/vue/use-business-types.ts +0 -269
@@ -1,5 +1,5 @@
1
- import { H as HttpClient, K as KvStore } from '../action-registry-CQ2wL3R-.cjs';
2
- export { b as ActionDefNotInManifestError, A as ActionHandler, a as ActionRegistry, c as HttpResponse, M as MissingHandlerError, R as ResolvedAction, d as defaultHttpClient, e as defaultKvStore } from '../action-registry-CQ2wL3R-.cjs';
1
+ import { H as HttpClient, K as KvStore, S as SaLocale } from '../messages-7b0P8W75.cjs';
2
+ export { d as ActionDefNotInManifestError, A as ActionHandler, c as ActionRegistry, 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.cjs';
3
3
  import { PublicBootResponse, AdminManifest, StandardPageKey, TenantColumnDef, PlanVersionRow } from '@saasicat/types';
4
4
 
5
5
  declare const ADMIN_UI_VERSION = "1.2.0";
@@ -118,13 +118,19 @@ interface BuildRouteEntry {
118
118
  prefetchOnIdle?: boolean;
119
119
  }
120
120
  interface NavBuilderOptions {
121
+ /**
122
+ * UI locale for the default labels and section names, default `'de'`.
123
+ * Pass the same locale to `buildSidebar()`'s `sectionOrder` (via
124
+ * `defaultSectionOrder(locale)`) — section names are compared as strings.
125
+ */
126
+ locale?: SaLocale;
121
127
  /**
122
128
  * Optional: overrides the default routes for certain standard pages.
123
129
  * Consumers set this if they want an alternative URL structure.
124
130
  */
125
131
  standardPageRoutes?: Partial<Record<StandardPageKey, string>>;
126
132
  /**
127
- * Default labels for standard pages consumers may localize.
133
+ * Per-page label overrides layered over the locale defaults.
128
134
  */
129
135
  standardPageLabels?: Partial<Record<StandardPageKey, string>>;
130
136
  /** Default icons for standard pages. */
@@ -140,7 +146,12 @@ interface NavBuilderOptions {
140
146
  */
141
147
  availableExtensions?: Set<string>;
142
148
  }
143
- declare const DEFAULT_SECTION_ORDER: readonly string[];
149
+ /**
150
+ * Localized default section names in drawer order (Übersicht → Produktkatalog
151
+ * → Kunden → System). Pass the result to `buildSidebar()` when building routes
152
+ * with a non-default locale.
153
+ */
154
+ declare function defaultSectionOrder(locale?: SaLocale): readonly string[];
144
155
  /**
145
156
  * Returns the list of all routes defined by the current manifest —
146
157
  * filtered to the capabilities that the logged-in user has.
@@ -286,10 +297,25 @@ interface BuildSnapshotsOptions {
286
297
  * end up sorted alphabetically at the back.
287
298
  */
288
299
  planSortOrder?: readonly string[];
300
+ /** UI locale for the generated snapshot labels/titles/descriptions. */
301
+ locale?: SaLocale;
289
302
  }
290
303
  declare function buildSnapshots<P extends PlanVersionRow>(data: RawCatalogData<P>, options?: BuildSnapshotsOptions): CatalogSnapshot<P>[];
291
304
  declare function listOpenDrafts<P extends PlanVersionRow>(data: RawCatalogData<P>): {
292
305
  plans: P[];
293
306
  };
294
307
 
295
- export { ADMIN_UI_VERSION, type BatchColumnData, BatchColumnDriftError, BatchColumnFetcher, type BatchColumnFetcherOptions, type BatchColumnRow, type BatchColumnValue, BootLoadError, BootLoader, type BootLoaderOptions, type BuildRouteEntry, type BuildSnapshotsOptions, type CachedManifestEntry, type CatalogSnapshot, DEFAULT_SECTION_ORDER, DEFAULT_STANDARD_PAGE_ROUTES, HttpClient, HttpJsonError, KvStore, ManifestLoadError, ManifestLoader, type ManifestLoaderOptions, type NavBuilderOptions, type ParamStyle, type RawCatalogData, type ResolvedPlan, type SidebarItem, type SidebarSection, type SnapshotKind, buildRoutes, buildSidebar, buildSnapshots, getJson, listOpenDrafts, postJson, resolveExtension, trimTrailingSlashes };
308
+ type MessageParams = Record<string, string | number>;
309
+ declare function formatMessage(template: string, params: MessageParams): string;
310
+
311
+ /**
312
+ * Formats a net amount for display. Whole amounts drop the decimals (`29 €`
313
+ * rather than `29,00 €`) — the plan and bundle prices the admin UI shows are
314
+ * mostly round numbers, and the zeros are noise in dense tables.
315
+ *
316
+ * Returns an em dash for null/undefined and for values that are not finite
317
+ * numbers, so callers can pass raw API fields straight through.
318
+ */
319
+ declare function formatCurrency(amount: number | string | null | undefined, locale?: SaLocale, currency?: string): string;
320
+
321
+ export { ADMIN_UI_VERSION, type BatchColumnData, BatchColumnDriftError, BatchColumnFetcher, type BatchColumnFetcherOptions, type BatchColumnRow, type BatchColumnValue, BootLoadError, BootLoader, type BootLoaderOptions, type BuildRouteEntry, type BuildSnapshotsOptions, type CachedManifestEntry, type CatalogSnapshot, DEFAULT_STANDARD_PAGE_ROUTES, HttpClient, HttpJsonError, KvStore, ManifestLoadError, ManifestLoader, type ManifestLoaderOptions, type MessageParams, type NavBuilderOptions, type ParamStyle, type RawCatalogData, type ResolvedPlan, SaLocale, type SidebarItem, type SidebarSection, type SnapshotKind, buildRoutes, buildSidebar, buildSnapshots, defaultSectionOrder, formatCurrency, formatMessage, getJson, listOpenDrafts, postJson, resolveExtension, trimTrailingSlashes };
@@ -1,5 +1,5 @@
1
- import { H as HttpClient, K as KvStore } from '../action-registry-CQ2wL3R-.js';
2
- export { b as ActionDefNotInManifestError, A as ActionHandler, a as ActionRegistry, c as HttpResponse, M as MissingHandlerError, R as ResolvedAction, d as defaultHttpClient, e as defaultKvStore } from '../action-registry-CQ2wL3R-.js';
1
+ import { H as HttpClient, K as KvStore, S as SaLocale } from '../messages-7b0P8W75.js';
2
+ export { d as ActionDefNotInManifestError, A as ActionHandler, c as ActionRegistry, 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';
3
3
  import { PublicBootResponse, AdminManifest, StandardPageKey, TenantColumnDef, PlanVersionRow } from '@saasicat/types';
4
4
 
5
5
  declare const ADMIN_UI_VERSION = "1.2.0";
@@ -118,13 +118,19 @@ interface BuildRouteEntry {
118
118
  prefetchOnIdle?: boolean;
119
119
  }
120
120
  interface NavBuilderOptions {
121
+ /**
122
+ * UI locale for the default labels and section names, default `'de'`.
123
+ * Pass the same locale to `buildSidebar()`'s `sectionOrder` (via
124
+ * `defaultSectionOrder(locale)`) — section names are compared as strings.
125
+ */
126
+ locale?: SaLocale;
121
127
  /**
122
128
  * Optional: overrides the default routes for certain standard pages.
123
129
  * Consumers set this if they want an alternative URL structure.
124
130
  */
125
131
  standardPageRoutes?: Partial<Record<StandardPageKey, string>>;
126
132
  /**
127
- * Default labels for standard pages consumers may localize.
133
+ * Per-page label overrides layered over the locale defaults.
128
134
  */
129
135
  standardPageLabels?: Partial<Record<StandardPageKey, string>>;
130
136
  /** Default icons for standard pages. */
@@ -140,7 +146,12 @@ interface NavBuilderOptions {
140
146
  */
141
147
  availableExtensions?: Set<string>;
142
148
  }
143
- declare const DEFAULT_SECTION_ORDER: readonly string[];
149
+ /**
150
+ * Localized default section names in drawer order (Übersicht → Produktkatalog
151
+ * → Kunden → System). Pass the result to `buildSidebar()` when building routes
152
+ * with a non-default locale.
153
+ */
154
+ declare function defaultSectionOrder(locale?: SaLocale): readonly string[];
144
155
  /**
145
156
  * Returns the list of all routes defined by the current manifest —
146
157
  * filtered to the capabilities that the logged-in user has.
@@ -286,10 +297,25 @@ interface BuildSnapshotsOptions {
286
297
  * end up sorted alphabetically at the back.
287
298
  */
288
299
  planSortOrder?: readonly string[];
300
+ /** UI locale for the generated snapshot labels/titles/descriptions. */
301
+ locale?: SaLocale;
289
302
  }
290
303
  declare function buildSnapshots<P extends PlanVersionRow>(data: RawCatalogData<P>, options?: BuildSnapshotsOptions): CatalogSnapshot<P>[];
291
304
  declare function listOpenDrafts<P extends PlanVersionRow>(data: RawCatalogData<P>): {
292
305
  plans: P[];
293
306
  };
294
307
 
295
- export { ADMIN_UI_VERSION, type BatchColumnData, BatchColumnDriftError, BatchColumnFetcher, type BatchColumnFetcherOptions, type BatchColumnRow, type BatchColumnValue, BootLoadError, BootLoader, type BootLoaderOptions, type BuildRouteEntry, type BuildSnapshotsOptions, type CachedManifestEntry, type CatalogSnapshot, DEFAULT_SECTION_ORDER, DEFAULT_STANDARD_PAGE_ROUTES, HttpClient, HttpJsonError, KvStore, ManifestLoadError, ManifestLoader, type ManifestLoaderOptions, type NavBuilderOptions, type ParamStyle, type RawCatalogData, type ResolvedPlan, type SidebarItem, type SidebarSection, type SnapshotKind, buildRoutes, buildSidebar, buildSnapshots, getJson, listOpenDrafts, postJson, resolveExtension, trimTrailingSlashes };
308
+ type MessageParams = Record<string, string | number>;
309
+ declare function formatMessage(template: string, params: MessageParams): string;
310
+
311
+ /**
312
+ * Formats a net amount for display. Whole amounts drop the decimals (`29 €`
313
+ * rather than `29,00 €`) — the plan and bundle prices the admin UI shows are
314
+ * mostly round numbers, and the zeros are noise in dense tables.
315
+ *
316
+ * Returns an em dash for null/undefined and for values that are not finite
317
+ * numbers, so callers can pass raw API fields straight through.
318
+ */
319
+ declare function formatCurrency(amount: number | string | null | undefined, locale?: SaLocale, currency?: string): string;
320
+
321
+ export { ADMIN_UI_VERSION, type BatchColumnData, BatchColumnDriftError, BatchColumnFetcher, type BatchColumnFetcherOptions, type BatchColumnRow, type BatchColumnValue, BootLoadError, BootLoader, type BootLoaderOptions, type BuildRouteEntry, type BuildSnapshotsOptions, type CachedManifestEntry, type CatalogSnapshot, DEFAULT_STANDARD_PAGE_ROUTES, HttpClient, HttpJsonError, KvStore, ManifestLoadError, ManifestLoader, type ManifestLoaderOptions, type MessageParams, type NavBuilderOptions, type ParamStyle, type RawCatalogData, type ResolvedPlan, SaLocale, type SidebarItem, type SidebarSection, type SnapshotKind, buildRoutes, buildSidebar, buildSnapshots, defaultSectionOrder, formatCurrency, formatMessage, getJson, listOpenDrafts, postJson, resolveExtension, trimTrailingSlashes };
@@ -6,7 +6,6 @@ import {
6
6
  BatchColumnFetcher,
7
7
  BootLoadError,
8
8
  BootLoader,
9
- DEFAULT_SECTION_ORDER,
10
9
  DEFAULT_STANDARD_PAGE_ROUTES,
11
10
  HttpJsonError,
12
11
  ManifestLoadError,
@@ -15,16 +14,26 @@ import {
15
14
  buildRoutes,
16
15
  buildSidebar,
17
16
  buildSnapshots,
17
+ defaultSectionOrder,
18
18
  getJson,
19
19
  listOpenDrafts,
20
20
  postJson,
21
21
  resolveExtension,
22
22
  trimTrailingSlashes
23
- } from "../chunk-EH7TOD4H.js";
23
+ } from "../chunk-A3W2N26K.js";
24
24
  import {
25
+ DEFAULT_SA_LOCALE,
26
+ SA_INTL_LOCALES,
27
+ SA_LOCALES,
28
+ SA_MESSAGES,
25
29
  defaultHttpClient,
26
- defaultKvStore
27
- } from "../chunk-LVGUSD3T.js";
30
+ defaultKvStore,
31
+ defineMessages,
32
+ formatCurrency,
33
+ formatMessage,
34
+ mergeMessages,
35
+ resolveMessages
36
+ } from "../chunk-X5SQ5HMB.js";
28
37
  export {
29
38
  ADMIN_UI_VERSION,
30
39
  ActionDefNotInManifestError,
@@ -33,20 +42,29 @@ export {
33
42
  BatchColumnFetcher,
34
43
  BootLoadError,
35
44
  BootLoader,
36
- DEFAULT_SECTION_ORDER,
45
+ DEFAULT_SA_LOCALE,
37
46
  DEFAULT_STANDARD_PAGE_ROUTES,
38
47
  HttpJsonError,
39
48
  ManifestLoadError,
40
49
  ManifestLoader,
41
50
  MissingHandlerError,
51
+ SA_INTL_LOCALES,
52
+ SA_LOCALES,
53
+ SA_MESSAGES,
42
54
  buildRoutes,
43
55
  buildSidebar,
44
56
  buildSnapshots,
45
57
  defaultHttpClient,
46
58
  defaultKvStore,
59
+ defaultSectionOrder,
60
+ defineMessages,
61
+ formatCurrency,
62
+ formatMessage,
47
63
  getJson,
48
64
  listOpenDrafts,
65
+ mergeMessages,
49
66
  postJson,
50
67
  resolveExtension,
68
+ resolveMessages,
51
69
  trimTrailingSlashes
52
70
  };