@saasicat/ui-vue 0.19.0 → 0.21.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 (66) hide show
  1. package/dist/{catalog-JXdKdIqG.d.cts → catalog-BY_t9prv.d.cts} +1 -0
  2. package/dist/{catalog-JXdKdIqG.d.ts → catalog-BY_t9prv.d.ts} +1 -0
  3. package/dist/{chunk-RVG6LQHL.js → chunk-7IFKVGZV.js} +1 -1
  4. package/dist/{chunk-DPTIOQXX.js → chunk-JN6HZGLV.js} +2 -0
  5. package/dist/{chunk-ORX3ZG47.js → chunk-OTP3OSSW.js} +1 -1
  6. package/dist/client/index.cjs +2 -0
  7. package/dist/client/index.d.cts +2 -2
  8. package/dist/client/index.d.ts +2 -2
  9. package/dist/client/index.js +2 -2
  10. package/dist/index.cjs +2 -0
  11. package/dist/index.d.cts +4 -4
  12. package/dist/index.d.ts +4 -4
  13. package/dist/index.js +3 -3
  14. package/dist/quasar/index.cjs +2 -0
  15. package/dist/quasar/index.d.cts +2 -2
  16. package/dist/quasar/index.d.ts +2 -2
  17. package/dist/quasar/index.js +2 -2
  18. package/dist/{use-super-admin-i18n-1nCOkvgi.d.cts → use-super-admin-i18n-DlJRGIVq.d.cts} +1 -1
  19. package/dist/{use-super-admin-i18n-BlqcD0N7.d.ts → use-super-admin-i18n-c_Eqsu9u.d.ts} +1 -1
  20. package/package.json +2 -2
  21. package/src/client/i18n/messages/common.ts +2 -0
  22. package/src/components/admin-page/AdminBody.vue +40 -0
  23. package/src/components/admin-page/AdminHero.vue +32 -0
  24. package/src/components/admin-page/AdminPage.vue +16 -0
  25. package/src/components/admin-page/AdminSection.vue +38 -0
  26. package/src/components/plan-cockpit/PlanCockpit.vue +15 -0
  27. package/src/components/plan-cockpit/PlanCockpitAuditLog.vue +8 -8
  28. package/src/components/plan-cockpit/PlanCockpitDiffPanel.vue +10 -11
  29. package/src/components/plan-cockpit/PlanCockpitImpactPanel.vue +8 -8
  30. package/src/components/plan-cockpit/PlanCockpitVersions.vue +9 -11
  31. package/src/components/plan-detail/PlanAuditLog.vue +7 -8
  32. package/src/components/plan-detail/PlanDetail.vue +14 -1
  33. package/src/components/plan-detail/PlanVersionDiffPanel.vue +5 -8
  34. package/src/components/plan-detail/PlanVersionsPanel.vue +9 -11
  35. package/src/components/plan-list/PlanList.vue +224 -257
  36. package/src/pages-standard/AdminLayout.vue +4 -2
  37. package/src/pages-standard/AuditPage.vue +18 -43
  38. package/src/pages-standard/BundlesPage.vue +17 -34
  39. package/src/pages-standard/DashboardPage.vue +20 -51
  40. package/src/pages-standard/DiscoveryPage.vue +38 -51
  41. package/src/pages-standard/EmailHistoryPage.vue +20 -71
  42. package/src/pages-standard/MarketingCatalogPage.vue +304 -315
  43. package/src/pages-standard/PilotsPage.vue +24 -56
  44. package/src/pages-standard/PlansPage.vue +25 -22
  45. package/src/pages-standard/PlatformEmailPage.vue +19 -51
  46. package/src/pages-standard/PromoCodeDetailPage.vue +39 -50
  47. package/src/pages-standard/PromoCodesPage.vue +8 -15
  48. package/src/pages-standard/SubscriptionsPage.vue +9 -35
  49. package/src/pages-standard/SuperAdminSetupWizard.vue +2 -1
  50. package/src/pages-standard/TenantDetailPage.vue +79 -174
  51. package/src/pages-standard/TenantsPage.vue +8 -33
  52. package/src/pages-standard/UsersPage.vue +21 -54
  53. package/src/pages-standard/bundles-page/BundlesToolbar.vue +67 -0
  54. package/src/pages-standard/marketing-catalog/MarketingCatalogAdmin.vue +111 -73
  55. package/src/pages-standard/marketing-catalog/MarketingCatalogHeader.vue +54 -62
  56. package/src/pages-standard/marketing-catalog/MarketingCatalogPreview.vue +53 -35
  57. package/src/pages-standard/marketing-catalog/MarketingCatalogToolbar.vue +7 -7
  58. package/src/pages-standard/plans-page/PlansPageToast.vue +5 -5
  59. package/src/pages-standard/sa-theme.css +85 -29
  60. package/src/pages-standard/tenant-detail/TenantMasterData.vue +28 -0
  61. package/src/pages-standard/tenant-detail/TenantUsage.vue +31 -0
  62. package/src/pages-standard/tenant-detail/TenantUsers.vue +21 -0
  63. package/src/pages-standard/tenant-detail/types.ts +38 -0
  64. package/src/vue/use-mfa-prompt.ts +72 -0
  65. package/src/pages-standard/bundles-page/BundlesHeader.vue +0 -68
  66. package/src/pages-standard/discovery-page/DiscoveryHeader.vue +0 -34
