import { FormContainerProps } from '@lib/plume-admin-theme/form/FormProps'; import { ListHeadProps, ListItemProps, ListProps } from '@lib/plume-admin-theme/list/ListProps'; import { FilterContainerProps, FilterGroupProps, FilterInputSearchProps, FilterMenuProps, } from '@lib/plume-search/filters/FilterTypes'; import { SortSelectProps } from '@lib/plume-search/sorts/SortTypes'; import { ReactNode } from 'react'; import { FieldValues } from 'react-hook-form'; import { ActionButtonProps, ActionContainerProps, ActionLinkProps } from './action/ActionProps'; import { FormFieldProps } from './form/FormFieldProps'; import { InputPasswordProps, InputSelectProps, InputTextProps } from './form/FormInputProps'; import { PanelContentElementColumnProps, PanelContentElementProps, PanelProps, PanelTitleProps, } from './panel/PanelProps'; import { ConfirmationPopInProps, PopinProps } from './popin/PopinProps'; export default abstract class PlumeAdminTheme { // layout abstract panel: (props: PanelProps) => ReactNode; abstract panelSeparator: () => ReactNode; abstract panelTitle: (props: PanelTitleProps) => ReactNode; abstract panelContent: (props: PanelProps) => ReactNode; abstract panelContentElement: (props: PanelContentElementProps) => ReactNode; abstract panelContentElementColumn: (props: PanelContentElementColumnProps) => ReactNode; // lists abstract listHead: (props: ListHeadProps) => ReactNode; abstract list: (props: ListProps) => ReactNode; abstract listItem: (props: ListItemProps) => ReactNode; // actions abstract actionsContainer: (props: ActionContainerProps) => ReactNode; abstract actionLink: (props: ActionLinkProps) => ReactNode; abstract actionButton: (props: ActionButtonProps) => ReactNode; // popin abstract popin: (props: PopinProps) => ReactNode; abstract confirmationPopIn: (props: ConfirmationPopInProps) => ReactNode; // form abstract formContainer: ( props: FormContainerProps, ) => ReactNode; // form fields abstract formField: (props: FormFieldProps) => ReactNode; abstract inputText: (props: InputTextProps) => ReactNode; abstract inputSelect: (props: InputSelectProps) => ReactNode; abstract inputPassword: (props: InputPasswordProps) => ReactNode; // filters abstract filterMenu: (props: FilterMenuProps) => ReactNode; abstract filter: (props: FilterContainerProps) => ReactNode; abstract filterGroup: (props: FilterGroupProps) => ReactNode; abstract filterInputSearch: (props: FilterInputSearchProps) => ReactNode; // sort abstract sortSelect: (props: SortSelectProps) => ReactNode; }