create-plume-react-project
Version:
CLI to create Plume React Project
88 lines (57 loc) • 2.72 kB
text/typescript
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: <TFieldValues extends FieldValues = FieldValues>(
props: FormContainerProps<TFieldValues>,
) => 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: <S extends string>(props: SortSelectProps<S>) => ReactNode;
}