import { ImageProps } from "next/image"; export interface NosearchPickProps extends INosearchPickStyleData { index?: number; data: INosearchPickData; Image?: (props: ImageProps) => JSX.Element | null; isMobile?: boolean; } export interface INosearchPickData { productId: number; goodsName: string; modelName: string; brandName: string; productCategoryName?: string; price: string; imageUrl: string; pickType: "none" | "best" | "plus" | "premium" | "cost_effective"; scrapStatus: boolean; compareStatus: boolean; reviewAvg?: number; reviewCnt?: number; reviews?: IReviewDataWithReport[]; colors?: string; scoreMetaMap?: { [key: string]: IScoreMetaMap; }; onClickScrapButton?: () => void; onClickCompareButton?: () => void; onClickAllReviewsButton?: () => void; } export interface INosearchPickStyleData { vertical?: boolean; outlined?: boolean; imageSize: "s" | "l"; showIndex?: boolean; showScore?: boolean; showReview?: boolean; hideColors?: boolean; showOnlyNosearchTwoLines?: boolean; useBackgroundColorOnInformation?: boolean; showActionButtonsOnInformation?: boolean; useCategoryNameOnPickLabel?: boolean; showPickLabelOnImage?: boolean; brandNameClassName?: string; goodsNameClassName?: string; modelNameClassName?: string; priceClassName?: string; } export interface IReviewDataWithReport extends IReviewData { ReportingButton: JSX.Element; } export interface IReviewData { productId?: number; type: "nosearch" | "user"; content: string; createdAt?: string; images?: string[]; point?: number; writer?: string; onClickReview: (review: IReviewData) => void; ReportingButton?: JSX.Element; } export interface IScoreMetaMap { score: number; name: string; label: string; }