@@ -1,11 +1,9 @@
1
1
  <template>
2
- <section class="pd-panel pd-audit">
3
- <div class="pd-panel-head">
4
- <div style="min-width: 0">
5
- <h3 class="pd-panel-title">{{ msg.auditLog.title }}</h3>
6
- <div class="pd-panel-sub">{{ msg.auditLog.subtitle }}</div>
7
- </div>
8
- </div>
2
+ <AdminSection
3
+ :title="msg.auditLog.title"
4
+ :subtitle="msg.auditLog.subtitle"
5
+ class="pd-panel pd-audit"
6
+ >
9
7
  <div class="pd-audit-body">
10
8
  <div v-if="loadingAudit" class="pd-diff-empty">{{ msg.auditLog.loading }}</div>
11
9
  <div v-for="a in auditRows" :key="a.id" class="pd-audit-row">
@@ -16,11 +14,12 @@
16
14
  <span class="pd-audit-what">{{ a.action }}</span>
17
15
  </div>
18
16
  </div>
19
- </section>
17
+ </AdminSection>
20
18
  </template>
21
19
 
22
20
  <script setup lang="ts">
23
21
  import { formatMessage } from '../../client/i18n/format.js';
22
+ import AdminSection from '../admin-page/AdminSection.vue';
24
23
  import { useSaMessages, useSuperAdminI18n } from '../../vue/use-super-admin-i18n.js';
25
24
  import type { AuditRow } from './types.js';
26
25
 
