dark mode added
This commit is contained in:
parent
5a0568bec9
commit
f42e57d464
6 changed files with 44 additions and 13 deletions
2
crates/librqbit/webui/dist/assets/index.css
vendored
2
crates/librqbit/webui/dist/assets/index.css
vendored
File diff suppressed because one or more lines are too long
16
crates/librqbit/webui/dist/assets/index.js
vendored
16
crates/librqbit/webui/dist/assets/index.js
vendored
File diff suppressed because one or more lines are too long
6
crates/librqbit/webui/dist/manifest.json
vendored
6
crates/librqbit/webui/dist/manifest.json
vendored
|
|
@ -4,14 +4,14 @@
|
|||
"src": "assets/logo.svg"
|
||||
},
|
||||
"index.css": {
|
||||
"file": "assets/index-458d2033.css",
|
||||
"file": "assets/index-6a152703.css",
|
||||
"src": "index.css"
|
||||
},
|
||||
"index.html": {
|
||||
"css": [
|
||||
"assets/index-458d2033.css"
|
||||
"assets/index-6a152703.css"
|
||||
],
|
||||
"file": "assets/index-1daa8daf.js",
|
||||
"file": "assets/index-ba274e55.js",
|
||||
"isEntry": true,
|
||||
"src": "index.html"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
import { useState, useEffect } from "react";
|
||||
|
||||
const DarkModeToggle = () => {
|
||||
const getInitialState = () => {
|
||||
const storedDarkMode = localStorage.getItem("darkMode");
|
||||
return storedDarkMode ? JSON.parse(storedDarkMode) : false;
|
||||
};
|
||||
const [isDarkMode, setIsDarkMode] = useState<boolean>(getInitialState);
|
||||
|
||||
useEffect(() => {
|
||||
document.body.classList.toggle("dark", isDarkMode);
|
||||
localStorage.setItem("darkMode", JSON.stringify(isDarkMode));
|
||||
}, [isDarkMode]);
|
||||
|
||||
return (
|
||||
<div className="fixed bottom-5 right-5">
|
||||
<button
|
||||
onClick={() => setIsDarkMode((prev) => !prev)}
|
||||
className="ml-2 text-gray-700 dark:text-gray-300"
|
||||
>
|
||||
Dark Mode
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default DarkModeToggle;
|
||||
|
|
@ -25,7 +25,9 @@ export const FormInput: React.FC<{
|
|||
}) => {
|
||||
return (
|
||||
<div className="flex flex-col gap-2 text-sm mb-2">
|
||||
<label htmlFor={name}>{label}</label>
|
||||
<label htmlFor={name} className="dark:text-slate-500">
|
||||
{label}
|
||||
</label>
|
||||
<input
|
||||
autoFocus={autoFocus}
|
||||
type={inputType}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import { IconButton } from "./components/buttons/IconButton";
|
|||
import { BsBodyText } from "react-icons/bs";
|
||||
import { LogStreamModal } from "./components/modal/LogStreamModal";
|
||||
import { Header } from "./components/Header";
|
||||
import DarkModeToggle from "./components/buttons/DarkModeToggle";
|
||||
|
||||
export interface ErrorWithLabel {
|
||||
text: string;
|
||||
|
|
@ -86,6 +87,7 @@ export const RqbitWebUI = (props: {
|
|||
</div>
|
||||
|
||||
<LogStreamModal show={logsOpened} onClose={() => setLogsOpened(false)} />
|
||||
<DarkModeToggle />
|
||||
</AppContext.Provider>
|
||||
);
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue