@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.
Files changed (313) hide show
  1. package/dist/BaseTile.d.ts +2 -1
  2. package/dist/BaseTile.js +2 -15
  3. package/dist/BaseTile.js.map +1 -1
  4. package/dist/BenefitsBlock.d.ts +7 -1
  5. package/dist/BenefitsBlock.js +2 -3
  6. package/dist/BenefitsBlock.js.map +1 -1
  7. package/dist/Blocks.d.ts +5 -1
  8. package/dist/Blocks.js +4 -0
  9. package/dist/Blocks.js.map +1 -1
  10. package/dist/ContentPage.js +1 -1
  11. package/dist/ContentPage.js.map +1 -1
  12. package/dist/ExchangeRateTile.js +4 -4
  13. package/dist/ExchangeRateTile.js.map +1 -1
  14. package/dist/Footer/Footer.js +1 -1
  15. package/dist/Footer/Footer.js.map +1 -1
  16. package/dist/Footer/HorizontalNavigation.js +1 -1
  17. package/dist/Footer/HorizontalNavigation.js.map +1 -1
  18. package/dist/Footer/Sitemap.js +1 -1
  19. package/dist/Footer/SocialMedia.js +7 -7
  20. package/dist/Footer/SocialMedia.js.map +1 -1
  21. package/dist/Footer/TextInformation.js +1 -1
  22. package/dist/Footer/TextInformation.js.map +1 -1
  23. package/dist/Gallery.d.ts +16 -0
  24. package/dist/Gallery.js +37 -0
  25. package/dist/Gallery.js.map +1 -0
  26. package/dist/Header/HeaderSecondaryMenu.js +2 -2
  27. package/dist/Header/HeaderSecondaryMenu.js.map +1 -1
  28. package/dist/MobileBlocks.d.ts +1 -0
  29. package/dist/MobileBlocks.js +2 -0
  30. package/dist/MobileBlocks.js.map +1 -1
  31. package/dist/ProductBlockInner.d.ts +2 -1
  32. package/dist/ProductBlockInner.js +4 -4
  33. package/dist/ProductBlockInner.js.map +1 -1
  34. package/dist/ProductTile.d.ts +2 -1
  35. package/dist/ProductTile.js.map +1 -1
  36. package/dist/ProjectSettings.d.ts +2 -0
  37. package/dist/ProjectSettings.js +3 -0
  38. package/dist/ProjectSettings.js.map +1 -1
  39. package/dist/StepsBlock.d.ts +2 -7
  40. package/dist/StepsBlock.js +4 -4
  41. package/dist/StepsBlock.js.map +1 -1
  42. package/dist/TextBlock.d.ts +14 -0
  43. package/dist/TextBlock.js +36 -0
  44. package/dist/TextBlock.js.map +1 -0
  45. package/dist/types.d.ts +0 -6
  46. package/dist/ui-kit/ArrowButton.d.ts +6 -0
  47. package/dist/ui-kit/ArrowButton.js +8 -0
  48. package/dist/ui-kit/ArrowButton.js.map +1 -0
  49. package/dist/ui-kit/Button.js +1 -1
  50. package/dist/ui-kit/Icon.d.ts +11 -0
  51. package/dist/ui-kit/Icon.js +7 -0
  52. package/dist/ui-kit/Icon.js.map +1 -0
  53. package/dist/ui-kit/IconButton.d.ts +2 -1
  54. package/dist/ui-kit/IconButton.js +2 -3
  55. package/dist/ui-kit/IconButton.js.map +1 -1
  56. package/dist/ui-kit/SearchBar.js +4 -4
  57. package/dist/ui-kit/SearchBar.js.map +1 -1
  58. package/dist/ui-kit/Title.d.ts +11 -0
  59. package/dist/ui-kit/Title.js +17 -0
  60. package/dist/ui-kit/Title.js.map +1 -0
  61. package/lib/BaseTile.d.ts +2 -1
  62. package/lib/BaseTile.js +2 -15
  63. package/lib/BaseTile.js.map +1 -1
  64. package/lib/BenefitsBlock.d.ts +7 -1
  65. package/lib/BenefitsBlock.js +2 -3
  66. package/lib/BenefitsBlock.js.map +1 -1
  67. package/lib/Blocks.d.ts +5 -1
  68. package/lib/Blocks.js +4 -0
  69. package/lib/Blocks.js.map +1 -1
  70. package/lib/ContentPage.js +1 -1
  71. package/lib/ContentPage.js.map +1 -1
  72. package/lib/ExchangeRateTile.js +4 -4
  73. package/lib/ExchangeRateTile.js.map +1 -1
  74. package/lib/Footer/Footer.js +1 -1
  75. package/lib/Footer/Footer.js.map +1 -1
  76. package/lib/Footer/HorizontalNavigation.js +1 -1
  77. package/lib/Footer/HorizontalNavigation.js.map +1 -1
  78. package/lib/Footer/Sitemap.js +1 -1
  79. package/lib/Footer/SocialMedia.js +7 -7
  80. package/lib/Footer/SocialMedia.js.map +1 -1
  81. package/lib/Footer/TextInformation.js +1 -1
  82. package/lib/Footer/TextInformation.js.map +1 -1
  83. package/lib/Gallery.d.ts +16 -0
  84. package/lib/Gallery.js +35 -0
  85. package/lib/Gallery.js.map +1 -0
  86. package/lib/Header/HeaderSecondaryMenu.js +2 -2
  87. package/lib/Header/HeaderSecondaryMenu.js.map +1 -1
  88. package/lib/MobileBlocks.d.ts +1 -0
  89. package/lib/MobileBlocks.js +2 -0
  90. package/lib/MobileBlocks.js.map +1 -1
  91. package/lib/ProductBlockInner.d.ts +2 -1
  92. package/lib/ProductBlockInner.js +4 -4
  93. package/lib/ProductBlockInner.js.map +1 -1
  94. package/lib/ProductTile.d.ts +2 -1
  95. package/lib/ProductTile.js.map +1 -1
  96. package/lib/ProjectSettings.d.ts +2 -0
  97. package/lib/ProjectSettings.js +3 -0
  98. package/lib/ProjectSettings.js.map +1 -1
  99. package/lib/StepsBlock.d.ts +2 -7
  100. package/lib/StepsBlock.js +4 -4
  101. package/lib/StepsBlock.js.map +1 -1
  102. package/lib/TextBlock.d.ts +14 -0
  103. package/lib/TextBlock.js +34 -0
  104. package/lib/TextBlock.js.map +1 -0
  105. package/lib/common.css +1 -1
  106. package/lib/types.d.ts +0 -6
  107. package/lib/ui-kit/ArrowButton.d.ts +6 -0
  108. package/lib/ui-kit/ArrowButton.js +6 -0
  109. package/lib/ui-kit/ArrowButton.js.map +1 -0
  110. package/lib/ui-kit/Button.js +1 -1
  111. package/lib/ui-kit/Icon.d.ts +11 -0
  112. package/lib/ui-kit/Icon.js +5 -0
  113. package/lib/ui-kit/Icon.js.map +1 -0
  114. package/lib/ui-kit/IconButton.d.ts +2 -1
  115. package/lib/ui-kit/IconButton.js +2 -3
  116. package/lib/ui-kit/IconButton.js.map +1 -1
  117. package/lib/ui-kit/SearchBar.js +4 -4
  118. package/lib/ui-kit/SearchBar.js.map +1 -1
  119. package/lib/ui-kit/Title.d.ts +11 -0
  120. package/lib/ui-kit/Title.js +15 -0
  121. package/lib/ui-kit/Title.js.map +1 -0
  122. package/package.json +9 -4
  123. package/src/BaseTile.tsx +8 -17
  124. package/src/BenefitsBlock.tsx +13 -6
  125. package/src/Blocks.ts +7 -1
  126. package/src/ContentPage.page.json +29 -1
  127. package/src/ContentPage.tsx +1 -1
  128. package/src/ExchangeRateTile.tsx +4 -4
  129. package/src/Footer/Footer.tsx +2 -2
  130. package/src/Footer/HorizontalNavigation.tsx +1 -1
  131. package/src/Footer/Sitemap.tsx +1 -1
  132. package/src/Footer/SocialMedia.tsx +9 -9
  133. package/src/Footer/TextInformation.tsx +2 -2
  134. package/src/Gallery.fixture.tsx +213 -0
  135. package/src/Gallery.tsx +132 -0
  136. package/src/Header/HeaderSecondaryMenu.tsx +5 -5
  137. package/src/MobileAppTile.fixture.tsx +16 -0
  138. package/src/MobileBlocks.ts +2 -0
  139. package/src/ProductBlockInner.tsx +13 -10
  140. package/src/ProductTile.tsx +4 -3
  141. package/src/ProjectSettings.ts +4 -0
  142. package/src/StepsBlock.tsx +5 -5
  143. package/src/TextBlock.fixture.tsx +116 -0
  144. package/src/TextBlock.tsx +72 -0
  145. package/src/Tile.tsx +1 -1
  146. package/src/common.css +15 -15
  147. package/src/icons/ActualBalanceIcon.svg +186 -0
  148. package/src/icons/AppleIcon.svg +13 -0
  149. package/src/icons/CalendarIcon.svg +17 -0
  150. package/src/icons/ClockIcon.svg +208 -0
  151. package/src/icons/ComfortableCompIcon.svg +373 -0
  152. package/src/icons/DollarIcon.svg +10 -0
  153. package/src/icons/EmptyWalletIcon.svg +17 -0
  154. package/src/icons/EuroIcon.svg +10 -0
  155. package/src/icons/GridIcon.svg +7 -0
  156. package/src/icons/LoupeIcon.svg +9 -0
  157. package/src/icons/NewDocIcon.svg +250 -0
  158. package/src/icons/OkIcon.svg +6 -0
  159. package/src/icons/PassSendIcon.svg +237 -0
  160. package/src/icons/PercentageSquareIcon.svg +16 -0
  161. package/src/icons/PlayMarketIcon.svg +6 -0
  162. package/src/icons/ProfileIcon.svg +16 -0
  163. package/src/icons/SignDocsIcon.svg +287 -0
  164. package/src/icons/TelegramIcon.svg +6 -0
  165. package/{dist/Icons/VKIcon.js → src/icons/VKIcon.svg} +8 -6
  166. package/src/setup-fixture.ts +15 -7
  167. package/src/types.ts +0 -8
  168. package/src/ui-kit/ArrowButton.tsx +34 -0
  169. package/src/ui-kit/Button.fixture.tsx +1 -1
  170. package/src/ui-kit/Button.tsx +1 -1
  171. package/src/ui-kit/Icon.tsx +46 -0
  172. package/src/ui-kit/IconButton.tsx +5 -5
  173. package/src/ui-kit/SearchBar.tsx +26 -19
  174. package/src/ui-kit/Title.tsx +25 -0
  175. package/dist/Icons/ActualBalanceIcon.d.ts +0 -1
  176. package/dist/Icons/ActualBalanceIcon.js +0 -12
  177. package/dist/Icons/ActualBalanceIcon.js.map +0 -1
  178. package/dist/Icons/AppleIcon.d.ts +0 -1
  179. package/dist/Icons/AppleIcon.js +0 -6
  180. package/dist/Icons/AppleIcon.js.map +0 -1
  181. package/dist/Icons/CalendarIcon.d.ts +0 -1
  182. package/dist/Icons/CalendarIcon.js +0 -6
  183. package/dist/Icons/CalendarIcon.js.map +0 -1
  184. package/dist/Icons/ClockIcon.d.ts +0 -1
  185. package/dist/Icons/ClockIcon.js +0 -6
  186. package/dist/Icons/ClockIcon.js.map +0 -1
  187. package/dist/Icons/ComfortableCompIcon.d.ts +0 -1
  188. package/dist/Icons/ComfortableCompIcon.js +0 -8
  189. package/dist/Icons/ComfortableCompIcon.js.map +0 -1
  190. package/dist/Icons/DollarIcon.d.ts +0 -1
  191. package/dist/Icons/DollarIcon.js +0 -6
  192. package/dist/Icons/DollarIcon.js.map +0 -1
  193. package/dist/Icons/EmptyWalletIcon.d.ts +0 -1
  194. package/dist/Icons/EmptyWalletIcon.js +0 -6
  195. package/dist/Icons/EmptyWalletIcon.js.map +0 -1
  196. package/dist/Icons/EuroIcon.d.ts +0 -1
  197. package/dist/Icons/EuroIcon.js +0 -6
  198. package/dist/Icons/EuroIcon.js.map +0 -1
  199. package/dist/Icons/GridIcon.d.ts +0 -1
  200. package/dist/Icons/GridIcon.js +0 -6
  201. package/dist/Icons/GridIcon.js.map +0 -1
  202. package/dist/Icons/LoupeIcon.d.ts +0 -1
  203. package/dist/Icons/LoupeIcon.js +0 -6
  204. package/dist/Icons/LoupeIcon.js.map +0 -1
  205. package/dist/Icons/NewDocIcon.d.ts +0 -1
  206. package/dist/Icons/NewDocIcon.js +0 -8
  207. package/dist/Icons/NewDocIcon.js.map +0 -1
  208. package/dist/Icons/OkIcon.d.ts +0 -1
  209. package/dist/Icons/OkIcon.js +0 -6
  210. package/dist/Icons/OkIcon.js.map +0 -1
  211. package/dist/Icons/PassSendIcon.d.ts +0 -1
  212. package/dist/Icons/PassSendIcon.js +0 -12
  213. package/dist/Icons/PassSendIcon.js.map +0 -1
  214. package/dist/Icons/PercentageSquareIcon.d.ts +0 -1
  215. package/dist/Icons/PercentageSquareIcon.js +0 -6
  216. package/dist/Icons/PercentageSquareIcon.js.map +0 -1
  217. package/dist/Icons/PlayMarket.d.ts +0 -1
  218. package/dist/Icons/PlayMarket.js +0 -6
  219. package/dist/Icons/PlayMarket.js.map +0 -1
  220. package/dist/Icons/ProfileIcon.d.ts +0 -1
  221. package/dist/Icons/ProfileIcon.js +0 -6
  222. package/dist/Icons/ProfileIcon.js.map +0 -1
  223. package/dist/Icons/SignDocsIcon.d.ts +0 -1
  224. package/dist/Icons/SignDocsIcon.js +0 -10
  225. package/dist/Icons/SignDocsIcon.js.map +0 -1
  226. package/dist/Icons/TelegramIcon.d.ts +0 -1
  227. package/dist/Icons/TelegramIcon.js +0 -6
  228. package/dist/Icons/TelegramIcon.js.map +0 -1
  229. package/dist/Icons/VKIcon.d.ts +0 -1
  230. package/dist/Icons/VKIcon.js.map +0 -1
  231. package/dist/Icons/index.d.ts +0 -19
  232. package/dist/Icons/index.js +0 -41
  233. package/dist/Icons/index.js.map +0 -1
  234. package/lib/Icons/ActualBalanceIcon.d.ts +0 -1
  235. package/lib/Icons/ActualBalanceIcon.js +0 -9
  236. package/lib/Icons/ActualBalanceIcon.js.map +0 -1
  237. package/lib/Icons/AppleIcon.d.ts +0 -1
  238. package/lib/Icons/AppleIcon.js +0 -3
  239. package/lib/Icons/AppleIcon.js.map +0 -1
  240. package/lib/Icons/CalendarIcon.d.ts +0 -1
  241. package/lib/Icons/CalendarIcon.js +0 -3
  242. package/lib/Icons/CalendarIcon.js.map +0 -1
  243. package/lib/Icons/ClockIcon.d.ts +0 -1
  244. package/lib/Icons/ClockIcon.js +0 -3
  245. package/lib/Icons/ClockIcon.js.map +0 -1
  246. package/lib/Icons/ComfortableCompIcon.d.ts +0 -1
  247. package/lib/Icons/ComfortableCompIcon.js +0 -5
  248. package/lib/Icons/ComfortableCompIcon.js.map +0 -1
  249. package/lib/Icons/DollarIcon.d.ts +0 -1
  250. package/lib/Icons/DollarIcon.js +0 -3
  251. package/lib/Icons/DollarIcon.js.map +0 -1
  252. package/lib/Icons/EmptyWalletIcon.d.ts +0 -1
  253. package/lib/Icons/EmptyWalletIcon.js +0 -3
  254. package/lib/Icons/EmptyWalletIcon.js.map +0 -1
  255. package/lib/Icons/EuroIcon.d.ts +0 -1
  256. package/lib/Icons/EuroIcon.js +0 -3
  257. package/lib/Icons/EuroIcon.js.map +0 -1
  258. package/lib/Icons/GridIcon.d.ts +0 -1
  259. package/lib/Icons/GridIcon.js +0 -3
  260. package/lib/Icons/GridIcon.js.map +0 -1
  261. package/lib/Icons/LoupeIcon.d.ts +0 -1
  262. package/lib/Icons/LoupeIcon.js +0 -3
  263. package/lib/Icons/LoupeIcon.js.map +0 -1
  264. package/lib/Icons/NewDocIcon.d.ts +0 -1
  265. package/lib/Icons/NewDocIcon.js +0 -5
  266. package/lib/Icons/NewDocIcon.js.map +0 -1
  267. package/lib/Icons/OkIcon.d.ts +0 -1
  268. package/lib/Icons/OkIcon.js +0 -3
  269. package/lib/Icons/OkIcon.js.map +0 -1
  270. package/lib/Icons/PassSendIcon.d.ts +0 -1
  271. package/lib/Icons/PassSendIcon.js +0 -9
  272. package/lib/Icons/PassSendIcon.js.map +0 -1
  273. package/lib/Icons/PercentageSquareIcon.d.ts +0 -1
  274. package/lib/Icons/PercentageSquareIcon.js +0 -3
  275. package/lib/Icons/PercentageSquareIcon.js.map +0 -1
  276. package/lib/Icons/PlayMarket.d.ts +0 -1
  277. package/lib/Icons/PlayMarket.js +0 -3
  278. package/lib/Icons/PlayMarket.js.map +0 -1
  279. package/lib/Icons/ProfileIcon.d.ts +0 -1
  280. package/lib/Icons/ProfileIcon.js +0 -3
  281. package/lib/Icons/ProfileIcon.js.map +0 -1
  282. package/lib/Icons/SignDocsIcon.d.ts +0 -1
  283. package/lib/Icons/SignDocsIcon.js +0 -7
  284. package/lib/Icons/SignDocsIcon.js.map +0 -1
  285. package/lib/Icons/TelegramIcon.d.ts +0 -1
  286. package/lib/Icons/TelegramIcon.js +0 -3
  287. package/lib/Icons/TelegramIcon.js.map +0 -1
  288. package/lib/Icons/VKIcon.d.ts +0 -1
  289. package/lib/Icons/VKIcon.js +0 -3
  290. package/lib/Icons/VKIcon.js.map +0 -1
  291. package/lib/Icons/index.d.ts +0 -19
  292. package/lib/Icons/index.js +0 -20
  293. package/lib/Icons/index.js.map +0 -1
  294. package/src/Icons/ActualBalanceIcon.tsx +0 -202
  295. package/src/Icons/AppleIcon.tsx +0 -15
  296. package/src/Icons/CalendarIcon.tsx +0 -19
  297. package/src/Icons/ClockIcon.tsx +0 -212
  298. package/src/Icons/ComfortableCompIcon.tsx +0 -379
  299. package/src/Icons/DollarIcon.tsx +0 -12
  300. package/src/Icons/EmptyWalletIcon.tsx +0 -25
  301. package/src/Icons/EuroIcon.tsx +0 -12
  302. package/src/Icons/GridIcon.tsx +0 -9
  303. package/src/Icons/LoupeIcon.tsx +0 -11
  304. package/src/Icons/NewDocIcon.tsx +0 -262
  305. package/src/Icons/OkIcon.tsx +0 -8
  306. package/src/Icons/PassSendIcon.tsx +0 -250
  307. package/src/Icons/PercentageSquareIcon.tsx +0 -18
  308. package/src/Icons/PlayMarket.tsx +0 -8
  309. package/src/Icons/ProfileIcon.tsx +0 -18
  310. package/src/Icons/SignDocsIcon.tsx +0 -295
  311. package/src/Icons/TelegramIcon.tsx +0 -8
  312. package/src/Icons/VKIcon.tsx +0 -10
  313. package/src/Icons/index.ts +0 -19
