@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
|
@@ -55,8 +55,8 @@ defineProps<{
|
|
|
55
55
|
align-items: center;
|
|
56
56
|
gap: 6px;
|
|
57
57
|
padding: 14px 26px;
|
|
58
|
-
background: var(--sa-bg-surface);
|
|
59
|
-
border-bottom: 1px solid var(--sa-border);
|
|
58
|
+
background: var(--sa-color-bg-surface);
|
|
59
|
+
border-bottom: 1px solid var(--sa-color-border);
|
|
60
60
|
}
|
|
61
61
|
.wz-step {
|
|
62
62
|
display: flex;
|
|
@@ -64,44 +64,44 @@ defineProps<{
|
|
|
64
64
|
gap: 8px;
|
|
65
65
|
padding: 6px 12px;
|
|
66
66
|
border-radius: 999px;
|
|
67
|
-
font: 500
|
|
68
|
-
color: var(--sa-muted);
|
|
67
|
+
font: 500 var(--sa-text-md) var(--sa-font-body);
|
|
68
|
+
color: var(--sa-color-fg-muted);
|
|
69
69
|
}
|
|
70
70
|
.wz-step--current {
|
|
71
|
-
background: var(--sa-
|
|
72
|
-
color:
|
|
71
|
+
background: var(--sa-color-inverse-bg);
|
|
72
|
+
color: var(--sa-color-fg-on-accent);
|
|
73
73
|
}
|
|
74
74
|
.wz-step--done {
|
|
75
|
-
color: var(--sa-positive);
|
|
75
|
+
color: var(--sa-color-positive);
|
|
76
76
|
}
|
|
77
77
|
.wz-step-num {
|
|
78
78
|
width: 20px;
|
|
79
79
|
height: 20px;
|
|
80
80
|
border-radius: 50%;
|
|
81
|
-
background: var(--sa-border);
|
|
82
|
-
color: var(--sa-
|
|
81
|
+
background: var(--sa-color-border);
|
|
82
|
+
color: var(--sa-color-fg-secondary);
|
|
83
83
|
display: grid;
|
|
84
84
|
place-items: center;
|
|
85
|
-
font: 700
|
|
85
|
+
font: 700 var(--sa-text-xs) var(--sa-font-body);
|
|
86
86
|
flex: 0 0 auto;
|
|
87
87
|
}
|
|
88
88
|
.wz-step--current .wz-step-num {
|
|
89
|
-
background:
|
|
90
|
-
color:
|
|
89
|
+
background: var(--sa-color-inverse-border-strong);
|
|
90
|
+
color: var(--sa-color-fg-on-accent);
|
|
91
91
|
}
|
|
92
92
|
.wz-step--done .wz-step-num {
|
|
93
|
-
background: var(--sa-positive-
|
|
94
|
-
color: var(--sa-positive);
|
|
93
|
+
background: var(--sa-color-positive-surface);
|
|
94
|
+
color: var(--sa-color-positive);
|
|
95
95
|
}
|
|
96
96
|
.wz-step-sep {
|
|
97
97
|
width: 14px;
|
|
98
98
|
height: 1px;
|
|
99
|
-
background: var(--sa-border);
|
|
99
|
+
background: var(--sa-color-border);
|
|
100
100
|
margin: 0 2px;
|
|
101
101
|
}
|
|
102
102
|
.wz-stepper-hint {
|
|
103
103
|
margin-left: auto;
|
|
104
|
-
font-size:
|
|
105
|
-
color: var(--sa-muted);
|
|
104
|
+
font-size: var(--sa-text-xs);
|
|
105
|
+
color: var(--sa-color-fg-muted);
|
|
106
106
|
}
|
|
107
107
|
</style>
|
package/src/index.ts
CHANGED
|
@@ -33,6 +33,7 @@ export * from './vue/super-admin-context.js';
|
|
|
33
33
|
export * from './vue/ui-notify.js';
|
|
34
34
|
export * from './vue/use-super-admin-context.js';
|
|
35
35
|
export * from './vue/use-super-admin-i18n.js';
|
|
36
|
+
export * from './vue/use-sa-theme.js';
|
|
36
37
|
|
|
37
38
|
// ---------------------------------------------------------------------------
|
|
38
39
|
// Vue layer: composables, guards, hosts, store factory.
|
|
@@ -309,31 +309,42 @@ const currentPageTitle = computed(() => {
|
|
|
309
309
|
justify-content: center;
|
|
310
310
|
gap: 8px;
|
|
311
311
|
padding: 6px 12px;
|
|
312
|
-
font-size:
|
|
312
|
+
font-size: var(--sa-text-sm);
|
|
313
313
|
letter-spacing: 0.05em;
|
|
314
314
|
text-transform: uppercase;
|
|
315
315
|
}
|
|
316
316
|
.sa-admin-banner--prod {
|
|
317
|
-
|
|
318
|
-
|
|
317
|
+
/* Invariant on purpose: this strip says "you are on production", and its
|
|
318
|
+
* white text has to stay readable in both themes. The `negative` roles
|
|
319
|
+
* lighten in dark — for text ON dark surfaces — and would take this one to
|
|
320
|
+
* 1.9:1. */
|
|
321
|
+
background: linear-gradient(
|
|
322
|
+
90deg,
|
|
323
|
+
var(--sa-color-inverse-danger),
|
|
324
|
+
var(--sa-color-inverse-danger-strong)
|
|
325
|
+
);
|
|
326
|
+
color: var(--sa-color-inverse-fg);
|
|
319
327
|
}
|
|
320
328
|
|
|
321
329
|
.sa-admin-header {
|
|
322
|
-
background: var(
|
|
323
|
-
|
|
330
|
+
background: var(
|
|
331
|
+
--sa-admin-header-bg,
|
|
332
|
+
linear-gradient(90deg, var(--sa-color-inverse-bg), var(--sa-color-inverse-surface))
|
|
333
|
+
);
|
|
334
|
+
color: var(--sa-admin-header-fg, var(--sa-color-inverse-fg));
|
|
324
335
|
}
|
|
325
336
|
.sa-admin-header__sub {
|
|
326
|
-
font-size:
|
|
327
|
-
color: var(--sa-admin-header-sub,
|
|
337
|
+
font-size: var(--sa-text-xs);
|
|
338
|
+
color: var(--sa-admin-header-sub, var(--sa-color-inverse-accent));
|
|
328
339
|
font-weight: 400;
|
|
329
340
|
}
|
|
330
341
|
|
|
331
342
|
.sa-admin-badge {
|
|
332
|
-
background: var(--sa-admin-badge-bg,
|
|
333
|
-
color: var(--sa-admin-badge-fg, var(--sa-
|
|
343
|
+
background: var(--sa-admin-badge-bg, var(--sa-color-inverse-accent));
|
|
344
|
+
color: var(--sa-admin-badge-fg, var(--sa-color-inverse-accent-fg));
|
|
334
345
|
font-weight: 800;
|
|
335
346
|
letter-spacing: 0.08em;
|
|
336
|
-
font-size:
|
|
347
|
+
font-size: var(--sa-text-2xs);
|
|
337
348
|
padding: 4px 8px;
|
|
338
349
|
}
|
|
339
350
|
|
|
@@ -343,21 +354,21 @@ const currentPageTitle = computed(() => {
|
|
|
343
354
|
gap: 8px;
|
|
344
355
|
}
|
|
345
356
|
.sa-admin-user__avatar {
|
|
346
|
-
background: var(--sa-admin-user-avatar-bg,
|
|
347
|
-
color: var(--sa-admin-user-avatar-fg,
|
|
357
|
+
background: var(--sa-admin-user-avatar-bg, var(--sa-color-inverse-accent));
|
|
358
|
+
color: var(--sa-admin-user-avatar-fg, var(--sa-color-inverse-accent-fg));
|
|
348
359
|
}
|
|
349
360
|
.sa-admin-user__name {
|
|
350
361
|
line-height: 1.05;
|
|
351
362
|
}
|
|
352
363
|
.sa-admin-user__email {
|
|
353
|
-
color: var(--sa-admin-user-email,
|
|
364
|
+
color: var(--sa-admin-user-email, var(--sa-color-inverse-accent));
|
|
354
365
|
}
|
|
355
366
|
|
|
356
367
|
.sa-admin-drawer :deep(.q-drawer),
|
|
357
368
|
.sa-admin-drawer :deep(.q-drawer__content),
|
|
358
369
|
.sa-admin-drawer__stack {
|
|
359
|
-
background: var(--sa-admin-drawer-bg,
|
|
360
|
-
color: var(--sa-admin-drawer-fg, var(--sa-
|
|
370
|
+
background: var(--sa-admin-drawer-bg, var(--sa-color-inverse-bg));
|
|
371
|
+
color: var(--sa-admin-drawer-fg, var(--sa-color-inverse-fg-muted));
|
|
361
372
|
}
|
|
362
373
|
.sa-admin-drawer__stack {
|
|
363
374
|
display: flex;
|
|
@@ -370,14 +381,21 @@ const currentPageTitle = computed(() => {
|
|
|
370
381
|
align-items: center;
|
|
371
382
|
gap: 12px;
|
|
372
383
|
padding: 18px 16px;
|
|
373
|
-
border-bottom: 1px solid
|
|
384
|
+
border-bottom: 1px solid var(--sa-color-inverse-border);
|
|
374
385
|
}
|
|
375
386
|
.sa-admin-drawer__logo {
|
|
376
387
|
width: 36px;
|
|
377
388
|
height: 36px;
|
|
378
389
|
border-radius: 10px;
|
|
379
|
-
background: var(
|
|
380
|
-
|
|
390
|
+
background: var(
|
|
391
|
+
--sa-admin-drawer-logo-bg,
|
|
392
|
+
linear-gradient(
|
|
393
|
+
135deg,
|
|
394
|
+
var(--sa-color-inverse-accent),
|
|
395
|
+
var(--sa-color-inverse-accent-strong)
|
|
396
|
+
)
|
|
397
|
+
);
|
|
398
|
+
color: var(--sa-admin-drawer-logo-fg, var(--sa-color-inverse-accent-fg));
|
|
381
399
|
font-weight: 800;
|
|
382
400
|
display: flex;
|
|
383
401
|
align-items: center;
|
|
@@ -385,11 +403,11 @@ const currentPageTitle = computed(() => {
|
|
|
385
403
|
}
|
|
386
404
|
.sa-admin-drawer__brand-name {
|
|
387
405
|
font-weight: 800;
|
|
388
|
-
color:
|
|
406
|
+
color: var(--sa-color-inverse-fg);
|
|
389
407
|
}
|
|
390
408
|
.sa-admin-drawer__brand-tag {
|
|
391
|
-
font-size:
|
|
392
|
-
color: var(--sa-admin-drawer-brand-tag,
|
|
409
|
+
font-size: var(--sa-text-xs);
|
|
410
|
+
color: var(--sa-admin-drawer-brand-tag, var(--sa-color-inverse-accent));
|
|
393
411
|
text-transform: uppercase;
|
|
394
412
|
letter-spacing: 0.08em;
|
|
395
413
|
}
|
|
@@ -399,20 +417,20 @@ const currentPageTitle = computed(() => {
|
|
|
399
417
|
padding: 6px 4px;
|
|
400
418
|
}
|
|
401
419
|
.sa-admin-drawer__section {
|
|
402
|
-
font-size:
|
|
420
|
+
font-size: var(--sa-text-2xs);
|
|
403
421
|
text-transform: uppercase;
|
|
404
422
|
letter-spacing: 0.12em;
|
|
405
|
-
color: var(--sa-admin-drawer-section-fg, var(--sa-muted));
|
|
423
|
+
color: var(--sa-admin-drawer-section-fg, var(--sa-color-inverse-fg-muted));
|
|
406
424
|
padding: 14px 18px 6px;
|
|
407
425
|
font-weight: 600;
|
|
408
426
|
}
|
|
409
427
|
.sa-admin-drawer__list :deep(.q-item) {
|
|
410
|
-
color: var(--sa-admin-drawer-item-fg,
|
|
428
|
+
color: var(--sa-admin-drawer-item-fg, var(--sa-color-inverse-fg-muted));
|
|
411
429
|
border-radius: 7px;
|
|
412
430
|
margin: 1px 6px;
|
|
413
431
|
min-height: 36px;
|
|
414
432
|
padding: 6px 12px;
|
|
415
|
-
font-size:
|
|
433
|
+
font-size: var(--sa-text-md);
|
|
416
434
|
font-weight: 500;
|
|
417
435
|
}
|
|
418
436
|
.sa-admin-drawer__list :deep(.q-item__section--avatar) {
|
|
@@ -420,40 +438,43 @@ const currentPageTitle = computed(() => {
|
|
|
420
438
|
padding-right: 8px;
|
|
421
439
|
}
|
|
422
440
|
.sa-admin-drawer__list :deep(.q-item .q-icon) {
|
|
423
|
-
color: var(--sa-
|
|
441
|
+
color: var(--sa-color-inverse-fg-subtle);
|
|
424
442
|
}
|
|
425
443
|
.sa-admin-drawer__list :deep(.q-item:hover) {
|
|
426
|
-
background: var(--sa-admin-drawer-hover-bg,
|
|
427
|
-
color: var(--sa-admin-drawer-hover-fg,
|
|
444
|
+
background: var(--sa-admin-drawer-hover-bg, var(--sa-color-inverse-accent-surface));
|
|
445
|
+
color: var(--sa-admin-drawer-hover-fg, var(--sa-color-inverse-accent));
|
|
428
446
|
}
|
|
429
447
|
.sa-admin-drawer__list :deep(.q-item:hover .q-icon) {
|
|
430
|
-
color: var(--sa-admin-drawer-hover-fg,
|
|
448
|
+
color: var(--sa-admin-drawer-hover-fg, var(--sa-color-inverse-accent));
|
|
431
449
|
}
|
|
432
450
|
.sa-admin-drawer__list :deep(.sa-admin-drawer__item--active) {
|
|
433
|
-
background: var(
|
|
434
|
-
|
|
451
|
+
background: var(
|
|
452
|
+
--sa-admin-drawer-active-bg,
|
|
453
|
+
var(--sa-color-inverse-accent-surface-strong)
|
|
454
|
+
) !important;
|
|
455
|
+
color: var(--sa-admin-drawer-active-fg, var(--sa-color-inverse-accent)) !important;
|
|
435
456
|
font-weight: 600;
|
|
436
457
|
}
|
|
437
458
|
.sa-admin-drawer__list :deep(.sa-admin-drawer__item--active .q-icon) {
|
|
438
|
-
color: var(--sa-admin-drawer-active-fg,
|
|
459
|
+
color: var(--sa-admin-drawer-active-fg, var(--sa-color-inverse-accent));
|
|
439
460
|
}
|
|
440
461
|
|
|
441
462
|
.sa-admin-drawer__footer {
|
|
442
463
|
padding: 12px 16px;
|
|
443
|
-
border-top: 1px solid
|
|
444
|
-
font-size:
|
|
445
|
-
color:
|
|
464
|
+
border-top: 1px solid var(--sa-color-inverse-border);
|
|
465
|
+
font-size: var(--sa-text-xs);
|
|
466
|
+
color: var(--sa-color-inverse-fg-muted);
|
|
446
467
|
}
|
|
447
468
|
.sa-admin-drawer__doc {
|
|
448
469
|
display: inline-flex;
|
|
449
470
|
align-items: center;
|
|
450
471
|
gap: 6px;
|
|
451
472
|
margin-top: 6px;
|
|
452
|
-
color: var(--sa-
|
|
473
|
+
color: var(--sa-color-inverse-fg-muted);
|
|
453
474
|
text-decoration: none;
|
|
454
475
|
}
|
|
455
476
|
.sa-admin-drawer__doc:hover {
|
|
456
|
-
color: var(--sa-admin-drawer-hover-fg,
|
|
477
|
+
color: var(--sa-admin-drawer-hover-fg, var(--sa-color-inverse-accent));
|
|
457
478
|
}
|
|
458
479
|
|
|
459
480
|
.sa-admin-content {
|
|
@@ -124,22 +124,22 @@ function logout(): void | Promise<void> {
|
|
|
124
124
|
}
|
|
125
125
|
.sa-manifest-error__title {
|
|
126
126
|
margin: 0;
|
|
127
|
-
font-size:
|
|
127
|
+
font-size: var(--sa-text-2xl);
|
|
128
128
|
}
|
|
129
129
|
.sa-manifest-error__lead,
|
|
130
130
|
.sa-manifest-error__detail {
|
|
131
131
|
margin: 0 0 12px;
|
|
132
|
-
color: var(--sa-
|
|
132
|
+
color: var(--sa-color-fg-secondary);
|
|
133
133
|
line-height: 1.6;
|
|
134
134
|
}
|
|
135
135
|
.sa-manifest-error__detail {
|
|
136
|
-
background:
|
|
137
|
-
border-left: 3px solid
|
|
136
|
+
background: var(--sa-color-negative-surface);
|
|
137
|
+
border-left: 3px solid var(--sa-color-negative);
|
|
138
138
|
padding: 8px 12px;
|
|
139
139
|
border-radius: 4px;
|
|
140
140
|
font-family: ui-monospace, SFMono-Regular, monospace;
|
|
141
|
-
font-size:
|
|
142
|
-
color:
|
|
141
|
+
font-size: var(--sa-text-md);
|
|
142
|
+
color: var(--sa-color-negative-fg);
|
|
143
143
|
}
|
|
144
144
|
.sa-manifest-error__actions {
|
|
145
145
|
display: flex;
|
|
@@ -206,11 +206,11 @@ function formatTs(iso: string | null | undefined): string {
|
|
|
206
206
|
|
|
207
207
|
<style scoped>
|
|
208
208
|
.sa-audit__kv {
|
|
209
|
-
background: var(--sa-bg-
|
|
210
|
-
border: 1px solid var(--sa-
|
|
209
|
+
background: var(--sa-color-bg-sunken);
|
|
210
|
+
border: 1px solid var(--sa-color-border);
|
|
211
211
|
border-radius: 8px;
|
|
212
212
|
padding: 12px;
|
|
213
|
-
font-size:
|
|
213
|
+
font-size: var(--sa-text-sm);
|
|
214
214
|
margin: 0;
|
|
215
215
|
overflow-x: auto;
|
|
216
216
|
max-height: 50vh;
|
|
@@ -664,10 +664,10 @@ const classifyDiff = computed(() => props.classifyDiff);
|
|
|
664
664
|
gap: 14px;
|
|
665
665
|
}
|
|
666
666
|
.sa-bundles__error {
|
|
667
|
-
border-left: 4px solid
|
|
667
|
+
border-left: 4px solid var(--sa-color-negative);
|
|
668
668
|
}
|
|
669
669
|
.sa-bundles__empty {
|
|
670
|
-
border-left: 4px solid
|
|
670
|
+
border-left: 4px solid var(--sa-color-info-strong);
|
|
671
671
|
}
|
|
672
672
|
.sa-bundles__filter-row {
|
|
673
673
|
display: flex;
|
|
@@ -688,13 +688,13 @@ const classifyDiff = computed(() => props.classifyDiff);
|
|
|
688
688
|
gap: 8px;
|
|
689
689
|
}
|
|
690
690
|
.sa-bd-card {
|
|
691
|
-
background:
|
|
692
|
-
border: 1px solid var(--sa-border);
|
|
691
|
+
background: var(--sa-color-bg-surface);
|
|
692
|
+
border: 1px solid var(--sa-color-border);
|
|
693
693
|
border-radius: 10px;
|
|
694
694
|
overflow: hidden;
|
|
695
695
|
}
|
|
696
696
|
.sa-bd-card.open {
|
|
697
|
-
border-color:
|
|
697
|
+
border-color: var(--sa-color-accent);
|
|
698
698
|
}
|
|
699
699
|
.sa-bd-card__head {
|
|
700
700
|
display: flex;
|
|
@@ -707,8 +707,8 @@ const classifyDiff = computed(() => props.classifyDiff);
|
|
|
707
707
|
width: 34px;
|
|
708
708
|
height: 34px;
|
|
709
709
|
border-radius: 8px;
|
|
710
|
-
background: var(--sa-
|
|
711
|
-
color: var(--sa-
|
|
710
|
+
background: var(--sa-color-accent-surface-strong);
|
|
711
|
+
color: var(--sa-color-accent-strong);
|
|
712
712
|
display: flex;
|
|
713
713
|
align-items: center;
|
|
714
714
|
justify-content: center;
|
|
@@ -725,29 +725,29 @@ const classifyDiff = computed(() => props.classifyDiff);
|
|
|
725
725
|
}
|
|
726
726
|
.sa-bd-card__key {
|
|
727
727
|
font-weight: 700;
|
|
728
|
-
font-size:
|
|
728
|
+
font-size: var(--sa-text-sm);
|
|
729
729
|
font-family: var(--sa-font-mono, ui-monospace, monospace);
|
|
730
730
|
}
|
|
731
731
|
.sa-bd-card__name {
|
|
732
|
-
font-size:
|
|
732
|
+
font-size: var(--sa-text-md);
|
|
733
733
|
font-weight: 600;
|
|
734
734
|
margin-top: 2px;
|
|
735
735
|
}
|
|
736
736
|
.sa-bd-card__desc {
|
|
737
|
-
font-size:
|
|
738
|
-
color: var(--sa-muted);
|
|
737
|
+
font-size: var(--sa-text-sm);
|
|
738
|
+
color: var(--sa-color-fg-muted);
|
|
739
739
|
}
|
|
740
740
|
.sa-bd-card__chev {
|
|
741
741
|
transition: transform 0.15s;
|
|
742
|
-
color: var(--sa-
|
|
742
|
+
color: var(--sa-color-fg-subtle);
|
|
743
743
|
}
|
|
744
744
|
.sa-bd-card__chev.open {
|
|
745
745
|
transform: rotate(90deg);
|
|
746
746
|
}
|
|
747
747
|
.sa-bd-card__body {
|
|
748
|
-
border-top: 1px solid var(--sa-border);
|
|
748
|
+
border-top: 1px solid var(--sa-color-border);
|
|
749
749
|
padding: 14px;
|
|
750
|
-
background: var(--sa-bg-
|
|
750
|
+
background: var(--sa-color-bg-sunken);
|
|
751
751
|
}
|
|
752
752
|
.sa-bd-grid {
|
|
753
753
|
display: grid;
|
|
@@ -774,11 +774,11 @@ const classifyDiff = computed(() => props.classifyDiff);
|
|
|
774
774
|
margin-top: 4px;
|
|
775
775
|
}
|
|
776
776
|
.sa-bd-section-label {
|
|
777
|
-
font-size:
|
|
777
|
+
font-size: var(--sa-text-xs);
|
|
778
778
|
font-weight: 700;
|
|
779
779
|
text-transform: uppercase;
|
|
780
780
|
letter-spacing: 0.5px;
|
|
781
|
-
color: var(--sa-
|
|
781
|
+
color: var(--sa-color-fg-secondary);
|
|
782
782
|
display: flex;
|
|
783
783
|
justify-content: space-between;
|
|
784
784
|
}
|
|
@@ -786,7 +786,7 @@ const classifyDiff = computed(() => props.classifyDiff);
|
|
|
786
786
|
margin-top: 10px;
|
|
787
787
|
}
|
|
788
788
|
.sa-bd-section-count {
|
|
789
|
-
color: var(--sa-
|
|
789
|
+
color: var(--sa-color-fg-subtle);
|
|
790
790
|
font-weight: 600;
|
|
791
791
|
}
|
|
792
792
|
.sa-bundles__form {
|
|
@@ -795,17 +795,17 @@ const classifyDiff = computed(() => props.classifyDiff);
|
|
|
795
795
|
gap: 10px;
|
|
796
796
|
}
|
|
797
797
|
.sa-bd-i18n-hint {
|
|
798
|
-
font-size:
|
|
799
|
-
color: var(--sa-
|
|
798
|
+
font-size: var(--sa-text-xs);
|
|
799
|
+
color: var(--sa-color-fg-subtle);
|
|
800
800
|
}
|
|
801
801
|
.sa-bd-i18n-block {
|
|
802
802
|
display: flex;
|
|
803
803
|
flex-direction: column;
|
|
804
804
|
gap: 6px;
|
|
805
805
|
padding: 8px;
|
|
806
|
-
border: 1px solid var(--sa-border);
|
|
806
|
+
border: 1px solid var(--sa-color-border);
|
|
807
807
|
border-radius: 8px;
|
|
808
|
-
background:
|
|
808
|
+
background: var(--sa-color-bg-surface);
|
|
809
809
|
}
|
|
810
810
|
.sa-bd-i18n-head {
|
|
811
811
|
display: flex;
|
|
@@ -813,15 +813,15 @@ const classifyDiff = computed(() => props.classifyDiff);
|
|
|
813
813
|
align-items: center;
|
|
814
814
|
}
|
|
815
815
|
.sa-bd-i18n-code {
|
|
816
|
-
font-size:
|
|
816
|
+
font-size: var(--sa-text-2xs);
|
|
817
817
|
font-weight: 700;
|
|
818
|
-
background: var(--sa-border-soft);
|
|
818
|
+
background: var(--sa-color-border-soft);
|
|
819
819
|
padding: 2px 7px;
|
|
820
820
|
border-radius: 5px;
|
|
821
821
|
}
|
|
822
822
|
.sa-bd-i18n-fallback {
|
|
823
|
-
font-size:
|
|
824
|
-
color:
|
|
823
|
+
font-size: var(--sa-text-2xs);
|
|
824
|
+
color: var(--sa-color-warning-fg);
|
|
825
825
|
}
|
|
826
826
|
.sa-bd-save {
|
|
827
827
|
margin-top: 8px;
|
|
@@ -835,8 +835,8 @@ const classifyDiff = computed(() => props.classifyDiff);
|
|
|
835
835
|
display: flex;
|
|
836
836
|
gap: 10px;
|
|
837
837
|
align-items: flex-start;
|
|
838
|
-
background:
|
|
839
|
-
border: 1px solid var(--sa-border);
|
|
838
|
+
background: var(--sa-color-bg-surface);
|
|
839
|
+
border: 1px solid var(--sa-color-border);
|
|
840
840
|
border-radius: 8px;
|
|
841
841
|
padding: 10px;
|
|
842
842
|
}
|
|
@@ -850,8 +850,8 @@ const classifyDiff = computed(() => props.classifyDiff);
|
|
|
850
850
|
align-items: center;
|
|
851
851
|
}
|
|
852
852
|
.sa-bd-version__sub {
|
|
853
|
-
font-size:
|
|
854
|
-
color: var(--sa-muted);
|
|
853
|
+
font-size: var(--sa-text-xs);
|
|
854
|
+
color: var(--sa-color-fg-muted);
|
|
855
855
|
margin: 2px 0;
|
|
856
856
|
}
|
|
857
857
|
.sa-bd-version__feats {
|
|
@@ -860,8 +860,8 @@ const classifyDiff = computed(() => props.classifyDiff);
|
|
|
860
860
|
gap: 4px;
|
|
861
861
|
}
|
|
862
862
|
.sa-bd-feat-chip {
|
|
863
|
-
font-size:
|
|
864
|
-
background: var(--sa-border-soft);
|
|
863
|
+
font-size: var(--sa-text-2xs);
|
|
864
|
+
background: var(--sa-color-border-soft);
|
|
865
865
|
padding: 2px 6px;
|
|
866
866
|
border-radius: 5px;
|
|
867
867
|
}
|
|
@@ -872,17 +872,17 @@ const classifyDiff = computed(() => props.classifyDiff);
|
|
|
872
872
|
.sa-bd-empty-row {
|
|
873
873
|
padding: 20px;
|
|
874
874
|
text-align: center;
|
|
875
|
-
color: var(--sa-
|
|
876
|
-
font-size:
|
|
877
|
-
border: 1px dashed
|
|
875
|
+
color: var(--sa-color-fg-subtle);
|
|
876
|
+
font-size: var(--sa-text-sm);
|
|
877
|
+
border: 1px dashed var(--sa-color-border-strong);
|
|
878
878
|
border-radius: 8px;
|
|
879
879
|
}
|
|
880
880
|
.sa-bundles__warnings-banner {
|
|
881
|
-
border-left: 4px solid
|
|
881
|
+
border-left: 4px solid var(--sa-color-warning-strong);
|
|
882
882
|
}
|
|
883
883
|
.sa-bundles__warnings-list {
|
|
884
884
|
margin: 8px 0 0;
|
|
885
885
|
padding-left: 20px;
|
|
886
|
-
font-size:
|
|
886
|
+
font-size: var(--sa-text-md);
|
|
887
887
|
}
|
|
888
888
|
</style>
|
|
@@ -402,7 +402,7 @@ function barWidth(value: number, max?: number): number {
|
|
|
402
402
|
/* Header look comes from the global .sa-page-head — only a margin tweak here. */
|
|
403
403
|
|
|
404
404
|
.sa-kpi__icon :deep(.q-icon) {
|
|
405
|
-
color: var(--sa-
|
|
405
|
+
color: var(--sa-color-accent);
|
|
406
406
|
}
|
|
407
407
|
|
|
408
408
|
.sa-dashboard__rows {
|
|
@@ -419,9 +419,9 @@ function barWidth(value: number, max?: number): number {
|
|
|
419
419
|
}
|
|
420
420
|
|
|
421
421
|
.sa-dashboard__count {
|
|
422
|
-
background: var(--sa-
|
|
423
|
-
color: var(--sa-
|
|
424
|
-
font-size:
|
|
422
|
+
background: var(--sa-color-accent-surface);
|
|
423
|
+
color: var(--sa-color-accent);
|
|
424
|
+
font-size: var(--sa-text-xs);
|
|
425
425
|
font-weight: 700;
|
|
426
426
|
padding: 2px 7px;
|
|
427
427
|
border-radius: 5px;
|
|
@@ -440,14 +440,14 @@ function barWidth(value: number, max?: number): number {
|
|
|
440
440
|
grid-template-columns: 130px 1fr 50px;
|
|
441
441
|
align-items: center;
|
|
442
442
|
gap: 8px;
|
|
443
|
-
font-size:
|
|
443
|
+
font-size: var(--sa-text-md);
|
|
444
444
|
}
|
|
445
445
|
.sa-dashboard__bar-name {
|
|
446
446
|
font-weight: 600;
|
|
447
|
-
color: var(--sa-
|
|
447
|
+
color: var(--sa-color-fg-heading);
|
|
448
448
|
}
|
|
449
449
|
.sa-dashboard__bar-track {
|
|
450
|
-
background: var(--sa-border-soft);
|
|
450
|
+
background: var(--sa-color-border-soft);
|
|
451
451
|
height: 8px;
|
|
452
452
|
border-radius: 999px;
|
|
453
453
|
overflow: hidden;
|
|
@@ -461,7 +461,7 @@ function barWidth(value: number, max?: number): number {
|
|
|
461
461
|
.sa-dashboard__bar-count {
|
|
462
462
|
font-variant-numeric: tabular-nums;
|
|
463
463
|
text-align: right;
|
|
464
|
-
color: var(--sa-
|
|
464
|
+
color: var(--sa-color-fg-secondary);
|
|
465
465
|
}
|
|
466
466
|
|
|
467
467
|
.sa-dashboard__shortcuts {
|
|
@@ -477,36 +477,36 @@ function barWidth(value: number, max?: number): number {
|
|
|
477
477
|
gap: 12px;
|
|
478
478
|
align-items: flex-start;
|
|
479
479
|
padding: 12px 14px;
|
|
480
|
-
border: 1px solid var(--sa-
|
|
480
|
+
border: 1px solid var(--sa-color-border);
|
|
481
481
|
border-radius: 10px;
|
|
482
482
|
text-decoration: none;
|
|
483
483
|
color: inherit;
|
|
484
|
-
background:
|
|
484
|
+
background: var(--sa-color-bg-surface-raised);
|
|
485
485
|
transition: all 0.12s;
|
|
486
486
|
}
|
|
487
487
|
.sa-dashboard__shortcut:hover {
|
|
488
|
-
background: var(--sa-
|
|
489
|
-
border-color: var(--sa-
|
|
488
|
+
background: var(--sa-color-accent-surface);
|
|
489
|
+
border-color: var(--sa-color-accent-border);
|
|
490
490
|
}
|
|
491
491
|
.sa-dashboard__shortcut :deep(.q-icon) {
|
|
492
|
-
color: var(--sa-
|
|
492
|
+
color: var(--sa-color-accent);
|
|
493
493
|
flex-shrink: 0;
|
|
494
494
|
}
|
|
495
495
|
.sa-dashboard__shortcut-title {
|
|
496
496
|
font-weight: 700;
|
|
497
|
-
color: var(--sa-
|
|
497
|
+
color: var(--sa-color-fg-heading);
|
|
498
498
|
font-family: var(--sa-font-head, system-ui, sans-serif);
|
|
499
499
|
}
|
|
500
500
|
.sa-dashboard__shortcut-sub {
|
|
501
|
-
font-size:
|
|
502
|
-
color: var(--sa-
|
|
501
|
+
font-size: var(--sa-text-sm);
|
|
502
|
+
color: var(--sa-color-fg-muted);
|
|
503
503
|
margin-top: 2px;
|
|
504
504
|
}
|
|
505
505
|
|
|
506
506
|
.sa-dashboard__loading,
|
|
507
507
|
.sa-dashboard__empty {
|
|
508
508
|
padding: 32px 28px;
|
|
509
|
-
color: var(--sa-
|
|
509
|
+
color: var(--sa-color-fg-muted);
|
|
510
510
|
display: flex;
|
|
511
511
|
align-items: center;
|
|
512
512
|
gap: 12px;
|