@@ -56,7 +56,6 @@ export function ExpandedIssueCard({ issue }) {
5656 const displayBody = processedBody ;
5757
5858 const renderTimelineItem = ( item , idx ) => {
59- const time = item . createdAt ? new Date ( item . createdAt ) . toLocaleString ( ) : "" ;
6059 switch ( item . __typename ) {
6160 case "IssueComment" :
6261 return (
@@ -68,7 +67,7 @@ export function ExpandedIssueCard({ issue }) {
6867 < AvatarFallback className = "text-[10px]" > { initials ( item . author ?. login ) } </ AvatarFallback >
6968 </ Avatar >
7069 < div className = "text-gray-700" >
71- < span className = "font-medium" > { item . author ?. login } </ span > commented { time }
70+ < span className = "font-medium" > { item . author ?. login } </ span > commented < TimeAgo iso = { item . createdAt } />
7271 </ div >
7372 </ div >
7473 { item . body && < div className = "ml-7 text-gray-600" > { item . body } </ div > }
@@ -83,7 +82,7 @@ export function ExpandedIssueCard({ issue }) {
8382 < AvatarImage src = { item . actor ?. avatarUrl } />
8483 < AvatarFallback className = "text-[10px]" > { initials ( item . actor ?. login ) } </ AvatarFallback >
8584 </ Avatar >
86- < div > < span className = "font-medium" > { item . actor ?. login } </ span > closed this issue { time } </ div >
85+ < div > < span className = "font-medium" > { item . actor ?. login } </ span > closed this issue < TimeAgo iso = { item . createdAt } /> </ div >
8786 </ div >
8887 </ li >
8988 ) ;
@@ -96,7 +95,7 @@ export function ExpandedIssueCard({ issue }) {
9695 < AvatarImage src = { item . actor ?. avatarUrl } />
9796 < AvatarFallback className = "text-[10px]" > { initials ( item . actor ?. login ) } </ AvatarFallback >
9897 </ Avatar >
99- < div > < span className = "font-medium" > { item . actor ?. login } </ span > reopened this issue { time } </ div >
98+ < div > < span className = "font-medium" > { item . actor ?. login } </ span > reopened this issue < TimeAgo iso = { item . createdAt } /> </ div >
10099 </ div >
101100 </ li >
102101 ) ;
@@ -119,7 +118,7 @@ export function ExpandedIssueCard({ issue }) {
119118 { item . label . name }
120119 </ span >
121120 ) }
122- < span > { time } </ span >
121+ < span > < TimeAgo iso = { item . createdAt } /> </ span >
123122 </ div >
124123 </ div >
125124 </ li >
@@ -143,7 +142,7 @@ export function ExpandedIssueCard({ issue }) {
143142 { item . label . name }
144143 </ span >
145144 ) }
146- < span > { time } </ span >
145+ < span > < TimeAgo iso = { item . createdAt } /> </ span >
147146 </ div >
148147 </ div >
149148 </ li >
@@ -169,7 +168,7 @@ export function ExpandedIssueCard({ issue }) {
169168 < span className = "font-medium" > { item . assignee ?. login } </ span >
170169 </ >
171170 ) }
172- < span > { time } </ span >
171+ < span > < TimeAgo iso = { item . createdAt } /> </ span >
173172 </ div >
174173 </ div >
175174 </ li >
@@ -195,11 +194,63 @@ export function ExpandedIssueCard({ issue }) {
195194 < span className = "font-medium" > { item . assignee ?. login } </ span >
196195 </ >
197196 ) }
198- < span > { time } </ span >
197+ < span > < TimeAgo iso = { item . createdAt } /> </ span >
199198 </ div >
200199 </ div >
201200 </ li >
202201 ) ;
202+ case "CrossReferencedEvent" : {
203+ const src = item . source ;
204+ if ( src ?. __typename === 'PullRequest' ) {
205+ return (
206+ < li key = { idx } className = "relative pl-6" >
207+ < span className = "absolute rounded-full bg-blue-500 border-2 border-white" style = { { left : - 6 , top : 10 , width : 12 , height : 12 } } />
208+ < div className = "flex items-start gap-2 text-gray-700" >
209+ < Avatar className = "w-5 h-5 mt-0.5" >
210+ < AvatarImage src = { item . actor ?. avatarUrl } />
211+ < AvatarFallback className = "text-[10px]" > { initials ( item . actor ?. login ) } </ AvatarFallback >
212+ </ Avatar >
213+ < div className = "flex-1" >
214+ < div >
215+ < span className = "font-medium" > { item . actor ?. login } </ span > linked pull request{ ' ' }
216+ < a className = "text-blue-600 underline" href = { src . url } target = "_blank" rel = "noreferrer" >
217+ { src . repository ?. nameWithOwner } #{ src . number }
218+ </ a > { ' ' } — { src . title } { src . merged ? < span className = "ml-1 text-purple-700" > (merged)</ span > : null }
219+ </ div >
220+ < div className = "text-xs text-gray-500" > < TimeAgo iso = { item . createdAt } /> </ div >
221+ </ div >
222+ </ div >
223+ </ li >
224+ ) ;
225+ }
226+ return null ;
227+ }
228+ case "CrossReferencedEvent" : {
229+ const src = item . source ;
230+ if ( src ?. __typename === 'PullRequest' ) {
231+ return (
232+ < li key = { idx } className = "relative pl-6" >
233+ < span className = "absolute rounded-full bg-blue-500 border-2 border-white" style = { { left : - 6 , top : 10 , width : 12 , height : 12 } } />
234+ < div className = "flex items-start gap-2 text-gray-700" >
235+ < Avatar className = "w-5 h-5 mt-0.5" >
236+ < AvatarImage src = { item . actor ?. avatarUrl } />
237+ < AvatarFallback className = "text-[10px]" > { initials ( item . actor ?. login ) } </ AvatarFallback >
238+ </ Avatar >
239+ < div className = "flex-1" >
240+ < div >
241+ < span className = "font-medium" > { item . actor ?. login } </ span > linked pull request{ ' ' }
242+ < a className = "text-blue-600 underline" href = { src . url } target = "_blank" rel = "noreferrer" >
243+ { src . repository ?. nameWithOwner } #{ src . number }
244+ </ a > { ' ' } — { src . title } { src . merged ? < span className = "ml-1 text-purple-700" > (merged)</ span > : null }
245+ </ div >
246+ < div className = "text-xs text-gray-500" > < TimeAgo iso = { item . createdAt } /> </ div >
247+ </ div >
248+ </ div >
249+ </ li >
250+ ) ;
251+ }
252+ return null ;
253+ }
203254 default :
204255 return null ;
205256 }
@@ -380,7 +431,7 @@ export function IssueOverlayCard({ issue }) {
380431 < AvatarFallback className = "text-[10px]" > { initials ( item . author ?. login ) } </ AvatarFallback >
381432 </ Avatar >
382433 < div className = "text-gray-700" >
383- < span className = "font-medium" > { item . author ?. login } </ span > commented { time }
434+ < span className = "font-medium" > { item . author ?. login } </ span > commented < TimeAgo iso = { item . createdAt } />
384435 </ div >
385436 </ div >
386437 { item . body && < div className = "ml-7 text-gray-600" > { item . body } </ div > }
@@ -395,7 +446,7 @@ export function IssueOverlayCard({ issue }) {
395446 < AvatarImage src = { item . actor ?. avatarUrl } />
396447 < AvatarFallback className = "text-[10px]" > { initials ( item . actor ?. login ) } </ AvatarFallback >
397448 </ Avatar >
398- < div > < span className = "font-medium" > { item . actor ?. login } </ span > closed this issue { time } </ div >
449+ < div > < span className = "font-medium" > { item . actor ?. login } </ span > closed this issue < TimeAgo iso = { item . createdAt } /> </ div >
399450 </ div >
400451 </ li >
401452 ) ;
@@ -408,7 +459,7 @@ export function IssueOverlayCard({ issue }) {
408459 < AvatarImage src = { item . actor ?. avatarUrl } />
409460 < AvatarFallback className = "text-[10px]" > { initials ( item . actor ?. login ) } </ AvatarFallback >
410461 </ Avatar >
411- < div > < span className = "font-medium" > { item . actor ?. login } </ span > reopened this issue { time } </ div >
462+ < div > < span className = "font-medium" > { item . actor ?. login } </ span > reopened this issue < TimeAgo iso = { item . createdAt } /> </ div >
412463 </ div >
413464 </ li >
414465 ) ;
@@ -431,7 +482,7 @@ export function IssueOverlayCard({ issue }) {
431482 { item . label . name }
432483 </ span >
433484 ) }
434- < span > { time } </ span >
485+ < span > < TimeAgo iso = { item . createdAt } /> </ span >
435486 </ div >
436487 </ div >
437488 </ li >
@@ -455,7 +506,7 @@ export function IssueOverlayCard({ issue }) {
455506 { item . label . name }
456507 </ span >
457508 ) }
458- < span > { time } </ span >
509+ < span > < TimeAgo iso = { item . createdAt } /> </ span >
459510 </ div >
460511 </ div >
461512 </ li >
@@ -481,7 +532,7 @@ export function IssueOverlayCard({ issue }) {
481532 < span className = "font-medium" > { item . assignee ?. login } </ span >
482533 </ >
483534 ) }
484- < span > { time } </ span >
535+ < span > < TimeAgo iso = { item . createdAt } /> </ span >
485536 </ div >
486537 </ div >
487538 </ li >
0 commit comments