Skip to content

Commit 886da49

Browse files
committed
UI: Fix sidebar layout shifts with defaultOpen option
1 parent 7f50c5b commit 886da49

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

.changeset/all-maps-check.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'fumadocs-ui': patch
3+
---
4+
5+
Fix sidebar layout shifts with `defaultOpen` option

packages/ui/css/preset.css

+6
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,12 @@
7272
}
7373
}
7474

75+
@property --radix-collapsible-content-height {
76+
syntax: '<length>';
77+
inherits: false;
78+
initial-value: 0px;
79+
}
80+
7581
@utility container {
7682
margin-inline: auto;
7783
padding-inline: 1rem;

packages/ui/src/components/ui/collapsible.tsx

+12-3
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,30 @@
1+
'use client';
12
import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
2-
import { forwardRef } from 'react';
3+
import { forwardRef, useEffect, useState } from 'react';
34
import { cn } from '@/utils/cn';
45

56
const Collapsible = CollapsiblePrimitive.Root;
67

78
const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;
89

910
const CollapsibleContent = forwardRef<
10-
React.ElementRef<typeof CollapsiblePrimitive.CollapsibleContent>,
11+
HTMLDivElement,
1112
React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.CollapsibleContent>
1213
>(({ children, ...props }, ref) => {
14+
const [mounted, setMounted] = useState(false);
15+
16+
useEffect(() => {
17+
setMounted(true);
18+
}, []);
19+
1320
return (
1421
<CollapsiblePrimitive.CollapsibleContent
1522
ref={ref}
1623
{...props}
1724
className={cn(
18-
'overflow-hidden [--radix-collapsible-content-height:0px] data-[state=closed]:animate-fd-collapsible-up data-[state=open]:animate-fd-collapsible-down',
25+
'overflow-hidden',
26+
mounted &&
27+
'data-[state=closed]:animate-fd-collapsible-up data-[state=open]:animate-fd-collapsible-down',
1928
props.className,
2029
)}
2130
>

0 commit comments

Comments
 (0)