11/* filepath: /workspaces/docs-internal/src/landings/components/journey/JourneyLearningTracks.tsx */
22import { ChevronDownIcon , ChevronUpIcon } from '@primer/octicons-react'
3- import { Button , Details , Timeline , Token , useDetails } from '@primer/react'
3+ import { Details , Timeline , Token , useDetails } from '@primer/react'
44import { Link } from '@/frame/components/Link'
55import { JourneyTrack } from '@/journeys/lib/journey-path-resolver'
66import styles from './JourneyLearningTracks.module.scss'
@@ -14,40 +14,38 @@ export const JourneyLearningTracks = ({ tracks }: JourneyLearningTracksProps) =>
1414 return null
1515 }
1616
17- const renderTrackContent = ( track : JourneyTrack , trackIndex : number ) => {
17+ const renderTrackContent = ( track : JourneyTrack ) => {
1818 const { getDetailsProps, open } = useDetails ( { } )
1919
2020 return (
21- < >
22- < div className = { styles . trackHeader } >
23- < h3 className = "h4 text-bold" > { track . title } </ h3 >
24- < Token text = { `${ track . guides ?. length || 0 } articles` } />
25- </ div >
26- < p className = { styles . trackDescription } > { track . description } </ p >
27- < Details { ...getDetailsProps ( ) } >
28- < Button
29- as = "summary"
30- variant = "invisible"
31- className = { `position-absolute ${ styles . expandButton } ` }
32- aria-label = {
33- open
34- ? `Collapse article list ${ trackIndex + 1 } `
35- : `Expand article list ${ trackIndex + 1 } `
36- }
37- >
21+ < Details
22+ { ...getDetailsProps ( ) }
23+ id = { `track-${ track . id } ` }
24+ className = { styles . trackCard }
25+ data-testid = "journey-track"
26+ >
27+ < summary className = { styles . trackSummary } >
28+ < div className = { styles . trackHeader } >
29+ < h3 className = "h4 text-bold" > { track . title } </ h3 >
30+ < Token text = { `${ track . guides ?. length || 0 } articles` } />
31+ </ div >
32+ < div className = { styles . trackDescription } >
33+ < p > { track . description } </ p >
34+ </ div >
35+ < div className = { `position-absolute ${ styles . expandButton } ` } >
3836 { open ? < ChevronUpIcon /> : < ChevronDownIcon /> }
39- </ Button >
40- < ol className = { styles . trackGuides } data-testid = "journey-articles" >
41- { ( track . guides || [ ] ) . map ( ( article : { href : string ; title : string } ) => (
42- < li key = { article . title } >
43- < Link href = { article . href } className = { `text-semibold ${ styles . guideLink } ` } >
44- { article . title }
45- </ Link >
46- </ li >
47- ) ) }
48- </ ol >
49- </ Details >
50- </ >
37+ </ div >
38+ </ summary >
39+ < ol className = { styles . trackGuides } data-testid = "journey-articles" >
40+ { ( track . guides || [ ] ) . map ( ( article : { href : string ; title : string } ) => (
41+ < li key = { article . title } >
42+ < Link href = { article . href } className = "text-semibold" >
43+ { article . title }
44+ </ Link >
45+ </ li >
46+ ) ) }
47+ </ ol >
48+ </ Details >
5149 )
5250 }
5351
@@ -60,10 +58,8 @@ export const JourneyLearningTracks = ({ tracks }: JourneyLearningTracksProps) =>
6058 return (
6159 < Timeline . Item key = { track . id } >
6260 < Timeline . Badge className = { styles . timelineBadge } > { trackIndex + 1 } </ Timeline . Badge >
63- < Timeline . Body className = { styles . learningTracks } >
64- < div className = "position-relative" data-testid = "journey-track" >
65- { renderTrackContent ( track , trackIndex ) }
66- </ div >
61+ < Timeline . Body className = { styles . journeyTracks } >
62+ { renderTrackContent ( track ) }
6763 </ Timeline . Body >
6864 </ Timeline . Item >
6965 )
@@ -76,11 +72,7 @@ export const JourneyLearningTracks = ({ tracks }: JourneyLearningTracksProps) =>
7672 { tracks . map ( ( track , trackIndex ) => (
7773 < div key = { track . id } className = { styles . mobileItem } >
7874 < div className = { styles . mobileBadge } > { trackIndex + 1 } </ div >
79- < div className = { styles . mobileTile } >
80- < div className = "position-relative" data-testid = "journey-track" >
81- { renderTrackContent ( track , trackIndex ) }
82- </ div >
83- </ div >
75+ < div className = { styles . mobileTile } > { renderTrackContent ( track ) } </ div >
8476 { trackIndex < tracks . length - 1 && < div className = { styles . mobileConnector } /> }
8577 </ div >
8678 ) ) }
0 commit comments