completionId: cgen-d5d53101ba494eb393081fa15cce73b4
cgen-d5d53101ba494eb393081fa15cce73b4
This commit is contained in:
parent
e9f8821cdb
commit
e5fcc966a7
1 changed files with 28 additions and 8 deletions
|
|
@ -79,25 +79,45 @@ const getArmConfig = (pathname: string): ArmConfig => {
|
|||
|
||||
export default function PageTransition({ children }: PageTransitionProps) {
|
||||
const [visible, setVisible] = useState(true);
|
||||
const [isTransitioning, setIsTransitioning] = useState(false);
|
||||
const location = useLocation();
|
||||
const config = getArmConfig(location.pathname);
|
||||
|
||||
useEffect(() => {
|
||||
setIsTransitioning(true);
|
||||
setVisible(false);
|
||||
const timer = setTimeout(() => setVisible(true), 800);
|
||||
return () => clearTimeout(timer);
|
||||
|
||||
const transitionTimer = setTimeout(() => {
|
||||
setVisible(true);
|
||||
setIsTransitioning(false);
|
||||
}, 800);
|
||||
|
||||
return () => clearTimeout(transitionTimer);
|
||||
}, [location.pathname]);
|
||||
|
||||
return (
|
||||
<>
|
||||
{!visible && (
|
||||
<LoadingScreen
|
||||
message={config.message}
|
||||
variant="overlay"
|
||||
accentColor={config.accentColor}
|
||||
armLogo={config.armLogo}
|
||||
/>
|
||||
<div className="fixed inset-0 z-50">
|
||||
<LoadingScreen
|
||||
message={config.message}
|
||||
variant="overlay"
|
||||
accentColor={config.accentColor}
|
||||
armLogo={config.armLogo}
|
||||
showOSLogo={true}
|
||||
/>
|
||||
|
||||
{/* OS-style Terminal Boot Text (optional decorative element) */}
|
||||
{isTransitioning && (
|
||||
<div className="absolute bottom-12 left-0 right-0 flex justify-center">
|
||||
<div className="text-xs text-muted-foreground font-mono opacity-60 animate-pulse">
|
||||
> {config.bootMessage}...
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div
|
||||
className={`transition-opacity duration-300 ease-out transform-gpu will-change-[opacity] ${visible ? "opacity-100" : "opacity-0"}`}
|
||||
>
|
||||
|
|
|
|||
Loading…
Reference in a new issue