feat(web): align AwoooP controls with WOOO radius tokens
All checks were successful
CD Pipeline / tests (push) Successful in 1m30s
Code Review / ai-code-review (push) Successful in 14s
CD Pipeline / build-and-deploy (push) Successful in 4m26s
CD Pipeline / post-deploy-checks (push) Successful in 1m30s

This commit is contained in:
Your Name
2026-06-04 19:02:53 +08:00
parent f1314e089c
commit b61ee9b088
2 changed files with 10 additions and 10 deletions

View File

@@ -1390,7 +1390,7 @@ export default function ApprovalsPage() {
<button
onClick={() => { setLoading(true); fetchApprovals(); }}
disabled={loading}
className="flex items-center gap-2 px-3 py-2 text-sm text-muted-foreground hover:text-foreground hover:bg-accent rounded-lg transition disabled:opacity-50"
className="flex items-center gap-2 rounded-button px-3 py-2 text-sm text-muted-foreground transition hover:bg-accent hover:text-foreground disabled:opacity-50"
aria-label={t("page.refreshNow")}
>
<RefreshCw className={cn("w-4 h-4", loading && "animate-spin")} aria-hidden="true" />
@@ -1454,7 +1454,7 @@ export default function ApprovalsPage() {
<select
value={evidenceFilter}
onChange={(e) => setEvidenceFilter(e.target.value as "" | RemediationStatus)}
className="appearance-none pl-3 pr-8 py-1.5 text-sm bg-background border border-border rounded-lg text-foreground focus:outline-none focus:ring-2 focus:ring-brand-accent/50 cursor-pointer"
className="appearance-none rounded-button border border-border bg-background py-1.5 pl-3 pr-8 text-sm text-foreground cursor-pointer focus:outline-none focus:ring-2 focus:ring-brand-accent/50"
aria-label={tEvidence("filters.label")}
>
<option value="">{tEvidence("filters.all")}</option>

View File

@@ -955,7 +955,7 @@ function RunStateBadge({ state }: { state: RunState }) {
return (
<span
className={cn(
"inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-md text-xs font-mono font-medium border",
"inline-flex items-center gap-1.5 rounded-wooo-sm border px-2.5 py-0.5 text-xs font-mono font-medium",
config.bg,
config.text,
config.border
@@ -4161,7 +4161,7 @@ export default function RunsPage() {
fetchRuns({ refresh: true });
}}
disabled={loading}
className="flex items-center gap-2 px-3 py-2 text-sm text-muted-foreground hover:text-foreground hover:bg-accent rounded-lg transition disabled:opacity-50"
className="flex items-center gap-2 rounded-button px-3 py-2 text-sm text-muted-foreground transition hover:bg-accent hover:text-foreground disabled:opacity-50"
aria-label="立即重新整理"
>
<RefreshCw className={cn("w-4 h-4", loading && "animate-spin")} aria-hidden="true" />
@@ -4312,7 +4312,7 @@ export default function RunsPage() {
<select
value={projectFilter}
onChange={(e) => { setProjectFilter(e.target.value); setPage(1); }}
className="appearance-none pl-3 pr-8 py-1.5 text-sm bg-background border border-border rounded-lg text-foreground focus:outline-none focus:ring-2 focus:ring-brand-accent/50 cursor-pointer"
className="appearance-none rounded-button border border-border bg-background py-1.5 pl-3 pr-8 text-sm text-foreground cursor-pointer focus:outline-none focus:ring-2 focus:ring-brand-accent/50"
aria-label="選擇租戶"
>
<option value=""></option>
@@ -4330,7 +4330,7 @@ export default function RunsPage() {
<select
value={statusFilter}
onChange={(e) => { setStatusFilter(e.target.value); setPage(1); }}
className="appearance-none pl-3 pr-8 py-1.5 text-sm bg-background border border-border rounded-lg text-foreground focus:outline-none focus:ring-2 focus:ring-brand-accent/50 cursor-pointer"
className="appearance-none rounded-button border border-border bg-background py-1.5 pl-3 pr-8 text-sm text-foreground cursor-pointer focus:outline-none focus:ring-2 focus:ring-brand-accent/50"
aria-label="選擇狀態"
>
<option value=""></option>
@@ -4351,7 +4351,7 @@ export default function RunsPage() {
setEvidenceFilter(e.target.value as "" | RemediationStatus);
setPage(1);
}}
className="appearance-none pl-3 pr-8 py-1.5 text-sm bg-background border border-border rounded-lg text-foreground focus:outline-none focus:ring-2 focus:ring-brand-accent/50 cursor-pointer"
className="appearance-none rounded-button border border-border bg-background py-1.5 pl-3 pr-8 text-sm text-foreground cursor-pointer focus:outline-none focus:ring-2 focus:ring-brand-accent/50"
aria-label={tEvidence("filters.label")}
>
<option value="">{tEvidence("filters.all")}</option>
@@ -4372,7 +4372,7 @@ export default function RunsPage() {
setCallbackFilter(e.target.value as "" | CallbackReplyStatus);
setPage(1);
}}
className="appearance-none pl-3 pr-8 py-1.5 text-sm bg-background border border-border rounded-lg text-foreground focus:outline-none focus:ring-2 focus:ring-brand-accent/50 cursor-pointer"
className="appearance-none rounded-button border border-border bg-background py-1.5 pl-3 pr-8 text-sm text-foreground cursor-pointer focus:outline-none focus:ring-2 focus:ring-brand-accent/50"
aria-label={tCallback("filters.label")}
>
<option value="">{tCallback("filters.all")}</option>
@@ -4392,7 +4392,7 @@ export default function RunsPage() {
setIncidentFilter(e.target.value.trim().toUpperCase());
setPage(1);
}}
className="min-w-[260px] rounded-lg border border-border bg-background px-3 py-1.5 font-mono text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-brand-accent/50"
className="min-w-[260px] rounded-button border border-border bg-background px-3 py-1.5 font-mono text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-brand-accent/50"
aria-label={tEvidence("filters.incidentLabel")}
placeholder={tEvidence("filters.incidentPlaceholder")}
/>
@@ -4400,7 +4400,7 @@ export default function RunsPage() {
{/* Error State */}
{error && (
<div className="flex items-start gap-3 p-4 bg-red-900/20 border border-red-800/40 rounded-lg">
<div className="flex items-start gap-3 rounded-card border border-red-800/40 bg-red-900/20 p-4">
<AlertCircle className="w-5 h-5 text-red-400 flex-shrink-0 mt-0.5" aria-hidden="true" />
<div>
<p className="text-sm font-medium text-red-300"> Run </p>