Skip to content

Commit 42484cc

Browse files
authored
Merge pull request #85 from HusseinSerag/FEATURE-darkmode-btn
feature: create a button for dark/light mode
2 parents ac41aaf + 8c10bb5 commit 42484cc

File tree

8 files changed

+5646
-407
lines changed

8 files changed

+5646
-407
lines changed

package-lock.json

Lines changed: 5596 additions & 388 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
"react-icons": "^5.3.0",
4040
"react-loading-skeleton": "^3.4.0",
4141
"react-router-dom": "^6.2.2",
42+
"react-toggle-dark-mode": "^1.1.1",
4243
"uuid": "^9.0.1",
4344
"vite-plugin-mkcert": "^1.17.5",
4445
"web-vitals": "^1.1.2"

src/components/LandingPage/HeroSection.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ export default function HeroSection() {
1212
<Link to={"/themes"}>
1313
<button
1414
className="
15-
bg-accent-900 hover:bg-gradient-to-r hover:from-secondary-900 px-2 py-1 text-[14px] hover:to-primary-600
15+
bg-accent-100 text-accent-700 hover:bg-gradient-to-r
16+
hover:from-secondary-900 px-2 py-1 text-[14px] hover:to-primary-600
1617
transition-colors duration-300 hover:text-accent-900 sm:px-4 sm:py-2 sm:text-lg rounded-lg
1718
"
1819
>
@@ -22,7 +23,8 @@ export default function HeroSection() {
2223
<Link to={"/plugins"}>
2324
<button
2425
className="
25-
bg-accent-900 hover:bg-gradient-to-r hover:from-secondary-900 px-2 py-1 text-[14px] hover:to-primary-600
26+
bg-accent-100 text-accent-700 hover:bg-gradient-to-r
27+
hover:from-secondary-900 px-2 py-1 text-[14px] hover:to-primary-600
2628
transition-colors duration-300 hover:text-accent-900 sm:px-4 sm:py-2 sm:text-lg rounded-lg
2729
"
2830
>
@@ -32,7 +34,8 @@ export default function HeroSection() {
3234
<Link to={"https://react-chatbotify.com"}>
3335
<button
3436
className="
35-
bg-accent-900 hover:bg-gradient-to-r hover:from-secondary-900 px-2 py-1 text-[14px] hover:to-primary-600
37+
bg-accent-100 text-accent-700 hover:bg-gradient-to-r hover:from-secondary-900 px-2 py-1 text-[14px]
38+
hover:to-primary-600
3639
transition-colors duration-300 hover:text-accent-900 sm:px-4 sm:py-2 sm:text-lg rounded-lg
3740
"
3841
>
Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useAppTheme } from "../../context/AppThemeContext";
22
import { useTranslation } from "react-i18next";
3-
3+
import { DarkModeSwitch } from "react-toggle-dark-mode"
44

55
const AppThemeToggle = () => {
66
// context for handling app theme
@@ -12,12 +12,17 @@ const AppThemeToggle = () => {
1212
const handleClick = () => {
1313
toggleAppTheme()
1414
}
15+
16+
const isDark = appTheme === 'dark';
17+
return <DarkModeSwitch
18+
checked={isDark}
19+
onChange={handleClick}
20+
size={20}
21+
moonColor="hsl(198,90%,15%)"
22+
sunColor="hsl(48,90%,55%)"
1523

16-
console.log(appTheme)
24+
/>
1725

18-
return <div>
19-
<button onClick={handleClick}>{appTheme}</button>
20-
</div>
2126
}
2227

23-
export default AppThemeToggle;
28+
export default AppThemeToggle;

src/components/NavigationBar/NavigationBar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ const NavigationBar = () => {
360360
</button>
361361
</li>
362362
)}
363-
<li>
363+
<li className='grid items-center'>
364364
<AppThemeToggle />
365365
</li>
366366
</ul>

src/index.tsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import LoginProcessPage from './pages/LoginProcess'
1717
import { I18nextProvider } from 'react-i18next';
1818
import i18n from './i18n';
1919
import { Provider } from './components/ui/provider';
20+
import { AppThemeProvider } from './context/AppThemeContext';
2021

2122
// eslint-disable-next-line
2223
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/lipis/flag-icons@7.2.3/css/flag-icons.min.css" />
@@ -73,13 +74,15 @@ const routes = [
7374
const router = createBrowserRouter(routes)
7475
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
7576
<React.StrictMode>
76-
<I18nextProvider i18n={i18n}>
77-
<AuthProvider>
78-
<Provider >
79-
<RouterProvider router={router} />
80-
</Provider>
81-
</AuthProvider>
82-
</I18nextProvider>
77+
<AppThemeProvider>
78+
<I18nextProvider i18n={i18n}>
79+
<AuthProvider>
80+
<Provider >
81+
<RouterProvider router={router} />
82+
</Provider>
83+
</AuthProvider>
84+
</I18nextProvider>
85+
</AppThemeProvider>
8386
</React.StrictMode>
8487
)
8588
reportWebVitals()

src/styles/index.css

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
0px 8.5px 17.9px rgba(0, 0, 0, 0.042),
1313
0px 15.9px 33.4px rgba(0, 0, 0, 0.05),
1414
0px 38px 80px rgba(0, 0, 0, 0.07);
15-
}
15+
}
1616

1717
:root[app-theme="light"] {
1818
/* Light Theme Accent Palette */
@@ -97,3 +97,22 @@ code {
9797
-ms-overflow-style: none;
9898
scrollbar-width: none;
9999
}
100+
101+
102+
103+
104+
.theme__toggle {
105+
background-color: hsl(48,90%,85%);
106+
border-radius: 25% / 50%;
107+
box-shadow: 0 0 0 0.125em var(--primaryT);
108+
padding: 0.25em;
109+
width: 4.3em;
110+
height: 2.3em;
111+
-webkit-appearance: none;
112+
appearance: none;
113+
transition: background-color var(--transDur) ease-in-out,
114+
box-shadow 0.15s ease-in-out,
115+
transform var(--transDur) ease-in-out;
116+
}
117+
118+

tailwind.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/** @type {import('tailwindcss').Config} */
22
export default {
33
content: ["./src/**/*.{js,jsx,ts,tsx}"],
4-
darkMode: "dark",
4+
darkMode: "class",
55
theme: {
66
container: {
77
center: true,

0 commit comments

Comments
 (0)