@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
|
@@ -272,10 +272,7 @@
|
|
|
272
272
|
<span
|
|
273
273
|
v-if="hasFeature(p, fKey)"
|
|
274
274
|
class="pm-check"
|
|
275
|
-
:style="
|
|
276
|
-
background: planAccent(p.planKey) + '15',
|
|
277
|
-
color: planAccent(p.planKey),
|
|
278
|
-
}"
|
|
275
|
+
:style="identityChipStyle(planAccent(p.planKey))"
|
|
279
276
|
>
|
|
280
277
|
<svg
|
|
281
278
|
width="12"
|
|
@@ -323,10 +320,7 @@
|
|
|
323
320
|
<span
|
|
324
321
|
v-if="hasBundle(p, bKey)"
|
|
325
322
|
class="pm-check"
|
|
326
|
-
:style="
|
|
327
|
-
background: planAccent(p.planKey) + '15',
|
|
328
|
-
color: planAccent(p.planKey),
|
|
329
|
-
}"
|
|
323
|
+
:style="identityChipStyle(planAccent(p.planKey))"
|
|
330
324
|
>
|
|
331
325
|
<svg
|
|
332
326
|
width="12"
|
|
@@ -384,6 +378,7 @@ import { computed } from 'vue';
|
|
|
384
378
|
*/
|
|
385
379
|
const NBSP = '\u00A0';
|
|
386
380
|
import type { PlanRow, PlanVersionRow } from '@saasicat/types';
|
|
381
|
+
import { identityAccentFor, identityChipStyle } from '../../client/identity-accents.js';
|
|
387
382
|
import { formatMessage } from '../../client/i18n/format.js';
|
|
388
383
|
import { formatCurrency } from '../../client/i18n/currency.js';
|
|
389
384
|
import { useSaMessages, useSuperAdminI18n } from '../../vue/use-super-admin-i18n.js';
|
|
@@ -477,24 +472,12 @@ function validFromLabel(validFrom: string): string {
|
|
|
477
472
|
return formatMessage(msg.value.matrix.validFrom, { date: validFrom.slice(0, 10) });
|
|
478
473
|
}
|
|
479
474
|
|
|
480
|
-
const DEFAULT_ACCENTS: Record<string, string> = {
|
|
481
|
-
STARTER: '#64748b',
|
|
482
|
-
STANDARD: '#2563eb',
|
|
483
|
-
PRO: '#7c3aed',
|
|
484
|
-
PROFESSIONAL: '#7c3aed',
|
|
485
|
-
BUSINESS: '#0ea5e9',
|
|
486
|
-
ENTERPRISE: '#0f766e',
|
|
487
|
-
BASIC: '#475569',
|
|
488
|
-
};
|
|
489
|
-
const FALLBACK_ACCENTS = ['#2563eb', '#7c3aed', '#0f766e', '#f59e0b', '#0ea5e9', '#ef4444'];
|
|
490
|
-
|
|
491
475
|
function planAccent(planKey: string): string {
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
return FALLBACK_ACCENTS[idx % FALLBACK_ACCENTS.length] ?? FALLBACK_ACCENTS[0]!;
|
|
476
|
+
return identityAccentFor(
|
|
477
|
+
planKey,
|
|
478
|
+
props.planAccents,
|
|
479
|
+
props.plans.findIndex((p) => p.planKey === planKey),
|
|
480
|
+
);
|
|
498
481
|
}
|
|
499
482
|
|
|
500
483
|
const resolvedPlans = computed<ResolvedPlan[]>(() =>
|
|
@@ -657,16 +640,16 @@ function formatQuota(v: number | undefined): string {
|
|
|
657
640
|
<style scoped>
|
|
658
641
|
.pm {
|
|
659
642
|
padding: 22px 26px;
|
|
660
|
-
background: var(--sa-bg-app);
|
|
661
|
-
color: var(--sa-heading);
|
|
643
|
+
background: var(--sa-color-bg-app);
|
|
644
|
+
color: var(--sa-color-fg-heading);
|
|
662
645
|
font-family: var(--sa-font-body);
|
|
663
646
|
min-height: 100%;
|
|
664
647
|
box-sizing: border-box;
|
|
665
648
|
}
|
|
666
649
|
|
|
667
650
|
.pm-card {
|
|
668
|
-
background: var(--sa-bg-surface);
|
|
669
|
-
border: 1px solid var(--sa-border);
|
|
651
|
+
background: var(--sa-color-bg-surface);
|
|
652
|
+
border: 1px solid var(--sa-color-border);
|
|
670
653
|
border-radius: 10px;
|
|
671
654
|
}
|
|
672
655
|
.pm-wrap {
|
|
@@ -677,11 +660,11 @@ function formatQuota(v: number | undefined): string {
|
|
|
677
660
|
width: 100%;
|
|
678
661
|
border-collapse: separate;
|
|
679
662
|
border-spacing: 0;
|
|
680
|
-
font-size:
|
|
663
|
+
font-size: var(--sa-text-md);
|
|
681
664
|
}
|
|
682
665
|
.pm-head th {
|
|
683
|
-
background:
|
|
684
|
-
border-bottom: 1px solid var(--sa-border);
|
|
666
|
+
background: var(--sa-color-bg-surface-raised);
|
|
667
|
+
border-bottom: 1px solid var(--sa-color-border);
|
|
685
668
|
}
|
|
686
669
|
.pm-rowhead-cell {
|
|
687
670
|
text-align: left;
|
|
@@ -691,10 +674,10 @@ function formatQuota(v: number | undefined): string {
|
|
|
691
674
|
min-width: 240px;
|
|
692
675
|
}
|
|
693
676
|
.pm-component-kicker {
|
|
694
|
-
font-size:
|
|
677
|
+
font-size: var(--sa-text-xs);
|
|
695
678
|
text-transform: uppercase;
|
|
696
679
|
letter-spacing: 0.1em;
|
|
697
|
-
color: var(--sa-
|
|
680
|
+
color: var(--sa-color-fg-subtle);
|
|
698
681
|
font-weight: 700;
|
|
699
682
|
}
|
|
700
683
|
|
|
@@ -704,8 +687,8 @@ function formatQuota(v: number | undefined): string {
|
|
|
704
687
|
min-width: 200px;
|
|
705
688
|
}
|
|
706
689
|
.pm-plan-card {
|
|
707
|
-
background:
|
|
708
|
-
border: 1px solid var(--sa-border);
|
|
690
|
+
background: var(--sa-color-bg-surface);
|
|
691
|
+
border: 1px solid var(--sa-color-border);
|
|
709
692
|
border-top: 3px solid;
|
|
710
693
|
border-radius: 10px;
|
|
711
694
|
padding: 14px 14px 12px;
|
|
@@ -718,34 +701,34 @@ function formatQuota(v: number | undefined): string {
|
|
|
718
701
|
align-items: flex-start;
|
|
719
702
|
}
|
|
720
703
|
.pm-plan-key {
|
|
721
|
-
font: 700
|
|
704
|
+
font: 700 var(--sa-text-xs) var(--sa-font-mono);
|
|
722
705
|
letter-spacing: 0.08em;
|
|
723
|
-
color: var(--sa-
|
|
706
|
+
color: var(--sa-color-fg-secondary);
|
|
724
707
|
}
|
|
725
708
|
.pm-plan-label {
|
|
726
|
-
font-size:
|
|
709
|
+
font-size: var(--sa-text-xl);
|
|
727
710
|
font-weight: 700;
|
|
728
711
|
letter-spacing: -0.02em;
|
|
729
|
-
color: var(--sa-heading);
|
|
712
|
+
color: var(--sa-color-fg-heading);
|
|
730
713
|
}
|
|
731
714
|
.pm-plan-desc {
|
|
732
|
-
font-size:
|
|
733
|
-
color: var(--sa-muted);
|
|
715
|
+
font-size: var(--sa-text-sm);
|
|
716
|
+
color: var(--sa-color-fg-muted);
|
|
734
717
|
margin-top: 4px;
|
|
735
718
|
line-height: 1.4;
|
|
736
719
|
min-height: 32px;
|
|
737
720
|
}
|
|
738
721
|
.pm-plan-divider {
|
|
739
722
|
height: 1px;
|
|
740
|
-
background: var(--sa-border);
|
|
723
|
+
background: var(--sa-color-border);
|
|
741
724
|
margin: 10px 0;
|
|
742
725
|
}
|
|
743
726
|
.pm-kebab {
|
|
744
727
|
background: none;
|
|
745
728
|
border: 0;
|
|
746
|
-
color: var(--sa-
|
|
729
|
+
color: var(--sa-color-fg-subtle);
|
|
747
730
|
cursor: pointer;
|
|
748
|
-
font-size:
|
|
731
|
+
font-size: var(--sa-text-lg);
|
|
749
732
|
padding: 0;
|
|
750
733
|
line-height: 1;
|
|
751
734
|
}
|
|
@@ -763,31 +746,31 @@ function formatQuota(v: number | undefined): string {
|
|
|
763
746
|
flex-wrap: wrap;
|
|
764
747
|
}
|
|
765
748
|
.pm-price-big {
|
|
766
|
-
font-size:
|
|
749
|
+
font-size: var(--sa-text-xl);
|
|
767
750
|
font-weight: 700;
|
|
768
751
|
letter-spacing: -0.02em;
|
|
769
752
|
}
|
|
770
753
|
.pm-price-unit {
|
|
771
|
-
font-size:
|
|
772
|
-
color: var(--sa-muted);
|
|
754
|
+
font-size: var(--sa-text-xs);
|
|
755
|
+
color: var(--sa-color-fg-muted);
|
|
773
756
|
}
|
|
774
757
|
.pm-price-yearly {
|
|
775
|
-
font-size:
|
|
776
|
-
color: var(--sa-
|
|
758
|
+
font-size: var(--sa-text-2xs);
|
|
759
|
+
color: var(--sa-color-fg-subtle);
|
|
777
760
|
margin-left: 4px;
|
|
778
761
|
}
|
|
779
762
|
.pm-price-free {
|
|
780
|
-
font-size:
|
|
763
|
+
font-size: var(--sa-text-lg);
|
|
781
764
|
font-weight: 600;
|
|
782
|
-
color: var(--sa-heading);
|
|
765
|
+
color: var(--sa-color-fg-heading);
|
|
783
766
|
}
|
|
784
767
|
.pm-plan-meta {
|
|
785
768
|
display: flex;
|
|
786
769
|
gap: 6px;
|
|
787
770
|
flex-wrap: wrap;
|
|
788
771
|
align-items: center;
|
|
789
|
-
font-size:
|
|
790
|
-
color: var(--sa-muted);
|
|
772
|
+
font-size: var(--sa-text-xs);
|
|
773
|
+
color: var(--sa-color-fg-muted);
|
|
791
774
|
margin-top: 8px;
|
|
792
775
|
}
|
|
793
776
|
.pm-plan-actions {
|
|
@@ -795,7 +778,7 @@ function formatQuota(v: number | undefined): string {
|
|
|
795
778
|
gap: 6px;
|
|
796
779
|
margin-top: 10px;
|
|
797
780
|
padding-top: 10px;
|
|
798
|
-
border-top: 1px solid var(--sa-border-soft);
|
|
781
|
+
border-top: 1px solid var(--sa-color-border-soft);
|
|
799
782
|
}
|
|
800
783
|
|
|
801
784
|
.pm-add-col {
|
|
@@ -804,10 +787,10 @@ function formatQuota(v: number | undefined): string {
|
|
|
804
787
|
vertical-align: top;
|
|
805
788
|
}
|
|
806
789
|
.pm-add {
|
|
807
|
-
border: 1.5px dashed
|
|
790
|
+
border: 1.5px dashed var(--sa-color-scheduled-border);
|
|
808
791
|
border-radius: 10px;
|
|
809
792
|
padding: 16px 10px;
|
|
810
|
-
background:
|
|
793
|
+
background: var(--sa-color-accent-surface);
|
|
811
794
|
text-align: center;
|
|
812
795
|
cursor: pointer;
|
|
813
796
|
min-height: 180px;
|
|
@@ -818,8 +801,8 @@ function formatQuota(v: number | undefined): string {
|
|
|
818
801
|
font-family: inherit;
|
|
819
802
|
}
|
|
820
803
|
.pm-add:hover {
|
|
821
|
-
background:
|
|
822
|
-
border-color:
|
|
804
|
+
background: var(--sa-color-scheduled-surface);
|
|
805
|
+
border-color: var(--sa-color-scheduled-strong);
|
|
823
806
|
}
|
|
824
807
|
.pm-add-icon {
|
|
825
808
|
display: grid;
|
|
@@ -827,18 +810,18 @@ function formatQuota(v: number | undefined): string {
|
|
|
827
810
|
width: 30px;
|
|
828
811
|
height: 30px;
|
|
829
812
|
border-radius: 50%;
|
|
830
|
-
background: var(--sa-
|
|
831
|
-
color: var(--sa-
|
|
813
|
+
background: var(--sa-color-accent-surface-strong);
|
|
814
|
+
color: var(--sa-color-accent);
|
|
832
815
|
margin: 0 auto 6px;
|
|
833
816
|
}
|
|
834
817
|
.pm-add-title {
|
|
835
|
-
font-size:
|
|
818
|
+
font-size: var(--sa-text-sm);
|
|
836
819
|
font-weight: 600;
|
|
837
|
-
color: var(--sa-
|
|
820
|
+
color: var(--sa-color-accent);
|
|
838
821
|
}
|
|
839
822
|
.pm-add-sub {
|
|
840
|
-
font-size:
|
|
841
|
-
color: var(--sa-
|
|
823
|
+
font-size: var(--sa-text-xs);
|
|
824
|
+
color: var(--sa-color-fg-subtle);
|
|
842
825
|
margin-top: 3px;
|
|
843
826
|
}
|
|
844
827
|
|
|
@@ -849,30 +832,30 @@ function formatQuota(v: number | undefined): string {
|
|
|
849
832
|
gap: 5px;
|
|
850
833
|
padding: 2px 8px;
|
|
851
834
|
border-radius: 999px;
|
|
852
|
-
font-size:
|
|
835
|
+
font-size: var(--sa-text-xs);
|
|
853
836
|
font-weight: 600;
|
|
854
|
-
background: var(--sa-bg-
|
|
855
|
-
color: var(--sa-
|
|
856
|
-
border: 1px solid var(--sa-border);
|
|
837
|
+
background: var(--sa-color-bg-sunken);
|
|
838
|
+
color: var(--sa-color-fg-secondary);
|
|
839
|
+
border: 1px solid var(--sa-color-border);
|
|
857
840
|
}
|
|
858
841
|
.pm-chip--tiny {
|
|
859
842
|
padding: 1px 6px;
|
|
860
|
-
font-size:
|
|
843
|
+
font-size: var(--sa-text-2xs);
|
|
861
844
|
}
|
|
862
845
|
.pm-chip--live {
|
|
863
|
-
background: var(--sa-positive-
|
|
864
|
-
color:
|
|
865
|
-
border-color:
|
|
846
|
+
background: var(--sa-color-positive-surface);
|
|
847
|
+
color: var(--sa-color-positive-fg);
|
|
848
|
+
border-color: var(--sa-color-positive-border);
|
|
866
849
|
}
|
|
867
850
|
.pm-chip--draft {
|
|
868
|
-
background: var(--sa-warning-
|
|
869
|
-
color:
|
|
870
|
-
border-color:
|
|
851
|
+
background: var(--sa-color-warning-surface);
|
|
852
|
+
color: var(--sa-color-warning-fg);
|
|
853
|
+
border-color: var(--sa-color-warning-border);
|
|
871
854
|
}
|
|
872
855
|
.pm-chip--supersed {
|
|
873
|
-
background: var(--sa-border-soft);
|
|
874
|
-
color: var(--sa-
|
|
875
|
-
border-color:
|
|
856
|
+
background: var(--sa-color-border-soft);
|
|
857
|
+
color: var(--sa-color-fg-secondary);
|
|
858
|
+
border-color: var(--sa-color-border-strong);
|
|
876
859
|
}
|
|
877
860
|
.pm-chip--dot::before {
|
|
878
861
|
content: '';
|
|
@@ -884,20 +867,20 @@ function formatQuota(v: number | undefined): string {
|
|
|
884
867
|
|
|
885
868
|
/* Group rows */
|
|
886
869
|
.pm-group td {
|
|
887
|
-
background: var(--sa-bg-
|
|
888
|
-
border-top: 1px solid var(--sa-border);
|
|
889
|
-
border-bottom: 1px solid var(--sa-border);
|
|
870
|
+
background: var(--sa-color-bg-sunken);
|
|
871
|
+
border-top: 1px solid var(--sa-color-border);
|
|
872
|
+
border-bottom: 1px solid var(--sa-color-border);
|
|
890
873
|
}
|
|
891
874
|
.pm-group-inner {
|
|
892
875
|
display: flex;
|
|
893
876
|
align-items: center;
|
|
894
877
|
gap: 8px;
|
|
895
878
|
padding: 9px 16px;
|
|
896
|
-
font-size:
|
|
879
|
+
font-size: var(--sa-text-xs);
|
|
897
880
|
font-weight: 700;
|
|
898
881
|
letter-spacing: 0.08em;
|
|
899
882
|
text-transform: uppercase;
|
|
900
|
-
color: var(--sa-
|
|
883
|
+
color: var(--sa-color-fg-secondary);
|
|
901
884
|
}
|
|
902
885
|
.pm-group-dot {
|
|
903
886
|
width: 7px;
|
|
@@ -905,29 +888,29 @@ function formatQuota(v: number | undefined): string {
|
|
|
905
888
|
border-radius: 50%;
|
|
906
889
|
}
|
|
907
890
|
.pm-group-dot--quota {
|
|
908
|
-
background:
|
|
891
|
+
background: var(--sa-color-quota);
|
|
909
892
|
}
|
|
910
893
|
.pm-group-dot--feature {
|
|
911
|
-
background:
|
|
894
|
+
background: var(--sa-color-feature);
|
|
912
895
|
}
|
|
913
896
|
.pm-group-dot--bundle {
|
|
914
|
-
background:
|
|
897
|
+
background: var(--sa-color-bundle);
|
|
915
898
|
}
|
|
916
899
|
.pm-group-count {
|
|
917
|
-
background: var(--sa-border);
|
|
918
|
-
color: var(--sa-
|
|
900
|
+
background: var(--sa-color-border);
|
|
901
|
+
color: var(--sa-color-fg-secondary);
|
|
919
902
|
padding: 1px 7px;
|
|
920
903
|
border-radius: 999px;
|
|
921
|
-
font-size:
|
|
904
|
+
font-size: var(--sa-text-2xs);
|
|
922
905
|
}
|
|
923
906
|
|
|
924
907
|
/* Data rows */
|
|
925
908
|
.pm-row td {
|
|
926
|
-
border-bottom: 1px solid var(--sa-border-soft);
|
|
909
|
+
border-bottom: 1px solid var(--sa-color-border-soft);
|
|
927
910
|
height: 44px;
|
|
928
911
|
}
|
|
929
912
|
.pm-row:hover td {
|
|
930
|
-
background:
|
|
913
|
+
background: var(--sa-color-bg-surface-raised);
|
|
931
914
|
}
|
|
932
915
|
.pm-rowhead {
|
|
933
916
|
padding: 8px 16px;
|
|
@@ -938,13 +921,13 @@ function formatQuota(v: number | undefined): string {
|
|
|
938
921
|
gap: 1px;
|
|
939
922
|
}
|
|
940
923
|
.pm-rh-label {
|
|
941
|
-
font-size:
|
|
924
|
+
font-size: var(--sa-text-md);
|
|
942
925
|
font-weight: 500;
|
|
943
|
-
color: var(--sa-heading);
|
|
926
|
+
color: var(--sa-color-fg-heading);
|
|
944
927
|
}
|
|
945
928
|
.pm-rh-key {
|
|
946
|
-
font: 500
|
|
947
|
-
color: var(--sa-
|
|
929
|
+
font: 500 var(--sa-text-2xs) var(--sa-font-mono);
|
|
930
|
+
color: var(--sa-color-fg-subtle);
|
|
948
931
|
}
|
|
949
932
|
.pm-cell {
|
|
950
933
|
text-align: center;
|
|
@@ -957,12 +940,12 @@ function formatQuota(v: number | undefined): string {
|
|
|
957
940
|
background-image: repeating-linear-gradient(
|
|
958
941
|
135deg,
|
|
959
942
|
transparent 0 6px,
|
|
960
|
-
|
|
943
|
+
var(--sa-color-warning-surface) 6px 7px
|
|
961
944
|
);
|
|
962
945
|
}
|
|
963
946
|
.pm-cell--base {
|
|
964
947
|
text-align: center;
|
|
965
|
-
background: var(--sa-bg-
|
|
948
|
+
background: var(--sa-color-bg-sunken);
|
|
966
949
|
}
|
|
967
950
|
.pm-base-badge {
|
|
968
951
|
display: inline-flex;
|
|
@@ -970,12 +953,12 @@ function formatQuota(v: number | undefined): string {
|
|
|
970
953
|
gap: 6px;
|
|
971
954
|
padding: 3px 12px;
|
|
972
955
|
border-radius: 999px;
|
|
973
|
-
font-size:
|
|
956
|
+
font-size: var(--sa-text-xs);
|
|
974
957
|
font-weight: 600;
|
|
975
958
|
letter-spacing: 0.02em;
|
|
976
|
-
background:
|
|
977
|
-
color:
|
|
978
|
-
border: 1px solid
|
|
959
|
+
background: var(--sa-color-scheduled-surface);
|
|
960
|
+
color: var(--sa-color-scheduled-fg);
|
|
961
|
+
border: 1px solid var(--sa-color-scheduled-border);
|
|
979
962
|
}
|
|
980
963
|
.pm-check {
|
|
981
964
|
display: inline-grid;
|
|
@@ -985,16 +968,16 @@ function formatQuota(v: number | undefined): string {
|
|
|
985
968
|
border-radius: 6px;
|
|
986
969
|
}
|
|
987
970
|
.pm-dash {
|
|
988
|
-
color:
|
|
971
|
+
color: var(--sa-color-fg-disabled);
|
|
989
972
|
font-weight: 500;
|
|
990
973
|
}
|
|
991
974
|
.pm-num {
|
|
992
|
-
font: 600
|
|
993
|
-
color: var(--sa-heading);
|
|
975
|
+
font: 600 var(--sa-text-lg) var(--sa-font-body);
|
|
976
|
+
color: var(--sa-color-fg-heading);
|
|
994
977
|
}
|
|
995
978
|
.pm-unit {
|
|
996
|
-
font-size:
|
|
997
|
-
color: var(--sa-
|
|
979
|
+
font-size: var(--sa-text-xs);
|
|
980
|
+
color: var(--sa-color-fg-subtle);
|
|
998
981
|
margin-left: 3px;
|
|
999
982
|
}
|
|
1000
983
|
.pm-quota {
|
|
@@ -1008,8 +991,8 @@ function formatQuota(v: number | undefined): string {
|
|
|
1008
991
|
display: flex;
|
|
1009
992
|
gap: 18px;
|
|
1010
993
|
margin-top: 14px;
|
|
1011
|
-
font-size:
|
|
1012
|
-
color: var(--sa-
|
|
994
|
+
font-size: var(--sa-text-sm);
|
|
995
|
+
color: var(--sa-color-fg-secondary);
|
|
1013
996
|
align-items: center;
|
|
1014
997
|
}
|
|
1015
998
|
.pm-legend-item {
|
|
@@ -1021,23 +1004,23 @@ function formatQuota(v: number | undefined): string {
|
|
|
1021
1004
|
width: 14px;
|
|
1022
1005
|
height: 14px;
|
|
1023
1006
|
border-radius: 4px;
|
|
1024
|
-
background:
|
|
1025
|
-
color:
|
|
1007
|
+
background: var(--sa-color-positive-surface-strong);
|
|
1008
|
+
color: var(--sa-color-positive);
|
|
1026
1009
|
display: grid;
|
|
1027
1010
|
place-items: center;
|
|
1028
1011
|
}
|
|
1029
1012
|
.pm-legend-dash {
|
|
1030
1013
|
width: 14px;
|
|
1031
1014
|
height: 14px;
|
|
1032
|
-
color:
|
|
1015
|
+
color: var(--sa-color-fg-disabled);
|
|
1033
1016
|
display: grid;
|
|
1034
1017
|
place-items: center;
|
|
1035
|
-
font-size:
|
|
1018
|
+
font-size: var(--sa-text-lg);
|
|
1036
1019
|
line-height: 1;
|
|
1037
1020
|
}
|
|
1038
1021
|
.pm-legend-loading {
|
|
1039
1022
|
margin-left: auto;
|
|
1040
1023
|
font-style: italic;
|
|
1041
|
-
color: var(--sa-
|
|
1024
|
+
color: var(--sa-color-fg-subtle);
|
|
1042
1025
|
}
|
|
1043
1026
|
</style>
|