@@ -21,11 +21,14 @@ import {
21
21
ExternalLinkIcon ,
22
22
FileIcon ,
23
23
LayoutGridIcon ,
24
+ SquareCheckBigIcon ,
24
25
} from "lucide-react" ;
25
26
import { AppStatusStateIcon } from "modules/apps/AppStatusStateIcon" ;
26
27
import { useAppLink } from "modules/apps/useAppLink" ;
27
28
import { type FC , useState } from "react" ;
28
29
import { truncateURI } from "utils/uri" ;
30
+ import { Link as RouterLink } from "react-router-dom" ;
31
+ import { ScrollArea } from "components/ScrollArea/ScrollArea" ;
29
32
30
33
interface AppStatusesProps {
31
34
workspace : Workspace ;
@@ -81,9 +84,9 @@ export const AppStatuses: FC<AppStatusesProps> = ({
81
84
{ latestStatus . message || capitalize ( latestStatus . state ) }
82
85
</ span >
83
86
</ div >
84
- < span className = "text-xs text-content-secondary first-letter:uppercase block pl-[26px]" >
87
+ < time className = "text-xs text-content-secondary first-letter:uppercase block pl-[26px]" >
85
88
{ timeFrom ( new Date ( latestStatus . created_at ) , comparisonDate ) }
86
- </ span >
89
+ </ time >
87
90
</ div >
88
91
89
92
< div className = "flex items-center gap-2" >
@@ -119,6 +122,13 @@ export const AppStatuses: FC<AppStatusesProps> = ({
119
122
</ Button >
120
123
) ) }
121
124
125
+ < Button asChild size = "sm" variant = "outline" >
126
+ < RouterLink to = { `/tasks/${ workspace . owner_name } /${ workspace . name } ` } >
127
+ < SquareCheckBigIcon />
128
+ View task
129
+ </ RouterLink >
130
+ </ Button >
131
+
122
132
< TooltipProvider >
123
133
< Tooltip >
124
134
< TooltipTrigger asChild >
@@ -141,35 +151,38 @@ export const AppStatuses: FC<AppStatusesProps> = ({
141
151
</ div >
142
152
</ div >
143
153
144
- { displayStatuses &&
145
- otherStatuses . map ( ( status ) => {
146
- const statusTime = new Date ( status . created_at ) ;
147
- const formattedTimestamp = timeFrom ( statusTime , comparisonDate ) ;
154
+ { displayStatuses && (
155
+ < ScrollArea className = "h-[200px]" >
156
+ { otherStatuses . map ( ( status ) => {
157
+ const statusTime = new Date ( status . created_at ) ;
158
+ const formattedTimestamp = timeFrom ( statusTime , comparisonDate ) ;
148
159
149
- return (
150
- < div
151
- key = { status . id }
152
- className = { `
160
+ return (
161
+ < div
162
+ key = { status . id }
163
+ className = { `
153
164
flex items-center justify-between px-4 py-3
154
165
border-0 [&:not(:last-child)]:border-b border-solid border-border
155
166
` }
156
- >
157
- < div className = "flex items-center justify-between w-full text-content-secondary" >
158
- < span className = "text-xs flex items-center gap-2" >
159
- < AppStatusStateIcon
160
- state = { status . state }
161
- latest = { false }
162
- className = "size-icon-xs w-[18px]"
163
- />
164
- { status . message || capitalize ( status . state ) }
165
- </ span >
166
- < span className = "text-2xs text-content-secondary first-letter:uppercase block pl-[26px]" >
167
- { formattedTimestamp }
168
- </ span >
167
+ >
168
+ < div className = "flex items-center justify-between w-full text-content-secondary" >
169
+ < span className = "text-xs flex items-center gap-2" >
170
+ < AppStatusStateIcon
171
+ state = { status . state }
172
+ latest = { false }
173
+ className = "size-icon-xs w-[18px]"
174
+ />
175
+ { status . message || capitalize ( status . state ) }
176
+ </ span >
177
+ < span className = "text-2xs text-content-secondary first-letter:uppercase block pl-[26px]" >
178
+ { formattedTimestamp }
179
+ </ span >
180
+ </ div >
169
181
</ div >
170
- </ div >
171
- ) ;
172
- } ) }
182
+ ) ;
183
+ } ) }
184
+ </ ScrollArea >
185
+ ) }
173
186
</ div >
174
187
) ;
175
188
} ;
0 commit comments