@redneckz/wildless-cms-uni-blocks 0.3.5 → 0.3.6
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/bundle.umd.js +45 -30
- package/bundle/bundle.umd.min.js +1 -1
- package/dist/components/BaseTile/BaseTile.js +1 -1
- package/dist/components/BaseTile/BaseTile.js.map +1 -1
- package/dist/components/Blocks.d.ts +0 -1
- package/dist/components/Blocks.js +0 -2
- package/dist/components/Blocks.js.map +1 -1
- package/dist/components/Blocks.mobile.d.ts +1 -1
- package/dist/components/Blocks.mobile.js +2 -2
- package/dist/components/Blocks.mobile.js.map +1 -1
- package/dist/components/ContentPage/ContentPageHead.js +4 -2
- package/dist/components/ContentPage/ContentPageHead.js.map +1 -1
- package/dist/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
- package/dist/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
- package/dist/components/Gallery/GalleryCardInner.js +15 -5
- package/dist/components/Gallery/GalleryCardInner.js.map +1 -1
- package/dist/components/Header/Header.mobile.js +1 -1
- package/dist/components/Header/Header.mobile.js.map +1 -1
- package/dist/components/Header/HeaderBurger.js +1 -1
- package/dist/components/Header/HeaderBurger.js.map +1 -1
- package/dist/components/Header/HeaderTop.js +1 -1
- package/dist/components/Header/HeaderTop.js.map +1 -1
- package/dist/components/LinkDocs/LinkDocsListItem.js +1 -1
- package/dist/components/LinkDocs/LinkDocsListItem.js.map +1 -1
- package/dist/components/LinkDocs/LinkDocsListItem.mobile.js +1 -1
- package/dist/components/LinkDocs/LinkDocsListItem.mobile.js.map +1 -1
- package/dist/components/ProductBlock/ProductBlockInner.js +1 -1
- package/dist/components/ProductBlock/ProductBlockInner.js.map +1 -1
- package/dist/components/ProductBlock/ProductBlockInner.mobile.js +4 -1
- package/dist/components/ProductBlock/ProductBlockInner.mobile.js.map +1 -1
- package/dist/components/ProductBlock/renderBenefit.mobile.js +1 -1
- package/dist/components/ProductBlock/renderBenefit.mobile.js.map +1 -1
- package/dist/components/ProductGallery/ProductGallery.mobile.js +3 -14
- package/dist/components/ProductGallery/ProductGallery.mobile.js.map +1 -1
- package/dist/components/ProductGallery/ProductGalleryBlock.mobile.js +1 -1
- package/dist/components/StepsBlock/StepsBlock.mobile.js +1 -1
- package/dist/components/StepsBlock/StepsBlock.mobile.js.map +1 -1
- package/dist/components/Tile/Tile.js +5 -1
- package/dist/components/Tile/Tile.js.map +1 -1
- package/dist/types.d.ts +7 -1
- package/dist/ui-kit/BlockItem/BlockItem.js +3 -3
- package/dist/ui-kit/BlockItem/BlockItem.js.map +1 -1
- package/dist/ui-kit/Description/Description.js +1 -1
- package/dist/ui-kit/Heading/Heading.js +1 -1
- package/dist/ui-kit/Heading/Heading.js.map +1 -1
- package/dist/ui-kit/Heading/Heading.mobile.js +1 -1
- package/dist/ui-kit/Heading/Heading.mobile.js.map +1 -1
- package/dist/ui-kit/List/ListItem.js +2 -2
- package/dist/ui-kit/List/ListItem.js.map +1 -1
- package/dist/ui-kit/SwipeListControl/SwipeListControlDots.js +1 -1
- package/dist/ui-kit/SwipeListControl/SwipeListControlDots.js.map +1 -1
- package/dist/ui-kit/SwipeListControl/SwipeListControlItem.js +1 -1
- package/dist/ui-kit/SwipeListControl/SwipeListControlItem.js.map +1 -1
- package/lib/common.css +1 -1
- package/lib/components/BaseTile/BaseTile.js +1 -1
- package/lib/components/BaseTile/BaseTile.js.map +1 -1
- package/lib/components/Blocks.d.ts +0 -1
- package/lib/components/Blocks.js +0 -2
- package/lib/components/Blocks.js.map +1 -1
- package/lib/components/Blocks.mobile.d.ts +1 -1
- package/lib/components/Blocks.mobile.js +2 -2
- package/lib/components/Blocks.mobile.js.map +1 -1
- package/lib/components/ContentPage/ContentPageHead.js +4 -2
- package/lib/components/ContentPage/ContentPageHead.js.map +1 -1
- package/lib/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
- package/lib/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
- package/lib/components/Gallery/GalleryCardInner.js +15 -5
- package/lib/components/Gallery/GalleryCardInner.js.map +1 -1
- package/lib/components/Header/Header.mobile.js +1 -1
- package/lib/components/Header/Header.mobile.js.map +1 -1
- package/lib/components/Header/HeaderBurger.js +1 -1
- package/lib/components/Header/HeaderBurger.js.map +1 -1
- package/lib/components/Header/HeaderTop.js +1 -1
- package/lib/components/Header/HeaderTop.js.map +1 -1
- package/lib/components/LinkDocs/LinkDocsListItem.js +1 -1
- package/lib/components/LinkDocs/LinkDocsListItem.js.map +1 -1
- package/lib/components/LinkDocs/LinkDocsListItem.mobile.js +1 -1
- package/lib/components/LinkDocs/LinkDocsListItem.mobile.js.map +1 -1
- package/lib/components/ProductBlock/ProductBlockInner.js +1 -1
- package/lib/components/ProductBlock/ProductBlockInner.js.map +1 -1
- package/lib/components/ProductBlock/ProductBlockInner.mobile.js +4 -1
- package/lib/components/ProductBlock/ProductBlockInner.mobile.js.map +1 -1
- package/lib/components/ProductBlock/renderBenefit.mobile.js +1 -1
- package/lib/components/ProductBlock/renderBenefit.mobile.js.map +1 -1
- package/lib/components/ProductGallery/ProductGallery.fixture.mobile.d.ts +1 -0
- package/lib/components/ProductGallery/ProductGallery.mobile.js +4 -15
- package/lib/components/ProductGallery/ProductGallery.mobile.js.map +1 -1
- package/lib/components/ProductGallery/ProductGalleryBlock.mobile.js +1 -1
- package/lib/components/StepsBlock/StepsBlock.mobile.js +1 -1
- package/lib/components/StepsBlock/StepsBlock.mobile.js.map +1 -1
- package/lib/components/Tile/Tile.js +5 -1
- package/lib/components/Tile/Tile.js.map +1 -1
- package/lib/types.d.ts +7 -1
- package/lib/ui-kit/BlockItem/BlockItem.js +3 -3
- package/lib/ui-kit/BlockItem/BlockItem.js.map +1 -1
- package/lib/ui-kit/Description/Description.js +1 -1
- package/lib/ui-kit/Heading/Heading.js +1 -1
- package/lib/ui-kit/Heading/Heading.js.map +1 -1
- package/lib/ui-kit/Heading/Heading.mobile.js +1 -1
- package/lib/ui-kit/Heading/Heading.mobile.js.map +1 -1
- package/lib/ui-kit/List/ListItem.js +2 -2
- package/lib/ui-kit/List/ListItem.js.map +1 -1
- package/lib/ui-kit/SwipeListControl/SwipeListControlDots.js +1 -1
- package/lib/ui-kit/SwipeListControl/SwipeListControlDots.js.map +1 -1
- package/lib/ui-kit/SwipeListControl/SwipeListControlItem.js +1 -1
- package/lib/ui-kit/SwipeListControl/SwipeListControlItem.js.map +1 -1
- package/mobile/bundle/bundle.umd.js +63 -56
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/dist/components/BaseTile/BaseTile.js +1 -1
- package/mobile/dist/components/BaseTile/BaseTile.js.map +1 -1
- package/mobile/dist/components/Blocks.d.ts +1 -1
- package/mobile/dist/components/Blocks.js +2 -2
- package/mobile/dist/components/Blocks.js.map +1 -1
- package/mobile/dist/components/ContentPage/ContentPageHead.js +4 -2
- package/mobile/dist/components/ContentPage/ContentPageHead.js.map +1 -1
- package/mobile/dist/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
- package/mobile/dist/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
- package/mobile/dist/components/Gallery/GalleryCardInner.js +15 -5
- package/mobile/dist/components/Gallery/GalleryCardInner.js.map +1 -1
- package/mobile/dist/components/Header/Header.js +1 -1
- package/mobile/dist/components/Header/Header.js.map +1 -1
- package/mobile/dist/components/Header/HeaderBurger.js +1 -1
- package/mobile/dist/components/Header/HeaderBurger.js.map +1 -1
- package/mobile/dist/components/Header/HeaderTop.js +1 -1
- package/mobile/dist/components/Header/HeaderTop.js.map +1 -1
- package/mobile/dist/components/LinkDocs/LinkDocsListItem.js +1 -1
- package/mobile/dist/components/LinkDocs/LinkDocsListItem.js.map +1 -1
- package/mobile/dist/components/ProductBlock/ProductBlockInner.js +4 -1
- package/mobile/dist/components/ProductBlock/ProductBlockInner.js.map +1 -1
- package/mobile/dist/components/ProductBlock/renderBenefit.js +1 -1
- package/mobile/dist/components/ProductBlock/renderBenefit.js.map +1 -1
- package/mobile/dist/components/ProductGallery/ProductGallery.js +3 -14
- package/mobile/dist/components/ProductGallery/ProductGallery.js.map +1 -1
- package/mobile/dist/components/ProductGallery/ProductGalleryBlock.js +1 -1
- package/mobile/dist/components/StepsBlock/StepsBlock.js +1 -1
- package/mobile/dist/components/StepsBlock/StepsBlock.js.map +1 -1
- package/mobile/dist/components/Tile/Tile.js +5 -1
- package/mobile/dist/components/Tile/Tile.js.map +1 -1
- package/mobile/dist/types.d.ts +7 -1
- package/mobile/dist/ui-kit/BlockItem/BlockItem.js +3 -3
- package/mobile/dist/ui-kit/BlockItem/BlockItem.js.map +1 -1
- package/mobile/dist/ui-kit/Description/Description.js +1 -1
- package/mobile/dist/ui-kit/Heading/Heading.js +1 -1
- package/mobile/dist/ui-kit/Heading/Heading.js.map +1 -1
- package/mobile/dist/ui-kit/List/ListItem.js +2 -2
- package/mobile/dist/ui-kit/List/ListItem.js.map +1 -1
- package/mobile/dist/ui-kit/SwipeListControl/SwipeListControlDots.js +1 -1
- package/mobile/dist/ui-kit/SwipeListControl/SwipeListControlDots.js.map +1 -1
- package/mobile/dist/ui-kit/SwipeListControl/SwipeListControlItem.js +1 -1
- package/mobile/dist/ui-kit/SwipeListControl/SwipeListControlItem.js.map +1 -1
- package/mobile/lib/components/BaseTile/BaseTile.js +1 -1
- package/mobile/lib/components/BaseTile/BaseTile.js.map +1 -1
- package/mobile/lib/components/Blocks.d.ts +1 -1
- package/mobile/lib/components/Blocks.js +2 -2
- package/mobile/lib/components/Blocks.js.map +1 -1
- package/mobile/lib/components/ContentPage/ContentPageHead.js +4 -2
- package/mobile/lib/components/ContentPage/ContentPageHead.js.map +1 -1
- package/mobile/lib/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
- package/mobile/lib/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
- package/mobile/lib/components/Gallery/GalleryCardInner.js +15 -5
- package/mobile/lib/components/Gallery/GalleryCardInner.js.map +1 -1
- package/mobile/lib/components/Header/Header.js +1 -1
- package/mobile/lib/components/Header/Header.js.map +1 -1
- package/mobile/lib/components/Header/HeaderBurger.js +1 -1
- package/mobile/lib/components/Header/HeaderBurger.js.map +1 -1
- package/mobile/lib/components/Header/HeaderTop.js +1 -1
- package/mobile/lib/components/Header/HeaderTop.js.map +1 -1
- package/mobile/lib/components/LinkDocs/LinkDocsListItem.js +1 -1
- package/mobile/lib/components/LinkDocs/LinkDocsListItem.js.map +1 -1
- package/mobile/lib/components/ProductBlock/ProductBlockInner.js +4 -1
- package/mobile/lib/components/ProductBlock/ProductBlockInner.js.map +1 -1
- package/mobile/lib/components/ProductBlock/renderBenefit.js +1 -1
- package/mobile/lib/components/ProductBlock/renderBenefit.js.map +1 -1
- package/mobile/lib/components/ProductGallery/ProductGallery.js +4 -15
- package/mobile/lib/components/ProductGallery/ProductGallery.js.map +1 -1
- package/mobile/lib/components/ProductGallery/ProductGalleryBlock.js +1 -1
- package/mobile/lib/components/StepsBlock/StepsBlock.js +1 -1
- package/mobile/lib/components/StepsBlock/StepsBlock.js.map +1 -1
- package/mobile/lib/components/Tile/Tile.js +5 -1
- package/mobile/lib/components/Tile/Tile.js.map +1 -1
- package/mobile/lib/types.d.ts +7 -1
- package/mobile/lib/ui-kit/BlockItem/BlockItem.js +3 -3
- package/mobile/lib/ui-kit/BlockItem/BlockItem.js.map +1 -1
- package/mobile/lib/ui-kit/Description/Description.js +1 -1
- package/mobile/lib/ui-kit/Heading/Heading.js +1 -1
- package/mobile/lib/ui-kit/Heading/Heading.js.map +1 -1
- package/mobile/lib/ui-kit/List/ListItem.js +2 -2
- package/mobile/lib/ui-kit/List/ListItem.js.map +1 -1
- package/mobile/lib/ui-kit/SwipeListControl/SwipeListControlDots.js +1 -1
- package/mobile/lib/ui-kit/SwipeListControl/SwipeListControlDots.js.map +1 -1
- package/mobile/lib/ui-kit/SwipeListControl/SwipeListControlItem.js +1 -1
- package/mobile/lib/ui-kit/SwipeListControl/SwipeListControlItem.js.map +1 -1
- package/mobile/src/components/BaseTile/BaseTile.tsx +2 -2
- package/mobile/src/components/Blocks.ts +2 -2
- package/mobile/src/components/ContentPage/ContentPage.page.json +17 -4
- package/mobile/src/components/ContentPage/ContentPageHead.tsx +14 -1
- package/mobile/src/components/ExchangeRateTile/ExchangeRateTile.tsx +1 -1
- package/mobile/src/components/Gallery/GalleryCardInner.tsx +23 -15
- package/mobile/src/components/Header/Header.tsx +1 -1
- package/mobile/src/components/Header/HeaderBurger.tsx +2 -2
- package/mobile/src/components/Header/HeaderTop.tsx +6 -2
- package/mobile/src/components/LinkDocs/LinkDocsListItem.tsx +1 -1
- package/mobile/src/components/ProductBlock/ProductBlockInner.tsx +17 -11
- package/mobile/src/components/ProductBlock/renderBenefit.tsx +2 -2
- package/mobile/src/components/ProductGallery/ProductGallery.tsx +12 -49
- package/mobile/src/components/ProductGallery/ProductGalleryBlock.tsx +1 -1
- package/mobile/src/components/StepsBlock/StepsBlock.tsx +1 -1
- package/mobile/src/components/Tile/Tile.tsx +7 -4
- package/mobile/src/types.ts +8 -1
- package/mobile/src/ui-kit/BlockItem/BlockItem.tsx +4 -4
- package/mobile/src/ui-kit/Description/Description.tsx +1 -1
- package/mobile/src/ui-kit/Heading/Heading.tsx +1 -1
- package/mobile/src/ui-kit/List/ListItem.tsx +3 -3
- package/mobile/src/ui-kit/SwipeListControl/SwipeListControlDots.tsx +1 -1
- package/mobile/src/ui-kit/SwipeListControl/SwipeListControlItem.tsx +5 -1
- package/package.json +1 -1
- package/src/components/BaseTile/BaseTile.tsx +2 -2
- package/src/components/Blocks.mobile.ts +2 -2
- package/src/components/Blocks.ts +0 -2
- package/src/components/ComparisonTable/ComparisonTable.fixture.tsx +0 -1
- package/src/components/ContentPage/ContentPage.page.json +17 -4
- package/src/components/ContentPage/ContentPageHead.tsx +14 -1
- package/src/components/ExchangeRateTile/ExchangeRateTile.tsx +1 -1
- package/src/components/Gallery/Gallery.fixture.mobile.tsx +1 -1
- package/src/components/Gallery/GalleryCardInner.tsx +23 -15
- package/src/components/Header/Header.mobile.tsx +1 -1
- package/src/components/Header/HeaderBurger.tsx +2 -2
- package/src/components/Header/HeaderTop.tsx +6 -2
- package/src/components/LinkDocs/LinkDocsListItem.mobile.tsx +1 -1
- package/src/components/LinkDocs/LinkDocsListItem.tsx +1 -1
- package/src/components/ProductBlock/ProductBlock.fixture.mobile.tsx +2 -2
- package/src/components/ProductBlock/ProductBlockInner.mobile.tsx +17 -11
- package/src/components/ProductBlock/ProductBlockInner.tsx +2 -2
- package/src/components/ProductBlock/renderBenefit.mobile.tsx +2 -2
- package/src/components/ProductGallery/ProductGallery.fixture.mobile.tsx +98 -0
- package/src/components/ProductGallery/ProductGallery.fixture.tsx +2 -2
- package/src/components/ProductGallery/ProductGallery.mobile.tsx +12 -49
- package/src/components/ProductGallery/ProductGalleryBlock.mobile.tsx +1 -1
- package/src/components/StepsBlock/StepsBlock.mobile.tsx +1 -1
- package/src/components/Tile/Tile.tsx +7 -4
- package/src/types.ts +8 -1
- package/src/ui-kit/BlockItem/BlockItem.tsx +4 -4
- package/src/ui-kit/Description/Description.tsx +1 -1
- package/src/ui-kit/Heading/Heading.fixture.mobile.tsx +0 -1
- package/src/ui-kit/Heading/Heading.mobile.tsx +1 -1
- package/src/ui-kit/Heading/Heading.tsx +3 -1
- package/src/ui-kit/List/ListItem.tsx +3 -3
- package/src/ui-kit/SwipeListControl/SwipeListControlDots.tsx +1 -1
- package/src/ui-kit/SwipeListControl/SwipeListControlItem.tsx +5 -1
|
@@ -49,9 +49,8 @@ export const Tile = JSX<TileProps>((props) => {
|
|
|
49
49
|
<Heading
|
|
50
50
|
headingType={getTileHeadingType(className)}
|
|
51
51
|
title={title}
|
|
52
|
-
className={`whitespace-pre-wrap max-w-[600px] ${
|
|
53
|
-
|
|
54
|
-
}`}
|
|
52
|
+
className={`whitespace-pre-wrap max-w-[600px] ${title ? 'mb-3' : ''}
|
|
53
|
+
${version === 'primary' ? 'text-primary-text' : ''}`}
|
|
55
54
|
/>
|
|
56
55
|
)
|
|
57
56
|
}
|
|
@@ -64,8 +63,12 @@ export const Tile = JSX<TileProps>((props) => {
|
|
|
64
63
|
>
|
|
65
64
|
{description && <Description className="mt-4 max-w-[600px]" description={description} />}
|
|
66
65
|
{children}
|
|
67
|
-
{items
|
|
66
|
+
{renderList(items, version)}
|
|
68
67
|
</BaseTile>
|
|
69
68
|
</section>
|
|
70
69
|
);
|
|
71
70
|
});
|
|
71
|
+
|
|
72
|
+
function renderList(items, version) {
|
|
73
|
+
return items?.length ? <List items={items} version={version} /> : null;
|
|
74
|
+
}
|
package/mobile/src/types.ts
CHANGED
|
@@ -28,10 +28,17 @@ export interface SlotsMap {
|
|
|
28
28
|
export interface ContentPageMeta {
|
|
29
29
|
title: string;
|
|
30
30
|
slug: string;
|
|
31
|
+
main: ContentPageMetaMain;
|
|
32
|
+
og?: Record<string, string>;
|
|
33
|
+
twitter?: Record<string, string>;
|
|
34
|
+
jsonLd?: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface ContentPageMetaMain {
|
|
31
38
|
description?: string;
|
|
32
39
|
keywords?: string[];
|
|
40
|
+
canonical?: string;
|
|
33
41
|
robots?: string[];
|
|
34
|
-
og?: Record<string, string>;
|
|
35
42
|
}
|
|
36
43
|
|
|
37
44
|
export interface ContentPageDef extends ContentPageMeta {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
2
|
import type { BlockItemProps, BlockItemVersion } from './BlockItemProps';
|
|
3
3
|
|
|
4
|
-
const LIST_STYLE_CLASSES = 'rounded-full inline-block mr-3';
|
|
4
|
+
const LIST_STYLE_CLASSES = 'rounded-full inline-block mr-3 mt-2';
|
|
5
5
|
|
|
6
6
|
const TEXT_STYLE_MAP: Record<BlockItemVersion, string> = {
|
|
7
|
-
primary: 'text-
|
|
7
|
+
primary: 'text-secondary-text',
|
|
8
8
|
secondary: 'text-white',
|
|
9
9
|
gray: 'text-secondary-text',
|
|
10
10
|
};
|
|
@@ -18,8 +18,8 @@ const LIST_STYLE_MAP: Record<BlockItemVersion, string> = {
|
|
|
18
18
|
export const BlockItem = JSX<BlockItemProps>(
|
|
19
19
|
({ className = '', isDotted = true, text, children, version = 'primary' }) => {
|
|
20
20
|
return (
|
|
21
|
-
<div className={`font-sans flex items-
|
|
22
|
-
{isDotted && <div className={getListStyle(version)} />}
|
|
21
|
+
<div className={`font-sans flex items-start ${className}`} role="listitem">
|
|
22
|
+
{isDotted && <div className={getListStyle(version)} />}!!!!!
|
|
23
23
|
<span className={TEXT_STYLE_MAP[version]}>{text || children}</span>
|
|
24
24
|
</div>
|
|
25
25
|
);
|
|
@@ -8,5 +8,5 @@ export interface DescriptionProps extends DescriptionContent {
|
|
|
8
8
|
export const Description = JSX<DescriptionProps>((props) => {
|
|
9
9
|
const { className, description } = props;
|
|
10
10
|
|
|
11
|
-
return <div className={`font-normal text-
|
|
11
|
+
return <div className={`font-normal text-m-md ${className || ''}`}>{description}</div>;
|
|
12
12
|
});
|
|
@@ -22,7 +22,7 @@ export const Heading = JSX<HeadingProps>((props) => {
|
|
|
22
22
|
const Tag = headingType;
|
|
23
23
|
|
|
24
24
|
return (
|
|
25
|
-
<Tag className={`font-sans font-medium ${HeadingClass[headingType]} ${className || ''}`}>
|
|
25
|
+
<Tag className={`font-sans font-medium m-0 ${HeadingClass[headingType]} ${className || ''}`}>
|
|
26
26
|
{title}
|
|
27
27
|
</Tag>
|
|
28
28
|
);
|
|
@@ -11,7 +11,7 @@ export interface ListItemProps {
|
|
|
11
11
|
isDotted?: boolean;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
const LIST_STYLE_CLASSES = 'rounded-full inline-block mr-3';
|
|
14
|
+
const LIST_STYLE_CLASSES = 'rounded-full inline-block mr-3 mt-2';
|
|
15
15
|
|
|
16
16
|
const TEXT_STYLE_MAP: Record<ListItemVersion, string> = {
|
|
17
17
|
primary: 'text-primary-text',
|
|
@@ -28,9 +28,9 @@ const LIST_STYLE_MAP: Record<ListItemVersion, string> = {
|
|
|
28
28
|
export const ListItem = JSX<ListItemProps>(
|
|
29
29
|
({ className = '', isDotted = true, children, version = 'primary' }) => {
|
|
30
30
|
return (
|
|
31
|
-
<div className={`font-sans flex items-
|
|
31
|
+
<div className={`font-sans flex items-start ${className}`} role="listitem">
|
|
32
32
|
{isDotted && <div className={getListStyle(version)} />}
|
|
33
|
-
<span className={TEXT_STYLE_MAP[version]}>{children}</span>
|
|
33
|
+
<span className={`text-m-md ${TEXT_STYLE_MAP[version]}`}>{children}</span>
|
|
34
34
|
</div>
|
|
35
35
|
);
|
|
36
36
|
},
|
|
@@ -15,7 +15,7 @@ export interface SwipeListControlDotsProps {
|
|
|
15
15
|
export const SwipeListControlDots = JSX<SwipeListControlDotsProps>(
|
|
16
16
|
({ children, activeIndex, indexFraction, showDots }) => {
|
|
17
17
|
return showDots && children?.length ? (
|
|
18
|
-
<div className="flex gap-2 mx-auto mt-
|
|
18
|
+
<div className="flex gap-2 mx-auto mt-5 w-fit">
|
|
19
19
|
{children?.map((_, idx) => (
|
|
20
20
|
<div
|
|
21
21
|
key={String(idx)}
|
|
@@ -12,7 +12,11 @@ export interface SwipeListControlItemProps {
|
|
|
12
12
|
export const SwipeListControlItem = JSX<SwipeListControlItemProps>(
|
|
13
13
|
({ className = '', children, ...rest }) => {
|
|
14
14
|
return (
|
|
15
|
-
<div
|
|
15
|
+
<div
|
|
16
|
+
className={`snap-center snap-always min-w-full box-border ${className}`}
|
|
17
|
+
role="listitem"
|
|
18
|
+
{...rest}
|
|
19
|
+
>
|
|
16
20
|
{children}
|
|
17
21
|
</div>
|
|
18
22
|
);
|
package/package.json
CHANGED
|
@@ -9,8 +9,8 @@ export const BaseTile = JSX<BaseTileProps>(
|
|
|
9
9
|
return (
|
|
10
10
|
<div className={`font-sans flex flex-col grow h-full items-start ${className}`}>
|
|
11
11
|
{title}
|
|
12
|
-
<div className=
|
|
13
|
-
<div className=
|
|
12
|
+
<div className="flex grow w-full justify-between">
|
|
13
|
+
<div className="flex flex-col justify-between w-full">
|
|
14
14
|
<div>{children}</div>
|
|
15
15
|
<div>{buttons}</div>
|
|
16
16
|
</div>
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Accordion } from './Accordion/Accordion';
|
|
2
2
|
import { ExchangeRateTile } from './ExchangeRateTile/ExchangeRateTile';
|
|
3
3
|
import { Footer } from './Footer/Footer';
|
|
4
|
+
import { Gallery } from './Gallery/Gallery';
|
|
4
5
|
import { Header } from './Header/Header';
|
|
5
6
|
import { Headline } from './Headline/Headline';
|
|
6
7
|
import { LinkDocs } from './LinkDocs/LinkDocs';
|
|
7
8
|
import { MobileAppTile } from './MobileAppTile/MobileAppTile';
|
|
8
|
-
import { Placeholder } from './Placeholder/Placeholder';
|
|
9
9
|
import { ProductBlock } from './ProductBlock/ProductBlock';
|
|
10
10
|
import { ProductGallery } from './ProductGallery/ProductGallery';
|
|
11
11
|
import { StepsBlock } from './StepsBlock/StepsBlock';
|
|
@@ -15,11 +15,11 @@ export const Blocks = {
|
|
|
15
15
|
Accordion,
|
|
16
16
|
ExchangeRateTile,
|
|
17
17
|
Footer,
|
|
18
|
+
Gallery,
|
|
18
19
|
Header,
|
|
19
20
|
Headline,
|
|
20
21
|
LinkDocs,
|
|
21
22
|
MobileAppTile,
|
|
22
|
-
Placeholder,
|
|
23
23
|
ProductBlock,
|
|
24
24
|
ProductGallery,
|
|
25
25
|
StepsBlock,
|
package/src/components/Blocks.ts
CHANGED
|
@@ -12,7 +12,6 @@ import { MiniGallery } from './MiniGallery/MiniGallery';
|
|
|
12
12
|
import { MobileAppTile } from './MobileAppTile/MobileAppTile';
|
|
13
13
|
import { Navigation } from './Navigation/Navigation';
|
|
14
14
|
import { PictureText } from './PictureText/PictureText';
|
|
15
|
-
import { Placeholder } from './Placeholder/Placeholder';
|
|
16
15
|
import { ProductBlock } from './ProductBlock/ProductBlock';
|
|
17
16
|
import { ProductGallery } from './ProductGallery/ProductGallery';
|
|
18
17
|
import { ProductTile } from './ProductTile/ProductTile';
|
|
@@ -36,7 +35,6 @@ export const Blocks = {
|
|
|
36
35
|
MiniGallery,
|
|
37
36
|
MobileAppTile,
|
|
38
37
|
PictureText,
|
|
39
|
-
Placeholder,
|
|
40
38
|
ProductBlock,
|
|
41
39
|
ProductGallery,
|
|
42
40
|
ProductTile,
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"title": "Кредиты",
|
|
3
3
|
"slug": "credits",
|
|
4
|
-
"
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
"main": {
|
|
5
|
+
"description": "Акционерное общество «Российский Сельскохозяйственный банк»* — один из крупнейших банков в России. Созданный в 2000 году в целях развития национальной кредитно-финансовой системы.",
|
|
6
|
+
"keywords": ["кредит", "акция"],
|
|
7
|
+
"canonical": "canonical url",
|
|
8
|
+
"robots": ["index", "follow"]
|
|
9
|
+
},
|
|
7
10
|
"og": {
|
|
8
11
|
"type": "article",
|
|
9
12
|
"url": "https://foo.com/bar/baz"
|
|
10
13
|
},
|
|
14
|
+
"twitter": {
|
|
15
|
+
"card": "summary_large_image"
|
|
16
|
+
},
|
|
17
|
+
"jsonLd": "json",
|
|
11
18
|
"date": "2022-04-08",
|
|
12
19
|
"style": ["bg-secondary-light"],
|
|
13
20
|
"likeControl": true,
|
|
@@ -121,7 +128,13 @@
|
|
|
121
128
|
"size": {
|
|
122
129
|
"width": 280,
|
|
123
130
|
"height": 280
|
|
124
|
-
}
|
|
131
|
+
},
|
|
132
|
+
"sources": [
|
|
133
|
+
{
|
|
134
|
+
"src": "money-2.png 1x, money-2-2x.png 2x",
|
|
135
|
+
"format": "png"
|
|
136
|
+
}
|
|
137
|
+
]
|
|
125
138
|
}
|
|
126
139
|
}
|
|
127
140
|
},
|
|
@@ -7,7 +7,13 @@ export interface ContentPageHeadProps {
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
export const ContentPageHead = JSX<ContentPageHeadProps>(({ HeadComponent, data, children }) => {
|
|
10
|
-
const {
|
|
10
|
+
const {
|
|
11
|
+
title,
|
|
12
|
+
main: { description, keywords, canonical, robots },
|
|
13
|
+
og,
|
|
14
|
+
twitter,
|
|
15
|
+
jsonLd,
|
|
16
|
+
} = data;
|
|
11
17
|
return (
|
|
12
18
|
<HeadComponent>
|
|
13
19
|
<title>{title}</title>
|
|
@@ -20,6 +26,13 @@ export const ContentPageHead = JSX<ContentPageHeadProps>(({ HeadComponent, data,
|
|
|
20
26
|
<meta key={key} name={`og:${key}`} content={value} />
|
|
21
27
|
))
|
|
22
28
|
: null}
|
|
29
|
+
{twitter
|
|
30
|
+
? Object.entries(twitter).map(([key, value]) => (
|
|
31
|
+
<meta key={key} name={`twitter:${key}`} content={value} />
|
|
32
|
+
))
|
|
33
|
+
: null}
|
|
34
|
+
{canonical && <link rel="canonical" href={canonical} />}
|
|
35
|
+
{jsonLd && <script type="application/ld+json">{jsonLd}</script>}
|
|
23
36
|
{children}
|
|
24
37
|
</HeadComponent>
|
|
25
38
|
);
|
|
@@ -44,7 +44,7 @@ export const ExchangeRateTile = JSX<ExchangeRateTileProps>(
|
|
|
44
44
|
<Heading
|
|
45
45
|
headingType={getTileHeadingType(className)}
|
|
46
46
|
title={title}
|
|
47
|
-
className={`whitespace-pre-wrap max-w-[600px]`}
|
|
47
|
+
className={`whitespace-pre-wrap max-w-[600px] ${title ? 'mb-3' : ''}`}
|
|
48
48
|
/>
|
|
49
49
|
)
|
|
50
50
|
}
|
|
@@ -3,10 +3,11 @@ import type { BlockVersion } from '../../model/BlockVersion';
|
|
|
3
3
|
import { BlockItem } from '../../ui-kit/BlockItem/BlockItem';
|
|
4
4
|
import { Button } from '../../ui-kit/Button/Button';
|
|
5
5
|
import { Img } from '../../ui-kit/Img/Img';
|
|
6
|
-
import type { GalleryCard
|
|
6
|
+
import type { GalleryCard } from './GalleryContent';
|
|
7
7
|
|
|
8
8
|
export const GalleryCardInner = JSX<GalleryCard>(
|
|
9
9
|
({ title, description, image, items, button, version }) => {
|
|
10
|
+
const titleStyleClasses = getTitleStyle(version, description, items);
|
|
10
11
|
return (
|
|
11
12
|
<div>
|
|
12
13
|
<div>
|
|
@@ -15,15 +16,11 @@ export const GalleryCardInner = JSX<GalleryCard>(
|
|
|
15
16
|
<Img className="mb-6" image={image} />
|
|
16
17
|
</div>
|
|
17
18
|
) : null}
|
|
18
|
-
{title
|
|
19
|
-
{description ?
|
|
20
|
-
|
|
21
|
-
<section className={`max-w-[308px] mt-2`} role="list">
|
|
22
|
-
{items
|
|
23
|
-
.filter((item) => item?.text)
|
|
24
|
-
.map((item, i) => renderItem(item.text as string, i, version))}
|
|
25
|
-
</section>
|
|
19
|
+
{title ? renderCardTitle(title, titleStyleClasses) : null}
|
|
20
|
+
{description ? (
|
|
21
|
+
<div className={`font-normal text-sm ${title ? 'mt-2' : ''}`}>{description}</div>
|
|
26
22
|
) : null}
|
|
23
|
+
{items?.length ? renderItems(items, version) : null}
|
|
27
24
|
</div>
|
|
28
25
|
{button?.text && <Button className="mt-6" {...button} />}
|
|
29
26
|
</div>
|
|
@@ -31,13 +28,17 @@ export const GalleryCardInner = JSX<GalleryCard>(
|
|
|
31
28
|
},
|
|
32
29
|
);
|
|
33
30
|
|
|
34
|
-
function renderCardTitle(title: string,
|
|
31
|
+
function renderCardTitle(title: string, className: string) {
|
|
32
|
+
return <div className={`font-medium text-xl m-0 ${className}`}>{title}</div>;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function renderItems(items, version) {
|
|
35
36
|
return (
|
|
36
|
-
<
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
</
|
|
37
|
+
<section className={`max-w-[308px] mt-2`} role="list">
|
|
38
|
+
{items
|
|
39
|
+
.filter((item) => item?.text)
|
|
40
|
+
.map((item, i) => renderItem(item.text as string, i, version))}
|
|
41
|
+
</section>
|
|
41
42
|
);
|
|
42
43
|
}
|
|
43
44
|
|
|
@@ -48,3 +49,10 @@ function renderItem(item: string, i: number, version?: BlockVersion) {
|
|
|
48
49
|
</BlockItem>
|
|
49
50
|
);
|
|
50
51
|
}
|
|
52
|
+
|
|
53
|
+
function getTitleStyle(version, description, items) {
|
|
54
|
+
return `font-medium text-xl m-0
|
|
55
|
+
${version !== 'secondary' ? 'text-primary-text' : ''}
|
|
56
|
+
${!description && !items?.length ? 'text-center' : ''}
|
|
57
|
+
`;
|
|
58
|
+
}
|
|
@@ -32,7 +32,7 @@ export const Header = JSX<HeaderProps>(
|
|
|
32
32
|
|
|
33
33
|
return (
|
|
34
34
|
<header className={`${bgColor} ${className}`}>
|
|
35
|
-
<div className="container px-4 py-0">
|
|
35
|
+
<div className="container px-4 py-0 box-border">
|
|
36
36
|
<HeaderTop onClick={toggleBurgerMenu} bgColor={bgColor} />
|
|
37
37
|
<nav className="flex items-center m-0 p-0 overflow-y-hidden w-full h-[50px]">
|
|
38
38
|
<div className="flex">
|
|
@@ -18,8 +18,8 @@ export const HeaderBurger = JSX<HeaderBurgerProps>(
|
|
|
18
18
|
const [city, getCity] = context.useGeolocation(defaultLocation);
|
|
19
19
|
|
|
20
20
|
return (
|
|
21
|
-
<div className="absolute top-0 left-0 w-full h-full bg-white p-4">
|
|
22
|
-
<button className="absolute top-4 right-4" onClick={onClick}>
|
|
21
|
+
<div className="absolute top-0 left-0 w-full h-full bg-white p-4 box-border z-20">
|
|
22
|
+
<button className="absolute top-4 right-4 border-none bg-transparent" onClick={onClick}>
|
|
23
23
|
<Icon name="CloseIcon" width="24" height="24" asSVG />
|
|
24
24
|
</button>
|
|
25
25
|
<Button onClick={getCity} className="flex items-center text-sm text-secondary-text mb-4">
|
|
@@ -11,7 +11,7 @@ export interface HeaderTopProps {
|
|
|
11
11
|
export const HeaderTop = JSX<HeaderTopProps>(({ onClick, bgColor }) => (
|
|
12
12
|
<div className="flex items-center justify-between border-0 border-b border-main-divider h-[50px]">
|
|
13
13
|
<div className="flex items-center">
|
|
14
|
-
<button className="pr-4" onClick={onClick} aria-label="Открыть меню">
|
|
14
|
+
<button className="pr-4 border-0 bg-transparent" onClick={onClick} aria-label="Открыть меню">
|
|
15
15
|
<Icon
|
|
16
16
|
name={bgColor === 'bg-white' ? 'BurgerIcon' : 'BurgerIconWhite'}
|
|
17
17
|
width="24"
|
|
@@ -21,7 +21,11 @@ export const HeaderTop = JSX<HeaderTopProps>(({ onClick, bgColor }) => (
|
|
|
21
21
|
</button>
|
|
22
22
|
<Logo bgColor={bgColor} />
|
|
23
23
|
</div>
|
|
24
|
-
<button
|
|
24
|
+
<button
|
|
25
|
+
className={`${
|
|
26
|
+
bgColor === 'bg-white' ? 'text-primary-main' : 'text-white'
|
|
27
|
+
} text-sm border-0 bg-transparent`}
|
|
28
|
+
>
|
|
25
29
|
Войти
|
|
26
30
|
</button>
|
|
27
31
|
</div>
|
|
@@ -4,7 +4,7 @@ import type { LinkDocsListItemProps } from './LinkDocsListItemBase';
|
|
|
4
4
|
|
|
5
5
|
export const LinkDocsListItem = JSX<LinkDocsListItemProps>(({ className = '', doc, icon }) => (
|
|
6
6
|
<LinkDocsListItemBase
|
|
7
|
-
className={`flex h-full ${className}`}
|
|
7
|
+
className={`flex h-full box-border ${className}`}
|
|
8
8
|
iconClassName="mr-3 min-w-6 min-h-6"
|
|
9
9
|
doc={doc}
|
|
10
10
|
icon={icon}
|
|
@@ -4,7 +4,7 @@ import type { LinkDocsListItemProps } from './LinkDocsListItemBase';
|
|
|
4
4
|
|
|
5
5
|
export const LinkDocsListItem = JSX<LinkDocsListItemProps>(({ className = '', doc, icon }) => (
|
|
6
6
|
<LinkDocsListItemBase
|
|
7
|
-
className={className}
|
|
7
|
+
className={`flex h-full box-border ${className}`}
|
|
8
8
|
iconClassName="mr-2.5 min-w-6 min-h-6 text-primary-text"
|
|
9
9
|
textClassName="self-center"
|
|
10
10
|
suffixClassName="text-secondary-text group-hover:text-primary-main"
|
|
@@ -25,7 +25,7 @@ export const ProductBlockInner = JSX<ProductBlockInnerProps>(
|
|
|
25
25
|
version = 'primary',
|
|
26
26
|
}) => {
|
|
27
27
|
return (
|
|
28
|
-
<div className={
|
|
28
|
+
<div className={`w-full text-primary-text ${className}`}>
|
|
29
29
|
<div>
|
|
30
30
|
<BaseTile
|
|
31
31
|
context={context}
|
|
@@ -34,31 +34,37 @@ export const ProductBlockInner = JSX<ProductBlockInnerProps>(
|
|
|
34
34
|
<Heading
|
|
35
35
|
headingType={headingType}
|
|
36
36
|
title={title}
|
|
37
|
-
className={`whitespace-pre-wrap max-w-[600px]`}
|
|
37
|
+
className={`whitespace-pre-wrap max-w-[600px] ${title ? 'mb-3' : ''}`}
|
|
38
38
|
/>
|
|
39
39
|
)
|
|
40
40
|
}
|
|
41
41
|
buttons={
|
|
42
42
|
buttons?.length ? (
|
|
43
|
-
<ButtonSection
|
|
43
|
+
<ButtonSection
|
|
44
|
+
context={context}
|
|
45
|
+
buttons={buttons}
|
|
46
|
+
className="flex flex-col mt-5 gap-2.5"
|
|
47
|
+
/>
|
|
44
48
|
) : null
|
|
45
49
|
}
|
|
46
50
|
>
|
|
47
51
|
{description && <Description description={description} />}
|
|
48
52
|
{benefits?.length ? (
|
|
49
|
-
<div className="mt-
|
|
50
|
-
{benefits.map((_, i) => renderBenefit(_, i, version))}
|
|
51
|
-
</div>
|
|
53
|
+
<div className="mt-5">{benefits.map((_, i) => renderBenefit(_, i, version))}</div>
|
|
52
54
|
) : null}
|
|
53
55
|
{items?.length ? <List items={items} /> : null}
|
|
54
56
|
</BaseTile>
|
|
55
57
|
</div>
|
|
56
|
-
{image
|
|
57
|
-
<div className="mt-5">
|
|
58
|
-
<Img image={{ className: 'block', ...image }} />
|
|
59
|
-
</div>
|
|
60
|
-
)}
|
|
58
|
+
{renderImage(image)}
|
|
61
59
|
</div>
|
|
62
60
|
);
|
|
63
61
|
},
|
|
64
62
|
);
|
|
63
|
+
|
|
64
|
+
function renderImage(image) {
|
|
65
|
+
return image?.src ? (
|
|
66
|
+
<div className="mt-5">
|
|
67
|
+
<Img image={{ className: 'block', ...image }} />
|
|
68
|
+
</div>
|
|
69
|
+
) : null;
|
|
70
|
+
}
|
|
@@ -25,7 +25,7 @@ export const ProductBlockInner = JSX<ProductBlockInnerProps>(
|
|
|
25
25
|
version = 'primary',
|
|
26
26
|
}) => {
|
|
27
27
|
return (
|
|
28
|
-
<div className={`flex grow justify-between items-stretch ${className}`}>
|
|
28
|
+
<div className={`flex grow justify-between items-stretch text-primary-text ${className}`}>
|
|
29
29
|
<div className={'flex flex-col'}>
|
|
30
30
|
<BaseTile
|
|
31
31
|
context={context}
|
|
@@ -52,7 +52,7 @@ export const ProductBlockInner = JSX<ProductBlockInnerProps>(
|
|
|
52
52
|
{benefits.map((_, i) => renderBenefit(_, i, version))}
|
|
53
53
|
</div>
|
|
54
54
|
) : null}
|
|
55
|
-
{items?.length ? <List items={items} /> : null}
|
|
55
|
+
{items?.length ? <List className="mt-5" items={items} /> : null}
|
|
56
56
|
</BaseTile>
|
|
57
57
|
</div>
|
|
58
58
|
{image?.src && <Img className="mt-auto" image={image} />}
|
|
@@ -16,14 +16,14 @@ export function renderBenefit(benefit: Benefit, i: number, version: string) {
|
|
|
16
16
|
<div key={String(i)} className="flex gap-3 items-center mb-2.5 last:mb-0">
|
|
17
17
|
{benefit.icon && (
|
|
18
18
|
<Icon
|
|
19
|
-
className="w-
|
|
19
|
+
className="w-6 h-6 rounded-full box-border"
|
|
20
20
|
name={benefit.icon}
|
|
21
21
|
width="24"
|
|
22
22
|
height="24"
|
|
23
23
|
asSVG
|
|
24
24
|
/>
|
|
25
25
|
)}
|
|
26
|
-
<div className={`font-medium text-m-
|
|
26
|
+
<div className={`font-medium text-m-title-xs m-0 ${benefitTitleStyleMap[version]}`}>
|
|
27
27
|
{benefit.label}
|
|
28
28
|
</div>
|
|
29
29
|
{benefit.description && (
|
|
@@ -26,6 +26,12 @@ const worker: Picture = {
|
|
|
26
26
|
width: 280,
|
|
27
27
|
height: 280,
|
|
28
28
|
},
|
|
29
|
+
sources: [
|
|
30
|
+
{
|
|
31
|
+
src: 'money-2.png 1x, money-2-2x.png 2x',
|
|
32
|
+
format: 'png',
|
|
33
|
+
},
|
|
34
|
+
],
|
|
29
35
|
};
|
|
30
36
|
|
|
31
37
|
const creditCard: Picture = {
|
|
@@ -39,6 +45,98 @@ const creditCard: Picture = {
|
|
|
39
45
|
};
|
|
40
46
|
|
|
41
47
|
export default {
|
|
48
|
+
default: (
|
|
49
|
+
<div className="p-2">
|
|
50
|
+
<div className="container grid grid-cols-12">
|
|
51
|
+
<ProductGallery
|
|
52
|
+
className="col-span-12"
|
|
53
|
+
context={context}
|
|
54
|
+
slides={[
|
|
55
|
+
{
|
|
56
|
+
productBlock: {
|
|
57
|
+
title: 'Акция «Кредит на все, что хочется!»',
|
|
58
|
+
items: [
|
|
59
|
+
'Потребительский кредит по специальной процентной ставке',
|
|
60
|
+
'Получите деньги без залога и поручительства',
|
|
61
|
+
'Кредитный лимит до 5 млн рублей',
|
|
62
|
+
],
|
|
63
|
+
buttons: [
|
|
64
|
+
{
|
|
65
|
+
href: 'https://rshb.ru',
|
|
66
|
+
text: 'Подробнее',
|
|
67
|
+
target: '_blank',
|
|
68
|
+
version: 'primary',
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
image: moneyImage,
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
productBlock: {
|
|
76
|
+
title: 'Ставка от 12,5% годовых на срок до 3 лет!',
|
|
77
|
+
items: [
|
|
78
|
+
'Потребительский кредит по специальной процентной ставке',
|
|
79
|
+
'Получите деньги без залога и поручительства',
|
|
80
|
+
'Кредитный лимит до 5 млн рублей',
|
|
81
|
+
],
|
|
82
|
+
buttons: [
|
|
83
|
+
{
|
|
84
|
+
href: 'https://rshb.ru',
|
|
85
|
+
text: 'Подробнее',
|
|
86
|
+
target: '_blank',
|
|
87
|
+
version: 'primary',
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
image: worker,
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
nav: {
|
|
95
|
+
title: 'Выгодно покупать',
|
|
96
|
+
desc: 'Дополнительные бонусные баллы за покупки',
|
|
97
|
+
},
|
|
98
|
+
productBlock: {
|
|
99
|
+
title: 'Дополнительные бонусные баллы за покупки!',
|
|
100
|
+
items: [
|
|
101
|
+
'Потребительский кредит по специальной процентной ставке',
|
|
102
|
+
'Получите деньги без залога и поручительства',
|
|
103
|
+
'Кредитный лимит до 5 млн рублей',
|
|
104
|
+
],
|
|
105
|
+
buttons: [
|
|
106
|
+
{
|
|
107
|
+
href: 'https://rshb.ru',
|
|
108
|
+
text: 'Подробнее',
|
|
109
|
+
target: '_blank',
|
|
110
|
+
version: 'primary',
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
image: creditCard,
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
productBlock: {
|
|
118
|
+
title: 'Карты Unionpay',
|
|
119
|
+
items: [
|
|
120
|
+
'Потребительский кредит по специальной процентной ставке',
|
|
121
|
+
'Получите деньги без залога и поручительства',
|
|
122
|
+
'Кредитный лимит до 5 млн рублей',
|
|
123
|
+
],
|
|
124
|
+
buttons: [
|
|
125
|
+
{
|
|
126
|
+
href: 'https://rshb.ru',
|
|
127
|
+
text: 'Подробнее',
|
|
128
|
+
target: '_blank',
|
|
129
|
+
version: 'primary',
|
|
130
|
+
},
|
|
131
|
+
],
|
|
132
|
+
image: creditCard,
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
]}
|
|
136
|
+
/>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
),
|
|
42
140
|
primary: (
|
|
43
141
|
<div className="p-2">
|
|
44
142
|
<div className="container grid grid-cols-12">
|