@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.
Files changed (108) hide show
  1. package/README.md +1 -1
  2. package/dist/{chunk-LY52T4N4.js → chunk-TQQMKWN6.js} +58 -1
  3. package/dist/index.cjs +213 -159
  4. package/dist/index.d.cts +2 -2
  5. package/dist/index.d.ts +2 -2
  6. package/dist/index.js +7 -1
  7. package/dist/quasar/index.cjs +116 -20
  8. package/dist/quasar/index.d.cts +48 -3
  9. package/dist/quasar/index.d.ts +48 -3
  10. package/dist/quasar/index.js +58 -3
  11. package/dist/{use-super-admin-i18n-CgTuNi8h.d.cts → use-sa-theme-B5t7oXph.d.cts} +51 -1
  12. package/dist/{use-super-admin-i18n-CHNdsSlm.d.ts → use-sa-theme-OUBlaqgl.d.ts} +51 -1
  13. package/package.json +5 -2
  14. package/src/components/BundleVersionPublishDialog.vue +17 -17
  15. package/src/components/KvBlock.vue +6 -6
  16. package/src/components/MarketingPromotionsTab.vue +78 -78
  17. package/src/components/MfaPromptDialog.vue +2 -2
  18. package/src/components/TenantActionConfirmDialog.vue +5 -5
  19. package/src/components/VersionDiffPreview.vue +18 -18
  20. package/src/components/bundle-editor/BundleCreatePanel.vue +52 -52
  21. package/src/components/bundle-editor/BundleFeaturesEditor.vue +20 -20
  22. package/src/components/bundle-editor/BundlePlanCompatPicker.vue +33 -33
  23. package/src/components/bundle-editor/BundleQuotasEditor.vue +26 -26
  24. package/src/components/bundle-editor/BundleStatusBanner.vue +21 -21
  25. package/src/components/bundle-editor/BundleVersionInlineEditor.vue +48 -48
  26. package/src/components/bundle-editor/BundleVersionStrip.vue +30 -30
  27. package/src/components/dialogs/PilotCreateDialog.vue +20 -20
  28. package/src/components/dialogs/PilotEditDialog.vue +6 -6
  29. package/src/components/dialogs/PromoCodeCreateDialog.vue +9 -9
  30. package/src/components/dialogs/PromoCodeDialogFields.vue +61 -61
  31. package/src/components/dialogs/PromoCodeEditDialog.vue +11 -11
  32. package/src/components/dialogs/pilot-dialog.css +48 -48
  33. package/src/components/plan/PlanCycleToggle.vue +9 -16
  34. package/src/components/plan/PlanGrid.vue +30 -34
  35. package/src/components/plan/PriceSummary.vue +35 -35
  36. package/src/components/plan/PromoCodeInput.vue +26 -26
  37. package/src/components/plan/PublicBundleGrid.vue +32 -28
  38. package/src/components/plan-create-dialog/PlanCreateDialog.vue +49 -49
  39. package/src/components/plan-detail/PlanDetail.vue +172 -156
  40. package/src/components/plan-detail/PlanTitleEdit.vue +11 -11
  41. package/src/components/plan-list/PlanList.vue +98 -77
  42. package/src/components/plan-matrix/PlanMatrix.vue +89 -89
  43. package/src/components/plan-review/PlanReview.vue +60 -56
  44. package/src/components/plan-version-editor/PlanVersionEditor.vue +224 -200
  45. package/src/components/wizard-stepper/WizardStepper.vue +17 -17
  46. package/src/index.ts +1 -0
  47. package/src/pages-standard/AdminLayout.vue +58 -37
  48. package/src/pages-standard/AdminManifestErrorPage.vue +6 -6
  49. package/src/pages-standard/AuditPage.vue +3 -3
  50. package/src/pages-standard/BundlesPage.vue +36 -36
  51. package/src/pages-standard/DashboardPage.vue +17 -17
  52. package/src/pages-standard/DiscoveryPage.vue +55 -49
  53. package/src/pages-standard/EmailHistoryPage.vue +53 -71
  54. package/src/pages-standard/MarketingCatalogPage.vue +226 -218
  55. package/src/pages-standard/PilotsPage.vue +7 -6
  56. package/src/pages-standard/PlatformEmailPage.vue +18 -18
  57. package/src/pages-standard/PromoCodeDetailPage.vue +3 -3
  58. package/src/pages-standard/PromoCodesPage.vue +7 -6
  59. package/src/pages-standard/SuperAdminLoginPage.vue +39 -25
  60. package/src/pages-standard/SuperAdminSetupWizard.vue +44 -33
  61. package/src/pages-standard/TenantDetailPage.vue +7 -7
  62. package/src/pages-standard/TenantsPage.vue +11 -46
  63. package/src/pages-standard/bundles-page/BundleAccordionList.vue +13 -13
  64. package/src/pages-standard/discovery-page/CatalogEntryTransPanel.vue +24 -24
  65. package/src/pages-standard/discovery-page/DiscoveryCapList.vue +22 -22
  66. package/src/pages-standard/discovery-page/DiscoveryFeatureCard.vue +39 -39
  67. package/src/pages-standard/discovery-page/DiscoveryQuotaCard.vue +26 -26
  68. package/src/pages-standard/discovery-page/DiscoveryStatusControl.vue +1 -1
  69. package/src/pages-standard/plan-versions/PlanDiffCard.vue +16 -16
  70. package/src/pages-standard/plan-versions/PlanVersionsDiff.vue +21 -15
  71. package/src/pages-standard/plan-versions/PlanVersionsTimeline.vue +45 -45
  72. package/src/pages-standard/plans-page/PlanBundleOverview.vue +21 -15
  73. package/src/pages-standard/plans-page/PlanPublishDialog.vue +4 -4
  74. package/src/pages-standard/plans-page/PlansPageToast.vue +6 -6
  75. package/src/pages-standard/sa-theme.css +9 -687
  76. package/src/pages-standard/tenants/StatusPill.vue +13 -13
  77. package/src/pages-tenant/LimitsRow.vue +4 -4
  78. package/src/pages-tenant/MySubscriptionBundlesPage.vue +61 -61
  79. package/src/pages-tenant/OnboardingConfigurator.vue +24 -24
  80. package/src/pages-tenant/PackageSnapshotPanel.vue +10 -16
  81. package/src/pages-tenant/PendingVersionBanner.vue +12 -12
  82. package/src/pages-tenant/PlanChangeWizard.vue +20 -27
  83. package/src/pages-tenant/TenantPlanSection.vue +13 -21
  84. package/src/pages-tenant/UsageBar.vue +7 -7
  85. package/src/pages-tenant/tenant-plan-section/BundlePreviewDialog.vue +14 -14
  86. package/src/pages-tenant/tenant-plan-section/TenantBundleStore.vue +10 -10
  87. package/src/pages-tenant/tenant-plan-section/TenantFeatureMatrix.vue +2 -2
  88. package/src/quasar/create-super-admin-app.ts +96 -1
  89. package/src/quasar/dark-bridge.ts +66 -0
  90. package/src/quasar/index.ts +1 -0
  91. package/src/ui/theme/_breakpoints.scss +28 -0
  92. package/src/ui/theme/base.css +50 -0
  93. package/src/ui/theme/components/body.css +23 -0
  94. package/src/ui/theme/components/button.css +158 -0
  95. package/src/ui/theme/components/card.css +48 -0
  96. package/src/ui/theme/components/field.css +38 -0
  97. package/src/ui/theme/components/hero.css +46 -0
  98. package/src/ui/theme/components/paginator.css +63 -0
  99. package/src/ui/theme/components/section.css +67 -0
  100. package/src/ui/theme/components/statistics.css +189 -0
  101. package/src/ui/theme/components/table.css +60 -0
  102. package/src/ui/theme/index.css +42 -0
  103. package/src/ui/theme/tokens.legacy.css +147 -0
  104. package/src/ui/theme/tokens.primitive.css +108 -0
  105. package/src/ui/theme/tokens.scale.css +103 -0
  106. package/src/ui/theme/tokens.semantic.dark.css +173 -0
  107. package/src/ui/theme/tokens.semantic.light.css +212 -0
  108. package/src/vue/use-sa-theme.ts +154 -0
