From 1a313366abcfc2735daee7b14610a5dcee43e51a Mon Sep 17 00:00:00 2001 From: rcourtman <8825017+rcourtman@users.noreply.github.com> Date: Mon, 5 Oct 2026 03:04:46 +0100 Subject: [PATCH] Render light-mode banner and callout text at full strength Light-mode text on tinted callouts, banners and selection cards drew at 25% alpha: CalloutCard titles and bodies in every tone (the Security overview's "Recommended hardening steps"), the Alerts thresholds help, the update-channel card titles, Patrol and Action banners. The Tailwind v3 config redefined each colour's 900 and 950 shades as 25% alpha so dark-mode backgrounds could tint, which also faded every light-mode text-*-900. The Tailwind 4 migration kept that parity by rewriting the usages to -900/25. Every light-mode text-*-900/25 and text-*-950/25, hover included, now uses the solid shade. Dark variants, backgrounds, borders and rings keep their tint, so dark mode is unchanged. Contract-Neutral: restores light-mode text colour tokens only; no behaviour, data, route or contract change --- .../e4d02e58000f9ec6.json | 127 ++++++++++++++++++ .../scripts/shared-template-registry.json | 30 ++--- .../src/components/AI/AICostDashboard.tsx | 6 +- .../src/components/AI/Chat/ApprovalCard.tsx | 2 +- .../src/components/AI/Chat/MessageItem.tsx | 2 +- .../AI/Chat/__tests__/AIChat.test.tsx | 8 +- .../AI/Chat/__tests__/MessageItem.test.tsx | 2 +- .../src/components/AI/Chat/index.tsx | 8 +- .../components/Alerts/EmailProviderSelect.tsx | 2 +- .../src/components/Alerts/ThresholdsTable.tsx | 2 +- .../components/Alerts/WebhookConfigForm.tsx | 2 +- .../Discovery/AvailabilityProposalCard.tsx | 14 +- .../Infrastructure/ResourceActionHistory.tsx | 2 +- .../ResourceOperatorStateSection.tsx | 4 +- .../components/Settings/APITokenManager.tsx | 8 +- .../Settings/APITokenManagerDialogs.tsx | 2 +- .../components/Settings/AuditWebhookPanel.tsx | 2 +- .../components/Settings/DataHandlingPanel.tsx | 2 +- .../Settings/DiagnosticsResultsPanel.tsx | 4 +- .../InfrastructureInstallerSection.tsx | 24 ++-- .../Settings/InfrastructureSourcePicker.tsx | 2 +- .../Settings/NodeModalSetupGuideSection.tsx | 12 +- .../Settings/SecurityOverviewPanel.tsx | 2 +- .../components/Settings/SettingsPageShell.tsx | 2 +- .../Settings/UpdateInstallGuide.tsx | 8 +- .../Settings/UpdatesSettingsPanel.tsx | 2 +- .../Settings/UserAssignmentsPanel.tsx | 2 +- .../__tests__/settingsArchitecture.test.ts | 4 +- .../Settings/useProLicensePanelState.ts | 2 +- .../SetupWizard/steps/WelcomeStep.tsx | 2 +- .../src/components/UpdateBanner.tsx | 2 +- .../src/components/patrol/ApprovalBanner.tsx | 4 +- .../src/components/patrol/ApprovalSection.tsx | 2 +- .../patrol/InvestigationMessages.tsx | 2 +- .../src/components/shared/Button.test.tsx | 4 +- .../src/components/shared/CalloutCard.tsx | 24 ++-- .../SharedPrimitives.guardrails.test.ts | 42 +++--- .../shared/TlsVerificationWarningBanner.tsx | 2 +- ...tionCardGroupModel.branchcov0720pm.test.ts | 8 +- .../src/components/shared/buttonModel.ts | 10 +- .../shared/selectionCardGroupModel.ts | 4 +- .../features/actions/ActionDecisionPacket.tsx | 2 +- .../features/actions/ActionReviewDialog.tsx | 2 +- .../alerts/AlertDeadManDestinationSection.tsx | 10 +- .../patrol/PatrolAttentionWorkbench.tsx | 2 +- .../PatrolAutopilotAcknowledgementDialog.tsx | 2 +- .../patrol/PatrolIntelligenceBanners.tsx | 16 +-- .../patrol/PatrolIntelligenceHeader.tsx | 4 +- .../patrol/PatrolIntelligenceWorkspace.tsx | 2 +- .../features/patrol/PatrolObjectivesPanel.tsx | 2 +- .../storageBackups/diskPresentation.ts | 2 +- .../src/features/vmware/VmwarePageSurface.tsx | 2 +- .../__tests__/licensePresentation.test.ts | 4 +- .../src/utils/licensePresentation.ts | 20 +-- 54 files changed, 295 insertions(+), 170 deletions(-) create mode 100644 frontend-modern/browser-verification/e4d02e58000f9ec6.json diff --git a/frontend-modern/browser-verification/e4d02e58000f9ec6.json b/frontend-modern/browser-verification/e4d02e58000f9ec6.json new file mode 100644 index 0000000000..30eddd8602 --- /dev/null +++ b/frontend-modern/browser-verification/e4d02e58000f9ec6.json @@ -0,0 +1,127 @@ +{ + "version": 1, + "base_sha": "f909577fbf0cad505cb159d3c991333a615f0df9", + "verified_at": "2026-10-05T02:03:21Z", + "result": "passed", + "changed_paths": [ + "frontend-modern/src/components/AI/AICostDashboard.tsx", + "frontend-modern/src/components/AI/Chat/ApprovalCard.tsx", + "frontend-modern/src/components/AI/Chat/MessageItem.tsx", + "frontend-modern/src/components/AI/Chat/index.tsx", + "frontend-modern/src/components/Alerts/EmailProviderSelect.tsx", + "frontend-modern/src/components/Alerts/ThresholdsTable.tsx", + "frontend-modern/src/components/Alerts/WebhookConfigForm.tsx", + "frontend-modern/src/components/Discovery/AvailabilityProposalCard.tsx", + "frontend-modern/src/components/Infrastructure/ResourceActionHistory.tsx", + "frontend-modern/src/components/Infrastructure/ResourceOperatorStateSection.tsx", + "frontend-modern/src/components/Settings/APITokenManager.tsx", + "frontend-modern/src/components/Settings/APITokenManagerDialogs.tsx", + "frontend-modern/src/components/Settings/AuditWebhookPanel.tsx", + "frontend-modern/src/components/Settings/DataHandlingPanel.tsx", + "frontend-modern/src/components/Settings/DiagnosticsResultsPanel.tsx", + "frontend-modern/src/components/Settings/InfrastructureInstallerSection.tsx", + "frontend-modern/src/components/Settings/InfrastructureSourcePicker.tsx", + "frontend-modern/src/components/Settings/NodeModalSetupGuideSection.tsx", + "frontend-modern/src/components/Settings/SecurityOverviewPanel.tsx", + "frontend-modern/src/components/Settings/SettingsPageShell.tsx", + "frontend-modern/src/components/Settings/UpdateInstallGuide.tsx", + "frontend-modern/src/components/Settings/UpdatesSettingsPanel.tsx", + "frontend-modern/src/components/Settings/UserAssignmentsPanel.tsx", + "frontend-modern/src/components/Settings/useProLicensePanelState.ts", + "frontend-modern/src/components/SetupWizard/steps/WelcomeStep.tsx", + "frontend-modern/src/components/UpdateBanner.tsx", + "frontend-modern/src/components/patrol/ApprovalBanner.tsx", + "frontend-modern/src/components/patrol/ApprovalSection.tsx", + "frontend-modern/src/components/patrol/InvestigationMessages.tsx", + "frontend-modern/src/components/shared/CalloutCard.tsx", + "frontend-modern/src/components/shared/TlsVerificationWarningBanner.tsx", + "frontend-modern/src/components/shared/buttonModel.ts", + "frontend-modern/src/components/shared/selectionCardGroupModel.ts", + "frontend-modern/src/features/actions/ActionDecisionPacket.tsx", + "frontend-modern/src/features/actions/ActionReviewDialog.tsx", + "frontend-modern/src/features/alerts/AlertDeadManDestinationSection.tsx", + "frontend-modern/src/features/patrol/PatrolAttentionWorkbench.tsx", + "frontend-modern/src/features/patrol/PatrolAutopilotAcknowledgementDialog.tsx", + "frontend-modern/src/features/patrol/PatrolIntelligenceBanners.tsx", + "frontend-modern/src/features/patrol/PatrolIntelligenceHeader.tsx", + "frontend-modern/src/features/patrol/PatrolIntelligenceWorkspace.tsx", + "frontend-modern/src/features/patrol/PatrolObjectivesPanel.tsx", + "frontend-modern/src/features/storageBackups/diskPresentation.ts", + "frontend-modern/src/features/vmware/VmwarePageSurface.tsx", + "frontend-modern/src/utils/licensePresentation.ts" + ], + "content_sha256": { + "frontend-modern/src/components/AI/AICostDashboard.tsx": "a62ca94c90bc91e17fd2612d36d7167e0abd2947436f310be48f7bdab9dc9078", + "frontend-modern/src/components/AI/Chat/ApprovalCard.tsx": "e1b77b05da2a29166390ee17dd7aa2ed0d5d4a951e07961e944faeb7611c2638", + "frontend-modern/src/components/AI/Chat/MessageItem.tsx": "67704b8321a20531bbc85403a36a6757fa4c5e9ec119017275d3f19481793853", + "frontend-modern/src/components/AI/Chat/index.tsx": "c7f3b5629eafc661f4a2799acbcbcf069b4a9e82d9b41cb55d366a49dbeed3cf", + "frontend-modern/src/components/Alerts/EmailProviderSelect.tsx": "574120ba54426bff04de0c27c5be9a9e43ae5e63d486556269c74f9aaf2bc8c6", + "frontend-modern/src/components/Alerts/ThresholdsTable.tsx": "f26c74d485ce6150d346b765c5afac608c5965ee9ebf7f1c02a4f1a17fae3413", + "frontend-modern/src/components/Alerts/WebhookConfigForm.tsx": "e88e1ca899d06edac6f817e0c4bd5dadddfba9e47ebfec95fa8cf8a649d7014b", + "frontend-modern/src/components/Discovery/AvailabilityProposalCard.tsx": "3e802a5c3366f8395f728d684db60988cc30c035460354cd269c76719334f93c", + "frontend-modern/src/components/Infrastructure/ResourceActionHistory.tsx": "85cff86139a44f7fa1e105384446544eaf0a573435f4fe116c5417fcec960616", + "frontend-modern/src/components/Infrastructure/ResourceOperatorStateSection.tsx": "7676174aa82f275341d33a62cd0a3ce250107f3a4aa38d8743269cdeedc10d8c", + "frontend-modern/src/components/Settings/APITokenManager.tsx": "e0635436c22cd345d2cb7a3e1db8f99c7c78eb8d6d6f790b0dc197774219d338", + "frontend-modern/src/components/Settings/APITokenManagerDialogs.tsx": "6e47421f8b3beb59d1e01def1b6408ffb90d5a8eac4e92ba8b20bb3417612760", + "frontend-modern/src/components/Settings/AuditWebhookPanel.tsx": "5477ea4a1e83b4075784f77105d84916c817d20026107feb67ff9c71575ea853", + "frontend-modern/src/components/Settings/DataHandlingPanel.tsx": "a822bd5bdc4af59772fec2533d2fd31bfb02f807f23dd12b31f985e6821ec05c", + "frontend-modern/src/components/Settings/DiagnosticsResultsPanel.tsx": "9f5a2d35b1d1053dadeeb1dac9a969a8ecb3d1839fc5400619afcd7e162116f6", + "frontend-modern/src/components/Settings/InfrastructureInstallerSection.tsx": "2e0ed1f0e5868723e13d6f8b55c520285f04a0193d3defd51a24a09ef347d94f", + "frontend-modern/src/components/Settings/InfrastructureSourcePicker.tsx": "65d3b8936db63ac70f99bf4e40242e7547a0f3f4522c174e99d5a3d4c2b0fc77", + "frontend-modern/src/components/Settings/NodeModalSetupGuideSection.tsx": "f49d30fda691d6b7329f519c0e644f4f55a090b40ad857cf3573b1398a7c36f1", + "frontend-modern/src/components/Settings/SecurityOverviewPanel.tsx": "1301357c6095a957d37cbd9828938de4fd09d82a46355824f457b9ffc7653662", + "frontend-modern/src/components/Settings/SettingsPageShell.tsx": "1cd0d27ce3ee4e157340942b997bf59359797173cadb6b050db496f821bee0f0", + "frontend-modern/src/components/Settings/UpdateInstallGuide.tsx": "8baaf508f256ce88607efd3998f364a93ec130c265eaae3bf544f34cd305b94c", + "frontend-modern/src/components/Settings/UpdatesSettingsPanel.tsx": "ae2ddb9a136739331e444aff73e948654c9077ba1756116f517f12a5b3c080d9", + "frontend-modern/src/components/Settings/UserAssignmentsPanel.tsx": "68f7f454c886465cfeeecff540ce8f31af5df3bd30570102208f14bc52aa2c5c", + "frontend-modern/src/components/Settings/useProLicensePanelState.ts": "014fd9de556af74ff2551b15d46df74a9c1b96710723b86895390d3ebba4aa1c", + "frontend-modern/src/components/SetupWizard/steps/WelcomeStep.tsx": "916216841d26a06113e648b76af6e7548eeb5653e8f668f207f924f1502af30c", + "frontend-modern/src/components/UpdateBanner.tsx": "d845bb4b8f096686e383ef0c9645f4741b13ca26e200437f144086b2318805af", + "frontend-modern/src/components/patrol/ApprovalBanner.tsx": "d60a47251ec2e31a6294e71472f8e1f387b341e4071a85501240c9a2a51259d8", + "frontend-modern/src/components/patrol/ApprovalSection.tsx": "e10509a60d988cfa99a430dbaa60821941e46675bd7e40d7e4a650b2ac4a1b88", + "frontend-modern/src/components/patrol/InvestigationMessages.tsx": "1ffd77e185821ac31850a8cb8a9f0ae95d4645daa9e676d57a7bd9cdf191af6f", + "frontend-modern/src/components/shared/CalloutCard.tsx": "cc8a9c0f3f6afff5ab908b2b366b5bf35654830589cee96249e9855210e222a4", + "frontend-modern/src/components/shared/TlsVerificationWarningBanner.tsx": "83f60a1e536ddca211e4acceb08aa6a928672cc86936f8333cd4be27edcf9110", + "frontend-modern/src/components/shared/buttonModel.ts": "d3d9341bd669e1823ae4566cb6c473c81269cd404ee0ddec79e0e60aeb028748", + "frontend-modern/src/components/shared/selectionCardGroupModel.ts": "a289e079e949556d91e9c7629447ddba504f7b024c269c6e17068d01e9562413", + "frontend-modern/src/features/actions/ActionDecisionPacket.tsx": "1bd8c7b8cc929ace1cf9f1d505c1ba30928d681f314a3e63ab89e36b66600ee1", + "frontend-modern/src/features/actions/ActionReviewDialog.tsx": "9e37a0d32b8f9a0bb051ca2239624b963641b2a2d47e8f776ca3f4571be56ca9", + "frontend-modern/src/features/alerts/AlertDeadManDestinationSection.tsx": "98ac0feefcb93200019401037954fe11b603a4a8e708e219edc11138d36e4f17", + "frontend-modern/src/features/patrol/PatrolAttentionWorkbench.tsx": "a37adba09e97accc240823bfa0e7e2c3b5182af8254b51524b893a5d70e868ba", + "frontend-modern/src/features/patrol/PatrolAutopilotAcknowledgementDialog.tsx": "cccaf1577b2e87dde34e6e86dc2fae211a1b5bc994f5d8bc6b9aef9e7ef5a836", + "frontend-modern/src/features/patrol/PatrolIntelligenceBanners.tsx": "637245636f965fcfb9552d83c74d87578b261b9fcee5ba5f9ffc293282060341", + "frontend-modern/src/features/patrol/PatrolIntelligenceHeader.tsx": "f70c38f961118d7f01ea9a2967a285fe5a7ee3690f84fcbc0d3ac329daf4d6ee", + "frontend-modern/src/features/patrol/PatrolIntelligenceWorkspace.tsx": "bb130227a29b4639613abf965113ab6a8c1d260ab35072d2d598791361c7360d", + "frontend-modern/src/features/patrol/PatrolObjectivesPanel.tsx": "64f6c34b4c5d2e284f1d312fc1a80c763245a11d22628a41fc92ffbadbddc8da", + "frontend-modern/src/features/storageBackups/diskPresentation.ts": "acede3bda0c8e85233370e956da9a81a432e5c1637ef04f4e27d642361e7bcd4", + "frontend-modern/src/features/vmware/VmwarePageSurface.tsx": "c1ef786960f15e4bd3090da6656b79df32d461f3631c01ada68bfc867307c236", + "frontend-modern/src/utils/licensePresentation.ts": "e0bb3dc230b3bb74cd98f9d1c6e6f4a033a59c42f56a4606436e4b4fe0d7c66e" + }, + "routes": [ + "/alerts/thresholds/proxmox", + "/settings/security-overview", + "/settings/system-updates", + "/patrol", + "/actions" + ], + "viewports": [ + { + "width": 1440, + "height": 900 + }, + { + "width": 390, + "height": 844 + } + ], + "states": [ + "Light mode before: computed text colour alpha 0.25 on the thresholds help banner (4 lines), the Security overview callout title, and the Stable update-channel card title", + "Light mode after: zero elements with text alpha below 0.5 on all five routes; titles and bodies render in solid 900 shades", + "Dark mode after: callout, help banner and channel card unchanged (dark: variants untouched)", + "Phone 390: thresholds help banner and security callout readable" + ], + "interactions": [ + "Probed every visible text element computed colour alpha per route before and after", + "Captured element screenshots in light and dark colour schemes" + ] +} diff --git a/frontend-modern/scripts/shared-template-registry.json b/frontend-modern/scripts/shared-template-registry.json index 75e83008da..dcfe89af0c 100644 --- a/frontend-modern/scripts/shared-template-registry.json +++ b/frontend-modern/scripts/shared-template-registry.json @@ -549,7 +549,7 @@ "path": "src/components/Settings/DiscoverySettingsForm.tsx", "patterns": [ "rounded-md border border-amber-200 bg-amber-50/80", - "text-amber-900/25 dark:text-amber-100" + "text-amber-900 dark:text-amber-100" ] } ], @@ -644,14 +644,14 @@ "path": "src/features/platformPage/PlatformOutdatedAgentNotice.tsx", "patterns": [ "rounded-lg border border-amber-300 bg-amber-50", - "text-amber-900/25 underline-offset-2" + "text-amber-900 underline-offset-2" ] }, { "path": "src/features/platformPage/PlatformOutdatedSensorSetupNotice.tsx", "patterns": [ "rounded-lg border border-amber-300 bg-amber-50", - "text-amber-900/25 underline-offset-2" + "text-amber-900 underline-offset-2" ] } ], @@ -1283,9 +1283,9 @@ "path": "src/components/Settings/InfrastructureInstallerSection.tsx", "patterns": [ "inline-flex items-center justify-center rounded-md bg-emerald-600 px-3 py-2 text-sm font-medium text-white transition-colors hover:bg-emerald-700", - "inline-flex items-center justify-center rounded-md border border-emerald-300 bg-white px-3 py-2 text-sm font-medium text-emerald-900/25 transition-colors hover:bg-emerald-100", - "inline-flex items-center justify-center rounded-md border border-emerald-300 bg-white px-3 py-2 text-sm font-medium text-emerald-900/25 hover:bg-emerald-100", - "inline-flex items-center justify-center rounded-md px-3 py-2 text-sm font-medium text-emerald-900/25 hover:bg-emerald-100" + "inline-flex items-center justify-center rounded-md border border-emerald-300 bg-white px-3 py-2 text-sm font-medium text-emerald-900 transition-colors hover:bg-emerald-100", + "inline-flex items-center justify-center rounded-md border border-emerald-300 bg-white px-3 py-2 text-sm font-medium text-emerald-900 hover:bg-emerald-100", + "inline-flex items-center justify-center rounded-md px-3 py-2 text-sm font-medium text-emerald-900 hover:bg-emerald-100" ] }, { @@ -1432,12 +1432,12 @@ "patterns": [ "flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-border bg-surface text-muted transition-colors hover:border-border hover:bg-surface-hover hover:text-base-content disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-surface disabled:hover:text-muted", "shrink-0 p-2 hover:text-base-content rounded-md hover:bg-surface-hover transition-colors", - "inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-blue-700 transition-colors hover:bg-blue-100 hover:text-blue-950/25 disabled:cursor-wait disabled:opacity-70 dark:text-blue-200 dark:hover:bg-blue-900/60", + "inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-blue-700 transition-colors hover:bg-blue-100 hover:text-blue-950 disabled:cursor-wait disabled:opacity-70 dark:text-blue-200 dark:hover:bg-blue-900/60", "rounded-sm p-1 text-muted opacity-0 transition-opacity hover:bg-blue-100 hover:text-blue-600 focus:opacity-100 group-hover:opacity-100 group-focus-within:opacity-100 dark:hover:bg-blue-900/25 dark:hover:text-blue-300", "order-2 flex h-9 w-9 shrink-0 items-center justify-center rounded-md hover:text-base-content hover:bg-surface-hover transition-colors sm:order-0", - "flex h-7 w-7 items-center justify-center rounded-md border border-amber-200 bg-surface text-amber-700 transition-colors hover:bg-amber-100 hover:text-amber-900/25 dark:border-amber-800 dark:bg-amber-950/60 dark:text-amber-200 dark:hover:bg-amber-900/25", - "flex h-7 w-7 items-center justify-center rounded-md text-amber-700 transition-colors hover:bg-amber-100 hover:text-amber-900/25 dark:text-amber-200 dark:hover:bg-amber-900/25", - "inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md text-blue-700 transition-colors hover:bg-blue-100 hover:text-blue-950/25 dark:text-blue-200 dark:hover:bg-blue-900/60", + "flex h-7 w-7 items-center justify-center rounded-md border border-amber-200 bg-surface text-amber-700 transition-colors hover:bg-amber-100 hover:text-amber-900 dark:border-amber-800 dark:bg-amber-950/60 dark:text-amber-200 dark:hover:bg-amber-900/25", + "flex h-7 w-7 items-center justify-center rounded-md text-amber-700 transition-colors hover:bg-amber-100 hover:text-amber-900 dark:text-amber-200 dark:hover:bg-amber-900/25", + "inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md text-blue-700 transition-colors hover:bg-blue-100 hover:text-blue-950 dark:text-blue-200 dark:hover:bg-blue-900/60", "flex h-9 w-9 items-center justify-center rounded-md bg-blue-600 text-white shadow-xs transition-colors hover:bg-blue-700 disabled:cursor-not-allowed disabled:opacity-45", "flex h-7 w-7 shrink-0 items-center justify-center rounded-md border border-border bg-surface text-muted transition-colors hover:border-border hover:bg-surface-hover hover:text-base-content focus:outline-hidden focus:ring-2 focus:ring-blue-500/30" ] @@ -1445,7 +1445,7 @@ { "path": "src/components/AI/Chat/MessageItem.tsx", "patterns": [ - "inline-flex h-5 w-5 items-center justify-center rounded-sm text-blue-700 transition-colors hover:bg-blue-100 hover:text-blue-950/25 focus:bg-blue-100 focus:outline-hidden focus:ring-2 focus:ring-blue-500/30" + "inline-flex h-5 w-5 items-center justify-center rounded-sm text-blue-700 transition-colors hover:bg-blue-100 hover:text-blue-950 focus:bg-blue-100 focus:outline-hidden focus:ring-2 focus:ring-blue-500/30" ] }, { @@ -3408,7 +3408,7 @@ "scopes": ["src/components/AI/Chat/MessageItem.tsx"], "extensions": [".tsx"], "allPatterns": [ - "inline-flex h-5 w-5 items-center justify-center rounded-sm text-blue-700 transition-colors hover:bg-blue-100 hover:text-blue-950/25 focus:bg-blue-100 focus:outline-hidden focus:ring-2 focus:ring-blue-500/30" + "inline-flex h-5 w-5 items-center justify-center rounded-sm text-blue-700 transition-colors hover:bg-blue-100 hover:text-blue-950 focus:bg-blue-100 focus:outline-hidden focus:ring-2 focus:ring-blue-500/30" ], "legacyReason": "Retired migration debt. AI Chat queued message icon actions belong to ActionIconButton.", "allowedPaths": [], @@ -3457,7 +3457,7 @@ "scopes": ["src/components/AI/Chat"], "extensions": [".tsx"], "allPatterns": [ - "inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md text-blue-700 transition-colors hover:bg-blue-100 hover:text-blue-950/25" + "inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md text-blue-700 transition-colors hover:bg-blue-100 hover:text-blue-950" ], "legacyReason": "Retired migration debt. AI Chat accent icon actions belong to ActionIconButton.", "allowedPaths": [], @@ -6103,7 +6103,7 @@ "scopes": ["src/components/Settings", "src/features", "src/pages"], "extensions": [".tsx"], "allPatterns": [ - "rounded-md border border-emerald-300 bg-white px-3 py-2 text-sm font-medium text-emerald-900/25" + "rounded-md border border-emerald-300 bg-white px-3 py-2 text-sm font-medium text-emerald-900" ], "legacyReason": "Retired migration debt. Positive outlined settings actions belong to the shared Button primitive family.", "allowedPaths": [], @@ -6124,7 +6124,7 @@ }, "scopes": ["src/components/Settings", "src/features", "src/pages"], "extensions": [".tsx"], - "allPatterns": ["rounded-md px-3 py-2 text-sm font-medium text-emerald-900/25"], + "allPatterns": ["rounded-md px-3 py-2 text-sm font-medium text-emerald-900"], "legacyReason": "Retired migration debt. Positive ghost settings actions belong to the shared Button primitive family.", "allowedPaths": [], "ignoredPaths": ["src/components/shared/Button.test.tsx"], diff --git a/frontend-modern/src/components/AI/AICostDashboard.tsx b/frontend-modern/src/components/AI/AICostDashboard.tsx index 27babcf133..7ccea5fa18 100644 --- a/frontend-modern/src/components/AI/AICostDashboard.tsx +++ b/frontend-modern/src/components/AI/AICostDashboard.tsx @@ -340,14 +340,14 @@ export const AICostDashboard: Component = () => { -
+
Showing the last {summary()?.effective_days} days due to a {summary()?.retention_days} -day retention window.
-
+
Estimated spend ({formatUSD(estimatedTotalUSD() ?? 0)}) is above your budget ( {formatUSD(budgetForRange() ?? 0)}).
@@ -357,7 +357,7 @@ export const AICostDashboard: Component = () => {
= (props) => { @@ -448,7 +448,7 @@ export const APITokenManager: Component = (props) => { onClick={() => { dismissNewToken(); }} - class="font-medium underline decoration-green-500 underline-offset-2 hover:text-green-900/25 dark:hover:text-green-100" + class="font-medium underline decoration-green-500 underline-offset-2 hover:text-green-900 dark:hover:text-green-100" > Dismiss @@ -461,7 +461,7 @@ export const APITokenManager: Component = (props) => { newTokenRecord()?.scopes?.[0] === MONITORING_READ_SCOPE } > -
+
Magic Kiosk Link

Use this link to open Pulse directly in Kiosk mode without logging in. Perfect for diff --git a/frontend-modern/src/components/Settings/APITokenManagerDialogs.tsx b/frontend-modern/src/components/Settings/APITokenManagerDialogs.tsx index ee4cf50d0b..98fccc1025 100644 --- a/frontend-modern/src/components/Settings/APITokenManagerDialogs.tsx +++ b/frontend-modern/src/components/Settings/APITokenManagerDialogs.tsx @@ -53,7 +53,7 @@ export const APITokenManagerDialogs: Component = (p class="mt-0.5 h-4 w-4 rounded-sm border-border text-amber-600 focus:ring-amber-500" /> - + Full access diff --git a/frontend-modern/src/components/Settings/AuditWebhookPanel.tsx b/frontend-modern/src/components/Settings/AuditWebhookPanel.tsx index aa0c356204..b849909224 100644 --- a/frontend-modern/src/components/Settings/AuditWebhookPanel.tsx +++ b/frontend-modern/src/components/Settings/AuditWebhookPanel.tsx @@ -151,7 +151,7 @@ export const AuditWebhookPanel: Component = (props) => {

-

+

{AUDIT_WEBHOOK_SECURITY_NOTE_TITLE}

diff --git a/frontend-modern/src/components/Settings/DataHandlingPanel.tsx b/frontend-modern/src/components/Settings/DataHandlingPanel.tsx index cd875b6556..1f18ac6b73 100644 --- a/frontend-modern/src/components/Settings/DataHandlingPanel.tsx +++ b/frontend-modern/src/components/Settings/DataHandlingPanel.tsx @@ -176,7 +176,7 @@ export const DataHandlingPanel: Component = () => {