11import * as Ariakit from "@ariakit/react" ;
22import {
3- CalendarIcon ,
43 ClockIcon ,
5- CpuChipIcon ,
64 FingerPrintIcon ,
75 Squares2X2Icon ,
86 TagIcon ,
@@ -14,6 +12,7 @@ import { ListChecks, ListFilterIcon } from "lucide-react";
1412import { matchSorter } from "match-sorter" ;
1513import { type ReactNode , useCallback , useEffect , useMemo , useState } from "react" ;
1614import { z } from "zod" ;
15+ import { StatusIcon } from "~/assets/icons/StatusIcon" ;
1716import { TaskIcon } from "~/assets/icons/TaskIcon" ;
1817import { AppliedFilter } from "~/components/primitives/AppliedFilter" ;
1918import { DateTime } from "~/components/primitives/DateTime" ;
@@ -45,14 +44,7 @@ import { useSearchParams } from "~/hooks/useSearchParam";
4544import { type loader as tagsLoader } from "~/routes/resources.projects.$projectParam.runs.tags" ;
4645import { Button } from "../../primitives/Buttons" ;
4746import { BulkActionStatusCombo } from "./BulkAction" ;
48- import {
49- AppliedCustomDateRangeFilter ,
50- AppliedPeriodFilter ,
51- appliedSummary ,
52- CreatedAtDropdown ,
53- CustomDateRangeDropdown ,
54- FilterMenuProvider ,
55- } from "./SharedFilters" ;
47+ import { appliedSummary , FilterMenuProvider , TimeFilter } from "./SharedFilters" ;
5648import {
5749 allTaskRunStatuses ,
5850 descriptionForTaskRunStatus ,
@@ -61,7 +53,6 @@ import {
6153 TaskRunStatusCombo ,
6254} from "./TaskRunStatus" ;
6355import { TaskTriggerSourceIcon } from "./TaskTriggerSource" ;
64- import { StatusIcon } from "~/assets/icons/StatusIcon" ;
6556
6657export const TaskAttemptStatus = z . enum ( allTaskRunStatuses ) ;
6758
@@ -117,11 +108,8 @@ export function RunsFilters(props: RunFiltersProps) {
117108 const hasFilters =
118109 searchParams . has ( "statuses" ) ||
119110 searchParams . has ( "tasks" ) ||
120- searchParams . has ( "period" ) ||
121111 searchParams . has ( "bulkId" ) ||
122112 searchParams . has ( "tags" ) ||
123- searchParams . has ( "from" ) ||
124- searchParams . has ( "to" ) ||
125113 searchParams . has ( "batchId" ) ||
126114 searchParams . has ( "runId" ) ||
127115 searchParams . has ( "scheduleId" ) ;
@@ -130,6 +118,7 @@ export function RunsFilters(props: RunFiltersProps) {
130118 < div className = "flex flex-row flex-wrap items-center gap-1" >
131119 < FilterMenu { ...props } />
132120 < RootOnlyToggle defaultValue = { props . rootOnlyDefault } />
121+ < TimeFilter />
133122 < AppliedFilters { ...props } />
134123 { hasFilters && (
135124 < Form className = "h-6" >
@@ -153,8 +142,6 @@ const filterTypes = [
153142 } ,
154143 { name : "tasks" , title : "Tasks" , icon : < TaskIcon className = "size-4" /> } ,
155144 { name : "tags" , title : "Tags" , icon : < TagIcon className = "size-4" /> } ,
156- { name : "created" , title : "Created" , icon : < CalendarIcon className = "size-4" /> } ,
157- { name : "daterange" , title : "Custom date range" , icon : < CalendarIcon className = "size-4" /> } ,
158145 { name : "run" , title : "Run ID" , icon : < FingerPrintIcon className = "size-4" /> } ,
159146 { name : "batch" , title : "Batch ID" , icon : < Squares2X2Icon className = "size-4" /> } ,
160147 { name : "schedule" , title : "Schedule ID" , icon : < ClockIcon className = "size-4" /> } ,
@@ -175,7 +162,7 @@ function FilterMenu(props: RunFiltersProps) {
175162 < ListFilterIcon className = "size-3.5" />
176163 </ div >
177164 }
178- variant = { "minimal /small" }
165+ variant = { "tertiary /small" }
179166 shortcut = { shortcut }
180167 tooltipTitle = { "Filter runs" }
181168 >
@@ -205,8 +192,6 @@ function AppliedFilters({ possibleTasks, bulkActions }: RunFiltersProps) {
205192 < AppliedStatusFilter />
206193 < AppliedTaskFilter possibleTasks = { possibleTasks } />
207194 < AppliedTagsFilter />
208- < AppliedPeriodFilter />
209- < AppliedCustomDateRangeFilter />
210195 < AppliedRunIdFilter />
211196 < AppliedBatchIdFilter />
212197 < AppliedScheduleIdFilter />
@@ -229,13 +214,8 @@ function Menu(props: MenuProps) {
229214 return < MainMenu { ...props } /> ;
230215 case "statuses" :
231216 return < StatusDropdown onClose = { ( ) => props . setFilterType ( undefined ) } { ...props } /> ;
232-
233217 case "tasks" :
234218 return < TasksDropdown onClose = { ( ) => props . setFilterType ( undefined ) } { ...props } /> ;
235- case "created" :
236- return < CreatedAtDropdown onClose = { ( ) => props . setFilterType ( undefined ) } { ...props } /> ;
237- case "daterange" :
238- return < CustomDateRangeDropdown onClose = { ( ) => props . setFilterType ( undefined ) } { ...props } /> ;
239219 case "bulk" :
240220 return < BulkActionsDropdown onClose = { ( ) => props . setFilterType ( undefined ) } { ...props } /> ;
241221 case "tags" :
@@ -252,7 +232,6 @@ function Menu(props: MenuProps) {
252232function MainMenu ( { searchValue, trigger, clearSearchValue, setFilterType } : MenuProps ) {
253233 const filtered = useMemo ( ( ) => {
254234 return filterTypes . filter ( ( item ) => {
255- if ( item . name === "daterange" ) return false ;
256235 return item . title . toLowerCase ( ) . includes ( searchValue . toLowerCase ( ) ) ;
257236 } ) ;
258237 } , [ searchValue ] ) ;
@@ -699,9 +678,10 @@ function RootOnlyToggle({ defaultValue }: { defaultValue: boolean }) {
699678 return (
700679 < Switch
701680 disabled = { disabled }
702- variant = "small"
681+ variant = "tertiary/ small"
703682 label = "Root only"
704683 checked = { disabled ? false : rootOnly }
684+ className = "bg-tertiary transition hover:bg-charcoal-600"
705685 onCheckedChange = { ( checked ) => {
706686 replace ( {
707687 rootOnly : checked ? "true" : "false" ,
0 commit comments