diff --git a/src/client/AppNext.tsx b/src/client/AppNext.tsx
index aecf2085..e8848843 100644
--- a/src/client/AppNext.tsx
+++ b/src/client/AppNext.tsx
@@ -15,6 +15,7 @@ import { MSErrorBoundary } from './components/ErrorBoundary';
import { ComponentDetailedRoutable } from './components/msComponent/MSComponentDetailed';
import { MSComponentListFetchable } from './components/msComponent/MSComponentList';
import { Provider } from './components/Provider';
+import { SettingsContainer } from './components/settings/settings';
function NoMatch() {
const location = useLocation();
@@ -70,7 +71,8 @@ const routesNested: RouteObject[] = [
{
path: "/next",
Component: Layout,
- children: [ {
+ children: [
+ {
index: true,
element: ,
},
@@ -78,6 +80,10 @@ const routesNested: RouteObject[] = [
path: "components/:componentId",
element:
},
+ {
+ path: "settings",
+ element:
+ },
{
path: "*",
element:
diff --git a/src/client/components/MobileMenu.tsx b/src/client/components/MobileMenu.tsx
index a753c486..040ecb44 100644
--- a/src/client/components/MobileMenu.tsx
+++ b/src/client/components/MobileMenu.tsx
@@ -51,7 +51,7 @@ export const MobileSidebarNav = (props: { hideFrom?: BreakpointName | false } =
-
+
diff --git a/src/client/components/SideNav.tsx b/src/client/components/SideNav.tsx
index 130d2b2e..468760a6 100644
--- a/src/client/components/SideNav.tsx
+++ b/src/client/components/SideNav.tsx
@@ -73,8 +73,8 @@ export const SideNav = (props: SideNavProps) => {
) : (
{item.title}
{item.status && {item.status}}
@@ -134,6 +134,10 @@ export const NAV_LINKS: SideNavProps[] = [
{
title: 'Dashboard',
url: '/next/'
+ },
+ {
+ title: 'Settings',
+ url: '/next/settings'
}
]
},
diff --git a/src/client/components/settings/settings.tsx b/src/client/components/settings/settings.tsx
new file mode 100644
index 00000000..729abd8e
--- /dev/null
+++ b/src/client/components/settings/settings.tsx
@@ -0,0 +1,55 @@
+import { useCallback } from "react"
+import {
+ VStack,
+ Heading,
+ SegmentGroup} from "@chakra-ui/react"
+import { useTheme } from "next-themes"
+import { BsCircleHalf } from "react-icons/bs";
+import { LuMoon, LuSun } from "react-icons/lu"
+import { makeChakraIcon } from "../icons/ChakraIcons";
+
+const DarkIcon = makeChakraIcon(LuMoon);
+const LightIcon = makeChakraIcon(LuSun);
+const SystemIcon = makeChakraIcon(BsCircleHalf);
+
+export const SettingsContainer = () => {
+ const { resolvedTheme, setTheme, theme } = useTheme();
+ const setThemeCB = useCallback((val: string) => {
+ switch(val) {
+ case 'system':
+ setTheme('system');
+ localStorage.removeItem('theme');
+ break;
+ case 'dark':
+ setTheme('dark');
+ break;
+ case 'light':
+ setTheme('light');
+ break;
+ }
+ },[setTheme]);
+ return (
+
+ Appearance
+
+ setThemeCB(val.value)}>
+
+
+ Dark
+
+
+
+
+ Light
+
+
+
+
+ System
+
+
+
+
+
+ )
+}
\ No newline at end of file