an app to share curated trails sidetrail.app
atproto nextjs react rsc
50
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 32 lines 863 B view raw
1"use client"; 2 3import { createContext, useContext, useState, ReactNode } from "react"; 4 5type LoginModalContextType = { 6 isOpen: boolean; 7 openLoginModal: () => void; 8 closeLoginModal: () => void; 9}; 10 11const LoginModalContext = createContext<LoginModalContextType | null>(null); 12 13export function LoginModalProvider({ children }: { children: ReactNode }) { 14 const [isOpen, setIsOpen] = useState(false); 15 16 const openLoginModal = () => setIsOpen(true); 17 const closeLoginModal = () => setIsOpen(false); 18 19 return ( 20 <LoginModalContext.Provider value={{ isOpen, openLoginModal, closeLoginModal }}> 21 {children} 22 </LoginModalContext.Provider> 23 ); 24} 25 26export function useLoginModal() { 27 const context = useContext(LoginModalContext); 28 if (!context) { 29 throw new Error("useLoginModal must be used within a LoginModalProvider"); 30 } 31 return context; 32}