"use client"
import * as React from "react"
import { cn } from "@/lib/utils"
import { ArrowDown, ArrowUp, ArrowUpDown, Filter } from "lucide-react"
import { Input } from "./input"
import { Button } from "./button"
import { Skeleton } from "./skeleton"
import { AsyncCombobox, Option } from "./combobox"
import { DatePicker } from "./date-picker"
function Table({ className, ...props }: React.ComponentProps<"table">) {
return (
)
}
function TableHeader({ className, ...props }: React.ComponentProps<"thead">) {
return (
)
}
function TableBody({ className, ...props }: React.ComponentProps<"tbody">) {
return (
)
}
function TableFooter({ className, ...props }: React.ComponentProps<"tfoot">) {
return (
tr]:last:border-b-0",
className
)}
{...props}
/>
)
}
function TableRow({ className, ...props }: React.ComponentProps<"tr">) {
return (
)
}
function TableHead({ className, ...props }: React.ComponentProps<"th">) {
return (
|
)
}
function TableCell({ className, ...props }: React.ComponentProps<"td">) {
return (
|
)
}
function TableCaption({
className,
...props
}: React.ComponentProps<"caption">) {
return (
)
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function SortableHeader({ column, title }: { column: any; title: string }) {
return (
)
}
function FilterInput({
value,
onChange,
placeholder,
}: {
value: string
onChange: (value: string) => void
placeholder?: string
}) {
return (
onChange(e.target.value)}
placeholder={placeholder}
className="h-8 text-xs"
type="search"
/>
)
}
interface SFCHPBase {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
column: any
title: string
placeholder?: string
}
interface DefaultColumn extends SFCHPBase {
type: "default"
}
interface WithOptions extends SFCHPBase {
type: "select"
get_options: (query: string, page: number) => Promise