Openstatus
www.openstatus.dev
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}