Skip to content

Commit 8ee9814

Browse files
made the menu section collapsible.
1 parent b4d0a30 commit 8ee9814

1 file changed

Lines changed: 17 additions & 6 deletions

File tree

components/docs/DocTableOfContents.tsx

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use client';
22

3-
import React, { useCallback, useEffect, useRef } from 'react';
3+
import React, { useCallback, useEffect, useRef, useState } from 'react';
44
import Link from 'next/link';
55
import { useRouter } from 'next/navigation';
66
import { 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

Comments
 (0)