@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
@@ -92,20 +92,20 @@ function cancel(): void {
92
92
  * input keeps matching it when that changes. */
93
93
  .pd-title-edit__input {
94
94
  font: inherit;
95
- color: var(--sa-heading);
95
+ color: var(--sa-color-fg-heading);
96
96
  border: 0;
97
- background: var(--sa-warning-bg);
98
- outline: 2px solid var(--sa-amber-light);
97
+ background: var(--sa-color-warning-surface);
98
+ outline: 2px solid var(--sa-color-warning-strong);
99
99
  padding: 2px 8px;
100
100
  border-radius: var(--sa-radius-control);
101
101
  min-width: 220px;
102
102
  }
103
103
  .pd-title-edit__hint {
104
- font-size: 11px;
104
+ font-size: var(--sa-text-xs);
105
105
  font-weight: 500;
106
- color: var(--sa-warning);
107
- background: var(--sa-warning-bg);
108
- border: 1px solid var(--sa-amber-border);
106
+ color: var(--sa-color-warning);
107
+ background: var(--sa-color-warning-surface);
108
+ border: 1px solid var(--sa-color-warning-border);
109
109
  border-radius: var(--sa-radius-control);
110
110
  padding: 3px 8px;
111
111
  }
@@ -118,7 +118,7 @@ function cancel(): void {
118
118
  border-radius: var(--sa-radius-control);
119
119
  background: transparent;
120
120
  border: 1px solid transparent;
121
- color: var(--sa-muted-light);
121
+ color: var(--sa-color-fg-subtle);
122
122
  cursor: pointer;
123
123
  transition:
124
124
  background 0.12s,
@@ -126,8 +126,8 @@ function cancel(): void {
126
126
  border-color 0.12s;
127
127
  }
128
128
  .pd-title-edit__btn:hover {
129
- background: var(--sa-border-soft);
130
- color: var(--sa-primary);
131
- border-color: var(--sa-border);
129
+ background: var(--sa-color-border-soft);
130
+ color: var(--sa-color-accent);
131
+ border-color: var(--sa-color-border);
132
132
  }
133
133
  </style>
@@ -552,8 +552,8 @@ function hasAnyPublished(row: ResolvedPlan<PlanRow, PlanVersionRow>): boolean {
552
552
  <style scoped>
553
553
  .sa-plan-list {
554
554
  /* padding: 22px 26px; */
555
- background: var(--sa-bg-app);
556
- color: var(--sa-heading);
555
+ background: var(--sa-color-bg-app);
556
+ color: var(--sa-color-fg-heading);
557
557
  font-family: var(--sa-font-body);
558
558
  min-height: 100%;
559
559
  box-sizing: border-box;
@@ -563,8 +563,8 @@ function hasAnyPublished(row: ResolvedPlan<PlanRow, PlanVersionRow>): boolean {
563
563
 
564
564
  /* List wrap */
565
565
  .sa-plan-list-wrap {
566
- background: var(--sa-bg-surface);
567
- border: 1px solid var(--sa-border);
566
+ background: var(--sa-color-bg-surface);
567
+ border: 1px solid var(--sa-color-border);
568
568
  border-radius: 10px;
569
569
  overflow: hidden;
570
570
  }
@@ -573,8 +573,8 @@ function hasAnyPublished(row: ResolvedPlan<PlanRow, PlanVersionRow>): boolean {
573
573
  align-items: center;
574
574
  gap: 10px;
575
575
  padding: 12px 16px;
576
- border-bottom: 1px solid var(--sa-border);
577
- background: var(--sa-bg-surface-2);
576
+ border-bottom: 1px solid var(--sa-color-border);
577
+ background: var(--sa-color-bg-sunken);
578
578
  }
579
579
  /* The search takes the row; the sort hint keeps its content width. */
580
580
  .sa-plan-list-toolbar > .q-field {
@@ -582,73 +582,90 @@ function hasAnyPublished(row: ResolvedPlan<PlanRow, PlanVersionRow>): boolean {
582
582
  }
583
583
  .sa-plan-list-sortinfo {
584
584
  margin-left: auto;
585
- font-size: 11.5px;
586
- color: var(--sa-muted-light);
585
+ font-size: var(--sa-text-sm);
586
+ color: var(--sa-color-fg-subtle);
587
587
  }
588
588
 
589
589
  /* List grid */
590
590
  .sa-plan-list-list {
591
591
  display: grid;
592
592
  grid-template-columns: 1.6fr 0.9fr 0.7fr 0.9fr 1.4fr 160px;
593
- align-items: center;
593
+ /* Stretch, not centre. Every row is `display: contents`, so its cells are
594
+ * grid items in their own right — and a centred item is only as tall as its
595
+ * own content. The row's hover background is painted per cell, so the band
596
+ * came out notched wherever one column was shorter than its neighbours.
597
+ * The cells fill the row now and centre their contents themselves. */
598
+ align-items: stretch;
594
599
  }
595
600
  .sa-plan-list-list-head {
596
601
  display: contents;
597
602
  }
598
603
  .sa-plan-list-list-head > div {
599
- background: #fbfbfd;
604
+ display: flex;
605
+ align-items: center;
606
+ background: var(--sa-color-bg-surface-raised);
600
607
  padding: 10px 16px;
601
- font-size: 10.5px;
608
+ font-size: var(--sa-text-xs);
602
609
  text-transform: uppercase;
603
610
  letter-spacing: 0.1em;
604
- color: var(--sa-muted-dark);
611
+ color: var(--sa-color-fg-secondary);
605
612
  font-weight: 700;
606
- border-bottom: 1px solid var(--sa-border);
613
+ border-bottom: 1px solid var(--sa-color-border);
607
614
  }
608
615
  .sa-plan-list-empty {
609
616
  grid-column: 1 / -1;
610
617
  padding: 32px 24px;
611
618
  text-align: center;
612
- color: var(--sa-muted-light);
619
+ color: var(--sa-color-fg-subtle);
613
620
  font-style: italic;
614
- font-size: 13px;
621
+ font-size: var(--sa-text-md);
615
622
  }
616
623
  .sa-plan-list-row {
617
624
  display: contents;
618
625
  cursor: pointer;
619
626
  }
620
627
  .sa-plan-list-row > .sa-plan-list-cell {
628
+ /* Column by default — most cells stack a value over a caption. The three
629
+ * that lay their content out in a row say so below. */
630
+ display: flex;
631
+ flex-direction: column;
632
+ justify-content: center;
621
633
  padding: 14px 16px;
622
- border-bottom: 1px solid var(--sa-border-soft);
634
+ border-bottom: 1px solid var(--sa-color-border-soft);
623
635
  transition: background 0.12s;
624
636
  }
625
637
  .sa-plan-list-row:hover > .sa-plan-list-cell {
626
- background: #fcfcfd;
638
+ background: var(--sa-color-bg-surface-raised);
627
639
  }
628
640
  .sa-plan-list-row--new > .sa-plan-list-cell {
629
- background: var(--sa-positive-bg) !important;
641
+ background: var(--sa-color-positive-surface) !important;
630
642
  animation: sa-plan-list-flashNew 2.4s ease-out;
631
643
  }
632
644
  @keyframes sa-plan-list-flashNew {
633
645
  0% {
634
- background: #d1fae5 !important;
646
+ background: var(--sa-color-positive-surface-strong) !important;
635
647
  }
636
648
  100% {
637
- background: var(--sa-positive-bg) !important;
649
+ background: var(--sa-color-positive-surface) !important;
638
650
  }
639
651
  }
640
652
 
641
653
  /* Sub-rows (drafts + future-scheduled versions, indented under the parent) */
642
654
  .sa-plan-list-row--sub > .sa-plan-list-cell {
643
- background: #fafbfd;
655
+ background: var(--sa-color-bg-surface-raised);
644
656
  padding-top: 10px;
645
657
  padding-bottom: 10px;
646
658
  }
647
659
  .sa-plan-list-row--sub:hover > .sa-plan-list-cell {
648
- background: var(--sa-border-soft);
660
+ background: var(--sa-color-border-soft);
649
661
  }
650
- .sa-plan-list-cell--sub-name {
662
+ .sa-plan-list-row > .sa-plan-list-cell--sub-name {
651
663
  display: flex;
664
+ flex-direction: row;
665
+ /* The base rule centres on the main axis, which is vertical for a column
666
+ * cell but horizontal here — it would float the indent and leave the tree
667
+ * elbow pointing at nothing. */
668
+ justify-content: flex-start;
652
669
  align-items: center;
653
670
  gap: 12px;
654
671
  padding-left: 32px !important;
@@ -667,36 +684,36 @@ function hasAnyPublished(row: ResolvedPlan<PlanRow, PlanVersionRow>): boolean {
667
684
  bottom: 50%;
668
685
  left: 12px;
669
686
  width: 14px;
670
- border-left: 1.5px solid #cbd5e1;
671
- border-bottom: 1.5px solid #cbd5e1;
687
+ border-left: 1.5px solid var(--sa-color-border-strong);
688
+ border-bottom: 1.5px solid var(--sa-color-border-strong);
672
689
  border-bottom-left-radius: 6px;
673
690
  }
674
691
  .sa-plan-list-sub-titles {
675
692
  min-width: 0;
676
693
  }
677
694
  .sa-plan-list-sub-title {
678
- font-size: 13px;
695
+ font-size: var(--sa-text-md);
679
696
  font-weight: 600;
680
- color: var(--sa-muted-dark);
697
+ color: var(--sa-color-fg-secondary);
681
698
  display: flex;
682
699
  align-items: center;
683
700
  gap: 8px;
684
701
  }
685
702
  .sa-plan-list-sub-desc {
686
- font-size: 11.5px;
687
- color: var(--sa-muted);
703
+ font-size: var(--sa-text-sm);
704
+ color: var(--sa-color-fg-muted);
688
705
  margin-top: 2px;
689
706
  overflow: hidden;
690
707
  text-overflow: ellipsis;
691
708
  white-space: nowrap;
692
709
  }
693
710
  .sa-plan-list-version-num--sub {
694
- font-size: 13px;
711
+ font-size: var(--sa-text-md);
695
712
  font-weight: 600;
696
- color: var(--sa-muted-dark);
713
+ color: var(--sa-color-fg-secondary);
697
714
  }
698
715
  .sa-plan-list-cell--sub-impact {
699
- color: var(--sa-muted-light);
716
+ color: var(--sa-color-fg-subtle);
700
717
  }
701
718
 
702
719
  .sa-plan-list-plan-name {
@@ -710,7 +727,7 @@ function hasAnyPublished(row: ResolvedPlan<PlanRow, PlanVersionRow>): boolean {
710
727
  border-radius: 8px;
711
728
  display: grid;
712
729
  place-items: center;
713
- font: 700 11px var(--sa-font-mono);
730
+ font: 700 var(--sa-text-xs) var(--sa-font-mono);
714
731
  letter-spacing: 0.04em;
715
732
  flex: 0 0 auto;
716
733
  border: 1px solid;
@@ -719,9 +736,9 @@ function hasAnyPublished(row: ResolvedPlan<PlanRow, PlanVersionRow>): boolean {
719
736
  min-width: 0;
720
737
  }
721
738
  .sa-plan-list-plan-title {
722
- font-size: 14.5px;
739
+ font-size: var(--sa-text-lg);
723
740
  font-weight: 700;
724
- color: var(--sa-heading);
741
+ color: var(--sa-color-fg-heading);
725
742
  letter-spacing: -0.01em;
726
743
  display: flex;
727
744
  align-items: center;
@@ -729,8 +746,8 @@ function hasAnyPublished(row: ResolvedPlan<PlanRow, PlanVersionRow>): boolean {
729
746
  flex-wrap: wrap;
730
747
  }
731
748
  .sa-plan-list-plan-desc {
732
- font-size: 11.5px;
733
- color: var(--sa-muted);
749
+ font-size: var(--sa-text-sm);
750
+ color: var(--sa-color-fg-muted);
734
751
  margin-top: 2px;
735
752
  overflow: hidden;
736
753
  text-overflow: ellipsis;
@@ -751,41 +768,41 @@ function hasAnyPublished(row: ResolvedPlan<PlanRow, PlanVersionRow>): boolean {
751
768
  gap: 5px;
752
769
  padding: 2px 8px;
753
770
  border-radius: 999px;
754
- font-size: 11px;
771
+ font-size: var(--sa-text-xs);
755
772
  font-weight: 600;
756
- background: var(--sa-bg-surface-2);
757
- color: var(--sa-muted-dark);
758
- border: 1px solid var(--sa-border);
773
+ background: var(--sa-color-bg-sunken);
774
+ color: var(--sa-color-fg-secondary);
775
+ border: 1px solid var(--sa-color-border);
759
776
  }
760
777
  .sa-plan-list-chip--tiny {
761
778
  padding: 1px 6px;
762
- font-size: 10px;
779
+ font-size: var(--sa-text-2xs);
763
780
  }
764
781
  .sa-plan-list-chip--new {
765
- background: #dbeafe;
766
- color: #1e40af;
767
- border-color: #bfdbfe;
768
- font-size: 10px;
782
+ background: var(--sa-color-info-surface-strong);
783
+ color: var(--sa-color-info-fg);
784
+ border-color: var(--sa-color-info-border);
785
+ font-size: var(--sa-text-2xs);
769
786
  }
770
787
  .sa-plan-list-chip--live {
771
- background: var(--sa-positive-bg);
772
- color: #047857;
773
- border-color: #a7f3d0;
788
+ background: var(--sa-color-positive-surface);
789
+ color: var(--sa-color-positive-fg);
790
+ border-color: var(--sa-color-positive-border);
774
791
  }
775
792
  .sa-plan-list-chip--draft {
776
- background: var(--sa-warning-bg);
777
- color: #b45309;
778
- border-color: #fde68a;
793
+ background: var(--sa-color-warning-surface);
794
+ color: var(--sa-color-warning-fg);
795
+ border-color: var(--sa-color-warning-border);
779
796
  }
780
797
  .sa-plan-list-chip--supersed {
781
- background: var(--sa-border-soft);
782
- color: var(--sa-muted-dark);
783
- border-color: #cbd5e1;
798
+ background: var(--sa-color-border-soft);
799
+ color: var(--sa-color-fg-secondary);
800
+ border-color: var(--sa-color-border-strong);
784
801
  }
785
802
  .sa-plan-list-chip--scheduled {
786
- background: #eef2ff;
787
- color: #4338ca;
788
- border-color: #c7d2fe;
803
+ background: var(--sa-color-scheduled-surface);
804
+ color: var(--sa-color-scheduled-fg);
805
+ border-color: var(--sa-color-scheduled-border);
789
806
  }
790
807
  .sa-plan-list-chip--dot::before {
791
808
  content: '';
@@ -796,53 +813,55 @@ function hasAnyPublished(row: ResolvedPlan<PlanRow, PlanVersionRow>): boolean {
796
813
  }
797
814
 
798
815
  .sa-plan-list-version-num {
799
- font-size: 13px;
816
+ font-size: var(--sa-text-md);
800
817
  font-weight: 700;
801
- color: var(--sa-heading);
818
+ color: var(--sa-color-fg-heading);
802
819
  }
803
820
  .sa-plan-list-version-num--muted {
804
- color: #cbd5e1;
821
+ color: var(--sa-color-fg-disabled);
805
822
  }
806
823
  .sa-plan-list-version-sub {
807
- font-size: 10.5px;
808
- color: var(--sa-muted-light);
824
+ font-size: var(--sa-text-xs);
825
+ color: var(--sa-color-fg-subtle);
809
826
  margin-top: 2px;
810
827
  }
811
828
 
812
829
  .sa-plan-list-price-big {
813
- font-size: 14px;
830
+ font-size: var(--sa-text-lg);
814
831
  font-weight: 700;
815
- color: var(--sa-heading);
832
+ color: var(--sa-color-fg-heading);
816
833
  }
817
834
  .sa-plan-list-price-unit {
818
- font-size: 11px;
819
- color: var(--sa-muted-light);
835
+ font-size: var(--sa-text-xs);
836
+ color: var(--sa-color-fg-subtle);
820
837
  }
821
838
  .sa-plan-list-price-sub {
822
- font-size: 10.5px;
823
- color: var(--sa-muted-light);
839
+ font-size: var(--sa-text-xs);
840
+ color: var(--sa-color-fg-subtle);
824
841
  margin-top: 2px;
825
842
  }
826
843
  .sa-plan-list-price-text {
827
- font-size: 13px;
844
+ font-size: var(--sa-text-md);
828
845
  font-weight: 600;
829
- color: var(--sa-heading);
846
+ color: var(--sa-color-fg-heading);
830
847
  }
831
848
 
832
- .sa-plan-list-cell--tenants {
849
+ .sa-plan-list-row > .sa-plan-list-cell--tenants {
833
850
  display: flex;
851
+ flex-direction: row;
852
+ justify-content: flex-start;
834
853
  align-items: center;
835
854
  gap: 10px;
836
855
  }
837
856
  .sa-plan-list-tenant-num {
838
- font-size: 16px;
857
+ font-size: var(--sa-text-lg);
839
858
  font-weight: 700;
840
- color: var(--sa-heading);
859
+ color: var(--sa-color-fg-heading);
841
860
  }
842
861
  .sa-plan-list-tenant-bar {
843
862
  flex: 1;
844
863
  height: 6px;
845
- background: var(--sa-border-soft);
864
+ background: var(--sa-color-border-soft);
846
865
  border-radius: 999px;
847
866
  overflow: hidden;
848
867
  }
@@ -850,9 +869,11 @@ function hasAnyPublished(row: ResolvedPlan<PlanRow, PlanVersionRow>): boolean {
850
869
  height: 100%;
851
870
  }
852
871
 
853
- .sa-plan-list-cell--actions {
872
+ .sa-plan-list-row > .sa-plan-list-cell--actions {
854
873
  display: flex;
855
- gap: 4px;
874
+ flex-direction: row;
875
+ align-items: center;
856
876
  justify-content: flex-end;
877
+ gap: 4px;
857
878
  }
858
879
  </style>