11import {
22 ArrowPathIcon ,
3+ ArrowRightIcon ,
34 BookOpenIcon ,
45 CheckIcon ,
6+ ChevronUpIcon ,
57 ClockIcon ,
68 CloudArrowDownIcon ,
79 EnvelopeIcon ,
@@ -30,9 +32,14 @@ import { CopyableText } from "~/components/primitives/CopyableText";
3032import { DateTime , DateTimeAccurate } from "~/components/primitives/DateTime" ;
3133import { Header2 , Header3 } from "~/components/primitives/Headers" ;
3234import { Paragraph } from "~/components/primitives/Paragraph" ;
35+ import {
36+ Popover ,
37+ PopoverContent ,
38+ PopoverMenuItem ,
39+ PopoverTrigger ,
40+ } from "~/components/primitives/Popover" ;
3341import * as Property from "~/components/primitives/PropertyTable" ;
3442import { Spinner } from "~/components/primitives/Spinner" ;
35- import { toast } from "sonner" ;
3643import {
3744 Table ,
3845 TableBody ,
@@ -44,7 +51,6 @@ import {
4451import { TabButton , TabContainer } from "~/components/primitives/Tabs" ;
4552import { TextLink } from "~/components/primitives/TextLink" ;
4653import { InfoIconTooltip , SimpleTooltip } from "~/components/primitives/Tooltip" ;
47- import { ToastUI } from "~/components/primitives/Toast" ;
4854import { RunTimeline , RunTimelineEvent , SpanTimeline } from "~/components/run/RunTimeline" ;
4955import { PacketDisplay } from "~/components/runs/v3/PacketDisplay" ;
5056import { RunIcon } from "~/components/runs/v3/RunIcon" ;
@@ -67,6 +73,7 @@ import { useHasAdminAccess } from "~/hooks/useUser";
6773import { redirectWithErrorMessage } from "~/models/message.server" ;
6874import { type Span , SpanPresenter , type SpanRun } from "~/presenters/v3/SpanPresenter.server" ;
6975import { logger } from "~/services/logger.server" ;
76+ import { requireUserId } from "~/services/session.server" ;
7077import { cn } from "~/utils/cn" ;
7178import { formatCurrencyAccurate } from "~/utils/numberFormatter" ;
7279import {
@@ -84,11 +91,10 @@ import {
8491 v3SpanParamsSchema ,
8592} from "~/utils/pathBuilder" ;
8693import { createTimelineSpanEventsFromSpanEvents } from "~/utils/timelineSpanEvents" ;
87- import { CompleteWaitpointForm } from "../resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.$waitpointFriendlyId.complete/route" ;
88- import { requireUserId } from "~/services/session.server" ;
8994import type { SpanOverride } from "~/v3/eventRepository/eventRepository.types" ;
95+ import { type action as resetIdempotencyKeyAction } from "../resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.idempotencyKey.reset" ;
9096import { RealtimeStreamViewer } from "../resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.streams.$streamKey/route" ;
91- import { action as resetIdempotencyKeyAction } from "../resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.idempotencyKey.reset " ;
97+ import { CompleteWaitpointForm } from "../resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.$waitpointFriendlyId.complete/route " ;
9298
9399export const loader = async ( { request, params } : LoaderFunctionArgs ) => {
94100 const userId = await requireUserId ( request ) ;
@@ -312,7 +318,7 @@ function RunBody({
312318 const resetFetcher = useTypedFetcher < typeof resetIdempotencyKeyAction > ( ) ;
313319
314320 return (
315- < div className = "grid h-full max-h-full grid-rows-[2.5rem_2rem_1fr_3 .25rem] overflow-hidden bg-background-bright" >
321+ < div className = "grid h-full max-h-full grid-rows-[2.5rem_2rem_1fr_minmax(3 .25rem,auto) ] overflow-hidden bg-background-bright" >
316322 < div className = "flex items-center justify-between gap-2 overflow-x-hidden px-3 pr-2" >
317323 < div className = "flex items-center gap-1 overflow-x-hidden" >
318324 < RunIcon
@@ -962,7 +968,7 @@ function RunBody({
962968 ) }
963969 </ div >
964970 </ div >
965- < div className = "flex items-center justify-between gap-2 border-t border-grid-dimmed px-2" >
971+ < div className = "flex items-center flex-wrap py-2 justify-between gap-2 border-t border-grid-dimmed px-2" >
966972 < div className = "flex items-center gap-4" >
967973 { run . friendlyId !== runParam && (
968974 < LinkButton
@@ -982,28 +988,46 @@ function RunBody({
982988 ) }
983989 < AdminDebugRun friendlyId = { run . friendlyId } />
984990 </ div >
985- < div className = "flex items-center gap-4 " >
991+ < div className = "flex items-center" >
986992 { run . logsDeletedAt === null ? (
987- < >
993+ < div className = "flex" >
988994 < LinkButton
989995 to = { `${ v3LogsPath ( organization , project , environment ) } ?runId=${ runParam } &from=${
990996 new Date ( run . createdAt ) . getTime ( ) - 60000
991997 } `}
992998 variant = "secondary/medium"
999+ className = "rounded-r-none border-r-0"
9931000 >
9941001 View logs
9951002 </ LinkButton >
996- < LinkButton
997- to = { v3RunDownloadLogsPath ( { friendlyId : runParam } ) }
998- LeadingIcon = { CloudArrowDownIcon }
999- leadingIconClassName = "text-indigo-400"
1000- variant = "secondary/medium"
1001- target = "_blank"
1002- download
1003- >
1004- Download logs
1005- </ LinkButton >
1006- </ >
1003+ < Popover >
1004+ < PopoverTrigger asChild >
1005+ < Button
1006+ variant = "secondary/medium"
1007+ className = "rounded-l-none border-l-charcoal-700 px-1.5"
1008+ >
1009+ < ChevronUpIcon className = "size-4 transition group-hover/button:text-text-bright" />
1010+ </ Button >
1011+ </ PopoverTrigger >
1012+ < PopoverContent className = "min-w-[140px] p-1" align = "end" >
1013+ < PopoverMenuItem
1014+ to = { `${ v3LogsPath ( organization , project , environment ) } ?runId=${ runParam } &from=${
1015+ new Date ( run . createdAt ) . getTime ( ) - 60000
1016+ } `}
1017+ title = "View logs"
1018+ icon = { ArrowRightIcon }
1019+ leadingIconClassName = "text-blue-500"
1020+ />
1021+ < PopoverMenuItem
1022+ to = { v3RunDownloadLogsPath ( { friendlyId : runParam } ) }
1023+ title = "Download logs"
1024+ icon = { CloudArrowDownIcon }
1025+ leadingIconClassName = "text-indigo-500"
1026+ openInNewTab
1027+ />
1028+ </ PopoverContent >
1029+ </ Popover >
1030+ </ div >
10071031 ) : null }
10081032 </ div >
10091033 </ div >
0 commit comments