@redneckz/wildless-cms-uni-blocks 0.2.83 → 0.2.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/blocks.schema.json +1 -945
- package/bundle/bundle.umd.js +203 -198
- package/bundle/bundle.umd.min.js +1 -1
- package/dist/components/Accordion/Accordion.js +1 -1
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/Accordion/AccordionContent.d.ts +29 -10
- package/dist/components/Accordion/AccordionItem.d.ts +2 -2
- package/dist/components/Accordion/AccordionItem.js +5 -6
- package/dist/components/Accordion/AccordionItem.js.map +1 -1
- package/dist/components/BaseTile/BaseTile.d.ts +2 -2
- package/dist/components/BaseTile/BaseTile.js +1 -1
- package/dist/components/BaseTile/BaseTile.js.map +1 -1
- package/dist/components/BaseTile/BaseTileProps.d.ts +31 -0
- package/dist/{model/SitemapContent.js → components/BaseTile/BaseTileProps.js} +1 -1
- package/dist/components/BaseTile/BaseTileProps.js.map +1 -0
- package/dist/components/BenefitsBlock/BenefitsBlock.d.ts +1 -1
- package/dist/components/BenefitsBlock/BenefitsBlock.js +2 -1
- package/dist/components/BenefitsBlock/BenefitsBlock.js.map +1 -1
- package/dist/components/BenefitsBlock/BenefitsBlockContent.d.ts +14 -1
- package/dist/components/BlockContent.d.ts +4 -1
- package/dist/components/ComparisonTable/ComparisonTableContent.d.ts +45 -2
- package/dist/components/ComparisonTable/HeaderCell.d.ts +2 -2
- package/dist/components/ContentPage/ContentPage.d.ts +3 -2
- package/dist/components/ContentPage/ContentPage.js.map +1 -1
- package/dist/components/CreditCalculator/CreditCalculatorContent.d.ts +4 -0
- package/dist/components/ExchangeRateTile/ExchangeRateTile.d.ts +1 -1
- package/dist/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
- package/dist/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
- package/dist/components/ExchangeRateTile/ExchangeRateTileContent.d.ts +4 -0
- package/dist/components/Footer/Contacts.js +2 -2
- package/dist/components/Footer/Contacts.js.map +1 -1
- package/dist/components/Footer/FooterContent.d.ts +35 -9
- package/dist/components/Footer/FooterLink.d.ts +2 -2
- package/dist/components/Footer/HorizontalNavigation.js.map +1 -1
- package/dist/components/Footer/Sitemap.d.ts +1 -1
- package/dist/components/Footer/Sitemap.js +1 -1
- package/dist/components/Footer/Sitemap.js.map +1 -1
- package/dist/components/Footer/SocialMedia.d.ts +2 -2
- package/dist/components/Footer/SocialMedia.js +2 -2
- package/dist/components/Footer/SocialMedia.js.map +1 -1
- package/dist/components/Footer/TextInformation.js.map +1 -1
- package/dist/components/Gallery/GalleryContent.d.ts +13 -0
- package/dist/components/Header/HeaderContent.d.ts +10 -2
- package/dist/components/Header/HeaderSecondaryMenu.js +1 -1
- package/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
- package/dist/components/Header/HeaderSecondaryMenuButton.js +1 -1
- package/dist/components/Header/HeaderSecondaryMenuButton.js.map +1 -1
- package/dist/components/Header/isSubItemActive.d.ts +2 -2
- package/dist/components/Header/isSubItemActive.js.map +1 -1
- package/dist/components/Header/isTopItemActive.d.ts +2 -2
- package/dist/components/Header/isTopItemActive.js.map +1 -1
- package/dist/components/MiniGallery/MiniGallery.d.ts +3 -3
- package/dist/components/MiniGallery/MiniGalleryContent.d.ts +6 -0
- package/dist/components/MiniGallery/MiniGalleryContent.js +2 -0
- package/dist/components/MiniGallery/MiniGalleryContent.js.map +1 -0
- package/dist/components/MobileAppTile/MobileAppTileContent.d.ts +11 -2
- package/dist/components/Placeholder/PlaceholderContent.d.ts +3 -0
- package/dist/components/ProductBlock/ProductBlock.mobile.d.ts +2 -2
- package/dist/components/ProductBlock/ProductBlock.mobile.js.map +1 -1
- package/dist/components/ProductBlock/ProductBlockContent.d.ts +10 -5
- package/dist/components/ProductBlock/ProductBlockInner.d.ts +2 -2
- package/dist/components/ProductBlock/ProductBlockInner.js +1 -1
- package/dist/components/ProductBlock/ProductBlockInner.js.map +1 -1
- package/dist/components/ProductGallery/ProductGallery.d.ts +1 -1
- package/dist/components/ProductGallery/ProductGallery.js.map +1 -1
- package/dist/components/ProductGallery/ProductGalleryContent.d.ts +17 -2
- package/dist/components/ProductTile/ProductTileContent.d.ts +6 -2
- package/dist/components/PromoTile/PromoTileContent.d.ts +6 -2
- package/dist/components/StepsBlock/StepsBlockContent.d.ts +13 -0
- package/dist/components/TextBlock/TextBlockContent.d.ts +13 -0
- package/dist/components/Tile/TileContent.d.ts +5 -2
- package/dist/hooks/useLink.d.ts +3 -3
- package/dist/hooks/useLink.js.map +1 -1
- package/dist/index.d.ts +12 -12
- package/dist/index.js +10 -10
- package/dist/index.js.map +1 -1
- package/dist/mergeTopItems.d.ts +2 -2
- package/dist/mergeTopItems.js.map +1 -1
- package/dist/model/BlockVersion.d.ts +4 -0
- package/dist/model/ButtonVersion.d.ts +4 -0
- package/dist/model/LinkProps.d.ts +21 -0
- package/dist/model/{LinkContent.js → LinkProps.js} +1 -1
- package/dist/model/LinkProps.js.map +1 -0
- package/dist/model/Picture.d.ts +11 -0
- package/dist/model/SitemapProps.d.ts +13 -0
- package/dist/{components/BaseTile/BaseTileContent.js → model/SitemapProps.js} +1 -1
- package/dist/model/SitemapProps.js.map +1 -0
- package/dist/types.d.ts +2 -2
- package/dist/ui-kit/Breadcrumb.d.ts +2 -2
- package/dist/ui-kit/Button/Button.d.ts +6 -3
- package/dist/ui-kit/Button/Button.js.map +1 -1
- package/dist/ui-kit/Button/ButtonProps.d.ts +15 -12
- package/dist/ui-kit/Icon/Icon.js +7 -1
- package/dist/ui-kit/Icon/Icon.js.map +1 -1
- package/dist/ui-kit/Icon/IconProps.d.ts +50 -19
- package/dist/ui-kit/Icon/IconProps.js +21 -18
- package/dist/ui-kit/Icon/IconProps.js.map +1 -1
- package/dist/ui-kit/TopItem/TopItem.d.ts +2 -2
- package/lib/common.css +1 -1
- package/lib/components/Accordion/Accordion.js +1 -1
- package/lib/components/Accordion/Accordion.js.map +1 -1
- package/lib/components/Accordion/AccordionContent.d.ts +29 -10
- package/lib/components/Accordion/AccordionItem.d.ts +2 -2
- package/lib/components/Accordion/AccordionItem.js +5 -6
- package/lib/components/Accordion/AccordionItem.js.map +1 -1
- package/lib/components/BaseTile/BaseTile.d.ts +2 -2
- package/lib/components/BaseTile/BaseTile.js +1 -1
- package/lib/components/BaseTile/BaseTile.js.map +1 -1
- package/lib/components/BaseTile/BaseTileProps.d.ts +31 -0
- package/lib/components/BaseTile/BaseTileProps.js +2 -0
- package/lib/components/BaseTile/BaseTileProps.js.map +1 -0
- package/lib/components/BenefitsBlock/BenefitsBlock.d.ts +1 -1
- package/lib/components/BenefitsBlock/BenefitsBlock.js +2 -1
- package/lib/components/BenefitsBlock/BenefitsBlock.js.map +1 -1
- package/lib/components/BenefitsBlock/BenefitsBlockContent.d.ts +14 -1
- package/lib/components/BlockContent.d.ts +4 -1
- package/lib/components/ComparisonTable/ComparisonTableContent.d.ts +45 -2
- package/lib/components/ComparisonTable/HeaderCell.d.ts +2 -2
- package/lib/components/ContentPage/ContentPage.d.ts +3 -2
- package/lib/components/ContentPage/ContentPage.js.map +1 -1
- package/lib/components/CreditCalculator/CreditCalculatorContent.d.ts +4 -0
- package/lib/components/ExchangeRateTile/ExchangeRateTile.d.ts +1 -1
- package/lib/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
- package/lib/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
- package/lib/components/ExchangeRateTile/ExchangeRateTileContent.d.ts +4 -0
- package/lib/components/Footer/Contacts.js +2 -2
- package/lib/components/Footer/Contacts.js.map +1 -1
- package/lib/components/Footer/FooterContent.d.ts +35 -9
- package/lib/components/Footer/FooterLink.d.ts +2 -2
- package/lib/components/Footer/HorizontalNavigation.js.map +1 -1
- package/lib/components/Footer/Sitemap.d.ts +1 -1
- package/lib/components/Footer/Sitemap.js +1 -1
- package/lib/components/Footer/Sitemap.js.map +1 -1
- package/lib/components/Footer/SocialMedia.d.ts +2 -2
- package/lib/components/Footer/SocialMedia.js +2 -2
- package/lib/components/Footer/SocialMedia.js.map +1 -1
- package/lib/components/Footer/TextInformation.js.map +1 -1
- package/lib/components/Gallery/GalleryContent.d.ts +13 -0
- package/lib/components/Header/HeaderContent.d.ts +10 -2
- package/lib/components/Header/HeaderSecondaryMenu.js +1 -1
- package/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
- package/lib/components/Header/HeaderSecondaryMenuButton.js +1 -1
- package/lib/components/Header/HeaderSecondaryMenuButton.js.map +1 -1
- package/lib/components/Header/isSubItemActive.d.ts +2 -2
- package/lib/components/Header/isSubItemActive.js.map +1 -1
- package/lib/components/Header/isTopItemActive.d.ts +2 -2
- package/lib/components/Header/isTopItemActive.js.map +1 -1
- package/lib/components/MiniGallery/MiniGallery.d.ts +3 -3
- package/lib/components/MiniGallery/MiniGalleryContent.d.ts +6 -0
- package/lib/components/MiniGallery/MiniGalleryContent.js +2 -0
- package/lib/components/MiniGallery/MiniGalleryContent.js.map +1 -0
- package/lib/components/MobileAppTile/MobileAppTileContent.d.ts +11 -2
- package/lib/components/Placeholder/PlaceholderContent.d.ts +3 -0
- package/lib/components/ProductBlock/ProductBlock.mobile.d.ts +2 -2
- package/lib/components/ProductBlock/ProductBlock.mobile.js.map +1 -1
- package/lib/components/ProductBlock/ProductBlockContent.d.ts +10 -5
- package/lib/components/ProductBlock/ProductBlockInner.d.ts +2 -2
- package/lib/components/ProductBlock/ProductBlockInner.js +1 -1
- package/lib/components/ProductBlock/ProductBlockInner.js.map +1 -1
- package/lib/components/ProductGallery/ProductGallery.d.ts +1 -1
- package/lib/components/ProductGallery/ProductGallery.js.map +1 -1
- package/lib/components/ProductGallery/ProductGalleryContent.d.ts +17 -2
- package/lib/components/ProductTile/ProductTileContent.d.ts +6 -2
- package/lib/components/PromoTile/PromoTileContent.d.ts +6 -2
- package/lib/components/StepsBlock/StepsBlockContent.d.ts +13 -0
- package/lib/components/TextBlock/TextBlockContent.d.ts +13 -0
- package/lib/components/Tile/TileContent.d.ts +5 -2
- package/lib/hooks/useLink.d.ts +3 -3
- package/lib/hooks/useLink.js.map +1 -1
- package/lib/index.d.ts +12 -12
- package/lib/index.js +5 -5
- package/lib/index.js.map +1 -1
- package/lib/mergeTopItems.d.ts +2 -2
- package/lib/mergeTopItems.js.map +1 -1
- package/lib/model/BlockVersion.d.ts +4 -0
- package/lib/model/ButtonVersion.d.ts +4 -0
- package/lib/model/LinkProps.d.ts +21 -0
- package/lib/model/LinkProps.js +2 -0
- package/lib/model/LinkProps.js.map +1 -0
- package/lib/model/Picture.d.ts +11 -0
- package/lib/model/SitemapProps.d.ts +13 -0
- package/lib/model/SitemapProps.js +2 -0
- package/lib/model/SitemapProps.js.map +1 -0
- package/lib/types.d.ts +2 -2
- package/lib/ui-kit/Breadcrumb.d.ts +2 -2
- package/lib/ui-kit/Button/Button.d.ts +6 -3
- package/lib/ui-kit/Button/Button.js.map +1 -1
- package/lib/ui-kit/Button/ButtonProps.d.ts +15 -12
- package/lib/ui-kit/Icon/Icon.js +7 -1
- package/lib/ui-kit/Icon/Icon.js.map +1 -1
- package/lib/ui-kit/Icon/IconProps.d.ts +50 -19
- package/lib/ui-kit/Icon/IconProps.js +21 -18
- package/lib/ui-kit/Icon/IconProps.js.map +1 -1
- package/lib/ui-kit/TopItem/TopItem.d.ts +2 -2
- package/package.json +17 -36
- package/src/components/Accordion/Accordion.example.json +74 -0
- package/src/components/Accordion/Accordion.fixture.tsx +1 -16
- package/src/components/Accordion/Accordion.tsx +1 -1
- package/src/components/Accordion/AccordionContent.ts +31 -11
- package/src/components/Accordion/AccordionItem.tsx +10 -10
- package/src/components/BaseTile/BaseTile.tsx +4 -5
- package/src/components/BaseTile/BaseTileProps.ts +33 -0
- package/src/components/BenefitsBlock/BenefitsBlock.example.json +13 -0
- package/src/components/BenefitsBlock/BenefitsBlock.tsx +3 -2
- package/src/components/BenefitsBlock/BenefitsBlockContent.ts +14 -1
- package/src/components/BlockContent.ts +4 -1
- package/src/components/ComparisonTable/ComparisonTable.example.json +84 -0
- package/src/components/ComparisonTable/ComparisonTableContent.ts +46 -3
- package/src/components/ComparisonTable/HeaderCell.tsx +2 -2
- package/src/components/ContentPage/ContentPage.tsx +7 -5
- package/src/components/CreditCalculator/CreditCalculatorContent.ts +4 -0
- package/src/components/ExchangeRateTile/ExchangeRateTile.tsx +2 -2
- package/src/components/ExchangeRateTile/ExchangeRateTileContent.ts +4 -0
- package/src/components/Footer/Contacts.tsx +2 -2
- package/src/components/Footer/FooterContent.ts +36 -9
- package/src/components/Footer/FooterLink.ts +2 -2
- package/src/components/Footer/HorizontalNavigation.tsx +2 -2
- package/src/components/Footer/Sitemap.tsx +5 -5
- package/src/components/Footer/SocialMedia.tsx +5 -12
- package/src/components/Footer/TextInformation.tsx +2 -2
- package/src/components/Gallery/Gallery.example.json +71 -0
- package/src/components/Gallery/GalleryContent.ts +13 -0
- package/src/components/Header/HeaderContent.ts +10 -2
- package/src/components/Header/HeaderSecondaryMenu.tsx +4 -8
- package/src/components/Header/HeaderSecondaryMenuButton.tsx +1 -1
- package/src/components/Header/isSubItemActive.ts +3 -3
- package/src/components/Header/isTopItemActive.ts +3 -3
- package/src/components/MiniGallery/MiniGallery.example.json +61 -0
- package/src/components/MiniGallery/MiniGallery.tsx +3 -3
- package/src/components/MiniGallery/MiniGalleryContent.ts +6 -0
- package/src/components/MobileAppTile/MobileAppTile.example.json +20 -0
- package/src/components/MobileAppTile/MobileAppTileContent.ts +11 -2
- package/src/components/Placeholder/PlaceholderContent.ts +3 -0
- package/src/components/ProductBlock/ProductBlock.example.json +17 -0
- package/src/components/ProductBlock/ProductBlock.mobile.tsx +3 -3
- package/src/components/ProductBlock/ProductBlockContent.ts +10 -5
- package/src/components/ProductBlock/ProductBlockInner.tsx +4 -4
- package/src/components/ProductGallery/ProductGallery.example.json +21 -0
- package/src/components/ProductGallery/ProductGallery.tsx +3 -3
- package/src/components/ProductGallery/ProductGalleryContent.ts +17 -2
- package/src/components/ProductTile/ProductTile.example.json +30 -0
- package/src/components/ProductTile/ProductTileContent.ts +6 -2
- package/src/components/PromoTile/PromoTile.example.json +13 -0
- package/src/components/PromoTile/PromoTileContent.ts +6 -2
- package/src/components/StepsBlock/StepsBlock.example.json +17 -0
- package/src/components/StepsBlock/StepsBlockContent.ts +13 -0
- package/src/components/TextBlock/TextBlock.example.json +6 -0
- package/src/components/TextBlock/TextBlockContent.ts +14 -0
- package/src/components/Tile/Tile.example.json +18 -0
- package/src/components/Tile/TileContent.ts +5 -2
- package/src/hooks/useLink.ts +2 -2
- package/src/icons/GridIcon.svg +4 -7
- package/src/index.ts +14 -21
- package/src/mergeTopItems.ts +5 -5
- package/src/model/BlockVersion.ts +4 -0
- package/src/model/ButtonVersion.ts +4 -0
- package/src/model/LinkProps.ts +22 -0
- package/src/model/Picture.ts +11 -0
- package/src/model/SitemapProps.ts +15 -0
- package/src/types.ts +2 -2
- package/src/ui-kit/Breadcrumb.tsx +2 -2
- package/src/ui-kit/Button/Button.tsx +7 -3
- package/src/ui-kit/Button/ButtonProps.ts +16 -13
- package/src/ui-kit/Icon/Icon.tsx +23 -9
- package/src/ui-kit/Icon/IconProps.ts +36 -5
- package/src/ui-kit/TopItem/TopItem.tsx +2 -2
- package/dist/components/BaseTile/BaseTileContent.d.ts +0 -13
- package/dist/components/BaseTile/BaseTileContent.js.map +0 -1
- package/dist/model/LinkContent.d.ts +0 -5
- package/dist/model/LinkContent.js.map +0 -1
- package/dist/model/SitemapContent.d.ts +0 -7
- package/dist/model/SitemapContent.js.map +0 -1
- package/lib/components/BaseTile/BaseTileContent.d.ts +0 -13
- package/lib/components/BaseTile/BaseTileContent.js +0 -2
- package/lib/components/BaseTile/BaseTileContent.js.map +0 -1
- package/lib/model/LinkContent.d.ts +0 -5
- package/lib/model/LinkContent.js +0 -2
- package/lib/model/LinkContent.js.map +0 -1
- package/lib/model/SitemapContent.d.ts +0 -7
- package/lib/model/SitemapContent.js +0 -2
- package/lib/model/SitemapContent.js.map +0 -1
- package/src/components/BaseTile/BaseTileContent.ts +0 -14
- package/src/model/LinkContent.ts +0 -5
- package/src/model/SitemapContent.ts +0 -9
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import
|
|
2
|
+
import { useLink } from '../../hooks/useLink';
|
|
3
3
|
import type { BlockVersion } from '../../model/BlockVersion';
|
|
4
4
|
import type { UniBlockProps } from '../../types';
|
|
5
5
|
import { BlockItem } from '../../ui-kit/BlockItem/BlockItem';
|
|
6
6
|
import { Button } from '../../ui-kit/Button/Button';
|
|
7
|
-
import type { ButtonWithIconProps } from '../../ui-kit/Button/ButtonProps';
|
|
8
7
|
import { Icon } from '../../ui-kit/Icon/Icon';
|
|
9
8
|
import { Img } from '../../ui-kit/Img';
|
|
10
9
|
import { Title } from '../../ui-kit/Title/Title';
|
|
11
|
-
import { useLink } from '../../hooks/useLink';
|
|
12
10
|
import { getColSpan } from '../../utils/getColSpan';
|
|
11
|
+
import type { BaseTileCommonProps, BaseTileIconButton } from './BaseTileProps';
|
|
13
12
|
|
|
14
|
-
export interface BaseTileProps extends
|
|
13
|
+
export interface BaseTileProps extends BaseTileCommonProps, UniBlockProps {}
|
|
15
14
|
|
|
16
15
|
const TITLE_CLASSES = 'font-medium m-0 mb-4 whitespace-pre-wrap max-w-[600px]';
|
|
17
16
|
|
|
@@ -82,7 +81,7 @@ function renderItems(items: string[] = [], version?: BlockVersion) {
|
|
|
82
81
|
);
|
|
83
82
|
}
|
|
84
83
|
|
|
85
|
-
function renderButton({ icon, ...button }:
|
|
84
|
+
function renderButton({ icon, ...button }: BaseTileIconButton, i: number) {
|
|
86
85
|
if (!button?.text) return;
|
|
87
86
|
|
|
88
87
|
if (icon)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { BlockVersion } from '../../model/BlockVersion';
|
|
2
|
+
import type { Picture } from '../../model/Picture';
|
|
3
|
+
import type { ButtonWithIconProps } from '../../ui-kit/Button/ButtonProps';
|
|
4
|
+
import type { IconName } from '../../ui-kit/Icon/IconProps';
|
|
5
|
+
import type { TitleSize } from '../../ui-kit/Title/TitleProps';
|
|
6
|
+
|
|
7
|
+
export interface BaseTileIconButton extends ButtonWithIconProps {
|
|
8
|
+
icon?: IconName;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @title Плитка
|
|
13
|
+
*/
|
|
14
|
+
export interface BaseTileCommonProps {
|
|
15
|
+
/** @title Заголовок */
|
|
16
|
+
title?: string;
|
|
17
|
+
/**
|
|
18
|
+
* @title Размер заголовка
|
|
19
|
+
* @default M
|
|
20
|
+
*/
|
|
21
|
+
titleSize?: TitleSize;
|
|
22
|
+
/** @title Описание */
|
|
23
|
+
description?: string;
|
|
24
|
+
image?: Picture;
|
|
25
|
+
/** @title Список */
|
|
26
|
+
items?: string[];
|
|
27
|
+
/**
|
|
28
|
+
* @title Кнопки
|
|
29
|
+
* @maxItems 4
|
|
30
|
+
*/
|
|
31
|
+
buttons?: BaseTileIconButton[];
|
|
32
|
+
version?: BlockVersion;
|
|
33
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import type { Benefit, BenefitsBlockContent } from './BenefitsBlockContent';
|
|
3
2
|
import type { UniBlockProps } from '../../types';
|
|
4
3
|
import { Icon } from '../../ui-kit/Icon/Icon';
|
|
4
|
+
import { Title } from '../../ui-kit/Title/Title';
|
|
5
|
+
import type { Benefit, BenefitsBlockContent } from './BenefitsBlockContent';
|
|
5
6
|
|
|
6
7
|
export interface BenefitsBlockProps extends BenefitsBlockContent, UniBlockProps {}
|
|
7
8
|
|
|
@@ -12,7 +13,7 @@ export const BenefitsBlock = JSX<BenefitsBlockProps>(({ className, title, benefi
|
|
|
12
13
|
className || ''
|
|
13
14
|
}`}
|
|
14
15
|
>
|
|
15
|
-
<
|
|
16
|
+
{title ? <Title className="font-medium m-0 max-w-[47rem] text-center">{title}</Title> : null}
|
|
16
17
|
{benefits?.length ? (
|
|
17
18
|
<div className="grid grid-cols-2 gap-5 mt-9">{benefits.map(renderStep)}</div>
|
|
18
19
|
) : null}
|
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
import type { IconName } from '../../ui-kit/Icon/IconProps';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* @title Преимущество
|
|
5
|
+
*/
|
|
3
6
|
export interface Benefit {
|
|
4
|
-
|
|
7
|
+
/** @title Название */
|
|
8
|
+
label?: string;
|
|
9
|
+
/** @title Описание */
|
|
5
10
|
description?: string;
|
|
6
11
|
icon?: IconName;
|
|
7
12
|
}
|
|
8
13
|
|
|
14
|
+
/**
|
|
15
|
+
* @title Блок преимущества
|
|
16
|
+
*/
|
|
9
17
|
export interface BenefitsBlockContent {
|
|
18
|
+
/** @title Заголовок */
|
|
10
19
|
title?: string;
|
|
20
|
+
/**
|
|
21
|
+
* @title Список преимущества
|
|
22
|
+
* @maxItems 6
|
|
23
|
+
*/
|
|
11
24
|
benefits?: Benefit[];
|
|
12
25
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { BenefitsBlockContent } from './BenefitsBlock/BenefitsBlockContent';
|
|
2
|
+
import type { ComparisonTableContent } from './ComparisonTable/ComparisonTableContent';
|
|
2
3
|
import type { ExchangeRateTileContent } from './ExchangeRateTile/ExchangeRateTileContent';
|
|
3
4
|
import type { FooterContent } from './Footer/FooterContent';
|
|
4
5
|
import type { GalleryContent } from './Gallery/GalleryContent';
|
|
@@ -12,8 +13,10 @@ import type { PromoTileContent } from './PromoTile/PromoTileContent';
|
|
|
12
13
|
import type { StepsBlockContent } from './StepsBlock/StepsBlockContent';
|
|
13
14
|
import type { TextBlockContent } from './TextBlock/TextBlockContent';
|
|
14
15
|
import type { TileContent } from './Tile/TileContent';
|
|
15
|
-
import type { ComparisonTableContent } from './ComparisonTable/ComparisonTableContent';
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* @hidden
|
|
19
|
+
*/
|
|
17
20
|
export type BlockContent =
|
|
18
21
|
| HeaderContent
|
|
19
22
|
| FooterContent
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Заголовок",
|
|
3
|
+
"rowHeaders": [
|
|
4
|
+
{
|
|
5
|
+
"title": "Параметр 1"
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"title": "Параметр 2"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"title": "Параметр 3"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"columns": [
|
|
15
|
+
{
|
|
16
|
+
"header": {
|
|
17
|
+
"title": "Продукт 1",
|
|
18
|
+
"image": {
|
|
19
|
+
"format": "webp",
|
|
20
|
+
"size": {
|
|
21
|
+
"width": 100,
|
|
22
|
+
"height": 63
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"data": [
|
|
27
|
+
[
|
|
28
|
+
{
|
|
29
|
+
"label": "Ячейка 1"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
[
|
|
33
|
+
{
|
|
34
|
+
"label": "Ячейка 2-1",
|
|
35
|
+
"description": "Описание для ячейки 2-1"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"label": "Ячейка 2-2",
|
|
39
|
+
"description": "Описание для ячейки 2-2"
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
[
|
|
43
|
+
{
|
|
44
|
+
"label": "Ячейка 3"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"header": {
|
|
51
|
+
"title": "Продукт 2",
|
|
52
|
+
"image": {
|
|
53
|
+
"format": "webp",
|
|
54
|
+
"size": {
|
|
55
|
+
"width": 100,
|
|
56
|
+
"height": 63
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"data": [
|
|
61
|
+
[
|
|
62
|
+
{
|
|
63
|
+
"label": "Ячейка 1"
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
[
|
|
67
|
+
{
|
|
68
|
+
"label": "Ячейка 2-1",
|
|
69
|
+
"description": "Описание для ячейки 2-1"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"label": "Ячейка 2-2",
|
|
73
|
+
"description": "Описание для ячейки 2-2"
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
[
|
|
77
|
+
{
|
|
78
|
+
"label": "Ячейка 3"
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
}
|
|
@@ -1,43 +1,86 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LinkProps } from '../../model/LinkProps';
|
|
2
2
|
import type { Picture } from '../../model/Picture';
|
|
3
3
|
import type { ButtonProps } from '../../ui-kit/Button/ButtonProps';
|
|
4
4
|
import type { IconName } from '../../ui-kit/Icon/IconProps';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* @hidden
|
|
8
|
+
*/
|
|
6
9
|
export type Row = {
|
|
7
10
|
header: RowHeader;
|
|
8
11
|
data: CellData[][];
|
|
9
12
|
};
|
|
10
13
|
|
|
14
|
+
/**
|
|
15
|
+
* @hidden
|
|
16
|
+
*/
|
|
11
17
|
export type RowData = Row[] | undefined;
|
|
12
18
|
|
|
19
|
+
/**
|
|
20
|
+
* @title Ячейка
|
|
21
|
+
*/
|
|
13
22
|
export interface CellData {
|
|
23
|
+
/** @title Заголовок */
|
|
14
24
|
label?: string;
|
|
25
|
+
/** @title Описание */
|
|
15
26
|
description?: string;
|
|
27
|
+
/**
|
|
28
|
+
* @title Иконки
|
|
29
|
+
* @hidden
|
|
30
|
+
*/
|
|
16
31
|
icons?: IconName[];
|
|
32
|
+
/** @hidden */
|
|
17
33
|
image?: Picture;
|
|
34
|
+
/**
|
|
35
|
+
* @title Кнопки
|
|
36
|
+
* @hidden
|
|
37
|
+
*/
|
|
18
38
|
buttons?: ButtonProps[];
|
|
19
39
|
}
|
|
20
40
|
|
|
41
|
+
/**
|
|
42
|
+
* @title Шапка колонки
|
|
43
|
+
*/
|
|
21
44
|
export interface ColumnHeader {
|
|
45
|
+
/** @title Заголовок */
|
|
22
46
|
title?: string;
|
|
47
|
+
/** @hidden */
|
|
23
48
|
icon?: IconName;
|
|
49
|
+
/** @hidden */
|
|
24
50
|
image?: Picture;
|
|
25
|
-
|
|
51
|
+
/** @hidden */
|
|
52
|
+
link?: LinkProps;
|
|
26
53
|
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @title Продукт
|
|
57
|
+
*/
|
|
27
58
|
export interface Column {
|
|
28
59
|
header?: ColumnHeader;
|
|
60
|
+
/** @title Данные */
|
|
29
61
|
data?: CellData[][];
|
|
30
62
|
}
|
|
31
63
|
|
|
64
|
+
/**
|
|
65
|
+
* @title Параметр
|
|
66
|
+
*/
|
|
32
67
|
export interface RowHeader {
|
|
68
|
+
/** @title Заголовок */
|
|
33
69
|
title?: string;
|
|
34
70
|
icon?: IconName;
|
|
35
71
|
}
|
|
36
|
-
|
|
72
|
+
/**
|
|
73
|
+
* @title Сравнительная таблица
|
|
74
|
+
*/
|
|
37
75
|
export interface ComparisonTableContent {
|
|
76
|
+
/** @title Заголовок */
|
|
38
77
|
title?: string;
|
|
78
|
+
/** @title Параметры */
|
|
39
79
|
rowHeaders?: RowHeader[];
|
|
80
|
+
/** @title Продукты */
|
|
40
81
|
columns?: Column[];
|
|
82
|
+
/** @title Отображать заданное количество строк */
|
|
41
83
|
visibleRowLength?: number;
|
|
84
|
+
/** @title Закрасить первую колонку */
|
|
42
85
|
isColoredFirstColumn?: boolean;
|
|
43
86
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import type {
|
|
2
|
+
import type { LinkProps } from '../../model/LinkProps';
|
|
3
3
|
import type { Picture } from '../../model/Picture';
|
|
4
4
|
import { Button } from '../../ui-kit/Button/Button';
|
|
5
5
|
import { Icon } from '../../ui-kit/Icon/Icon';
|
|
@@ -12,7 +12,7 @@ export interface HeaderCellProps {
|
|
|
12
12
|
icon?: IconName;
|
|
13
13
|
image?: Picture;
|
|
14
14
|
title?: string;
|
|
15
|
-
link?:
|
|
15
|
+
link?: LinkProps;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export const HeaderCell = JSX<HeaderCellProps>(({ icon, image, title, link }) => (
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { JSX, PropsWithChildren } from '@redneckz/uni-jsx';
|
|
2
|
+
import type { BlockDef, ContentPageDef, UniBlockProps } from '../../types';
|
|
2
3
|
import type { BlockContent } from '../BlockContent';
|
|
3
4
|
import { LikeControl } from '../LikeControl/LikeControl';
|
|
4
5
|
import { Placeholder } from '../Placeholder/Placeholder';
|
|
5
|
-
import type { BlockDef, ContentPageDef, UniBlockProps } from '../../types';
|
|
6
6
|
|
|
7
7
|
interface BlockDecoratorProps<VNode> {
|
|
8
8
|
blockClassName: string;
|
|
@@ -15,11 +15,13 @@ export type BlockDecorator<VNode = any> = (
|
|
|
15
15
|
index?: number | string,
|
|
16
16
|
) => any;
|
|
17
17
|
|
|
18
|
+
export type JSXBlock = (
|
|
19
|
+
props: PropsWithChildren<UniBlockProps & BlockContent, any>,
|
|
20
|
+
context?: any,
|
|
21
|
+
) => any;
|
|
22
|
+
|
|
18
23
|
export interface ContentPageProps extends UniBlockProps {
|
|
19
|
-
blocksRegistry: Record<
|
|
20
|
-
string,
|
|
21
|
-
(props: PropsWithChildren<UniBlockProps & BlockContent, any>, context?: any) => any
|
|
22
|
-
>;
|
|
24
|
+
blocksRegistry: Record<string, JSXBlock>;
|
|
23
25
|
data: ContentPageDef;
|
|
24
26
|
blockDecorator?: BlockDecorator;
|
|
25
27
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import type { ExchangeRateTileContent } from './ExchangeRateTileContent';
|
|
3
|
-
import { Tile } from '../Tile/Tile';
|
|
4
2
|
import type { UniBlockProps } from '../../types';
|
|
5
3
|
import type { ButtonProps } from '../../ui-kit/Button/ButtonProps';
|
|
6
4
|
import { Icon } from '../../ui-kit/Icon/Icon';
|
|
5
|
+
import { Tile } from '../Tile/Tile';
|
|
6
|
+
import type { ExchangeRateTileContent } from './ExchangeRateTileContent';
|
|
7
7
|
|
|
8
8
|
export interface ExchangeRateTileProps extends ExchangeRateTileContent, UniBlockProps {}
|
|
9
9
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { useLink } from '../../hooks/useLink';
|
|
2
3
|
import type { UniBlockProps } from '../../types';
|
|
3
4
|
import { Button } from '../../ui-kit/Button/Button';
|
|
4
|
-
import { useLink } from '../../hooks/useLink';
|
|
5
5
|
import type { ContactInfo } from './FooterContent';
|
|
6
6
|
|
|
7
7
|
export interface ContactsProps extends UniBlockProps {
|
|
@@ -45,7 +45,7 @@ const renderContact = (item: ContactInfo, index: number) => {
|
|
|
45
45
|
);
|
|
46
46
|
};
|
|
47
47
|
|
|
48
|
-
const renderText = (type: ContactInfo['type'], text
|
|
48
|
+
const renderText = (type: ContactInfo['type'], text = '') => {
|
|
49
49
|
switch (type) {
|
|
50
50
|
case 'tel':
|
|
51
51
|
return (
|
|
@@ -1,15 +1,42 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { LinkProps } from '../../model/LinkProps';
|
|
2
|
+
import type { SitemapProps } from '../../model/SitemapProps';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* @title Тип контакта
|
|
6
|
+
* @enumNames [
|
|
7
|
+
* "Телефон",
|
|
8
|
+
* "Почта"
|
|
9
|
+
* ]
|
|
10
|
+
*/
|
|
11
|
+
export type ContactType = 'tel' | 'email';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @title Контакт
|
|
15
|
+
*/
|
|
4
16
|
export interface ContactInfo {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
17
|
+
/** @title Текст */
|
|
18
|
+
text?: string;
|
|
19
|
+
type?: ContactType;
|
|
20
|
+
/** @title Описание */
|
|
21
|
+
description?: string;
|
|
8
22
|
}
|
|
9
23
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
24
|
+
/**
|
|
25
|
+
* @required ["href"]
|
|
26
|
+
*/
|
|
27
|
+
export interface SocialMedia extends Omit<LinkProps, 'text'> {}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @title Подвал
|
|
31
|
+
* @required ["topItems"]
|
|
32
|
+
*/
|
|
33
|
+
export interface FooterContent extends SitemapProps {
|
|
34
|
+
/** @title Обязательные документы */
|
|
35
|
+
documents?: LinkProps[];
|
|
36
|
+
/** @title Другие предприятия */
|
|
37
|
+
relatedEnterprises?: LinkProps[];
|
|
38
|
+
/** @title Контакты */
|
|
13
39
|
contacts?: ContactInfo[];
|
|
14
|
-
|
|
40
|
+
/** @title Социальные сети */
|
|
41
|
+
socialMedia?: SocialMedia[];
|
|
15
42
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LinkProps } from '../../model/LinkProps';
|
|
2
2
|
import type { UniBlockProps } from '../../types';
|
|
3
3
|
|
|
4
4
|
export interface FooterLink extends UniBlockProps {
|
|
5
|
-
links?:
|
|
5
|
+
links?: LinkProps[];
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import { LinkContent } from '../../model/LinkContent';
|
|
3
2
|
import { useLink } from '../../hooks/useLink';
|
|
3
|
+
import { LinkProps } from '../../model/LinkProps';
|
|
4
4
|
import type { FooterLink } from './FooterLink';
|
|
5
5
|
|
|
6
6
|
export const HorizontalNavigation = JSX<FooterLink>(({ className, links, context }) => {
|
|
@@ -24,7 +24,7 @@ export const HorizontalNavigation = JSX<FooterLink>(({ className, links, context
|
|
|
24
24
|
);
|
|
25
25
|
});
|
|
26
26
|
|
|
27
|
-
interface HorizontalNavigationLinkProps extends
|
|
27
|
+
interface HorizontalNavigationLinkProps extends LinkProps {
|
|
28
28
|
className: string;
|
|
29
29
|
index: number;
|
|
30
30
|
onClick: (ev: MouseEvent) => any;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import { mergeTopItems } from '../../mergeTopItems';
|
|
3
|
-
import type { LinkContent } from '../../model/LinkContent';
|
|
4
|
-
import type { TopMenuItem } from '../../model/SitemapContent';
|
|
5
|
-
import type { UniBlockProps } from '../../types';
|
|
6
2
|
import { useLink } from '../../hooks/useLink';
|
|
7
3
|
import { useSitemap } from '../../hooks/useSitemap';
|
|
4
|
+
import { mergeTopItems } from '../../mergeTopItems';
|
|
5
|
+
import type { LinkProps } from '../../model/LinkProps';
|
|
6
|
+
import type { TopMenuItem } from '../../model/SitemapProps';
|
|
7
|
+
import type { UniBlockProps } from '../../types';
|
|
8
8
|
export interface SitemapProps extends UniBlockProps {
|
|
9
9
|
items?: TopMenuItem[];
|
|
10
10
|
}
|
|
@@ -43,7 +43,7 @@ const renderColumn = (c: TopMenuItem, index: number, { router, handlerDecorator
|
|
|
43
43
|
);
|
|
44
44
|
};
|
|
45
45
|
|
|
46
|
-
interface ColumnItemProps extends
|
|
46
|
+
interface ColumnItemProps extends LinkProps {
|
|
47
47
|
index?: number;
|
|
48
48
|
}
|
|
49
49
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import
|
|
2
|
+
import { useLink } from '../../hooks/useLink';
|
|
3
|
+
import type { LinkProps } from '../../model/LinkProps';
|
|
3
4
|
import type { UniBlockProps } from '../../types';
|
|
5
|
+
import { Button } from '../../ui-kit/Button/Button';
|
|
4
6
|
import { Icon } from '../../ui-kit/Icon/Icon';
|
|
5
7
|
import type { IconName } from '../../ui-kit/Icon/IconProps';
|
|
6
|
-
import { useLink } from '../../hooks/useLink';
|
|
7
|
-
import { Button } from '../../ui-kit/Button/Button';
|
|
8
8
|
|
|
9
9
|
const ICONS_MAP: Array<{
|
|
10
10
|
origins: string[];
|
|
@@ -25,7 +25,7 @@ const ICONS_MAP: Array<{
|
|
|
25
25
|
];
|
|
26
26
|
|
|
27
27
|
export interface SocialMediaProps extends UniBlockProps {
|
|
28
|
-
media?: Omit<
|
|
28
|
+
media?: Omit<LinkProps, 'text'>[];
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
export const SocialMedia = JSX<SocialMediaProps>(({ className, media, context }) => {
|
|
@@ -58,14 +58,7 @@ const MediaButton = JSX<MediaButtonProps>(({ href }) => {
|
|
|
58
58
|
rel="noopener noreferrer"
|
|
59
59
|
aria-label={label}
|
|
60
60
|
className="border-solid border border-main-divider w-9 h-9 flex items-center justify-center hover:fill-primary-main"
|
|
61
|
-
appendLeft={
|
|
62
|
-
<Icon
|
|
63
|
-
name={icon}
|
|
64
|
-
width={width}
|
|
65
|
-
height={height}
|
|
66
|
-
className="[&>*]:fill-primary-text [&>*]:hover:fill-primary-main"
|
|
67
|
-
/>
|
|
68
|
-
}
|
|
61
|
+
appendLeft={<Icon name={icon} width={width} height={height} asSVG />}
|
|
69
62
|
/>
|
|
70
63
|
);
|
|
71
64
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import type { LinkContent } from '../../model/LinkContent';
|
|
3
2
|
import { useLink } from '../../hooks/useLink';
|
|
3
|
+
import type { LinkProps } from '../../model/LinkProps';
|
|
4
4
|
import { FooterLink } from './FooterLink';
|
|
5
5
|
|
|
6
6
|
export const TextInformation = JSX<FooterLink>(({ className, links, context }) => {
|
|
@@ -28,7 +28,7 @@ export const TextInformation = JSX<FooterLink>(({ className, links, context }) =
|
|
|
28
28
|
);
|
|
29
29
|
});
|
|
30
30
|
|
|
31
|
-
interface TextInformationLinkProps extends
|
|
31
|
+
interface TextInformationLinkProps extends LinkProps {
|
|
32
32
|
className: string;
|
|
33
33
|
index: number;
|
|
34
34
|
onClick: (ev: MouseEvent) => any;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Галерея",
|
|
3
|
+
"description": "Описание",
|
|
4
|
+
"cards": [
|
|
5
|
+
{
|
|
6
|
+
"image": {
|
|
7
|
+
"format": "webp",
|
|
8
|
+
"size": {
|
|
9
|
+
"width": 140,
|
|
10
|
+
"height": 140
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"title": "Заголовок 1",
|
|
14
|
+
"description": "Описание 1",
|
|
15
|
+
"href": "/credit-cards",
|
|
16
|
+
"items": ["Элемент списка 1", "Элемент списка 2", "Элемент списка 3"]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"image": {
|
|
20
|
+
"format": "webp",
|
|
21
|
+
"size": {
|
|
22
|
+
"width": 140,
|
|
23
|
+
"height": 140
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"title": "Заголовок 2",
|
|
27
|
+
"description": "Описание 2",
|
|
28
|
+
"href": "/credit-cards",
|
|
29
|
+
"items": ["Элемент списка 1", "Элемент списка 2", "Элемент списка 3"]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"image": {
|
|
33
|
+
"format": "webp",
|
|
34
|
+
"size": {
|
|
35
|
+
"width": 140,
|
|
36
|
+
"height": 140
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"title": "Заголовок 3",
|
|
40
|
+
"description": "Описание 3",
|
|
41
|
+
"href": "/credit-cards",
|
|
42
|
+
"items": ["Элемент списка 1", "Элемент списка 2", "Элемент списка 3"]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"image": {
|
|
46
|
+
"format": "webp",
|
|
47
|
+
"size": {
|
|
48
|
+
"width": 140,
|
|
49
|
+
"height": 140
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"title": "Заголовок 4",
|
|
53
|
+
"description": "Описание 4",
|
|
54
|
+
"href": "/credit-cards",
|
|
55
|
+
"items": ["Элемент списка 1", "Элемент списка 2", "Элемент списка 3"]
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"image": {
|
|
59
|
+
"format": "webp",
|
|
60
|
+
"size": {
|
|
61
|
+
"width": 140,
|
|
62
|
+
"height": 140
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"title": "Заголовок 5",
|
|
66
|
+
"description": "Описание 5",
|
|
67
|
+
"href": "/credit-cards",
|
|
68
|
+
"items": ["Элемент списка 1", "Элемент списка 2", "Элемент списка 3"]
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}
|