@@ -401,7 +401,9 @@ async function executeTerminate(): Promise<void> {
401
401
  const code = e?.body?.code;
402
402
  if (code === 'PLAN_TERMINATE_DATE_NOT_FUTURE') {
403
403
  terminateError.value = msg.value.terminateDialog.errorDateNotFuture;
404
- } else if (code === 'PLAN_VERSION_NOT_LIVE') {
404
+ } else if (code === 'PLAN_VERSION_NOT_PUBLISHED' || code === 'PLAN_VERSION_SUPERSEDED') {
405
+ // Split out of the former PLAN_VERSION_NOT_LIVE; both mean the
406
+ // version cannot be terminated, so they share one message.
405
407
  terminateError.value = msg.value.terminateDialog.errorVersionNotLive;
406
408
  } else if (code === 'PLAN_TERMINATE_NOT_IMPLEMENTED') {
407
409
  terminateError.value = msg.value.terminateDialog.errorNotImplemented;
@@ -692,6 +694,17 @@ async function executeTerminate(): Promise<void> {
692
694
  padding: 14px 16px 12px;
693
695
  border-bottom: 1px solid #f1f5f9;
694
696
  }
697
+ .pd-panel .sa-section__head {
698
+ align-items: flex-start;
699
+ gap: 12px;
700
+ padding: 14px 16px 12px;
701
+ border-bottom: 1px solid #f1f5f9;
702
+ margin-bottom: 0;
703
+ }
704
+ .pd-panel .sa-section__sub {
705
+ font-size: 11.5px;
706
+ margin-top: 2px;
707
+ }
695
708
  .pd-panel-title {
696
709
  font-size: 15px;
697
710
  font-weight: 700;
@@ -1,10 +1,6 @@
1
1
  <template>
2
- <section class="pd-panel">
3
- <div class="pd-panel-head">
4
- <div style="min-width: 0">
5
- <h3 class="pd-panel-title">{{ panelTitle }}</h3>
6
- <div class="pd-panel-sub">{{ panelSubtitle }}</div>
7
- </div>
2
+ <AdminSection :title="panelTitle" :subtitle="panelSubtitle" class="pd-panel">
3
+ <template #actions>
8
4
  <div class="pd-panel-head-right pd-diff-chips">
9
5
  <template v-if="predecessor">
10
6
  <span class="pd-diff-chip add">+{{ diff.featuresAdded.length }} F</span>
@@ -16,7 +12,7 @@
16
12
  <span class="pd-diff-chip mod">{{ quotaCount(selectedVersion) }} Q</span>
17
13
  </template>
18
14
  </div>
19
- </div>
15
+ </template>
20
16
 
21
17
  <div v-if="predecessor" class="pd-diff-list">
22
18
  <div v-for="d in diffRows" :key="d.id" :class="['pd-diff-row', d.kind]">
@@ -123,11 +119,12 @@
123
119
  </div>
124
120
  </template>
125
121
  </div>
126
- </section>
122
+ </AdminSection>
127
123
  </template>
128
124
 
129
125
  <script setup lang="ts">
130
126
  import { computed } from 'vue';
127
+ import AdminSection from '../admin-page/AdminSection.vue';
131
128
  import type { PlanVersionRow } from '@saasicat/types';
132
129
  import { formatMessage } from '../../client/i18n/format.js';
133
130
  import { useSaMessages } from '../../vue/use-super-admin-i18n.js';
@@ -1,13 +1,10 @@
1
1
  <template>
2
- <section class="pd-panel">
3
- <div class="pd-panel-head">
4
- <div style="min-width: 0">
5
- <h3 class="pd-panel-title">{{ msg.versions.title }}</h3>
6
- <div class="pd-panel-sub">
7
- {{ msg.versions.subtitle }}
8
- <code class="pd-code">supersededAt</code>
9
- </div>
10
- </div>
2
+ <AdminSection :title="msg.versions.title" class="pd-panel">
3
+ <template #subtitle>
4
+ {{ msg.versions.subtitle }}
5
+ <code class="pd-code">supersededAt</code>
6
+ </template>
7
+ <template #actions>
11
8
  <div class="pd-panel-head-right">
12
9
  <button
13
10
  v-if="!draftVersion"
@@ -28,7 +25,7 @@
28
25
  <span>{{ newDraftButtonLabel }}</span>
29
26
  </button>
30
27
  </div>
31
- </div>
28
+ </template>
32
29
 
33
30
  <div v-if="chronological.length > 0" class="pd-timeline">
34
31
  <div class="pd-timeline-hint">
@@ -227,11 +224,12 @@
227
224
  </div>
228
225
  </div>
229
226
  </div>
230
- </section>
227
+ </AdminSection>
231
228
  </template>
232
229
 
233
230
  <script setup lang="ts">
234
231
  import { computed } from 'vue';
232
+ import AdminSection from '../admin-page/AdminSection.vue';
235
233
  import type { PlanVersionRow } from '@saasicat/types';
236
234
  import { formatMessage } from '../../client/i18n/format.js';
237
235
  import { useSaMessages } from '../../vue/use-super-admin-i18n.js';