Openstatus www.openstatus.dev
at main 71 lines 2.1 kB view raw
1"use client"; 2 3import type { Table } from "@tanstack/react-table"; 4import { X } from "lucide-react"; 5 6import { Button } from "@/components/ui/button"; 7 8import { DataTableFacetedFilter } from "@/components/ui/data-table/data-table-faceted-filter"; 9import { regions } from "@/data/regions"; 10import { statusCodes } from "@/data/status-codes"; 11import type { RouterOutputs } from "@openstatus/api"; 12 13type ResponseLog = RouterOutputs["tinybird"]["list"]["data"][number]; 14 15export interface ResponseLogsDataTableToolbarProps { 16 table: Table<ResponseLog>; 17} 18 19export function ResponseLogsDataTableToolbar({ 20 table, 21}: ResponseLogsDataTableToolbarProps) { 22 const isFiltered = table.getState().columnFilters.length > 0; 23 24 return ( 25 <div className="flex items-center justify-between"> 26 <div className="flex flex-1 flex-warp flex-wrap items-center gap-2"> 27 {table.getColumn("status") && ( 28 <DataTableFacetedFilter 29 column={table.getColumn("status")} 30 title="Status" 31 options={statusCodes.map((code) => ({ 32 label: code.code.toString(), 33 value: code.code.toString(), 34 }))} 35 /> 36 )} 37 {table.getColumn("region") && ( 38 <DataTableFacetedFilter 39 column={table.getColumn("region")} 40 title="Region" 41 options={regions.map((region) => ({ 42 label: region.location, 43 value: region.code, 44 }))} 45 /> 46 )} 47 {table.getColumn("error") && ( 48 <DataTableFacetedFilter 49 column={table.getColumn("error")} 50 title="Error" 51 options={[ 52 { label: "Yes", value: "true" }, 53 { label: "No", value: "false" }, 54 ]} 55 /> 56 )} 57 {isFiltered && ( 58 <Button 59 variant="ghost" 60 onClick={() => table.resetColumnFilters()} 61 className="h-8 px-2 lg:px-3" 62 > 63 Reset 64 <X /> 65 </Button> 66 )} 67 </div> 68 {/* <DataTableViewOptions table={table} /> */} 69 </div> 70 ); 71}