import type { ColumnSort, Row } from "@tanstack/react-table" import { type SQL } from "drizzle-orm" import { type z } from "zod" import { type DataTableConfig } from "@/config/data-table" import { type filterSchema } from "@/lib/parsers" export type Prettify = { [K in keyof T]: T[K] } & {} export type StringKeyOf = Extract export interface SearchParams { [key: string]: string | string[] | undefined } export interface Option { label: string value: string | number icon?: React.ComponentType<{ className?: string }> count?: number } export interface ExtendedColumnSort extends Omit { id: StringKeyOf } export type ExtendedSortingState = ExtendedColumnSort[] export type ColumnType = DataTableConfig["columnTypes"][number] export type FilterOperator = DataTableConfig["globalOperators"][number] export type JoinOperator = DataTableConfig["joinOperators"][number]["value"] export interface DataTableFilterField { id: StringKeyOf label: string placeholder?: string options?: Option[] } export interface DataTableAdvancedFilterField extends DataTableFilterField { type: ColumnType } export type Filter = Prettify< Omit, "id"> & { id: StringKeyOf } > export interface DataTableRowAction { row: Row type:"add_stage"|"specification_meeting"|"clone"|"viewVariables"|"variableSettings"|"addSubClause"|"createRevision"|"duplicate"|"dispose"|"restore"|"download_report"|"submit" |"general_evaluation"| "general_evaluation"|"esg_evaluation" |"schedule"| "view"| "upload" | "addInfo"| "view-series"|"log"| "tbeResult" | "requestInfo"| "esign-detail"| "responseDetail"|"signature"|"update" | "delete" | "user" | "pemission" | "invite" | "items" | "attachment" |"comments" | "open" | "select" | "files" | "vendor-submission" | "resend" } export interface QueryBuilderOpts { where?: SQL orderBy?: SQL distinct?: boolean nullish?: boolean } declare module '@tanstack/react-table' { interface ColumnMeta { // Custom column meta properties excelHeader?: string group?: string type?: string paddingFactor?: number minWidth?: number maxWidth?: number } }