import React from 'react'; import { SupportedCardGalleryItemProps } from './SupportedCardGalleryItemProps'; type RenderItemRawProps = Omit< Partial, 'title' | 'subtitle>' >; type GridPresetFullProps = P & { preset: 'full'; renderItem?: ( item: T, index: number, ) => RenderItemRawProps & { title?: React.ReactNode; subtitle?: React.ReactNode; }; }; type GridPresetFooterProps = P & { preset: 'footer'; renderItem?: ( item: T, index: number, ) => RenderItemRawProps & { title?: React.ReactNode; subtitle?: React.ReactNode; }; }; type GridPresetTitleProps = P & { preset?: 'title'; renderItem?: ( item: T, index: number, ) => RenderItemRawProps & { title?: React.ReactNode; subtitle?: undefined; }; }; type GridPresetEmptyProps = P & { preset: 'empty'; renderItem?: ( item: T, index: number, ) => RenderItemRawProps & { title?: undefined; subtitle?: undefined; }; }; export type Preset = 'full' | 'footer' | 'title' | 'empty'; type GridPresetGenericProps = P & { preset?: Preset; renderItem?: ( item: T, index: number, ) => RenderItemRawProps & { title?: React.ReactNode; subtitle?: React.ReactNode; }; }; export type GridPresetProps = | GridPresetFullProps | GridPresetTitleProps | GridPresetEmptyProps | GridPresetGenericProps | GridPresetFooterProps;