8c818fd5ace8474886e88761fb0bc35a9ced2d97
On xs + viewMode=map, render a map-first layout: full-bleed map, floating card-shaped control strip at the top (search + Filters + Sort + compact List/Map toggle), and a bottom drawer that slides up when a pin or cluster is tapped. The desktop list-map layout is unchanged. On xs + viewMode=list, the List/Map toggle now appears in the sticky control bar (icon-only) so users can reach the map from the list view. On desktop the toggle stays on the map panel as before. Drawer content: - Single pin → the existing ProviderCard molecule, entire card clickable (navigates to packages) - Cluster → a list of image-free rows (verified icon slot + name + location + rating), tap a row to pan+zoom into the provider - Close X on the drawer clears the active state To support externalising popups, ProviderMap gains two opt-in props (`externalisePopups`, `onActiveChange`) and an imperative handle (`clearActive`, `drillIntoProvider`). Desktop behaviour unchanged when these aren't used. The forwardRef now exposes the handle rather than the DOM element; no existing callsite passed a DOM ref. The filter-dialog children are now defined once as a shared JSX fragment used by both desktop and mobile FilterPanel instances. Header + subhead are suppressed on the mobile map view (per concept reference); they remain on desktop and mobile list for orientation. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Description
No description provided
Languages
TypeScript
94.6%
JavaScript
2.8%
CSS
2.5%
HTML
0.1%