From f65b4e1e0d5648038823962349279be4badc68ed Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Tue, 24 Jun 2025 16:02:02 +0200 Subject: Refactor navigation structure: move NavBar to its own component, implement geolocation handling, and remove unused isWithinVigo function from AppContext. --- src/frontend/app/root.tsx | 54 ++++++++++++++++------------------------------- 1 file changed, 18 insertions(+), 36 deletions(-) (limited to 'src/frontend/app/root.tsx') diff --git a/src/frontend/app/root.tsx b/src/frontend/app/root.tsx index d90dba0..9d59ce7 100644 --- a/src/frontend/app/root.tsx +++ b/src/frontend/app/root.tsx @@ -16,9 +16,8 @@ import "./root.css"; import "maplibre-theme/icons.default.css"; import "maplibre-theme/modern.css"; import { Protocol } from "pmtiles"; -import maplibregl from "maplibre-gl"; +import maplibregl, { type LngLatLike } from "maplibre-gl"; import { AppProvider } from "./AppContext"; -import { Map, MapPin, Settings } from "lucide-react"; const pmtiles = new Protocol(); maplibregl.addProtocol("pmtiles", pmtiles.tile); //#endregion @@ -81,48 +80,31 @@ export function Layout({ children }: { children: React.ReactNode }) { ); } -export default function App() { - const navItems = [ - { - name: 'Paradas', - icon: MapPin, - path: '/stops' - }, - { - name: 'Mapa', - icon: Map, - path: '/map' - }, - { - name: 'Ajustes', - icon: Settings, - path: '/settings' + // Helper: check if coordinates are within Vigo bounds + function isWithinVigo(lngLat: LngLatLike): boolean { + let lng: number, lat: number; + if (Array.isArray(lngLat)) { + [lng, lat] = lngLat; + } else if ('lng' in lngLat && 'lat' in lngLat) { + lng = lngLat.lng; + lat = lngLat.lat; + } else { + return false; } - ]; + // Rough bounding box for Vigo + return lat >= 42.18 && lat <= 42.30 && lng >= -8.78 && lng <= -8.65; + } +import NavBar from "./components/NavBar"; + +export default function App() { return (
-- cgit v1.3