diff --git a/src/components/layout/MapToolbar.tsx b/src/components/layout/MapToolbar.tsx
index a77fc2c..a617cd9 100644
--- a/src/components/layout/MapToolbar.tsx
+++ b/src/components/layout/MapToolbar.tsx
@@ -1,8 +1,18 @@
"use client";
import Image from "next/image";
-import { ChartLine, CircleQuestionMark, Settings } from "lucide-react";
+import {
+ ChartLine,
+ CircleQuestionMark,
+ Compass,
+ Moon,
+ Settings,
+ Sun,
+} from "lucide-react";
import { SITE_NAME } from "@/lib/constants/site";
+import { requestGuide } from "@/lib/tour";
+import { useTheme } from "@/providers/ThemeProvider";
+import { Button } from "@/components/ui/button";
import { Card, CardContent, CardTitle } from "@/components/ui/card";
import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group";
@@ -14,6 +24,73 @@ const PANELS = [
{ value: "help", label: "Help", Icon: CircleQuestionMark },
] as const;
+const REPO_URL = "https://github.com/EarthyScience/EarthPrints";
+
+function GitHubMark({ className }: { className?: string }) {
+ return (
+
+ );
+}
+
+const actionClass =
+ "max-md:size-12 max-md:rounded-full max-md:border-border max-md:bg-background max-md:shadow-lg dark:max-md:border-input";
+
+export function MapActions({ onBeforeGuide }: { onBeforeGuide: () => void }) {
+ const { isLight, toggleTheme } = useTheme();
+ const ThemeIcon = isLight ? Moon : Sun;
+
+ return (
+
+
+
+
+
+ }
+ className={actionClass}
+ >
+
+
+
+
+ );
+}
+
type MapToolbarProps = {
openPanel: ToolbarPanel | null;
onOpenPanelChange: (panel: ToolbarPanel | null) => void;
diff --git a/src/components/map/ReliefMap.tsx b/src/components/map/ReliefMap.tsx
index a57fc26..d2530d3 100644
--- a/src/components/map/ReliefMap.tsx
+++ b/src/components/map/ReliefMap.tsx
@@ -30,7 +30,11 @@ import { useTheme } from "@/providers/ThemeProvider";
import { useCellSeries } from "@/hooks/useCellSeries";
import { useGeolocation } from "@/hooks/useGeolocation";
import { useMapSettings } from "@/hooks/useMapSettings";
-import { MapToolbar, type ToolbarPanel } from "@/components/layout/MapToolbar";
+import {
+ MapActions,
+ MapToolbar,
+ type ToolbarPanel,
+} from "@/components/layout/MapToolbar";
import { MapControls } from "@/components/map/MapControls";
import { MapSearch } from "@/components/map/MapSearch";
import { MapTour } from "@/components/map/MapTour";
@@ -303,6 +307,10 @@ export function ReliefMap() {
) : null}
+
+
+ setOpenPanel(null)} />
+
-
-
- );
-}
-
function initials(name: string): string {
return name
.split(" ")
@@ -41,34 +29,11 @@ export function HelpPanel({ onClose }: { onClose: () => void }) {
return (
-
-
-
-
-
-
- }
- >
-
- Source
-
+
+
+
-
-
{TEAM_MEMBERS.map((member, index) => (
{index > 0 && }
diff --git a/src/components/panels/SettingsPanel.tsx b/src/components/panels/SettingsPanel.tsx
index 8b9b9a1..44406bb 100644
--- a/src/components/panels/SettingsPanel.tsx
+++ b/src/components/panels/SettingsPanel.tsx
@@ -1,17 +1,14 @@
"use client";
-import { Moon, Sun } from "lucide-react";
import {
allYearsBytesFor,
formatBytes,
PATCH_WINDOW_SIZES,
type PatchWindowSize,
} from "@/lib/settings/patchWindow";
-import type { Theme } from "@/lib/theme";
import type { TimeBasis } from "@/lib/zarr/localTime";
import type { MapViewMode } from "@/types/map";
import type { MapSettings } from "@/hooks/useMapSettings";
-import { useTheme } from "@/providers/ThemeProvider";
import { FloatingPanel } from "@/components/panels/FloatingPanel";
import { ViewModeTabs } from "@/components/map/ViewModeTabs";
import {
@@ -28,11 +25,6 @@ import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group";
import { SegmentedTabs } from "@/components/ui/segmented-tabs";
import { Switch } from "@/components/ui/switch";
-const THEMES = [
- { value: "light", label: "Light", icon: Sun },
- { value: "dark", label: "Dark", icon: Moon },
-] as const;
-
const TIME_BASES = [
{ value: "local", label: "Local" },
{ value: "utc", label: "UTC" },
@@ -55,38 +47,24 @@ export function SettingsPanel({
onViewModeChange,
onClose,
}: SettingsPanelProps) {
- const { theme, toggleTheme } = useTheme();
-
return (
-