Skip to content

Commit

Permalink
Make the templates respect the user's system color mode
Browse files Browse the repository at this point in the history
  • Loading branch information
zanivan authored and aarongarciah committed Aug 16, 2024
1 parent 9b639e5 commit 5793f69
Show file tree
Hide file tree
Showing 14 changed files with 114 additions and 0 deletions.
8 changes: 8 additions & 0 deletions docs/data/material/getting-started/templates/blog/Blog.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,14 @@ export default function Blog() {
const blogTheme = createTheme(getBlogTheme(mode));
const defaultTheme = createTheme({ palette: { mode } });

React.useEffect(() => {
// This code only runs on the client side, to determine the system color preference
const systemPrefersDark = window.matchMedia(
'(prefers-color-scheme: dark)',
).matches;
setMode(systemPrefersDark ? 'dark' : 'light');
}, []);

const toggleColorMode = () => {
setMode((prev) => (prev === 'dark' ? 'light' : 'dark'));
};
Expand Down
8 changes: 8 additions & 0 deletions docs/data/material/getting-started/templates/blog/Blog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,14 @@ export default function Blog() {
const blogTheme = createTheme(getBlogTheme(mode));
const defaultTheme = createTheme({ palette: { mode } });

React.useEffect(() => {
// This code only runs on the client side, to determine the system color preference
const systemPrefersDark = window.matchMedia(
'(prefers-color-scheme: dark)',
).matches;
setMode(systemPrefersDark ? 'dark' : 'light');
}, []);

const toggleColorMode = () => {
setMode((prev) => (prev === 'dark' ? 'light' : 'dark'));
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,15 @@ export default function Checkout() {
const checkoutTheme = createTheme(getCheckoutTheme(mode));
const defaultTheme = createTheme({ palette: { mode } });
const [activeStep, setActiveStep] = React.useState(0);

React.useEffect(() => {
// This code only runs on the client side, to determine the system color preference
const systemPrefersDark = window.matchMedia(
'(prefers-color-scheme: dark)',
).matches;
setMode(systemPrefersDark ? 'dark' : 'light');
}, []);

const toggleColorMode = () => {
setMode((prev) => (prev === 'dark' ? 'light' : 'dark'));
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,15 @@ export default function Checkout() {
const checkoutTheme = createTheme(getCheckoutTheme(mode));
const defaultTheme = createTheme({ palette: { mode } });
const [activeStep, setActiveStep] = React.useState(0);

React.useEffect(() => {
// This code only runs on the client side, to determine the system color preference
const systemPrefersDark = window.matchMedia(
'(prefers-color-scheme: dark)',
).matches;
setMode(systemPrefersDark ? 'dark' : 'light');
}, []);

const toggleColorMode = () => {
setMode((prev) => (prev === 'dark' ? 'light' : 'dark'));
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@ export default function Dashboard() {
const dashboardTheme = createTheme(getDashboardTheme(mode));
const defaultTheme = createTheme({ palette: { mode } });

React.useEffect(() => {
// This code only runs on the client side, to determine the system color preference
const systemPrefersDark = window.matchMedia(
'(prefers-color-scheme: dark)',
).matches;
setMode(systemPrefersDark ? 'dark' : 'light');
}, []);

const toggleColorMode = () => {
setMode((prev) => (prev === 'dark' ? 'light' : 'dark'));
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,14 @@ export default function Dashboard() {
const dashboardTheme = createTheme(getDashboardTheme(mode));
const defaultTheme = createTheme({ palette: { mode } });

React.useEffect(() => {
// This code only runs on the client side, to determine the system color preference
const systemPrefersDark = window.matchMedia(
'(prefers-color-scheme: dark)',
).matches;
setMode(systemPrefersDark ? 'dark' : 'light');
}, []);

const toggleColorMode = () => {
setMode((prev) => (prev === 'dark' ? 'light' : 'dark'));
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,14 @@ export default function MarketingPage() {
const MPTheme = createTheme(getMPTheme(mode));
const defaultTheme = createTheme({ palette: { mode } });

React.useEffect(() => {
// This code only runs on the client side, to determine the system color preference
const systemPrefersDark = window.matchMedia(
'(prefers-color-scheme: dark)',
).matches;
setMode(systemPrefersDark ? 'dark' : 'light');
}, []);

const toggleColorMode = () => {
setMode((prev) => (prev === 'dark' ? 'light' : 'dark'));
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,14 @@ export default function MarketingPage() {
const MPTheme = createTheme(getMPTheme(mode));
const defaultTheme = createTheme({ palette: { mode } });

React.useEffect(() => {
// This code only runs on the client side, to determine the system color preference
const systemPrefersDark = window.matchMedia(
'(prefers-color-scheme: dark)',
).matches;
setMode(systemPrefersDark ? 'dark' : 'light');
}, []);

const toggleColorMode = () => {
setMode((prev) => (prev === 'dark' ? 'light' : 'dark'));
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,14 @@ export default function SignInSide() {
const defaultTheme = createTheme({ palette: { mode } });
const SignInSideTheme = createTheme(getSignInSideTheme(mode));

React.useEffect(() => {
// This code only runs on the client side, to determine the system color preference
const systemPrefersDark = window.matchMedia(
'(prefers-color-scheme: dark)',
).matches;
setMode(systemPrefersDark ? 'dark' : 'light');
}, []);

const toggleColorMode = () => {
setMode((prev) => (prev === 'dark' ? 'light' : 'dark'));
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,14 @@ export default function SignInSide() {
const defaultTheme = createTheme({ palette: { mode } });
const SignInSideTheme = createTheme(getSignInSideTheme(mode));

React.useEffect(() => {
// This code only runs on the client side, to determine the system color preference
const systemPrefersDark = window.matchMedia(
'(prefers-color-scheme: dark)',
).matches;
setMode(systemPrefersDark ? 'dark' : 'light');
}, []);

const toggleColorMode = () => {
setMode((prev) => (prev === 'dark' ? 'light' : 'dark'));
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,14 @@ export default function SignIn() {
const [passwordErrorMessage, setPasswordErrorMessage] = React.useState('');
const [open, setOpen] = React.useState(false);

React.useEffect(() => {
// This code only runs on the client side, to determine the system color preference
const systemPrefersDark = window.matchMedia(
'(prefers-color-scheme: dark)',
).matches;
setMode(systemPrefersDark ? 'dark' : 'light');
}, []);

const toggleColorMode = () => {
setMode((prev) => (prev === 'dark' ? 'light' : 'dark'));
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,14 @@ export default function SignIn() {
const [passwordErrorMessage, setPasswordErrorMessage] = React.useState('');
const [open, setOpen] = React.useState(false);

React.useEffect(() => {
// This code only runs on the client side, to determine the system color preference
const systemPrefersDark = window.matchMedia(
'(prefers-color-scheme: dark)',
).matches;
setMode(systemPrefersDark ? 'dark' : 'light');
}, []);

const toggleColorMode = () => {
setMode((prev) => (prev === 'dark' ? 'light' : 'dark'));
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,14 @@ export default function SignUp() {
const [nameError, setNameError] = React.useState(false);
const [nameErrorMessage, setNameErrorMessage] = React.useState('');

React.useEffect(() => {
// This code only runs on the client side, to determine the system color preference
const systemPrefersDark = window.matchMedia(
'(prefers-color-scheme: dark)',
).matches;
setMode(systemPrefersDark ? 'dark' : 'light');
}, []);

const validateInputs = () => {
const email = document.getElementById('email');
const password = document.getElementById('password');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,14 @@ export default function SignUp() {
const [nameError, setNameError] = React.useState(false);
const [nameErrorMessage, setNameErrorMessage] = React.useState('');

React.useEffect(() => {
// This code only runs on the client side, to determine the system color preference
const systemPrefersDark = window.matchMedia(
'(prefers-color-scheme: dark)',
).matches;
setMode(systemPrefersDark ? 'dark' : 'light');
}, []);

const validateInputs = () => {
const email = document.getElementById('email') as HTMLInputElement;
const password = document.getElementById('password') as HTMLInputElement;
Expand Down

0 comments on commit 5793f69

Please sign in to comment.