@@ -170,79 +170,95 @@ export function AppSidebar() {
170170 { group . map ( ( item ) => (
171171 < Collapsible
172172 key = { item . label }
173- asChild
174173 defaultOpen = { hasChildren ( item ) && isRouteActive ( item ) }
175174 className = "group/collapsible"
176- >
177- { hasChildren ( item ) ? (
178- < SidebarMenuItem >
179- < CollapsibleTrigger asChild >
180- < SidebarMenuButton
181- isActive = { isRouteActive ( item ) }
182- tooltip = { getLabel ( item ) }
183- className = "gap-3"
184- >
185- < NavIcon name = { item . icon } />
186- < span className = "flex-1 truncate" > { getLabel ( item ) } </ span >
187- < RiArrowRightSLine className = "size-4 shrink-0 transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90" />
188- </ SidebarMenuButton >
189- </ CollapsibleTrigger >
190- < CollapsibleContent >
191- < SidebarMenuSub className = "border-l-0 border-s rtl:-translate-x-px" >
192- { item . children ! . map ( ( child ) => (
193- < SidebarMenuSubItem key = { child . label } >
194- { isExternal ( child ) ? (
195- < SidebarMenuSubButton asChild size = "sm" >
196- < a
197- href = { normalizedTo ( child ) }
198- target = "_blank"
199- rel = "noopener noreferrer"
200- className = "flex w-full items-center gap-2"
201- >
202- < NavIcon name = { child . icon } />
203- < span className = "truncate" > { getLabel ( child ) } </ span >
204- < RiExternalLinkLine className = "ms-auto size-3 text-muted-foreground" />
205- </ a >
206- </ SidebarMenuSubButton >
207- ) : (
208- < SidebarMenuSubButton asChild size = "sm" isActive = { isRouteActive ( child ) } >
209- < Link href = { normalizedTo ( child ) } className = "flex w-full items-center gap-2" >
210- < NavIcon name = { child . icon } />
211- < span className = "truncate" > { getLabel ( child ) } </ span >
212- </ Link >
213- </ SidebarMenuSubButton >
214- ) }
215- </ SidebarMenuSubItem >
216- ) ) }
217- </ SidebarMenuSub >
218- </ CollapsibleContent >
219- </ SidebarMenuItem >
220- ) : (
221- < SidebarMenuItem >
222- { isExternal ( item ) ? (
223- < SidebarMenuButton asChild tooltip = { getLabel ( item ) } >
224- < a
225- href = { normalizedTo ( item ) }
226- target = "_blank"
227- rel = "noopener noreferrer"
228- className = "flex w-full items-center gap-3"
229- >
230- < NavIcon name = { item . icon } />
231- < span className = "flex-1 truncate" > { getLabel ( item ) } </ span >
232- < RiExternalLinkLine className = "size-3.5 text-muted-foreground" />
233- </ a >
234- </ SidebarMenuButton >
235- ) : (
236- < SidebarMenuButton asChild isActive = { isRouteActive ( item ) } tooltip = { getLabel ( item ) } >
237- < Link href = { normalizedTo ( item ) } className = "flex w-full items-center gap-3" >
238- < NavIcon name = { item . icon } />
239- < span className = "flex-1 truncate" > { getLabel ( item ) } </ span >
240- </ Link >
241- </ SidebarMenuButton >
242- ) }
243- </ SidebarMenuItem >
244- ) }
245- </ Collapsible >
175+ render = {
176+ hasChildren ( item ) ? (
177+ < SidebarMenuItem >
178+ < CollapsibleTrigger
179+ render = {
180+ < SidebarMenuButton
181+ isActive = { isRouteActive ( item ) }
182+ tooltip = { getLabel ( item ) }
183+ className = "gap-3"
184+ >
185+ < NavIcon name = { item . icon } />
186+ < span className = "flex-1 truncate" > { getLabel ( item ) } </ span >
187+ < RiArrowRightSLine className = "size-4 shrink-0 transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90" />
188+ </ SidebarMenuButton >
189+ }
190+ />
191+ < CollapsibleContent >
192+ < SidebarMenuSub className = "border-l-0 border-s rtl:-translate-x-px" >
193+ { item . children ! . map ( ( child ) => (
194+ < SidebarMenuSubItem key = { child . label } >
195+ { isExternal ( child ) ? (
196+ < SidebarMenuSubButton
197+ size = "sm"
198+ render = {
199+ < a
200+ href = { normalizedTo ( child ) }
201+ target = "_blank"
202+ rel = "noopener noreferrer"
203+ className = "flex w-full items-center gap-2"
204+ >
205+ < NavIcon name = { child . icon } />
206+ < span className = "truncate" > { getLabel ( child ) } </ span >
207+ < RiExternalLinkLine className = "ms-auto size-3 text-muted-foreground" />
208+ </ a >
209+ }
210+ />
211+ ) : (
212+ < SidebarMenuSubButton
213+ size = "sm"
214+ isActive = { isRouteActive ( child ) }
215+ render = {
216+ < Link href = { normalizedTo ( child ) } className = "flex w-full items-center gap-2" >
217+ < NavIcon name = { child . icon } />
218+ < span className = "truncate" > { getLabel ( child ) } </ span >
219+ </ Link >
220+ }
221+ />
222+ ) }
223+ </ SidebarMenuSubItem >
224+ ) ) }
225+ </ SidebarMenuSub >
226+ </ CollapsibleContent >
227+ </ SidebarMenuItem >
228+ ) : (
229+ < SidebarMenuItem >
230+ { isExternal ( item ) ? (
231+ < SidebarMenuButton
232+ tooltip = { getLabel ( item ) }
233+ render = {
234+ < a
235+ href = { normalizedTo ( item ) }
236+ target = "_blank"
237+ rel = "noopener noreferrer"
238+ className = "flex w-full items-center gap-3"
239+ >
240+ < NavIcon name = { item . icon } />
241+ < span className = "flex-1 truncate" > { getLabel ( item ) } </ span >
242+ < RiExternalLinkLine className = "size-3.5 text-muted-foreground" />
243+ </ a >
244+ }
245+ />
246+ ) : (
247+ < SidebarMenuButton
248+ isActive = { isRouteActive ( item ) }
249+ tooltip = { getLabel ( item ) }
250+ render = {
251+ < Link href = { normalizedTo ( item ) } className = "flex w-full items-center gap-3" >
252+ < NavIcon name = { item . icon } />
253+ < span className = "flex-1 truncate" > { getLabel ( item ) } </ span >
254+ </ Link >
255+ }
256+ />
257+ ) }
258+ </ SidebarMenuItem >
259+ )
260+ }
261+ />
246262 ) ) }
247263 </ SidebarMenu >
248264 </ SidebarGroupContent >
0 commit comments