Openstatus www.openstatus.dev
at main 60 lines 1.8 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"; 7import { DataTableViewOptions } from "@/components/ui/data-table/data-table-view-options"; 8import { Input } from "@/components/ui/input"; 9 10import { DataTableFacetedFilter } from "@/components/ui/data-table/data-table-faceted-filter"; 11 12export interface DataTableToolbarProps<TData> { 13 table: Table<TData>; 14} 15 16export function DataTableToolbar<TData>({ 17 table, 18}: DataTableToolbarProps<TData>) { 19 const isFiltered = table.getState().columnFilters.length > 0; 20 21 return ( 22 <div className="flex items-center justify-between"> 23 <div className="flex flex-1 items-center space-x-2"> 24 <Input 25 placeholder="Filter entries..." 26 value={(table.getColumn("title")?.getFilterValue() as string) ?? ""} 27 onChange={(event) => 28 table.getColumn("title")?.setFilterValue(event.target.value) 29 } 30 className="h-8 w-[150px] lg:w-[250px]" 31 /> 32 {table.getColumn("status") && ( 33 <DataTableFacetedFilter 34 column={table.getColumn("status")} 35 title="Status" 36 options={[]} 37 /> 38 )} 39 {table.getColumn("tags") && ( 40 <DataTableFacetedFilter 41 column={table.getColumn("tags")} 42 title="Tags" 43 options={[]} 44 /> 45 )} 46 {isFiltered && ( 47 <Button 48 variant="ghost" 49 onClick={() => table.resetColumnFilters()} 50 className="h-8 px-2 lg:px-3" 51 > 52 Reset 53 <X /> 54 </Button> 55 )} 56 </div> 57 <DataTableViewOptions table={table} /> 58 </div> 59 ); 60}