Skip to content

Commit c4d7f24

Browse files
committed
fix: make leftsidebar bolding conditions dependent on open state and lift z-index of top-level accordion items
1 parent 4a15d83 commit c4d7f24

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

src/components/Layout/LeftSidebar.tsx

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,25 @@ type LeftSidebarProps = {
1515
const 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

2435
const iconClassName = 'text-neutral-1300 dark:text-neutral-000 transition-transform';
2536

26-
const boldClassName = 'text-neutral-1300 dark:text-neutral-000 font-bold';
27-
2837
const 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

Comments
 (0)