import { ImageBanner } from '@megafon/ui-shared';
Демо данные:const content: IImageBannerProps = {title: 'Заголовок ≤ 30 символов',description: 'Здесь будет располагаться подзаголовок. Пишите кратко, не более 100 символов',cost: 'oт <b>0000₽</b>',}В свойствах title и description поддерживаются некоторые HTML-теги: "<br>, <font color>, <a href>".Также в обоих свойствах поддерживается спецсимвол  .
Изображение прижимается к правому краю, растягивается на максимальную высоту, слева изображение обрезается, если оно шире баннера.
<ContentArea> <ImageBanner badges={badgeLight} backgroundColor="green" radius="rounded" {...content} {...imagesFullWidth} isImageFullWidth > {whiteButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeDark} backgroundColor="gradient" radius="rounded" {...content} {...imagesFullWidthGradient} isImageFullWidth > {greenButtons} </ImageBanner> </ContentArea>
На разрешении 1024+ изображение ограничивается по высоте и ширине размером фрейма. На разрешении 768- изображение ограничивается шириной баннера и высотой 150px. На разрешении 768 - 1024 изображение ограничивается шириной баннера и высотой 230px. Если изображение больше фрейма, то оно скейлится и вписывается во фрейм по типу contain. При этом выравнивается по центру фрейма по вертикали и горизонтали. Если изображение должно прижиматься к нижнему или верхнему краю, то необходимо поменять вертикальное выравнивание.
<ContentArea> <ImageBanner badges={badgeLight} backgroundColor="green" radius="rounded" {...content} {...images} imageVerticalAlign="bottom" > {whiteButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeLight} backgroundColor="green" radius="rounded" {...content} {...images} imageVerticalAlign="bottom" > {whiteButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeLight} backgroundColor="purple" radius="rounded" {...content} {...images} imageVerticalAlign="bottom" > {whiteButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeDark} backgroundColor="gradient" radius="rounded" {...content} {...imagesGradient}> {greenButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeDark} backgroundColor="light" radius="rounded" {...content} {...imagesGradient}> {greenButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeDark} backgroundColor="spbSky0" radius="rounded" {...content} {...imagesGradient}> {greenButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeLight} backgroundColor="green" radius="rounded" {...content} {...images} imageVerticalAlign="bottom" > {whiteButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeLight} backgroundColor="green" radius="rounded" headerLevelMobile="h2" headerLevel="h2" {...content} {...images} imageVerticalAlign="bottom" > {whiteButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeLight} backgroundColor="green" radius="rounded" headerLevelMobile="h2" headerLevel="h1" {...content} {...images} imageVerticalAlign="bottom" > {whiteButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeLight} backgroundColor="green" radius="rounded" {...content} {...images} imageVerticalAlign="bottom" > {whiteButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeLight} backgroundColor="green" radius="rounded" {...content} {...images} imageVerticalAlign="bottom" > {storeButton} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeLight} backgroundColor="green" radius="rounded" {...content} {...images} imageVerticalAlign="bottom" /> </ContentArea>
<ContentArea> <ImageBanner badges={badgesLight} backgroundColor="green" radius="rounded" {...content} {...images} imageVerticalAlign="bottom" > {storeButton} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgesDark} backgroundColor="gradient" radius="rounded" {...content} {...imagesGradient}> {storeButton} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={timerBadge} backgroundColor="gradient" radius="rounded" {...content} {...imagesGradient}> {storeButton} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner backgroundColor="green" radius="rounded" {...content} {...images} imageVerticalAlign="bottom"> {storeButton} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeLight} backgroundColor="green" radius="rounded" {...content} {...images} imageVerticalAlign="bottom" adBlock={AdBlock} > {storeButton} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner backgroundColor="green" radius="rounded" {...content} {...images} imageVerticalAlign="bottom" adBlock={AdBlock} > {storeButton} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeDark} backgroundColor="spbSky0" radius="rounded" {...content} autoHeight adBlock={AdBlockGray} > {greenButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeLight} backgroundColor="green" radius="rounded" {...content}> {whiteButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeLight} {...content} backgroundColor="green" radius="rounded"> {storeButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeLight} backgroundColor="green" radius="rounded" {...content} /> </ContentArea>
По умолчанию углы прямые, это необходимо при использовании внутри компонента Banner, если используем ImageBanner отдельно, то выставляем закругленные углы.
<ContentArea> <ImageBanner badges={badgeLight} backgroundColor="green" {...content} radius="corners"> {whiteButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeLight} backgroundColor="green" radius="rounded" {...content} radius="rounded"> {whiteButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeDark} backgroundColor="spbSky0" radius="rounded" {...content} autoHeight> {greenButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeDark} backgroundColor="spbSky0" radius="rounded" {...content} autoHeight> {storeButton} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeDark} backgroundColor="spbSky0" radius="rounded" {...content} autoHeight /> </ContentArea>
<ContentArea> <ImageBanner badges={badgeDark} backgroundColor="spbSky0" radius="rounded" {...content} {...imagesFullWidthAutoHeight} autoHeight isImageFullWidth > {greenButtons} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeDark} backgroundColor="spbSky0" radius="rounded" {...content} {...imagesFullWidthAutoHeight} autoHeight isImageFullWidth > {storeButton} </ImageBanner> </ContentArea>
<ContentArea> <ImageBanner badges={badgeDark} backgroundColor="spbSky0" radius="rounded" {...content} {...imagesFullWidthAutoHeight} autoHeight isImageFullWidth /> </ContentArea>
<ContentArea> <ImageBanner classes={{ imageSource: 'image-source-test', children: 'children-test', }} badges={badgeDark} backgroundColor="spbSky0" radius="rounded" {...content} description={Description} {...imagesFullWidthAutoHeight} autoHeight isImageFullWidth /> </ContentArea>
Prop name | Type | Default | Description |
---|---|---|---|
dataAttrs | { root?: Record<string, string>; image?: Record<string, string>; } | Дополнительные data атрибуты к внутренним элементам | |
className | string | Дополнительный класс корневого элемента | |
classes | { root?: string; image?: string; imageSource?: string; title?: string; description?: string; cost?: string; badgesContainer?: string; badges?: string; adBlock?: string; children?: string; } | {} | Дополнительные классы для корневого и внутренних элементов |
rootRef | Ref<HTMLDivElement> | Ссылка на корневой элемент | |
title | ReactNode | ReactNode[] | Заголовок | |
description | ReactNode | ReactNode[] | Текст-описание | |
cost | string | Строка со стоимостью услуги | |
headerLevelMobile | "h1" | "h2" | h1 | Тег заголовка на разрешении экрана 0-767 |
headerLevel | "h1" | "h2" | h1 | Тег заголовка на разрешении экрана 768+ |
backgroundColor | BackgroundColorType | transparent | Фоновый цвет |
radius | RadiusType | corners | Радиус границы |
imageMobile | string | Изображение на разрешении экрана 0-1023 | |
imageMobile2x | string | Изображение 2x на разрешении экрана 0-1023 | |
imageDesktop | string | Изображение на разрешении экрана 1024+ | |
imageDesktop2x | string | Изображение на разрешении экрана 1024+ | |
imageAlt | string | Значение тега alt для изображения | |
imageVerticalAlign | ImageVerticalAlignType | center | Выравнивание изображения по вертикали (по умолчанию center) |
fetchPriority | "auto" | "high" | "low" | auto | Приоритет загрузки изображения |
autoHeight | boolean | Высота баннера зависит от высоты контента (по умолчанию фиксированная) | |
isImageFullWidth | boolean | Изображение растягивается на всю ширину или вписывается в фиксированный фрейм (по умолчанию фрейм) | |
badges | Element | Element[] | Бейджи | |
adBlock | Element | Элемент блока с рекламой | |
hasMarginTop | boolean | false | Отступ сверху |
export interface IImageBannerProps {/** Дополнительные data атрибуты к внутренним элементам */dataAttrs?: {root?: Record<string, string>,image?: Record<string, string>,};/** Дополнительный класс корневого элемента */className?: string;/** Дополнительные классы для корневого и внутренних элементов */classes?: {root?: string,image?: string,title?: string,description?: string,cost?: string,badgesContainer?: string,badges?: string,badge?: string,adBlock?: string,};/** Ссылка на корневой элемент */rootRef?: Ref<HTMLDivElement>;/** Заголовок */title: string | React.ReactNode | React.ReactNode[];/** Текст-описание */description?: string | React.ReactNode | React.ReactNode[];/** Строка со стоимостью услуги */cost?: string;/** Фоновый цвет */backgroundColor?: BackgroundColorType;/** Радиус границы */radius?: RadiusType;/** Изображение на разрешении экрана 0-1023 */imageMobile?: string;/** Изображение 2x на разрешении экрана 0-1023 */imageMobile2x?: string;/** Изображение на разрешении экрана 1024+ */imageDesktop?: string;/** Изображение на разрешении экрана 1024+ */imageDesktop2x?: string;/** Значение тега alt для изображения */imageAlt?: string;/** Выравнивание изображения по вертикали (по умолчанию center) */imageVerticalAlign?: ImageVerticalAlignType;/** Приоритет загрузки изображения */fetchPriority?: 'auto' | 'high' | 'low';/** Высота баннера зависит от высоты контента (по умолчанию фиксированная) */autoHeight?: boolean;/** Изображение растягивается на всю ширину или вписывается в фиксированный фрейм (по умолчанию фрейм) */isImageFullWidth?: boolean;/** Бейджи */badges?: JSX.Element | JSX.Element[];/** Дополнительный отступ снизу при использовании в баннере */hasBottomOffset?: boolean;/** Элемент блока с рекламой */adBlock?: JSX.Element;}export type ButtonPropsType = IButtonProps & {/** Заголовок кнопки */title: string,};