import PropTypes from 'prop-types';

// Graphic Style
export const graphicStylePropTypes = {
    size: PropTypes.string,
    customImage: PropTypes.object,
    imageSize: PropTypes.string,
    imageBackgroundColor: PropTypes.string,
    buttonAlignment: PropTypes.string,
    textAlignment: PropTypes.string,
    displayTitle: PropTypes.bool,
    displayDescription: PropTypes.bool,
    displayButton: PropTypes.bool,
    buttonType: PropTypes.string,
    imageCornerRadius: PropTypes.number,
    cardBorderColor: PropTypes.string,
    displayShadow: PropTypes.bool,
    displayBorder: PropTypes.bool,
    onHoverShadowOnly: PropTypes.bool,
    onHoverBorderOnly: PropTypes.bool,
    customLink: PropTypes.string,
    link: PropTypes.string,
    useCustomLink: PropTypes.bool,
    title: PropTypes.string,
    description: PropTypes.string,
    buttonLabel: PropTypes.string,
    titleColor: PropTypes.string,
    descriptionColor: PropTypes.string,
    shadowColor: PropTypes.string,
    openInNewTab: PropTypes.bool,
    defaultValues: PropTypes.shape({
        customImage: PropTypes.object,
        title: PropTypes.string,
        description: PropTypes.string,
        buttonLabel: PropTypes.string
    }),
    i18n: PropTypes.object,
    setItemWidth: PropTypes.func
};

export const graphicStyleDefaultProps = {
    size: '',
    customImage: {},
    imageSize: '',
    imageBackgroundColor: '',
    buttonAlignment: '',
    textAlignment: '',
    displayTitle: true,
    displayDescription: true,
    displayButton: true,
    buttonType: '',
    imageCornerRadius: 0,
    cardBorderColor: '',
    displayShadow: true,
    displayBorder: true,
    onHoverShadowOnly: true,
    onHoverBorderOnly: true,
    customLink: '',
    link: '',
    useCustomLink: false,
    title: '',
    description: '',
    buttonLabel: '',
    titleColor: '',
    descriptionColor: '',
    shadowColor: '',
    openInNewTab: false,
    defaultValues: {},
    i18n: {
        ariaLabel: 'Group'
    },
    setItemWidth: () => {}
};

// Horizontal Style
export const horizontalStylePropTypes = {
    ...graphicStylePropTypes,
    cardBackgroundColor: PropTypes.string,
    cardCornerRadius: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
};

export const horizontalStyleDefaultProps = {
    ...graphicStyleDefaultProps,
    cardBackgroundColor: '',
    cardCornerRadius: 0
};

// Card Style
export const cardStylePropTypes = {
    ...graphicStylePropTypes,
    displayUpperTitle: PropTypes.bool,
    upperTitleAlignment: PropTypes.string,
    cardBackgroundColor: PropTypes.string,
    imageMask: PropTypes.string,
    cardCornerRadius: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
    upperTitle: PropTypes.string
};

export const cardStyleDefaultProps = {
    ...graphicStyleDefaultProps,
    displayUpperTitle: true,
    upperTitleAlignment: '',
    cardBackgroundColor: '',
    imageMask: '',
    cardCornerRadius: 0,
    upperTitle: ''
};
