feat: landing page, result hierarchy, and drawer transitions - #2390
Merged
felladrin merged 5 commits intoAug 16, 2026
Conversation
The empty state was a lone search box. It is now a page with the brand mark, tagline, three suggestion links from the bundled query-suggestions.json, and recent searches from history. HomePage is lazy-loaded so the critical path still only renders the search form, and the suggestion fetch is deferred with requestIdleCallback so first paint is never blocked.
Title and domain shared the same 16px size (domain distinguished only by italics) and snippets had no length cap. Rows now follow one grammar: title (15px/600, AA link color) / domain (12px dimmed meta) / snippet (13.5px, 3-line clamp), spaced 16px instead of 40px. Rows are memoized and use content-visibility, and the per-row JS Transition state is removed, which shrinks the first-load bundle.
Both drawers now use explicit 250ms ease-out transitions matching their position (history slides from the left, settings from the right), and honor prefers-reduced-motion by setting duration to 0 via useReducedMotion.
Owner
|
I've merged The changes are in |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The empty state was a single search box floating in the middle of a grey page. This PR turns it into a proper landing page, gives result rows a real hierarchy, and standardizes drawer motion — while keeping the app flat, lightweight, and faster to load than before.
1. Changes — point by point
Landing page (the empty state)
query-suggestions.json(355 entries already in the repo). Each is a plain/?q=…link — the exact flow the smoke e2e already exercises.HomePageis lazy-loaded; the critical path still renders only the search form. The suggestion fetch is deferred withrequestIdleCallback.Result rows
React.memo-wrapped withcontent-visibility; the per-row JS<Transition>state is removed.Drawers
prefers-reduced-motion.2. Performance — before / after
main)3. Visual effect — before / after
Screenshots:
docs/screenshots/home-dark.png,home-light.png,home-mobile.png,results-dark.png.4. Actual advantages
Validation
tscandbiomeclean. Production build measured (above). Real browser run confirms three suggestion links and the Recent row.Screenshots