forked from Berry-Dash/launcher
Fix routing
This commit is contained in:
@@ -14,8 +14,7 @@
|
|||||||
"@tauri-apps/api": "2.6.0",
|
"@tauri-apps/api": "2.6.0",
|
||||||
"@tauri-apps/plugin-opener": "2.4.0",
|
"@tauri-apps/plugin-opener": "2.4.0",
|
||||||
"react": "19.1.0",
|
"react": "19.1.0",
|
||||||
"react-dom": "19.1.0",
|
"react-dom": "19.1.0"
|
||||||
"react-router-dom": "7.7.0"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@fortawesome/fontawesome-svg-core": "6.7.2",
|
"@fortawesome/fontawesome-svg-core": "6.7.2",
|
||||||
|
|||||||
@@ -7,4 +7,5 @@ body {
|
|||||||
font-family: 'Roboto', sans-serif;
|
font-family: 'Roboto', sans-serif;
|
||||||
background-color: $backgroundColor;
|
background-color: $backgroundColor;
|
||||||
color: white;
|
color: white;
|
||||||
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|||||||
30
src/App.tsx
30
src/App.tsx
@@ -1,17 +1,33 @@
|
|||||||
import { HashRouter, Route, Routes } from 'react-router-dom'
|
import { useEffect, useState } from 'react'
|
||||||
import './App.scss'
|
import './App.scss'
|
||||||
import Home from './routes/Home'
|
|
||||||
import Sidebar from './componets/Sidebar'
|
import Sidebar from './componets/Sidebar'
|
||||||
|
import Settings from './routes/Settings'
|
||||||
|
import Installs from './routes/Installs'
|
||||||
|
|
||||||
export default function App () {
|
export default function App () {
|
||||||
|
const [hash, setHash] = useState(window.location.hash || '#installs')
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const onHashChange = () => setHash(window.location.hash || '#installs')
|
||||||
|
window.addEventListener('hashchange', onHashChange)
|
||||||
|
return () => window.removeEventListener('hashchange', onHashChange)
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
function renderContent() {
|
||||||
|
if (hash === "#installs") {
|
||||||
|
return <Installs />
|
||||||
|
} else if (hash === "#settings") {
|
||||||
|
return <Settings />
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<HashRouter>
|
<>
|
||||||
<Sidebar />
|
<Sidebar />
|
||||||
<main style={{ marginLeft: '15rem' }}>
|
<main style={{ marginLeft: '15rem' }}>
|
||||||
<Routes>
|
{renderContent()}
|
||||||
<Route path='/' element={<Home />} />
|
|
||||||
</Routes>
|
|
||||||
</main>
|
</main>
|
||||||
</HashRouter>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ const Sidebar = () => {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<nav className="nav-links">
|
<nav className="nav-links">
|
||||||
<a href="/" className={`link ${window.location.pathname === "/" ? "active" : ""}`}><FontAwesomeIcon icon={faServer} className="mr-2" /> Installs</a>
|
<a href="#installs" className={`link ${(window.location.hash || '#installs') === '#installs' ? 'active' : ''}`}><FontAwesomeIcon icon={faServer} className="mr-2" /> Installs</a>
|
||||||
<a href="/settings" className={`link ${window.location.pathname === "/settings" ? "active" : ""}`}><FontAwesomeIcon icon={faCog} className="mr-2" /> Settings</a>
|
<a href="#settings" className={`link ${(window.location.hash || '#installs') === '#settings' ? 'active' : ''}`}><FontAwesomeIcon icon={faCog} className="mr-2" /> Settings</a>
|
||||||
<a onClick={() => openUrl("https://berrydash.lncvrt.xyz/discord")} className="link"><FontAwesomeIcon icon={faDiscord} className="mr-2" /> Support</a>
|
<a onClick={() => openUrl("https://berrydash.lncvrt.xyz/discord")} className="link"><FontAwesomeIcon icon={faDiscord} className="mr-2" /> Support</a>
|
||||||
</nav>
|
</nav>
|
||||||
</aside>
|
</aside>
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
export default function Home () {
|
|
||||||
return <p>Berry Dash Manager</p>
|
|
||||||
}
|
|
||||||
1
src/routes/Installs.scss
Normal file
1
src/routes/Installs.scss
Normal file
@@ -0,0 +1 @@
|
|||||||
|
@use 'tailwindcss' as *;
|
||||||
9
src/routes/Installs.tsx
Normal file
9
src/routes/Installs.tsx
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import './Installs.scss'
|
||||||
|
|
||||||
|
export default function Installs () {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<p>Installs</p>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
1
src/routes/Settings.scss
Normal file
1
src/routes/Settings.scss
Normal file
@@ -0,0 +1 @@
|
|||||||
|
@use 'tailwindcss' as *;
|
||||||
9
src/routes/Settings.tsx
Normal file
9
src/routes/Settings.tsx
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import './Settings.scss'
|
||||||
|
|
||||||
|
export default function Settings () {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<p>Settings</p>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
25
yarn.lock
25
yarn.lock
@@ -910,11 +910,6 @@ convert-source-map@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
|
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
|
||||||
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
|
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
|
||||||
|
|
||||||
cookie@^1.0.1:
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-1.0.2.tgz#27360701532116bd3f1f9416929d176afe1e4610"
|
|
||||||
integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==
|
|
||||||
|
|
||||||
csstype@^3.0.2:
|
csstype@^3.0.2:
|
||||||
version "3.1.3"
|
version "3.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
|
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
|
||||||
@@ -1245,21 +1240,6 @@ react-refresh@^0.17.0:
|
|||||||
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.17.0.tgz#b7e579c3657f23d04eccbe4ad2e58a8ed51e7e53"
|
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.17.0.tgz#b7e579c3657f23d04eccbe4ad2e58a8ed51e7e53"
|
||||||
integrity sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==
|
integrity sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==
|
||||||
|
|
||||||
react-router-dom@7.7.0:
|
|
||||||
version "7.7.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-7.7.0.tgz#25be91ba474b934cdeb36b54551789c2361fbcad"
|
|
||||||
integrity sha512-wwGS19VkNBkneVh9/YD0pK3IsjWxQUVMDD6drlG7eJpo1rXBtctBqDyBm/k+oKHRAm1x9XWT3JFC82QI9YOXXA==
|
|
||||||
dependencies:
|
|
||||||
react-router "7.7.0"
|
|
||||||
|
|
||||||
react-router@7.7.0:
|
|
||||||
version "7.7.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.7.0.tgz#9e5dc8a3be0c7a1931fcff6f32624b66a285b56a"
|
|
||||||
integrity sha512-3FUYSwlvB/5wRJVTL/aavqHmfUKe0+Xm9MllkYgGo9eDwNdkvwlJGjpPxono1kCycLt6AnDTgjmXvK3/B4QGuw==
|
|
||||||
dependencies:
|
|
||||||
cookie "^1.0.1"
|
|
||||||
set-cookie-parser "^2.6.0"
|
|
||||||
|
|
||||||
react@19.1.0:
|
react@19.1.0:
|
||||||
version "19.1.0"
|
version "19.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/react/-/react-19.1.0.tgz#926864b6c48da7627f004795d6cce50e90793b75"
|
resolved "https://registry.yarnpkg.com/react/-/react-19.1.0.tgz#926864b6c48da7627f004795d6cce50e90793b75"
|
||||||
@@ -1320,11 +1300,6 @@ semver@^6.3.1:
|
|||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
|
||||||
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
||||||
|
|
||||||
set-cookie-parser@^2.6.0:
|
|
||||||
version "2.7.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz#3016f150072202dfbe90fadee053573cc89d2943"
|
|
||||||
integrity sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==
|
|
||||||
|
|
||||||
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.1:
|
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.1:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
|
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
|
||||||
|
|||||||
Reference in New Issue
Block a user