Part of #291.
Motivation
Timeline was styled before the portal design settled. It drifts from the frame, and
its styling is not consistently driven by the theme tokens the design calls for.
Design references
Same design in both; only the tokens differ. Where a frame is ambiguous, the
prototype is the tiebreaker.
Done when
Out of scope
Behavior, data, placement in the portal, new tokens, dark mode. Styling only.
Notes — written as of 88ce91a on 2026-09-01. Rough guide; re-verify against latest code.
The most drift: off the shared pattern (Timeline.css, lib/FloatingPopover/FloatingPopover.css, lib/geo/DateSelector/DateSelector.css), 67 hex, and 18 literal font-size: Npx — more than every other tool combined. Also the most visually prominent. Good candidate to do first; split if the PR gets unwieldy.
88ce91aa (LayerFilter) is the reference for what this PR looks like: token-driven
values, explicit hover/focus states, min-width: 0 and overflow guards, transitions
on the properties that change.
Part of #291.
Motivation
Timeline was styled before the portal design settled. It drifts from the frame, and
its styling is not consistently driven by the theme tokens the design calls for.
Design references
Same design in both; only the tokens differ. Where a frame is ambiguous, the
prototype is the tiebreaker.
Done when
Out of scope
Behavior, data, placement in the portal, new tokens, dark mode. Styling only.
Notes — written as of 88ce91a on 2026-09-01. Rough guide; re-verify against latest code.
The most drift: off the shared pattern (
Timeline.css,lib/FloatingPopover/FloatingPopover.css,lib/geo/DateSelector/DateSelector.css), 67 hex, and 18 literalfont-size: Npx— more than every other tool combined. Also the most visually prominent. Good candidate to do first; split if the PR gets unwieldy.88ce91aa(LayerFilter) is the reference for what this PR looks like: token-drivenvalues, explicit hover/focus states,
min-width: 0and overflow guards, transitionson the properties that change.