11'use client' ;
22
3- import React , { useCallback , useEffect , useRef } from 'react' ;
3+ import React , { useCallback , useEffect , useRef , useState } from 'react' ;
44import Link from 'next/link' ;
55import { useRouter } from 'next/navigation' ;
66import { cn } from '@/lib/utils' ;
@@ -47,6 +47,7 @@ export const DocTableOfContents: React.FC<DocTableOfContentsProps> = ({
4747} ) => {
4848 const nav = useNavigation ( ) ;
4949 const router = useRouter ( ) ;
50+ const [ isActionsCollapsed , setIsActionsCollapsed ] = useState ( false ) ;
5051 const prefetchedRef = useRef < Set < string > > ( new Set ( ) ) ;
5152 const scrollContainerRef = useRef < HTMLDivElement > ( null ) ;
5253 const hoverScrollRafRef = useRef < number | null > ( null ) ;
@@ -196,15 +197,18 @@ export const DocTableOfContents: React.FC<DocTableOfContentsProps> = ({
196197 < div className = "relative mt-auto p-6 pt-8 border-t border-gray-200 flex-shrink-0 bg-gray-50" >
197198 < button
198199 type = "button"
199- onClick = { scrollSidebarToBottom }
200+ onClick = { ( ) => setIsActionsCollapsed ( ( prev ) => ! prev ) }
200201 onMouseEnter = { startHoverScrollDown }
201202 onMouseLeave = { stopHoverScroll }
202203 className = "absolute left-1/2 top-0 -translate-x-1/2 -translate-y-1/2 rounded-full border border-gray-200 bg-white p-1.5 text-gray-500 shadow-sm transition-all duration-200 hover:text-gray-700"
203- aria-label = "Scroll to bottom"
204- title = "Scroll to bottom"
204+ aria-label = { isActionsCollapsed ? "Expand actions" : "Collapse actions" }
205+ title = { isActionsCollapsed ? "Expand actions" : "Collapse actions" }
205206 >
206207 < svg
207- className = "h-3.5 w-3.5"
208+ className = { cn (
209+ "h-3.5 w-3.5 transition-transform duration-200" ,
210+ isActionsCollapsed && "rotate-180"
211+ ) }
208212 fill = "none"
209213 stroke = "currentColor"
210214 viewBox = "0 0 24 24"
@@ -217,7 +221,13 @@ export const DocTableOfContents: React.FC<DocTableOfContentsProps> = ({
217221 />
218222 </ svg >
219223 </ button >
220- < div className = "space-y-3" >
224+ < div
225+ className = { cn (
226+ "overflow-hidden transition-all duration-200" ,
227+ isActionsCollapsed ? "max-h-0 opacity-0 pointer-events-none" : "max-h-80 opacity-100"
228+ ) }
229+ >
230+ < div className = "space-y-3" >
221231 { onEditPage && canEdit && (
222232 < button
223233 onClick = { onEditPage }
@@ -306,6 +316,7 @@ export const DocTableOfContents: React.FC<DocTableOfContentsProps> = ({
306316 Publish
307317 </ button >
308318 ) }
319+ </ div >
309320 </ div >
310321 </ div >
311322 </ div >
0 commit comments