Redesign the dictionary lookup UI as a single scrolling list of
expandable cards — one per provider that has a result — instead of
a tab strip with one active provider at a time.
Behavior:
- All enabled dictionaries are queried in parallel; cards render in
user-defined order. Cards whose provider returns no result, an
unsupported format, or an error are removed entirely.
- Cards default to expanded when 3 or fewer providers have results,
collapsed (4-line preview) otherwise. Manual taps are sticky
across re-renders; the auto-decision is reset only when a new
word is looked up.
- Web-search providers (Google, Urban, Merriam-Webster, custom
templates) appear in a separate "Search the web" section as
tappable rows. On the web build they use native target="_blank"
anchors; on Tauri the click is routed through openUrl since
target="_blank" doesn't open externally there.
- The header carries a back arrow (when in-content link navigation
has pushed onto the history stack), the looked-up word, and a
gear that deep-links to Settings → Language → Dictionaries.
Mobile / narrow viewports (<sm) get the same UX as a bottom sheet
(Dialog with snapHeight 0.75); sm+ viewports keep the anchored
popup with triangle pointer. Both share useDictionaryResults +
DictionaryResultsHeader/Body.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>