@@ -15,16 +15,25 @@ type LeftSidebarProps = {
1515const accordionContentClassName =
1616 'overflow-hidden data-[state=open]:animate-accordion-down data-[state=closed]:animation-accordion-up' ;
1717
18- const accordionTriggerClassName =
19- 'flex items-center justify-between gap-2 p-0 pr-2 w-full text-left ui-text-label3 bg-neutral-000 dark:bg-neutral-1300 hover:bg-neutral-100 dark:hover:bg-neutral-1200 active:bg-neutral-200 dark:active:bg-neutral-1100 text-neutral-900 dark:text-neutral-400 hover:text-neutral-1300 dark:hover:text-neutral-000 [&[data-state=open]>svg]:rotate-90 focus-base transition-colors' ;
18+ const accordionTriggerClassName = cn (
19+ // Layout & display
20+ 'flex items-center justify-between gap-2 p-0 pr-2 w-full text-left ui-text-label3' ,
21+ // Background color states
22+ 'bg-neutral-000 dark:bg-neutral-1300 hover:bg-neutral-100 dark:hover:bg-neutral-1200 active:bg-neutral-200 dark:active:bg-neutral-1100' ,
23+ // Text color states
24+ 'text-neutral-900 dark:text-neutral-400 hover:text-neutral-1300 dark:hover:text-neutral-000' ,
25+ // State styles
26+ 'data-[state=open]:text-neutral-1300 dark:data-[state=open]:text-neutral-000 data-[state=open]:font-bold' ,
27+ // Icon animation
28+ '[&[data-state=open]>svg]:rotate-90' ,
29+ // Misc
30+ 'focus-base transition-colors' ,
31+ ) ;
2032
21- const accordionLinkClassName =
22- 'pl-3 py-[6px] text-neutral-900 dark:text-neutral-400 hover:text-neutral-1300 dark:hover:text-neutral-000' ;
33+ const accordionLinkClassName = 'pl-3 py-[6px]' ;
2334
2435const iconClassName = 'text-neutral-1300 dark:text-neutral-000 transition-transform' ;
2536
26- const boldClassName = 'text-neutral-1300 dark:text-neutral-000 font-bold' ;
27-
2837const ChildAccordion = ( {
2938 content,
3039 layer,
@@ -58,11 +67,6 @@ const ChildAccordion = ({
5867 { content . map ( ( page , index ) => {
5968 const hasDeeperLayer = 'pages' in page && page . pages ;
6069 const isActiveLink = 'link' in page && page . link === activePage . page . link ;
61- const isActiveAncestor = ( ( ) => {
62- const arr1 = [ ...tree , index ] ;
63- const arr2 = activePage . tree . map ( ( { index } ) => index ) . slice ( 0 , layer + 2 ) ;
64- return arr1 . length === arr2 . length && arr1 . every ( ( val , i ) => val === arr2 [ i ] ) ;
65- } ) ( ) ;
6670
6771 return (
6872 < Accordion . Item key = { page . name } value = { `item-${ tree . join ( '-' ) } -${ index } ` } >
@@ -75,7 +79,7 @@ const ChildAccordion = ({
7579 } ) }
7680 >
7781 { hasDeeperLayer ? (
78- < div className = { cn ( accordionLinkClassName , 'flex-1' , isActiveAncestor && boldClassName ) } >
82+ < div className = { cn ( accordionLinkClassName , 'flex-1' ) } >
7983 < span > { page . name } </ span >
8084 </ div >
8185 ) : (
@@ -84,7 +88,7 @@ const ChildAccordion = ({
8488 className = { cn (
8589 accordionLinkClassName ,
8690 'ui-text-label3 font-medium w-full h-full pr-5' ,
87- isActiveLink && boldClassName ,
91+ isActiveLink && 'text-neutral-1300 dark:text-neutral-000 font-bold' ,
8892 ) }
8993 tabIndex = { - 1 }
9094 to = { page . link }
@@ -147,9 +151,9 @@ const LeftSidebar = ({ inHeader = false }: LeftSidebarProps) => {
147151 >
148152 < Accordion . Trigger
149153 className = { cn (
150- 'group/accordion-trigger' ,
154+ 'group/accordion-trigger z-10 ' ,
151155 accordionTriggerClassName ,
152- 'data-[state=open]:border-b data-[state=open]:sticky data-[state=open]:top-0 data-[state=open]:text-neutral-1300 dark:data-[state=open]:text-neutral-000 [&[data-state=open]_svg]:text-orange-600 h-12 px-4 py-3 font-bold' ,
156+ 'data-[state=open]:border-b data-[state=open]:sticky data-[state=open]:top-0 [&[data-state=open]_svg]:text-orange-600 h-12 px-4 py-3 font-bold' ,
153157 isActive && 'text-neutral-1300 dark:text-neutral-000' ,
154158 ) }
155159 >
0 commit comments