@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.
Files changed (214) hide show
  1. package/README.md +64 -4
  2. package/dist/chunk-A3W2N26K.js +714 -0
  3. package/dist/chunk-QZOSDCNP.js +98 -0
  4. package/dist/chunk-X5SQ5HMB.js +3231 -0
  5. package/dist/client/index.cjs +3988 -0
  6. package/dist/client/index.d.cts +321 -0
  7. package/dist/client/index.d.ts +321 -0
  8. package/dist/client/index.js +70 -0
  9. package/dist/index.cjs +4446 -1249
  10. package/dist/index.d.cts +297 -888
  11. package/dist/index.d.ts +297 -888
  12. package/dist/index.js +609 -1348
  13. package/dist/messages-7b0P8W75.d.cts +1652 -0
  14. package/dist/messages-7b0P8W75.d.ts +1652 -0
  15. package/dist/quasar/index.cjs +3340 -0
  16. package/dist/quasar/index.d.cts +95 -0
  17. package/dist/quasar/index.d.ts +95 -0
  18. package/dist/quasar/index.js +96 -0
  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/use-super-admin-i18n-B3v3-SWZ.d.ts +210 -0
  22. package/dist/use-super-admin-i18n-DMktRVEt.d.cts +210 -0
  23. package/package.json +23 -3
  24. package/src/{action-registry.ts → client/action-registry.ts} +4 -4
  25. package/src/{batch-column-fetcher.ts → client/batch-column-fetcher.ts} +4 -4
  26. package/src/{boot-loader.ts → 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 +27 -0
  51. package/src/{manifest-loader.ts → client/manifest-loader.ts} +4 -4
  52. package/src/{nav-builder.ts → client/nav-builder.ts} +44 -51
  53. package/src/{plan-versions-catalog.ts → client/plan-versions-catalog.ts} +42 -30
  54. package/src/components/BundleVersionPublishDialog.vue +35 -24
  55. package/src/components/FeatureGate.vue +1 -1
  56. package/src/components/MarketingPromotionsTab.vue +112 -59
  57. package/src/components/MfaPromptDialog.vue +11 -11
  58. package/src/components/TenantActionConfirmDialog.vue +19 -17
  59. package/src/components/VersionDiffPreview.vue +72 -43
  60. package/src/components/bundle-editor/BundleCreatePanel.vue +76 -63
  61. package/src/components/bundle-editor/BundleFeaturesEditor.vue +13 -6
  62. package/src/components/bundle-editor/BundlePlanCompatPicker.vue +19 -14
  63. package/src/components/bundle-editor/BundleQuotasEditor.vue +7 -4
  64. package/src/components/bundle-editor/BundleStatusBanner.vue +36 -19
  65. package/src/components/bundle-editor/BundleVersionInlineEditor.vue +51 -35
  66. package/src/components/bundle-editor/BundleVersionStrip.vue +24 -12
  67. package/src/components/bundle-editor/bundle-version-status.ts +29 -29
  68. package/src/components/dialogs/PilotCreateDialog.vue +58 -63
  69. package/src/components/dialogs/PilotEditDialog.vue +40 -34
  70. package/src/components/dialogs/PromoCodeCreateDialog.vue +89 -63
  71. package/src/components/dialogs/PromoCodeEditDialog.vue +98 -66
  72. package/src/components/dialogs/types.ts +3 -13
  73. package/src/components/plan/PlanCycleToggle.vue +21 -10
  74. package/src/components/plan/PlanGrid.vue +2 -2
  75. package/src/components/plan/PriceSummary.vue +1 -1
  76. package/src/components/plan/PromoCodeInput.vue +1 -1
  77. package/src/components/plan/PublicBundleGrid.vue +1 -1
  78. package/src/components/plan-cockpit/PlanCockpit.vue +34 -15
  79. package/src/components/plan-cockpit/PlanCockpitAuditLog.vue +13 -6
  80. package/src/components/plan-cockpit/PlanCockpitDiffPanel.vue +18 -9
  81. package/src/components/plan-cockpit/PlanCockpitHeader.vue +9 -6
  82. package/src/components/plan-cockpit/PlanCockpitImpactPanel.vue +24 -11
  83. package/src/components/plan-cockpit/PlanCockpitKpis.vue +28 -17
  84. package/src/components/plan-cockpit/PlanCockpitVersions.vue +50 -25
  85. package/src/components/plan-create-dialog/PlanCreateDialog.vue +45 -35
  86. package/src/components/plan-detail/PlanAuditLog.vue +11 -6
  87. package/src/components/plan-detail/PlanDetail.vue +21 -23
  88. package/src/components/plan-detail/PlanDetailHeader.vue +20 -11
  89. package/src/components/plan-detail/PlanDetailKpis.vue +30 -17
  90. package/src/components/plan-detail/PlanTerminateDialog.vue +22 -9
  91. package/src/components/plan-detail/PlanVersionDiffPanel.vue +61 -27
  92. package/src/components/plan-detail/PlanVersionsPanel.vue +71 -36
  93. package/src/components/plan-list/PlanList.vue +99 -57
  94. package/src/components/plan-matrix/PlanMatrix.vue +85 -38
  95. package/src/components/plan-review/PlanReview.vue +105 -80
  96. package/src/components/plan-version-editor/PlanCatalogPreview.vue +43 -20
  97. package/src/components/plan-version-editor/PlanComponentPool.vue +15 -7
  98. package/src/components/plan-version-editor/PlanVersionBasket.vue +45 -24
  99. package/src/components/plan-version-editor/PlanVersionDiffDialog.vue +8 -7
  100. package/src/components/plan-version-editor/PlanVersionEditor.vue +74 -40
  101. package/src/components/plan-version-editor/PlanVersionEditorHeader.vue +24 -12
  102. package/src/index.ts +82 -79
  103. package/src/pages-standard/AdminLayout.vue +43 -18
  104. package/src/pages-standard/AdminManifestErrorPage.vue +10 -10
  105. package/src/pages-standard/AuditPage.vue +58 -19
  106. package/src/pages-standard/BundlesPage.vue +29 -18
  107. package/src/pages-standard/DashboardPage.vue +31 -17
  108. package/src/pages-standard/DiscoveryPage.vue +40 -28
  109. package/src/pages-standard/EmailHistoryPage.vue +98 -69
  110. package/src/pages-standard/MarketingCatalogPage.vue +40 -21
  111. package/src/pages-standard/PilotsPage.vue +64 -52
  112. package/src/pages-standard/PlanVersionsPage.vue +9 -5
  113. package/src/pages-standard/PlansPage.vue +91 -59
  114. package/src/pages-standard/PlatformEmailPage.vue +120 -53
  115. package/src/pages-standard/PromoCodeDetailPage.vue +66 -63
  116. package/src/pages-standard/PromoCodesPage.vue +51 -54
  117. package/src/pages-standard/SubscriptionsPage.vue +14 -9
  118. package/src/pages-standard/SuperAdminLoginPage.vue +19 -16
  119. package/src/pages-standard/SuperAdminSetupWizard.vue +53 -49
  120. package/src/pages-standard/TenantDetailPage.vue +54 -40
  121. package/src/pages-standard/TenantsPage.vue +57 -44
  122. package/src/pages-standard/UsersPage.vue +70 -52
  123. package/src/pages-standard/bundles-page/BundleAccordionList.vue +20 -8
  124. package/src/pages-standard/bundles-page/BundleDetailPanel.vue +28 -18
  125. package/src/pages-standard/bundles-page/BundlesFilterBar.vue +4 -1
  126. package/src/pages-standard/bundles-page/BundlesHeader.vue +9 -8
  127. package/src/pages-standard/bundles-page/BundlesKpis.vue +29 -11
  128. package/src/pages-standard/discovery-page/CatalogEntryTransPanel.vue +20 -8
  129. package/src/pages-standard/discovery-page/DiscoveryCapList.vue +5 -3
  130. package/src/pages-standard/discovery-page/DiscoveryFeatureCard.vue +43 -24
  131. package/src/pages-standard/discovery-page/DiscoveryHeader.vue +7 -4
  132. package/src/pages-standard/discovery-page/DiscoveryKpis.vue +28 -15
  133. package/src/pages-standard/discovery-page/DiscoveryQuotaCard.vue +20 -10
  134. package/src/pages-standard/discovery-page/DiscoveryStatusControl.vue +9 -6
  135. package/src/pages-standard/discovery-page/discovery-ui.ts +40 -52
  136. package/src/pages-standard/marketing-catalog/MarketingCatalogAdmin.vue +81 -49
  137. package/src/pages-standard/marketing-catalog/MarketingCatalogHeader.vue +13 -10
  138. package/src/pages-standard/marketing-catalog/MarketingCatalogPreview.vue +24 -20
  139. package/src/pages-standard/marketing-catalog/MarketingCatalogToolbar.vue +6 -3
  140. package/src/pages-standard/plan-versions/PlanDiffCard.vue +16 -6
  141. package/src/pages-standard/plan-versions/PlanVersionHeader.vue +42 -26
  142. package/src/pages-standard/plan-versions/PlanVersionsAudit.vue +46 -27
  143. package/src/pages-standard/plan-versions/PlanVersionsDiff.vue +8 -6
  144. package/src/pages-standard/plan-versions/PlanVersionsList.vue +40 -17
  145. package/src/pages-standard/plan-versions/PlanVersionsMatrix.vue +1 -1
  146. package/src/pages-standard/plan-versions/PlanVersionsTimeline.vue +25 -13
  147. package/src/pages-standard/plan-versions/format.ts +33 -17
  148. package/src/pages-standard/plans-page/PlanArchiveDialog.vue +12 -8
  149. package/src/pages-standard/plans-page/PlanBundleOverview.vue +15 -6
  150. package/src/pages-standard/plans-page/PlanDiscardDraftDialog.vue +18 -7
  151. package/src/pages-standard/plans-page/PlanPublishDialog.vue +23 -12
  152. package/src/pages-standard/tenants/format.ts +3 -2
  153. package/src/pages-tenant/MySubscriptionBundlesPage.vue +73 -38
  154. package/src/pages-tenant/OnboardingConfigurator.vue +3 -3
  155. package/src/pages-tenant/PackageSnapshotPanel.vue +1 -1
  156. package/src/pages-tenant/PlanChangeWizard.vue +10 -6
  157. package/src/pages-tenant/TenantPlanSection.vue +20 -16
  158. package/src/pages-tenant/default-i18n.ts +217 -1
  159. package/src/pages-tenant/tenant-plan-section/BundlePreviewDialog.vue +9 -7
  160. package/src/pages-tenant/tenant-plan-section/TenantBundleStore.vue +11 -12
  161. package/src/pages-tenant/tenant-plan-section/TenantFeatureMatrix.vue +4 -1
  162. package/src/pages-tenant/tenant-plan-section/TenantPlanCardHeader.vue +1 -1
  163. package/src/pages-tenant/tenant-plan-section/TenantUsageGrid.vue +1 -1
  164. package/src/quasar/create-super-admin-app.ts +192 -0
  165. package/src/quasar/index.ts +11 -0
  166. package/src/quasar/notify.ts +30 -0
  167. package/src/testing-e2e/admin-pages-suite.ts +14 -11
  168. package/src/{manifest-store-factory.ts → vue/manifest-store-factory.ts} +1 -1
  169. package/src/{platform-loaders.ts → vue/platform-loaders.ts} +4 -4
  170. package/src/{project-page-host.ts → vue/project-page-host.ts} +6 -4
  171. package/src/{create-super-admin-app.ts → vue/super-admin-context.ts} +20 -139
  172. package/src/vue/ui-notify.ts +30 -0
  173. package/src/{use-actions.ts → vue/use-actions.ts} +1 -1
  174. package/src/{use-api-list.ts → vue/use-api-list.ts} +1 -1
  175. package/src/{use-audit-entries.ts → vue/use-audit-entries.ts} +3 -3
  176. package/src/{use-batch-columns.ts → vue/use-batch-columns.ts} +1 -1
  177. package/src/{use-bulk-publish.ts → vue/use-bulk-publish.ts} +7 -5
  178. package/src/{use-bundle-versions-map.ts → vue/use-bundle-versions-map.ts} +7 -5
  179. package/src/{use-bundles.ts → vue/use-bundles.ts} +14 -14
  180. package/src/{use-catalog-entries.ts → vue/use-catalog-entries.ts} +14 -11
  181. package/src/{use-discovery.ts → vue/use-discovery.ts} +9 -6
  182. package/src/{use-entitlement.ts → vue/use-entitlement.ts} +4 -4
  183. package/src/{use-live-plan-versions.ts → vue/use-live-plan-versions.ts} +5 -5
  184. package/src/{use-manifest.ts → vue/use-manifest.ts} +1 -1
  185. package/src/{use-marketing-projections.ts → vue/use-marketing-projections.ts} +10 -7
  186. package/src/{use-nav.ts → vue/use-nav.ts} +9 -3
  187. package/src/{use-plan-editor.ts → vue/use-plan-editor.ts} +2 -2
  188. package/src/{use-plan-versions.ts → vue/use-plan-versions.ts} +3 -3
  189. package/src/{use-plans.ts → vue/use-plans.ts} +13 -13
  190. package/src/{use-platform-tenant-actions.ts → vue/use-platform-tenant-actions.ts} +9 -6
  191. package/src/{use-promotions.ts → vue/use-promotions.ts} +10 -11
  192. package/src/{use-public-boot.ts → vue/use-public-boot.ts} +1 -1
  193. package/src/{use-subscription-draft.ts → vue/use-subscription-draft.ts} +2 -3
  194. package/src/{use-super-admin-context.ts → vue/use-super-admin-context.ts} +5 -5
  195. package/src/vue/use-super-admin-i18n.ts +82 -0
  196. package/src/{use-tenant-action-flow.ts → vue/use-tenant-action-flow.ts} +12 -7
  197. package/src/{use-tenant-billing-catalog.ts → vue/use-tenant-billing-catalog.ts} +2 -2
  198. package/src/{use-tenant-billing.ts → vue/use-tenant-billing.ts} +2 -2
  199. package/src/{use-tenant-manifest.ts → vue/use-tenant-manifest.ts} +2 -4
  200. package/src/{use-tenant-subscription-bundles.ts → vue/use-tenant-subscription-bundles.ts} +5 -5
  201. package/src/{use-tenants.ts → vue/use-tenants.ts} +3 -3
  202. package/dist/testing-e2e/admin-pages-suite.d.cts +0 -37
  203. package/dist/testing-e2e/admin-pages-suite.d.ts +0 -37
  204. package/src/components/BusinessTypeVersionEditorDialog.vue +0 -417
  205. package/src/components/BusinessTypeVersionPublishDialog.vue +0 -258
  206. package/src/pages-standard/BusinessTypesPage.vue +0 -662
  207. package/src/pages-standard/plan-versions/VersionDiffPreview.vue +0 -167
  208. package/src/use-business-types.ts +0 -269
  209. /package/src/{http-json.ts → client/http-json.ts} +0 -0
  210. /package/src/{types.ts → client/types.ts} +0 -0
  211. /package/src/{version.ts → client/version.ts} +0 -0
  212. /package/src/{create-admin-routes.ts → vue/create-admin-routes.ts} +0 -0
  213. /package/src/{entitlement-provider.ts → vue/entitlement-provider.ts} +0 -0
  214. /package/src/{feature-router-guard.ts → vue/feature-router-guard.ts} +0 -0
@@ -0,0 +1,177 @@
1
+ import { defineMessages } from '../define.js';
2
+
3
+ export const planEditorMessages = defineMessages(
4
+ {
5
+ perMonthShort: '/ Mo',
6
+ perYearShort: '/ J',
7
+ sections: {
8
+ features: 'Features',
9
+ quotas: 'Quotas',
10
+ bundles: 'Bundles',
11
+ price: 'Preis',
12
+ },
13
+ editor: {
14
+ yearlySavings: '{percent} % günstiger',
15
+ validFromError:
16
+ '„Gültig ab" ({draftDay}) muss nach dem „Gültig ab" der Vorgänger-Version v{version} ({prevDay}) liegen.',
17
+ validUntilHintFallback: 'ab-Datum − 1 Tag',
18
+ checklistPrices: 'Preise gesetzt (Mo + J)',
19
+ checklistChangeNote: 'Change-Note vorhanden',
20
+ checklistValidity: 'Gültigkeit gesetzt',
21
+ checklistValidFromOrder: 'Gültig-ab liegt nach der Vorgänger-Version',
22
+ checklistMinFeature: 'Mindestens 1 Feature zugewiesen',
23
+ checklistTenantImpact:
24
+ 'Tenant-Impact: <b>{count} Mandanten</b> erhalten v{version} automatisch',
25
+ diffPriceLabel: 'Monats- + Jahrespreis',
26
+ diffTagAdded: 'neu',
27
+ diffTagRemoved: 'entfernt',
28
+ diffTagChanged: 'geändert',
29
+ },
30
+ header: {
31
+ planKicker: 'PLAN',
32
+ editDraft: 'Draft v{version} bearbeiten',
33
+ newVersion: 'Neue Version v{version}',
34
+ draftChip: 'Draft',
35
+ supersedeNoteBefore: 'Vorgänger wird beim Publish auf',
36
+ supersedeNoteAfter: 'superseded',
37
+ noPredecessorHint: 'Keine Vorgänger-Version (v1)',
38
+ diffButton: 'Diff vs. Vorgänger',
39
+ saveButton: 'Weiter · Review',
40
+ },
41
+ componentPool: {
42
+ title: 'Komponenten',
43
+ subtitle: 'Aus der Library in den Plan-Korb ziehen',
44
+ searchPlaceholder: 'In allen Komponenten suchen…',
45
+ featureCount: '{count} Feature(s)',
46
+ emptyFeatures: 'Keine Features im Discovery-Snapshot.',
47
+ emptyQuotas: 'Keine Quotas im Discovery-Snapshot.',
48
+ emptyBundles: 'Keine published Bundles im Catalog.',
49
+ },
50
+ basket: {
51
+ title: 'Plan-Korb · v{version}',
52
+ subtitle: 'Was dieser Plan enthält · live editierbar',
53
+ changeCount: '{count} Änderungen',
54
+ validFrom: 'Gültig ab',
55
+ until: 'bis',
56
+ inPublicCatalog: 'Im Public-Catalog',
57
+ changeNotePlaceholder: 'Change-Note (Pflicht beim Publish)…',
58
+ assignedCount: '{count} zugewiesen',
59
+ bundleFeatureCount: '{count} Features',
60
+ removeQuota: 'Quota entfernen',
61
+ removeFeature: 'Feature entfernen',
62
+ removeBundle: 'Bundle entfernen',
63
+ emptyQuotas: 'Quotas aus der Library ziehen oder anklicken',
64
+ emptyFeatures: 'Features aus der Library ziehen oder anklicken',
65
+ emptyBundles: 'Keine Bundles zugewiesen — aus der Library ziehen',
66
+ },
67
+ catalogPreview: {
68
+ title: 'Live-Vorschau · Public-Catalog',
69
+ subtitle: 'So sehen Interessenten den Plan',
70
+ desktop: 'Desktop',
71
+ mobile: 'Mobil',
72
+ eyebrow: 'Unsere Pläne · Vorschau Draft v{version}',
73
+ descriptionFallback: 'Plan-Beschreibung wird aus der Change-Note generiert.',
74
+ perMonth: '/ Monat',
75
+ yearlyAlternative: 'oder {price} / Jahr · {savings}',
76
+ cta: 'Jetzt 30 Tage testen',
77
+ included: 'Enthalten',
78
+ emptyContents: 'Noch keine Inhalte zugewiesen.',
79
+ footerLabel: 'Marketing-Catalog',
80
+ footerChangeNote: 'Change-Note „{note}" wird bei Publish veröffentlicht.',
81
+ checklistTitle: 'Publish-Checkliste',
82
+ checklistCount: '{ok} / {total} ok',
83
+ },
84
+ diffDialog: {
85
+ title: 'Diff',
86
+ subtitle:
87
+ 'Was sich gegenüber der Vorgänger-Version ändert (aktueller, ungespeicherter Stand).',
88
+ empty: 'Keine Änderungen gegenüber der Vorgänger-Version.',
89
+ },
90
+ },
91
+ {
92
+ perMonthShort: '/ mo',
93
+ perYearShort: '/ yr',
94
+ sections: {
95
+ features: 'Features',
96
+ quotas: 'Quotas',
97
+ bundles: 'Bundles',
98
+ price: 'Price',
99
+ },
100
+ editor: {
101
+ yearlySavings: '{percent} % cheaper',
102
+ validFromError:
103
+ '"Valid from" ({draftDay}) must be later than the "Valid from" of predecessor version v{version} ({prevDay}).',
104
+ validUntilHintFallback: 'from-date − 1 day',
105
+ checklistPrices: 'Prices set (mo + yr)',
106
+ checklistChangeNote: 'Change note present',
107
+ checklistValidity: 'Validity set',
108
+ checklistValidFromOrder: 'Valid-from is after the predecessor version',
109
+ checklistMinFeature: 'At least 1 feature assigned',
110
+ checklistTenantImpact:
111
+ 'Tenant impact: <b>{count} tenants</b> automatically receive v{version}',
112
+ diffPriceLabel: 'Monthly + yearly price',
113
+ diffTagAdded: 'new',
114
+ diffTagRemoved: 'removed',
115
+ diffTagChanged: 'changed',
116
+ },
117
+ header: {
118
+ planKicker: 'PLAN',
119
+ editDraft: 'Edit draft v{version}',
120
+ newVersion: 'New version v{version}',
121
+ draftChip: 'Draft',
122
+ supersedeNoteBefore: 'Predecessor is superseded as of',
123
+ supersedeNoteAfter: 'on publish',
124
+ noPredecessorHint: 'No predecessor version (v1)',
125
+ diffButton: 'Diff vs. predecessor',
126
+ saveButton: 'Next · Review',
127
+ },
128
+ componentPool: {
129
+ title: 'Components',
130
+ subtitle: 'Drag from the library into the plan basket',
131
+ searchPlaceholder: 'Search all components…',
132
+ featureCount: '{count} feature(s)',
133
+ emptyFeatures: 'No features in the discovery snapshot.',
134
+ emptyQuotas: 'No quotas in the discovery snapshot.',
135
+ emptyBundles: 'No published bundles in the catalog.',
136
+ },
137
+ basket: {
138
+ title: 'Plan basket · v{version}',
139
+ subtitle: 'What this plan contains · editable live',
140
+ changeCount: '{count} changes',
141
+ validFrom: 'Valid from',
142
+ until: 'to',
143
+ inPublicCatalog: 'In public catalog',
144
+ changeNotePlaceholder: 'Change note (required on publish)…',
145
+ assignedCount: '{count} assigned',
146
+ bundleFeatureCount: '{count} features',
147
+ removeQuota: 'Remove quota',
148
+ removeFeature: 'Remove feature',
149
+ removeBundle: 'Remove bundle',
150
+ emptyQuotas: 'Drag or click quotas from the library',
151
+ emptyFeatures: 'Drag or click features from the library',
152
+ emptyBundles: 'No bundles assigned — drag from the library',
153
+ },
154
+ catalogPreview: {
155
+ title: 'Live preview · public catalog',
156
+ subtitle: 'This is how prospects see the plan',
157
+ desktop: 'Desktop',
158
+ mobile: 'Mobile',
159
+ eyebrow: 'Our plans · preview draft v{version}',
160
+ descriptionFallback: 'The plan description is generated from the change note.',
161
+ perMonth: '/ month',
162
+ yearlyAlternative: 'or {price} / year · {savings}',
163
+ cta: 'Start your 30-day trial',
164
+ included: 'Included',
165
+ emptyContents: 'No contents assigned yet.',
166
+ footerLabel: 'Marketing catalog',
167
+ footerChangeNote: 'Change note "{note}" is published on publish.',
168
+ checklistTitle: 'Publish checklist',
169
+ checklistCount: '{ok} / {total} ok',
170
+ },
171
+ diffDialog: {
172
+ title: 'Diff',
173
+ subtitle: 'What changes compared to the predecessor version (current, unsaved state).',
174
+ empty: 'No changes compared to the predecessor version.',
175
+ },
176
+ },
177
+ );
@@ -0,0 +1,251 @@
1
+ import { defineMessages } from '../define.js';
2
+
3
+ export const planVersionsMessages = defineMessages(
4
+ {
5
+ compareEnd: 'Vergleich beenden',
6
+ page: {
7
+ loadingCatalog: 'Catalog wird geladen…',
8
+ noAuditLoader: 'Kein Audit-Loader konfiguriert.',
9
+ },
10
+ header: {
11
+ modeList: 'Plan-Liste',
12
+ modeMatrix: 'Feature-Matrix',
13
+ modeAudit: 'Aktivität',
14
+ publishedOn: 'Publiziert {date}',
15
+ openDrafts: 'offene Drafts',
16
+ regressionOne: 'Regression',
17
+ regressionMany: 'Regressionen',
18
+ startPublishFlow: 'Publish-Flow starten',
19
+ compareModeHint: 'Vergleichsmodus aktiv — andere Ansichten deaktiviert',
20
+ },
21
+ status: {
22
+ draft: 'DRAFT',
23
+ active: 'AKTIV',
24
+ archived: 'ARCHIV',
25
+ },
26
+ timeline: {
27
+ title: 'Plan-Catalog',
28
+ snapshotCount: '{count} Snapshots',
29
+ noOpenDrafts: 'keine offenen Drafts',
30
+ openCount: '{count} offen',
31
+ unknown: 'unbekannt',
32
+ compareHint: 'Rechtsklick auf Snapshot → vergleichen',
33
+ },
34
+ list: {
35
+ kpiPlans: 'Pakete',
36
+ kpiSelfService: 'Self-Service',
37
+ kpiOfTotal: 'von {count}',
38
+ kpiFeaturesTotal: 'Features gesamt',
39
+ missingPlansLabel: 'Fehlende Pakete:',
40
+ missingPlansHint: '— keine Live-Version in diesem Snapshot.',
41
+ createDraftFor: 'Draft für {planId}',
42
+ colPlan: 'Paket',
43
+ colPriceNet: 'Preis (netto)',
44
+ colFeatures: 'Features',
45
+ draftHintLabel: 'Arbeitsstand:',
46
+ draftHintBefore: 'Drafts oben in der Liste. Limits, Preise und Features per Klick auf',
47
+ draftHintEditButton: '„Bearbeiten"',
48
+ draftHintMiddle: 'ändern (ohne MFA). Erst',
49
+ draftHintPublishFlow: 'Publish-Flow',
50
+ draftHintAfter:
51
+ '(Validate → Diff-Review → MFA → Apply) macht sie für künftige Renewals wirksam.',
52
+ },
53
+ matrix: {
54
+ colFeature: 'Feature',
55
+ perMonthShort: '/Mo',
56
+ fallbackGroup: 'Sonstige',
57
+ },
58
+ diff: {
59
+ legend: 'Vergleich',
60
+ plansChanged: 'Pakete geändert',
61
+ regressions: 'Regressionen',
62
+ sectionPlans: 'Pakete',
63
+ changeCountOne: '{count} Änderung',
64
+ changeCountMany: '{count} Änderungen',
65
+ },
66
+ diffPreview: {
67
+ empty: 'Keine Änderungen gegenüber der Vorgängerversion.',
68
+ improvement: 'Verbesserung',
69
+ regression: 'Verschlechterung',
70
+ neutral: 'Neutral',
71
+ },
72
+ diffFields: {
73
+ featuresAdded: 'Hinzugefügte Features',
74
+ featuresRemoved: 'Entfernte Features',
75
+ maxUsers: 'Max. Benutzer',
76
+ maxStorageGb: 'Speicher (GB)',
77
+ monthlyNet: 'Preis monatlich (netto)',
78
+ yearlyNet: 'Preis jährlich (netto)',
79
+ unitSize: 'Einheitsgröße',
80
+ },
81
+ audit: {
82
+ title: 'Aktivität',
83
+ eventCount: '{count} Events',
84
+ loading: 'Audit-Trail wird geladen…',
85
+ empty: 'Keine Plan-/Add-on-Events im Audit-Log gefunden.',
86
+ actionPlanPublished: 'Plan publiziert',
87
+ actionPlanDraftCreated: 'Plan-Draft angelegt',
88
+ actionPlanDraftUpdated: 'Plan-Draft geändert',
89
+ actionPlanDraftDeleted: 'Plan-Draft gelöscht',
90
+ actionCatalogPublished: 'Catalog publiziert',
91
+ detailRegression: 'Mit mindestens einer Verschlechterung publiziert.',
92
+ detailFieldsChanged: '{count} Felder geändert.',
93
+ },
94
+ bulkPublish: {
95
+ changeNoteRequired: 'changeNote ist Pflicht beim Publish.',
96
+ },
97
+ format: {
98
+ priceIndividual: 'individuell',
99
+ today: 'heute',
100
+ yesterday: 'gestern',
101
+ daysAgo: 'vor {count} Tagen',
102
+ weeksAgoOne: 'vor {count} Woche',
103
+ weeksAgoMany: 'vor {count} Wochen',
104
+ monthsAgo: 'vor {count} Monaten',
105
+ yearsAgoOne: 'vor {count} Jahr',
106
+ yearsAgoMany: 'vor {count} Jahren',
107
+ },
108
+ catalog: {
109
+ draftsLabel: 'Arbeitsstand',
110
+ draftsTitleEmpty: 'Keine offenen Drafts',
111
+ draftsTitleOne: '{count} offener Draft bereit für Publish',
112
+ draftsTitleMany: '{count} offene Drafts bereit für Publish',
113
+ draftsDescriptionEmpty:
114
+ 'Lege einen Draft an, um Limits, Preise oder Features zu ändern. Drafts sind ohne MFA editierbar und werden erst beim Publish wirksam.',
115
+ draftsDescription:
116
+ 'Diese Tabelle zeigt, wie der Catalog nach Publish aller Drafts aussehen würde. Bestehende Mandanten bleiben auf der vorherigen Version, bis sie aktiv migriert werden.',
117
+ activeLabel: 'Aktuell',
118
+ activeTitle: 'Live-Catalog',
119
+ activeDescription:
120
+ 'Diese Plan-Versionen sind aktuell für neue Onboardings und für Renewals nach Stichtag aktiv.',
121
+ publishEvent: 'Publish-Event',
122
+ publishEventSingle: '{planId} v{version} publiziert',
123
+ publishEventMultiple: '{count} Versionen publiziert',
124
+ reconstructedSnapshot: 'Snapshot rekonstruiert aus per-Entity-Versionen.',
125
+ },
126
+ },
127
+ {
128
+ compareEnd: 'End comparison',
129
+ page: {
130
+ loadingCatalog: 'Loading catalog…',
131
+ noAuditLoader: 'No audit loader configured.',
132
+ },
133
+ header: {
134
+ modeList: 'Plan list',
135
+ modeMatrix: 'Feature matrix',
136
+ modeAudit: 'Activity',
137
+ publishedOn: 'Published {date}',
138
+ openDrafts: 'open drafts',
139
+ regressionOne: 'regression',
140
+ regressionMany: 'regressions',
141
+ startPublishFlow: 'Start publish flow',
142
+ compareModeHint: 'Comparison mode active — other views disabled',
143
+ },
144
+ status: {
145
+ draft: 'DRAFT',
146
+ active: 'ACTIVE',
147
+ archived: 'ARCHIVED',
148
+ },
149
+ timeline: {
150
+ title: 'Plan catalog',
151
+ snapshotCount: '{count} snapshots',
152
+ noOpenDrafts: 'no open drafts',
153
+ openCount: '{count} open',
154
+ unknown: 'unknown',
155
+ compareHint: 'Right-click a snapshot → compare',
156
+ },
157
+ list: {
158
+ kpiPlans: 'Plans',
159
+ kpiSelfService: 'Self-service',
160
+ kpiOfTotal: 'of {count}',
161
+ kpiFeaturesTotal: 'Features total',
162
+ missingPlansLabel: 'Missing plans:',
163
+ missingPlansHint: '— no live version in this snapshot.',
164
+ createDraftFor: 'Draft for {planId}',
165
+ colPlan: 'Plan',
166
+ colPriceNet: 'Price (net)',
167
+ colFeatures: 'Features',
168
+ draftHintLabel: 'Working state:',
169
+ draftHintBefore:
170
+ 'Drafts at the top of the list. Change limits, prices and features by clicking',
171
+ draftHintEditButton: '"Edit"',
172
+ draftHintMiddle: '(without MFA). Only the',
173
+ draftHintPublishFlow: 'publish flow',
174
+ draftHintAfter:
175
+ '(validate → diff review → MFA → apply) makes them effective for future renewals.',
176
+ },
177
+ matrix: {
178
+ colFeature: 'Feature',
179
+ perMonthShort: '/mo',
180
+ fallbackGroup: 'Other',
181
+ },
182
+ diff: {
183
+ legend: 'Comparison',
184
+ plansChanged: 'Plans changed',
185
+ regressions: 'Regressions',
186
+ sectionPlans: 'Plans',
187
+ changeCountOne: '{count} change',
188
+ changeCountMany: '{count} changes',
189
+ },
190
+ diffPreview: {
191
+ empty: 'No changes compared to the previous version.',
192
+ improvement: 'Improvement',
193
+ regression: 'Regression',
194
+ neutral: 'Neutral',
195
+ },
196
+ diffFields: {
197
+ featuresAdded: 'Added features',
198
+ featuresRemoved: 'Removed features',
199
+ maxUsers: 'Max. users',
200
+ maxStorageGb: 'Storage (GB)',
201
+ monthlyNet: 'Price monthly (net)',
202
+ yearlyNet: 'Price yearly (net)',
203
+ unitSize: 'Unit size',
204
+ },
205
+ audit: {
206
+ title: 'Activity',
207
+ eventCount: '{count} events',
208
+ loading: 'Loading audit trail…',
209
+ empty: 'No plan/add-on events found in the audit log.',
210
+ actionPlanPublished: 'Plan published',
211
+ actionPlanDraftCreated: 'Plan draft created',
212
+ actionPlanDraftUpdated: 'Plan draft changed',
213
+ actionPlanDraftDeleted: 'Plan draft deleted',
214
+ actionCatalogPublished: 'Catalog published',
215
+ detailRegression: 'Published with at least one regression.',
216
+ detailFieldsChanged: '{count} fields changed.',
217
+ },
218
+ bulkPublish: {
219
+ changeNoteRequired: 'changeNote is required when publishing.',
220
+ },
221
+ format: {
222
+ priceIndividual: 'custom',
223
+ today: 'today',
224
+ yesterday: 'yesterday',
225
+ daysAgo: '{count} days ago',
226
+ weeksAgoOne: '{count} week ago',
227
+ weeksAgoMany: '{count} weeks ago',
228
+ monthsAgo: '{count} months ago',
229
+ yearsAgoOne: '{count} year ago',
230
+ yearsAgoMany: '{count} years ago',
231
+ },
232
+ catalog: {
233
+ draftsLabel: 'Working state',
234
+ draftsTitleEmpty: 'No open drafts',
235
+ draftsTitleOne: '{count} open draft ready to publish',
236
+ draftsTitleMany: '{count} open drafts ready to publish',
237
+ draftsDescriptionEmpty:
238
+ 'Create a draft to change limits, prices or features. Drafts are editable without MFA and only take effect when published.',
239
+ draftsDescription:
240
+ 'This table shows what the catalog would look like after publishing all drafts. Existing tenants stay on the previous version until they are actively migrated.',
241
+ activeLabel: 'Current',
242
+ activeTitle: 'Live catalog',
243
+ activeDescription:
244
+ 'These plan versions are currently active for new onboardings and for renewals after the effective date.',
245
+ publishEvent: 'Publish event',
246
+ publishEventSingle: '{planId} v{version} published',
247
+ publishEventMultiple: '{count} versions published',
248
+ reconstructedSnapshot: 'Snapshot reconstructed from per-entity versions.',
249
+ },
250
+ },
251
+ );