@@ -408,17 +408,17 @@ const advancedOpen = defineModel<boolean>('advancedOpen', { default: false });
408
408
 
409
409
  <style scoped>
410
410
  .pc-section {
411
- border: 1px solid var(--sa-border, var(--sa-border));
411
+ border: 1px solid var(--sa-color-border);
412
412
  border-radius: 10px;
413
413
  padding: 14px 16px;
414
- background: #fafbfc;
414
+ background: var(--sa-color-bg-surface-raised);
415
415
  }
416
416
 
417
417
  .pc-section__title {
418
418
  font-family: var(--sa-font-head, system-ui, sans-serif);
419
419
  font-weight: 700;
420
- font-size: 13px;
421
- color: var(--sa-heading, var(--sa-heading));
420
+ font-size: var(--sa-text-md);
421
+ color: var(--sa-color-fg-heading);
422
422
  margin-bottom: 12px;
423
423
  letter-spacing: -0.005em;
424
424
  }
@@ -427,8 +427,8 @@ const advancedOpen = defineModel<boolean>('advancedOpen', { default: false });
427
427
  border: 0;
428
428
  background: transparent;
429
429
  cursor: pointer;
430
- font: 600 12.5px var(--sa-font-body, system-ui, sans-serif);
431
- color: var(--sa-muted-dark, var(--sa-muted-dark));
430
+ font: 600 var(--sa-text-md) var(--sa-font-body, system-ui, sans-serif);
431
+ color: var(--sa-color-fg-secondary);
432
432
  display: inline-flex;
