aboutsummaryrefslogtreecommitdiff
path: root/src/Layout.tsx
diff options
context:
space:
mode:
authorAriel Costas Guerrero <94913521+arielcostas@users.noreply.github.com>2025-03-03 18:54:35 +0100
committerAriel Costas Guerrero <94913521+arielcostas@users.noreply.github.com>2025-03-03 18:54:35 +0100
commit3aa6eee0f54dec3e4f92be2ad335a04145ac4db8 (patch)
tree9ccffabd2972249322ebaa6d1de26289d7a41a4c /src/Layout.tsx
parentd3726e50167ed07c483c542cf6739f103dda0dd5 (diff)
Improve the UI
Diffstat (limited to 'src/Layout.tsx')
-rw-r--r--src/Layout.tsx58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/Layout.tsx b/src/Layout.tsx
new file mode 100644
index 0000000..5aaafbf
--- /dev/null
+++ b/src/Layout.tsx
@@ -0,0 +1,58 @@
+import { ReactNode } from 'react';
+import { Link, useLocation } from 'react-router';
+import { MapPin, Map, Info } from 'lucide-react';
+import './Layout.css';
+
+interface LayoutProps {
+ children: ReactNode;
+}
+
+export function Layout({ children }: LayoutProps) {
+ const location = useLocation();
+
+ const navItems = [
+ {
+ name: 'Stops',
+ icon: MapPin,
+ path: '/stops'
+ },
+ {
+ name: 'Maps',
+ icon: Map,
+ path: '/map'
+ },
+ {
+ name: 'About',
+ icon: Info,
+ path: '/about'
+ }
+ ];
+
+ return (
+ <div className="app-container">
+ {/* Main content area */}
+ <main className="main-content">
+ {children}
+ </main>
+
+ {/* Android style bottom navigation bar */}
+ <nav className="nav-bar">
+ {navItems.map(item => {
+ const Icon = item.icon;
+ const isActive = location.pathname.startsWith(item.path);
+
+ return (
+ <Link
+ key={item.name}
+ to={item.path}
+ className={`nav-item ${isActive ? 'active' : ''}`}
+ >
+ <Icon size={24} />
+ <span>{item.name}</span>
+ </Link>
+ );
+ })}
+ </nav>
+ </div>
+ );
+} \ No newline at end of file