@@ -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 { GridIcon, LoupeIcon, ProfileIcon } from '../Icons/index';
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
- {LoupeIcon({ 'aria-hidden': true })}
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
- {ProfileIcon({ 'aria-hidden': true })}
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
- {GridIcon({ 'aria-hidden': true })}
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,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',
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
  ),
@@ -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
- const ICONS = { EmptyWalletIcon, PercentageSquareIcon, CalendarIcon };
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
- <h1 className="font-medium text-title-lg m-0 mb-4 whitespace-pre-wrap max-w-[600px]">
22
+ <Title size="XL" className="font-medium m-0 mb-4 whitespace-pre-wrap max-w-[600px]">
23
23
  {title}
24
- </h1>
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
- <div className="w-[50px] h-[50px] min-w-[50px] min-h-[50px] bg-main rounded-full p-[10px] box-border">
43
- {ICONS[benefit.icon as keyof typeof ICONS]?.()}
44
- </div>
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>
@@ -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[];
@@ -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
  })();
@@ -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?: keyof typeof ICONS;
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
- <h2 className="font-medium text-title m-0 max-w-[47rem] text-center">{title}</h2>
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 && ICONS[step.icon]?.({ width: 48, height: 48 })) || (
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, Picture, UniBlockProps } from './types';
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: #42ab44;
6
- --color-primary-hover: #248341;
7
- --color-primary-active: #245f34;
8
- --color-secondary-hover: #c5e2c6;
9
- --color-secondary-active: #d8f2d9;
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: #83b83e;
14
- --color-primary-hover: #5c921d;
15
- --color-primary-active: #3c5e10;
16
- --color-secondary-hover: #e8f4d9;
17
- --color-secondary-active: #d8e3ca;
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: #ddb63d;
22
- --color-primary-hover: #bb9727;
23
- --color-primary-active: #7e630c;
24
- --color-secondary-hover: #f1ecdd;
25
- --color-secondary-active: #e5dec7;
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;