-
Forgot password?
+
Forgot password?
diff --git a/frontend/views/MainLayout.tsx b/frontend/views/MainLayout.tsx
index 13013bf..7119bf9 100644
--- a/frontend/views/MainLayout.tsx
+++ b/frontend/views/MainLayout.tsx
@@ -1,20 +1,22 @@
import {useRouteMetadata} from 'Frontend/util/routing.js';
import {useEffect} from 'react';
import ProfileMenu from "Frontend/components/ProfileMenu";
-import {Outlet} from "react-router-dom";
-import {Navbar, NavbarBrand, NavbarContent, NavbarItem} from "@nextui-org/react";
+import {Divider, Link, Navbar, NavbarBrand, NavbarContent, NavbarItem} from "@nextui-org/react";
import GameyfinLogo from "Frontend/components/theming/GameyfinLogo";
+import * as PackageJson from "../../package.json";
+import {Outlet, useNavigate} from "react-router-dom";
export default function MainLayout() {
const currentTitle = `Gameyfin - ${useRouteMetadata()?.title}` ?? 'Gameyfin';
useEffect(() => {
document.title = currentTitle;
}, [currentTitle]);
+ const navigate = useNavigate();
return (
- <>
+
-
+ navigate('/')}>
@@ -24,19 +26,25 @@ export default function MainLayout() {
-
- >
+
+
+
+
+
+
);
}
-/*
*/
+/**/
diff --git a/frontend/views/ProfileView.tsx b/frontend/views/ProfileView.tsx
new file mode 100644
index 0000000..a087933
--- /dev/null
+++ b/frontend/views/ProfileView.tsx
@@ -0,0 +1,47 @@
+import {Listbox, ListboxItem} from "@nextui-org/react";
+import {GearFine, Palette, User} from "@phosphor-icons/react";
+import {Outlet, useNavigate} from "react-router-dom";
+import {useState} from "react";
+
+export default function ProfileView() {
+ const navigate = useNavigate();
+ const [selectedKeys, setSelectedKeys] = useState(new Set(["profile"]));
+
+ const menuItems = [
+ {
+ title: "My Profile",
+ key: "profile",
+ icon:
,
+ action: () => navigate('/profile')
+ },
+ {
+ title: "Appearance",
+ key: "appearance",
+ icon:
,
+ action: () => navigate('appearance')
+ },
+ {
+ title: "Manage account",
+ icon:
,
+ key: "account-management",
+ action: () => navigate('account-management')
+ }
+ ]
+
+ return (
+
+
+
+ {menuItems.map((i) => (
+
+ {i.title}
+
+ ))}
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/frontend/views/SetupView.tsx b/frontend/views/SetupView.tsx
index 8af28bc..765c775 100644
--- a/frontend/views/SetupView.tsx
+++ b/frontend/views/SetupView.tsx
@@ -1,15 +1,12 @@
-import React, {useLayoutEffect, useState} from 'react';
+import React from 'react';
import * as Yup from 'yup';
import Wizard from "Frontend/components/wizard/Wizard";
import WizardStep from "Frontend/components/wizard/WizardStep";
import Input from "Frontend/components/Input";
-import {GearFine, HandWaving, Moon, Palette, SunDim, User} from "@phosphor-icons/react";
-import ThemePreview from "Frontend/components/theming/ThemePreview";
-import {themes} from "Frontend/theming/themes";
-import {Card, Switch} from "@nextui-org/react";
-import {useTheme} from "next-themes";
-import {Theme} from "Frontend/theming/theme";
+import {GearFine, HandWaving, Palette, User} from "@phosphor-icons/react";
+import {Card} from "@nextui-org/react";
import {UserEndpoint} from "Frontend/generated/endpoints";
+import {ThemeSelector} from "Frontend/components/theming/ThemeSelector";
function WelcomeStep() {
return (
@@ -36,50 +33,9 @@ function WelcomeStep() {
}
function ThemeStep() {
- const {theme, setTheme} = useTheme();
- const [isSelected, setIsSelected] = useState(theme ? theme.includes("light") : false);
- const [currentTheme, setCurrentTheme] = useState(theme?.substring(0, theme?.lastIndexOf("-")));
-
- useLayoutEffect(() => setTheme(`${currentTheme}-${mode()}`), [isSelected]);
-
- function mode(): "light" | "dark" {
- return isSelected ? "light" : "dark";
- }
-
return (
-
-
- }
- endContent={}
- isSelected={isSelected}
- onValueChange={() => {
- setIsSelected(!isSelected);
- }}
- />
-
-
-
- {
- //min-w-[468px]
- themes.map(((t: Theme) => (
-
{
- setCurrentTheme(t.name);
- setTheme(`${t.name}-${mode()}`);
- }}>
-
-
- )))
- }
-
-
- )
+
+ );
}
function UserStep() {
@@ -127,7 +83,7 @@ function SettingsStep() {
}
const SetupView = () => (
-