11'use client'
22
3- import React from 'react'
3+ import React , { useId } from 'react'
44import { Collapsible , CollapsibleTrigger } from '../ui/collapsible'
55import { ChevronDownIcon } from '@heroicons/react/24/outline'
66import { cn } from '@/lib/utils'
@@ -17,6 +17,9 @@ interface Props {
1717const CollapsibleNavItem : React . FC < Props > = ( { group, className } ) => {
1818 const pathname = usePathname ( )
1919
20+ // overriding radix id as we don't need their CollapsibleContent component
21+ const navItemId = useId ( )
22+
2023 const { title, items, icon : Icon } = group
2124
2225 const isActive = items . some (
@@ -30,7 +33,7 @@ const CollapsibleNavItem: React.FC<Props> = ({ group, className }) => {
3033 onOpenChange = { setIsOpen }
3134 className = { cn ( 'group/nav-collapse space-y-2 pl-2' , className ) }
3235 >
33- < CollapsibleTrigger asChild >
36+ < CollapsibleTrigger asChild aria-controls = { navItemId } >
3437 < Button
3538 variant = "link"
3639 className = { cn (
@@ -47,7 +50,9 @@ const CollapsibleNavItem: React.FC<Props> = ({ group, className }) => {
4750 < ChevronDownIcon className = { cn ( 'h-4 w-4' , isOpen && 'rotate-180' ) } />
4851 </ Button >
4952 </ CollapsibleTrigger >
53+
5054 < div
55+ id = { navItemId }
5156 hidden = { ! isOpen }
5257 className = "relative mt-2 space-y-2 overflow-hidden group-data-[state='closed']/nav-collapse:h-0 group-data-[state='open']/nav-collapse:h-auto"
5358 >
0 commit comments