Skip to content

Commit 814e277

Browse files
committed
docs(changeset): Support do not persist prop -> dp
1 parent 9f788d6 commit 814e277

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

.changeset/young-onions-help.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"nextjs-darkmode": minor
3+
---
4+
5+
Support do not persist prop -> `dp`

lib/src/client/core/core.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ export interface CoreProps {
77
t?: string;
88
/** The nonce value for your Content Security Policy. */
99
nonce?: string;
10+
/** dp -> Do Not Persist. Set this prop when you do not want to persist the mode. e.g., when using Tailwind, but you prefer SSG */
11+
dp?: boolean;
1012
}
1113

1214
/** Modify transition globally to avoid patched transitions */
@@ -36,8 +38,8 @@ const modifyTransition = (themeTransition = "none", nonce = "") => {
3638
*
3739
* @source - Source code
3840
*/
39-
export const Core = ({ t, nonce }: CoreProps) => {
40-
const [{ m: mode, s: systemMode }, setThemeState] = useStore();
41+
export const Core = ({ t, nonce, dp }: CoreProps) => {
42+
const [{ m: mode, s: systemMode }, setThemeState] = useStore(dp);
4143
const resolvedMode = mode === SYSTEM ? systemMode : mode; // resolvedMode is the actual mode that will be used
4244

4345
useEffect(() => {
@@ -73,8 +75,8 @@ export const Core = ({ t, nonce }: CoreProps) => {
7375
});
7476
restoreTransitions();
7577
// System mode is decided by current system state and need not be stored in localStorage
76-
localStorage.setItem(COOKIE_KEY, mode);
77-
if (serverTargetEl)
78+
!dp && localStorage.setItem(COOKIE_KEY, mode);
79+
if (!dp && serverTargetEl)
7880
document.cookie = `${COOKIE_KEY}=${resolvedMode};max-age=31536000;SameSite=Strict;`;
7981
}, [resolvedMode, systemMode, mode, t, nonce]);
8082

lib/src/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ export interface Store {
99
}
1010

1111
/** local abstaction of RGS to avoid multiple imports */
12-
export const useStore = () =>
12+
export const useStore = (/** Do not persist */ dp?: boolean) =>
1313
useRGS<Store>("ndm", () =>
1414
typeof localStorage === "undefined"
1515
? /* v8 ignore next */
1616
{ m: SYSTEM, s: DARK as ResolvedScheme }
1717
: {
18-
m: (localStorage.getItem(COOKIE_KEY) ?? SYSTEM) as ColorSchemePreference,
18+
m: (dp ? SYSTEM : localStorage.getItem(COOKIE_KEY) ?? SYSTEM) as ColorSchemePreference,
1919
s: (matchMedia(MEDIA).matches ? DARK : LIGHT) as ResolvedScheme,
2020
},
2121
);

0 commit comments

Comments
 (0)