11import type { ReactNode } from 'react'
22import { useConfig } from '../../hooks/useConfig.js'
33import type { Source } from '../../lib/sources/types.js'
4- import { Version } from '../../lib/sources/types.js'
54import { cn } from '../../lib/utils.js'
65import Dropdown from '../Dropdown/Dropdown.js'
76import styles from './Breadcrumb.module.css'
@@ -11,12 +10,20 @@ interface BreadcrumbProps {
1110 children ?: ReactNode
1211}
1312
14- function Versions ( { versions , label } : { versions : Version [ ] , label : string } ) {
13+ function Versions ( { source } : { source : Source } ) {
1514 const { routes, customClass } = useConfig ( )
1615
17- return < Dropdown label = { label } className = { customClass ?. versions } >
16+ if ( ! source . versions ) return null
17+ const { label, versions } = source . versions
18+
19+ return < Dropdown label = { label } className = { cn ( styles . versions , customClass ?. versions ) } align = "right" >
1820 { versions . map ( ( { label, sourceId } ) => {
19- return < a key = { sourceId } role = "menuitem" href = { routes ?. getSourceRouteUrl ?.( { sourceId } ) } > { label } </ a >
21+ return < a
22+ key = { sourceId }
23+ role = "menuitem"
24+ href = { routes ?. getSourceRouteUrl ?.( { sourceId } ) }
25+ aria-current = { sourceId === source . sourceId ? 'true' : undefined }
26+ > { label } </ a >
2027 } ) }
2128 </ Dropdown >
2229}
@@ -33,7 +40,7 @@ export default function Breadcrumb({ source, children }: BreadcrumbProps) {
3340 < a href = { routes ?. getSourceRouteUrl ?.( { sourceId : part . sourceId } ) ?? '' } key = { depth } > { part . text } </ a >
3441 ) }
3542 </ div >
36- { source . versions && < Versions label = { source . versions . label } versions = { source . versions . versions } /> }
43+ { source . versions && < Versions source = { source } /> }
3744 { children }
3845 </ nav >
3946}
0 commit comments