From c656d316183a3b75349379a60a713becbf7bb25a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com>
Date: Thu, 18 Apr 2024 19:11:50 -0500
Subject: [PATCH] feat: a few settings
---
src/app/layout.tsx | 30 ++++++++----
src/app/settings/page.tsx | 48 +++++++++++++++++++
src/app/tools/layout.tsx | 13 +----
.../Model/components/ModelLoader.tsx | 2 +-
src/{app/tools => }/components/Loader.tsx | 2 +-
src/components/PageWrapper.tsx | 6 ++-
src/stores/app.ts | 4 ++
7 files changed, 82 insertions(+), 23 deletions(-)
create mode 100644 src/app/settings/page.tsx
rename src/{app/tools => }/components/Loader.tsx (94%)
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 81b56377d..51ad5b5be 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -5,9 +5,10 @@ import '@radix-ui/themes/styles.css';
import { config } from 'dotenv';
import { Roboto_Flex } from 'next/font/google';
import { usePathname } from 'next/navigation';
-import { ReactNode, useEffect, useState } from 'react';
+import { ReactNode, Suspense, useEffect, useState } from 'react';
import { Footer } from '../components/Footer';
import { Google } from '../components/Google';
+import { Loader } from '../components/Loader';
import Navbar from '../components/Navbar';
import isDev from '../core/blitzkrieg/isDev';
import { isLocalhost } from '../core/blitzkrieg/isLocalhost';
@@ -31,6 +32,7 @@ export default function RootLayout({ children }: RootLayoutProps) {
const pathname = usePathname();
const isEmbed = pathname.split('/')[1] === 'embeds';
const isRoot = pathname === '/';
+ const darkMode = useApp((state) => state.darkMode);
const [showDevBuildAlert, setShowDevBuildAlert] = useState(false);
const isFullScreen = useFullScreen();
@@ -46,11 +48,15 @@ export default function RootLayout({ children }: RootLayoutProps) {
return (
- {isRoot && Blitzkrieg}
-
+ {isRoot && (
+ <>
+ Blitzkrieg
+
+ >
+ )}
@@ -64,7 +70,7 @@ export default function RootLayout({ children }: RootLayoutProps) {
}}
>
- {children}
+
+
+
+ }
+ >
+ {children}
+
{!isEmbed && !isFullScreen && }
diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx
new file mode 100644
index 000000000..63bd9cf69
--- /dev/null
+++ b/src/app/settings/page.tsx
@@ -0,0 +1,48 @@
+'use client';
+
+import { Flex, Heading, Switch, Text } from '@radix-ui/themes';
+import PageWrapper from '../../components/PageWrapper';
+import { useApp } from '../../stores/app';
+
+export default function Page() {
+ const developerMode = useApp((state) => state.developerMode);
+ const darkMode = useApp((state) => state.darkMode);
+
+ return (
+
+
+
+ Appearance
+
+
+ Dark mode
+
+ useApp.setState({ darkMode: checked })
+ }
+ />
+
+
+
+
+ Advanced
+
+
+ Developer mode
+
+ useApp.setState({ developerMode: checked })
+ }
+ />
+
+
+
+
+ Not a lot here, eh?
+
+
+
+ );
+}
diff --git a/src/app/tools/layout.tsx b/src/app/tools/layout.tsx
index 99f93a9a9..f43260f49 100644
--- a/src/app/tools/layout.tsx
+++ b/src/app/tools/layout.tsx
@@ -2,10 +2,9 @@
import Link from 'next/link';
import { usePathname } from 'next/navigation';
-import { ReactNode, Suspense } from 'react';
+import { ReactNode } from 'react';
import { TOOLS } from '../../constants/tools';
import { theme } from '../../stitches.config';
-import { Loader } from './components/Loader';
interface ToolsLayoutProps {
children: ReactNode;
@@ -90,15 +89,7 @@ export default function ToolsLayout({ children }: ToolsLayoutProps) {
)}
-
-
-
- }
- >
- {children}
-
+ {children}
>
);
}
diff --git a/src/app/tools/tankopedia/[id]/components/Model/components/ModelLoader.tsx b/src/app/tools/tankopedia/[id]/components/Model/components/ModelLoader.tsx
index a7d992543..54190a071 100644
--- a/src/app/tools/tankopedia/[id]/components/Model/components/ModelLoader.tsx
+++ b/src/app/tools/tankopedia/[id]/components/Model/components/ModelLoader.tsx
@@ -1,5 +1,5 @@
import { Html, useProgress } from '@react-three/drei';
-import { Loader } from '../../../../../components/Loader';
+import { Loader } from '../../../../../../../components/Loader';
export function ModelLoader() {
const { progress } = useProgress();
diff --git a/src/app/tools/components/Loader.tsx b/src/components/Loader.tsx
similarity index 94%
rename from src/app/tools/components/Loader.tsx
rename to src/components/Loader.tsx
index a92cb0da3..d3be25895 100644
--- a/src/app/tools/components/Loader.tsx
+++ b/src/components/Loader.tsx
@@ -1,6 +1,6 @@
import { blackA } from '@radix-ui/colors';
import { Flex, Spinner, Text } from '@radix-ui/themes';
-import { theme } from '../../../stitches.config';
+import { theme } from '../stitches.config';
const NAV_HEIGHT = 52.65;
diff --git a/src/components/PageWrapper.tsx b/src/components/PageWrapper.tsx
index 1f95cb17b..6a24b60fd 100644
--- a/src/components/PageWrapper.tsx
+++ b/src/components/PageWrapper.tsx
@@ -10,6 +10,7 @@ export default function PageWrapper({
style,
color,
size = 800,
+ children,
...props
}: PageWrapperProps) {
return (
@@ -31,11 +32,12 @@ export default function PageWrapper({
padding: 16,
boxSizing: 'border-box',
flex: 1,
-
...style,
}}
{...props}
- />
+ >
+ {children}
+
);
}
diff --git a/src/stores/app.ts b/src/stores/app.ts
index e615eb1f9..227ace7d2 100644
--- a/src/stores/app.ts
+++ b/src/stores/app.ts
@@ -4,12 +4,16 @@ import { persist } from 'zustand/middleware';
export interface App {
devBuildAgreementTime: number;
+ developerMode: boolean;
+ darkMode: boolean;
}
export const useApp = create()(
persist(
(set) => ({
devBuildAgreementTime: 0,
+ developerMode: false,
+ darkMode: true,
}),
{ name: 'app', merge: (a, b) => merge(b, a) },
),