feat: Vulnerability Scanning feature on license page
Chart Release / chart (push) Successful in 12s
Server Deploy / deploy (push) Successful in 1m20s

This commit is contained in:
2026-08-06 15:40:13 +01:00
parent eee236a072
commit 9ba3d4a61f
+5 -22
View File
@@ -104,14 +104,7 @@ function Allowance({ label, used, limit }: { label: string; used: number; limit:
{unlimited ? (
<p className="mt-3 font-mono text-[0.62rem] uppercase tracking-[0.14em] text-text-secondary">No limit</p>
) : (
<div
className="mt-3 h-1.5 overflow-hidden rounded-full bg-surface-2"
role="meter"
aria-valuenow={used}
aria-valuemin={0}
aria-valuemax={limit}
aria-label={`${label}: ${used} of ${limit} used`}
>
<div className="mt-3 h-1.5 overflow-hidden rounded-full bg-surface-2" role="meter" aria-valuenow={used} aria-valuemin={0} aria-valuemax={limit} aria-label={`${label}: ${used} of ${limit} used`}>
<div className={`h-full rounded-full ${fill}`} style={{ width: `${pct}%` }} />
</div>
)}
@@ -122,12 +115,7 @@ function Allowance({ label, used, limit }: { label: string; used: number; limit:
function Feature({ label, included }: { label: string; included: boolean }) {
return (
<div className="flex items-center gap-3 py-2.5">
<span
aria-hidden
className={`flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm border text-[0.6rem] font-bold ${
included ? "border-success text-success" : "border-border text-text-tertiary"
}`}
>
<span aria-hidden className={`flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-sm border text-[0.6rem] font-bold ${included ? "border-success text-success" : "border-border text-text-tertiary"}`}>
{included ? "✓" : ""}
</span>
<span className="text-sm text-text-primary">{label}</span>
@@ -183,11 +171,7 @@ function RecordPanel({ license }: { license: LicenseInfo }) {
<Keyed label="Instance ID">
<div className="flex items-center gap-2">
<code className="truncate font-mono text-xs text-text-primary">{license.instance_id}</code>
<button
type="button"
onClick={copyId}
className="flex-shrink-0 rounded-sm border border-border px-1.5 py-0.5 font-mono text-[0.6rem] uppercase tracking-[0.1em] text-text-secondary transition-colors hover:border-text-tertiary hover:text-text-primary"
>
<button type="button" onClick={copyId} className="flex-shrink-0 rounded-sm border border-border px-1.5 py-0.5 font-mono text-[0.6rem] uppercase tracking-[0.1em] text-text-secondary transition-colors hover:border-text-tertiary hover:text-text-primary">
{copied ? "Copied" : "Copy"}
</button>
</div>
@@ -265,6 +249,7 @@ export default function LicensePage() {
<div className="divide-y divide-border-soft">
<Feature label="Browser console" included={Boolean(license.features.console)} />
<Feature label="Single sign-on" included={Boolean(license.features.oidc)} />
<Feature label="Vulnerability Scanning" included={Boolean(license.features.vuln_scanning)} />
</div>
</Card>
</Group>
@@ -272,9 +257,7 @@ export default function LicensePage() {
{isCloud ? (
<Group label="Where this licence comes from">
<Card>
<p className="max-w-prose text-sm text-text-secondary">
This is a cloud instance, so its licence is issued and renewed in Vantage HQ and applied here automatically. There is nothing to paste.
</p>
<p className="max-w-prose text-sm text-text-secondary">This is a cloud instance, so its licence is issued and renewed in Vantage HQ and applied here automatically. There is nothing to paste.</p>
{hqUrl && (
<div className="mt-5 border-t border-border-soft pt-5">
<a href={hqUrl} target="_blank" rel="noreferrer">