Skip to content

Commit 0eb3b19

Browse files
committed
feat: fezTheme and fezBlogMode
1 parent 3930a41 commit 0eb3b19

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

src/context/VisualSettingsContext.jsx

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,37 @@ export const VisualSettingsProvider = ({ children }) => {
5555
const [isAppFullscreen, setIsAppFullscreen] = usePersistentState('is-app-fullscreen', false);
5656
const [fezcodexTheme, setFezcodexTheme] = usePersistentState('fezcodex-theme', 'brutalist'); // 'brutalist' or 'luxe'
5757

58+
// URL Parameter Observer - Consumes ?fezTheme=... and ?fezBlogMode=...
59+
useEffect(() => {
60+
const params = new URLSearchParams(window.location.search);
61+
const themeParam = params.get('fezTheme');
62+
const blogModeParam = params.get('fezBlogMode');
63+
let changed = false;
64+
65+
if (themeParam && ['brutalist', 'luxe'].includes(themeParam)) {
66+
setFezcodexTheme(themeParam);
67+
changed = true;
68+
}
69+
70+
if (blogModeParam && [
71+
'brutalist', 'editorial', 'dossier', 'terminal',
72+
'dokument', 'terminal-green', 'old', 'luxe'
73+
].includes(blogModeParam)) {
74+
setBlogPostViewMode(blogModeParam);
75+
changed = true;
76+
}
77+
78+
if (changed) {
79+
// Clean up the URL
80+
const newParams = new URLSearchParams(window.location.search);
81+
newParams.delete('fezTheme');
82+
newParams.delete('fezBlogMode');
83+
const newSearch = newParams.toString();
84+
const newUrl = window.location.pathname + (newSearch ? `?${newSearch}` : '') + window.location.hash;
85+
window.history.replaceState({}, '', newUrl);
86+
}
87+
}, [setFezcodexTheme, setBlogPostViewMode]);
88+
5889
const [isSidebarOpen, setIsSidebarOpen] = React.useState(window.innerWidth > 768);
5990
useEffect(() => {
6091
const handleResize = () => {

0 commit comments

Comments
 (0)