refactor(design): one drawn check for every checkable row that cannot be an input (E28 S3e3b)

ui/MenuCheck: a box filled with the accent for a set (a minus for a group
only partly in), a bare tick for one choice, in the row's leading slot.
Replaces seven hand-drawn marks: three box sizes, a tinted box, a cross
for "on" in the table filter, a trailing tick in the language menu.
This commit is contained in:
2026-09-26 17:34:46 +02:00
parent 9c91eb5d22
commit 2b3094ffc5
10 changed files with 56 additions and 55 deletions
+4 -5
View File
@@ -1,5 +1,6 @@
import { useState, type ReactNode } from "react";
import { ArrowDown, ArrowUp, Check } from "lucide-react";
import { ArrowDown, ArrowUp } from "lucide-react";
import { MenuCheck } from "./MenuCheck";
import { SelectTrigger } from "./SelectTrigger";
import { pickSort, type SortOption, type SortState } from "../../lib/columnSort";
import { PopoverItem, PopoverSurface } from "./AnchoredPopover";
@@ -112,9 +113,7 @@ export default function SortControl({
active === null ? "text-fg" : "text-muted"
}`}
>
<Check
className={`h-3.5 w-3.5 shrink-0 ${active === null ? "text-accent" : "opacity-0"}`}
/>
<MenuCheck kind="one" on={active === null} />
<span className="flex-1 truncate">{defaultLabel}</span>
</PopoverItem>
)}
@@ -131,7 +130,7 @@ export default function SortControl({
on ? "text-fg" : "text-muted"
}`}
>
<Check className={`h-3.5 w-3.5 shrink-0 ${on ? "text-accent" : "opacity-0"}`} />
<MenuCheck kind="one" on={on} />
<span className="flex-1 truncate">{o.label}</span>
</PopoverItem>
);