File tree Expand file tree Collapse file tree 4 files changed +40
-8
lines changed
Expand file tree Collapse file tree 4 files changed +40
-8
lines changed Original file line number Diff line number Diff line change 11import { QueryClient , QueryClientProvider } from "@tanstack/react-query" ;
2-
32import Sidebar from "./components/sidebar" ;
43import HoverTrigger from "./components/HoverTrigger" ;
54import EditorView from "./components/EditorView" ;
@@ -12,7 +11,7 @@ const queryClient = new QueryClient();
1211function App ( ) {
1312 return (
1413 < QueryClientProvider client = { queryClient } >
15- < div className = "h-screen bg-white" >
14+ < div className = "fixed inset-0 bg-white" >
1615 < SideWrapper side = "right" >
1716 < EditorView />
1817 </ SideWrapper >
Original file line number Diff line number Diff line change 1+ import { PanelRightClose , PanelLeftClose } from "lucide-react" ;
2+ import usePageStore from "@/store/usePageStore" ;
3+
14interface EditorLayoutProps {
25 children : React . ReactNode ;
36}
47
5- export default function EditorLayout ( { children } : EditorLayoutProps ) {
8+ const EditorLayout = ( { children } : EditorLayoutProps ) => {
9+ const { isPanelOpen, togglePanel } = usePageStore ( ) ;
10+
611 return (
7- < div className = "relative h-[720px] w-[520px] overflow-auto border-muted bg-background bg-white sm:rounded-lg sm:border sm:shadow-lg" >
8- { children }
12+ < div
13+ className = { `absolute right-0 h-[720px] w-[520px] transform rounded-bl-lg rounded-br-lg rounded-tr-lg border bg-white shadow-lg transition-transform duration-100 ease-in-out ${ isPanelOpen ? "translate-x-0" : "translate-x-full" } ` }
14+ >
15+ < div className = "h-full overflow-auto" > { children } </ div >
16+
17+ < button
18+ onClick = { togglePanel }
19+ className = "absolute -left-8 top-0 z-50 flex h-8 w-8 !cursor-pointer items-center justify-center rounded-l border-b border-l border-t border-[#e0e6ee] bg-[#f5f5f5]"
20+ >
21+ { isPanelOpen ? (
22+ < PanelRightClose className = "h-4 w-4" />
23+ ) : (
24+ < PanelLeftClose className = "h-4 w-4" />
25+ ) }
26+ </ button >
927 </ div >
1028 ) ;
11- }
29+ } ;
30+
31+ export default EditorLayout ;
Original file line number Diff line number Diff line change @@ -13,5 +13,5 @@ type SideWrapperProps = {
1313} ;
1414
1515export default function SideWrapper ( { side, children } : SideWrapperProps ) {
16- return < div className = { `absolute z-10 ${ sideStyle [ side ] } ` } > { children } </ div > ;
16+ return < div className = { `absolute z-50 ${ sideStyle [ side ] } ` } > { children } </ div > ;
1717}
Original file line number Diff line number Diff line change @@ -2,12 +2,25 @@ import { create } from "zustand";
22
33interface PageStore {
44 currentPage : number | null ;
5+ isPanelOpen : boolean ;
56 setCurrentPage : ( currentPage : number | null ) => void ;
7+ togglePanel : ( ) => void ;
8+ setIsPanelOpen : ( isOpen : boolean ) => void ;
69}
710
811const usePageStore = create < PageStore > ( ( set ) => ( {
912 currentPage : null ,
10- setCurrentPage : ( currentPage : number | null ) => set ( { currentPage } ) ,
13+ isPanelOpen : true ,
14+ setCurrentPage : ( currentPage : number | null ) =>
15+ set ( ( state ) => ( {
16+ currentPage,
17+ isPanelOpen :
18+ currentPage === state . currentPage
19+ ? ! state . isPanelOpen
20+ : currentPage !== null ,
21+ } ) ) ,
22+ togglePanel : ( ) => set ( ( state ) => ( { isPanelOpen : ! state . isPanelOpen } ) ) ,
23+ setIsPanelOpen : ( isPanelOpen : boolean ) => set ( { isPanelOpen } ) ,
1124} ) ) ;
1225
1326export default usePageStore ;
You can’t perform that action at this time.
0 commit comments