diff --git a/rsconcept/frontend/src/app/Navigation/ToggleNavigation.tsx b/rsconcept/frontend/src/app/Navigation/ToggleNavigation.tsx
index 3f22354d..5a696366 100644
--- a/rsconcept/frontend/src/app/Navigation/ToggleNavigation.tsx
+++ b/rsconcept/frontend/src/app/Navigation/ToggleNavigation.tsx
@@ -1,35 +1,53 @@
import clsx from 'clsx';
-import { IconPin, IconUnpin } from '@/components/Icons';
+import { IconDarkTheme, IconLightTheme, IconPin, IconUnpin } from '@/components/Icons';
import { useConceptOptions } from '@/context/ConceptOptionsContext';
import { globals, PARAMETER } from '@/utils/constants';
function ToggleNavigation() {
- const { noNavigationAnimation, toggleNoNavigation } = useConceptOptions();
+ const { noNavigationAnimation, noNavigation, toggleNoNavigation, toggleDarkMode, darkMode } = useConceptOptions();
+ const iconSize = !noNavigationAnimation ? '0.75rem' : '1rem';
return (
-
+ {!noNavigationAnimation ? (
+
+ ) : null}
+
+
);
}
diff --git a/rsconcept/frontend/src/context/ConceptOptionsContext.tsx b/rsconcept/frontend/src/context/ConceptOptionsContext.tsx
index 118337e5..ffdd8416 100644
--- a/rsconcept/frontend/src/context/ConceptOptionsContext.tsx
+++ b/rsconcept/frontend/src/context/ConceptOptionsContext.tsx
@@ -1,6 +1,7 @@
'use client';
import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';
+import { flushSync } from 'react-dom';
import Tooltip from '@/components/ui/Tooltip';
import useLocalStorage from '@/hooks/useLocalStorage';
@@ -99,7 +100,15 @@ export const OptionsState = ({ children }: React.PropsWithChildren) => {
);
const toggleDarkMode = useCallback(() => {
- setDarkMode(prev => !prev);
+ if (!document.startViewTransition || window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
+ setDarkMode(prev => !prev);
+ } else {
+ document.startViewTransition(() => {
+ flushSync(() => {
+ setDarkMode(prev => !prev);
+ });
+ });
+ }
}, [setDarkMode]);
const mainHeight = useMemo(() => {