diff --git a/src/app/(app)/layout.tsx b/src/app/(app)/layout.tsx index f733425..e80c5f2 100644 --- a/src/app/(app)/layout.tsx +++ b/src/app/(app)/layout.tsx @@ -1,35 +1,4 @@ -import type { Metadata, Viewport } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; -import "./globals.css"; import Header from "@/components/Header"; -import { ConfigProvider } from "@/components/ConfigContext"; -import { QueryProvider } from "@/components/QueryProvider"; - -const geistSans = Geist({ - variable: "--font-geist-sans", - subsets: ["latin"], -}); - -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", - subsets: ["latin"], -}); - -export const metadata: Metadata = { - title: "MeshExplorer", - description: "A real-time map, chat client, and packet analysis tool for mesh networks using MeshCore and Meshtastic.", - icons: { - icon: { url: "/favicon.svg", type: "image/svg+xml" }, - apple: { url: "/favicon.svg", type: "image/svg+xml" } - }, -}; - -export const viewport: Viewport = { - themeColor: [ - { media: "(prefers-color-scheme: light)", color: "oklch(92.2% 0 0)" }, // neutral-200 - { media: "(prefers-color-scheme: dark)", color: "oklch(26.9% 0 0)" }, //neutral-800 - ], -}; export default function RootLayout({ children, @@ -37,20 +6,11 @@ export default function RootLayout({ children: React.ReactNode; }>) { return ( - - -
- - -
-
{children}
- - -
- - + <> +
+
+ {children} +
+ ); } diff --git a/src/app/(embed)/embed/map/page.tsx b/src/app/(embed)/embed/map/page.tsx new file mode 100644 index 0000000..d433ad7 --- /dev/null +++ b/src/app/(embed)/embed/map/page.tsx @@ -0,0 +1,24 @@ +"use client"; +import dynamic from "next/dynamic"; +import { ExternalLink } from "lucide-react"; + +const MapView = dynamic(() => import("@/components/MapView"), { ssr: false }); + +export default function EmbedMapPage() { + return ( +
+ +
+ + MeshExplorer + + +
+
+ ); +} diff --git a/src/app/(embed)/layout.tsx b/src/app/(embed)/layout.tsx new file mode 100644 index 0000000..9d34957 --- /dev/null +++ b/src/app/(embed)/layout.tsx @@ -0,0 +1,11 @@ +export default function EmbedLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( +
+ {children} +
+ ); +} diff --git a/src/app/(app)/api/chat/route.ts b/src/app/api/chat/route.ts similarity index 100% rename from src/app/(app)/api/chat/route.ts rename to src/app/api/chat/route.ts diff --git a/src/app/(app)/api/map/route.ts b/src/app/api/map/route.ts similarity index 100% rename from src/app/(app)/api/map/route.ts rename to src/app/api/map/route.ts diff --git a/src/app/(app)/api/meshcore/node/[publicKey]/neighbors/route.ts b/src/app/api/meshcore/node/[publicKey]/neighbors/route.ts similarity index 100% rename from src/app/(app)/api/meshcore/node/[publicKey]/neighbors/route.ts rename to src/app/api/meshcore/node/[publicKey]/neighbors/route.ts diff --git a/src/app/(app)/api/meshcore/node/[publicKey]/route.ts b/src/app/api/meshcore/node/[publicKey]/route.ts similarity index 100% rename from src/app/(app)/api/meshcore/node/[publicKey]/route.ts rename to src/app/api/meshcore/node/[publicKey]/route.ts diff --git a/src/app/(app)/api/meshcore/search/route.ts b/src/app/api/meshcore/search/route.ts similarity index 100% rename from src/app/(app)/api/meshcore/search/route.ts rename to src/app/api/meshcore/search/route.ts diff --git a/src/app/(app)/api/stats/nodes-over-time/route.ts b/src/app/api/stats/nodes-over-time/route.ts similarity index 100% rename from src/app/(app)/api/stats/nodes-over-time/route.ts rename to src/app/api/stats/nodes-over-time/route.ts diff --git a/src/app/(app)/api/stats/popular-channels/route.ts b/src/app/api/stats/popular-channels/route.ts similarity index 100% rename from src/app/(app)/api/stats/popular-channels/route.ts rename to src/app/api/stats/popular-channels/route.ts diff --git a/src/app/(app)/api/stats/repeater-prefixes/route.ts b/src/app/api/stats/repeater-prefixes/route.ts similarity index 100% rename from src/app/(app)/api/stats/repeater-prefixes/route.ts rename to src/app/api/stats/repeater-prefixes/route.ts diff --git a/src/app/(app)/api/stats/total-nodes/route.ts b/src/app/api/stats/total-nodes/route.ts similarity index 100% rename from src/app/(app)/api/stats/total-nodes/route.ts rename to src/app/api/stats/total-nodes/route.ts diff --git a/src/app/(app)/globals.css b/src/app/globals.css similarity index 100% rename from src/app/(app)/globals.css rename to src/app/globals.css diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 0000000..90da1d5 --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,54 @@ +import type { Metadata, Viewport } from "next"; +import { Geist, Geist_Mono } from "next/font/google"; +import "./globals.css"; +import { ConfigProvider } from "@/components/ConfigContext"; +import { QueryProvider } from "@/components/QueryProvider"; + +const geistSans = Geist({ + variable: "--font-geist-sans", + subsets: ["latin"], +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export const metadata: Metadata = { + title: "MeshExplorer", + description: "A real-time map, chat client, and packet analysis tool for mesh networks using MeshCore and Meshtastic.", + icons: { + icon: { url: "/favicon.svg", type: "image/svg+xml" }, + apple: { url: "/favicon.svg", type: "image/svg+xml" } + }, +}; + +export const viewport: Viewport = { + themeColor: [ + { media: "(prefers-color-scheme: light)", color: "oklch(92.2% 0 0)" }, // neutral-200 + { media: "(prefers-color-scheme: dark)", color: "oklch(26.9% 0 0)" }, //neutral-800 + ], +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + +
+ + + {children} + + +
+ + + ); +} diff --git a/src/app/(app)/not-found.tsx b/src/app/not-found.tsx similarity index 100% rename from src/app/(app)/not-found.tsx rename to src/app/not-found.tsx