Skip to content

Commit 84986ee

Browse files
committed
dark mode switch
1 parent abb8a8e commit 84986ee

File tree

3 files changed

+44
-26
lines changed

3 files changed

+44
-26
lines changed

src/App.js

+15-1
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,25 @@ import './App.css';
22
import About from './components/About';
33
import Navbar from './components/Navbar';
44
import TextForm from './components/TextForm';
5+
import { useState } from "react"; //imrs
56

67
function App() {
8+
9+
const [mode, setMode] = useState('dark');
10+
11+
const toggleMode = ()=>{
12+
if(mode=='dark'){
13+
setMode('light');
14+
document.body.style.backgroundColor = 'white'
15+
}else{
16+
setMode('dark');
17+
document.body.style.backgroundColor = '#19165a'
18+
}
19+
}
20+
721
return (
822
<>
9-
<Navbar title="TextUtils"></Navbar>
23+
<Navbar title="TextUtils" mode={mode} toggleMode={toggleMode} />
1024
{/* <div className="container my-3"><TextForm heading="Enter the text to analyze"/></div> */}
1125
<About></About>
1226
</>

src/components/About.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,22 @@ export default function About() {
44

55
const [myStyle, setMyStyle] = useState({
66
color: 'white',
7-
backgroundColor: 'black'
7+
backgroundColor: '#19165a'
88
})
99

1010
const [btnText, setbtnText] = useState("Enable dark mode")
1111

1212
const toggleStyle = () => {
1313
if (myStyle.color === 'white') {
1414
setMyStyle({
15-
color: 'black',
15+
color: '#19165a',
1616
backgroundColor: 'white'
1717
})
1818
setbtnText("Enable dark mode")
1919
} else {
2020
setMyStyle({
2121
color: 'white',
22-
backgroundColor: 'black',
22+
backgroundColor: '#19165a',
2323
border: '1px solid white'
2424
})
2525
setbtnText("Enable light mode")

src/components/Navbar.js

+26-22
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,36 @@ import PropTypes from 'prop-types'
33

44
function Navbar(props) {
55
return (
6-
<nav className="navbar navbar-expand-lg bg-light">
7-
<div className="container-fluid">
8-
<a className="navbar-brand" href="/">{props.title}</a>
9-
<button className="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
10-
<span className="navbar-toggler-icon"></span>
11-
</button>
12-
<div className="collapse navbar-collapse" id="navbarSupportedContent">
13-
<ul className="navbar-nav me-auto mb-2 mb-lg-0">
14-
<li className="nav-item">
15-
<a className="nav-link active" aria-current="page" href="/">Home</a>
16-
</li>
17-
<li className="nav-item">
18-
<a className="nav-link" href="/">About</a>
19-
</li>
20-
</ul>
21-
<form className="d-flex" role="search">
6+
<nav className={`navbar navbar-expand-lg navbar-${props.mode} bg-${props.mode}`}>
7+
<div className="container-fluid">
8+
<a className="navbar-brand" href="/">{props.title}</a>
9+
<button className="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
10+
<span className="navbar-toggler-icon"></span>
11+
</button>
12+
<div className="collapse navbar-collapse" id="navbarSupportedContent">
13+
<ul className="navbar-nav me-auto mb-2 mb-lg-0">
14+
<li className="nav-item">
15+
<a className="nav-link active" aria-current="page" href="/">Home</a>
16+
</li>
17+
<li className="nav-item">
18+
<a className="nav-link" href="/">About</a>
19+
</li>
20+
</ul>
21+
{/* <form className="d-flex" role="search">
2222
<input className="form-control me-2" type="search" placeholder="Search" aria-label="Search" />
2323
<button className="btn btn-outline-success" type="submit">Search</button>
24-
</form>
25-
</div>
26-
</div>
27-
</nav>
24+
</form> */}
25+
<div class={`form-check form-switch text-${props.mode===`light`?`dark`:'light'}`}>
26+
<input class="form-check-input" onClick={props.toggleMode} type="checkbox" role="switch" id="flexSwitchCheckDefault" />
27+
<label class="form-check-label" htmlFor="flexSwitchCheckDefault">Enable dark mode</label>
28+
</div>
29+
</div>
30+
</div>
31+
</nav>
2832
)
2933
}
3034

31-
Navbar.propTypes = {title: PropTypes.string};
32-
Navbar.defaultProps = {title: "titileee"} ;
35+
Navbar.propTypes = { title: PropTypes.string };
36+
Navbar.defaultProps = { title: "titileee" };
3337

3438
export default Navbar

0 commit comments

Comments
 (0)