fix(ui): address self-review findings (R13 S2c)
Three low-severity findings from the /code-review high self-pass: - Plex duration: the "Any" chip no longer false-highlights when durationMin/Max hold a set-but-off-bucket value (stale/version-skew state) — it selects nothing then, matching the pre-sweep behaviour, instead of colliding on the empty-string sentinel. - FilterChipGroup: count badge now guards on count > 0 (was `!= null`), matching the Tabs badge so a future count:0 can't render a stray "0" pill. - Extract the shared CountBadge component; Tabs and FilterChipGroup now render the count-badge token from one source (was two near-identical inline spans). gate green (tsc/eslint-0/vitest 136/knip/prettier). Duration self-E2E'd: bucket select + Any toggle intact. Branch not merged.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { type LucideIcon } from "lucide-react";
|
||||
import { useAccountPersistedState } from "../lib/storage";
|
||||
import CountBadge from "./CountBadge";
|
||||
|
||||
// Reusable pill tab-rail for in-page sub-navigation (Configuration, Users & roles, the Settings
|
||||
// sections, the Stats overview/system split…). Horizontal by default; `orientation="vertical"` gives
|
||||
@@ -55,15 +56,7 @@ export default function Tabs({
|
||||
>
|
||||
{Icon && <Icon className="h-4 w-4 shrink-0" />}
|
||||
{tb.label}
|
||||
{tb.badge != null && tb.badge > 0 && (
|
||||
<span
|
||||
className={`text-2xs leading-none px-1.5 py-0.5 rounded-full ${
|
||||
on ? "bg-accent-fg/20" : "bg-accent/20 text-accent"
|
||||
}`}
|
||||
>
|
||||
{tb.badge}
|
||||
</span>
|
||||
)}
|
||||
{tb.badge != null && tb.badge > 0 && <CountBadge count={tb.badge} active={on} />}
|
||||
</button>
|
||||
);
|
||||
})}
|
||||
|
||||
Reference in New Issue
Block a user