Manage location
This is the single place to refresh providers, compare snapshots, and choose what active_location() returns. Feature demos (GeoJS, Geolocation, Geocoder, Weather, Sun) only read or write one provider — they do not duplicate this UI.
SSG & hydration
Nothing fetches on mount. Refresh buttons run client-side requests after you click. Stored values hydrate from use_persistent after the first paint.
Active location
Auto picks the most recently updated provider (last-write-wins). Or pin a specific provider (or a geocoder backend) — downstream demos read active_location().
No active location — refresh at least one provider below.
Providers
GeoJS (IP-based)
No snapshot yet — click Refresh.
Browser geolocation
No snapshot yet — click Refresh.
Geocoder
US ZIP via Zippopotam.us; city, state, or place with debounced autocomplete via Photon (OpenStreetMap). Photon can rank results near a configurable lat/lon bias. Each backend keeps its own stored pin so you can compare.
Photon search bias
Bias toward 39.7456, -97.0892 (mid-CONUS / Kansas demo preset).
Zippopotam.us
No snapshot for this backend yet.
Photon (OSM)
No snapshot for this backend yet.
No snapshots yet — geocode a ZIP or place above.
Map refine
Placeholder for a future demo (map marker refine).
No snapshot yet — click Refresh.
Persisted under hayley-ssg-template/demo/location-v2 via dioxus_sdk_storage::use_persistent. Values may appear shortly after hydration.