Coves frontend - a photon fork

feat(ui): migrate icons from Heroicons to Lucide master

Replace @xylightdev/svelte-hero-icons with @lucide/svelte across the app (~90 files, 107 glyphs) to share one icon vocabulary with the mobile app, which is standardising on Lucide. Changes: - Add $lib/ui/kit/icon: a curated icon module re-exporting only the icons the app uses from Lucide's per-icon paths (fast Vite dev, one reviewable vocabulary) plus a thin Icon wrapper preserving the <Icon src size> API and defaulting decorative icons to aria-hidden; IconSource is now Lucide's component type. - Map every Heroicon name to a Lucide equivalent, choosing semantically better glyphs where the literal translation was poor: LogIn for the login rectangle-arrows, Dock for dock auto-hide, Compass for Explore, MessageSquare for comments and Forward for share (all matching mobile), CloudDrizzle for the cozy view, Rows4 for compact. - Standardise the kit Select with buttons: body text color, explicit line-height (Firefox's UA stylesheet resets it on <select>), a single 14px ChevronDown instead of ChevronsUpDown, a plain trailing Check for the selected option with option icons always visible, an optional leading icon in the trigger, and width that hugs the selected label instead of the widest option. - Fix a hydration chimera: ViewSelect resolves its settings-driven icon in a browser-only effect, because an SSR'd icon for the wrong view gets attribute-patched, not replaced, during hydration (rect kept its tag and gained the cloud's path data). - Unify the feed header controls at md size (sort button was sm). - Drop the hero-icons dependency and its app.d.ts module augmentation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QmYufKZKpjPQ9VssZiqWZG


+663 -657
93 changed files