feat: improve
This commit is contained in:
parent
d6a9cd6990
commit
b4e5a05ae6
|
|
@ -42,11 +42,9 @@ export const PageProvider = ({
|
||||||
}: PageProviderProps) => {
|
}: PageProviderProps) => {
|
||||||
const [isOpen, setIsOpen] = useState(false);
|
const [isOpen, setIsOpen] = useState(false);
|
||||||
const [modalContent, setModalContent] = useState<ReactNode | null>(null);
|
const [modalContent, setModalContent] = useState<ReactNode | null>(null);
|
||||||
const [scrollPosition, setScrollPosition] = useState(0);
|
|
||||||
const pathname = usePathname();
|
const pathname = usePathname();
|
||||||
|
|
||||||
const openModal = (content: ReactNode) => {
|
const openModal = (content: ReactNode) => {
|
||||||
setScrollPosition(window.scrollY);
|
|
||||||
setIsOpen(true);
|
setIsOpen(true);
|
||||||
setModalContent(content);
|
setModalContent(content);
|
||||||
};
|
};
|
||||||
|
|
@ -54,7 +52,6 @@ export const PageProvider = ({
|
||||||
const closeModal = () => {
|
const closeModal = () => {
|
||||||
setIsOpen(false);
|
setIsOpen(false);
|
||||||
setModalContent(null);
|
setModalContent(null);
|
||||||
setTimeout(() => window.scrollTo(0, scrollPosition), 0);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
@ -127,7 +124,13 @@ export const PageProvider = ({
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<PageContext.Provider value={contextValue}>
|
<PageContext.Provider value={contextValue}>
|
||||||
{isOpen ? (
|
<div className={isOpen ? 'hidden' : ''} aria-hidden={isOpen}>
|
||||||
|
<AnimatedBackground />
|
||||||
|
<SubsectionNav items={navItems} currentPath={currentPath} rightSlot={rightSlot} />
|
||||||
|
<div className="relative z-10">{children}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{isOpen && (
|
||||||
<div
|
<div
|
||||||
className="fixed inset-0 z-50 flex flex-col bg-black/90 backdrop-blur-sm transition-opacity duration-300"
|
className="fixed inset-0 z-50 flex flex-col bg-black/90 backdrop-blur-sm transition-opacity duration-300"
|
||||||
role="dialog"
|
role="dialog"
|
||||||
|
|
@ -150,7 +153,7 @@ export const PageProvider = ({
|
||||||
</span>
|
</span>
|
||||||
<button
|
<button
|
||||||
onClick={closeModal}
|
onClick={closeModal}
|
||||||
className="w-11 h-11 sm:w-12 sm:h-12 rounded-full bg-white/10 hover:bg-white/20 text-white flex items-center justify-center transition-colors focus:outline-none focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-black/90"
|
className="w-9 h-9 sm:w-10 sm:h-10 rounded-full bg-white/10 hover:bg-white/20 text-white flex items-center justify-center transition-colors focus:outline-none focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-black/90"
|
||||||
aria-label="Close fullscreen view"
|
aria-label="Close fullscreen view"
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
|
|
@ -178,12 +181,6 @@ export const PageProvider = ({
|
||||||
|
|
||||||
<CompactFooter />
|
<CompactFooter />
|
||||||
</div>
|
</div>
|
||||||
) : (
|
|
||||||
<>
|
|
||||||
<AnimatedBackground />
|
|
||||||
<SubsectionNav items={navItems} currentPath={currentPath} rightSlot={rightSlot} />
|
|
||||||
<div className="relative z-10">{children}</div>
|
|
||||||
</>
|
|
||||||
)}
|
)}
|
||||||
</PageContext.Provider>
|
</PageContext.Provider>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue