@saasicat/ui-vue 0.21.0 → 0.22.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{catalog-BY_t9prv.d.cts → catalog-DJcfm5N2.d.cts} +20 -7
- package/dist/{catalog-BY_t9prv.d.ts → catalog-DJcfm5N2.d.ts} +20 -7
- package/dist/{chunk-JN6HZGLV.js → chunk-F7NRM6KI.js} +54 -28
- package/dist/{chunk-7IFKVGZV.js → chunk-LY52T4N4.js} +21 -2
- package/dist/{chunk-OTP3OSSW.js → chunk-XMMFN2WJ.js} +74 -3
- package/dist/client/index.cjs +132 -29
- package/dist/client/index.d.cts +53 -3
- package/dist/client/index.d.ts +53 -3
- package/dist/client/index.js +14 -2
- package/dist/index.cjs +319 -162
- package/dist/index.d.cts +30 -8
- package/dist/index.d.ts +30 -8
- package/dist/index.js +176 -133
- package/dist/quasar/index.cjs +76 -29
- package/dist/quasar/index.d.cts +2 -2
- package/dist/quasar/index.d.ts +2 -2
- package/dist/quasar/index.js +6 -2
- package/dist/testing-e2e/admin-pages-suite.d.cts +37 -0
- package/dist/testing-e2e/admin-pages-suite.d.ts +37 -0
- package/dist/{use-super-admin-i18n-c_Eqsu9u.d.ts → use-super-admin-i18n-CHNdsSlm.d.ts} +34 -7
- package/dist/{use-super-admin-i18n-DlJRGIVq.d.cts → use-super-admin-i18n-CgTuNi8h.d.cts} +34 -7
- package/package.json +18 -8
- package/src/client/i18n/messages/bundles.ts +0 -2
- package/src/client/i18n/messages/common.ts +22 -0
- package/src/client/i18n/messages/discovery.ts +2 -2
- package/src/client/i18n/messages/marketing.ts +2 -4
- package/src/client/i18n/messages/plan-detail.ts +0 -4
- package/src/client/i18n/messages/plans.ts +20 -8
- package/src/client/i18n/messages/tenants.ts +0 -2
- package/src/client/index.ts +1 -0
- package/src/client/manifest-loader.ts +1 -1
- package/src/client/resolve-plans.ts +144 -0
- package/src/components/BundleVersionPublishDialog.vue +6 -6
- package/src/components/KvBlock.vue +4 -4
- package/src/components/MarketingPromotionsTab.vue +34 -48
- package/src/components/MfaPromptDialog.vue +8 -2
- package/src/components/TenantActionConfirmDialog.vue +4 -4
- package/src/components/VersionDiffPreview.vue +7 -7
- package/src/components/admin-page/AdminFilters.vue +12 -0
- package/src/components/admin-page/AdminHero.vue +22 -5
- package/src/components/admin-page/AdminKpi.vue +84 -0
- package/src/components/admin-page/AdminPaginator.vue +195 -0
- package/src/components/admin-page/AdminRefreshBtn.vue +39 -0
- package/src/components/admin-page/AdminSection.vue +31 -16
- package/src/components/admin-page/AdminStatistics.vue +40 -0
- package/src/components/admin-page/AdminTable.vue +175 -0
- package/src/components/bundle-editor/BundleCreatePanel.vue +23 -23
- package/src/components/bundle-editor/BundleFeaturesEditor.vue +7 -7
- package/src/components/bundle-editor/BundlePlanCompatPicker.vue +9 -9
- package/src/components/bundle-editor/BundleQuotasEditor.vue +11 -11
- package/src/components/bundle-editor/BundleStatusBanner.vue +6 -6
- package/src/components/bundle-editor/BundleVersionInlineEditor.vue +18 -18
- package/src/components/bundle-editor/BundleVersionStrip.vue +12 -12
- package/src/components/dialogs/PilotCreateDialog.vue +12 -12
- package/src/components/dialogs/PilotEditDialog.vue +7 -7
- package/src/components/dialogs/PromoCodeCreateDialog.vue +8 -8
- package/src/components/dialogs/PromoCodeDialogFields.vue +33 -19
- package/src/components/dialogs/PromoCodeEditDialog.vue +10 -10
- package/src/components/plan/PlanGrid.vue +1 -1
- package/src/components/plan-create-dialog/PlanCreateDialog.vue +34 -46
- package/src/components/plan-detail/PlanDetail.vue +92 -302
- package/src/components/plan-detail/PlanDetailKpis.vue +22 -27
- package/src/components/plan-detail/PlanTitleEdit.vue +133 -0
- package/src/components/plan-list/PlanList.vue +72 -290
- package/src/components/plan-matrix/PlanMatrix.vue +66 -183
- package/src/components/plan-review/PlanReview.vue +191 -275
- package/src/components/plan-version-editor/PlanCatalogPreview.vue +7 -5
- package/src/components/plan-version-editor/PlanVersionEditor.vue +200 -295
- package/src/components/plan-version-editor/PlanVersionEditorHeader.vue +23 -55
- package/src/index.ts +1 -0
- package/src/pages-standard/AdminLayout.vue +34 -10
- package/src/pages-standard/AdminManifestErrorPage.vue +79 -9
- package/src/pages-standard/AuditPage.vue +53 -72
- package/src/pages-standard/BundlesPage.vue +128 -144
- package/src/pages-standard/DashboardPage.vue +43 -107
- package/src/pages-standard/DiscoveryPage.vue +158 -200
- package/src/pages-standard/EmailHistoryPage.vue +98 -88
- package/src/pages-standard/MarketingCatalogPage.vue +237 -267
- package/src/pages-standard/PilotsPage.vue +44 -60
- package/src/pages-standard/PlansPage.vue +230 -105
- package/src/pages-standard/PlatformEmailPage.vue +37 -40
- package/src/pages-standard/PromoCodeDetailPage.vue +16 -30
- package/src/pages-standard/PromoCodesPage.vue +86 -112
- package/src/pages-standard/SubscriptionsPage.vue +10 -17
- package/src/pages-standard/SuperAdminLoginPage.vue +12 -12
- package/src/pages-standard/SuperAdminSetupWizard.vue +20 -17
- package/src/pages-standard/TenantDetailPage.vue +45 -41
- package/src/pages-standard/TenantsPage.vue +184 -264
- package/src/pages-standard/UsersPage.vue +69 -104
- package/src/pages-standard/bundles-page/BundleAccordionList.vue +20 -17
- package/src/pages-standard/bundles-page/BundlesKpis.vue +13 -22
- package/src/pages-standard/bundles-page/BundlesToolbar.vue +6 -10
- package/src/pages-standard/discovery-page/CatalogEntryTransPanel.vue +10 -10
- package/src/pages-standard/discovery-page/DiscoveryCapList.vue +5 -5
- package/src/pages-standard/discovery-page/DiscoveryFeatureCard.vue +16 -16
- package/src/pages-standard/discovery-page/DiscoveryKpis.vue +31 -27
- package/src/pages-standard/discovery-page/DiscoveryQuotaCard.vue +7 -7
- package/src/pages-standard/marketing-catalog/MarketingCatalogAdmin.vue +1 -1
- package/src/pages-standard/marketing-catalog/MarketingCatalogHeader.vue +2 -13
- package/src/pages-standard/plan-versions/PlanDiffCard.vue +6 -6
- package/src/pages-standard/plan-versions/PlanVersionsDiff.vue +6 -6
- package/src/pages-standard/plan-versions/PlanVersionsTimeline.vue +16 -16
- package/src/pages-standard/plans-page/PlanBundleOverview.vue +14 -29
- package/src/pages-standard/plans-page/PlanPublishDialog.vue +1 -1
- package/src/pages-standard/plans-page/PlansPageToast.vue +1 -1
- package/src/pages-standard/sa-theme.css +481 -71
- package/src/pages-standard/tenant-detail/TenantUsers.vue +2 -8
- package/src/pages-standard/tenants/StatusPill.vue +2 -2
- package/src/pages-tenant/MySubscriptionBundlesPage.vue +25 -25
- package/src/pages-tenant/OnboardingConfigurator.vue +1 -5
- package/src/pages-tenant/PackageSnapshotPanel.vue +1 -1
- package/src/pages-tenant/TenantPlanSection.vue +12 -20
- package/src/quasar/create-super-admin-app.ts +4 -0
- package/src/vue/entitlement-provider.ts +0 -1
- package/src/vue/feature-router-guard.ts +0 -1
- package/src/vue/super-admin-context.ts +106 -1
- package/src/vue/use-api-list.ts +2 -1
- package/src/vue/use-pagination.ts +63 -0
- package/src/vue/use-plans.ts +1 -2
- package/src/vue/use-sign-out.ts +90 -0
- package/src/vue/use-tenant-billing.ts +1 -1
- package/src/vue/use-tenant-manifest.ts +0 -1
- package/src/components/KpiCard.vue +0 -53
- package/src/components/plan-cockpit/PlanCockpit.vue +0 -1027
- package/src/components/plan-cockpit/PlanCockpitAuditLog.vue +0 -72
- package/src/components/plan-cockpit/PlanCockpitDiffPanel.vue +0 -99
- package/src/components/plan-cockpit/PlanCockpitHeader.vue +0 -101
- package/src/components/plan-cockpit/PlanCockpitImpactPanel.vue +0 -112
- package/src/components/plan-cockpit/PlanCockpitKpis.vue +0 -68
- package/src/components/plan-cockpit/PlanCockpitVersions.vue +0 -249
- package/src/components/plan-cockpit/types.ts +0 -72
- package/src/components/plan-detail/PlanDetailHeader.vue +0 -194
|
@@ -12,91 +12,93 @@
|
|
|
12
12
|
@save="emitSave"
|
|
13
13
|
/>
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
<
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
15
|
+
<AdminBody>
|
|
16
|
+
<!-- Save error banner (e.g. "Plan hat bereits eine Draft-Version") -->
|
|
17
|
+
<div v-if="saveError" class="pve-error" role="alert">
|
|
18
|
+
<span class="pve-error-ico" aria-hidden="true">
|
|
19
|
+
<svg
|
|
20
|
+
width="16"
|
|
21
|
+
height="16"
|
|
22
|
+
viewBox="0 0 24 24"
|
|
23
|
+
fill="none"
|
|
24
|
+
stroke="currentColor"
|
|
25
|
+
stroke-width="2"
|
|
26
|
+
>
|
|
27
|
+
<path
|
|
28
|
+
d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"
|
|
29
|
+
/>
|
|
30
|
+
<path d="M12 9v4M12 17h.01" />
|
|
31
|
+
</svg>
|
|
32
|
+
</span>
|
|
33
|
+
<span>{{ saveError }}</span>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<!-- 3-Col Body -->
|
|
37
|
+
<div class="pve-body">
|
|
38
|
+
<PlanComponentPool
|
|
39
|
+
v-model:search-term="searchTerm"
|
|
40
|
+
v-model:active-tab="activeTab"
|
|
41
|
+
:pool-tabs="poolTabs"
|
|
42
|
+
:filtered-feature-groups="filteredFeatureGroups"
|
|
43
|
+
:filtered-quotas="filteredQuotas"
|
|
44
|
+
:filtered-bundles="filteredBundles"
|
|
45
|
+
:feature-label="featureLabel"
|
|
46
|
+
:feature-group-label="featureGroupLabel"
|
|
47
|
+
:is-feature-on="isFeatureOn"
|
|
48
|
+
:is-quota-on="isQuotaOn"
|
|
49
|
+
:is-bundle-fully-on="isBundleFullyOn"
|
|
50
|
+
:is-bundle-partially-on="isBundlePartiallyOn"
|
|
51
|
+
@toggle-feature="toggleFeature"
|
|
52
|
+
@pool-quota-click="onPoolQuotaClick"
|
|
53
|
+
@toggle-bundle="toggleBundle"
|
|
54
|
+
@drag-start="onDragStart"
|
|
55
|
+
@drag-end="onDragEnd"
|
|
56
|
+
/>
|
|
57
|
+
|
|
58
|
+
<PlanVersionBasket
|
|
59
|
+
:form="form"
|
|
60
|
+
:drag-over="dragOver"
|
|
61
|
+
:change-count="changeCount"
|
|
62
|
+
:min-valid-from="minValidFrom"
|
|
63
|
+
:valid-from-error="validFromError"
|
|
64
|
+
:selected-quota-list="selectedQuotaList"
|
|
65
|
+
:sorted-selected-features="sortedSelectedFeatures"
|
|
66
|
+
:active-bundles="activeBundles"
|
|
67
|
+
:feature-label="featureLabel"
|
|
68
|
+
@update:valid-from="onValidFromInput($event)"
|
|
69
|
+
@update:valid-until="form.validUntil = $event"
|
|
70
|
+
@update:monthly-net="form.monthlyNet = $event"
|
|
71
|
+
@update:yearly-net="form.yearlyNet = $event"
|
|
72
|
+
@update:marketed="form.marketed = $event"
|
|
73
|
+
@update:change-note="form.changeNote = $event"
|
|
74
|
+
@set-quota-value="setQuotaValue"
|
|
75
|
+
@toggle-quota="toggleQuota"
|
|
76
|
+
@toggle-feature="toggleFeature"
|
|
77
|
+
@toggle-bundle="toggleBundle"
|
|
78
|
+
@drag-over="onDragOver"
|
|
79
|
+
@drag-leave="onDragLeave"
|
|
80
|
+
@drop="onDrop"
|
|
81
|
+
/>
|
|
82
|
+
|
|
83
|
+
<PlanCatalogPreview
|
|
84
|
+
v-model:preview-mode="previewMode"
|
|
85
|
+
:catalog-url="catalogUrl"
|
|
86
|
+
:plan-key="planKey"
|
|
87
|
+
:version="form.version"
|
|
88
|
+
:change-note="form.changeNote"
|
|
89
|
+
:quotas="form.quotas"
|
|
90
|
+
:plan-display-name="planDisplayName"
|
|
91
|
+
:formatted-monthly="formattedMonthly"
|
|
92
|
+
:formatted-yearly="formattedYearly"
|
|
93
|
+
:yearly-savings-label="yearlySavingsLabel"
|
|
94
|
+
:selected-quota-list="selectedQuotaList"
|
|
95
|
+
:sorted-selected-features="sortedSelectedFeatures"
|
|
96
|
+
:checklist="checklist"
|
|
97
|
+
:checklist-ok-count="checklistOkCount"
|
|
98
|
+
:feature-label="featureLabel"
|
|
99
|
+
/>
|
|
100
|
+
</div>
|
|
101
|
+
</AdminBody>
|
|
100
102
|
|
|
101
103
|
<PlanVersionDiffDialog
|
|
102
104
|
v-model="showDiff"
|
|
@@ -116,6 +118,7 @@ import PlanComponentPool from './PlanComponentPool.vue';
|
|
|
116
118
|
import PlanCatalogPreview from './PlanCatalogPreview.vue';
|
|
117
119
|
import PlanVersionBasket from './PlanVersionBasket.vue';
|
|
118
120
|
import PlanVersionDiffDialog from './PlanVersionDiffDialog.vue';
|
|
121
|
+
import AdminBody from '../admin-page/AdminBody.vue';
|
|
119
122
|
import PlanVersionEditorHeader from './PlanVersionEditorHeader.vue';
|
|
120
123
|
import type {
|
|
121
124
|
BundleEntry,
|
|
@@ -453,7 +456,7 @@ const yearlySavingsLabel = computed(() => {
|
|
|
453
456
|
// ── Validation ──────────────────────────────────────────────────────
|
|
454
457
|
|
|
455
458
|
// "Gültig ab" must be strictly after the "Gültig ab" of the predecessor
|
|
456
|
-
// version — otherwise the version timeline is wrong
|
|
459
|
+
// version — otherwise the version timeline is wrong.
|
|
457
460
|
// ISO date strings (YYYY-MM-DD) are lexicographically comparable.
|
|
458
461
|
const validFromError = computed<string | null>(() => {
|
|
459
462
|
const prev = props.predecessorVersion;
|
|
@@ -719,7 +722,7 @@ function emitSave(): void {
|
|
|
719
722
|
features: [...form.features],
|
|
720
723
|
// Persisted bundle selection = all fully active bundles. Derived from
|
|
721
724
|
// the features so that `bundles` is always consistent with `features`
|
|
722
|
-
// (
|
|
725
|
+
// (see PlanVersionRow.bundles).
|
|
723
726
|
bundles: activeBundles.value.map((b) => b.bundleKey),
|
|
724
727
|
quotas: { ...form.quotas },
|
|
725
728
|
monthlyNet: form.monthlyNet,
|
|
@@ -734,48 +737,15 @@ function emitSave(): void {
|
|
|
734
737
|
|
|
735
738
|
<style>
|
|
736
739
|
.pve {
|
|
737
|
-
--pve-nav-bg: #0b1929;
|
|
738
|
-
--pve-bg: #f6f7f9;
|
|
739
|
-
--pve-surface: #ffffff;
|
|
740
|
-
--pve-surface-2: #f8fafc;
|
|
741
|
-
--pve-border: #e5e7eb;
|
|
742
|
-
--pve-border-strong: #d1d5db;
|
|
743
|
-
--pve-text: #0f172a;
|
|
744
|
-
--pve-text-2: #475569;
|
|
745
|
-
--pve-text-3: #94a3b8;
|
|
746
|
-
--pve-primary: #2563eb;
|
|
747
|
-
--pve-primary-700: #1d4ed8;
|
|
748
|
-
--pve-live: #10b981;
|
|
749
|
-
--pve-draft: #f59e0b;
|
|
750
|
-
--pve-draft-bg: #fffbeb;
|
|
751
|
-
--pve-font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
|
|
752
|
-
--pve-font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;
|
|
753
|
-
|
|
754
740
|
display: flex;
|
|
755
741
|
flex-direction: column;
|
|
756
|
-
background: var(--pve-bg);
|
|
757
|
-
color: var(--pve-text);
|
|
758
|
-
font-family: var(--pve-font-sans);
|
|
759
742
|
box-sizing: border-box;
|
|
760
|
-
/*
|
|
761
|
-
|
|
743
|
+
/* A full view rather than a modal: the columns stretch to the content area
|
|
744
|
+
AdminPage already sizes. */
|
|
762
745
|
height: 100%;
|
|
763
|
-
min-height: calc(100vh - 56px);
|
|
764
|
-
}
|
|
765
|
-
.pve :deep(*) {
|
|
766
|
-
box-sizing: border-box;
|
|
767
746
|
}
|
|
768
747
|
|
|
769
748
|
/* ── Editor bar ─────────────────────────────────────────────────── */
|
|
770
|
-
.pve-bar {
|
|
771
|
-
background: #fff;
|
|
772
|
-
border-bottom: 1px solid var(--pve-border);
|
|
773
|
-
padding: 12px 22px;
|
|
774
|
-
display: flex;
|
|
775
|
-
align-items: center;
|
|
776
|
-
gap: 16px;
|
|
777
|
-
flex: 0 0 auto;
|
|
778
|
-
}
|
|
779
749
|
|
|
780
750
|
/* ── Save error banner ──────────────────────────────────────────── */
|
|
781
751
|
.pve-error {
|
|
@@ -794,95 +764,24 @@ function emitSave(): void {
|
|
|
794
764
|
display: inline-flex;
|
|
795
765
|
flex: 0 0 auto;
|
|
796
766
|
}
|
|
797
|
-
.
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
gap: 14px;
|
|
801
|
-
min-width: 0;
|
|
802
|
-
}
|
|
803
|
-
.pve-bar-right {
|
|
804
|
-
display: flex;
|
|
805
|
-
align-items: center;
|
|
806
|
-
gap: 8px;
|
|
807
|
-
margin-left: auto;
|
|
808
|
-
}
|
|
809
|
-
.pve-titlechip {
|
|
810
|
-
display: flex;
|
|
767
|
+
/* The kicker above the heading: "Plan" plus the plan key. */
|
|
768
|
+
.pve-kicker {
|
|
769
|
+
display: inline-flex;
|
|
811
770
|
align-items: center;
|
|
812
771
|
gap: 6px;
|
|
813
|
-
}
|
|
814
|
-
.pve-titlechip-kicker {
|
|
815
772
|
font-size: 10px;
|
|
816
773
|
font-weight: 700;
|
|
817
774
|
letter-spacing: 0.1em;
|
|
818
|
-
color:
|
|
819
|
-
}
|
|
820
|
-
.pve-title {
|
|
821
|
-
font-size: 18px;
|
|
822
|
-
font-weight: 700;
|
|
823
|
-
margin: 0;
|
|
824
|
-
letter-spacing: -0.02em;
|
|
825
|
-
}
|
|
826
|
-
.pve-bar-note {
|
|
827
|
-
font-size: 11.5px;
|
|
828
|
-
color: #64748b;
|
|
775
|
+
color: var(--sa-muted-light);
|
|
829
776
|
}
|
|
830
777
|
.pve-mono {
|
|
831
|
-
font: 500 11px var(--
|
|
778
|
+
font: 500 11px var(--sa-font-mono);
|
|
832
779
|
}
|
|
833
780
|
.pve-mono--xs {
|
|
834
781
|
font-size: 10px;
|
|
835
782
|
}
|
|
836
783
|
|
|
837
784
|
/* ── Buttons & Chips ───────────────────────────────────────────── */
|
|
838
|
-
.pve-btn {
|
|
839
|
-
display: inline-flex;
|
|
840
|
-
align-items: center;
|
|
841
|
-
gap: 7px;
|
|
842
|
-
padding: 8px 14px;
|
|
843
|
-
border-radius: 7px;
|
|
844
|
-
font: 500 13px var(--pve-font-sans);
|
|
845
|
-
cursor: pointer;
|
|
846
|
-
border: 1px solid var(--pve-border-strong);
|
|
847
|
-
background: #fff;
|
|
848
|
-
color: var(--pve-text);
|
|
849
|
-
transition:
|
|
850
|
-
background 0.12s,
|
|
851
|
-
border-color 0.12s;
|
|
852
|
-
}
|
|
853
|
-
.pve-btn:hover {
|
|
854
|
-
background: var(--pve-surface-2);
|
|
855
|
-
}
|
|
856
|
-
.pve-btn:disabled {
|
|
857
|
-
cursor: not-allowed;
|
|
858
|
-
opacity: 0.5;
|
|
859
|
-
}
|
|
860
|
-
.pve-btn--primary {
|
|
861
|
-
background: var(--pve-primary);
|
|
862
|
-
border-color: var(--pve-primary);
|
|
863
|
-
color: #fff;
|
|
864
|
-
}
|
|
865
|
-
.pve-btn--primary:hover {
|
|
866
|
-
background: var(--pve-primary-700);
|
|
867
|
-
}
|
|
868
|
-
.pve-btn--ghost {
|
|
869
|
-
border-color: transparent;
|
|
870
|
-
background: transparent;
|
|
871
|
-
}
|
|
872
|
-
.pve-btn--ghost:hover {
|
|
873
|
-
background: rgba(15, 23, 42, 0.05);
|
|
874
|
-
}
|
|
875
|
-
.pve-btn--sm {
|
|
876
|
-
padding: 5px 9px;
|
|
877
|
-
font-size: 12px;
|
|
878
|
-
gap: 5px;
|
|
879
|
-
}
|
|
880
|
-
.pve-ico {
|
|
881
|
-
display: inline-flex;
|
|
882
|
-
}
|
|
883
|
-
.pve-ico--rot180 {
|
|
884
|
-
transform: rotate(180deg);
|
|
885
|
-
}
|
|
886
785
|
|
|
887
786
|
.pve-chip {
|
|
888
787
|
display: inline-flex;
|
|
@@ -893,9 +792,9 @@ function emitSave(): void {
|
|
|
893
792
|
font-size: 11px;
|
|
894
793
|
font-weight: 600;
|
|
895
794
|
letter-spacing: 0.01em;
|
|
896
|
-
background: var(--
|
|
897
|
-
color: var(--
|
|
898
|
-
border: 1px solid var(--
|
|
795
|
+
background: var(--sa-bg-surface-2);
|
|
796
|
+
color: var(--sa-muted-dark);
|
|
797
|
+
border: 1px solid var(--sa-border);
|
|
899
798
|
}
|
|
900
799
|
.pve-chip--plan {
|
|
901
800
|
background: #dbeafe;
|
|
@@ -903,7 +802,7 @@ function emitSave(): void {
|
|
|
903
802
|
border-color: #bfdbfe;
|
|
904
803
|
}
|
|
905
804
|
.pve-chip--draft {
|
|
906
|
-
background: var(--
|
|
805
|
+
background: var(--sa-warning-bg);
|
|
907
806
|
color: #b45309;
|
|
908
807
|
border-color: #fde68a;
|
|
909
808
|
}
|
|
@@ -915,34 +814,40 @@ function emitSave(): void {
|
|
|
915
814
|
background: currentColor;
|
|
916
815
|
}
|
|
917
816
|
.pve-chip--changes {
|
|
918
|
-
background:
|
|
817
|
+
background: var(--sa-warning-bg);
|
|
919
818
|
color: #b45309;
|
|
920
819
|
border-color: #fde68a;
|
|
921
820
|
}
|
|
922
821
|
|
|
923
822
|
.pve-kbd {
|
|
924
|
-
font: 600 10.5px var(--
|
|
925
|
-
background:
|
|
926
|
-
color:
|
|
823
|
+
font: 600 10.5px var(--sa-font-mono);
|
|
824
|
+
background: var(--sa-border-soft);
|
|
825
|
+
color: var(--sa-muted-dark);
|
|
927
826
|
padding: 2px 6px;
|
|
928
827
|
border-radius: 4px;
|
|
929
|
-
border: 1px solid
|
|
828
|
+
border: 1px solid var(--sa-border);
|
|
930
829
|
}
|
|
931
830
|
|
|
932
831
|
/* ── Body Grid ──────────────────────────────────────────────────── */
|
|
832
|
+
.pve > .sa-page-body {
|
|
833
|
+
display: flex;
|
|
834
|
+
flex-direction: column;
|
|
835
|
+
flex: 1 1 auto;
|
|
836
|
+
min-height: 0;
|
|
837
|
+
}
|
|
933
838
|
.pve-body {
|
|
934
839
|
flex: 1 1 auto;
|
|
935
840
|
min-height: 0;
|
|
936
841
|
overflow: hidden;
|
|
937
842
|
display: grid;
|
|
938
843
|
grid-template-columns: 380px 1fr 400px;
|
|
939
|
-
background: var(--
|
|
844
|
+
background: var(--sa-bg-app);
|
|
940
845
|
}
|
|
941
846
|
|
|
942
847
|
.pve-col {
|
|
943
848
|
display: flex;
|
|
944
849
|
flex-direction: column;
|
|
945
|
-
border-right: 1px solid var(--
|
|
850
|
+
border-right: 1px solid var(--sa-border);
|
|
946
851
|
background: #fff;
|
|
947
852
|
min-width: 0;
|
|
948
853
|
overflow: hidden;
|
|
@@ -952,7 +857,7 @@ function emitSave(): void {
|
|
|
952
857
|
}
|
|
953
858
|
.pve-col-header {
|
|
954
859
|
padding: 16px 18px 12px;
|
|
955
|
-
border-bottom: 1px solid var(--
|
|
860
|
+
border-bottom: 1px solid var(--sa-border);
|
|
956
861
|
display: flex;
|
|
957
862
|
align-items: flex-start;
|
|
958
863
|
gap: 8px;
|
|
@@ -971,7 +876,7 @@ function emitSave(): void {
|
|
|
971
876
|
}
|
|
972
877
|
.pve-col-sub {
|
|
973
878
|
font-size: 11.5px;
|
|
974
|
-
color:
|
|
879
|
+
color: var(--sa-muted);
|
|
975
880
|
margin-top: 2px;
|
|
976
881
|
}
|
|
977
882
|
|
|
@@ -986,7 +891,7 @@ function emitSave(): void {
|
|
|
986
891
|
padding: 10px 14px;
|
|
987
892
|
margin: 10px 14px 0;
|
|
988
893
|
background: #fff;
|
|
989
|
-
border: 1px solid var(--
|
|
894
|
+
border: 1px solid var(--sa-border);
|
|
990
895
|
border-radius: 8px;
|
|
991
896
|
}
|
|
992
897
|
.pve-search input {
|
|
@@ -994,11 +899,11 @@ function emitSave(): void {
|
|
|
994
899
|
border: 0;
|
|
995
900
|
outline: 0;
|
|
996
901
|
background: transparent;
|
|
997
|
-
font: 13px var(--
|
|
998
|
-
color:
|
|
902
|
+
font: 13px var(--sa-font-body);
|
|
903
|
+
color: var(--sa-heading);
|
|
999
904
|
}
|
|
1000
905
|
.pve-search-ico {
|
|
1001
|
-
color:
|
|
906
|
+
color: var(--sa-muted-light);
|
|
1002
907
|
display: inline-flex;
|
|
1003
908
|
}
|
|
1004
909
|
.pve-tabs {
|
|
@@ -1011,23 +916,23 @@ function emitSave(): void {
|
|
|
1011
916
|
border: 0;
|
|
1012
917
|
padding: 5px 10px;
|
|
1013
918
|
border-radius: 6px;
|
|
1014
|
-
font: 500 12.5px var(--
|
|
1015
|
-
color:
|
|
919
|
+
font: 500 12.5px var(--sa-font-body);
|
|
920
|
+
color: var(--sa-muted-dark);
|
|
1016
921
|
cursor: pointer;
|
|
1017
922
|
display: flex;
|
|
1018
923
|
align-items: center;
|
|
1019
924
|
gap: 6px;
|
|
1020
925
|
}
|
|
1021
926
|
.pve-tab--active {
|
|
1022
|
-
background:
|
|
927
|
+
background: var(--sa-heading);
|
|
1023
928
|
color: #fff;
|
|
1024
929
|
}
|
|
1025
930
|
.pve-tab-count {
|
|
1026
931
|
font-size: 10.5px;
|
|
1027
932
|
padding: 1px 5px;
|
|
1028
933
|
border-radius: 4px;
|
|
1029
|
-
background:
|
|
1030
|
-
color:
|
|
934
|
+
background: var(--sa-border);
|
|
935
|
+
color: var(--sa-muted-dark);
|
|
1031
936
|
}
|
|
1032
937
|
.pve-tab--active .pve-tab-count {
|
|
1033
938
|
background: rgba(255, 255, 255, 0.15);
|
|
@@ -1043,7 +948,7 @@ function emitSave(): void {
|
|
|
1043
948
|
font-size: 10px;
|
|
1044
949
|
text-transform: uppercase;
|
|
1045
950
|
letter-spacing: 0.1em;
|
|
1046
|
-
color:
|
|
951
|
+
color: var(--sa-muted-light);
|
|
1047
952
|
font-weight: 700;
|
|
1048
953
|
padding: 12px 4px 6px;
|
|
1049
954
|
}
|
|
@@ -1052,7 +957,7 @@ function emitSave(): void {
|
|
|
1052
957
|
align-items: flex-start;
|
|
1053
958
|
gap: 10px;
|
|
1054
959
|
background: #fff;
|
|
1055
|
-
border: 1px solid var(--
|
|
960
|
+
border: 1px solid var(--sa-border);
|
|
1056
961
|
border-radius: 8px;
|
|
1057
962
|
padding: 9px 10px;
|
|
1058
963
|
margin-bottom: 6px;
|
|
@@ -1070,12 +975,12 @@ function emitSave(): void {
|
|
|
1070
975
|
cursor: grabbing;
|
|
1071
976
|
}
|
|
1072
977
|
.pve-pool-card--selected {
|
|
1073
|
-
background: var(--
|
|
978
|
+
background: var(--sa-bg-surface-2);
|
|
1074
979
|
opacity: 0.7;
|
|
1075
980
|
}
|
|
1076
981
|
.pve-pool-card--partial {
|
|
1077
982
|
border-color: #fde68a;
|
|
1078
|
-
background:
|
|
983
|
+
background: var(--sa-warning-bg);
|
|
1079
984
|
}
|
|
1080
985
|
.pve-pool-grip {
|
|
1081
986
|
color: #cbd5e1;
|
|
@@ -1094,7 +999,7 @@ function emitSave(): void {
|
|
|
1094
999
|
.pve-pool-card-label {
|
|
1095
1000
|
font-size: 13px;
|
|
1096
1001
|
font-weight: 600;
|
|
1097
|
-
color:
|
|
1002
|
+
color: var(--sa-heading);
|
|
1098
1003
|
}
|
|
1099
1004
|
.pve-pool-card-check {
|
|
1100
1005
|
display: inline-grid;
|
|
@@ -1112,12 +1017,12 @@ function emitSave(): void {
|
|
|
1112
1017
|
align-items: center;
|
|
1113
1018
|
flex-wrap: wrap;
|
|
1114
1019
|
font-size: 10.5px;
|
|
1115
|
-
color:
|
|
1020
|
+
color: var(--sa-muted-light);
|
|
1116
1021
|
margin-top: 2px;
|
|
1117
1022
|
}
|
|
1118
1023
|
.pve-pool-card-key {
|
|
1119
|
-
font: 500 10px var(--
|
|
1120
|
-
color:
|
|
1024
|
+
font: 500 10px var(--sa-font-mono);
|
|
1025
|
+
color: var(--sa-muted);
|
|
1121
1026
|
}
|
|
1122
1027
|
.pve-pool-card-dot {
|
|
1123
1028
|
color: #cbd5e1;
|
|
@@ -1126,7 +1031,7 @@ function emitSave(): void {
|
|
|
1126
1031
|
.pve-empty {
|
|
1127
1032
|
padding: 24px 4px;
|
|
1128
1033
|
text-align: center;
|
|
1129
|
-
color:
|
|
1034
|
+
color: var(--sa-muted-light);
|
|
1130
1035
|
font-size: 12.5px;
|
|
1131
1036
|
font-style: italic;
|
|
1132
1037
|
}
|
|
@@ -1141,11 +1046,11 @@ function emitSave(): void {
|
|
|
1141
1046
|
}
|
|
1142
1047
|
.pve-basket--dragover {
|
|
1143
1048
|
background: #f0f6ff;
|
|
1144
|
-
box-shadow: inset 0 0 0 2px var(--
|
|
1049
|
+
box-shadow: inset 0 0 0 2px var(--sa-primary);
|
|
1145
1050
|
}
|
|
1146
1051
|
.pve-basket-settings {
|
|
1147
|
-
background: linear-gradient(180deg, var(--
|
|
1148
|
-
border-bottom: 1px solid var(--
|
|
1052
|
+
background: linear-gradient(180deg, var(--sa-bg-surface-2) 0%, #fff 100%);
|
|
1053
|
+
border-bottom: 1px solid var(--sa-border);
|
|
1149
1054
|
padding: 14px 22px 16px;
|
|
1150
1055
|
display: flex;
|
|
1151
1056
|
flex-direction: column;
|
|
@@ -1158,7 +1063,7 @@ function emitSave(): void {
|
|
|
1158
1063
|
}
|
|
1159
1064
|
.pve-bs-label {
|
|
1160
1065
|
font-size: 12px;
|
|
1161
|
-
color:
|
|
1066
|
+
color: var(--sa-muted-dark);
|
|
1162
1067
|
font-weight: 500;
|
|
1163
1068
|
min-width: 88px;
|
|
1164
1069
|
}
|
|
@@ -1168,15 +1073,15 @@ function emitSave(): void {
|
|
|
1168
1073
|
}
|
|
1169
1074
|
.pve-bs-input {
|
|
1170
1075
|
background: #fff;
|
|
1171
|
-
border: 1px solid var(--
|
|
1076
|
+
border: 1px solid var(--sa-border);
|
|
1172
1077
|
border-radius: 6px;
|
|
1173
1078
|
padding: 6px 10px;
|
|
1174
|
-
font: 13px var(--
|
|
1175
|
-
color:
|
|
1079
|
+
font: 13px var(--sa-font-body);
|
|
1080
|
+
color: var(--sa-heading);
|
|
1176
1081
|
outline: none;
|
|
1177
1082
|
}
|
|
1178
1083
|
.pve-bs-input:focus {
|
|
1179
|
-
border-color: var(--
|
|
1084
|
+
border-color: var(--sa-primary);
|
|
1180
1085
|
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
|
|
1181
1086
|
}
|
|
1182
1087
|
.pve-bs-input--error {
|
|
@@ -1206,7 +1111,7 @@ function emitSave(): void {
|
|
|
1206
1111
|
.pve-bs-input-grp {
|
|
1207
1112
|
display: flex;
|
|
1208
1113
|
align-items: stretch;
|
|
1209
|
-
border: 1px solid var(--
|
|
1114
|
+
border: 1px solid var(--sa-border);
|
|
1210
1115
|
border-radius: 6px;
|
|
1211
1116
|
background: #fff;
|
|
1212
1117
|
overflow: hidden;
|
|
@@ -1222,17 +1127,17 @@ function emitSave(): void {
|
|
|
1222
1127
|
}
|
|
1223
1128
|
.pve-bs-prefix,
|
|
1224
1129
|
.pve-bs-suffix {
|
|
1225
|
-
background: var(--
|
|
1130
|
+
background: var(--sa-bg-surface-2);
|
|
1226
1131
|
padding: 6px 10px;
|
|
1227
1132
|
font-size: 12px;
|
|
1228
|
-
color:
|
|
1133
|
+
color: var(--sa-muted);
|
|
1229
1134
|
display: grid;
|
|
1230
1135
|
place-items: center;
|
|
1231
|
-
border-right: 1px solid var(--
|
|
1136
|
+
border-right: 1px solid var(--sa-border);
|
|
1232
1137
|
}
|
|
1233
1138
|
.pve-bs-suffix {
|
|
1234
1139
|
border-right: 0;
|
|
1235
|
-
border-left: 1px solid var(--
|
|
1140
|
+
border-left: 1px solid var(--sa-border);
|
|
1236
1141
|
}
|
|
1237
1142
|
|
|
1238
1143
|
.pve-toggle {
|
|
@@ -1266,7 +1171,7 @@ function emitSave(): void {
|
|
|
1266
1171
|
transition: transform 0.15s;
|
|
1267
1172
|
}
|
|
1268
1173
|
.pve-toggle input:checked + span {
|
|
1269
|
-
background: var(--
|
|
1174
|
+
background: var(--sa-primary);
|
|
1270
1175
|
}
|
|
1271
1176
|
.pve-toggle input:checked + span::before {
|
|
1272
1177
|
transform: translateX(16px);
|
|
@@ -1274,7 +1179,7 @@ function emitSave(): void {
|
|
|
1274
1179
|
|
|
1275
1180
|
.pve-basket-group {
|
|
1276
1181
|
padding: 14px 22px;
|
|
1277
|
-
border-bottom: 1px solid
|
|
1182
|
+
border-bottom: 1px solid var(--sa-border-soft);
|
|
1278
1183
|
}
|
|
1279
1184
|
.pve-basket-group:last-child {
|
|
1280
1185
|
border-bottom: 0;
|
|
@@ -1309,23 +1214,23 @@ function emitSave(): void {
|
|
|
1309
1214
|
.pve-bg-count {
|
|
1310
1215
|
margin-left: 6px;
|
|
1311
1216
|
font-size: 11px;
|
|
1312
|
-
color:
|
|
1217
|
+
color: var(--sa-muted-light);
|
|
1313
1218
|
}
|
|
1314
1219
|
|
|
1315
1220
|
.pve-dz {
|
|
1316
|
-
border: 1.5px dashed var(--
|
|
1221
|
+
border: 1.5px dashed var(--sa-border-strong);
|
|
1317
1222
|
border-radius: 10px;
|
|
1318
1223
|
padding: 12px;
|
|
1319
1224
|
background: #fafbfc;
|
|
1320
1225
|
min-height: 60px;
|
|
1321
1226
|
}
|
|
1322
1227
|
.pve-basket--dragover .pve-dz {
|
|
1323
|
-
border-color: var(--
|
|
1228
|
+
border-color: var(--sa-primary);
|
|
1324
1229
|
background: #f0f6ff;
|
|
1325
1230
|
}
|
|
1326
1231
|
.pve-dz-empty {
|
|
1327
1232
|
font-size: 12px;
|
|
1328
|
-
color:
|
|
1233
|
+
color: var(--sa-muted-light);
|
|
1329
1234
|
text-align: center;
|
|
1330
1235
|
padding: 4px 0;
|
|
1331
1236
|
}
|
|
@@ -1339,7 +1244,7 @@ function emitSave(): void {
|
|
|
1339
1244
|
gap: 10px;
|
|
1340
1245
|
padding: 8px 10px;
|
|
1341
1246
|
background: #fff;
|
|
1342
|
-
border: 1px solid var(--
|
|
1247
|
+
border: 1px solid var(--sa-border);
|
|
1343
1248
|
border-radius: 6px;
|
|
1344
1249
|
margin-bottom: 4px;
|
|
1345
1250
|
}
|
|
@@ -1368,28 +1273,28 @@ function emitSave(): void {
|
|
|
1368
1273
|
.pve-sel-label {
|
|
1369
1274
|
font-size: 13px;
|
|
1370
1275
|
font-weight: 600;
|
|
1371
|
-
color:
|
|
1276
|
+
color: var(--sa-heading);
|
|
1372
1277
|
}
|
|
1373
1278
|
.pve-sel-sub {
|
|
1374
|
-
font: 500 10.5px var(--
|
|
1375
|
-
color:
|
|
1279
|
+
font: 500 10.5px var(--sa-font-mono);
|
|
1280
|
+
color: var(--sa-muted-light);
|
|
1376
1281
|
}
|
|
1377
1282
|
.pve-sel-val-edit {
|
|
1378
1283
|
display: flex;
|
|
1379
1284
|
align-items: center;
|
|
1380
1285
|
gap: 4px;
|
|
1381
|
-
background: var(--
|
|
1286
|
+
background: var(--sa-bg-surface-2);
|
|
1382
1287
|
padding: 3px 8px;
|
|
1383
1288
|
border-radius: 5px;
|
|
1384
|
-
border: 1px solid var(--
|
|
1289
|
+
border: 1px solid var(--sa-border);
|
|
1385
1290
|
}
|
|
1386
1291
|
.pve-sel-val-input {
|
|
1387
1292
|
width: 64px;
|
|
1388
1293
|
border: 0;
|
|
1389
1294
|
outline: 0;
|
|
1390
1295
|
background: transparent;
|
|
1391
|
-
font: 600 13px var(--
|
|
1392
|
-
color:
|
|
1296
|
+
font: 600 13px var(--sa-font-body);
|
|
1297
|
+
color: var(--sa-heading);
|
|
1393
1298
|
text-align: right;
|
|
1394
1299
|
-moz-appearance: textfield;
|
|
1395
1300
|
}
|
|
@@ -1400,12 +1305,12 @@ function emitSave(): void {
|
|
|
1400
1305
|
}
|
|
1401
1306
|
.pve-sel-val-unit {
|
|
1402
1307
|
font-size: 10.5px;
|
|
1403
|
-
color:
|
|
1308
|
+
color: var(--sa-muted-light);
|
|
1404
1309
|
}
|
|
1405
1310
|
.pve-sel-x {
|
|
1406
1311
|
background: transparent;
|
|
1407
1312
|
border: 0;
|
|
1408
|
-
color:
|
|
1313
|
+
color: var(--sa-muted-light);
|
|
1409
1314
|
cursor: pointer;
|
|
1410
1315
|
padding: 4px;
|
|
1411
1316
|
border-radius: 4px;
|
|
@@ -1419,7 +1324,7 @@ function emitSave(): void {
|
|
|
1419
1324
|
|
|
1420
1325
|
/* ── RIGHT — Preview ───────────────────────────────────────────── */
|
|
1421
1326
|
.pve-preview {
|
|
1422
|
-
background: var(--
|
|
1327
|
+
background: var(--sa-bg-surface-2);
|
|
1423
1328
|
overflow: auto;
|
|
1424
1329
|
}
|
|
1425
1330
|
.pve-preview-toggle {
|
|
@@ -1431,7 +1336,7 @@ function emitSave(): void {
|
|
|
1431
1336
|
margin: 14px 18px;
|
|
1432
1337
|
background: #fff;
|
|
1433
1338
|
border-radius: 10px;
|
|
1434
|
-
border: 1px solid var(--
|
|
1339
|
+
border: 1px solid var(--sa-border);
|
|
1435
1340
|
overflow: hidden;
|
|
1436
1341
|
transition: max-width 0.18s;
|
|
1437
1342
|
}
|
|
@@ -1443,8 +1348,8 @@ function emitSave(): void {
|
|
|
1443
1348
|
align-items: center;
|
|
1444
1349
|
gap: 6px;
|
|
1445
1350
|
padding: 8px 12px;
|
|
1446
|
-
background:
|
|
1447
|
-
border-bottom: 1px solid var(--
|
|
1351
|
+
background: var(--sa-border-soft);
|
|
1352
|
+
border-bottom: 1px solid var(--sa-border);
|
|
1448
1353
|
}
|
|
1449
1354
|
.pve-prev-dot {
|
|
1450
1355
|
width: 9px;
|
|
@@ -1457,9 +1362,9 @@ function emitSave(): void {
|
|
|
1457
1362
|
border-radius: 4px;
|
|
1458
1363
|
padding: 3px 10px;
|
|
1459
1364
|
margin-left: 10px;
|
|
1460
|
-
font: 500 11px var(--
|
|
1461
|
-
color:
|
|
1462
|
-
border: 1px solid var(--
|
|
1365
|
+
font: 500 11px var(--sa-font-mono);
|
|
1366
|
+
color: var(--sa-muted);
|
|
1367
|
+
border: 1px solid var(--sa-border);
|
|
1463
1368
|
}
|
|
1464
1369
|
.pve-prev-body {
|
|
1465
1370
|
padding: 18px 18px 16px;
|
|
@@ -1468,7 +1373,7 @@ function emitSave(): void {
|
|
|
1468
1373
|
font-size: 10.5px;
|
|
1469
1374
|
text-transform: uppercase;
|
|
1470
1375
|
letter-spacing: 0.12em;
|
|
1471
|
-
color:
|
|
1376
|
+
color: var(--sa-muted);
|
|
1472
1377
|
font-weight: 700;
|
|
1473
1378
|
}
|
|
1474
1379
|
.pve-prev-title {
|
|
@@ -1476,11 +1381,11 @@ function emitSave(): void {
|
|
|
1476
1381
|
font-weight: 700;
|
|
1477
1382
|
letter-spacing: -0.03em;
|
|
1478
1383
|
margin-top: 6px;
|
|
1479
|
-
color:
|
|
1384
|
+
color: var(--sa-heading);
|
|
1480
1385
|
}
|
|
1481
1386
|
.pve-prev-desc {
|
|
1482
1387
|
font-size: 12.5px;
|
|
1483
|
-
color:
|
|
1388
|
+
color: var(--sa-muted-dark);
|
|
1484
1389
|
margin-top: 6px;
|
|
1485
1390
|
line-height: 1.5;
|
|
1486
1391
|
}
|
|
@@ -1494,11 +1399,11 @@ function emitSave(): void {
|
|
|
1494
1399
|
font-size: 38px;
|
|
1495
1400
|
font-weight: 700;
|
|
1496
1401
|
letter-spacing: -0.03em;
|
|
1497
|
-
color:
|
|
1402
|
+
color: var(--sa-heading);
|
|
1498
1403
|
}
|
|
1499
1404
|
.pve-prev-price-unit {
|
|
1500
1405
|
font-size: 13px;
|
|
1501
|
-
color:
|
|
1406
|
+
color: var(--sa-muted);
|
|
1502
1407
|
}
|
|
1503
1408
|
.pve-prev-price-yearly {
|
|
1504
1409
|
font-size: 11.5px;
|
|
@@ -1511,21 +1416,21 @@ function emitSave(): void {
|
|
|
1511
1416
|
width: 100%;
|
|
1512
1417
|
margin-top: 14px;
|
|
1513
1418
|
padding: 10px;
|
|
1514
|
-
background:
|
|
1419
|
+
background: var(--sa-heading);
|
|
1515
1420
|
color: #fff;
|
|
1516
1421
|
border: 0;
|
|
1517
1422
|
border-radius: 7px;
|
|
1518
|
-
font: 600 13px var(--
|
|
1423
|
+
font: 600 13px var(--sa-font-body);
|
|
1519
1424
|
cursor: pointer;
|
|
1520
1425
|
}
|
|
1521
1426
|
.pve-prev-sep {
|
|
1522
1427
|
margin-top: 18px;
|
|
1523
1428
|
padding-top: 14px;
|
|
1524
|
-
border-top: 1px solid
|
|
1429
|
+
border-top: 1px solid var(--sa-border-soft);
|
|
1525
1430
|
font-size: 10.5px;
|
|
1526
1431
|
text-transform: uppercase;
|
|
1527
1432
|
letter-spacing: 0.12em;
|
|
1528
|
-
color:
|
|
1433
|
+
color: var(--sa-muted-light);
|
|
1529
1434
|
font-weight: 700;
|
|
1530
1435
|
}
|
|
1531
1436
|
.pve-prev-list {
|
|
@@ -1541,7 +1446,7 @@ function emitSave(): void {
|
|
|
1541
1446
|
align-items: center;
|
|
1542
1447
|
gap: 8px;
|
|
1543
1448
|
font-size: 12.5px;
|
|
1544
|
-
color:
|
|
1449
|
+
color: var(--sa-heading);
|
|
1545
1450
|
}
|
|
1546
1451
|
.pve-prev-list li b {
|
|
1547
1452
|
font-weight: 600;
|
|
@@ -1557,22 +1462,22 @@ function emitSave(): void {
|
|
|
1557
1462
|
flex: 0 0 auto;
|
|
1558
1463
|
}
|
|
1559
1464
|
.pve-prev-empty {
|
|
1560
|
-
color:
|
|
1465
|
+
color: var(--sa-muted-light);
|
|
1561
1466
|
font-style: italic;
|
|
1562
1467
|
}
|
|
1563
1468
|
.pve-prev-foot {
|
|
1564
1469
|
margin-top: 16px;
|
|
1565
1470
|
padding-top: 14px;
|
|
1566
|
-
border-top: 1px solid
|
|
1471
|
+
border-top: 1px solid var(--sa-border-soft);
|
|
1567
1472
|
font-size: 10.5px;
|
|
1568
|
-
color:
|
|
1473
|
+
color: var(--sa-muted-light);
|
|
1569
1474
|
line-height: 1.5;
|
|
1570
1475
|
}
|
|
1571
1476
|
|
|
1572
1477
|
.pve-prev-validate {
|
|
1573
1478
|
margin: 0 18px 18px;
|
|
1574
1479
|
background: #fff;
|
|
1575
|
-
border: 1px solid var(--
|
|
1480
|
+
border: 1px solid var(--sa-border);
|
|
1576
1481
|
border-radius: 8px;
|
|
1577
1482
|
padding: 12px;
|
|
1578
1483
|
}
|
|
@@ -1583,7 +1488,7 @@ function emitSave(): void {
|
|
|
1583
1488
|
margin-bottom: 6px;
|
|
1584
1489
|
}
|
|
1585
1490
|
.pve-prev-validate-tick {
|
|
1586
|
-
color: var(--
|
|
1491
|
+
color: var(--sa-positive-light);
|
|
1587
1492
|
display: inline-flex;
|
|
1588
1493
|
}
|
|
1589
1494
|
.pve-prev-validate-title {
|
|
@@ -1593,7 +1498,7 @@ function emitSave(): void {
|
|
|
1593
1498
|
.pve-prev-validate-count {
|
|
1594
1499
|
margin-left: auto;
|
|
1595
1500
|
font-size: 11px;
|
|
1596
|
-
color:
|
|
1501
|
+
color: var(--sa-muted);
|
|
1597
1502
|
}
|
|
1598
1503
|
.pve-vchk {
|
|
1599
1504
|
display: flex;
|
|
@@ -1603,17 +1508,17 @@ function emitSave(): void {
|
|
|
1603
1508
|
padding: 3px 0;
|
|
1604
1509
|
}
|
|
1605
1510
|
.pve-vchk--ok {
|
|
1606
|
-
color:
|
|
1511
|
+
color: var(--sa-muted-dark);
|
|
1607
1512
|
}
|
|
1608
1513
|
.pve-vchk--ok span:first-child {
|
|
1609
|
-
color: var(--
|
|
1514
|
+
color: var(--sa-positive-light);
|
|
1610
1515
|
display: inline-flex;
|
|
1611
1516
|
}
|
|
1612
1517
|
.pve-vchk--warn {
|
|
1613
1518
|
color: #b45309;
|
|
1614
1519
|
}
|
|
1615
1520
|
.pve-vchk--warn span:first-child {
|
|
1616
|
-
color: var(--
|
|
1521
|
+
color: var(--sa-amber);
|
|
1617
1522
|
display: inline-flex;
|
|
1618
1523
|
}
|
|
1619
1524
|
|
|
@@ -1630,7 +1535,7 @@ function emitSave(): void {
|
|
|
1630
1535
|
}
|
|
1631
1536
|
.pve-col {
|
|
1632
1537
|
border-right: 0;
|
|
1633
|
-
border-bottom: 1px solid var(--
|
|
1538
|
+
border-bottom: 1px solid var(--sa-border);
|
|
1634
1539
|
}
|
|
1635
1540
|
}
|
|
1636
1541
|
|
|
@@ -1642,15 +1547,15 @@ function emitSave(): void {
|
|
|
1642
1547
|
border-radius: 14px;
|
|
1643
1548
|
box-shadow: 0 24px 60px rgba(15, 23, 42, 0.3);
|
|
1644
1549
|
overflow: hidden;
|
|
1645
|
-
font-family: var(--
|
|
1646
|
-
color: var(--
|
|
1550
|
+
font-family: var(--sa-font-body);
|
|
1551
|
+
color: var(--sa-heading);
|
|
1647
1552
|
}
|
|
1648
1553
|
.pve-diff-modal * {
|
|
1649
1554
|
box-sizing: border-box;
|
|
1650
1555
|
}
|
|
1651
1556
|
.pve-diff-head {
|
|
1652
1557
|
padding: 16px 20px;
|
|
1653
|
-
border-bottom: 1px solid var(--
|
|
1558
|
+
border-bottom: 1px solid var(--sa-border);
|
|
1654
1559
|
display: flex;
|
|
1655
1560
|
align-items: flex-start;
|
|
1656
1561
|
gap: 12px;
|
|
@@ -1662,7 +1567,7 @@ function emitSave(): void {
|
|
|
1662
1567
|
}
|
|
1663
1568
|
.pve-diff-sub {
|
|
1664
1569
|
font-size: 11.5px;
|
|
1665
|
-
color:
|
|
1570
|
+
color: var(--sa-muted);
|
|
1666
1571
|
margin-top: 3px;
|
|
1667
1572
|
}
|
|
1668
1573
|
.pve-diff-close {
|
|
@@ -1672,7 +1577,7 @@ function emitSave(): void {
|
|
|
1672
1577
|
border-radius: 6px;
|
|
1673
1578
|
background: transparent;
|
|
1674
1579
|
border: 0;
|
|
1675
|
-
color: var(--
|
|
1580
|
+
color: var(--sa-muted-light);
|
|
1676
1581
|
cursor: pointer;
|
|
1677
1582
|
display: grid;
|
|
1678
1583
|
place-items: center;
|
|
@@ -1680,7 +1585,7 @@ function emitSave(): void {
|
|
|
1680
1585
|
}
|
|
1681
1586
|
.pve-diff-close:hover {
|
|
1682
1587
|
background: rgba(15, 23, 42, 0.05);
|
|
1683
|
-
color: var(--
|
|
1588
|
+
color: var(--sa-heading);
|
|
1684
1589
|
}
|
|
1685
1590
|
.pve-diff-body {
|
|
1686
1591
|
padding: 14px 20px 18px;
|
|
@@ -1728,7 +1633,7 @@ function emitSave(): void {
|
|
|
1728
1633
|
.pve-diff-label {
|
|
1729
1634
|
font-size: 13px;
|
|
1730
1635
|
font-weight: 600;
|
|
1731
|
-
color: var(--
|
|
1636
|
+
color: var(--sa-heading);
|
|
1732
1637
|
}
|
|
1733
1638
|
.pve-diff-change {
|
|
1734
1639
|
display: flex;
|
|
@@ -1739,10 +1644,10 @@ function emitSave(): void {
|
|
|
1739
1644
|
}
|
|
1740
1645
|
.pve-diff-from {
|
|
1741
1646
|
text-decoration: line-through;
|
|
1742
|
-
color: var(--
|
|
1647
|
+
color: var(--sa-muted-light);
|
|
1743
1648
|
}
|
|
1744
1649
|
.pve-diff-to {
|
|
1745
|
-
color: var(--
|
|
1650
|
+
color: var(--sa-heading);
|
|
1746
1651
|
font-weight: 600;
|
|
1747
1652
|
}
|
|
1748
1653
|
.pve-diff-arrow {
|
|
@@ -1755,7 +1660,7 @@ function emitSave(): void {
|
|
|
1755
1660
|
.pve-diff-empty {
|
|
1756
1661
|
padding: 24px 8px;
|
|
1757
1662
|
text-align: center;
|
|
1758
|
-
color: var(--
|
|
1663
|
+
color: var(--sa-muted-light);
|
|
1759
1664
|
font-style: italic;
|
|
1760
1665
|
font-size: 13px;
|
|
1761
1666
|
}
|