@redneckz/wildless-cms-uni-blocks 0.2.89 → 0.2.93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/blocks.schema.json +1 -1
- package/bundle/bundle.umd.js +119 -57
- package/bundle/bundle.umd.min.js +1 -1
- package/dist/api/LikeAPI.js +1 -0
- package/dist/api/LikeAPI.js.map +1 -1
- package/dist/components/Accordion/AccordionContent.d.ts +38 -14
- package/dist/components/Accordion/AccordionItem.js +8 -6
- package/dist/components/Accordion/AccordionItem.js.map +1 -1
- package/dist/components/BaseTile/BaseTile.js +1 -1
- package/dist/components/BaseTile/BaseTile.js.map +1 -1
- package/dist/components/BlockContent.d.ts +2 -1
- package/dist/components/Blocks.d.ts +1 -0
- package/dist/components/Blocks.js +2 -0
- package/dist/components/Blocks.js.map +1 -1
- package/dist/components/ComparisonTable/ComparisonTable.js +12 -10
- package/dist/components/ComparisonTable/ComparisonTable.js.map +1 -1
- package/dist/components/ComparisonTable/ComparisonTableContent.d.ts +0 -20
- package/dist/components/ComparisonTable/HeaderCell.js +1 -1
- package/dist/components/ComparisonTable/HeaderCell.js.map +1 -1
- package/dist/components/ComparisonTable/TableCarouselContainer.d.ts +3 -0
- package/dist/components/ComparisonTable/TableCarouselContainer.js +5 -2
- package/dist/components/ComparisonTable/TableCarouselContainer.js.map +1 -1
- package/dist/components/ComparisonTable/TableRow.js +1 -1
- package/dist/components/ComparisonTable/TableRow.js.map +1 -1
- package/dist/components/ContentPage/ContentPageHead.d.ts +1 -1
- package/dist/components/CreditCalculator/CreditCalculator.js +1 -1
- package/dist/components/CreditCalculator/CreditCalculator.js.map +1 -1
- package/dist/components/Footer/Contacts.js +1 -1
- package/dist/components/Footer/Contacts.js.map +1 -1
- package/dist/components/Footer/FooterContent.d.ts +1 -2
- package/dist/components/Footer/HorizontalNavigation.js +1 -1
- package/dist/components/Footer/SocialMedia.js +1 -2
- package/dist/components/Footer/SocialMedia.js.map +1 -1
- package/dist/components/Gallery/GalleryInner.js +2 -2
- package/dist/components/Gallery/GalleryInner.js.map +1 -1
- package/dist/components/LinkDocs/LinkDocs.js +5 -5
- package/dist/components/LinkDocs/LinkDocs.js.map +1 -1
- package/dist/components/MiniGallery/MiniGalleryContent.d.ts +1 -2
- package/dist/components/MobileBlocks.js +0 -3
- package/dist/components/MobileBlocks.js.map +1 -1
- package/dist/components/PictureText/PictureText.js +1 -1
- package/dist/components/PictureText/PictureText.js.map +1 -1
- package/dist/components/PictureText/PictureTextContent.d.ts +2 -4
- package/dist/components/Placeholder/Placeholder.js.map +1 -1
- package/dist/components/ProductBlock/ProductBlock.mobile.js +3 -1
- package/dist/components/ProductBlock/ProductBlock.mobile.js.map +1 -1
- package/dist/components/ProductBlock/ProductBlockInner.js +1 -4
- package/dist/components/ProductBlock/ProductBlockInner.js.map +1 -1
- package/dist/components/ProductGallery/ProductGallery.js +2 -2
- package/dist/components/ProductGallery/ProductGallery.js.map +1 -1
- package/dist/components/PromoTile/PromoTile.d.ts +1 -1
- package/dist/components/PromoTile/PromoTile.js +1 -1
- package/dist/components/PromoTile/PromoTile.js.map +1 -1
- package/dist/components/TariffsTable/TariffsTable.d.ts +5 -0
- package/dist/components/TariffsTable/TariffsTable.js +25 -0
- package/dist/components/TariffsTable/TariffsTable.js.map +1 -0
- package/dist/components/TariffsTable/TariffsTableCell.d.ts +6 -0
- package/dist/components/TariffsTable/TariffsTableCell.js +18 -0
- package/dist/components/TariffsTable/TariffsTableCell.js.map +1 -0
- package/dist/components/TariffsTable/TariffsTableContent.d.ts +55 -0
- package/dist/components/TariffsTable/TariffsTableContent.js +2 -0
- package/dist/components/TariffsTable/TariffsTableContent.js.map +1 -0
- package/dist/components/TariffsTable/TariffsTableRow.d.ts +8 -0
- package/dist/components/TariffsTable/TariffsTableRow.js +13 -0
- package/dist/components/TariffsTable/TariffsTableRow.js.map +1 -0
- package/dist/components/TariffsTable/constants.d.ts +4 -0
- package/dist/components/TariffsTable/constants.js +7 -0
- package/dist/components/TariffsTable/constants.js.map +1 -0
- package/dist/components/TextBlock/TextBlock.d.ts +1 -1
- package/dist/components/TextBlock/TextBlock.js +1 -1
- package/dist/components/TextBlock/TextBlock.js.map +1 -1
- package/dist/components/TextBlock/TextBlockContent.d.ts +1 -2
- package/dist/components/Tile/Tile.d.ts +1 -1
- package/dist/components/Tile/Tile.js +14 -2
- package/dist/components/Tile/Tile.js.map +1 -1
- package/dist/content-page-repository/ContentPageRepository.js +1 -0
- package/dist/content-page-repository/ContentPageRepository.js.map +1 -1
- package/dist/hooks/useComparisonTableScroll.d.ts +12 -0
- package/dist/hooks/useComparisonTableScroll.js +12 -0
- package/dist/hooks/useComparisonTableScroll.js.map +1 -0
- package/dist/hooks/useLink.js +1 -1
- package/dist/hooks/useLink.js.map +1 -1
- package/dist/model/TableVersion.d.ts +1 -0
- package/dist/model/TableVersion.js +2 -0
- package/dist/model/TableVersion.js.map +1 -0
- package/dist/ui-kit/BlockItem/BlockItem.d.ts +1 -9
- package/dist/ui-kit/BlockItem/BlockItem.js +5 -5
- package/dist/ui-kit/BlockItem/BlockItem.js.map +1 -1
- package/dist/ui-kit/BlockItem/BlockItemProps.d.ts +20 -0
- package/dist/ui-kit/BlockItem/BlockItemProps.js +2 -0
- package/dist/ui-kit/BlockItem/BlockItemProps.js.map +1 -0
- package/dist/ui-kit/Icon/IconProps.d.ts +57 -25
- package/dist/ui-kit/Icon/IconProps.js +39 -23
- package/dist/ui-kit/Icon/IconProps.js.map +1 -1
- package/dist/ui-kit/InputRange/InputRange.js +1 -1
- package/dist/ui-kit/InputRange/InputRange.js.map +1 -1
- package/dist/ui-kit/SearchBar.js +2 -1
- package/dist/ui-kit/SearchBar.js.map +1 -1
- package/lib/api/LikeAPI.js +1 -0
- package/lib/api/LikeAPI.js.map +1 -1
- package/lib/common.css +1 -1
- package/lib/components/Accordion/Accordion.fixture.d.ts +1 -4
- package/lib/components/Accordion/AccordionContent.d.ts +38 -14
- package/lib/components/Accordion/AccordionItem.js +8 -6
- package/lib/components/Accordion/AccordionItem.js.map +1 -1
- package/lib/components/BaseTile/BaseTile.js +1 -1
- package/lib/components/BaseTile/BaseTile.js.map +1 -1
- package/lib/components/BlockContent.d.ts +2 -1
- package/lib/components/Blocks.d.ts +1 -0
- package/lib/components/Blocks.js +2 -0
- package/lib/components/Blocks.js.map +1 -1
- package/lib/components/ComparisonTable/ComparisonTable.js +12 -10
- package/lib/components/ComparisonTable/ComparisonTable.js.map +1 -1
- package/lib/components/ComparisonTable/ComparisonTableContent.d.ts +0 -20
- package/lib/components/ComparisonTable/HeaderCell.js +1 -1
- package/lib/components/ComparisonTable/HeaderCell.js.map +1 -1
- package/lib/components/ComparisonTable/TableCarouselContainer.d.ts +3 -0
- package/lib/components/ComparisonTable/TableCarouselContainer.js +5 -2
- package/lib/components/ComparisonTable/TableCarouselContainer.js.map +1 -1
- package/lib/components/ComparisonTable/TableRow.js +2 -2
- package/lib/components/ComparisonTable/TableRow.js.map +1 -1
- package/lib/components/ContentPage/ContentPageHead.d.ts +1 -1
- package/lib/components/CreditCalculator/CreditCalculator.js +1 -1
- package/lib/components/CreditCalculator/CreditCalculator.js.map +1 -1
- package/lib/components/Footer/Contacts.js +1 -1
- package/lib/components/Footer/Contacts.js.map +1 -1
- package/lib/components/Footer/FooterContent.d.ts +1 -2
- package/lib/components/Footer/HorizontalNavigation.js +1 -1
- package/lib/components/Footer/SocialMedia.js +1 -2
- package/lib/components/Footer/SocialMedia.js.map +1 -1
- package/lib/components/Gallery/GalleryInner.js +2 -2
- package/lib/components/Gallery/GalleryInner.js.map +1 -1
- package/lib/components/Headline/Headline.fixture.d.ts +3 -2
- package/lib/components/LinkDocs/LinkDocs.fixture.d.ts +6 -6
- package/lib/components/LinkDocs/LinkDocs.js +5 -5
- package/lib/components/LinkDocs/LinkDocs.js.map +1 -1
- package/lib/components/MiniGallery/MiniGalleryContent.d.ts +1 -2
- package/lib/components/MobileBlocks.js +0 -3
- package/lib/components/MobileBlocks.js.map +1 -1
- package/lib/components/PictureText/PictureText.fixture.d.ts +2 -0
- package/lib/components/PictureText/PictureText.js +1 -1
- package/lib/components/PictureText/PictureText.js.map +1 -1
- package/lib/components/PictureText/PictureTextContent.d.ts +2 -4
- package/lib/components/Placeholder/Placeholder.js.map +1 -1
- package/lib/components/ProductBlock/ProductBlock.mobile.js +3 -1
- package/lib/components/ProductBlock/ProductBlock.mobile.js.map +1 -1
- package/lib/components/ProductBlock/ProductBlockInner.js +1 -4
- package/lib/components/ProductBlock/ProductBlockInner.js.map +1 -1
- package/lib/components/ProductGallery/ProductGallery.js +2 -2
- package/lib/components/ProductGallery/ProductGallery.js.map +1 -1
- package/lib/components/PromoTile/PromoTile.d.ts +1 -1
- package/lib/components/PromoTile/PromoTile.js +1 -1
- package/lib/components/PromoTile/PromoTile.js.map +1 -1
- package/lib/components/TariffsTable/TariffsTable.d.ts +5 -0
- package/lib/components/TariffsTable/TariffsTable.fixture.d.ts +7 -0
- package/lib/components/TariffsTable/TariffsTable.js +23 -0
- package/lib/components/TariffsTable/TariffsTable.js.map +1 -0
- package/lib/components/TariffsTable/TariffsTableCell.d.ts +6 -0
- package/lib/components/TariffsTable/TariffsTableCell.js +16 -0
- package/lib/components/TariffsTable/TariffsTableCell.js.map +1 -0
- package/lib/components/TariffsTable/TariffsTableContent.d.ts +55 -0
- package/lib/components/TariffsTable/TariffsTableContent.js +2 -0
- package/lib/components/TariffsTable/TariffsTableContent.js.map +1 -0
- package/lib/components/TariffsTable/TariffsTableRow.d.ts +8 -0
- package/lib/components/TariffsTable/TariffsTableRow.js +11 -0
- package/lib/components/TariffsTable/TariffsTableRow.js.map +1 -0
- package/lib/components/TariffsTable/constants.d.ts +4 -0
- package/lib/components/TariffsTable/constants.js +5 -0
- package/lib/components/TariffsTable/constants.js.map +1 -0
- package/lib/components/TextBlock/TextBlock.d.ts +1 -1
- package/lib/components/TextBlock/TextBlock.fixture.d.ts +2 -0
- package/lib/components/TextBlock/TextBlock.js +1 -1
- package/lib/components/TextBlock/TextBlock.js.map +1 -1
- package/lib/components/TextBlock/TextBlockContent.d.ts +1 -2
- package/lib/components/Tile/Tile.d.ts +1 -1
- package/lib/components/Tile/Tile.js +14 -2
- package/lib/components/Tile/Tile.js.map +1 -1
- package/lib/content-page-repository/ContentPageRepository.js +1 -0
- package/lib/content-page-repository/ContentPageRepository.js.map +1 -1
- package/lib/hooks/useComparisonTableScroll.d.ts +12 -0
- package/lib/hooks/useComparisonTableScroll.js +9 -0
- package/lib/hooks/useComparisonTableScroll.js.map +1 -0
- package/lib/hooks/useLink.js +1 -1
- package/lib/hooks/useLink.js.map +1 -1
- package/lib/model/TableVersion.d.ts +1 -0
- package/lib/model/TableVersion.js +2 -0
- package/lib/model/TableVersion.js.map +1 -0
- package/lib/ui-kit/BlockItem/BlockItem.d.ts +1 -9
- package/lib/ui-kit/BlockItem/BlockItem.fixture.d.ts +6 -1
- package/lib/ui-kit/BlockItem/BlockItem.js +5 -5
- package/lib/ui-kit/BlockItem/BlockItem.js.map +1 -1
- package/lib/ui-kit/BlockItem/BlockItemProps.d.ts +20 -0
- package/lib/ui-kit/BlockItem/BlockItemProps.js +2 -0
- package/lib/ui-kit/BlockItem/BlockItemProps.js.map +1 -0
- package/lib/ui-kit/Icon/IconProps.d.ts +57 -25
- package/lib/ui-kit/Icon/IconProps.js +39 -23
- package/lib/ui-kit/Icon/IconProps.js.map +1 -1
- package/lib/ui-kit/InputRange/InputRange.js +1 -1
- package/lib/ui-kit/InputRange/InputRange.js.map +1 -1
- package/lib/ui-kit/SearchBar.js +2 -1
- package/lib/ui-kit/SearchBar.js.map +1 -1
- package/package.json +19 -9
- package/src/api/LikeAPI.ts +1 -0
- package/src/components/Accordion/Accordion.example.json +18 -42
- package/src/components/Accordion/Accordion.fixture.tsx +29 -119
- package/src/components/Accordion/AccordionContent.ts +47 -18
- package/src/components/Accordion/AccordionItem.tsx +13 -9
- package/src/components/BaseTile/BaseTile.tsx +6 -3
- package/src/components/BlockContent.ts +2 -0
- package/src/components/Blocks.ts +2 -0
- package/src/components/ComparisonTable/ComparisonTable.tsx +17 -14
- package/src/components/ComparisonTable/ComparisonTableContent.ts +0 -21
- package/src/components/ComparisonTable/HeaderCell.tsx +3 -3
- package/src/components/ComparisonTable/TableCarouselContainer.tsx +11 -4
- package/src/components/ComparisonTable/TableRow.tsx +2 -2
- package/src/components/ContentPage/ContentPage.fixture.tsx +3 -3
- package/src/components/ContentPage/ContentPage.page.json +425 -3
- package/src/components/ContentPage/ContentPageHead.tsx +1 -1
- package/src/components/CreditCalculator/CreditCalculator.tsx +1 -1
- package/src/components/Footer/Contacts.tsx +1 -1
- package/src/components/Footer/FooterContent.ts +1 -1
- package/src/components/Footer/HorizontalNavigation.tsx +1 -1
- package/src/components/Footer/SocialMedia.tsx +5 -6
- package/src/components/Gallery/GalleryInner.tsx +2 -1
- package/src/components/Headline/Headline.fixture.tsx +11 -34
- package/src/components/LinkDocs/LinkDocs.fixture.tsx +14 -14
- package/src/components/LinkDocs/LinkDocs.tsx +8 -7
- package/src/components/MiniGallery/MiniGalleryContent.ts +1 -1
- package/src/components/MobileBlocks.ts +0 -3
- package/src/components/PictureText/PictureText.fixture.tsx +20 -20
- package/src/components/PictureText/PictureText.tsx +3 -1
- package/src/components/PictureText/PictureTextContent.ts +2 -5
- package/src/components/Placeholder/Placeholder.tsx +2 -2
- package/src/components/ProductBlock/ProductBlock.mobile.tsx +1 -0
- package/src/components/ProductBlock/ProductBlockInner.tsx +8 -11
- package/src/components/ProductGallery/ProductGallery.example.json +1 -1
- package/src/components/ProductGallery/ProductGallery.fixture.tsx +7 -13
- package/src/components/ProductGallery/ProductGallery.tsx +7 -5
- package/src/components/PromoTile/PromoTile.tsx +3 -3
- package/src/components/TariffsTable/TariffsTable.example.json +87 -0
- package/src/components/TariffsTable/TariffsTable.fixture.tsx +195 -0
- package/src/components/TariffsTable/TariffsTable.tsx +74 -0
- package/src/components/TariffsTable/TariffsTableCell.tsx +64 -0
- package/src/components/TariffsTable/TariffsTableContent.ts +61 -0
- package/src/components/TariffsTable/TariffsTableRow.tsx +46 -0
- package/src/components/TariffsTable/constants.ts +4 -0
- package/src/components/TextBlock/TextBlock.example.json +9 -2
- package/src/components/TextBlock/TextBlock.fixture.tsx +20 -64
- package/src/components/TextBlock/TextBlock.tsx +2 -2
- package/src/components/TextBlock/TextBlockContent.ts +1 -2
- package/src/components/Tile/Tile.example.json +5 -2
- package/src/components/Tile/Tile.tsx +16 -5
- package/src/content-page-repository/ContentPageRepository.ts +1 -0
- package/src/hooks/useComparisonTableScroll.ts +21 -0
- package/src/hooks/useLink.ts +1 -1
- package/src/model/TableVersion.ts +1 -0
- package/src/ui-kit/BlockItem/BlockItem.fixture.tsx +8 -1
- package/src/ui-kit/BlockItem/BlockItem.tsx +7 -18
- package/src/ui-kit/BlockItem/BlockItemProps.ts +22 -0
- package/src/ui-kit/Icon/IconProps.ts +34 -2
- package/src/ui-kit/InputRange/InputRange.tsx +2 -2
- package/src/ui-kit/SearchBar.tsx +16 -6
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { useComparisonTableScroll } from '../../hooks/useComparisonTableScroll';
|
|
3
|
+
import type { UniBlockProps } from '../../types';
|
|
4
|
+
import { ArrowButton } from '../../ui-kit/Button/ArrowButton';
|
|
5
|
+
import { Title } from '../../ui-kit/Title/Title';
|
|
6
|
+
import { COLS_LENGTH_FOR_SCROLL } from './constants';
|
|
7
|
+
import type { TariffsTableContent } from './TariffsTableContent';
|
|
8
|
+
import { TariffsTableRow } from './TariffsTableRow';
|
|
9
|
+
|
|
10
|
+
export interface TariffsTableProps extends TariffsTableContent, UniBlockProps {}
|
|
11
|
+
|
|
12
|
+
export const TariffsTable = JSX<TariffsTableProps>(
|
|
13
|
+
({ className, context, title, rowHeaders, columns }) => {
|
|
14
|
+
const [activeCardIndex, setActiveCardIndex] = context.useState(0);
|
|
15
|
+
|
|
16
|
+
const colData = columns?.map(({ data }) => data) || [];
|
|
17
|
+
const rowData = rowHeaders?.map((header, i) => ({
|
|
18
|
+
header,
|
|
19
|
+
data: colData.map((col) => col?.[i] || [{}]),
|
|
20
|
+
}));
|
|
21
|
+
|
|
22
|
+
const { nextClick, prevClick, isScrollAvailable, showNextButton, showPrevButton } =
|
|
23
|
+
useComparisonTableScroll({
|
|
24
|
+
colData,
|
|
25
|
+
colsLengthForScroll: COLS_LENGTH_FOR_SCROLL,
|
|
26
|
+
activeCardIndex,
|
|
27
|
+
setActiveCardIndex,
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<section
|
|
32
|
+
className={`bg-white font-sans py-[50px] pl-[50px] overflow-hidden text-primary-text relative ${
|
|
33
|
+
className || ''
|
|
34
|
+
}`}
|
|
35
|
+
>
|
|
36
|
+
<Title className="font-medium m-0 max-w-[47rem] text-center mb-9 mx-auto">{title}</Title>
|
|
37
|
+
<div role="table">
|
|
38
|
+
{rowData?.length ? (
|
|
39
|
+
<div className="relative">
|
|
40
|
+
{rowData.map((row, i, { length }) => (
|
|
41
|
+
<TariffsTableRow
|
|
42
|
+
key={String(i)}
|
|
43
|
+
row={row}
|
|
44
|
+
isLastRow={i + 1 === length}
|
|
45
|
+
activeCardIndex={activeCardIndex}
|
|
46
|
+
/>
|
|
47
|
+
))}
|
|
48
|
+
{isScrollAvailable ? (
|
|
49
|
+
<div>
|
|
50
|
+
<div className="absolute top-7 right-7 z-10">
|
|
51
|
+
<ArrowButton
|
|
52
|
+
onClick={nextClick}
|
|
53
|
+
disabled={!showNextButton}
|
|
54
|
+
ariaLabel="Пролистать вправо"
|
|
55
|
+
/>
|
|
56
|
+
<ArrowButton
|
|
57
|
+
className="mt-4 rotate-180"
|
|
58
|
+
onClick={prevClick}
|
|
59
|
+
disabled={!showPrevButton}
|
|
60
|
+
ariaLabel="Пролистать влево"
|
|
61
|
+
/>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
) : null}
|
|
65
|
+
</div>
|
|
66
|
+
) : null}
|
|
67
|
+
{isScrollAvailable ? (
|
|
68
|
+
<div className="absolute top-0 right-0 bottom-0 w-[84px] bg-opacity-to-white" />
|
|
69
|
+
) : null}
|
|
70
|
+
</div>
|
|
71
|
+
</section>
|
|
72
|
+
);
|
|
73
|
+
},
|
|
74
|
+
);
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { DIVIDER_CLASSES } from './constants';
|
|
3
|
+
import { BlockItem } from '../../ui-kit/BlockItem/BlockItem';
|
|
4
|
+
import { Img } from '../../ui-kit/Img';
|
|
5
|
+
import { Button } from '../../ui-kit/Button/Button';
|
|
6
|
+
import type { TariffsTableCellData } from './TariffsTableContent';
|
|
7
|
+
import { Icon } from '../../ui-kit/Icon/Icon';
|
|
8
|
+
|
|
9
|
+
export interface TariffsTableCellProps {
|
|
10
|
+
cell: TariffsTableCellData[];
|
|
11
|
+
isLastRow: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const TariffsTableCell = JSX<TariffsTableCellProps>(({ cell, isLastRow }) => {
|
|
15
|
+
const cellWrapperClasses = `first:pl-0 pl-10 w-80 flex-grow flex flex-col border-solid border-main-divider border border-t-0 border-x-0 ${
|
|
16
|
+
isLastRow ? 'border-t-0 rounded-b-md' : ''
|
|
17
|
+
}`;
|
|
18
|
+
|
|
19
|
+
const cellClasses = `h-full ${DIVIDER_CLASSES}`;
|
|
20
|
+
|
|
21
|
+
return (
|
|
22
|
+
<div className={cellWrapperClasses} role="cell">
|
|
23
|
+
<div className={cellClasses}>{cell.map((item, i) => renderCellInner(item, i))}</div>
|
|
24
|
+
</div>
|
|
25
|
+
);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
const renderCellInner = (
|
|
29
|
+
{ label, description, list, image, buttons }: TariffsTableCellData,
|
|
30
|
+
i: number,
|
|
31
|
+
) => (
|
|
32
|
+
<div key={String(i)} className="first:pt-5 last:pb-5">
|
|
33
|
+
{i > 0 && (
|
|
34
|
+
<div className="border-main-divider border border-solid border-t-0 border-x-0 my-4" />
|
|
35
|
+
)}
|
|
36
|
+
{label && <div className="text-xl font-medium m-0">{label}</div>}
|
|
37
|
+
{description && <div className="text-sm text-secondary-text">{description}</div>}
|
|
38
|
+
{list?.items?.length ? (
|
|
39
|
+
<div className="flex flex-col justify-between items-start">
|
|
40
|
+
<div role="list">
|
|
41
|
+
{list.items.map((text, idx) => (
|
|
42
|
+
<BlockItem
|
|
43
|
+
key={String(idx)}
|
|
44
|
+
text={text}
|
|
45
|
+
version={list.version ?? 'secondary'}
|
|
46
|
+
isDotted={list.isDotted ?? true}
|
|
47
|
+
/>
|
|
48
|
+
))}
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
) : null}
|
|
52
|
+
{image && <Img image={image} />}
|
|
53
|
+
{buttons?.length
|
|
54
|
+
? buttons.map(({ icon, ...buttonProps }, idx) => (
|
|
55
|
+
<Button
|
|
56
|
+
className={`${idx > 0 ? 'ml-3' : ''} w-12 h-12`}
|
|
57
|
+
key={String(idx)}
|
|
58
|
+
appendLeft={icon && <Icon name={icon} width="24px" height="24px" />}
|
|
59
|
+
{...buttonProps}
|
|
60
|
+
/>
|
|
61
|
+
))
|
|
62
|
+
: null}
|
|
63
|
+
</div>
|
|
64
|
+
);
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { CellData, RowHeader } from '../ComparisonTable/ComparisonTableContent';
|
|
2
|
+
import type { IconName } from '../../ui-kit/Icon/IconProps';
|
|
3
|
+
import type { Picture } from '../../model/Picture';
|
|
4
|
+
import type { BlockItemVersion } from '../../ui-kit/BlockItem/BlockItemProps';
|
|
5
|
+
import type { BaseTileIconButton } from '../BaseTile/BaseTileProps';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @title Ряд
|
|
9
|
+
*/
|
|
10
|
+
export type TariffsTableRowData = {
|
|
11
|
+
header: TariffsTableRowHeader;
|
|
12
|
+
data: TariffsTableCellData[][];
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @title Колонка
|
|
17
|
+
*/
|
|
18
|
+
export interface TariffsTableColumn {
|
|
19
|
+
/** @title Данные */
|
|
20
|
+
data?: TariffsTableCellData[][];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @title Список
|
|
25
|
+
*/
|
|
26
|
+
export interface TariffsTableList {
|
|
27
|
+
version?: BlockItemVersion;
|
|
28
|
+
/** @title Маркеры */
|
|
29
|
+
isDotted?: boolean;
|
|
30
|
+
/** @title Элементы списка */
|
|
31
|
+
items?: string[];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @title Ячейка
|
|
36
|
+
*/
|
|
37
|
+
export interface TariffsTableCellData extends CellData {
|
|
38
|
+
list?: TariffsTableList;
|
|
39
|
+
image?: Picture;
|
|
40
|
+
/** @title Кнопки */
|
|
41
|
+
buttons?: BaseTileIconButton[];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @title Параметр
|
|
46
|
+
*/
|
|
47
|
+
export interface TariffsTableRowHeader extends RowHeader {
|
|
48
|
+
icon?: IconName;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @title Таблица тарифов
|
|
53
|
+
*/
|
|
54
|
+
export interface TariffsTableContent {
|
|
55
|
+
/** @title Заголовок */
|
|
56
|
+
title?: string;
|
|
57
|
+
/** @title Колонки */
|
|
58
|
+
columns?: TariffsTableColumn[];
|
|
59
|
+
/** @title Параметры */
|
|
60
|
+
rowHeaders?: TariffsTableRowHeader[];
|
|
61
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { COLUMN_WIDTH, DIVIDER_CLASSES, FIRST_CELL_CLASSES } from './constants';
|
|
3
|
+
import { Icon } from '../../ui-kit/Icon/Icon';
|
|
4
|
+
import { TariffsTableCell } from './TariffsTableCell';
|
|
5
|
+
import { TableRowContainer } from '../ComparisonTable/TableRowContainer';
|
|
6
|
+
import { TableCarouselContainer } from '../ComparisonTable/TableCarouselContainer';
|
|
7
|
+
import type { TariffsTableRowData } from './TariffsTableContent';
|
|
8
|
+
|
|
9
|
+
export interface TariffsTableRowProps {
|
|
10
|
+
className?: string;
|
|
11
|
+
row: TariffsTableRowData;
|
|
12
|
+
activeCardIndex: number;
|
|
13
|
+
isLastRow: boolean;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const TariffsTableRow = JSX<TariffsTableRowProps>(
|
|
17
|
+
({ row: { header, data }, activeCardIndex, isLastRow }) => {
|
|
18
|
+
return (
|
|
19
|
+
<TableRowContainer>
|
|
20
|
+
<div
|
|
21
|
+
className={`text-sm py-5 ${FIRST_CELL_CLASSES} ${DIVIDER_CLASSES} ${
|
|
22
|
+
!isLastRow ? 'border-solid' : ''
|
|
23
|
+
}`}
|
|
24
|
+
>
|
|
25
|
+
<div className="flex items-center text-primary-text">
|
|
26
|
+
{header?.icon && (
|
|
27
|
+
<Icon className="pr-[14px]" name={header.icon} width="24px" height="24px" />
|
|
28
|
+
)}
|
|
29
|
+
{header?.title}
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
{data?.length ? (
|
|
33
|
+
<TableCarouselContainer
|
|
34
|
+
activeCardIndex={activeCardIndex}
|
|
35
|
+
columnWidth={COLUMN_WIDTH}
|
|
36
|
+
version="tariff"
|
|
37
|
+
>
|
|
38
|
+
{data.map((cell, i) => (
|
|
39
|
+
<TariffsTableCell key={String(i)} cell={cell} isLastRow={isLastRow} />
|
|
40
|
+
))}
|
|
41
|
+
</TableCarouselContainer>
|
|
42
|
+
) : null}
|
|
43
|
+
</TableRowContainer>
|
|
44
|
+
);
|
|
45
|
+
},
|
|
46
|
+
);
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
-
"title": "
|
|
2
|
+
"title": "Текстовый блок",
|
|
3
3
|
"description": "Описание",
|
|
4
4
|
"blockVersion": "primary",
|
|
5
|
-
"iconVersion": "small"
|
|
5
|
+
"iconVersion": "small",
|
|
6
|
+
"image": {
|
|
7
|
+
"format": "webp",
|
|
8
|
+
"size": {
|
|
9
|
+
"width": 48,
|
|
10
|
+
"height": 48
|
|
11
|
+
}
|
|
12
|
+
}
|
|
6
13
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import type { Picture } from '../../model/Picture';
|
|
1
2
|
import { context } from '../../setup-fixture';
|
|
2
3
|
import { TextBlock } from './TextBlock';
|
|
3
|
-
import
|
|
4
|
+
import { TextBlockContent } from './TextBlockContent';
|
|
4
5
|
|
|
5
6
|
const image: Picture = {
|
|
6
7
|
src: 'bank-card.png',
|
|
@@ -11,50 +12,31 @@ const image: Picture = {
|
|
|
11
12
|
},
|
|
12
13
|
};
|
|
13
14
|
|
|
15
|
+
export const TEXT_BLOCK: TextBlockContent = {
|
|
16
|
+
title: 'Все карты Россельхозбанка работают',
|
|
17
|
+
description:
|
|
18
|
+
"Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка",
|
|
19
|
+
};
|
|
20
|
+
|
|
14
21
|
export default (
|
|
15
22
|
<div className="font-sans overflow-hidden">
|
|
16
23
|
<div>
|
|
17
24
|
<p>Private clients</p>
|
|
18
25
|
<div className="flex flex-col gap-6" data-theme="pc">
|
|
26
|
+
<TextBlock context={context} {...TEXT_BLOCK} blockVersion="primary" iconVersion="small" />
|
|
19
27
|
<TextBlock
|
|
20
28
|
context={context}
|
|
21
|
-
|
|
22
|
-
description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
|
|
23
|
-
blockVersion="primary"
|
|
24
|
-
iconVersion="small"
|
|
25
|
-
/>
|
|
26
|
-
<TextBlock
|
|
27
|
-
context={context}
|
|
28
|
-
title="Все карты Россельхозбанка работают"
|
|
29
|
-
description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
|
|
29
|
+
{...TEXT_BLOCK}
|
|
30
30
|
blockVersion="primary"
|
|
31
31
|
iconVersion="big"
|
|
32
32
|
image={image}
|
|
33
33
|
/>
|
|
34
|
+
<TextBlock context={context} {...TEXT_BLOCK} blockVersion="primary" iconVersion="none" />
|
|
35
|
+
<TextBlock context={context} {...TEXT_BLOCK} blockVersion="primary" iconVersion="small" />
|
|
36
|
+
<TextBlock context={context} {...TEXT_BLOCK} blockVersion="secondary" iconVersion="small" />
|
|
34
37
|
<TextBlock
|
|
35
38
|
context={context}
|
|
36
|
-
|
|
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' на сайте и в приложении Россельхозбанка"
|
|
39
|
+
{...TEXT_BLOCK}
|
|
58
40
|
blockVersion="secondary-light"
|
|
59
41
|
iconVersion="small"
|
|
60
42
|
/>
|
|
@@ -63,24 +45,11 @@ export default (
|
|
|
63
45
|
<div>
|
|
64
46
|
<p>Business clients</p>
|
|
65
47
|
<div className="flex flex-col gap-6" data-theme="bc">
|
|
48
|
+
<TextBlock context={context} {...TEXT_BLOCK} blockVersion="primary" iconVersion="small" />
|
|
49
|
+
<TextBlock context={context} {...TEXT_BLOCK} blockVersion="secondary" iconVersion="small" />
|
|
66
50
|
<TextBlock
|
|
67
51
|
context={context}
|
|
68
|
-
|
|
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' на сайте и в приложении Россельхозбанка"
|
|
52
|
+
{...TEXT_BLOCK}
|
|
84
53
|
blockVersion="secondary-light"
|
|
85
54
|
iconVersion="small"
|
|
86
55
|
/>
|
|
@@ -89,24 +58,11 @@ export default (
|
|
|
89
58
|
<div>
|
|
90
59
|
<p>Ecosystem own</p>
|
|
91
60
|
<div className="flex flex-col gap-6" data-theme="eo">
|
|
61
|
+
<TextBlock context={context} {...TEXT_BLOCK} blockVersion="primary" iconVersion="small" />
|
|
62
|
+
<TextBlock context={context} {...TEXT_BLOCK} blockVersion="secondary" iconVersion="small" />
|
|
92
63
|
<TextBlock
|
|
93
64
|
context={context}
|
|
94
|
-
|
|
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' на сайте и в приложении Россельхозбанка"
|
|
65
|
+
{...TEXT_BLOCK}
|
|
110
66
|
blockVersion="secondary-light"
|
|
111
67
|
iconVersion="small"
|
|
112
68
|
/>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
2
|
import type { Picture } from '../../model/Picture';
|
|
3
|
-
import type { TextBlockContent, TextBlockVersion } from './TextBlockContent';
|
|
4
3
|
import type { UniBlockProps } from '../../types';
|
|
5
4
|
import { Img } from '../../ui-kit/Img';
|
|
5
|
+
import type { TextBlockContent, TextBlockVersion } from './TextBlockContent';
|
|
6
6
|
|
|
7
7
|
export interface TextBlockProps extends TextBlockContent, UniBlockProps {}
|
|
8
8
|
|
|
@@ -54,7 +54,7 @@ export const TextBlock = JSX<TextBlockProps>(
|
|
|
54
54
|
|
|
55
55
|
function renderIcon(className: string) {
|
|
56
56
|
return (
|
|
57
|
-
<div className={`pt-1.5 pr-4`}>
|
|
57
|
+
<div className={`pt-1.5 pl-1 pr-4`}>
|
|
58
58
|
<div className={`rounded-full h-4 w-4 text-center text-xs ${className}`}>i</div>
|
|
59
59
|
</div>
|
|
60
60
|
);
|
|
@@ -18,9 +18,8 @@ export type TextBlockIconVersion = 'none' | 'small' | 'big';
|
|
|
18
18
|
export interface TextBlockContent {
|
|
19
19
|
/** @title Заголовок */
|
|
20
20
|
title?: string;
|
|
21
|
-
/** @title Описание */
|
|
22
21
|
description?: string;
|
|
23
|
-
blockVersion?: TextBlockVersion;
|
|
24
22
|
iconVersion?: TextBlockIconVersion;
|
|
25
23
|
image?: Picture;
|
|
24
|
+
blockVersion?: TextBlockVersion;
|
|
26
25
|
}
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
"format": "webp",
|
|
7
7
|
"size": {
|
|
8
8
|
"width": 300
|
|
9
|
-
}
|
|
9
|
+
},
|
|
10
|
+
"alt": "Описание картинки",
|
|
11
|
+
"title": "Подсказка"
|
|
10
12
|
},
|
|
11
13
|
"items": ["Пункт 1", "Пункт 2", "Пункт 3"],
|
|
12
14
|
"buttons": [
|
|
@@ -14,5 +16,6 @@
|
|
|
14
16
|
"text": "Подробнее",
|
|
15
17
|
"version": "primary"
|
|
16
18
|
}
|
|
17
|
-
]
|
|
19
|
+
],
|
|
20
|
+
"version": "primary"
|
|
18
21
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import { BaseTile } from '../BaseTile/BaseTile';
|
|
3
2
|
import type { BlockVersion } from '../../model/BlockVersion';
|
|
4
|
-
import type { TileContent } from '../Tile/TileContent';
|
|
5
3
|
import type { UniBlockProps } from '../../types';
|
|
6
4
|
import { getColSpan } from '../../utils/getColSpan';
|
|
5
|
+
import { BaseTile } from '../BaseTile/BaseTile';
|
|
6
|
+
import type { TileContent } from '../Tile/TileContent';
|
|
7
7
|
|
|
8
8
|
export interface TileProps extends TileContent, UniBlockProps {}
|
|
9
9
|
|
|
@@ -17,16 +17,16 @@ export const Tile = JSX<TileProps>((props) => {
|
|
|
17
17
|
|
|
18
18
|
return (
|
|
19
19
|
<section
|
|
20
|
-
className={`font-sans p-9
|
|
20
|
+
className={`font-sans p-9 box-border ${className || ''} ${
|
|
21
21
|
tileStyleMap[version]
|
|
22
|
-
} ${getContainerPaddingRight(className)} `}
|
|
22
|
+
} ${getContainerPaddingRight(className)} ${getContainerMinHeight(className)} `}
|
|
23
23
|
>
|
|
24
24
|
<BaseTile {...props}>{children}</BaseTile>
|
|
25
25
|
</section>
|
|
26
26
|
);
|
|
27
27
|
});
|
|
28
28
|
|
|
29
|
-
function getContainerPaddingRight(className
|
|
29
|
+
function getContainerPaddingRight(className = '') {
|
|
30
30
|
const colSpan = getColSpan(className);
|
|
31
31
|
if (colSpan <= 6) {
|
|
32
32
|
return 'pr-9';
|
|
@@ -36,3 +36,14 @@ function getContainerPaddingRight(className: string = '') {
|
|
|
36
36
|
return 'pr-[9.4rem]';
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
+
|
|
40
|
+
function getContainerMinHeight(className = '') {
|
|
41
|
+
const colSpan = getColSpan(className);
|
|
42
|
+
if (colSpan <= 6) {
|
|
43
|
+
return 'min-h-[300px]';
|
|
44
|
+
} else if (colSpan <= 8) {
|
|
45
|
+
return 'min-h-[320px]';
|
|
46
|
+
} else {
|
|
47
|
+
return 'min-h-[360px]';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -8,6 +8,7 @@ import { transformContentPage } from './transformContentPage';
|
|
|
8
8
|
const INDEX_PAGE_SLUG = 'index';
|
|
9
9
|
const find = util.promisify(glob);
|
|
10
10
|
|
|
11
|
+
// eslint-disable-next-line max-lines-per-function
|
|
11
12
|
export function ContentPageRepository({
|
|
12
13
|
contentDir = 'content',
|
|
13
14
|
publicDir = 'public',
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const useComparisonTableScroll = <ColData>({
|
|
2
|
+
colData,
|
|
3
|
+
colsLengthForScroll,
|
|
4
|
+
activeCardIndex,
|
|
5
|
+
setActiveCardIndex,
|
|
6
|
+
}: {
|
|
7
|
+
colData: ColData[];
|
|
8
|
+
colsLengthForScroll: number;
|
|
9
|
+
activeCardIndex: number;
|
|
10
|
+
setActiveCardIndex: (_: number) => void;
|
|
11
|
+
}) => {
|
|
12
|
+
const nextClick = () => setActiveCardIndex(activeCardIndex + 1);
|
|
13
|
+
const prevClick = () => setActiveCardIndex(activeCardIndex - 1);
|
|
14
|
+
|
|
15
|
+
const isScrollAvailable = colData?.length && colData.length > colsLengthForScroll;
|
|
16
|
+
const showNextButton =
|
|
17
|
+
isScrollAvailable && colData?.length - activeCardIndex > colsLengthForScroll;
|
|
18
|
+
const showPrevButton = isScrollAvailable && activeCardIndex > 0;
|
|
19
|
+
|
|
20
|
+
return { nextClick, prevClick, isScrollAvailable, showNextButton, showPrevButton };
|
|
21
|
+
};
|
package/src/hooks/useLink.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { HandlerDecorator, Router } from '../components/ContentPage/ContentPageC
|
|
|
2
2
|
import type { LinkProps } from '../model/LinkProps';
|
|
3
3
|
import { adjustHref, isURL } from '../utils/url';
|
|
4
4
|
|
|
5
|
-
const defaultHandlerDecorator: HandlerDecorator = (handler
|
|
5
|
+
const defaultHandlerDecorator: HandlerDecorator = (handler) => handler;
|
|
6
6
|
|
|
7
7
|
export function useLink(
|
|
8
8
|
{
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type TableVersion = 'comparison' | 'tariff';
|
|
@@ -2,4 +2,11 @@ import '../../setup-fixture';
|
|
|
2
2
|
|
|
3
3
|
import { BlockItem } from './BlockItem';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default {
|
|
6
|
+
primary: <BlockItem text="Совершайте любые личные покупки" />,
|
|
7
|
+
'primary without dot': <BlockItem text="Совершайте любые личные покупки" isDotted={false} />,
|
|
8
|
+
secondary: <BlockItem text="Совершайте любые личные покупки" version="secondary" />,
|
|
9
|
+
'secondary without dot': (
|
|
10
|
+
<BlockItem text="Совершайте любые личные покупки" isDotted={false} version="secondary" />
|
|
11
|
+
),
|
|
12
|
+
};
|
|
@@ -1,33 +1,22 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
|
|
3
|
-
type BlockItemVersion = 'primary' | 'secondary';
|
|
4
|
-
export interface BlockItemContent {
|
|
5
|
-
text?: string;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export interface BlockItemProps extends BlockItemContent {
|
|
9
|
-
className?: string;
|
|
10
|
-
version?: BlockItemVersion;
|
|
11
|
-
}
|
|
2
|
+
import { BlockItemProps, BlockItemVersion } from './BlockItemProps';
|
|
12
3
|
|
|
13
4
|
const listStyleMap: Record<BlockItemVersion, string> = {
|
|
14
|
-
primary: 'bg-primary-main',
|
|
15
|
-
secondary: 'bg-
|
|
5
|
+
primary: 'bg-primary-main w-[8px] h-[8px] min-w-[8px] min-h-[8px] mt-2 rounded-full',
|
|
6
|
+
secondary: 'bg-secondary-text w-[6px] h-[6px] min-w-[6px] min-h-[6px] mt-2.5 rounded-full',
|
|
16
7
|
};
|
|
17
8
|
|
|
18
9
|
const textStyleMap: Record<BlockItemVersion, string> = {
|
|
19
10
|
primary: 'text-primary-text',
|
|
20
|
-
secondary: 'text-
|
|
11
|
+
secondary: 'text-secondary-text',
|
|
21
12
|
};
|
|
22
13
|
|
|
23
14
|
export const BlockItem = JSX<BlockItemProps>(
|
|
24
|
-
({ className, text, children, version = 'primary' }) => {
|
|
15
|
+
({ className, isDotted = true, text, children, version = 'primary' }) => {
|
|
25
16
|
return (
|
|
26
17
|
<div className={`inline-block flex ${className || ''}`} role="listitem">
|
|
27
|
-
<div
|
|
28
|
-
|
|
29
|
-
></div>
|
|
30
|
-
<span className={`text-base font-normal font-sans mx-3 ${textStyleMap[version]}`}>
|
|
18
|
+
{isDotted && <div className={`inline-block mr-3 ${listStyleMap[version]}`} />}
|
|
19
|
+
<span className={`text-base font-normal font-sans mr-3 ${textStyleMap[version]}`}>
|
|
31
20
|
{text || children}
|
|
32
21
|
</span>
|
|
33
22
|
</div>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title Версия списка
|
|
3
|
+
*/
|
|
4
|
+
export type BlockItemVersion = 'primary' | 'secondary';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @title Содержимое элемента блока
|
|
8
|
+
*/
|
|
9
|
+
export interface BlockItemContent {
|
|
10
|
+
/** @title Текст */
|
|
11
|
+
text?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @title Параметры элемента блока
|
|
16
|
+
*/
|
|
17
|
+
export interface BlockItemProps extends BlockItemContent {
|
|
18
|
+
className?: string;
|
|
19
|
+
version?: BlockItemVersion;
|
|
20
|
+
/** @title Маркер */
|
|
21
|
+
isDotted?: boolean;
|
|
22
|
+
}
|