
// export interface FormElement {
//     type: string,
//     label: string,
//     name: string,
//     options?: { value: string; label: string }[],
//     validation: {
//         required: boolean;
//         minLength: number;
//         maxLength: number;
//         // Other validation rules can be added here
//     };

// }




export interface FormElement {
    type: string,
    label: string,
    key: string,
    options?: { value: string; display: string }[],
    multiple?: boolean,
    nesting?: boolean,
    sortable?: boolean,
    validation?: {
        required?: boolean;
        minLength?: number;
        maxLength?: number;
        // Other validation rules can be added here
    };
    elementClasses: [],

}


export interface Listable {
    key: string,
    label: string,
    sortable: boolean,
}

export interface SubmitConfig {
    apiUrl: string,
}
export interface DynamicFormProps {
    elements: FormElement[],
    submitUrl: string,
    data: { [key: string]: string },
    method: string,
    modelName: string,
}

export interface EnhancedTableProps {
    modelName: string;
    fetchData: (
        page: number,
        pageSize: number
    ) => Promise<{ data: Row[]; total: number }>;
    deleteRow: (id: string) => Promise<void>;
    customActions?: { name: string; url: string }[];
    additionalOptions?: { name: string; url: string }[]; // Add additionalOptions prop
    listable: Listable[]
}


export interface Row {
    [key: string]: any;
}

export interface TablePaginationActionsProps {
    count: number;
    page: number;
    rowsPerPage: number;
    onPageChange: (
        event: React.MouseEvent<HTMLButtonElement>,
        newPage: number
    ) => void;
}