import React, { FunctionComponent, ReactNode, HTMLAttributes, MouseEventHandler } from 'react';
import getClassName from '../../helpers/getClassName';
import classNames from '../../lib/classNames';
import usePlatform from '../../hooks/usePlatform';
import Icon24Chevron from '@vkontakte/icons/dist/24/chevron';
import Icon24DismissSubstract from '@vkontakte/icons/dist/24/dismiss_substract';
import Icon24DismissDark from '@vkontakte/icons/dist/24/dismiss_dark';
import Tappable from '../Tappable/Tappable';
export interface BannerProps extends HTMLAttributes {
/**
* Тип баннера.
*/
mode?: 'tint' | 'image';
size?: 's' | 'm';
/**
* Тип действия в правой части баннера.
*
* - `dismiss` – отображается иконка крестика, при клике на неё сработает свойство `onDismiss`.
* - `expand` – отображается иконка шеврона, которая подразумевает, что при клике на баннер можно куда-то перейти.
*/
asideMode?: 'dismiss' | 'expand';
/**
* Срабатывает при клике на иконку крестика при `asideMode="dismiss"`.
*/
onDismiss?: MouseEventHandler;
/**
* Содержимое, отображаемое в левой части баннера.
*/
before?: ReactNode;
/**
* Заголовок.
* При использовании этого свойства рекомендуется не указывать `text`.
*/
header?: ReactNode;
/**
* Подзаголовок.
* При использовании этого свойства рекомендуется не указывать `text`.
*/
subheader?: ReactNode;
/**
* Текст баннера.
* Это свойство следует использовать без указания `header` и `subheader`.
*/
text?: ReactNode;
/**
* При использовании `mode="image"`.
*
* - `light` – в качестве фона используется светлое изображение, цвет текста в баннере будет тёмным.
* - `dark` – в качестве фона используется тёмное изображение, цвет текста будет светлым.
*/
imageTheme?: 'light' | 'dark';
/**
* При использовании `mode="image"`.
*
* Элемент, который нужно стилизовать цветом и/или фоном. Этот элемент будет растянут на 100% ширины и высоты баннера.
*/
background?: ReactNode;
/**
* Кнопки, отображаемые в баннере.
*
* - В режиме `tint` или в `image` со светлым фоном рекомендуется использовать только `` или ``.
* - В режиме `image` с тёмным фоном – ``.
*/
actions?: ReactNode;
}
const Banner: FunctionComponent = (props: BannerProps) => {
const platform = usePlatform();
const {
className, mode, imageTheme, size, before, asideMode, header, subheader, text, children, background, actions,
onDismiss,
...restProps
} = props;
const InnerComponent = asideMode === 'expand' ? Tappable : 'div';
return (