crates/web/src/components/ was a byte-for-byte copy of the
DioxusLabs/components "preview" registry (a shadcn-style copy-into-
your-project source, not something published as a dependency). Move it
wholesale into a new feedsignal-dioxus-components crate so it reads as
vendored code we depend on rather than application source, and future
app-specific styling should layer on via the class/attributes props
each component already accepts instead of editing the vendored files.
No component logic changed — this is a pure move plus import-path
updates in the four app files that consumed it.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Fixed height + overflow:hidden on .dx-sidebar-menu-button caused long
feed titles (real RSS <title> text, often longer than the custom
labels shown in other readers) to clip and visually collide with the
next row. Switch to min-height per size variant and drop the
overflow/height clipping so rows grow to fit wrapped text; the
existing scrollable sidebar-content container handles the rest.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Default view stays the all-feeds joined article list, now with a sidebar
listing every subscribed feed so a reader can pin down to one feed's
articles. Filtering happens server-side (list_ranked_articles now takes
an optional feed_id).
Pulled in the sidebar/badge/scroll_area (plus their sheet/skeleton/
tooltip/separator dependencies) components via `dx components add`
instead of hand-rolling nav/tag/scroll markup, matching this project's
existing pattern of using the Dioxus component library over raw
elements (see button/input).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PqTJmazHBQK878vjQ4JnnF