Fix/ecommerce video 400 bug #7

Merged
stringadmin merged 10 commits from fix/ecommerce-video-400-bug into master 2026-06-03 02:47:07 +00:00
2 changed files with 3 additions and 47 deletions
Showing only changes of commit e555209516 - Show all commits
+3 -27
View File
@@ -6,7 +6,6 @@ interface PageTransitionProps {
} }
const EXIT_DURATION_MS = 180; const EXIT_DURATION_MS = 180;
const ENTER_DURATION_MS = 220;
const NAV_ORDER: string[] = [ const NAV_ORDER: string[] = [
"home", "home",
@@ -40,7 +39,7 @@ function getNavIndex(key: string): number {
export default function PageTransition({ viewKey, children }: PageTransitionProps) { export default function PageTransition({ viewKey, children }: PageTransitionProps) {
const [displayedChildren, setDisplayedChildren] = useState(children); const [displayedChildren, setDisplayedChildren] = useState(children);
const [phase, setPhase] = useState<"idle" | "exit" | "enter">("idle"); const [phase, setPhase] = useState<"idle" | "exit">("idle");
const [exitDirection, setExitDirection] = useState<"forward" | "backward" | "neutral">("neutral"); const [exitDirection, setExitDirection] = useState<"forward" | "backward" | "neutral">("neutral");
const prevKeyRef = useRef(viewKey); const prevKeyRef = useRef(viewKey);
const timerRef = useRef<ReturnType<typeof setTimeout>>(); const timerRef = useRef<ReturnType<typeof setTimeout>>();
@@ -73,38 +72,15 @@ export default function PageTransition({ viewKey, children }: PageTransitionProp
setPhase("exit"); setPhase("exit");
timerRef.current = setTimeout(() => { timerRef.current = setTimeout(() => {
setDisplayedChildren(children); setDisplayedChildren(children);
setPhase("enter"); setPhase("idle");
}, EXIT_DURATION_MS); }, EXIT_DURATION_MS);
return () => clearTimeout(timerRef.current); return () => clearTimeout(timerRef.current);
}, [viewKey, children]); }, [viewKey, children]);
// After enter animation completes, go back to idle
useEffect(() => {
if (phase !== "enter") return;
const timer = setTimeout(() => setPhase("idle"), ENTER_DURATION_MS);
return () => clearTimeout(timer);
}, [phase]);
const dirClass = exitDirection === "forward" ? " is-forward" : exitDirection === "backward" ? " is-backward" : ""; const dirClass = exitDirection === "forward" ? " is-forward" : exitDirection === "backward" ? " is-backward" : "";
if (phase === "exit") {
return (
<div className={`page-transition-wrap page-motion--exit${dirClass}`}>
{displayedChildren}
</div>
);
}
if (phase === "enter") {
return (
<div className="page-transition-wrap page-motion--enter">
{displayedChildren}
</div>
);
}
return ( return (
<div className="page-transition-wrap"> <div className={phase === "exit" ? `page-transition-wrap page-motion--exit${dirClass}` : "page-transition-wrap"}>
{displayedChildren} {displayedChildren}
</div> </div>
); );
-20
View File
@@ -54,23 +54,3 @@
transform: translateX(16px); transform: translateX(16px);
} }
} }
/* Enter: explicit wrapper entrance animation overrides child page-motion */
.page-motion--enter {
animation: page-enter-fade 220ms ease both;
}
.page-motion--enter .page-motion {
animation: none !important;
}
@keyframes page-enter-fade {
from {
opacity: 0;
transform: translateY(6px);
}
to {
opacity: 1;
transform: translateY(0);
}
}