433
433
  align-items: center;
434
434
  gap: 4px;
@@ -469,42 +469,42 @@ const advancedOpen = defineModel<boolean>('advancedOpen', { default: false });
469
469
  }
470
470
 
471
471
  .pc-field__label {
472
- font-size: 11.5px;
472
+ font-size: var(--sa-text-sm);
473
473
  font-weight: 600;
474
- color: var(--sa-muted, var(--sa-muted));
474
+ color: var(--sa-color-fg-muted);
475
475
  text-transform: uppercase;
476
476
  letter-spacing: 0.04em;
477
477
  }
478
478
 
479
479
  .pc-field__hint {
480
- font-size: 11.5px;
481
- color: var(--sa-muted-light);
480
+ font-size: var(--sa-text-sm);
481
+ color: var(--sa-color-fg-subtle);
482
482
  }
483
483
 
484
484
  .pc-input {
485
485
  width: 100%;
486
- border: 1px solid var(--sa-border, var(--sa-border));
487
- background: #fff;
486
+ border: 1px solid var(--sa-color-border);
487
+ background: var(--sa-color-bg-surface);
488
488
  border-radius: 7px;
489
489
  padding: 8px 10px;
490
- font: 13.5px var(--sa-font-body, system-ui, sans-serif);
491
- color: var(--sa-body, #1e293b);
490
+ font: var(--sa-text-md) var(--sa-font-body, system-ui, sans-serif);
491
+ color: var(--sa-color-fg-body);
492
492
  outline: 0;
493
493
  }
494
494
 
495
495
  .pc-input:focus {
496
- border-color: var(--sa-primary, #3f6bff);
497
- box-shadow: 0 0 0 3px rgba(63, 107, 255, 0.12);
496
+ border-color: var(--sa-color-accent);
497
+ box-shadow: 0 0 0 3px var(--sa-shadow-tint-3);
498
498
  }
499
499
 
500
500
  .pc-input--code {
501
- font: 600 14px var(--sa-font-mono, ui-monospace, monospace);
501
+ font: 600 var(--sa-text-lg) var(--sa-font-mono, ui-monospace, monospace);
502
502
  letter-spacing: 0.04em;
503
503
  text-transform: uppercase;
504
504
  }
505
505
 
506
506
  textarea.pc-input {
507
- font: 13.5px var(--sa-font-body, system-ui, sans-serif);
507
+ font: var(--sa-text-md) var(--sa-font-body, system-ui, sans-serif);
508
508
  resize: vertical;
509
509
  }
510
510
 
@@ -515,17 +515,17 @@ textarea.pc-input {
515
515
  }
516
516
 
517
517
  .pc-btn-mini {
518
- border: 1px solid var(--sa-border, var(--sa-border));
519
- background: #fff;
518
+ border: 1px solid var(--sa-color-border);
519
+ background: var(--sa-color-bg-surface);
520
520
  border-radius: 7px;
521
521
  padding: 6px 10px;
522
- font: 500 12px var(--sa-font-body, system-ui, sans-serif);
522
+ font: 500 var(--sa-text-sm) var(--sa-font-body, system-ui, sans-serif);
523
523
  cursor: pointer;
524
- color: var(--sa-muted-dark, var(--sa-muted-dark));
524
+ color: var(--sa-color-fg-secondary);
525
525
  }
526
526
 
527
527
  .pc-btn-mini:hover {
528
- background: var(--sa-border-soft);
528
+ background: var(--sa-color-border-soft);
529
529
  }
530
530
 
531
531
  .pc-type-grid {
@@ -535,8 +535,8 @@ textarea.pc-input {
535
535
  }
536
536
 
537
537
  .pc-type-opt {
538
- border: 1px solid var(--sa-border, var(--sa-border));
539
- background: #fff;
538
+ border: 1px solid var(--sa-color-border);
539
+ background: var(--sa-color-bg-surface);
540
540
  border-radius: 8px;
541
541
  padding: 8px 10px;
542
542
  text-align: left;
@@ -547,22 +547,22 @@ textarea.pc-input {
547
547
  }
548
548
 
549
549
  .pc-type-opt:hover {
550
- border-color: #cbd5e1;
550
+ border-color: var(--sa-color-border-strong);
551
551
  }
552
552
 
553
553
  .pc-type-opt--active {
554
- border-color: var(--sa-primary, #3f6bff);
555
- background: var(--sa-primary-soft, rgba(63, 107, 255, 0.08));
554
+ border-color: var(--sa-color-accent);
555
+ background: var(--sa-color-accent-surface);
556
556
  }
557
557
 
558
558
  .pc-type-opt__label {
559
- font: 600 12.5px var(--sa-font-body, system-ui, sans-serif);
560
- color: var(--sa-heading, var(--sa-heading));
559
+ font: 600 var(--sa-text-md) var(--sa-font-body, system-ui, sans-serif);
560
+ color: var(--sa-color-fg-heading);
561
561
  }
562
562
 
563
563
  .pc-type-opt__sub {
564
- font: 11.5px var(--sa-font-mono, ui-monospace, monospace);
565
- color: var(--sa-muted, var(--sa-muted));
564
+ font: var(--sa-text-sm) var(--sa-font-mono, ui-monospace, monospace);
565
+ color: var(--sa-color-fg-muted);
566
566
  margin-top: 1px;
567
567
  }
568
568
 
@@ -576,26 +576,26 @@ textarea.pc-input {
576
576
  display: inline-flex;
577
577
  align-items: center;
578
578
  gap: 8px;
579
- background: #fff;
580
- border: 1px solid var(--sa-border, var(--sa-border));
579
+ background: var(--sa-color-bg-surface);
580
+ border: 1px solid var(--sa-color-border);
581
581
  border-radius: 999px;
582
582
  padding: 5px 12px 5px 8px;
583
- font: 600 12px var(--sa-font-body, system-ui, sans-serif);
583
+ font: 600 var(--sa-text-sm) var(--sa-font-body, system-ui, sans-serif);
584
584
  cursor: pointer;
585
- color: var(--sa-muted-dark, var(--sa-muted-dark));
585
+ color: var(--sa-color-fg-secondary);
586
586
  transition:
587
587
  border-color 0.1s,
588
588
  background 0.1s;
589
589
  }
590
590
 
591
591
  .pc-plan-opt:hover {
592
- border-color: #cbd5e1;
592
+ border-color: var(--sa-color-border-strong);
593
593
  }
594
594
 
595
595
  .pc-plan-opt--on {
596
- border-color: var(--sa-primary, #3f6bff);
597
- background: var(--sa-primary-soft, rgba(63, 107, 255, 0.08));
598
- color: var(--sa-primary, #3f6bff);
596
+ border-color: var(--sa-color-accent);
597
+ background: var(--sa-color-accent-surface);
598
+ color: var(--sa-color-accent);
599
599
  }
600
600
 
601
601
  .pc-plan-opt__mark {
@@ -611,41 +611,41 @@ textarea.pc-input {
611
611
 
612
612
  .pc-dur-opt {
613
613
  flex: 1;
614
- border: 1px solid var(--sa-border, var(--sa-border));
615
- background: #fff;
614
+ border: 1px solid var(--sa-color-border);
615
+ background: var(--sa-color-bg-surface);
616
616
  border-radius: 7px;
617
617
  padding: 6px 10px;
618
- font: 500 12px var(--sa-font-body, system-ui, sans-serif);
618
+ font: 500 var(--sa-text-sm) var(--sa-font-body, system-ui, sans-serif);
619
619
  cursor: pointer;
620
- color: var(--sa-muted-dark, var(--sa-muted-dark));
620
+ color: var(--sa-color-fg-secondary);
621
621
  }
622
622
 
623
623
  .pc-dur-opt--active {
624
- border-color: var(--sa-primary, #3f6bff);
625
- background: var(--sa-primary-soft, rgba(63, 107, 255, 0.08));
626
- color: var(--sa-primary, #3f6bff);
624
+ border-color: var(--sa-color-accent);
625
+ background: var(--sa-color-accent-surface);
626
+ color: var(--sa-color-accent);
627
627
  }
628
628
 
629
629
  .pc-check {
630
630
  display: inline-flex;
631
631
  align-items: center;
632
632
  gap: 8px;
633
- font: 13px var(--sa-font-body, system-ui, sans-serif);
634
- color: var(--sa-body, #1e293b);
633
+ font: var(--sa-text-md) var(--sa-font-body, system-ui, sans-serif);
634
+ color: var(--sa-color-fg-body);
635
635
  cursor: pointer;
636
636
  }
637
637
 
638
638
  .pc-preview {
639
- background: var(--sa-primary-soft, rgba(63, 107, 255, 0.06));
640
- border: 1px solid var(--sa-primary-border, rgba(63, 107, 255, 0.18));
639
+ background: var(--sa-color-accent-surface-soft);
640
+ border: 1px solid var(--sa-color-accent-border);
641
641
  border-radius: 10px;
642
642
  padding: 12px 14px;
643
643
  }
644
644
 
645
645
  .pc-preview__eyebrow {
646
- font-size: 11px;
646
+ font-size: var(--sa-text-xs);
647
647
  font-weight: 700;
648
- color: var(--sa-primary, #3f6bff);
648
+ color: var(--sa-color-accent);
649
649
  text-transform: uppercase;
650
650
  letter-spacing: 0.06em;
651
651
  margin-bottom: 6px;
@@ -659,22 +659,22 @@ textarea.pc-input {
659
659
  }
660
660
 
661
661
  .pc-preview__code {
662
- background: #fff;
663
- border: 1px solid var(--sa-border, var(--sa-border));
662
+ background: var(--sa-color-bg-surface);
663
+ border: 1px solid var(--sa-color-border);
664
664
  border-radius: 6px;
665
665
  padding: 3px 8px;
666
- font: 600 13px var(--sa-font-mono, ui-monospace, monospace);
666
+ font: 600 var(--sa-text-md) var(--sa-font-mono, ui-monospace, monospace);
667
667
  letter-spacing: 0.04em;
668
- color: var(--sa-heading, var(--sa-heading));
668
+ color: var(--sa-color-fg-heading);
669
669
  }
670
670
 
671
671
  .pc-preview__disc {
672
- font: 700 13px var(--sa-font-body, system-ui, sans-serif);
673
- color: var(--sa-positive, #047857);
672
+ font: 700 var(--sa-text-md) var(--sa-font-body, system-ui, sans-serif);
673
+ color: var(--sa-color-positive-fg);
674
674
  }
675
675
 
676
676
  .pc-preview__meta {
677
- font-size: 12px;
678
- color: var(--sa-muted, var(--sa-muted));
677
+ font-size: var(--sa-text-sm);
678
+ color: var(--sa-color-fg-muted);
679
679
  }
680
680
  </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: 18px;
307
- color: var(--sa-heading, var(--sa-heading));
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: 12.5px;
312
- color: var(--sa-muted, var(--sa-muted));
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-border, var(--sa-border));
324
+ border-top: 1px solid var(--sa-color-border);
325
325
  }
326
326
 
327
327
  .pc-error {
328
- background: #fef2f2;
329
- border: 1px solid #fecaca;
330
- color: #b91c1c;
331
- font-size: 13px;
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-surface-2);
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, #e2e8f0);
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: 17px;
23
- color: var(--sa-heading, #0f172a);
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, #e2e8f0);
33
- background: #fbfbfd;
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 #f1f5f9;
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: #eff6ff;
54
- color: #1d4ed8;
53
+ background: var(--sa-color-info-surface);
54
+ color: var(--sa-color-info-fg);
55
55
  border-radius: 50%;
56
- font: 700 12px var(--sa-font-body, system-ui, sans-serif);
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: 13.5px;
63
+ font-size: var(--sa-text-md);
64
64
  font-weight: 700;
65
- color: var(--sa-heading, #0f172a);
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: 11.5px;
71
- color: #94a3b8;
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: #fff;
79
- border: 1px solid var(--sa-border, #e2e8f0);
78
+ background: var(--sa-color-bg-surface);
79
+ border: 1px solid var(--sa-color-border);
80
80
  border-radius: 8px;
81
- font: 13px var(--sa-font-body, system-ui, sans-serif);
82
- color: var(--sa-body, #1e293b);
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-primary, #3f6bff);
91
- box-shadow: 0 0 0 3px rgba(63, 107, 255, 0.12);
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: #fff;
106
- border: 1px solid var(--sa-border, #e2e8f0);
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: #93c5fd;
118
- background: #fafbff;
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-primary, #2563eb);
123
- background: #eff6ff;
124
- box-shadow: 0 0 0 1px var(--sa-primary, #2563eb) inset;
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 11px var(--sa-font-mono, ui-monospace, monospace);
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, #0f172a);
144
+ color: var(--sa-color-fg-heading);
145
145
  }
146
146
 
147
147
  .pl-plan-opt__label {
148
- font-size: 11px;
149
- color: var(--sa-muted, #64748b);
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: #1d4ed8;
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: #fff;
173
- border: 1px solid var(--sa-border, #e2e8f0);
172
+ background: var(--sa-color-bg-surface);
173
+ border: 1px solid var(--sa-color-border);
174
174
  border-radius: 7px;
175
- color: var(--sa-muted-dark, #475569);
176
- font: 500 11.5px var(--sa-font-body, system-ui, sans-serif);
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: #f8fafc;
183
- border-color: #cbd5e1;
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: #fff;
196
- border: 1px dashed #cbd5e1;
195
+ background: var(--sa-color-bg-surface);
196
+ border: 1px dashed var(--sa-color-border-strong);
197
197
  border-radius: 999px;
198
- font: 600 11px var(--sa-font-body, system-ui, sans-serif);
199
- color: var(--sa-muted-dark, #475569);
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: #eff6ff;
209
- border-color: #93c5fd;
208
+ background: var(--sa-color-info-surface);
209
+ border-color: var(--sa-color-info-border);
210
210
  border-style: solid;
211
- color: #1d4ed8;
211
+ color: var(--sa-color-info-fg);
212
212
  }
213
213
 
214
214
  .pl-error {
215
- background: #fef2f2;
216
- border: 1px solid #fecaca;
217
- color: #b91c1c;
218
- font-size: 13px;
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
- /* CSS-Vars: dark-mode-overrides unten via :global(.body--dark) */
65
- --sp-cycle-bg: rgba(15, 118, 110, 0.06);
66
- --sp-cycle-btn-fg: rgba(0, 0, 0, 0.55);
67
- --sp-cycle-btn-active-bg: #fff;
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: 12px;
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 rgba(15, 118, 110, 0.12);
92
+ box-shadow: 0 2px 8px var(--sa-shadow-tint-3);
100
93
  }
101
94
  .sp-cycle__pill {
102
- background: rgba(22, 163, 74, 0.16);
103
- color: #166534;
104
- font-size: 10px;
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;