@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
|
@@ -265,6 +265,7 @@
|
|
|
265
265
|
|
|
266
266
|
<script setup lang="ts">
|
|
267
267
|
import { computed } from 'vue';
|
|
268
|
+
import { identityChipStyle } from '../../client/identity-accents.js';
|
|
268
269
|
import { formatMessage } from '../../client/i18n/format.js';
|
|
269
270
|
import { useSaMessages } from '../../vue/use-super-admin-i18n.js';
|
|
270
271
|
import type { PromoCodeDurationType, PromoCodePlanOption, PromoCodeValueType } from './types.js';
|
|
@@ -376,7 +377,7 @@ function togglePlan(key: string): void {
|
|
|
376
377
|
|
|
377
378
|
function planChipStyle(p: PromoCodePlanOption): Record<string, string> {
|
|
378
379
|
if (!isPlanSelected(p.key) || !p.color) return {};
|
|
379
|
-
return {
|
|
380
|
+
return { ...identityChipStyle(p.color), borderColor: p.color };
|
|
380
381
|
}
|
|
381
382
|
|
|
382
383
|
const previewValue = computed(() => {
|
|
@@ -408,17 +409,17 @@ const advancedOpen = defineModel<boolean>('advancedOpen', { default: false });
|
|
|
408
409
|
|
|
409
410
|
<style scoped>
|
|
410
411
|
.pc-section {
|
|
411
|
-
border: 1px solid var(--sa-
|
|
412
|
+
border: 1px solid var(--sa-color-border);
|
|
412
413
|
border-radius: 10px;
|
|
413
414
|
padding: 14px 16px;
|
|
414
|
-
background:
|
|
415
|
+
background: var(--sa-color-bg-surface-raised);
|
|
415
416
|
}
|
|
416
417
|
|
|
417
418
|
.pc-section__title {
|
|
418
419
|
font-family: var(--sa-font-head, system-ui, sans-serif);
|
|
419
420
|
font-weight: 700;
|
|
420
|
-
font-size:
|
|
421
|
-
color: var(--sa-
|
|
421
|
+
font-size: var(--sa-text-md);
|
|
422
|
+
color: var(--sa-color-fg-heading);
|
|
422
423
|
margin-bottom: 12px;
|
|
423
424
|
letter-spacing: -0.005em;
|
|
424
425
|
}
|
|
@@ -427,8 +428,8 @@ const advancedOpen = defineModel<boolean>('advancedOpen', { default: false });
|
|
|
427
428
|
border: 0;
|
|
428
429
|
background: transparent;
|
|
429
430
|
cursor: pointer;
|
|
430
|
-
font: 600
|
|
431
|
-
color: var(--sa-
|
|
431
|
+
font: 600 var(--sa-text-md) var(--sa-font-body, system-ui, sans-serif);
|
|
432
|
+
color: var(--sa-color-fg-secondary);
|
|
432
433
|
display: inline-flex;
|
|
433
434
|
align-items: center;
|
|
434
435
|
gap: 4px;
|
|
@@ -452,7 +453,7 @@ const advancedOpen = defineModel<boolean>('advancedOpen', { default: false });
|
|
|
452
453
|
grid-template-columns: 1fr 1fr;
|
|
453
454
|
}
|
|
454
455
|
|
|
455
|
-
@media (max-width:
|
|
456
|
+
@media (max-width: 599.98px) {
|
|
456
457
|
.pc-grid--2 {
|
|
457
458
|
grid-template-columns: 1fr;
|
|
458
459
|
}
|
|
@@ -469,42 +470,42 @@ const advancedOpen = defineModel<boolean>('advancedOpen', { default: false });
|
|
|
469
470
|
}
|
|
470
471
|
|
|
471
472
|
.pc-field__label {
|
|
472
|
-
font-size:
|
|
473
|
+
font-size: var(--sa-text-sm);
|
|
473
474
|
font-weight: 600;
|
|
474
|
-
color: var(--sa-
|
|
475
|
+
color: var(--sa-color-fg-muted);
|
|
475
476
|
text-transform: uppercase;
|
|
476
477
|
letter-spacing: 0.04em;
|
|
477
478
|
}
|
|
478
479
|
|
|
479
480
|
.pc-field__hint {
|
|
480
|
-
font-size:
|
|
481
|
-
color: var(--sa-
|
|
481
|
+
font-size: var(--sa-text-sm);
|
|
482
|
+
color: var(--sa-color-fg-subtle);
|
|
482
483
|
}
|
|
483
484
|
|
|
484
485
|
.pc-input {
|
|
485
486
|
width: 100%;
|
|
486
|
-
border: 1px solid var(--sa-
|
|
487
|
-
background:
|
|
487
|
+
border: 1px solid var(--sa-color-border);
|
|
488
|
+
background: var(--sa-color-bg-surface);
|
|
488
489
|
border-radius: 7px;
|
|
489
490
|
padding: 8px 10px;
|
|
490
|
-
font:
|
|
491
|
-
color: var(--sa-body
|
|
491
|
+
font: var(--sa-text-md) var(--sa-font-body, system-ui, sans-serif);
|
|
492
|
+
color: var(--sa-color-fg-body);
|
|
492
493
|
outline: 0;
|
|
493
494
|
}
|
|
494
495
|
|
|
495
496
|
.pc-input:focus {
|
|
496
|
-
border-color: var(--sa-
|
|
497
|
-
box-shadow: 0 0 0 3px
|
|
497
|
+
border-color: var(--sa-color-accent);
|
|
498
|
+
box-shadow: 0 0 0 3px var(--sa-shadow-tint-3);
|
|
498
499
|
}
|
|
499
500
|
|
|
500
501
|
.pc-input--code {
|
|
501
|
-
font: 600
|
|
502
|
+
font: 600 var(--sa-text-lg) var(--sa-font-mono, ui-monospace, monospace);
|
|
502
503
|
letter-spacing: 0.04em;
|
|
503
504
|
text-transform: uppercase;
|
|
504
505
|
}
|
|
505
506
|
|
|
506
507
|
textarea.pc-input {
|
|
507
|
-
font:
|
|
508
|
+
font: var(--sa-text-md) var(--sa-font-body, system-ui, sans-serif);
|
|
508
509
|
resize: vertical;
|
|
509
510
|
}
|
|
510
511
|
|
|
@@ -515,17 +516,17 @@ textarea.pc-input {
|
|
|
515
516
|
}
|
|
516
517
|
|
|
517
518
|
.pc-btn-mini {
|
|
518
|
-
border: 1px solid var(--sa-
|
|
519
|
-
background:
|
|
519
|
+
border: 1px solid var(--sa-color-border);
|
|
520
|
+
background: var(--sa-color-bg-surface);
|
|
520
521
|
border-radius: 7px;
|
|
521
522
|
padding: 6px 10px;
|
|
522
|
-
font: 500
|
|
523
|
+
font: 500 var(--sa-text-sm) var(--sa-font-body, system-ui, sans-serif);
|
|
523
524
|
cursor: pointer;
|
|
524
|
-
color: var(--sa-
|
|
525
|
+
color: var(--sa-color-fg-secondary);
|
|
525
526
|
}
|
|
526
527
|
|
|
527
528
|
.pc-btn-mini:hover {
|
|
528
|
-
background: var(--sa-border-soft);
|
|
529
|
+
background: var(--sa-color-border-soft);
|
|
529
530
|
}
|
|
530
531
|
|
|
531
532
|
.pc-type-grid {
|
|
@@ -535,8 +536,8 @@ textarea.pc-input {
|
|
|
535
536
|
}
|
|
536
537
|
|
|
537
538
|
.pc-type-opt {
|
|
538
|
-
border: 1px solid var(--sa-
|
|
539
|
-
background:
|
|
539
|
+
border: 1px solid var(--sa-color-border);
|
|
540
|
+
background: var(--sa-color-bg-surface);
|
|
540
541
|
border-radius: 8px;
|
|
541
542
|
padding: 8px 10px;
|
|
542
543
|
text-align: left;
|
|
@@ -547,22 +548,22 @@ textarea.pc-input {
|
|
|
547
548
|
}
|
|
548
549
|
|
|
549
550
|
.pc-type-opt:hover {
|
|
550
|
-
border-color:
|
|
551
|
+
border-color: var(--sa-color-border-strong);
|
|
551
552
|
}
|
|
552
553
|
|
|
553
554
|
.pc-type-opt--active {
|
|
554
|
-
border-color: var(--sa-
|
|
555
|
-
background: var(--sa-
|
|
555
|
+
border-color: var(--sa-color-accent);
|
|
556
|
+
background: var(--sa-color-accent-surface);
|
|
556
557
|
}
|
|
557
558
|
|
|
558
559
|
.pc-type-opt__label {
|
|
559
|
-
font: 600
|
|
560
|
-
color: var(--sa-
|
|
560
|
+
font: 600 var(--sa-text-md) var(--sa-font-body, system-ui, sans-serif);
|
|
561
|
+
color: var(--sa-color-fg-heading);
|
|
561
562
|
}
|
|
562
563
|
|
|
563
564
|
.pc-type-opt__sub {
|
|
564
|
-
font:
|
|
565
|
-
color: var(--sa-
|
|
565
|
+
font: var(--sa-text-sm) var(--sa-font-mono, ui-monospace, monospace);
|
|
566
|
+
color: var(--sa-color-fg-muted);
|
|
566
567
|
margin-top: 1px;
|
|
567
568
|
}
|
|
568
569
|
|
|
@@ -576,26 +577,26 @@ textarea.pc-input {
|
|
|
576
577
|
display: inline-flex;
|
|
577
578
|
align-items: center;
|
|
578
579
|
gap: 8px;
|
|
579
|
-
background:
|
|
580
|
-
border: 1px solid var(--sa-
|
|
580
|
+
background: var(--sa-color-bg-surface);
|
|
581
|
+
border: 1px solid var(--sa-color-border);
|
|
581
582
|
border-radius: 999px;
|
|
582
583
|
padding: 5px 12px 5px 8px;
|
|
583
|
-
font: 600
|
|
584
|
+
font: 600 var(--sa-text-sm) var(--sa-font-body, system-ui, sans-serif);
|
|
584
585
|
cursor: pointer;
|
|
585
|
-
color: var(--sa-
|
|
586
|
+
color: var(--sa-color-fg-secondary);
|
|
586
587
|
transition:
|
|
587
588
|
border-color 0.1s,
|
|
588
589
|
background 0.1s;
|
|
589
590
|
}
|
|
590
591
|
|
|
591
592
|
.pc-plan-opt:hover {
|
|
592
|
-
border-color:
|
|
593
|
+
border-color: var(--sa-color-border-strong);
|
|
593
594
|
}
|
|
594
595
|
|
|
595
596
|
.pc-plan-opt--on {
|
|
596
|
-
border-color: var(--sa-
|
|
597
|
-
background: var(--sa-
|
|
598
|
-
color: var(--sa-
|
|
597
|
+
border-color: var(--sa-color-accent);
|
|
598
|
+
background: var(--sa-color-accent-surface);
|
|
599
|
+
color: var(--sa-color-accent);
|
|
599
600
|
}
|
|
600
601
|
|
|
601
602
|
.pc-plan-opt__mark {
|
|
@@ -611,41 +612,41 @@ textarea.pc-input {
|
|
|
611
612
|
|
|
612
613
|
.pc-dur-opt {
|
|
613
614
|
flex: 1;
|
|
614
|
-
border: 1px solid var(--sa-
|
|
615
|
-
background:
|
|
615
|
+
border: 1px solid var(--sa-color-border);
|
|
616
|
+
background: var(--sa-color-bg-surface);
|
|
616
617
|
border-radius: 7px;
|
|
617
618
|
padding: 6px 10px;
|
|
618
|
-
font: 500
|
|
619
|
+
font: 500 var(--sa-text-sm) var(--sa-font-body, system-ui, sans-serif);
|
|
619
620
|
cursor: pointer;
|
|
620
|
-
color: var(--sa-
|
|
621
|
+
color: var(--sa-color-fg-secondary);
|
|
621
622
|
}
|
|
622
623
|
|
|
623
624
|
.pc-dur-opt--active {
|
|
624
|
-
border-color: var(--sa-
|
|
625
|
-
background: var(--sa-
|
|
626
|
-
color: var(--sa-
|
|
625
|
+
border-color: var(--sa-color-accent);
|
|
626
|
+
background: var(--sa-color-accent-surface);
|
|
627
|
+
color: var(--sa-color-accent);
|
|
627
628
|
}
|
|
628
629
|
|
|
629
630
|
.pc-check {
|
|
630
631
|
display: inline-flex;
|
|
631
632
|
align-items: center;
|
|
632
633
|
gap: 8px;
|
|
633
|
-
font:
|
|
634
|
-
color: var(--sa-body
|
|
634
|
+
font: var(--sa-text-md) var(--sa-font-body, system-ui, sans-serif);
|
|
635
|
+
color: var(--sa-color-fg-body);
|
|
635
636
|
cursor: pointer;
|
|
636
637
|
}
|
|
637
638
|
|
|
638
639
|
.pc-preview {
|
|
639
|
-
background: var(--sa-
|
|
640
|
-
border: 1px solid var(--sa-
|
|
640
|
+
background: var(--sa-color-accent-surface-soft);
|
|
641
|
+
border: 1px solid var(--sa-color-accent-border);
|
|
641
642
|
border-radius: 10px;
|
|
642
643
|
padding: 12px 14px;
|
|
643
644
|
}
|
|
644
645
|
|
|
645
646
|
.pc-preview__eyebrow {
|
|
646
|
-
font-size:
|
|
647
|
+
font-size: var(--sa-text-xs);
|
|
647
648
|
font-weight: 700;
|
|
648
|
-
color: var(--sa-
|
|
649
|
+
color: var(--sa-color-accent);
|
|
649
650
|
text-transform: uppercase;
|
|
650
651
|
letter-spacing: 0.06em;
|
|
651
652
|
margin-bottom: 6px;
|
|
@@ -659,22 +660,22 @@ textarea.pc-input {
|
|
|
659
660
|
}
|
|
660
661
|
|
|
661
662
|
.pc-preview__code {
|
|
662
|
-
background:
|
|
663
|
-
border: 1px solid var(--sa-
|
|
663
|
+
background: var(--sa-color-bg-surface);
|
|
664
|
+
border: 1px solid var(--sa-color-border);
|
|
664
665
|
border-radius: 6px;
|
|
665
666
|
padding: 3px 8px;
|
|
666
|
-
font: 600
|
|
667
|
+
font: 600 var(--sa-text-md) var(--sa-font-mono, ui-monospace, monospace);
|
|
667
668
|
letter-spacing: 0.04em;
|
|
668
|
-
color: var(--sa-
|
|
669
|
+
color: var(--sa-color-fg-heading);
|
|
669
670
|
}
|
|
670
671
|
|
|
671
672
|
.pc-preview__disc {
|
|
672
|
-
font: 700
|
|
673
|
-
color: var(--sa-positive
|
|
673
|
+
font: 700 var(--sa-text-md) var(--sa-font-body, system-ui, sans-serif);
|
|
674
|
+
color: var(--sa-color-positive-fg);
|
|
674
675
|
}
|
|
675
676
|
|
|
676
677
|
.pc-preview__meta {
|
|
677
|
-
font-size:
|
|
678
|
-
color: var(--sa-
|
|
678
|
+
font-size: var(--sa-text-sm);
|
|
679
|
+
color: var(--sa-color-fg-muted);
|
|
679
680
|
}
|
|
680
681
|
</style>
|
|
@@ -303,13 +303,13 @@ async function onSubmit() {
|
|
|
303
303
|
.pc-dlg__title {
|
|
304
304
|
font-family: var(--sa-font-head, system-ui, sans-serif);
|
|
305
305
|
font-weight: 700;
|
|
306
|
-
font-size:
|
|
307
|
-
color: var(--sa-
|
|
306
|
+
font-size: var(--sa-text-xl);
|
|
307
|
+
color: var(--sa-color-fg-heading);
|
|
308
308
|
}
|
|
309
309
|
|
|
310
310
|
.pc-dlg__sub {
|
|
311
|
-
font-size:
|
|
312
|
-
color: var(--sa-
|
|
311
|
+
font-size: var(--sa-text-md);
|
|
312
|
+
color: var(--sa-color-fg-muted);
|
|
313
313
|
margin-top: 2px;
|
|
314
314
|
}
|
|
315
315
|
|
|
@@ -321,14 +321,14 @@ async function onSubmit() {
|
|
|
321
321
|
}
|
|
322
322
|
|
|
323
323
|
.pc-dlg__foot {
|
|
324
|
-
border-top: 1px solid var(--sa-
|
|
324
|
+
border-top: 1px solid var(--sa-color-border);
|
|
325
325
|
}
|
|
326
326
|
|
|
327
327
|
.pc-error {
|
|
328
|
-
background:
|
|
329
|
-
border: 1px solid
|
|
330
|
-
color:
|
|
331
|
-
font-size:
|
|
328
|
+
background: var(--sa-color-negative-surface);
|
|
329
|
+
border: 1px solid var(--sa-color-negative-border);
|
|
330
|
+
color: var(--sa-color-negative-fg);
|
|
331
|
+
font-size: var(--sa-text-md);
|
|
332
332
|
margin: 8px 0 0;
|
|
333
333
|
padding: 8px 12px;
|
|
334
334
|
border-radius: 8px;
|
|
@@ -336,8 +336,8 @@ async function onSubmit() {
|
|
|
336
336
|
|
|
337
337
|
/* The code cannot be changed after creation. */
|
|
338
338
|
.pc-input:disabled {
|
|
339
|
-
background: var(--sa-bg-
|
|
340
|
-
color: var(--sa-muted);
|
|
339
|
+
background: var(--sa-color-bg-sunken);
|
|
340
|
+
color: var(--sa-color-fg-muted);
|
|
341
341
|
cursor: not-allowed;
|
|
342
342
|
}
|
|
343
343
|
</style>
|
|
@@ -13,14 +13,14 @@
|
|
|
13
13
|
align-items: flex-start;
|
|
14
14
|
gap: 16px;
|
|
15
15
|
padding: 18px 22px 14px;
|
|
16
|
-
border-bottom: 1px solid var(--sa-border
|
|
16
|
+
border-bottom: 1px solid var(--sa-color-border);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
.pl-dlg__title {
|
|
20
20
|
font-family: var(--sa-font-head, system-ui, sans-serif);
|
|
21
21
|
font-weight: 700;
|
|
22
|
-
font-size:
|
|
23
|
-
color: var(--sa-heading
|
|
22
|
+
font-size: var(--sa-text-xl);
|
|
23
|
+
color: var(--sa-color-fg-heading);
|
|
24
24
|
letter-spacing: -0.015em;
|
|
25
25
|
}
|
|
26
26
|
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
.pl-dlg__foot {
|
|
32
|
-
border-top: 1px solid var(--sa-border
|
|
33
|
-
background:
|
|
32
|
+
border-top: 1px solid var(--sa-color-border);
|
|
33
|
+
background: var(--sa-color-bg-surface-raised);
|
|
34
34
|
padding: 12px 18px;
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -44,42 +44,42 @@
|
|
|
44
44
|
gap: 12px;
|
|
45
45
|
margin-bottom: 12px;
|
|
46
46
|
padding-bottom: 10px;
|
|
47
|
-
border-bottom: 1px solid
|
|
47
|
+
border-bottom: 1px solid var(--sa-color-border-soft);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
.pl-section__num {
|
|
51
51
|
width: 24px;
|
|
52
52
|
height: 24px;
|
|
53
|
-
background:
|
|
54
|
-
color:
|
|
53
|
+
background: var(--sa-color-info-surface);
|
|
54
|
+
color: var(--sa-color-info-fg);
|
|
55
55
|
border-radius: 50%;
|
|
56
|
-
font: 700
|
|
56
|
+
font: 700 var(--sa-text-sm) var(--sa-font-body, system-ui, sans-serif);
|
|
57
57
|
display: grid;
|
|
58
58
|
place-items: center;
|
|
59
59
|
flex: 0 0 auto;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
.pl-section__title {
|
|
63
|
-
font-size:
|
|
63
|
+
font-size: var(--sa-text-md);
|
|
64
64
|
font-weight: 700;
|
|
65
|
-
color: var(--sa-heading
|
|
65
|
+
color: var(--sa-color-fg-heading);
|
|
66
66
|
letter-spacing: -0.005em;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
.pl-section__sub {
|
|
70
|
-
font-size:
|
|
71
|
-
color:
|
|
70
|
+
font-size: var(--sa-text-sm);
|
|
71
|
+
color: var(--sa-color-fg-subtle);
|
|
72
72
|
margin-top: 2px;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
.pl-input {
|
|
76
76
|
width: 100%;
|
|
77
77
|
padding: 9px 12px;
|
|
78
|
-
background:
|
|
79
|
-
border: 1px solid var(--sa-border
|
|
78
|
+
background: var(--sa-color-bg-surface);
|
|
79
|
+
border: 1px solid var(--sa-color-border);
|
|
80
80
|
border-radius: 8px;
|
|
81
|
-
font:
|
|
82
|
-
color: var(--sa-body
|
|
81
|
+
font: var(--sa-text-md) var(--sa-font-body, system-ui, sans-serif);
|
|
82
|
+
color: var(--sa-color-fg-body);
|
|
83
83
|
outline: 0;
|
|
84
84
|
transition:
|
|
85
85
|
border-color 0.12s,
|
|
@@ -87,8 +87,8 @@
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
.pl-input:focus {
|
|
90
|
-
border-color: var(--sa-
|
|
91
|
-
box-shadow: 0 0 0 3px
|
|
90
|
+
border-color: var(--sa-color-accent);
|
|
91
|
+
box-shadow: 0 0 0 3px var(--sa-shadow-tint-3);
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
.pl-plan-select {
|
|
@@ -102,8 +102,8 @@
|
|
|
102
102
|
align-items: center;
|
|
103
103
|
gap: 10px;
|
|
104
104
|
padding: 8px 11px;
|
|
105
|
-
background:
|
|
106
|
-
border: 1px solid var(--sa-border
|
|
105
|
+
background: var(--sa-color-bg-surface);
|
|
106
|
+
border: 1px solid var(--sa-color-border);
|
|
107
107
|
border-radius: 8px;
|
|
108
108
|
cursor: pointer;
|
|
109
109
|
text-align: left;
|
|
@@ -114,14 +114,14 @@
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
.pl-plan-opt:hover {
|
|
117
|
-
border-color:
|
|
118
|
-
background:
|
|
117
|
+
border-color: var(--sa-color-info-border);
|
|
118
|
+
background: var(--sa-color-accent-surface-soft);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
.pl-plan-opt--active {
|
|
122
|
-
border-color: var(--sa-
|
|
123
|
-
background:
|
|
124
|
-
box-shadow: 0 0 0 1px var(--sa-
|
|
122
|
+
border-color: var(--sa-color-info);
|
|
123
|
+
background: var(--sa-color-info-surface);
|
|
124
|
+
box-shadow: 0 0 0 1px var(--sa-color-info) inset;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
.pl-plan-opt__dot {
|
|
@@ -139,19 +139,19 @@
|
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
.pl-plan-opt__key {
|
|
142
|
-
font: 700
|
|
142
|
+
font: 700 var(--sa-text-xs) var(--sa-font-mono, ui-monospace, monospace);
|
|
143
143
|
letter-spacing: 0.05em;
|
|
144
|
-
color: var(--sa-heading
|
|
144
|
+
color: var(--sa-color-fg-heading);
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
.pl-plan-opt__label {
|
|
148
|
-
font-size:
|
|
149
|
-
color: var(--sa-muted
|
|
148
|
+
font-size: var(--sa-text-xs);
|
|
149
|
+
color: var(--sa-color-fg-muted);
|
|
150
150
|
margin-top: 1px;
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
.pl-plan-opt__check {
|
|
154
|
-
color:
|
|
154
|
+
color: var(--sa-color-info-fg);
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
.pl-end-row {
|
|
@@ -169,18 +169,18 @@
|
|
|
169
169
|
align-items: center;
|
|
170
170
|
gap: 4px;
|
|
171
171
|
padding: 7px 10px;
|
|
172
|
-
background:
|
|
173
|
-
border: 1px solid var(--sa-border
|
|
172
|
+
background: var(--sa-color-bg-surface);
|
|
173
|
+
border: 1px solid var(--sa-color-border);
|
|
174
174
|
border-radius: 7px;
|
|
175
|
-
color: var(--sa-
|
|
176
|
-
font: 500
|
|
175
|
+
color: var(--sa-color-fg-secondary);
|
|
176
|
+
font: 500 var(--sa-text-sm) var(--sa-font-body, system-ui, sans-serif);
|
|
177
177
|
cursor: pointer;
|
|
178
178
|
white-space: nowrap;
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
.pl-btn-mini:hover {
|
|
182
|
-
background:
|
|
183
|
-
border-color:
|
|
182
|
+
background: var(--sa-color-bg-sunken);
|
|
183
|
+
border-color: var(--sa-color-border-strong);
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
.pl-end-presets {
|
|
@@ -192,11 +192,11 @@
|
|
|
192
192
|
|
|
193
193
|
.pl-preset-btn {
|
|
194
194
|
padding: 4px 9px;
|
|
195
|
-
background:
|
|
196
|
-
border: 1px dashed
|
|
195
|
+
background: var(--sa-color-bg-surface);
|
|
196
|
+
border: 1px dashed var(--sa-color-border-strong);
|
|
197
197
|
border-radius: 999px;
|
|
198
|
-
font: 600
|
|
199
|
-
color: var(--sa-
|
|
198
|
+
font: 600 var(--sa-text-xs) var(--sa-font-body, system-ui, sans-serif);
|
|
199
|
+
color: var(--sa-color-fg-secondary);
|
|
200
200
|
cursor: pointer;
|
|
201
201
|
transition:
|
|
202
202
|
background 0.12s,
|
|
@@ -205,17 +205,17 @@
|
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
.pl-preset-btn:hover {
|
|
208
|
-
background:
|
|
209
|
-
border-color:
|
|
208
|
+
background: var(--sa-color-info-surface);
|
|
209
|
+
border-color: var(--sa-color-info-border);
|
|
210
210
|
border-style: solid;
|
|
211
|
-
color:
|
|
211
|
+
color: var(--sa-color-info-fg);
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
.pl-error {
|
|
215
|
-
background:
|
|
216
|
-
border: 1px solid
|
|
217
|
-
color:
|
|
218
|
-
font-size:
|
|
215
|
+
background: var(--sa-color-negative-surface);
|
|
216
|
+
border: 1px solid var(--sa-color-negative-border);
|
|
217
|
+
color: var(--sa-color-negative-fg);
|
|
218
|
+
font-size: var(--sa-text-md);
|
|
219
219
|
margin: 12px 0 0;
|
|
220
220
|
padding: 8px 12px;
|
|
221
221
|
border-radius: 8px;
|
|
@@ -61,28 +61,21 @@ const labels = computed(() => ({
|
|
|
61
61
|
<style scoped>
|
|
62
62
|
.sp-cycle {
|
|
63
63
|
display: inline-flex;
|
|
64
|
-
|
|
65
|
-
--sp-cycle-
|
|
66
|
-
--sp-cycle-btn-
|
|
67
|
-
--sp-cycle-btn-active-
|
|
68
|
-
--sp-cycle-btn-active-fg: var(--q-primary, #0f766e);
|
|
64
|
+
--sp-cycle-bg: var(--sa-color-accent-surface-soft);
|
|
65
|
+
--sp-cycle-btn-fg: var(--sa-color-fg-muted);
|
|
66
|
+
--sp-cycle-btn-active-bg: var(--sa-color-bg-surface);
|
|
67
|
+
--sp-cycle-btn-active-fg: var(--sa-color-accent);
|
|
69
68
|
background: var(--sp-cycle-bg);
|
|
70
69
|
border-radius: 12px;
|
|
71
70
|
padding: 3px;
|
|
72
71
|
gap: 2px;
|
|
73
72
|
}
|
|
74
|
-
:global(.body--dark) .sp-cycle {
|
|
75
|
-
--sp-cycle-bg: rgba(255, 255, 255, 0.08);
|
|
76
|
-
--sp-cycle-btn-fg: rgba(255, 255, 255, 0.7);
|
|
77
|
-
--sp-cycle-btn-active-bg: rgba(255, 255, 255, 0.92);
|
|
78
|
-
--sp-cycle-btn-active-fg: var(--q-primary, #0f766e);
|
|
79
|
-
}
|
|
80
73
|
.sp-cycle__btn {
|
|
81
74
|
padding: 8px 14px;
|
|
82
75
|
border: none;
|
|
83
76
|
background: none;
|
|
84
77
|
font-family: inherit;
|
|
85
|
-
font-size:
|
|
78
|
+
font-size: var(--sa-text-sm);
|
|
86
79
|
font-weight: 700;
|
|
87
80
|
color: var(--sp-cycle-btn-fg);
|
|
88
81
|
cursor: pointer;
|
|
@@ -96,12 +89,12 @@ const labels = computed(() => ({
|
|
|
96
89
|
.sp-cycle__btn--active {
|
|
97
90
|
background: var(--sp-cycle-btn-active-bg);
|
|
98
91
|
color: var(--sp-cycle-btn-active-fg);
|
|
99
|
-
box-shadow: 0 2px 8px
|
|
92
|
+
box-shadow: 0 2px 8px var(--sa-shadow-tint-3);
|
|
100
93
|
}
|
|
101
94
|
.sp-cycle__pill {
|
|
102
|
-
background:
|
|
103
|
-
color:
|
|
104
|
-
font-size:
|
|
95
|
+
background: var(--sa-color-positive-surface-strong);
|
|
96
|
+
color: var(--sa-color-positive-fg);
|
|
97
|
+
font-size: var(--sa-text-2xs);
|
|
105
98
|
padding: 2px 7px;
|
|
106
99
|
border-radius: 999px;
|
|
107
100
|
font-family: 'SF Mono', Consolas, monospace;
|