UI: Fix sidebar layout shifts with defaultOpen option

This commit is contained in:
Fuma Nama
2025-02-22 18:50:30 +08:00
parent 7f50c5b432
commit 886da4919a
3 changed files with 23 additions and 3 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'fumadocs-ui': patch
---
Fix sidebar layout shifts with `defaultOpen` option
+6
View File
@@ -72,6 +72,12 @@
}
}
@property --radix-collapsible-content-height {
syntax: '<length>';
inherits: false;
initial-value: 0px;
}
@utility container {
margin-inline: auto;
padding-inline: 1rem;
+12 -3
View File
@@ -1,5 +1,6 @@
'use client';
import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
import { forwardRef } from 'react';
import { forwardRef, useEffect, useState } from 'react';
import { cn } from '@/utils/cn';
const Collapsible = CollapsiblePrimitive.Root;
@@ -7,15 +8,23 @@ const Collapsible = CollapsiblePrimitive.Root;
const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;
const CollapsibleContent = forwardRef<
React.ElementRef<typeof CollapsiblePrimitive.CollapsibleContent>,
HTMLDivElement,
React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.CollapsibleContent>
>(({ children, ...props }, ref) => {
const [mounted, setMounted] = useState(false);
useEffect(() => {
setMounted(true);
}, []);
return (
<CollapsiblePrimitive.CollapsibleContent
ref={ref}
{...props}
className={cn(
'overflow-hidden [--radix-collapsible-content-height:0px] data-[state=closed]:animate-fd-collapsible-up data-[state=open]:animate-fd-collapsible-down',
'overflow-hidden',
mounted &&
'data-[state=closed]:animate-fd-collapsible-up data-[state=open]:animate-fd-collapsible-down',
props.className,
)}
>