22 ArrowUturnLeftIcon ,
33 BoltSlashIcon ,
44 BookOpenIcon ,
5- ChevronUpIcon ,
65 ChevronDownIcon ,
76 ChevronRightIcon ,
87 InformationCircleIcon ,
@@ -12,6 +11,7 @@ import {
1211 MagnifyingGlassPlusIcon ,
1312 StopCircleIcon ,
1413} from "@heroicons/react/20/solid" ;
14+
1515import { useLoaderData , useRevalidator } from "@remix-run/react" ;
1616import { type LoaderFunctionArgs , type SerializeFrom , json } from "@remix-run/server-runtime" ;
1717import { type Virtualizer } from "@tanstack/react-virtual" ;
@@ -26,6 +26,8 @@ import { motion } from "framer-motion";
2626import { useCallback , useEffect , useRef , useState } from "react" ;
2727import { useHotkeys } from "react-hotkeys-hook" ;
2828import { redirect } from "remix-typedjson" ;
29+ import { ChevronExtraSmallDown } from "~/assets/icons/ChevronExtraSmallDown" ;
30+ import { ChevronExtraSmallUp } from "~/assets/icons/ChevronExtraSmallUp" ;
2931import { MoveToTopIcon } from "~/assets/icons/MoveToTopIcon" ;
3032import { MoveUpIcon } from "~/assets/icons/MoveUpIcon" ;
3133import tileBgPath from "~/assets/images/error-banner-tile@2x.png" ;
@@ -35,6 +37,7 @@ import { AdminDebugTooltip } from "~/components/admin/debugTooltip";
3537import { PageBody } from "~/components/layout/AppLayout" ;
3638import { Badge } from "~/components/primitives/Badge" ;
3739import { Button , LinkButton } from "~/components/primitives/Buttons" ;
40+ import { CopyableText } from "~/components/primitives/CopyableText" ;
3841import { DateTimeShort } from "~/components/primitives/DateTime" ;
3942import { Dialog , DialogTrigger } from "~/components/primitives/Dialog" ;
4043import { Header3 } from "~/components/primitives/Headers" ;
@@ -62,24 +65,32 @@ import {
6265import { type NodesState } from "~/components/primitives/TreeView/reducer" ;
6366import { CancelRunDialog } from "~/components/runs/v3/CancelRunDialog" ;
6467import { ReplayRunDialog } from "~/components/runs/v3/ReplayRunDialog" ;
68+ import { getRunFiltersFromSearchParams } from "~/components/runs/v3/RunFilters" ;
6569import { RunIcon } from "~/components/runs/v3/RunIcon" ;
6670import {
6771 SpanTitle ,
6872 eventBackgroundClassName ,
6973 eventBorderClassName ,
7074} from "~/components/runs/v3/SpanTitle" ;
7175import { TaskRunStatusIcon , runStatusClassNameColor } from "~/components/runs/v3/TaskRunStatus" ;
76+ import { $replica } from "~/db.server" ;
7277import { useDebounce } from "~/hooks/useDebounce" ;
7378import { useEnvironment } from "~/hooks/useEnvironment" ;
7479import { useEventSource } from "~/hooks/useEventSource" ;
7580import { useInitialDimensions } from "~/hooks/useInitialDimensions" ;
7681import { useOrganization } from "~/hooks/useOrganizations" ;
7782import { useProject } from "~/hooks/useProject" ;
7883import { useReplaceSearchParams } from "~/hooks/useReplaceSearchParams" ;
84+ import { useSearchParams } from "~/hooks/useSearchParam" ;
7985import { type Shortcut , useShortcutKeys } from "~/hooks/useShortcutKeys" ;
8086import { useHasAdminAccess } from "~/hooks/useUser" ;
87+ import { findProjectBySlug } from "~/models/project.server" ;
88+ import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server" ;
89+ import { NextRunListPresenter } from "~/presenters/v3/NextRunListPresenter.server" ;
8190import { RunEnvironmentMismatchError , RunPresenter } from "~/presenters/v3/RunPresenter.server" ;
91+ import { clickhouseClient } from "~/services/clickhouseInstance.server" ;
8292import { getImpersonationId } from "~/services/impersonation.server" ;
93+ import { logger } from "~/services/logger.server" ;
8394import { getResizableSnapshot } from "~/services/resizablePanel.server" ;
8495import { requireUserId } from "~/services/session.server" ;
8596import { cn } from "~/utils/cn" ;
@@ -94,18 +105,9 @@ import {
94105 v3RunStreamingPath ,
95106 v3RunsPath ,
96107} from "~/utils/pathBuilder" ;
108+ import type { SpanOverride } from "~/v3/eventRepository/eventRepository.types" ;
97109import { useCurrentPlan } from "../_app.orgs.$organizationSlug/route" ;
98110import { SpanView } from "../resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.spans.$spanParam/route" ;
99- import { useSearchParams } from "~/hooks/useSearchParam" ;
100- import { CopyableText } from "~/components/primitives/CopyableText" ;
101- import type { SpanOverride } from "~/v3/eventRepository/eventRepository.types" ;
102- import { getRunFiltersFromSearchParams } from "~/components/runs/v3/RunFilters" ;
103- import { NextRunListPresenter } from "~/presenters/v3/NextRunListPresenter.server" ;
104- import { $replica } from "~/db.server" ;
105- import { clickhouseClient } from "~/services/clickhouseInstance.server" ;
106- import { findProjectBySlug } from "~/models/project.server" ;
107- import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server" ;
108- import { logger } from "~/services/logger.server" ;
109111
110112const resizableSettings = {
111113 parent : {
@@ -336,19 +338,19 @@ export default function Page() {
336338 text : "Runs" ,
337339 } }
338340 title = {
339- < >
341+ < div className = "flex items-center gap-x-0" >
340342 < CopyableText
341343 value = { run . friendlyId }
342344 variant = "text-below"
343- className = "-ml-[0.4375rem] px-1.5 pb-[3px] font-mono text-xs leading-none "
345+ className = "-ml-[0.4375rem] h-6 px-1.5 font-mono text-xs"
344346 />
345347 { tableState && (
346348 < div className = "flex" >
347349 < PreviousRunButton to = { previousRunPath } />
348350 < NextRunButton to = { nextRunPath } />
349351 </ div >
350352 ) }
351- </ >
353+ </ div >
352354 }
353355 />
354356 { environment . type === "DEVELOPMENT" && < DevDisconnectedBanner isConnected = { isConnected } /> }
@@ -1782,11 +1784,9 @@ function PreviousRunButton({ to }: { to: string | null }) {
17821784 < LinkButton
17831785 to = { to ? to : "#" }
17841786 variant = { "minimal/small" }
1785- LeadingIcon = { ChevronUpIcon }
1786- className = { cn (
1787- "flex items-center rounded-r-none border-r-0 pl-2 pr-[0.5625rem]" ,
1788- ! to && "cursor-not-allowed opacity-50"
1789- ) }
1787+ LeadingIcon = { ChevronExtraSmallUp }
1788+ leadingIconClassName = "size-3"
1789+ className = { cn ( "flex size-6 max-w-6 items-center" , ! to && "cursor-not-allowed opacity-50" ) }
17901790 onClick = { ( e ) => ! to && e . preventDefault ( ) }
17911791 shortcut = { { key : "[" } }
17921792 tooltip = "Previous Run"
@@ -1803,11 +1803,9 @@ function NextRunButton({ to }: { to: string | null }) {
18031803 < LinkButton
18041804 to = { to ? to : "#" }
18051805 variant = { "minimal/small" }
1806- TrailingIcon = { ChevronDownIcon }
1807- className = { cn (
1808- "flex items-center rounded-l-none border-l-0 pl-[0.5625rem] pr-2" ,
1809- ! to && "cursor-not-allowed opacity-50"
1810- ) }
1806+ LeadingIcon = { ChevronExtraSmallDown }
1807+ leadingIconClassName = "size-3"
1808+ className = { cn ( "flex size-6 max-w-6 items-center" , ! to && "cursor-not-allowed opacity-50" ) }
18111809 onClick = { ( e ) => ! to && e . preventDefault ( ) }
18121810 shortcut = { { key : "]" } }
18131811 tooltip = "Next Run"
0 commit comments