feat(dailies): a chip responds to the pointer
The strip is the fastest thing on the page to act on and nothing happened under the cursor, so a row of tappable jobs read as a row of status badges. The hover has to be drawn from what the component does not own: a chip's border, ink and wash are mixed from the game's hue, which is data rather than a token and so arrives as an inline style that no rule can override. A ring in the same hue, a one-pixel lift and the label coming up to full ink do the work instead, off `--hue` and `data-done`. Only an outstanding chip brightens its label — on a finished one the ink *is* the hue, and overriding it would trade the one thing saying which game for a hover state. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5
parent
f336e8d8a4
commit
440144fdc1
@@ -194,8 +194,13 @@ function TickChip({
|
||||
aria-pressed={isDone}
|
||||
aria-label={`${ariaLabel}${isDone ? ", done today" : ", not done today"}`}
|
||||
title={title}
|
||||
className="flex max-w-[15rem] items-center gap-2 rounded-full border px-3 py-1.5 text-xs font-medium transition-colors"
|
||||
// Done-ness for the stylesheet: the chip's own colours are the game's
|
||||
// hue and arrive inline, which no rule can override, so the hover has to
|
||||
// be drawn from what inline does not own — see `.tick-chip`.
|
||||
data-done={isDone}
|
||||
className="tick-chip flex max-w-[15rem] items-center gap-2 rounded-full border px-3 py-1.5 text-xs font-medium"
|
||||
style={{
|
||||
["--hue" as string]: hue,
|
||||
borderColor: isDone ? hue : `color-mix(in srgb, ${hue} 20%, transparent)`,
|
||||
// Colour identifies the game; done-ness is carried by the tick, the
|
||||
// full-strength border and the wash. Keeping the label readable matters
|
||||
@@ -217,7 +222,7 @@ function TickChip({
|
||||
opacity={isDone ? 1 : 0.25}
|
||||
/>
|
||||
</svg>
|
||||
<span className="truncate">{label}</span>
|
||||
<span className="tick-label truncate">{label}</span>
|
||||
{streak > 1 && (
|
||||
<span className="tnum shrink-0 text-[0.625rem] opacity-70">{streak}d</span>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user