import React, { ReactElement } from 'react'; export interface ClientData { id: number; shop_id: number; display_name?: string; nickname?: string; email?: string; phone?: string; country_calling_code?: string; channel?: string; created_at: string; updated_at: string; waiver_form?: any; avatar?: string; birthday?: string; address?: string; tags?: string[]; [key: string]: any; } export declare type CardType = 'b1' | 'b2' | 'b5' | 'b9'; export declare type Direction = 'horizontal' | 'vertical'; export declare type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | number | string; export declare type AvatarShape = 'circle' | 'square'; export interface AvatarConfig { icon?: string; shape?: AvatarShape; borderRadius?: number | string; size?: AvatarSize; useTextAvatar?: boolean; children?: string; } export interface StatusConfig { color?: string; } export interface NameStyle { fontSize?: number | string; fontWeight?: number | string; color?: string; textDecoration?: string; } export interface TagItem { children: string; color: string; } export interface TagConfig { placement?: 'separate' | 'inline'; flexWrap?: 'nowrap' | 'wrap'; gap?: number | string; } export interface ExtraField { label?: string; value?: string; isShowLabel?: boolean; isShowValue?: boolean; icon?: string; iconSize?: number; iconColor?: string; } export interface Slots { top?: React.ReactNode; bottom?: React.ReactNode; left?: React.ReactNode; right?: React.ReactNode; } export interface StyleConfig { width?: number | string; border?: 'solid' | 'unset'; borderWidth?: number | string; borderColor?: string; borderRadius?: number | string; padding?: number | string; [key: string]: any; } export interface FieldNames { id?: string | ((data: any) => any); name?: string | ((data: any) => any); cover?: string | ((data: any) => any); phone?: string | ((data: any) => any); email?: string | ((data: any) => any); birthday?: string | ((data: any) => any); address?: string | ((data: any) => any); tags?: string | ((data: any) => any); [key: string]: string | ((data: any) => any) | undefined; } export interface DisplayConfig { isShowAvatar?: boolean; isShowName?: boolean; isShowPhone?: boolean; isShowEmail?: boolean; isShowBirthday?: boolean; isShowAddress?: boolean; isShowTag?: boolean; isShowStatus?: boolean; isShowEmptyDescription?: boolean; } export interface ClientCardProps extends DisplayConfig { type?: CardType; direction?: Direction; dataSource?: ClientData | any; fieldNames?: FieldNames; style?: StyleConfig; horizontalGap?: number | string; verticalGap?: number | string; avatar?: AvatarConfig; status?: StatusConfig; dropdown?: { open?: boolean; buttonProps?: { icon?: ReactElement; onClick?: (e: Event) => void; style?: React.CSSProperties; }; }; defaultName?: string; nameStyle?: NameStyle; tags?: Array; tag?: TagConfig; extraFields?: ExtraField[]; slots?: Slots; onAddClient?: () => void; onChangeClient?: (data: ClientData) => void; onRemoveClient?: (data: ClientData) => void; onViewClient?: (data: ClientData) => void; } export interface ProcessedClientData { id: any; name: string; cover?: string; phone?: string; email?: string; birthday?: string; address?: string; tags?: string[]; [key: string]: any; }