Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.

Commit 5f76137

Browse files
committed
fix a11y issue with nav item change
1 parent 515e102 commit 5f76137

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/components/nav/CollapsibleNavItem.tsx

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

3-
import React from 'react'
3+
import React, { useId } from 'react'
44
import { Collapsible, CollapsibleTrigger } from '../ui/collapsible'
55
import { ChevronDownIcon } from '@heroicons/react/24/outline'
66
import { cn } from '@/lib/utils'
@@ -17,6 +17,9 @@ interface Props {
1717
const 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

Comments
 (0)