@redneckz/wildless-cms-uni-blocks 0.2.60 → 0.2.63
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/dist/BaseTile.d.ts +2 -1
- package/dist/BaseTile.js +2 -15
- package/dist/BaseTile.js.map +1 -1
- package/dist/BenefitsBlock.d.ts +7 -1
- package/dist/BenefitsBlock.js +2 -3
- package/dist/BenefitsBlock.js.map +1 -1
- package/dist/Blocks.d.ts +5 -1
- package/dist/Blocks.js +4 -0
- package/dist/Blocks.js.map +1 -1
- package/dist/ContentPage.js +1 -1
- package/dist/ContentPage.js.map +1 -1
- package/dist/ExchangeRateTile.js +4 -4
- package/dist/ExchangeRateTile.js.map +1 -1
- package/dist/Footer/Footer.js +1 -1
- package/dist/Footer/Footer.js.map +1 -1
- package/dist/Footer/HorizontalNavigation.js +1 -1
- package/dist/Footer/HorizontalNavigation.js.map +1 -1
- package/dist/Footer/Sitemap.js +1 -1
- package/dist/Footer/SocialMedia.js +7 -7
- package/dist/Footer/SocialMedia.js.map +1 -1
- package/dist/Footer/TextInformation.js +1 -1
- package/dist/Footer/TextInformation.js.map +1 -1
- package/dist/Gallery.d.ts +16 -0
- package/dist/Gallery.js +37 -0
- package/dist/Gallery.js.map +1 -0
- package/dist/Header/HeaderSecondaryMenu.js +2 -2
- package/dist/Header/HeaderSecondaryMenu.js.map +1 -1
- package/dist/MobileBlocks.d.ts +1 -0
- package/dist/MobileBlocks.js +2 -0
- package/dist/MobileBlocks.js.map +1 -1
- package/dist/ProductBlockInner.d.ts +2 -1
- package/dist/ProductBlockInner.js +4 -4
- package/dist/ProductBlockInner.js.map +1 -1
- package/dist/ProductTile.d.ts +2 -1
- package/dist/ProductTile.js.map +1 -1
- package/dist/ProjectSettings.d.ts +2 -0
- package/dist/ProjectSettings.js +3 -0
- package/dist/ProjectSettings.js.map +1 -1
- package/dist/StepsBlock.d.ts +2 -7
- package/dist/StepsBlock.js +4 -4
- package/dist/StepsBlock.js.map +1 -1
- package/dist/TextBlock.d.ts +14 -0
- package/dist/TextBlock.js +36 -0
- package/dist/TextBlock.js.map +1 -0
- package/dist/types.d.ts +0 -6
- package/dist/ui-kit/ArrowButton.d.ts +6 -0
- package/dist/ui-kit/ArrowButton.js +8 -0
- package/dist/ui-kit/ArrowButton.js.map +1 -0
- package/dist/ui-kit/Button.js +1 -1
- package/dist/ui-kit/Icon.d.ts +11 -0
- package/dist/ui-kit/Icon.js +7 -0
- package/dist/ui-kit/Icon.js.map +1 -0
- package/dist/ui-kit/IconButton.d.ts +2 -1
- package/dist/ui-kit/IconButton.js +2 -3
- package/dist/ui-kit/IconButton.js.map +1 -1
- package/dist/ui-kit/SearchBar.js +4 -4
- package/dist/ui-kit/SearchBar.js.map +1 -1
- package/dist/ui-kit/Title.d.ts +11 -0
- package/dist/ui-kit/Title.js +17 -0
- package/dist/ui-kit/Title.js.map +1 -0
- package/lib/BaseTile.d.ts +2 -1
- package/lib/BaseTile.js +2 -15
- package/lib/BaseTile.js.map +1 -1
- package/lib/BenefitsBlock.d.ts +7 -1
- package/lib/BenefitsBlock.js +2 -3
- package/lib/BenefitsBlock.js.map +1 -1
- package/lib/Blocks.d.ts +5 -1
- package/lib/Blocks.js +4 -0
- package/lib/Blocks.js.map +1 -1
- package/lib/ContentPage.js +1 -1
- package/lib/ContentPage.js.map +1 -1
- package/lib/ExchangeRateTile.js +4 -4
- package/lib/ExchangeRateTile.js.map +1 -1
- package/lib/Footer/Footer.js +1 -1
- package/lib/Footer/Footer.js.map +1 -1
- package/lib/Footer/HorizontalNavigation.js +1 -1
- package/lib/Footer/HorizontalNavigation.js.map +1 -1
- package/lib/Footer/Sitemap.js +1 -1
- package/lib/Footer/SocialMedia.js +7 -7
- package/lib/Footer/SocialMedia.js.map +1 -1
- package/lib/Footer/TextInformation.js +1 -1
- package/lib/Footer/TextInformation.js.map +1 -1
- package/lib/Gallery.d.ts +16 -0
- package/lib/Gallery.js +35 -0
- package/lib/Gallery.js.map +1 -0
- package/lib/Header/HeaderSecondaryMenu.js +2 -2
- package/lib/Header/HeaderSecondaryMenu.js.map +1 -1
- package/lib/MobileBlocks.d.ts +1 -0
- package/lib/MobileBlocks.js +2 -0
- package/lib/MobileBlocks.js.map +1 -1
- package/lib/ProductBlockInner.d.ts +2 -1
- package/lib/ProductBlockInner.js +4 -4
- package/lib/ProductBlockInner.js.map +1 -1
- package/lib/ProductTile.d.ts +2 -1
- package/lib/ProductTile.js.map +1 -1
- package/lib/ProjectSettings.d.ts +2 -0
- package/lib/ProjectSettings.js +3 -0
- package/lib/ProjectSettings.js.map +1 -1
- package/lib/StepsBlock.d.ts +2 -7
- package/lib/StepsBlock.js +4 -4
- package/lib/StepsBlock.js.map +1 -1
- package/lib/TextBlock.d.ts +14 -0
- package/lib/TextBlock.js +34 -0
- package/lib/TextBlock.js.map +1 -0
- package/lib/common.css +1 -1
- package/lib/types.d.ts +0 -6
- package/lib/ui-kit/ArrowButton.d.ts +6 -0
- package/lib/ui-kit/ArrowButton.js +6 -0
- package/lib/ui-kit/ArrowButton.js.map +1 -0
- package/lib/ui-kit/Button.js +1 -1
- package/lib/ui-kit/Icon.d.ts +11 -0
- package/lib/ui-kit/Icon.js +5 -0
- package/lib/ui-kit/Icon.js.map +1 -0
- package/lib/ui-kit/IconButton.d.ts +2 -1
- package/lib/ui-kit/IconButton.js +2 -3
- package/lib/ui-kit/IconButton.js.map +1 -1
- package/lib/ui-kit/SearchBar.js +4 -4
- package/lib/ui-kit/SearchBar.js.map +1 -1
- package/lib/ui-kit/Title.d.ts +11 -0
- package/lib/ui-kit/Title.js +15 -0
- package/lib/ui-kit/Title.js.map +1 -0
- package/package.json +9 -4
- package/src/BaseTile.tsx +8 -17
- package/src/BenefitsBlock.tsx +13 -6
- package/src/Blocks.ts +7 -1
- package/src/ContentPage.page.json +29 -1
- package/src/ContentPage.tsx +1 -1
- package/src/ExchangeRateTile.tsx +4 -4
- package/src/Footer/Footer.tsx +2 -2
- package/src/Footer/HorizontalNavigation.tsx +1 -1
- package/src/Footer/Sitemap.tsx +1 -1
- package/src/Footer/SocialMedia.tsx +9 -9
- package/src/Footer/TextInformation.tsx +2 -2
- package/src/Gallery.fixture.tsx +213 -0
- package/src/Gallery.tsx +132 -0
- package/src/Header/HeaderSecondaryMenu.tsx +5 -5
- package/src/MobileAppTile.fixture.tsx +16 -0
- package/src/MobileBlocks.ts +2 -0
- package/src/ProductBlockInner.tsx +13 -10
- package/src/ProductTile.tsx +4 -3
- package/src/ProjectSettings.ts +4 -0
- package/src/StepsBlock.tsx +5 -5
- package/src/TextBlock.fixture.tsx +116 -0
- package/src/TextBlock.tsx +72 -0
- package/src/Tile.tsx +1 -1
- package/src/common.css +15 -15
- package/src/icons/ActualBalanceIcon.svg +186 -0
- package/src/icons/AppleIcon.svg +13 -0
- package/src/icons/CalendarIcon.svg +17 -0
- package/src/icons/ClockIcon.svg +208 -0
- package/src/icons/ComfortableCompIcon.svg +373 -0
- package/src/icons/DollarIcon.svg +10 -0
- package/src/icons/EmptyWalletIcon.svg +17 -0
- package/src/icons/EuroIcon.svg +10 -0
- package/src/icons/GridIcon.svg +7 -0
- package/src/icons/LoupeIcon.svg +9 -0
- package/src/icons/NewDocIcon.svg +250 -0
- package/src/icons/OkIcon.svg +6 -0
- package/src/icons/PassSendIcon.svg +237 -0
- package/src/icons/PercentageSquareIcon.svg +16 -0
- package/src/icons/PlayMarketIcon.svg +6 -0
- package/src/icons/ProfileIcon.svg +16 -0
- package/src/icons/SignDocsIcon.svg +287 -0
- package/src/icons/TelegramIcon.svg +6 -0
- package/{dist/Icons/VKIcon.js → src/icons/VKIcon.svg} +8 -6
- package/src/setup-fixture.ts +15 -7
- package/src/types.ts +0 -8
- package/src/ui-kit/ArrowButton.tsx +34 -0
- package/src/ui-kit/Button.fixture.tsx +1 -1
- package/src/ui-kit/Button.tsx +1 -1
- package/src/ui-kit/Icon.tsx +46 -0
- package/src/ui-kit/IconButton.tsx +5 -5
- package/src/ui-kit/SearchBar.tsx +26 -19
- package/src/ui-kit/Title.tsx +25 -0
- package/dist/Icons/ActualBalanceIcon.d.ts +0 -1
- package/dist/Icons/ActualBalanceIcon.js +0 -12
- package/dist/Icons/ActualBalanceIcon.js.map +0 -1
- package/dist/Icons/AppleIcon.d.ts +0 -1
- package/dist/Icons/AppleIcon.js +0 -6
- package/dist/Icons/AppleIcon.js.map +0 -1
- package/dist/Icons/CalendarIcon.d.ts +0 -1
- package/dist/Icons/CalendarIcon.js +0 -6
- package/dist/Icons/CalendarIcon.js.map +0 -1
- package/dist/Icons/ClockIcon.d.ts +0 -1
- package/dist/Icons/ClockIcon.js +0 -6
- package/dist/Icons/ClockIcon.js.map +0 -1
- package/dist/Icons/ComfortableCompIcon.d.ts +0 -1
- package/dist/Icons/ComfortableCompIcon.js +0 -8
- package/dist/Icons/ComfortableCompIcon.js.map +0 -1
- package/dist/Icons/DollarIcon.d.ts +0 -1
- package/dist/Icons/DollarIcon.js +0 -6
- package/dist/Icons/DollarIcon.js.map +0 -1
- package/dist/Icons/EmptyWalletIcon.d.ts +0 -1
- package/dist/Icons/EmptyWalletIcon.js +0 -6
- package/dist/Icons/EmptyWalletIcon.js.map +0 -1
- package/dist/Icons/EuroIcon.d.ts +0 -1
- package/dist/Icons/EuroIcon.js +0 -6
- package/dist/Icons/EuroIcon.js.map +0 -1
- package/dist/Icons/GridIcon.d.ts +0 -1
- package/dist/Icons/GridIcon.js +0 -6
- package/dist/Icons/GridIcon.js.map +0 -1
- package/dist/Icons/LoupeIcon.d.ts +0 -1
- package/dist/Icons/LoupeIcon.js +0 -6
- package/dist/Icons/LoupeIcon.js.map +0 -1
- package/dist/Icons/NewDocIcon.d.ts +0 -1
- package/dist/Icons/NewDocIcon.js +0 -8
- package/dist/Icons/NewDocIcon.js.map +0 -1
- package/dist/Icons/OkIcon.d.ts +0 -1
- package/dist/Icons/OkIcon.js +0 -6
- package/dist/Icons/OkIcon.js.map +0 -1
- package/dist/Icons/PassSendIcon.d.ts +0 -1
- package/dist/Icons/PassSendIcon.js +0 -12
- package/dist/Icons/PassSendIcon.js.map +0 -1
- package/dist/Icons/PercentageSquareIcon.d.ts +0 -1
- package/dist/Icons/PercentageSquareIcon.js +0 -6
- package/dist/Icons/PercentageSquareIcon.js.map +0 -1
- package/dist/Icons/PlayMarket.d.ts +0 -1
- package/dist/Icons/PlayMarket.js +0 -6
- package/dist/Icons/PlayMarket.js.map +0 -1
- package/dist/Icons/ProfileIcon.d.ts +0 -1
- package/dist/Icons/ProfileIcon.js +0 -6
- package/dist/Icons/ProfileIcon.js.map +0 -1
- package/dist/Icons/SignDocsIcon.d.ts +0 -1
- package/dist/Icons/SignDocsIcon.js +0 -10
- package/dist/Icons/SignDocsIcon.js.map +0 -1
- package/dist/Icons/TelegramIcon.d.ts +0 -1
- package/dist/Icons/TelegramIcon.js +0 -6
- package/dist/Icons/TelegramIcon.js.map +0 -1
- package/dist/Icons/VKIcon.d.ts +0 -1
- package/dist/Icons/VKIcon.js.map +0 -1
- package/dist/Icons/index.d.ts +0 -19
- package/dist/Icons/index.js +0 -41
- package/dist/Icons/index.js.map +0 -1
- package/lib/Icons/ActualBalanceIcon.d.ts +0 -1
- package/lib/Icons/ActualBalanceIcon.js +0 -9
- package/lib/Icons/ActualBalanceIcon.js.map +0 -1
- package/lib/Icons/AppleIcon.d.ts +0 -1
- package/lib/Icons/AppleIcon.js +0 -3
- package/lib/Icons/AppleIcon.js.map +0 -1
- package/lib/Icons/CalendarIcon.d.ts +0 -1
- package/lib/Icons/CalendarIcon.js +0 -3
- package/lib/Icons/CalendarIcon.js.map +0 -1
- package/lib/Icons/ClockIcon.d.ts +0 -1
- package/lib/Icons/ClockIcon.js +0 -3
- package/lib/Icons/ClockIcon.js.map +0 -1
- package/lib/Icons/ComfortableCompIcon.d.ts +0 -1
- package/lib/Icons/ComfortableCompIcon.js +0 -5
- package/lib/Icons/ComfortableCompIcon.js.map +0 -1
- package/lib/Icons/DollarIcon.d.ts +0 -1
- package/lib/Icons/DollarIcon.js +0 -3
- package/lib/Icons/DollarIcon.js.map +0 -1
- package/lib/Icons/EmptyWalletIcon.d.ts +0 -1
- package/lib/Icons/EmptyWalletIcon.js +0 -3
- package/lib/Icons/EmptyWalletIcon.js.map +0 -1
- package/lib/Icons/EuroIcon.d.ts +0 -1
- package/lib/Icons/EuroIcon.js +0 -3
- package/lib/Icons/EuroIcon.js.map +0 -1
- package/lib/Icons/GridIcon.d.ts +0 -1
- package/lib/Icons/GridIcon.js +0 -3
- package/lib/Icons/GridIcon.js.map +0 -1
- package/lib/Icons/LoupeIcon.d.ts +0 -1
- package/lib/Icons/LoupeIcon.js +0 -3
- package/lib/Icons/LoupeIcon.js.map +0 -1
- package/lib/Icons/NewDocIcon.d.ts +0 -1
- package/lib/Icons/NewDocIcon.js +0 -5
- package/lib/Icons/NewDocIcon.js.map +0 -1
- package/lib/Icons/OkIcon.d.ts +0 -1
- package/lib/Icons/OkIcon.js +0 -3
- package/lib/Icons/OkIcon.js.map +0 -1
- package/lib/Icons/PassSendIcon.d.ts +0 -1
- package/lib/Icons/PassSendIcon.js +0 -9
- package/lib/Icons/PassSendIcon.js.map +0 -1
- package/lib/Icons/PercentageSquareIcon.d.ts +0 -1
- package/lib/Icons/PercentageSquareIcon.js +0 -3
- package/lib/Icons/PercentageSquareIcon.js.map +0 -1
- package/lib/Icons/PlayMarket.d.ts +0 -1
- package/lib/Icons/PlayMarket.js +0 -3
- package/lib/Icons/PlayMarket.js.map +0 -1
- package/lib/Icons/ProfileIcon.d.ts +0 -1
- package/lib/Icons/ProfileIcon.js +0 -3
- package/lib/Icons/ProfileIcon.js.map +0 -1
- package/lib/Icons/SignDocsIcon.d.ts +0 -1
- package/lib/Icons/SignDocsIcon.js +0 -7
- package/lib/Icons/SignDocsIcon.js.map +0 -1
- package/lib/Icons/TelegramIcon.d.ts +0 -1
- package/lib/Icons/TelegramIcon.js +0 -3
- package/lib/Icons/TelegramIcon.js.map +0 -1
- package/lib/Icons/VKIcon.d.ts +0 -1
- package/lib/Icons/VKIcon.js +0 -3
- package/lib/Icons/VKIcon.js.map +0 -1
- package/lib/Icons/index.d.ts +0 -19
- package/lib/Icons/index.js +0 -20
- package/lib/Icons/index.js.map +0 -1
- package/src/Icons/ActualBalanceIcon.tsx +0 -202
- package/src/Icons/AppleIcon.tsx +0 -15
- package/src/Icons/CalendarIcon.tsx +0 -19
- package/src/Icons/ClockIcon.tsx +0 -212
- package/src/Icons/ComfortableCompIcon.tsx +0 -379
- package/src/Icons/DollarIcon.tsx +0 -12
- package/src/Icons/EmptyWalletIcon.tsx +0 -25
- package/src/Icons/EuroIcon.tsx +0 -12
- package/src/Icons/GridIcon.tsx +0 -9
- package/src/Icons/LoupeIcon.tsx +0 -11
- package/src/Icons/NewDocIcon.tsx +0 -262
- package/src/Icons/OkIcon.tsx +0 -8
- package/src/Icons/PassSendIcon.tsx +0 -250
- package/src/Icons/PercentageSquareIcon.tsx +0 -18
- package/src/Icons/PlayMarket.tsx +0 -8
- package/src/Icons/ProfileIcon.tsx +0 -18
- package/src/Icons/SignDocsIcon.tsx +0 -295
- package/src/Icons/TelegramIcon.tsx +0 -8
- package/src/Icons/VKIcon.tsx +0 -10
- package/src/Icons/index.ts +0 -19
package/src/Gallery.tsx
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { Img } from './Img';
|
|
3
|
+
import { Picture, UniBlockProps } from './types';
|
|
4
|
+
import { ArrowButton } from './ui-kit/ArrowButton';
|
|
5
|
+
import { BlockItem } from './ui-kit/BlockItem';
|
|
6
|
+
import { Button } from './ui-kit/Button';
|
|
7
|
+
import { Title } from './ui-kit/Title';
|
|
8
|
+
|
|
9
|
+
export interface GalleryCard {
|
|
10
|
+
title?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
image?: Picture;
|
|
13
|
+
href?: string;
|
|
14
|
+
items?: string[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface GalleryContent {
|
|
18
|
+
title?: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
cards?: GalleryCard[];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface GalleryProps extends GalleryContent, UniBlockProps {}
|
|
24
|
+
|
|
25
|
+
const CARD_WIDTH = 384;
|
|
26
|
+
const GALLERY_LENGTH_FOR_SCROLL = 3;
|
|
27
|
+
|
|
28
|
+
export const Gallery = JSX<GalleryProps>(
|
|
29
|
+
({ title, description, context, cards = [], className }) => {
|
|
30
|
+
const [activeCardIndex, setActiveCardIndex] = context.useState(0);
|
|
31
|
+
|
|
32
|
+
function handleNextClick() {
|
|
33
|
+
setActiveCardIndex(activeCardIndex + 1);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function handlePrevClick() {
|
|
37
|
+
setActiveCardIndex(activeCardIndex - 1);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const isGalleryScrollAvailable = cards?.length > GALLERY_LENGTH_FOR_SCROLL;
|
|
41
|
+
|
|
42
|
+
const showNextButton =
|
|
43
|
+
isGalleryScrollAvailable && cards?.length - activeCardIndex > GALLERY_LENGTH_FOR_SCROLL;
|
|
44
|
+
|
|
45
|
+
const showPrevButton = isGalleryScrollAvailable && activeCardIndex > 0;
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<section
|
|
49
|
+
className={`relative font-sans text-primary-text bg-white p-12 overflow-hidden ${className}`}
|
|
50
|
+
>
|
|
51
|
+
<div className="flex flex-col items-center mb-8">
|
|
52
|
+
<Title className="font-medium m-0 text-centers">{title}</Title>
|
|
53
|
+
{description ? (
|
|
54
|
+
<div className="font-normal text-base max-w-[600px] mt-3">{description}</div>
|
|
55
|
+
) : null}
|
|
56
|
+
</div>
|
|
57
|
+
<div
|
|
58
|
+
// Need to place all cards at the center if count of cards less than 4
|
|
59
|
+
className={`flex {${
|
|
60
|
+
cards?.length <= GALLERY_LENGTH_FOR_SCROLL ? 'justify-center' : ''
|
|
61
|
+
} duration-1000`}
|
|
62
|
+
// All cards has same width
|
|
63
|
+
style={{ transform: `translateX(-${activeCardIndex * CARD_WIDTH}px)` }}
|
|
64
|
+
role="list"
|
|
65
|
+
>
|
|
66
|
+
{cards?.map(renderCard)}
|
|
67
|
+
</div>
|
|
68
|
+
{showPrevButton && (
|
|
69
|
+
<ArrowButton className="absolute top-1/2 left-8" onClick={handlePrevClick} />
|
|
70
|
+
)}
|
|
71
|
+
{showNextButton && (
|
|
72
|
+
<ArrowButton
|
|
73
|
+
className="absolute top-1/2 right-1 z-20 rotate-180"
|
|
74
|
+
onClick={handleNextClick}
|
|
75
|
+
/>
|
|
76
|
+
)}
|
|
77
|
+
<div
|
|
78
|
+
className="absoluted top-0 right-0 bottom-0 w-[84px]"
|
|
79
|
+
style={{
|
|
80
|
+
background: 'linear-gradient(270deg, #FFFFFF 34.89%, rgba(255, 255, 255, 0) 92.52%)',
|
|
81
|
+
}}
|
|
82
|
+
></div>
|
|
83
|
+
</section>
|
|
84
|
+
);
|
|
85
|
+
},
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
function renderCard(card: GalleryCard, key: number) {
|
|
89
|
+
return (
|
|
90
|
+
<div
|
|
91
|
+
className="border-solid border rounded-md border-main-divider p-7 mx-2 flex flex-col justify-between items-stretch min-w-[308px] w-[308px] w-full"
|
|
92
|
+
role="listitem"
|
|
93
|
+
key={key}
|
|
94
|
+
>
|
|
95
|
+
<div>
|
|
96
|
+
{card.image?.src ? (
|
|
97
|
+
<div className="flex justify-center">
|
|
98
|
+
<Img className="mb-6" image={card.image} />
|
|
99
|
+
</div>
|
|
100
|
+
) : null}
|
|
101
|
+
{card.title ? (
|
|
102
|
+
<h4
|
|
103
|
+
className={`font-medium text-xl m-0 ${
|
|
104
|
+
!card.description && !card.items?.length ? 'text-center' : ''
|
|
105
|
+
}`}
|
|
106
|
+
>
|
|
107
|
+
{card.title}
|
|
108
|
+
</h4>
|
|
109
|
+
) : null}
|
|
110
|
+
{card.description ? (
|
|
111
|
+
<div className="font-normal text-sm text-secondary-text mt-2">{card.description}</div>
|
|
112
|
+
) : null}
|
|
113
|
+
{card.items?.length ? renderItems(card.items) : null}
|
|
114
|
+
</div>
|
|
115
|
+
{card.href ? (
|
|
116
|
+
<Button className="mt-6" text="Подробнее" version="secondary" href={card.href} />
|
|
117
|
+
) : null}
|
|
118
|
+
</div>
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function renderItems(items: string[] = []) {
|
|
123
|
+
return (
|
|
124
|
+
<section className="max-w-[308px] mt-2" role="list">
|
|
125
|
+
{items.map((item, i) => (
|
|
126
|
+
<BlockItem key={String(i)}>
|
|
127
|
+
<span className="text-sm text-secondary-text">{item}</span>
|
|
128
|
+
</BlockItem>
|
|
129
|
+
))}
|
|
130
|
+
</section>
|
|
131
|
+
);
|
|
132
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import {
|
|
2
|
+
import type { UniBlockProps } from '../types';
|
|
3
|
+
import { Icon } from '../ui-kit/Icon';
|
|
3
4
|
import { TopItem } from '../ui-kit/TopItem';
|
|
4
5
|
import { HeaderSecondaryMenuButton } from './HeaderSecondaryMenuButton';
|
|
5
|
-
import type { UniBlockProps } from '../types';
|
|
6
6
|
|
|
7
7
|
interface HeaderSecondaryMenuContent {
|
|
8
8
|
defaultLocation?: string;
|
|
@@ -36,19 +36,19 @@ export const HeaderSecondaryMenu = JSX<HeaderSecondaryMenuProps>(
|
|
|
36
36
|
className="mr-5 text-primary-text hover:text-primary-main"
|
|
37
37
|
ariaLabel="Поиск по сайту"
|
|
38
38
|
>
|
|
39
|
-
|
|
39
|
+
<Icon name="LoupeIcon" aria-hidden="true" />
|
|
40
40
|
</HeaderSecondaryMenuButton>
|
|
41
41
|
<HeaderSecondaryMenuButton
|
|
42
42
|
className="mr-5 text-primary-text hover:text-primary-main"
|
|
43
43
|
ariaLabel="Профиль"
|
|
44
44
|
>
|
|
45
|
-
|
|
45
|
+
<Icon name="ProfileIcon" aria-hidden="true" />
|
|
46
46
|
</HeaderSecondaryMenuButton>
|
|
47
47
|
<HeaderSecondaryMenuButton
|
|
48
48
|
className="mr-5 text-secondary-light hover:text-secondary-active min-w-[32px] min-h-[32px]"
|
|
49
49
|
ariaLabel="Дополнительные ссылки"
|
|
50
50
|
>
|
|
51
|
-
|
|
51
|
+
<Icon name="GridIcon" aria-hidden="true" />
|
|
52
52
|
</HeaderSecondaryMenuButton>
|
|
53
53
|
</div>
|
|
54
54
|
);
|
|
@@ -12,6 +12,22 @@ export default {
|
|
|
12
12
|
href: 'https://rshbnaturaldbo.onelink.me/qhkF/f182074f?af_qr=true',
|
|
13
13
|
src: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKQAAACkCAYAAAAZtYVBAAAAAXNSR0IArs4c6QAACp1JREFUeF7tndtuKzkMBJ3//+gssG8aA1MoNDXWcTqvlCiqWSI1vuXn9/f399W/KnCIAj8F8pBMNIz/FSiQBeEoBQrkUeloMAWyDBylQIE8Kh0NpkCWgaMUKJBHpaPBFMgycJQCBfKodDSYAlkGjlKgQB6VjgZTIMvAUQoUyKPS0WAKZBk4SoECeVQ6GkwM5M/Pz6Mq2o9vUnxXf9fxtB75T8U5Pb7r/kgv0qNAXj6fXCAJmXt7gQT9qIKdXoFOj68VUn7jokCefaW6Aj3estOS/Rbg5Y5q/adAUgOjeNIrQOrfrk/7nc5PgbwoQC2REpQCkyaYgCM77Y/s0/5bIeGhhhJSINcrAelBehbIAkmM3Nr/uQpJdzh6SqMNk386sbvnU7bpymDt9gpA+0/zQ/t//A65e8Pkv0Det1TSr0DKF6pJ0AJZIJdDRcCkJ5D8F8gC+VEgCcD0jkV3Ojpg9k5l47Xj6UDTfuiOb/e7/Sl794ZTQWi+tVMCbYIsYHb87vzY/RZIeCeoQK5IUYewHerrn7KtIBY4SkgrZPbrjl9XIalFpEClAFNLTeOn/ZF9en3y9/UVkgSwCaHx1l4g7zPUCgmfeLfAUQUtkAVyUYAAozsgAUf2AvlhIKmFkp0STPbdAFD89gDYA2HH24c+2p/VH/2lvzE+HRABRAkmwadfdyOBKd7p+bQe6UPx2PxofwXyXjJKMAn+9Hxar0BSxsBOFZjsdKIpPErwafMp3j8HJCUotVvBCdi/Zk/1p/kp8OMv+1DAqb1Aru+E2AOV6k/zC+Twe9HfDjwBldoLZIFcGKIDlQJH8z8OJAW4225fxqF4bELjBAz/NlIaD+mz2x7fIXcHSP4L5KpQgSRiNtsLZIHcjJhzXyAL5KLA0y872JZEwNKdMbVfj1ca/3Q87vi/XjZ+6z++QxbI+9cFC6RDskCG3wOnilUgC+TtlYIAsRW/QDrgaPR4haQFUyCu8y1AFJ+9I02vT/GRfqQPzZ++c9v9FMiLYgXy/hd3qSNY/d4O0PTnIe2JSDc4XaGsoNPrp/q1QoZvfRVIi6B73TFtwbbF2wM9XiGtnFRR6ISnG0792wQ/rQ+tZwuAzRetT/b4DkkLTANQIFdF6YCkFa5AXhTcLYj1TwCkB2Y6ngIJJTMVPE34dMWmhD/dQWi9tmxZ8aaBpYpGQNF8m2B7IGh9AjDdH/kfLxDpyz4UcJoA2jABbBNKgNkEPx0/5cPuz/qj8WQ/7qGGAEsBJ0Fswmh8gSTFLw9prZCrIARYK+S9Xg6/99HbKyRVvNROFdMKRBXN+rPjSQ/yR/OnrzDTehXIS4anBSaA6EDZeAokKG4FopZJCbIVgFqwBSodT3qRf5pv9UnzQfG+Hcjdd0grUCqAFbxA3iOT5uM4IKklWSAIOKqgNh4r6PR+yJ898E/7s/ptv0NaAAioAjn72z62Ak7r/3jLLpD3/yaDEvx0RZuuuK2Qly9tkSAWCPJHANkDSv6mAZr2Z/Xa3rLtBne3EIqHgLFXCtqPTdi0P1qf1iM9yP/jLZsAmLanFaVArgoUyPB70gXS1qQ/9rLPdAWkE1sg/ziQ9qFg+s4xK//rRQfItnTyR/rRASQ7HVDaj52f5iN+qCFBn95QLAj8Ii8lkAAhO+k1DTjth+JJ9R5/qCmQ6xfrCTiyEwAFEo5AgSyQk1VyvGVTBZi2WzGowlALozsw+Se7XZ8KAulN+qX7Jf/bWzYJMG3XGx6+I6YApQkvkJcM0InfbS+Q2Y9DkX7pgSH/rZCtkIqRfw5I27JIDaqo0+uRv91PvdZ/Oj6db69clO/xCkkJpROWzrcAk0DpnYwSRuvb+XZ8gQw/DkZAF0j3o/sFskBSUVzstuLZ8QUSPr2jsvXi/5NCLZcSQvHYivz0eNof6WMBpw5Gen78DkmC0AZIAOuf/D19x00BLpAXBUhQCwwJTMCkgJN/Apr0mPZPepH+rZBEzMVuASD35G8aGFovBbhADldIShgBQgBau60YBATFn+4/jTfVx84//g6ZJiQVhICilkfzC+R9huJP+1iBKaEF8v573NN6pwfY5ovWK5CgUNoCKWH2zlggIWFU8WwL2y34bsCwAsA/mrLxEfCpnrvjGb9DFkhCcLWTXrsBoIps7WnBKZDhO0e2IlGFooRagOl4WOB2H5ACWSAXBgg4stOBogPyOJBUUT5dAaxglADaT7qenU/6k7+0opL/Ahn+99oC6X6fskDCVxSmK5htaTZB6fhWyIuCJAgBQvPpoWE3MLv9F0ipgL1jkHtKMNmppdL6dj8UDx0oOpAU7/R+d69H/uN3amwCKSCbYEooAZFWWBsvrUf6kD3dL/lPDwD5L5AXhewBK5DuvfcCOfydnhTYVsh7JLdXyDQB1IIsINRy6ApAJ5zipfm0vq3I5I/iIb3sfBpfIMN3bqYTRgAVSECaKlQrJNWE1V4gwx5TIFegQjnfflKaKjDpT4C748JfQ7b+3gpW+s83SRAbIAlILYvWI2BoP7vtaUeh/ZOd9KH47PwCCU/du4Ej/5RwAiq1W6Dsfii+xx9qMKDhT1RTyyMAqCJP2yke0i+1F8iLgm3Z7iEnBdAeWDowFujxlj0tiPWXtgyab+02fgLCrm+BSP3TfKtH3LLtgtPjU0FovrWn+9t9BbAVzu7fHohWSLgipEAUyOy97VZI+YFeArZAfhhIeghJE0R3LNuCpsdTfLblpXrRgUnttN80/rhCFsg1BdMJtwlO16f5BfKiAF2aqSK1QrovaVHBoXzYA9UKGf7fGqoYdEAo4TahVOFSO+3Xxjv+lE2CxwFufuigBKXxpxXEAmvXS/1P53+8QlpBKOG0YWunE24TRPGneth47Hqpf9Kf9GmFhDupTRAJbgGhO+70ena/1FHi/Z728TNKiBWEBCd/BADZ4wTJX9qw65E+tqPY9R+vkLs3TC1j2j4NIOlDCab5FC/Z7YGleGm97XdIKxgJ8Gk7CWoTQvqQP5pP8ZKd9KYKSv5bIeFLXTYBaUIIqAIpkbYtkdwTEJ+22/hpfIFcFfrzLXsaGDqgdr3pA2gfGtN4aX5bdvhLFtSiC+Rhn/ahE00nhuZP2yke21ILZIFcmLLAFsifW/2sPvQQhv52vzBOFSZtgeQ/Fki+l273Q+MxgfKFc7teWvEp/q+/Q1rBSTBKiD0QdryNj8ZbfWj/dj0a/3VP2VZwFKgVMmrppG8rpFSIKoSteHY8hUv+aD5daWj/5N/at1dIG9DbiQk/QEuC03o2fvtQRUCRv7Qj0Pqpf6tfgbwoZhNECaMKQ+sVSIk0CS7dvQ23/u34Vsj1ZR/Kl+045O/xO6QNiAAhQQqke2GaKjR1gDS/24GcDpAEIQBTuz0gtJ7Vh/yR3cZP8dn1yF+BlB8/swmdThj5I7uNnwCy65G/AlkgFwboCjQNNAE6/pRNC6Z2euqcttuETFcQ8kd2Gz/lx65H/sYrpF2w46vAnQJxhay8VWBSgQI5qWZ9xQoUyFjCOphUoEBOqllfsQIFMpawDiYVKJCTatZXrECBjCWsg0kFCuSkmvUVK1AgYwnrYFKBAjmpZn3FChTIWMI6mFSgQE6qWV+xAgUylrAOJhUokJNq1lesQIGMJayDSQX+AzMMbwXyi0XeAAAAAElFTkSuQmCC',
|
|
14
14
|
}}
|
|
15
|
+
buttons={[
|
|
16
|
+
{
|
|
17
|
+
aboveText: 'Загрузите в',
|
|
18
|
+
text: 'App Store',
|
|
19
|
+
icon: 'AppleIcon',
|
|
20
|
+
href: '#',
|
|
21
|
+
version: 'secondary',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
aboveText: 'Доступно в',
|
|
25
|
+
text: 'Google Play',
|
|
26
|
+
icon: 'PlayMarketIcon',
|
|
27
|
+
href: '#',
|
|
28
|
+
version: 'secondary',
|
|
29
|
+
},
|
|
30
|
+
]}
|
|
15
31
|
/>
|
|
16
32
|
</div>
|
|
17
33
|
),
|
package/src/MobileBlocks.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { ProductBlock } from './ProductBlock';
|
|
|
8
8
|
import { ProductGallery } from './ProductGallery';
|
|
9
9
|
import { ProductTile } from './ProductTile';
|
|
10
10
|
import { StepsBlock } from './StepsBlock';
|
|
11
|
+
import { TextBlock } from './TextBlock';
|
|
11
12
|
import { Tile } from './Tile';
|
|
12
13
|
|
|
13
14
|
export const MobileBlocks = {
|
|
@@ -18,6 +19,7 @@ export const MobileBlocks = {
|
|
|
18
19
|
ProductTile,
|
|
19
20
|
ProductBlock,
|
|
20
21
|
StepsBlock,
|
|
22
|
+
TextBlock,
|
|
21
23
|
BenefitsBlock,
|
|
22
24
|
ProductGallery,
|
|
23
25
|
ExchangeRateTile,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import { EmptyWalletIcon, PercentageSquareIcon, CalendarIcon } from './Icons/index';
|
|
3
|
-
import type { UniBlockProps, Benefit } from './types';
|
|
4
|
-
import { BaseTile } from './BaseTile';
|
|
5
2
|
import type { BaseTileContent } from './BaseTile';
|
|
3
|
+
import { BaseTile } from './BaseTile';
|
|
4
|
+
import type { Benefit } from './BenefitsBlock';
|
|
6
5
|
import { Img } from './Img';
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
import type { UniBlockProps } from './types';
|
|
7
|
+
import { Icon } from './ui-kit/Icon';
|
|
8
|
+
import { Title } from './ui-kit/Title';
|
|
9
9
|
|
|
10
10
|
export interface ProductBlockInnerContent extends BaseTileContent {
|
|
11
11
|
benefits?: Benefit[];
|
|
@@ -19,9 +19,9 @@ export const ProductBlockInner = JSX<ProductBlockInnerProps>(
|
|
|
19
19
|
<div className={`flex grow justify-between items-stretch ${className || ''}`}>
|
|
20
20
|
<div className={'flex flex-col'}>
|
|
21
21
|
{title && (
|
|
22
|
-
<
|
|
22
|
+
<Title size="XL" className="font-medium m-0 mb-4 whitespace-pre-wrap max-w-[600px]">
|
|
23
23
|
{title}
|
|
24
|
-
</
|
|
24
|
+
</Title>
|
|
25
25
|
)}
|
|
26
26
|
<BaseTile context={context} description={description} items={items} buttons={buttons}>
|
|
27
27
|
{benefits?.length ? (
|
|
@@ -39,9 +39,12 @@ function renderBenefit(benefit: Benefit, i: number) {
|
|
|
39
39
|
return (
|
|
40
40
|
<div key={String(i)} className="flex gap-4 items-center">
|
|
41
41
|
{benefit.icon && (
|
|
42
|
-
<
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
<Icon
|
|
43
|
+
className="w-[50px] h-[50px] min-w-[50px] min-h-[50px] bg-main rounded-full p-[10px] box-border"
|
|
44
|
+
name={benefit.icon}
|
|
45
|
+
width="24"
|
|
46
|
+
height="24"
|
|
47
|
+
/>
|
|
45
48
|
)}
|
|
46
49
|
<div className="flex gap-1 flex-col h-full">
|
|
47
50
|
<h4 className="font-medium text-xl m-0">{benefit.label}</h4>
|
package/src/ProductTile.tsx
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import type { UniBlockProps, Benefit } from './types';
|
|
3
|
-
import { BlockVersion } from './types';
|
|
4
|
-
import { Tile } from './Tile';
|
|
5
2
|
import type { BaseTileContent } from './BaseTile';
|
|
3
|
+
import type { Benefit } from './BenefitsBlock';
|
|
4
|
+
import { Tile } from './Tile';
|
|
5
|
+
import type { UniBlockProps } from './types';
|
|
6
|
+
import { BlockVersion } from './types';
|
|
6
7
|
|
|
7
8
|
export interface ProductTileContent extends BaseTileContent {
|
|
8
9
|
benefits?: Benefit[];
|
package/src/ProjectSettings.ts
CHANGED
|
@@ -5,6 +5,7 @@ export interface ProjectSettings {
|
|
|
5
5
|
FORCED_DRAFT_FLOW: boolean;
|
|
6
6
|
ENABLE_ASSIST?: boolean;
|
|
7
7
|
SITEMAP?: string;
|
|
8
|
+
CDN?: string; // Should ends with "/"
|
|
8
9
|
}
|
|
9
10
|
|
|
10
11
|
export const projectSettings = new (class implements ProjectSettings {
|
|
@@ -35,4 +36,7 @@ export const projectSettings = new (class implements ProjectSettings {
|
|
|
35
36
|
get SITEMAP() {
|
|
36
37
|
return this._.SITEMAP;
|
|
37
38
|
}
|
|
39
|
+
get CDN() {
|
|
40
|
+
return this._.CDN;
|
|
41
|
+
}
|
|
38
42
|
})();
|
package/src/StepsBlock.tsx
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import { NewDocIcon, PassSendIcon, ActualBalanceIcon } from './Icons/index';
|
|
3
2
|
import type { UniBlockProps } from './types';
|
|
3
|
+
import { Icon, IconName } from './ui-kit/Icon';
|
|
4
|
+
import { Title } from './ui-kit/Title';
|
|
4
5
|
import { joinList } from './utils/joinList';
|
|
5
6
|
|
|
6
|
-
const ICONS = { NewDocIcon, PassSendIcon, ActualBalanceIcon };
|
|
7
7
|
export interface Step {
|
|
8
8
|
label: string;
|
|
9
9
|
description?: string;
|
|
10
|
-
icon?:
|
|
10
|
+
icon?: IconName;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export interface StepsBlockContent {
|
|
@@ -24,7 +24,7 @@ export const StepsBlock = JSX<StepsBlockProps>(({ className, title, steps }) =>
|
|
|
24
24
|
className || ''
|
|
25
25
|
}`}
|
|
26
26
|
>
|
|
27
|
-
<
|
|
27
|
+
<Title className="font-medium m-0 max-w-[47rem] text-center">{title}</Title>
|
|
28
28
|
{steps?.length ? (
|
|
29
29
|
<div>
|
|
30
30
|
<div className="flex mt-9 items-center px-[88px]">
|
|
@@ -43,7 +43,7 @@ const renderStepIcon = (step: Step, i: number) => {
|
|
|
43
43
|
return (
|
|
44
44
|
<div key={String(i)} className="flex flex-col items-center text-center relative">
|
|
45
45
|
<div className="h-[100px] w-[100px] min-w-[100px] min-h-[100px] bg-secondary-light rounded-full p-[26px] box-border z-10">
|
|
46
|
-
{(step.icon &&
|
|
46
|
+
{(step.icon && <Icon name={step.icon} width="48" height="48" />) || (
|
|
47
47
|
<span className="font-medium text-title-sm text-secondary-text">{i + 1}</span>
|
|
48
48
|
)}
|
|
49
49
|
</div>
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { context } from './setup-fixture';
|
|
2
|
+
import { TextBlock } from './TextBlock';
|
|
3
|
+
import { Picture } from './types';
|
|
4
|
+
|
|
5
|
+
const image: Picture = {
|
|
6
|
+
src: 'bank-card.png',
|
|
7
|
+
format: 'webp',
|
|
8
|
+
size: {
|
|
9
|
+
width: 48,
|
|
10
|
+
height: 48,
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default (
|
|
15
|
+
<div className="font-sans overflow-hidden">
|
|
16
|
+
<div>
|
|
17
|
+
<p>Private clients</p>
|
|
18
|
+
<div className="flex flex-col gap-6" data-theme="pc">
|
|
19
|
+
<TextBlock
|
|
20
|
+
context={context}
|
|
21
|
+
title="Все карты Россельхозбанка работают"
|
|
22
|
+
description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
|
|
23
|
+
blockVersion="primary"
|
|
24
|
+
iconVersion="small"
|
|
25
|
+
/>
|
|
26
|
+
<TextBlock
|
|
27
|
+
context={context}
|
|
28
|
+
title="Все карты Россельхозбанка работают"
|
|
29
|
+
description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
|
|
30
|
+
blockVersion="primary"
|
|
31
|
+
iconVersion="big"
|
|
32
|
+
image={image}
|
|
33
|
+
/>
|
|
34
|
+
<TextBlock
|
|
35
|
+
context={context}
|
|
36
|
+
title="Все карты Россельхозбанка работают"
|
|
37
|
+
description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
|
|
38
|
+
blockVersion="primary"
|
|
39
|
+
iconVersion="none"
|
|
40
|
+
/>
|
|
41
|
+
<TextBlock
|
|
42
|
+
context={context}
|
|
43
|
+
description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
|
|
44
|
+
blockVersion="primary"
|
|
45
|
+
iconVersion="small"
|
|
46
|
+
/>
|
|
47
|
+
<TextBlock
|
|
48
|
+
context={context}
|
|
49
|
+
title="Все карты Россельхозбанка работают"
|
|
50
|
+
description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
|
|
51
|
+
blockVersion="secondary"
|
|
52
|
+
iconVersion="small"
|
|
53
|
+
/>
|
|
54
|
+
<TextBlock
|
|
55
|
+
context={context}
|
|
56
|
+
title="Все карты Россельхозбанка работают"
|
|
57
|
+
description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
|
|
58
|
+
blockVersion="secondary-light"
|
|
59
|
+
iconVersion="small"
|
|
60
|
+
/>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
<div>
|
|
64
|
+
<p>Business clients</p>
|
|
65
|
+
<div className="flex flex-col gap-6" data-theme="bc">
|
|
66
|
+
<TextBlock
|
|
67
|
+
context={context}
|
|
68
|
+
title="Все карты Россельхозбанка работают"
|
|
69
|
+
description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
|
|
70
|
+
blockVersion="primary"
|
|
71
|
+
iconVersion="small"
|
|
72
|
+
/>
|
|
73
|
+
<TextBlock
|
|
74
|
+
context={context}
|
|
75
|
+
title="Все карты Россельхозбанка работают"
|
|
76
|
+
description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
|
|
77
|
+
blockVersion="secondary"
|
|
78
|
+
iconVersion="small"
|
|
79
|
+
/>
|
|
80
|
+
<TextBlock
|
|
81
|
+
context={context}
|
|
82
|
+
title="Все карты Россельхозбанка работают"
|
|
83
|
+
description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
|
|
84
|
+
blockVersion="secondary-light"
|
|
85
|
+
iconVersion="small"
|
|
86
|
+
/>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
<div>
|
|
90
|
+
<p>Ecosystem own</p>
|
|
91
|
+
<div className="flex flex-col gap-6" data-theme="eo">
|
|
92
|
+
<TextBlock
|
|
93
|
+
context={context}
|
|
94
|
+
title="Все карты Россельхозбанка работают"
|
|
95
|
+
description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
|
|
96
|
+
blockVersion="primary"
|
|
97
|
+
iconVersion="small"
|
|
98
|
+
/>
|
|
99
|
+
<TextBlock
|
|
100
|
+
context={context}
|
|
101
|
+
title="Все карты Россельхозбанка работают"
|
|
102
|
+
description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
|
|
103
|
+
blockVersion="secondary"
|
|
104
|
+
iconVersion="small"
|
|
105
|
+
/>
|
|
106
|
+
<TextBlock
|
|
107
|
+
context={context}
|
|
108
|
+
title="Все карты Россельхозбанка работают"
|
|
109
|
+
description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
|
|
110
|
+
blockVersion="secondary-light"
|
|
111
|
+
iconVersion="small"
|
|
112
|
+
/>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
);
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import type { UniBlockProps, Picture } from './types';
|
|
3
|
+
import { Img } from './Img';
|
|
4
|
+
|
|
5
|
+
type TextBlockVersion = 'primary' | 'secondary' | 'secondary-light';
|
|
6
|
+
type TextBlockIconVersion = 'none' | 'small' | 'big';
|
|
7
|
+
|
|
8
|
+
export interface TextBlockContent {
|
|
9
|
+
title?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
blockVersion?: TextBlockVersion;
|
|
12
|
+
iconVersion?: TextBlockIconVersion;
|
|
13
|
+
image?: Picture;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface TextBlockProps extends TextBlockContent, UniBlockProps {}
|
|
17
|
+
|
|
18
|
+
const textBlockStyleMaps: Record<
|
|
19
|
+
TextBlockVersion,
|
|
20
|
+
{ background: string; icon: string; title: string; description: string }
|
|
21
|
+
> = {
|
|
22
|
+
primary: {
|
|
23
|
+
background: 'bg-white',
|
|
24
|
+
icon: 'bg-primary-main text-white',
|
|
25
|
+
title: 'text-base',
|
|
26
|
+
description: 'text-secondary-text',
|
|
27
|
+
},
|
|
28
|
+
secondary: {
|
|
29
|
+
background: 'bg-primary-main',
|
|
30
|
+
icon: 'bg-white text-primary-main',
|
|
31
|
+
title: 'text-white',
|
|
32
|
+
description: 'text-white',
|
|
33
|
+
},
|
|
34
|
+
'secondary-light': {
|
|
35
|
+
background: 'bg-primary-main/10',
|
|
36
|
+
icon: 'bg-primary-main text-white',
|
|
37
|
+
title: 'text-base',
|
|
38
|
+
description: 'text-secondary-text',
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export const TextBlock = JSX<TextBlockProps>(
|
|
43
|
+
({ title, description, blockVersion = 'primary', iconVersion, image, className }) => {
|
|
44
|
+
const textBlockStyleMap = textBlockStyleMaps[blockVersion];
|
|
45
|
+
return (
|
|
46
|
+
<section
|
|
47
|
+
className={`font-sans px-9 py-4 flex ${textBlockStyleMap.background} ${className || ''}`}
|
|
48
|
+
>
|
|
49
|
+
{iconVersion && iconVersion === 'small' ? renderIcon(textBlockStyleMap.icon) : null}
|
|
50
|
+
{iconVersion && iconVersion === 'big' ? renderImage(image) : null}
|
|
51
|
+
<div className="py-0.5">
|
|
52
|
+
{title && <div className={`font-medium mb-1 ${textBlockStyleMap.title}`}>{title}</div>}
|
|
53
|
+
{description && (
|
|
54
|
+
<div className={`text-sm ${textBlockStyleMap.description}`}>{description}</div>
|
|
55
|
+
)}
|
|
56
|
+
</div>
|
|
57
|
+
</section>
|
|
58
|
+
);
|
|
59
|
+
},
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
function renderIcon(className: string) {
|
|
63
|
+
return (
|
|
64
|
+
<div className={`pt-1.5 pr-4`}>
|
|
65
|
+
<div className={`rounded-full h-4 w-4 text-center text-xs ${className}`}>i</div>
|
|
66
|
+
</div>
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function renderImage(image?: Picture) {
|
|
71
|
+
return image?.src ? <Img className="pt-0.5 pr-3" image={image} /> : null;
|
|
72
|
+
}
|
package/src/Tile.tsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import type { BlockVersion,
|
|
2
|
+
import type { BlockVersion, UniBlockProps } from './types';
|
|
3
3
|
import { BaseTile } from './BaseTile';
|
|
4
4
|
import type { BaseTileContent } from './BaseTile';
|
|
5
5
|
import { getColSpan } from './utils/getColSpan';
|
package/src/common.css
CHANGED
|
@@ -2,27 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
/* Private clients | Green */
|
|
4
4
|
[data-theme='pc'] {
|
|
5
|
-
--color-primary-main:
|
|
6
|
-
--color-primary-hover:
|
|
7
|
-
--color-primary-active:
|
|
8
|
-
--color-secondary-hover:
|
|
9
|
-
--color-secondary-active:
|
|
5
|
+
--color-primary-main: 66, 171, 68;
|
|
6
|
+
--color-primary-hover: 36, 131, 65;
|
|
7
|
+
--color-primary-active: 36, 95, 52;
|
|
8
|
+
--color-secondary-hover: 216, 242, 217;
|
|
9
|
+
--color-secondary-active: 197, 226, 198;
|
|
10
10
|
}
|
|
11
11
|
/* Business clients | Light-Green */
|
|
12
12
|
[data-theme='bc'] {
|
|
13
|
-
--color-primary-main:
|
|
14
|
-
--color-primary-hover:
|
|
15
|
-
--color-primary-active:
|
|
16
|
-
--color-secondary-hover:
|
|
17
|
-
--color-secondary-active:
|
|
13
|
+
--color-primary-main: 131, 184, 62;
|
|
14
|
+
--color-primary-hover: 92, 146, 29;
|
|
15
|
+
--color-primary-active: 60, 94, 16;
|
|
16
|
+
--color-secondary-hover: 232, 244, 217;
|
|
17
|
+
--color-secondary-active: 216, 227, 202;
|
|
18
18
|
}
|
|
19
19
|
/* Ecosystem own | Yellow */
|
|
20
20
|
[data-theme='eo'] {
|
|
21
|
-
--color-primary-main:
|
|
22
|
-
--color-primary-hover:
|
|
23
|
-
--color-primary-active:
|
|
24
|
-
--color-secondary-hover:
|
|
25
|
-
--color-secondary-active:
|
|
21
|
+
--color-primary-main: 221, 182, 61;
|
|
22
|
+
--color-primary-hover: 187, 151, 39;
|
|
23
|
+
--color-primary-active: 126, 99, 12;
|
|
24
|
+
--color-secondary-hover: 241, 236, 221;
|
|
25
|
+
--color-secondary-active: 229, 222, 199;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
@tailwind components;
|