@saasicat/ui-vue 0.22.2 → 0.23.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/index.cjs +213 -159
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +7 -1
- 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/components/BundleVersionPublishDialog.vue +17 -17
- package/src/components/KvBlock.vue +6 -6
- package/src/components/MarketingPromotionsTab.vue +78 -78
- 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 +48 -48
- 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 +61 -61
- 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 +49 -49
- package/src/components/plan-detail/PlanDetail.vue +172 -156
- package/src/components/plan-detail/PlanTitleEdit.vue +11 -11
- package/src/components/plan-list/PlanList.vue +98 -77
- package/src/components/plan-matrix/PlanMatrix.vue +89 -89
- package/src/components/plan-review/PlanReview.vue +60 -56
- package/src/components/plan-version-editor/PlanVersionEditor.vue +224 -200
- 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 +36 -36
- package/src/pages-standard/DashboardPage.vue +17 -17
- package/src/pages-standard/DiscoveryPage.vue +55 -49
- package/src/pages-standard/EmailHistoryPage.vue +53 -71
- package/src/pages-standard/MarketingCatalogPage.vue +226 -218
- 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 +7 -6
- 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 +11 -46
- 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/plan-versions/PlanDiffCard.vue +16 -16
- package/src/pages-standard/plan-versions/PlanVersionsDiff.vue +21 -15
- 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-tenant/LimitsRow.vue +4 -4
- package/src/pages-tenant/MySubscriptionBundlesPage.vue +61 -61
- package/src/pages-tenant/OnboardingConfigurator.vue +24 -24
- package/src/pages-tenant/PackageSnapshotPanel.vue +10 -16
- package/src/pages-tenant/PendingVersionBanner.vue +12 -12
- package/src/pages-tenant/PlanChangeWizard.vue +20 -27
- package/src/pages-tenant/TenantPlanSection.vue +13 -21
- package/src/pages-tenant/UsageBar.vue +7 -7
- 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 +28 -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 +48 -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 +108 -0
- package/src/ui/theme/tokens.scale.css +103 -0
- package/src/ui/theme/tokens.semantic.dark.css +173 -0
- package/src/ui/theme/tokens.semantic.light.css +212 -0
- package/src/vue/use-sa-theme.ts +154 -0
|
@@ -490,12 +490,12 @@ async function submit(): Promise<void> {
|
|
|
490
490
|
|
|
491
491
|
<style scoped>
|
|
492
492
|
.bcp {
|
|
493
|
-
background:
|
|
494
|
-
border: 1px solid
|
|
493
|
+
background: var(--sa-color-bg-surface);
|
|
494
|
+
border: 1px solid var(--sa-color-border-strong);
|
|
495
495
|
border-radius: 12px;
|
|
496
496
|
display: flex;
|
|
497
497
|
flex-direction: column;
|
|
498
|
-
box-shadow: 0 8px 24px
|
|
498
|
+
box-shadow: 0 8px 24px var(--sa-shadow-tint-2);
|
|
499
499
|
}
|
|
500
500
|
.bcp-head {
|
|
501
501
|
display: flex;
|
|
@@ -503,18 +503,18 @@ async function submit(): Promise<void> {
|
|
|
503
503
|
justify-content: space-between;
|
|
504
504
|
gap: 16px;
|
|
505
505
|
padding: 18px 22px 12px;
|
|
506
|
-
border-bottom: 1px solid var(--sa-border);
|
|
506
|
+
border-bottom: 1px solid var(--sa-color-border);
|
|
507
507
|
}
|
|
508
508
|
.bcp-title {
|
|
509
|
-
font-size:
|
|
509
|
+
font-size: var(--sa-text-xl);
|
|
510
510
|
font-weight: 700;
|
|
511
|
-
color: var(--sa-heading);
|
|
511
|
+
color: var(--sa-color-fg-heading);
|
|
512
512
|
letter-spacing: -0.01em;
|
|
513
513
|
}
|
|
514
514
|
.bcp-sub {
|
|
515
515
|
margin-top: 4px;
|
|
516
|
-
font-size:
|
|
517
|
-
color: var(--sa-muted);
|
|
516
|
+
font-size: var(--sa-text-md);
|
|
517
|
+
color: var(--sa-color-fg-muted);
|
|
518
518
|
max-width: 580px;
|
|
519
519
|
line-height: 1.5;
|
|
520
520
|
}
|
|
@@ -522,13 +522,13 @@ async function submit(): Promise<void> {
|
|
|
522
522
|
background: transparent;
|
|
523
523
|
border: 0;
|
|
524
524
|
cursor: pointer;
|
|
525
|
-
color: var(--sa-muted);
|
|
525
|
+
color: var(--sa-color-fg-muted);
|
|
526
526
|
padding: 4px;
|
|
527
527
|
border-radius: 4px;
|
|
528
528
|
}
|
|
529
529
|
.bcp-close:hover {
|
|
530
|
-
background: var(--sa-border-soft);
|
|
531
|
-
color: var(--sa-heading);
|
|
530
|
+
background: var(--sa-color-border-soft);
|
|
531
|
+
color: var(--sa-color-fg-heading);
|
|
532
532
|
}
|
|
533
533
|
.bcp-body {
|
|
534
534
|
padding: 16px 22px;
|
|
@@ -552,22 +552,22 @@ async function submit(): Promise<void> {
|
|
|
552
552
|
width: 24px;
|
|
553
553
|
height: 24px;
|
|
554
554
|
border-radius: 999px;
|
|
555
|
-
background: var(--sa-
|
|
556
|
-
color:
|
|
555
|
+
background: var(--sa-color-accent);
|
|
556
|
+
color: var(--sa-color-fg-on-accent);
|
|
557
557
|
font:
|
|
558
|
-
700
|
|
558
|
+
700 var(--sa-text-sm) 'JetBrains Mono',
|
|
559
559
|
ui-monospace,
|
|
560
560
|
monospace;
|
|
561
561
|
flex: 0 0 auto;
|
|
562
562
|
}
|
|
563
563
|
.bcp-section-title {
|
|
564
|
-
font-size:
|
|
564
|
+
font-size: var(--sa-text-lg);
|
|
565
565
|
font-weight: 700;
|
|
566
|
-
color: var(--sa-heading);
|
|
566
|
+
color: var(--sa-color-fg-heading);
|
|
567
567
|
}
|
|
568
568
|
.bcp-section-sub {
|
|
569
|
-
font-size:
|
|
570
|
-
color: var(--sa-muted);
|
|
569
|
+
font-size: var(--sa-text-sm);
|
|
570
|
+
color: var(--sa-color-fg-muted);
|
|
571
571
|
margin-top: 2px;
|
|
572
572
|
line-height: 1.4;
|
|
573
573
|
}
|
|
@@ -585,27 +585,27 @@ async function submit(): Promise<void> {
|
|
|
585
585
|
gap: 4px;
|
|
586
586
|
}
|
|
587
587
|
.bcp-field-label {
|
|
588
|
-
font-size:
|
|
588
|
+
font-size: var(--sa-text-sm);
|
|
589
589
|
font-weight: 600;
|
|
590
|
-
color: var(--sa-
|
|
590
|
+
color: var(--sa-color-fg-secondary);
|
|
591
591
|
}
|
|
592
592
|
.bcp-field-hint {
|
|
593
|
-
font-size:
|
|
594
|
-
color: var(--sa-
|
|
593
|
+
font-size: var(--sa-text-xs);
|
|
594
|
+
color: var(--sa-color-fg-subtle);
|
|
595
595
|
font-weight: 500;
|
|
596
596
|
}
|
|
597
597
|
.bcp-input {
|
|
598
598
|
padding: 7px 10px;
|
|
599
|
-
border: 1px solid
|
|
599
|
+
border: 1px solid var(--sa-color-border-strong);
|
|
600
600
|
border-radius: 6px;
|
|
601
601
|
font-family: inherit;
|
|
602
|
-
font-size:
|
|
603
|
-
color: var(--sa-heading);
|
|
604
|
-
background:
|
|
602
|
+
font-size: var(--sa-text-md);
|
|
603
|
+
color: var(--sa-color-fg-heading);
|
|
604
|
+
background: var(--sa-color-bg-surface);
|
|
605
605
|
}
|
|
606
606
|
.bcp-input--mono {
|
|
607
607
|
font:
|
|
608
|
-
600
|
|
608
|
+
600 var(--sa-text-md) 'JetBrains Mono',
|
|
609
609
|
ui-monospace,
|
|
610
610
|
monospace;
|
|
611
611
|
letter-spacing: 0.02em;
|
|
@@ -616,7 +616,7 @@ async function submit(): Promise<void> {
|
|
|
616
616
|
.bcp-input-grp {
|
|
617
617
|
display: inline-flex;
|
|
618
618
|
align-items: stretch;
|
|
619
|
-
border: 1px solid
|
|
619
|
+
border: 1px solid var(--sa-color-border-strong);
|
|
620
620
|
border-radius: 6px;
|
|
621
621
|
}
|
|
622
622
|
.bcp-input-grp .bcp-input {
|
|
@@ -627,31 +627,31 @@ async function submit(): Promise<void> {
|
|
|
627
627
|
display: inline-flex;
|
|
628
628
|
align-items: center;
|
|
629
629
|
padding: 0 10px;
|
|
630
|
-
font-size:
|
|
631
|
-
color: var(--sa-muted);
|
|
632
|
-
background: var(--sa-bg-
|
|
633
|
-
border-left: 1px solid var(--sa-border);
|
|
630
|
+
font-size: var(--sa-text-sm);
|
|
631
|
+
color: var(--sa-color-fg-muted);
|
|
632
|
+
background: var(--sa-color-bg-sunken);
|
|
633
|
+
border-left: 1px solid var(--sa-color-border);
|
|
634
634
|
border-radius: 0 6px 6px 0;
|
|
635
635
|
}
|
|
636
636
|
.bcp-error-inline {
|
|
637
|
-
font-size:
|
|
638
|
-
color:
|
|
637
|
+
font-size: var(--sa-text-sm);
|
|
638
|
+
color: var(--sa-color-negative-fg);
|
|
639
639
|
}
|
|
640
640
|
.bcp-error {
|
|
641
641
|
padding: 10px 12px;
|
|
642
|
-
background:
|
|
643
|
-
border: 1px solid
|
|
642
|
+
background: var(--sa-color-negative-surface);
|
|
643
|
+
border: 1px solid var(--sa-color-negative-border);
|
|
644
644
|
border-radius: 6px;
|
|
645
|
-
color:
|
|
646
|
-
font-size:
|
|
645
|
+
color: var(--sa-color-negative-fg);
|
|
646
|
+
font-size: var(--sa-text-md);
|
|
647
647
|
}
|
|
648
648
|
.bcp-foot {
|
|
649
649
|
display: flex;
|
|
650
650
|
align-items: center;
|
|
651
651
|
gap: 10px;
|
|
652
652
|
padding: 12px 22px;
|
|
653
|
-
border-top: 1px solid var(--sa-border);
|
|
654
|
-
background: var(--sa-bg-
|
|
653
|
+
border-top: 1px solid var(--sa-color-border);
|
|
654
|
+
background: var(--sa-color-bg-sunken);
|
|
655
655
|
border-radius: 0 0 12px 12px;
|
|
656
656
|
}
|
|
657
657
|
.bcp-foot-hint {
|
|
@@ -659,36 +659,36 @@ async function submit(): Promise<void> {
|
|
|
659
659
|
display: inline-flex;
|
|
660
660
|
align-items: center;
|
|
661
661
|
gap: 6px;
|
|
662
|
-
font-size:
|
|
663
|
-
color: var(--sa-
|
|
662
|
+
font-size: var(--sa-text-sm);
|
|
663
|
+
color: var(--sa-color-fg-secondary);
|
|
664
664
|
}
|
|
665
665
|
.bcp-foot-hint--warn {
|
|
666
|
-
color:
|
|
666
|
+
color: var(--sa-color-negative-fg);
|
|
667
667
|
font-weight: 600;
|
|
668
668
|
}
|
|
669
669
|
.bcp-btn {
|
|
670
670
|
padding: 7px 14px;
|
|
671
|
-
background:
|
|
672
|
-
border: 1px solid
|
|
671
|
+
background: var(--sa-color-bg-surface);
|
|
672
|
+
border: 1px solid var(--sa-color-border-strong);
|
|
673
673
|
border-radius: 6px;
|
|
674
674
|
cursor: pointer;
|
|
675
|
-
font-size:
|
|
675
|
+
font-size: var(--sa-text-md);
|
|
676
676
|
font-family: inherit;
|
|
677
|
-
color: var(--sa-heading);
|
|
677
|
+
color: var(--sa-color-fg-heading);
|
|
678
678
|
}
|
|
679
679
|
.bcp-btn:hover:not(:disabled) {
|
|
680
|
-
background: var(--sa-bg-
|
|
680
|
+
background: var(--sa-color-bg-sunken);
|
|
681
681
|
}
|
|
682
682
|
.bcp-btn:disabled {
|
|
683
683
|
cursor: not-allowed;
|
|
684
684
|
opacity: 0.5;
|
|
685
685
|
}
|
|
686
686
|
.bcp-btn--primary {
|
|
687
|
-
background: var(--sa-
|
|
688
|
-
border-color: var(--sa-
|
|
689
|
-
color:
|
|
687
|
+
background: var(--sa-color-accent);
|
|
688
|
+
border-color: var(--sa-color-accent);
|
|
689
|
+
color: var(--sa-color-fg-on-accent);
|
|
690
690
|
}
|
|
691
691
|
.bcp-btn--primary:hover:not(:disabled) {
|
|
692
|
-
background: var(--sa-
|
|
692
|
+
background: var(--sa-color-accent-strong);
|
|
693
693
|
}
|
|
694
694
|
</style>
|
|
@@ -151,11 +151,11 @@ function onToggle(featureKey: string): void {
|
|
|
151
151
|
gap: 6px;
|
|
152
152
|
}
|
|
153
153
|
.bd-features-group-label {
|
|
154
|
-
font-size:
|
|
154
|
+
font-size: var(--sa-text-xs);
|
|
155
155
|
font-weight: 700;
|
|
156
156
|
text-transform: uppercase;
|
|
157
157
|
letter-spacing: 0.08em;
|
|
158
|
-
color: var(--sa-muted);
|
|
158
|
+
color: var(--sa-color-fg-muted);
|
|
159
159
|
}
|
|
160
160
|
.bd-features-row {
|
|
161
161
|
display: flex;
|
|
@@ -167,31 +167,31 @@ function onToggle(featureKey: string): void {
|
|
|
167
167
|
align-items: center;
|
|
168
168
|
gap: 6px;
|
|
169
169
|
padding: 6px 10px;
|
|
170
|
-
background:
|
|
171
|
-
border: 1px solid var(--sa-border);
|
|
170
|
+
background: var(--sa-color-bg-surface);
|
|
171
|
+
border: 1px solid var(--sa-color-border);
|
|
172
172
|
border-radius: 999px;
|
|
173
173
|
cursor: pointer;
|
|
174
174
|
font-family: inherit;
|
|
175
|
-
font-size:
|
|
176
|
-
color: var(--sa-heading);
|
|
175
|
+
font-size: var(--sa-text-sm);
|
|
176
|
+
color: var(--sa-color-fg-heading);
|
|
177
177
|
transition:
|
|
178
178
|
background 0.12s,
|
|
179
179
|
border-color 0.12s,
|
|
180
180
|
color 0.12s;
|
|
181
181
|
}
|
|
182
182
|
.bd-feature-pill:hover:not(:disabled) {
|
|
183
|
-
background: var(--sa-bg-
|
|
184
|
-
border-color:
|
|
183
|
+
background: var(--sa-color-bg-sunken);
|
|
184
|
+
border-color: var(--sa-color-border-strong);
|
|
185
185
|
}
|
|
186
186
|
.bd-feature-pill.on {
|
|
187
|
-
background:
|
|
188
|
-
border-color:
|
|
189
|
-
color:
|
|
187
|
+
background: var(--sa-color-info-surface-strong);
|
|
188
|
+
border-color: var(--sa-color-info-border);
|
|
189
|
+
color: var(--sa-color-info-fg);
|
|
190
190
|
}
|
|
191
191
|
.bd-feature-pill.overlap {
|
|
192
|
-
border-color:
|
|
193
|
-
background:
|
|
194
|
-
color:
|
|
192
|
+
border-color: var(--sa-color-negative-border);
|
|
193
|
+
background: var(--sa-color-negative-surface);
|
|
194
|
+
color: var(--sa-color-negative-fg);
|
|
195
195
|
}
|
|
196
196
|
.bd-feature-pill:disabled {
|
|
197
197
|
cursor: not-allowed;
|
|
@@ -201,22 +201,22 @@ function onToggle(featureKey: string): void {
|
|
|
201
201
|
}
|
|
202
202
|
.bd-feature-key {
|
|
203
203
|
font:
|
|
204
|
-
600
|
|
204
|
+
600 var(--sa-text-2xs) 'JetBrains Mono',
|
|
205
205
|
ui-monospace,
|
|
206
206
|
monospace;
|
|
207
|
-
color: var(--sa-
|
|
207
|
+
color: var(--sa-color-fg-subtle);
|
|
208
208
|
margin-left: 4px;
|
|
209
209
|
}
|
|
210
210
|
.bd-feature-pill.on .bd-feature-key {
|
|
211
|
-
color: var(--sa-
|
|
211
|
+
color: var(--sa-color-accent);
|
|
212
212
|
}
|
|
213
213
|
.bd-feature-pill.overlap .bd-feature-key {
|
|
214
|
-
color:
|
|
214
|
+
color: var(--sa-color-negative-fg);
|
|
215
215
|
}
|
|
216
216
|
.bd-features-empty {
|
|
217
217
|
padding: 12px;
|
|
218
|
-
color: var(--sa-
|
|
218
|
+
color: var(--sa-color-fg-subtle);
|
|
219
219
|
font-style: italic;
|
|
220
|
-
font-size:
|
|
220
|
+
font-size: var(--sa-text-md);
|
|
221
221
|
}
|
|
222
222
|
</style>
|
|
@@ -182,8 +182,8 @@ function onToggle(planKey: string): void {
|
|
|
182
182
|
gap: 10px;
|
|
183
183
|
}
|
|
184
184
|
.bv-compat-hint {
|
|
185
|
-
font-size:
|
|
186
|
-
color: var(--sa-muted);
|
|
185
|
+
font-size: var(--sa-text-sm);
|
|
186
|
+
color: var(--sa-color-fg-muted);
|
|
187
187
|
line-height: 1.5;
|
|
188
188
|
}
|
|
189
189
|
.bv-compat-grid {
|
|
@@ -196,27 +196,27 @@ function onToggle(planKey: string): void {
|
|
|
196
196
|
flex-direction: column;
|
|
197
197
|
gap: 6px;
|
|
198
198
|
padding: 10px 12px;
|
|
199
|
-
background:
|
|
200
|
-
border: 1px solid var(--sa-border);
|
|
199
|
+
background: var(--sa-color-bg-surface);
|
|
200
|
+
border: 1px solid var(--sa-color-border);
|
|
201
201
|
border-radius: 8px;
|
|
202
202
|
cursor: pointer;
|
|
203
203
|
text-align: left;
|
|
204
204
|
font-family: inherit;
|
|
205
|
-
color: var(--sa-heading);
|
|
205
|
+
color: var(--sa-color-fg-heading);
|
|
206
206
|
transition:
|
|
207
207
|
background 0.12s,
|
|
208
208
|
border-color 0.12s;
|
|
209
209
|
}
|
|
210
210
|
.bv-compat-card:hover:not(:disabled) {
|
|
211
|
-
background: var(--sa-bg-
|
|
211
|
+
background: var(--sa-color-bg-sunken);
|
|
212
212
|
}
|
|
213
213
|
.bv-compat-card.on {
|
|
214
|
-
border-color: var(--sa-
|
|
215
|
-
background: var(--sa-
|
|
214
|
+
border-color: var(--sa-color-accent);
|
|
215
|
+
background: var(--sa-color-accent-surface-strong);
|
|
216
216
|
}
|
|
217
217
|
.bv-compat-card.warn {
|
|
218
|
-
border-color:
|
|
219
|
-
background:
|
|
218
|
+
border-color: var(--sa-color-negative-border);
|
|
219
|
+
background: var(--sa-color-negative-surface);
|
|
220
220
|
}
|
|
221
221
|
.bv-compat-card:disabled {
|
|
222
222
|
cursor: not-allowed;
|
|
@@ -232,12 +232,12 @@ function onToggle(planKey: string): void {
|
|
|
232
232
|
height: 26px;
|
|
233
233
|
display: grid;
|
|
234
234
|
place-items: center;
|
|
235
|
-
background:
|
|
236
|
-
color:
|
|
237
|
-
border: 1px solid
|
|
235
|
+
background: var(--sa-color-scheduled-surface-strong);
|
|
236
|
+
color: var(--sa-color-scheduled-fg);
|
|
237
|
+
border: 1px solid var(--sa-color-scheduled-border);
|
|
238
238
|
border-radius: 6px;
|
|
239
239
|
font:
|
|
240
|
-
700
|
|
240
|
+
700 var(--sa-text-2xs) 'JetBrains Mono',
|
|
241
241
|
ui-monospace,
|
|
242
242
|
monospace;
|
|
243
243
|
letter-spacing: 0.04em;
|
|
@@ -248,32 +248,32 @@ function onToggle(planKey: string): void {
|
|
|
248
248
|
min-width: 0;
|
|
249
249
|
}
|
|
250
250
|
.bv-compat-name {
|
|
251
|
-
font-size:
|
|
251
|
+
font-size: var(--sa-text-md);
|
|
252
252
|
font-weight: 600;
|
|
253
253
|
}
|
|
254
254
|
.bv-compat-key {
|
|
255
255
|
font:
|
|
256
|
-
500
|
|
256
|
+
500 var(--sa-text-xs) 'JetBrains Mono',
|
|
257
257
|
ui-monospace,
|
|
258
258
|
monospace;
|
|
259
|
-
color: var(--sa-muted);
|
|
259
|
+
color: var(--sa-color-fg-muted);
|
|
260
260
|
}
|
|
261
261
|
.bv-compat-check {
|
|
262
|
-
color: var(--sa-
|
|
262
|
+
color: var(--sa-color-accent);
|
|
263
263
|
display: inline-flex;
|
|
264
264
|
}
|
|
265
265
|
.bv-compat-overlap {
|
|
266
266
|
padding: 6px 8px;
|
|
267
|
-
background:
|
|
268
|
-
border: 1px dashed
|
|
267
|
+
background: var(--sa-color-bg-surface);
|
|
268
|
+
border: 1px dashed var(--sa-color-negative-border);
|
|
269
269
|
border-radius: 6px;
|
|
270
270
|
display: flex;
|
|
271
271
|
flex-direction: column;
|
|
272
272
|
gap: 4px;
|
|
273
|
-
color:
|
|
273
|
+
color: var(--sa-color-negative-fg);
|
|
274
274
|
}
|
|
275
275
|
.bv-compat-overlap-head {
|
|
276
|
-
font-size:
|
|
276
|
+
font-size: var(--sa-text-xs);
|
|
277
277
|
font-weight: 700;
|
|
278
278
|
text-transform: uppercase;
|
|
279
279
|
letter-spacing: 0.06em;
|
|
@@ -283,24 +283,24 @@ function onToggle(planKey: string): void {
|
|
|
283
283
|
align-items: center;
|
|
284
284
|
gap: 5px;
|
|
285
285
|
flex-wrap: wrap;
|
|
286
|
-
font-size:
|
|
286
|
+
font-size: var(--sa-text-sm);
|
|
287
287
|
}
|
|
288
288
|
.bv-compat-overlap-kind {
|
|
289
|
-
color:
|
|
289
|
+
color: var(--sa-color-negative-fg);
|
|
290
290
|
font-weight: 600;
|
|
291
291
|
}
|
|
292
292
|
.bv-compat-overlap-chip {
|
|
293
293
|
padding: 1px 6px;
|
|
294
|
-
border: 1px solid
|
|
294
|
+
border: 1px solid var(--sa-color-negative-border);
|
|
295
295
|
border-radius: 4px;
|
|
296
|
-
background:
|
|
297
|
-
color:
|
|
296
|
+
background: var(--sa-color-bg-surface);
|
|
297
|
+
color: var(--sa-color-negative-fg);
|
|
298
298
|
}
|
|
299
299
|
.bv-compat-empty {
|
|
300
300
|
padding: 12px;
|
|
301
|
-
color: var(--sa-
|
|
301
|
+
color: var(--sa-color-fg-subtle);
|
|
302
302
|
font-style: italic;
|
|
303
|
-
font-size:
|
|
303
|
+
font-size: var(--sa-text-md);
|
|
304
304
|
text-align: center;
|
|
305
305
|
}
|
|
306
306
|
.bv-compat-summary {
|
|
@@ -308,11 +308,11 @@ function onToggle(planKey: string): void {
|
|
|
308
308
|
align-items: flex-start;
|
|
309
309
|
gap: 8px;
|
|
310
310
|
padding: 10px 12px;
|
|
311
|
-
background:
|
|
312
|
-
border: 1px solid
|
|
311
|
+
background: var(--sa-color-negative-surface);
|
|
312
|
+
border: 1px solid var(--sa-color-negative-border);
|
|
313
313
|
border-radius: 8px;
|
|
314
|
-
color:
|
|
315
|
-
font-size:
|
|
314
|
+
color: var(--sa-color-negative-fg);
|
|
315
|
+
font-size: var(--sa-text-md);
|
|
316
316
|
line-height: 1.5;
|
|
317
317
|
}
|
|
318
318
|
.bv-compat-summary-ico {
|
|
@@ -132,20 +132,20 @@ function quotaUnit(q: DiscoveredQuota): string {
|
|
|
132
132
|
align-items: center;
|
|
133
133
|
gap: 10px;
|
|
134
134
|
padding: 8px 10px;
|
|
135
|
-
background:
|
|
136
|
-
border: 1px solid var(--sa-border);
|
|
135
|
+
background: var(--sa-color-bg-surface);
|
|
136
|
+
border: 1px solid var(--sa-color-border);
|
|
137
137
|
border-radius: 8px;
|
|
138
138
|
transition:
|
|
139
139
|
background 0.12s,
|
|
140
140
|
border-color 0.12s;
|
|
141
141
|
}
|
|
142
142
|
.bd-quota-row.on {
|
|
143
|
-
background:
|
|
144
|
-
border-color:
|
|
143
|
+
background: var(--sa-color-quota-surface);
|
|
144
|
+
border-color: var(--sa-color-quota-border);
|
|
145
145
|
}
|
|
146
146
|
.bd-quota-row.overlap {
|
|
147
|
-
border-color:
|
|
148
|
-
background:
|
|
147
|
+
border-color: var(--sa-color-negative-border);
|
|
148
|
+
background: var(--sa-color-negative-surface);
|
|
149
149
|
}
|
|
150
150
|
.bd-quota-toggle {
|
|
151
151
|
display: inline-flex;
|
|
@@ -153,16 +153,16 @@ function quotaUnit(q: DiscoveredQuota): string {
|
|
|
153
153
|
justify-content: center;
|
|
154
154
|
width: 22px;
|
|
155
155
|
height: 22px;
|
|
156
|
-
background:
|
|
157
|
-
border: 1px solid
|
|
156
|
+
background: var(--sa-color-bg-surface);
|
|
157
|
+
border: 1px solid var(--sa-color-border-strong);
|
|
158
158
|
border-radius: 6px;
|
|
159
159
|
cursor: pointer;
|
|
160
|
-
color: var(--sa-
|
|
160
|
+
color: var(--sa-color-fg-secondary);
|
|
161
161
|
}
|
|
162
162
|
.bd-quota-row.on .bd-quota-toggle {
|
|
163
|
-
background: var(--sa-
|
|
164
|
-
border-color: var(--sa-
|
|
165
|
-
color:
|
|
163
|
+
background: var(--sa-color-accent);
|
|
164
|
+
border-color: var(--sa-color-accent);
|
|
165
|
+
color: var(--sa-color-fg-on-accent);
|
|
166
166
|
}
|
|
167
167
|
.bd-quota-toggle:disabled {
|
|
168
168
|
cursor: not-allowed;
|
|
@@ -174,16 +174,16 @@ function quotaUnit(q: DiscoveredQuota): string {
|
|
|
174
174
|
min-width: 0;
|
|
175
175
|
}
|
|
176
176
|
.bd-quota-label {
|
|
177
|
-
font-size:
|
|
177
|
+
font-size: var(--sa-text-md);
|
|
178
178
|
font-weight: 600;
|
|
179
|
-
color: var(--sa-heading);
|
|
179
|
+
color: var(--sa-color-fg-heading);
|
|
180
180
|
}
|
|
181
181
|
.bd-quota-key {
|
|
182
182
|
font:
|
|
183
|
-
500
|
|
183
|
+
500 var(--sa-text-xs) 'JetBrains Mono',
|
|
184
184
|
ui-monospace,
|
|
185
185
|
monospace;
|
|
186
|
-
color: var(--sa-
|
|
186
|
+
color: var(--sa-color-fg-subtle);
|
|
187
187
|
}
|
|
188
188
|
.bd-quota-valwrap {
|
|
189
189
|
display: inline-flex;
|
|
@@ -193,30 +193,30 @@ function quotaUnit(q: DiscoveredQuota): string {
|
|
|
193
193
|
.bd-quota-val {
|
|
194
194
|
width: 90px;
|
|
195
195
|
padding: 5px 8px;
|
|
196
|
-
border: 1px solid
|
|
196
|
+
border: 1px solid var(--sa-color-border-strong);
|
|
197
197
|
border-radius: 6px;
|
|
198
198
|
font:
|
|
199
|
-
600
|
|
199
|
+
600 var(--sa-text-md) 'JetBrains Mono',
|
|
200
200
|
ui-monospace,
|
|
201
201
|
monospace;
|
|
202
202
|
text-align: right;
|
|
203
|
-
background:
|
|
204
|
-
color: var(--sa-heading);
|
|
203
|
+
background: var(--sa-color-bg-surface);
|
|
204
|
+
color: var(--sa-color-fg-heading);
|
|
205
205
|
}
|
|
206
206
|
.bd-quota-val:disabled {
|
|
207
|
-
background: var(--sa-border-soft);
|
|
208
|
-
color: var(--sa-
|
|
207
|
+
background: var(--sa-color-border-soft);
|
|
208
|
+
color: var(--sa-color-fg-subtle);
|
|
209
209
|
cursor: not-allowed;
|
|
210
210
|
}
|
|
211
211
|
.bd-quota-unit {
|
|
212
|
-
font-size:
|
|
213
|
-
color: var(--sa-muted);
|
|
212
|
+
font-size: var(--sa-text-sm);
|
|
213
|
+
color: var(--sa-color-fg-muted);
|
|
214
214
|
min-width: 32px;
|
|
215
215
|
}
|
|
216
216
|
.bd-quotas-empty {
|
|
217
217
|
padding: 12px;
|
|
218
|
-
color: var(--sa-
|
|
218
|
+
color: var(--sa-color-fg-subtle);
|
|
219
219
|
font-style: italic;
|
|
220
|
-
font-size:
|
|
220
|
+
font-size: var(--sa-text-md);
|
|
221
221
|
}
|
|
222
222
|
</style>
|
|
@@ -147,28 +147,28 @@ const supersededTail = computed(() =>
|
|
|
147
147
|
padding: 12px 14px;
|
|
148
148
|
border-radius: 8px;
|
|
149
149
|
border: 1px solid transparent;
|
|
150
|
-
font-size:
|
|
150
|
+
font-size: var(--sa-text-md);
|
|
151
151
|
line-height: 1.4;
|
|
152
152
|
}
|
|
153
153
|
.bv-status-live {
|
|
154
|
-
background: var(--sa-positive-
|
|
155
|
-
border-color:
|
|
156
|
-
color:
|
|
154
|
+
background: var(--sa-color-positive-surface);
|
|
155
|
+
border-color: var(--sa-color-positive-border);
|
|
156
|
+
color: var(--sa-color-positive-fg);
|
|
157
157
|
}
|
|
158
158
|
.bv-status-scheduled {
|
|
159
|
-
background: var(--sa-warning-
|
|
160
|
-
border-color:
|
|
161
|
-
color:
|
|
159
|
+
background: var(--sa-color-warning-surface);
|
|
160
|
+
border-color: var(--sa-color-warning-border);
|
|
161
|
+
color: var(--sa-color-warning-fg);
|
|
162
162
|
}
|
|
163
163
|
.bv-status-superseded {
|
|
164
|
-
background: var(--sa-border-soft);
|
|
165
|
-
border-color:
|
|
166
|
-
color: var(--sa-
|
|
164
|
+
background: var(--sa-color-border-soft);
|
|
165
|
+
border-color: var(--sa-color-border-strong);
|
|
166
|
+
color: var(--sa-color-fg-secondary);
|
|
167
167
|
}
|
|
168
168
|
.bv-status-draft {
|
|
169
|
-
background: var(--sa-
|
|
170
|
-
border-color:
|
|
171
|
-
color:
|
|
169
|
+
background: var(--sa-color-accent-surface-strong);
|
|
170
|
+
border-color: var(--sa-color-info-border);
|
|
171
|
+
color: var(--sa-color-info-fg);
|
|
172
172
|
}
|
|
173
173
|
.bv-status-icon {
|
|
174
174
|
flex: 0 0 auto;
|
|
@@ -179,11 +179,11 @@ const supersededTail = computed(() =>
|
|
|
179
179
|
min-width: 0;
|
|
180
180
|
}
|
|
181
181
|
.bv-status-warn {
|
|
182
|
-
color:
|
|
182
|
+
color: var(--sa-color-warning-fg);
|
|
183
183
|
font-weight: 500;
|
|
184
184
|
}
|
|
185
185
|
.bv-status-ok {
|
|
186
|
-
color:
|
|
186
|
+
color: var(--sa-color-positive-fg);
|
|
187
187
|
font-weight: 500;
|
|
188
188
|
}
|
|
189
189
|
.bv-status-discard {
|
|
@@ -191,16 +191,16 @@ const supersededTail = computed(() =>
|
|
|
191
191
|
align-items: center;
|
|
192
192
|
gap: 5px;
|
|
193
193
|
padding: 6px 10px;
|
|
194
|
-
background:
|
|
195
|
-
border: 1px solid var(--sa-border);
|
|
194
|
+
background: var(--sa-color-bg-surface);
|
|
195
|
+
border: 1px solid var(--sa-color-border);
|
|
196
196
|
border-radius: 6px;
|
|
197
197
|
cursor: pointer;
|
|
198
|
-
font-size:
|
|
199
|
-
color:
|
|
198
|
+
font-size: var(--sa-text-sm);
|
|
199
|
+
color: var(--sa-color-negative-fg);
|
|
200
200
|
font-family: inherit;
|
|
201
201
|
}
|
|
202
202
|
.bv-status-discard:hover {
|
|
203
|
-
background:
|
|
204
|
-
border-color:
|
|
203
|
+
background: var(--sa-color-negative-surface);
|
|
204
|
+
border-color: var(--sa-color-negative-border);
|
|
205
205
|
}
|
|
206
206
|
</style>
|