diff --git a/rsconcept/frontend/src/context/ConceptOptionsContext.tsx b/rsconcept/frontend/src/context/ConceptOptionsContext.tsx index ffdd8416..2b149251 100644 --- a/rsconcept/frontend/src/context/ConceptOptionsContext.tsx +++ b/rsconcept/frontend/src/context/ConceptOptionsContext.tsx @@ -100,14 +100,25 @@ export const OptionsState = ({ children }: React.PropsWithChildren) => { ); const toggleDarkMode = useCallback(() => { - if (!document.startViewTransition || window.matchMedia('(prefers-reduced-motion: reduce)').matches) { + if (!document.startViewTransition) { setDarkMode(prev => !prev); } else { + const style = document.createElement('style'); + style.innerHTML = ` + * { + animation: none !important; + transition: none !important; + } + `; + document.head.appendChild(style); + document.startViewTransition(() => { flushSync(() => { setDarkMode(prev => !prev); }); }); + + setTimeout(() => document.head.removeChild(style), PARAMETER.moveDuration); } }, [setDarkMode]); diff --git a/rsconcept/frontend/src/styling/styles.css b/rsconcept/frontend/src/styling/styles.css index f778a6f7..e95531fe 100644 --- a/rsconcept/frontend/src/styling/styles.css +++ b/rsconcept/frontend/src/styling/styles.css @@ -223,6 +223,6 @@ .cc-animate-color { transition-property: color, background-color; transition-timing-function: var(--transition-bezier); - transition-duration: var(--duration-fade); + transition-duration: var(--duration-select); } }