From e78d961f119f147ce3801f0e7f4cc2721822b31d Mon Sep 17 00:00:00 2001 From: Joachim Hummel Date: Sat, 29 Nov 2025 20:15:09 +0000 Subject: [PATCH] Improve map page UI with modern SaaS design MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Redesign header with consistent button heights and spacing - Move all controls to single compact row on desktop - Add proper visual hierarchy with subtle shadows and borders - Implement modern color scheme (gray-50/200/300/700/900) - Optimize spacing to maximize map visibility - Improve responsive layout for mobile devices - Add smooth transitions and hover states 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- app/map/page.tsx | 117 +++++++++++++++++++++++++---------------------- 1 file changed, 62 insertions(+), 55 deletions(-) diff --git a/app/map/page.tsx b/app/map/page.tsx index 3de0f29..eb1b72b 100644 --- a/app/map/page.tsx +++ b/app/map/page.tsx @@ -62,38 +62,22 @@ export default function MapPage() { }, []); return ( -
- {/* Header with controls */} -
-
- {/* Top row: Title and Admin link */} -
-

Location Tracker

- -
+
+ {/* Modern SaaS Header - Compact */} +
+
+ {/* Single row with title and controls */} +
+ {/* Title - left aligned */} +

Location Tracker

- {/* Controls row - responsive grid */} -
{/* Device Filter */} -
- +
+ setTimeFilter(Number(e.target.value))} - className="flex-1 sm:flex-none px-2 sm:px-3 py-1 text-sm border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" + className="flex-1 lg:w-32 px-2 py-1.5 text-sm bg-white border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all" > {TIME_FILTERS.map((filter) => (
{/* Pause/Resume Button */} + + {/* Spacer to push buttons to the right */} +
+ + {/* Export and Admin Buttons */} +
- {/* Custom Range (only visible when active) */} + {/* Custom Range - Modern Card Style */} {filterMode === "custom" && ( -
-
- - setStartTime(e.target.value)} - className="flex-1 sm:flex-none px-2 py-1 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 text-xs" - /> -
-
- - setEndTime(e.target.value)} - className="flex-1 sm:flex-none px-2 py-1 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 text-xs" - /> +
+
+
+ + setStartTime(e.target.value)} + className="flex-1 px-3 py-2 text-sm bg-white border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all" + /> +
+
+ + setEndTime(e.target.value)} + className="flex-1 px-3 py-2 text-sm bg-white border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all" + /> +
)}