From a970ed27a58807ca615f1fbcedf55a7c475cb982 Mon Sep 17 00:00:00 2001 From: LynithDev <61880709+LynithDev@users.noreply.github.com> Date: Thu, 16 May 2024 12:29:36 +0200 Subject: [PATCH] feat: Start work on settings --- desktop/src/index.tsx | 13 ++-- desktop/src/ui/components/Navbar.tsx | 7 ++- desktop/src/ui/components/Sidebar.tsx | 2 +- desktop/src/ui/pages/cluster/ClusterRoot.tsx | 19 +++++- .../src/ui/pages/settings/SettingsRoot.tsx | 59 +++++++++++++++++++ .../settings/launcher/SettingsAppearance.tsx | 9 +++ .../settings/launcher/SettingsGeneral.tsx | 9 +++ pnpm-lock.yaml | 21 +++++++ 8 files changed, 126 insertions(+), 13 deletions(-) create mode 100644 desktop/src/ui/pages/settings/SettingsRoot.tsx create mode 100644 desktop/src/ui/pages/settings/launcher/SettingsAppearance.tsx create mode 100644 desktop/src/ui/pages/settings/launcher/SettingsGeneral.tsx diff --git a/desktop/src/index.tsx b/desktop/src/index.tsx index 0ccffc50..64b1e647 100644 --- a/desktop/src/index.tsx +++ b/desktop/src/index.tsx @@ -8,11 +8,8 @@ import App from './ui/App'; import HomePage from './ui/pages/Home'; import BrowserPage from './ui/pages/Browser'; import UpdatesPage from './ui/pages/Updates'; -import ClusterOverview from './ui/pages/cluster/ClusterOverview'; -import ClusterMods from './ui/pages/cluster/ClusterMods'; import ClusterRoot from '~ui/pages/cluster/ClusterRoot'; -import ClusterLogs from '~ui/pages/cluster/ClusterLogs'; -import ClusterScreenshots from '~ui/pages/cluster/ClusterScreenshots'; +import SettingsRoot from '~ui/pages/settings/SettingsRoot'; render(() => ( @@ -20,10 +17,10 @@ render(() => ( - - - - + + + + ), document.getElementById('root') as HTMLElement); diff --git a/desktop/src/ui/components/Navbar.tsx b/desktop/src/ui/components/Navbar.tsx index e508a446..3a3cdf4b 100644 --- a/desktop/src/ui/components/Navbar.tsx +++ b/desktop/src/ui/components/Navbar.tsx @@ -1,7 +1,8 @@ -import { A } from '@solidjs/router'; +import { A, useNavigate } from '@solidjs/router'; import { createSignal } from 'solid-js'; import { Bell01Icon, Cloud01Icon, Settings01Icon, TerminalBrowserIcon } from '@untitled-theme/icons-solid'; import { open } from '@tauri-apps/plugin-shell'; +import { WEBSITE } from '@onelauncher/client'; import useAccount from '../hooks/useAccount'; import PolyfrostFull from './logos/PolyfrostFull'; import AccountPopup from './overlay/AccountPopup'; @@ -9,7 +10,6 @@ import PlayerHead from './game/PlayerHead'; import Button from './base/Button'; import NotificationPopup from './overlay/notifications/NotificationPopup'; import Popup from './overlay/Popup'; -import { WEBSITE } from '~constants'; interface NavbarLinkProps { path: string; @@ -33,6 +33,7 @@ function NavbarLink(props: NavbarLinkProps) { function Navbar() { const [profileMenuOpen, setProfileMenuOpen] = createSignal(false); const [notificationMenuOpen, setNotificationMenuOpen] = createSignal(false); + const navigate = useNavigate(); const account = useAccount(); @@ -71,7 +72,7 @@ function Navbar() { {/* Launcher Settings Button */} - diff --git a/desktop/src/ui/components/Sidebar.tsx b/desktop/src/ui/components/Sidebar.tsx index 2bee13ee..f7bf3adb 100644 --- a/desktop/src/ui/components/Sidebar.tsx +++ b/desktop/src/ui/components/Sidebar.tsx @@ -32,7 +32,7 @@ function Sidebar(props: SidebarProps) { } function isActive(link: string) { - return location.pathname === `${props.base}${link}`; + return location.pathname === `${props.base}${link}` || `${location.pathname}/` === `${props.base}${link}`; } return ( diff --git a/desktop/src/ui/pages/cluster/ClusterRoot.tsx b/desktop/src/ui/pages/cluster/ClusterRoot.tsx index b6850d7e..f10619bf 100644 --- a/desktop/src/ui/pages/cluster/ClusterRoot.tsx +++ b/desktop/src/ui/pages/cluster/ClusterRoot.tsx @@ -1,9 +1,24 @@ -import { useSearchParams } from '@solidjs/router'; +import { Route, useSearchParams } from '@solidjs/router'; import type { ParentProps } from 'solid-js'; import { EyeIcon, File06Icon, Globe04Icon, Image03Icon, PackagePlusIcon, Settings04Icon, Tool02Icon } from '@untitled-theme/icons-solid'; import Sidebar from '../../components/Sidebar'; import AnimatedRoutes from '../../components/AnimatedRoutes'; import ErrorBoundary from '../../components/ErrorBoundary'; +import ClusterOverview from './ClusterOverview'; +import ClusterLogs from './ClusterLogs'; +import ClusterMods from './ClusterMods'; +import ClusterScreenshots from './ClusterScreenshots'; + +function ClusterRoutes() { + return ( + <> + + + + + + ); +} function ClusterRoot(props: ParentProps) { const [searchParams] = useSearchParams(); @@ -42,4 +57,6 @@ function ClusterRoot(props: ParentProps) { ); } +ClusterRoot.Routes = ClusterRoutes; + export default ClusterRoot; diff --git a/desktop/src/ui/pages/settings/SettingsRoot.tsx b/desktop/src/ui/pages/settings/SettingsRoot.tsx new file mode 100644 index 00000000..389833ad --- /dev/null +++ b/desktop/src/ui/pages/settings/SettingsRoot.tsx @@ -0,0 +1,59 @@ +import type { ParentProps } from 'solid-js'; +import { Brush01Icon, CodeSnippet02Icon, Globe01Icon, Key01Icon, MessageTextSquare01Icon, RefreshCcw02Icon, Rocket02Icon, Sliders04Icon, Users01Icon } from '@untitled-theme/icons-solid'; +import { Route } from '@solidjs/router'; +import Sidebar from '../../components/Sidebar'; +import SettingsGeneral from './launcher/SettingsGeneral'; +import SettingsAppearance from './launcher/SettingsAppearance'; +import AnimatedRoutes from '~ui/components/AnimatedRoutes'; +import ErrorBoundary from '~ui/components/ErrorBoundary'; + +function SettingsRoutes() { + return ( + <> + + + + ); +} + +function SettingsRoot(props: ParentProps) { + return ( +
+
+ , 'General', '/'], + [, 'Appearance', '/appearance'], + [, 'APIs', '/apis'], + [, 'Language', '/language'], + ], + 'Game Settings': [ + [, 'Minecraft settings', '/minecraft'], + [, 'Accounts', '/accounts'], + ], + 'About': [ + [, 'Developer Options', '/developer'], + [, 'Changelog', '/changelog'], + [, 'Feedback', '/feedback'], + ], + }} + /> +
+ +
+ + + {props.children} + + +
+
+ ); +} + +SettingsRoot.Routes = SettingsRoutes; + +export default SettingsRoot; diff --git a/desktop/src/ui/pages/settings/launcher/SettingsAppearance.tsx b/desktop/src/ui/pages/settings/launcher/SettingsAppearance.tsx new file mode 100644 index 00000000..1df4deaf --- /dev/null +++ b/desktop/src/ui/pages/settings/launcher/SettingsAppearance.tsx @@ -0,0 +1,9 @@ +function SettingsAppearance() { + return ( +
+

Appearance

+
+ ); +} + +export default SettingsAppearance; diff --git a/desktop/src/ui/pages/settings/launcher/SettingsGeneral.tsx b/desktop/src/ui/pages/settings/launcher/SettingsGeneral.tsx new file mode 100644 index 00000000..d3fd90f2 --- /dev/null +++ b/desktop/src/ui/pages/settings/launcher/SettingsGeneral.tsx @@ -0,0 +1,9 @@ +function SettingsGeneral() { + return ( +
+

General

+
+ ); +} + +export default SettingsGeneral; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2ff11ba..735dd257 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,6 +47,9 @@ importers: '@rspc/client': specifier: ^0.2.0 version: 0.2.0 + '@rspc/solid': + specifier: ^0.2.0 + version: 0.2.0(@tanstack/solid-query@5.36.0(solid-js@1.8.17))(solid-js@1.8.17) '@rspc/tauri': specifier: ^0.2.0 version: 0.2.0(@tauri-apps/api@2.0.0-beta.8) @@ -83,6 +86,9 @@ importers: '@rspc/client': specifier: ^0.2.0 version: 0.2.0 + '@rspc/solid': + specifier: ^0.2.0 + version: 0.2.0(@tanstack/solid-query@5.36.0(solid-js@1.8.17))(solid-js@1.8.17) '@rspc/tauri': specifier: ^0.2.0 version: 0.2.0(@tauri-apps/api@2.0.0-beta.8) @@ -92,6 +98,9 @@ importers: '@solidjs/router': specifier: ^0.13.3 version: 0.13.3(solid-js@1.8.17) + '@tanstack/solid-query': + specifier: ^5.36.0 + version: 5.36.0(solid-js@1.8.17) '@tauri-apps/api': specifier: ^2.0.0-beta version: 2.0.0-beta.8 @@ -786,6 +795,12 @@ packages: '@rspc/client@0.2.0': resolution: {integrity: sha512-IIOfAk4g+bzbfr3cmvm42EocsjtzMO9CRCc95ZMx9mFh5ixHzP4Na1lun+KipGzsFV1QsmV6uYSBg/4Kpnu9iA==} + '@rspc/solid@0.2.0': + resolution: {integrity: sha512-6w7kSn3ZeSikUNI5niE+HszTA6mDMIOglhg92BdKOKw7YeuC0b11k9gAXNq1tyOVsn8KGKlkFgPr5iOP4G0k2A==} + peerDependencies: + '@tanstack/solid-query': ^5.0.0 + solid-js: ^1.0.0 + '@rspc/tauri@0.2.0': resolution: {integrity: sha512-YULpKSCV/YZLtDRs/poiq3PVW54vMJjIbFZ8PgG+sdyZcujRudpza7xaLrfAHfbo61XdQYz/HP5j/9s5uqXQrA==} peerDependencies: @@ -3989,6 +4004,12 @@ snapshots: '@rspc/client@0.2.0': {} + '@rspc/solid@0.2.0(@tanstack/solid-query@5.36.0(solid-js@1.8.17))(solid-js@1.8.17)': + dependencies: + '@rspc/client': 0.2.0 + '@tanstack/solid-query': 5.36.0(solid-js@1.8.17) + solid-js: 1.8.17 + '@rspc/tauri@0.2.0(@tauri-apps/api@2.0.0-beta.8)': dependencies: '@rspc/client': 0.2.0