@saasicat/ui-vue 0.22.2 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{chunk-LY52T4N4.js → chunk-TQQMKWN6.js} +58 -1
- package/dist/{chunk-XMMFN2WJ.js → chunk-VYMTWCTT.js} +51 -1
- package/dist/client/index.cjs +57 -0
- package/dist/client/index.d.cts +58 -1
- package/dist/client/index.d.ts +58 -1
- package/dist/client/index.js +15 -1
- package/dist/index.cjs +321 -159
- package/dist/index.d.cts +67 -4
- package/dist/index.d.ts +67 -4
- package/dist/index.js +72 -2
- package/dist/quasar/index.cjs +116 -20
- package/dist/quasar/index.d.cts +48 -3
- package/dist/quasar/index.d.ts +48 -3
- package/dist/quasar/index.js +58 -3
- package/dist/{use-super-admin-i18n-CgTuNi8h.d.cts → use-sa-theme-B5t7oXph.d.cts} +51 -1
- package/dist/{use-super-admin-i18n-CHNdsSlm.d.ts → use-sa-theme-OUBlaqgl.d.ts} +51 -1
- package/package.json +5 -2
- package/src/client/identity-accents.ts +129 -0
- package/src/client/index.ts +1 -0
- package/src/components/BundleVersionPublishDialog.vue +17 -17
- package/src/components/KvBlock.vue +6 -6
- package/src/components/MarketingPromotionsTab.vue +84 -80
- package/src/components/MfaPromptDialog.vue +2 -2
- package/src/components/TenantActionConfirmDialog.vue +5 -5
- package/src/components/VersionDiffPreview.vue +18 -18
- package/src/components/bundle-editor/BundleCreatePanel.vue +52 -52
- package/src/components/bundle-editor/BundleFeaturesEditor.vue +20 -20
- package/src/components/bundle-editor/BundlePlanCompatPicker.vue +33 -33
- package/src/components/bundle-editor/BundleQuotasEditor.vue +26 -26
- package/src/components/bundle-editor/BundleStatusBanner.vue +21 -21
- package/src/components/bundle-editor/BundleVersionInlineEditor.vue +49 -49
- package/src/components/bundle-editor/BundleVersionStrip.vue +30 -30
- package/src/components/dialogs/PilotCreateDialog.vue +20 -20
- package/src/components/dialogs/PilotEditDialog.vue +6 -6
- package/src/components/dialogs/PromoCodeCreateDialog.vue +9 -9
- package/src/components/dialogs/PromoCodeDialogFields.vue +64 -63
- package/src/components/dialogs/PromoCodeEditDialog.vue +11 -11
- package/src/components/dialogs/pilot-dialog.css +48 -48
- package/src/components/plan/PlanCycleToggle.vue +9 -16
- package/src/components/plan/PlanGrid.vue +30 -34
- package/src/components/plan/PriceSummary.vue +35 -35
- package/src/components/plan/PromoCodeInput.vue +26 -26
- package/src/components/plan/PublicBundleGrid.vue +32 -28
- package/src/components/plan-create-dialog/PlanCreateDialog.vue +50 -50
- package/src/components/plan-detail/PlanDetail.vue +178 -157
- package/src/components/plan-detail/PlanTitleEdit.vue +11 -11
- package/src/components/plan-list/PlanList.vue +116 -100
- package/src/components/plan-matrix/PlanMatrix.vue +97 -114
- package/src/components/plan-review/PlanReview.vue +61 -57
- package/src/components/plan-version-editor/PlanVersionEditor.vue +246 -203
- package/src/components/wizard-stepper/WizardStepper.vue +17 -17
- package/src/index.ts +1 -0
- package/src/pages-standard/AdminLayout.vue +58 -37
- package/src/pages-standard/AdminManifestErrorPage.vue +6 -6
- package/src/pages-standard/AuditPage.vue +3 -3
- package/src/pages-standard/BundlesPage.vue +37 -37
- package/src/pages-standard/DashboardPage.vue +22 -19
- package/src/pages-standard/DiscoveryPage.vue +55 -49
- package/src/pages-standard/EmailHistoryPage.vue +53 -71
- package/src/pages-standard/MarketingCatalogPage.vue +245 -221
- package/src/pages-standard/PilotsPage.vue +7 -6
- package/src/pages-standard/PlatformEmailPage.vue +18 -18
- package/src/pages-standard/PromoCodeDetailPage.vue +3 -3
- package/src/pages-standard/PromoCodesPage.vue +10 -7
- package/src/pages-standard/SuperAdminLoginPage.vue +39 -25
- package/src/pages-standard/SuperAdminSetupWizard.vue +44 -33
- package/src/pages-standard/TenantDetailPage.vue +7 -7
- package/src/pages-standard/TenantsPage.vue +16 -50
- package/src/pages-standard/bundles-page/BundleAccordionList.vue +13 -13
- package/src/pages-standard/discovery-page/CatalogEntryTransPanel.vue +24 -24
- package/src/pages-standard/discovery-page/DiscoveryCapList.vue +22 -22
- package/src/pages-standard/discovery-page/DiscoveryFeatureCard.vue +39 -39
- package/src/pages-standard/discovery-page/DiscoveryQuotaCard.vue +26 -26
- package/src/pages-standard/discovery-page/DiscoveryStatusControl.vue +1 -1
- package/src/pages-standard/discovery-page/discovery-ui.ts +10 -7
- package/src/pages-standard/marketing-catalog/MarketingCatalogAdmin.vue +2 -5
- package/src/pages-standard/plan-versions/PlanDiffCard.vue +27 -20
- package/src/pages-standard/plan-versions/PlanVersionsDiff.vue +24 -16
- package/src/pages-standard/plan-versions/PlanVersionsTimeline.vue +45 -45
- package/src/pages-standard/plans-page/PlanBundleOverview.vue +21 -15
- package/src/pages-standard/plans-page/PlanPublishDialog.vue +4 -4
- package/src/pages-standard/plans-page/PlansPageToast.vue +6 -6
- package/src/pages-standard/sa-theme.css +9 -687
- package/src/pages-standard/tenants/StatusPill.vue +13 -13
- package/src/pages-standard/tenants/format.ts +11 -12
- package/src/pages-tenant/LimitsRow.vue +4 -4
- package/src/pages-tenant/MySubscriptionBundlesPage.vue +70 -61
- package/src/pages-tenant/OnboardingConfigurator.vue +25 -25
- package/src/pages-tenant/PackageSnapshotPanel.vue +10 -16
- package/src/pages-tenant/PendingVersionBanner.vue +12 -12
- package/src/pages-tenant/PlanChangeWizard.vue +22 -76
- package/src/pages-tenant/TenantPlanSection.vue +19 -69
- package/src/pages-tenant/UsageBar.vue +7 -7
- package/src/pages-tenant/default-i18n.ts +113 -0
- package/src/pages-tenant/tenant-plan-section/BundlePreviewDialog.vue +14 -14
- package/src/pages-tenant/tenant-plan-section/TenantBundleStore.vue +10 -10
- package/src/pages-tenant/tenant-plan-section/TenantFeatureMatrix.vue +2 -2
- package/src/quasar/create-super-admin-app.ts +96 -1
- package/src/quasar/dark-bridge.ts +66 -0
- package/src/quasar/index.ts +1 -0
- package/src/ui/theme/_breakpoints.scss +34 -0
- package/src/ui/theme/base.css +50 -0
- package/src/ui/theme/components/body.css +23 -0
- package/src/ui/theme/components/button.css +158 -0
- package/src/ui/theme/components/card.css +74 -0
- package/src/ui/theme/components/field.css +38 -0
- package/src/ui/theme/components/hero.css +46 -0
- package/src/ui/theme/components/paginator.css +63 -0
- package/src/ui/theme/components/section.css +67 -0
- package/src/ui/theme/components/statistics.css +189 -0
- package/src/ui/theme/components/table.css +60 -0
- package/src/ui/theme/index.css +42 -0
- package/src/ui/theme/tokens.legacy.css +147 -0
- package/src/ui/theme/tokens.primitive.css +112 -0
- package/src/ui/theme/tokens.scale.css +103 -0
- package/src/ui/theme/tokens.semantic.dark.css +185 -0
- package/src/ui/theme/tokens.semantic.light.css +242 -0
- package/src/vue/use-sa-theme.ts +154 -0
|
@@ -15,22 +15,22 @@ defineProps<{ label: string; value: string }>();
|
|
|
15
15
|
|
|
16
16
|
<style scoped>
|
|
17
17
|
.kv {
|
|
18
|
-
background: var(--sa-bg-
|
|
19
|
-
border: 1px solid var(--sa-border);
|
|
18
|
+
background: var(--sa-color-bg-sunken);
|
|
19
|
+
border: 1px solid var(--sa-color-border);
|
|
20
20
|
border-radius: 10px;
|
|
21
21
|
padding: 10px 12px;
|
|
22
22
|
}
|
|
23
23
|
.kv__label {
|
|
24
|
-
color: var(--sa-muted);
|
|
25
|
-
font-size:
|
|
24
|
+
color: var(--sa-color-fg-muted);
|
|
25
|
+
font-size: var(--sa-text-xs);
|
|
26
26
|
text-transform: uppercase;
|
|
27
27
|
letter-spacing: 0.05em;
|
|
28
28
|
font-weight: 700;
|
|
29
29
|
}
|
|
30
30
|
.kv__value {
|
|
31
|
-
font-size:
|
|
31
|
+
font-size: var(--sa-text-lg);
|
|
32
32
|
font-weight: 600;
|
|
33
|
-
color: var(--sa-heading);
|
|
33
|
+
color: var(--sa-color-fg-heading);
|
|
34
34
|
margin-top: 4px;
|
|
35
35
|
}
|
|
36
36
|
</style>
|
|
@@ -361,7 +361,11 @@ const cycleOptions = computed<Array<{ id: PromotionBillingCycle; label: string }
|
|
|
361
361
|
{ id: 'yearly', label: common.value.yearly },
|
|
362
362
|
{ id: 'both', label: common.value.both },
|
|
363
363
|
]);
|
|
364
|
-
|
|
364
|
+
import { IDENTITY_ACCENT_VALUES } from '../client/identity-accents.js';
|
|
365
|
+
|
|
366
|
+
// Concrete values, not tokens: every swatch here is PATCHed to
|
|
367
|
+
// `/catalog/promotions` and stored, and the DTO caps `color` at 16 characters.
|
|
368
|
+
const COLORS = IDENTITY_ACCENT_VALUES;
|
|
365
369
|
|
|
366
370
|
const today = new Date();
|
|
367
371
|
|
|
@@ -550,7 +554,7 @@ async function onAdd(): Promise<void> {
|
|
|
550
554
|
validFrom: new Date().toISOString().slice(0, 10),
|
|
551
555
|
validTo: new Date(today.getTime() + 30 * 86400000).toISOString().slice(0, 10),
|
|
552
556
|
priority: 5,
|
|
553
|
-
color:
|
|
557
|
+
color: IDENTITY_ACCENT_VALUES[0],
|
|
554
558
|
i18n: { [DEFAULT_LOCALE]: { badge: 'Aktion' } },
|
|
555
559
|
});
|
|
556
560
|
expandedId.value = created.id;
|
|
@@ -581,65 +585,65 @@ async function onRemove(p: PromotionRow): Promise<void> {
|
|
|
581
585
|
flex: 1;
|
|
582
586
|
}
|
|
583
587
|
.mc-promo-title {
|
|
584
|
-
font-size:
|
|
588
|
+
font-size: var(--sa-text-lg);
|
|
585
589
|
font-weight: 700;
|
|
586
590
|
}
|
|
587
591
|
.mc-promo-subtitle {
|
|
588
|
-
font-size:
|
|
589
|
-
color: var(--sa-muted);
|
|
592
|
+
font-size: var(--sa-text-sm);
|
|
593
|
+
color: var(--sa-color-fg-muted);
|
|
590
594
|
}
|
|
591
595
|
.mc-promo-stats {
|
|
592
596
|
display: flex;
|
|
593
597
|
gap: 8px;
|
|
594
598
|
}
|
|
595
599
|
.mc-promo-stat {
|
|
596
|
-
font-size:
|
|
600
|
+
font-size: var(--sa-text-xs);
|
|
597
601
|
font-weight: 600;
|
|
598
602
|
padding: 3px 9px;
|
|
599
603
|
border-radius: 999px;
|
|
600
|
-
background: var(--sa-border-soft);
|
|
601
|
-
color: var(--sa-
|
|
604
|
+
background: var(--sa-color-border-soft);
|
|
605
|
+
color: var(--sa-color-fg-secondary);
|
|
602
606
|
}
|
|
603
607
|
.mc-promo-stat.active {
|
|
604
|
-
background:
|
|
605
|
-
color:
|
|
608
|
+
background: var(--sa-color-positive-surface-strong);
|
|
609
|
+
color: var(--sa-color-positive-fg);
|
|
606
610
|
}
|
|
607
611
|
.mc-promo-stat.scheduled {
|
|
608
|
-
background:
|
|
609
|
-
color: var(--sa-
|
|
612
|
+
background: var(--sa-color-scheduled-surface);
|
|
613
|
+
color: var(--sa-color-scheduled-fg);
|
|
610
614
|
}
|
|
611
615
|
.mc-promo-stat.expired {
|
|
612
|
-
background: var(--sa-border-soft);
|
|
613
|
-
color: var(--sa-
|
|
616
|
+
background: var(--sa-color-border-soft);
|
|
617
|
+
color: var(--sa-color-fg-subtle);
|
|
614
618
|
}
|
|
615
619
|
.mc-promo-timeline {
|
|
616
|
-
background:
|
|
617
|
-
border: 1px solid var(--sa-border);
|
|
620
|
+
background: var(--sa-color-bg-surface);
|
|
621
|
+
border: 1px solid var(--sa-color-border);
|
|
618
622
|
border-radius: 10px;
|
|
619
623
|
padding: 12px 14px;
|
|
620
624
|
}
|
|
621
625
|
.mc-promo-timeline-head {
|
|
622
|
-
font-size:
|
|
623
|
-
color: var(--sa-muted);
|
|
626
|
+
font-size: var(--sa-text-xs);
|
|
627
|
+
color: var(--sa-color-fg-muted);
|
|
624
628
|
margin-bottom: 6px;
|
|
625
629
|
}
|
|
626
630
|
.mc-promo-timeline-chart {
|
|
627
631
|
position: relative;
|
|
628
|
-
border-left: 1px solid var(--sa-border);
|
|
632
|
+
border-left: 1px solid var(--sa-color-border);
|
|
629
633
|
}
|
|
630
634
|
.mc-promo-tick {
|
|
631
635
|
position: absolute;
|
|
632
636
|
top: 0;
|
|
633
637
|
bottom: 0;
|
|
634
638
|
width: 1px;
|
|
635
|
-
background: var(--sa-border-soft);
|
|
639
|
+
background: var(--sa-color-border-soft);
|
|
636
640
|
}
|
|
637
641
|
.mc-promo-tick-label {
|
|
638
642
|
position: absolute;
|
|
639
643
|
bottom: 0;
|
|
640
644
|
left: 3px;
|
|
641
|
-
font-size:
|
|
642
|
-
color: var(--sa-
|
|
645
|
+
font-size: var(--sa-text-2xs);
|
|
646
|
+
color: var(--sa-color-fg-subtle);
|
|
643
647
|
white-space: nowrap;
|
|
644
648
|
}
|
|
645
649
|
.mc-promo-today {
|
|
@@ -647,14 +651,14 @@ async function onRemove(p: PromotionRow): Promise<void> {
|
|
|
647
651
|
top: 0;
|
|
648
652
|
bottom: 18px;
|
|
649
653
|
width: 0;
|
|
650
|
-
border-left: 2px dashed
|
|
654
|
+
border-left: 2px dashed var(--sa-color-negative-strong);
|
|
651
655
|
}
|
|
652
656
|
.mc-promo-today span {
|
|
653
657
|
position: absolute;
|
|
654
658
|
top: -2px;
|
|
655
659
|
left: 3px;
|
|
656
|
-
font-size:
|
|
657
|
-
color:
|
|
660
|
+
font-size: var(--sa-text-2xs);
|
|
661
|
+
color: var(--sa-color-negative-strong);
|
|
658
662
|
font-weight: 700;
|
|
659
663
|
}
|
|
660
664
|
.mc-promo-bar {
|
|
@@ -671,8 +675,8 @@ async function onRemove(p: PromotionRow): Promise<void> {
|
|
|
671
675
|
opacity: 0.45;
|
|
672
676
|
}
|
|
673
677
|
.mc-promo-bar-label {
|
|
674
|
-
font-size:
|
|
675
|
-
color:
|
|
678
|
+
font-size: var(--sa-text-2xs);
|
|
679
|
+
color: var(--sa-color-fg-on-accent);
|
|
676
680
|
font-weight: 600;
|
|
677
681
|
padding: 0 6px;
|
|
678
682
|
white-space: nowrap;
|
|
@@ -680,9 +684,9 @@ async function onRemove(p: PromotionRow): Promise<void> {
|
|
|
680
684
|
.mc-promo-empty {
|
|
681
685
|
padding: 28px;
|
|
682
686
|
text-align: center;
|
|
683
|
-
color: var(--sa-
|
|
684
|
-
font-size:
|
|
685
|
-
border: 1px dashed
|
|
687
|
+
color: var(--sa-color-fg-subtle);
|
|
688
|
+
font-size: var(--sa-text-md);
|
|
689
|
+
border: 1px dashed var(--sa-color-border-strong);
|
|
686
690
|
border-radius: 10px;
|
|
687
691
|
}
|
|
688
692
|
.mc-promo-list {
|
|
@@ -694,14 +698,14 @@ async function onRemove(p: PromotionRow): Promise<void> {
|
|
|
694
698
|
display: flex;
|
|
695
699
|
align-items: center;
|
|
696
700
|
gap: 12px;
|
|
697
|
-
background:
|
|
698
|
-
border: 1px solid var(--sa-border);
|
|
701
|
+
background: var(--sa-color-bg-surface);
|
|
702
|
+
border: 1px solid var(--sa-color-border);
|
|
699
703
|
border-radius: 8px;
|
|
700
704
|
padding: 10px 12px;
|
|
701
705
|
cursor: pointer;
|
|
702
706
|
}
|
|
703
707
|
.mc-promo-row.expanded {
|
|
704
|
-
border-color:
|
|
708
|
+
border-color: var(--sa-color-accent);
|
|
705
709
|
border-bottom-left-radius: 0;
|
|
706
710
|
border-bottom-right-radius: 0;
|
|
707
711
|
}
|
|
@@ -716,7 +720,7 @@ async function onRemove(p: PromotionRow): Promise<void> {
|
|
|
716
720
|
min-width: 0;
|
|
717
721
|
}
|
|
718
722
|
.mc-promo-row-title {
|
|
719
|
-
font-size:
|
|
723
|
+
font-size: var(--sa-text-md);
|
|
720
724
|
font-weight: 600;
|
|
721
725
|
}
|
|
722
726
|
.mc-promo-row-sub {
|
|
@@ -727,57 +731,57 @@ async function onRemove(p: PromotionRow): Promise<void> {
|
|
|
727
731
|
margin-top: 2px;
|
|
728
732
|
}
|
|
729
733
|
.mc-promo-typechip {
|
|
730
|
-
font-size:
|
|
734
|
+
font-size: var(--sa-text-2xs);
|
|
731
735
|
font-weight: 700;
|
|
732
|
-
background: var(--sa-
|
|
733
|
-
color: var(--sa-
|
|
736
|
+
background: var(--sa-color-accent-surface-strong);
|
|
737
|
+
color: var(--sa-color-accent-strong);
|
|
734
738
|
padding: 1px 6px;
|
|
735
739
|
border-radius: 4px;
|
|
736
740
|
}
|
|
737
741
|
.mc-promo-planchip {
|
|
738
|
-
font-size:
|
|
739
|
-
background: var(--sa-border-soft);
|
|
740
|
-
color: var(--sa-
|
|
742
|
+
font-size: var(--sa-text-2xs);
|
|
743
|
+
background: var(--sa-color-border-soft);
|
|
744
|
+
color: var(--sa-color-fg-secondary);
|
|
741
745
|
padding: 1px 6px;
|
|
742
746
|
border-radius: 4px;
|
|
743
747
|
}
|
|
744
748
|
.mc-promo-muted {
|
|
745
|
-
font-size:
|
|
746
|
-
color: var(--sa-
|
|
749
|
+
font-size: var(--sa-text-xs);
|
|
750
|
+
color: var(--sa-color-fg-subtle);
|
|
747
751
|
}
|
|
748
752
|
.mc-promo-row-when {
|
|
749
|
-
font-size:
|
|
750
|
-
color: var(--sa-muted);
|
|
753
|
+
font-size: var(--sa-text-xs);
|
|
754
|
+
color: var(--sa-color-fg-muted);
|
|
751
755
|
text-align: right;
|
|
752
756
|
}
|
|
753
757
|
.mc-promo-cycle {
|
|
754
758
|
display: block;
|
|
755
|
-
color: var(--sa-
|
|
759
|
+
color: var(--sa-color-fg-subtle);
|
|
756
760
|
}
|
|
757
761
|
.mc-promo-status {
|
|
758
|
-
font-size:
|
|
762
|
+
font-size: var(--sa-text-2xs);
|
|
759
763
|
font-weight: 700;
|
|
760
764
|
text-transform: uppercase;
|
|
761
765
|
padding: 3px 8px;
|
|
762
766
|
border-radius: 6px;
|
|
763
767
|
}
|
|
764
768
|
.mc-promo-status.active {
|
|
765
|
-
background:
|
|
766
|
-
color:
|
|
769
|
+
background: var(--sa-color-positive-surface-strong);
|
|
770
|
+
color: var(--sa-color-positive-fg);
|
|
767
771
|
}
|
|
768
772
|
.mc-promo-status.scheduled {
|
|
769
|
-
background:
|
|
770
|
-
color: var(--sa-
|
|
773
|
+
background: var(--sa-color-scheduled-surface);
|
|
774
|
+
color: var(--sa-color-scheduled-fg);
|
|
771
775
|
}
|
|
772
776
|
.mc-promo-status.expired {
|
|
773
|
-
background: var(--sa-border-soft);
|
|
774
|
-
color: var(--sa-
|
|
777
|
+
background: var(--sa-color-border-soft);
|
|
778
|
+
color: var(--sa-color-fg-subtle);
|
|
775
779
|
}
|
|
776
780
|
.mc-promo-editor {
|
|
777
|
-
border: 1px solid
|
|
781
|
+
border: 1px solid var(--sa-color-accent);
|
|
778
782
|
border-top: 0;
|
|
779
783
|
border-radius: 0 0 8px 8px;
|
|
780
|
-
background: var(--sa-bg-
|
|
784
|
+
background: var(--sa-color-bg-sunken);
|
|
781
785
|
padding: 14px;
|
|
782
786
|
}
|
|
783
787
|
.mc-promo-editor-grid {
|
|
@@ -791,18 +795,18 @@ async function onRemove(p: PromotionRow): Promise<void> {
|
|
|
791
795
|
gap: 6px;
|
|
792
796
|
}
|
|
793
797
|
.mc-promo-label {
|
|
794
|
-
font-size:
|
|
798
|
+
font-size: var(--sa-text-2xs);
|
|
795
799
|
font-weight: 700;
|
|
796
800
|
text-transform: uppercase;
|
|
797
801
|
letter-spacing: 0.5px;
|
|
798
|
-
color: var(--sa-
|
|
802
|
+
color: var(--sa-color-fg-secondary);
|
|
799
803
|
margin-top: 6px;
|
|
800
804
|
}
|
|
801
805
|
.mc-promo-input {
|
|
802
|
-
border: 1px solid
|
|
806
|
+
border: 1px solid var(--sa-color-border-strong);
|
|
803
807
|
border-radius: 6px;
|
|
804
808
|
padding: 6px 8px;
|
|
805
|
-
font-size:
|
|
809
|
+
font-size: var(--sa-text-md);
|
|
806
810
|
}
|
|
807
811
|
.mc-promo-input--sm {
|
|
808
812
|
max-width: 90px;
|
|
@@ -818,17 +822,17 @@ async function onRemove(p: PromotionRow): Promise<void> {
|
|
|
818
822
|
gap: 6px;
|
|
819
823
|
}
|
|
820
824
|
.mc-promo-typeopt {
|
|
821
|
-
border: 1px solid
|
|
822
|
-
background:
|
|
825
|
+
border: 1px solid var(--sa-color-border-strong);
|
|
826
|
+
background: var(--sa-color-bg-surface);
|
|
823
827
|
border-radius: 6px;
|
|
824
828
|
padding: 5px 10px;
|
|
825
|
-
font-size:
|
|
829
|
+
font-size: var(--sa-text-sm);
|
|
826
830
|
cursor: pointer;
|
|
827
831
|
}
|
|
828
832
|
.mc-promo-typeopt.active {
|
|
829
|
-
border-color:
|
|
830
|
-
background: var(--sa-
|
|
831
|
-
color: var(--sa-
|
|
833
|
+
border-color: var(--sa-color-accent);
|
|
834
|
+
background: var(--sa-color-accent-surface-strong);
|
|
835
|
+
color: var(--sa-color-accent-strong);
|
|
832
836
|
font-weight: 600;
|
|
833
837
|
}
|
|
834
838
|
.mc-promo-planlist {
|
|
@@ -839,34 +843,34 @@ async function onRemove(p: PromotionRow): Promise<void> {
|
|
|
839
843
|
.mc-promo-planopt {
|
|
840
844
|
display: flex;
|
|
841
845
|
justify-content: space-between;
|
|
842
|
-
border: 1px solid
|
|
843
|
-
background:
|
|
846
|
+
border: 1px solid var(--sa-color-border-strong);
|
|
847
|
+
background: var(--sa-color-bg-surface);
|
|
844
848
|
border-radius: 6px;
|
|
845
849
|
padding: 6px 10px;
|
|
846
|
-
font-size:
|
|
850
|
+
font-size: var(--sa-text-sm);
|
|
847
851
|
cursor: pointer;
|
|
848
852
|
}
|
|
849
853
|
.mc-promo-planopt.active {
|
|
850
|
-
border-color:
|
|
851
|
-
background: var(--sa-
|
|
854
|
+
border-color: var(--sa-color-accent);
|
|
855
|
+
background: var(--sa-color-accent-surface-strong);
|
|
852
856
|
}
|
|
853
857
|
.mc-promo-planopt code {
|
|
854
|
-
color: var(--sa-
|
|
855
|
-
font-size:
|
|
858
|
+
color: var(--sa-color-fg-subtle);
|
|
859
|
+
font-size: var(--sa-text-2xs);
|
|
856
860
|
}
|
|
857
861
|
.mc-promo-i18n-block {
|
|
858
862
|
display: flex;
|
|
859
863
|
flex-direction: column;
|
|
860
864
|
gap: 4px;
|
|
861
865
|
padding: 8px;
|
|
862
|
-
border: 1px solid var(--sa-border);
|
|
866
|
+
border: 1px solid var(--sa-color-border);
|
|
863
867
|
border-radius: 8px;
|
|
864
|
-
background:
|
|
868
|
+
background: var(--sa-color-bg-surface);
|
|
865
869
|
}
|
|
866
870
|
.mc-promo-i18n-code {
|
|
867
|
-
font-size:
|
|
871
|
+
font-size: var(--sa-text-2xs);
|
|
868
872
|
font-weight: 700;
|
|
869
|
-
background: var(--sa-border-soft);
|
|
873
|
+
background: var(--sa-color-border-soft);
|
|
870
874
|
padding: 2px 7px;
|
|
871
875
|
border-radius: 5px;
|
|
872
876
|
align-self: flex-start;
|
|
@@ -883,16 +887,16 @@ async function onRemove(p: PromotionRow): Promise<void> {
|
|
|
883
887
|
cursor: pointer;
|
|
884
888
|
}
|
|
885
889
|
.mc-promo-colorbtn.active {
|
|
886
|
-
border-color: var(--sa-heading);
|
|
890
|
+
border-color: var(--sa-color-fg-heading);
|
|
887
891
|
}
|
|
888
892
|
.mc-promo-delete {
|
|
889
893
|
margin-top: 12px;
|
|
890
894
|
align-self: flex-start;
|
|
891
|
-
border: 1px solid
|
|
892
|
-
background:
|
|
893
|
-
color:
|
|
895
|
+
border: 1px solid var(--sa-color-negative-border);
|
|
896
|
+
background: var(--sa-color-negative-surface);
|
|
897
|
+
color: var(--sa-color-negative-fg);
|
|
894
898
|
font-weight: 600;
|
|
895
|
-
font-size:
|
|
899
|
+
font-size: var(--sa-text-sm);
|
|
896
900
|
padding: 6px 12px;
|
|
897
901
|
border-radius: 6px;
|
|
898
902
|
cursor: pointer;
|
|
@@ -102,9 +102,9 @@ function onConfirm() {
|
|
|
102
102
|
padding-bottom: 0;
|
|
103
103
|
}
|
|
104
104
|
code {
|
|
105
|
-
background:
|
|
105
|
+
background: var(--sa-color-bg-sunken);
|
|
106
106
|
padding: 1px 6px;
|
|
107
107
|
border-radius: 4px;
|
|
108
|
-
font-size:
|
|
108
|
+
font-size: var(--sa-text-xs);
|
|
109
109
|
}
|
|
110
110
|
</style>
|
|
@@ -236,19 +236,19 @@ function onCancel(): void {
|
|
|
236
236
|
}
|
|
237
237
|
.tenant-action-confirm__lead {
|
|
238
238
|
margin: 0 0 12px;
|
|
239
|
-
color: var(--sa-
|
|
239
|
+
color: var(--sa-color-fg-secondary);
|
|
240
240
|
line-height: 1.5;
|
|
241
241
|
}
|
|
242
242
|
.tenant-action-confirm__hint {
|
|
243
243
|
margin: 0 0 8px;
|
|
244
|
-
color: var(--sa-
|
|
245
|
-
font-size:
|
|
244
|
+
color: var(--sa-color-fg-secondary);
|
|
245
|
+
font-size: var(--sa-text-md);
|
|
246
246
|
}
|
|
247
247
|
.tenant-action-confirm__hint code {
|
|
248
|
-
background: var(--sa-border-soft);
|
|
248
|
+
background: var(--sa-color-border-soft);
|
|
249
249
|
padding: 1px 6px;
|
|
250
250
|
border-radius: 4px;
|
|
251
251
|
font-family: ui-monospace, SFMono-Regular, monospace;
|
|
252
|
-
font-size:
|
|
252
|
+
font-size: var(--sa-text-md);
|
|
253
253
|
}
|
|
254
254
|
</style>
|
|
@@ -109,12 +109,12 @@ function formatValue(value: unknown): string {
|
|
|
109
109
|
|
|
110
110
|
<style scoped>
|
|
111
111
|
.sa-diff-preview__empty {
|
|
112
|
-
color: var(--sa-muted);
|
|
112
|
+
color: var(--sa-color-fg-muted);
|
|
113
113
|
font-style: italic;
|
|
114
114
|
padding: 12px;
|
|
115
|
-
background: var(--sa-bg-
|
|
115
|
+
background: var(--sa-color-bg-sunken);
|
|
116
116
|
border-radius: 8px;
|
|
117
|
-
border: 1px dashed
|
|
117
|
+
border: 1px dashed var(--sa-color-border-strong);
|
|
118
118
|
}
|
|
119
119
|
.sa-diff-preview__list {
|
|
120
120
|
display: flex;
|
|
@@ -128,35 +128,35 @@ function formatValue(value: unknown): string {
|
|
|
128
128
|
padding: 8px 12px;
|
|
129
129
|
border-radius: 8px;
|
|
130
130
|
border: 1px solid;
|
|
131
|
-
font-size:
|
|
131
|
+
font-size: var(--sa-text-md);
|
|
132
132
|
align-items: center;
|
|
133
133
|
}
|
|
134
134
|
.sa-diff-preview__row--improvement {
|
|
135
|
-
background:
|
|
136
|
-
border-color:
|
|
137
|
-
color:
|
|
135
|
+
background: var(--sa-color-positive-surface);
|
|
136
|
+
border-color: var(--sa-color-positive-border);
|
|
137
|
+
color: var(--sa-color-positive-fg);
|
|
138
138
|
}
|
|
139
139
|
.sa-diff-preview__row--regression {
|
|
140
|
-
background:
|
|
141
|
-
border-color:
|
|
142
|
-
color:
|
|
140
|
+
background: var(--sa-color-negative-surface);
|
|
141
|
+
border-color: var(--sa-color-negative-border);
|
|
142
|
+
color: var(--sa-color-negative-fg);
|
|
143
143
|
}
|
|
144
144
|
.sa-diff-preview__row--neutral {
|
|
145
|
-
background: var(--sa-bg-
|
|
146
|
-
border-color: var(--sa-border);
|
|
147
|
-
color: var(--sa-
|
|
145
|
+
background: var(--sa-color-bg-sunken);
|
|
146
|
+
border-color: var(--sa-color-border);
|
|
147
|
+
color: var(--sa-color-fg-secondary);
|
|
148
148
|
}
|
|
149
149
|
.sa-diff-preview__direction {
|
|
150
150
|
display: flex;
|
|
151
151
|
align-items: center;
|
|
152
152
|
gap: 6px;
|
|
153
153
|
font-weight: 600;
|
|
154
|
-
font-size:
|
|
154
|
+
font-size: var(--sa-text-sm);
|
|
155
155
|
text-transform: uppercase;
|
|
156
156
|
letter-spacing: 0.04em;
|
|
157
157
|
}
|
|
158
158
|
.sa-diff-preview__field {
|
|
159
|
-
color: var(--sa-heading);
|
|
159
|
+
color: var(--sa-color-fg-heading);
|
|
160
160
|
font-weight: 500;
|
|
161
161
|
}
|
|
162
162
|
.sa-diff-preview__values {
|
|
@@ -165,15 +165,15 @@ function formatValue(value: unknown): string {
|
|
|
165
165
|
gap: 8px;
|
|
166
166
|
}
|
|
167
167
|
.sa-diff-preview__values .old {
|
|
168
|
-
color: var(--sa-
|
|
168
|
+
color: var(--sa-color-fg-subtle);
|
|
169
169
|
text-decoration: line-through;
|
|
170
170
|
font-family: ui-monospace, 'SF Mono', Menlo, monospace;
|
|
171
|
-
font-size:
|
|
171
|
+
font-size: var(--sa-text-sm);
|
|
172
172
|
}
|
|
173
173
|
.sa-diff-preview__values .new {
|
|
174
174
|
color: inherit;
|
|
175
175
|
font-weight: 600;
|
|
176
176
|
font-family: ui-monospace, 'SF Mono', Menlo, monospace;
|
|
177
|
-
font-size:
|
|
177
|
+
font-size: var(--sa-text-sm);
|
|
178
178
|
}
|
|
179
179
|
</style>
|