@redneckz/wildless-cms-uni-blocks 0.6.29 → 0.6.30
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 +86 -67
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/components/Carousel/Carousel.d.ts +1 -1
- package/bundle/components/Carousel/CarouselNavButtons.d.ts +11 -0
- package/bundle/components/CarouselCard/CarouselCard.d.ts +1 -1
- package/bundle/components/CarouselCard/CarouselCardContent.d.ts +5 -2
- package/bundle/components/CarouselCard/constants.d.ts +3 -0
- package/bundle/components/CarouselTariffsCard/CarouselTariffsCard.d.ts +5 -0
- package/bundle/components/CarouselTariffsCard/CarouselTariffsCardContent.d.ts +15 -0
- package/bundle/icons/IconName.d.ts +4 -2
- package/bundle/ui-kit/Foldable/Foldable.d.ts +1 -1
- package/cosmos-static/icons/HeartIcon.svg +1 -0
- package/dist/components/Blocks.js +7 -5
- package/dist/components/Blocks.js.map +1 -1
- package/dist/components/Carousel/Carousel.d.ts +1 -1
- package/dist/components/Carousel/Carousel.js +4 -4
- package/dist/components/Carousel/Carousel.js.map +1 -1
- package/dist/components/Carousel/CarouselNavButtons.d.ts +11 -0
- package/dist/components/Carousel/CarouselNavButtons.js +36 -0
- package/dist/components/Carousel/CarouselNavButtons.js.map +1 -0
- package/dist/components/CarouselCard/CarouselCard.d.ts +1 -1
- package/dist/components/CarouselCard/CarouselCard.js +2 -2
- package/dist/components/CarouselCard/CarouselCard.js.map +1 -1
- package/dist/components/CarouselCard/CarouselCardContent.d.ts +5 -2
- package/dist/components/CarouselCard/constants.d.ts +3 -0
- package/dist/components/CarouselCard/constants.js +11 -0
- package/dist/components/CarouselCard/constants.js.map +1 -0
- package/dist/components/CarouselTariffsCard/CarouselTariffsCard.d.ts +5 -0
- package/dist/components/CarouselTariffsCard/CarouselTariffsCard.js +29 -0
- package/dist/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -0
- package/dist/components/CarouselTariffsCard/CarouselTariffsCardContent.d.ts +15 -0
- package/dist/components/CarouselTariffsCard/CarouselTariffsCardContent.js +2 -0
- package/dist/components/CarouselTariffsCard/CarouselTariffsCardContent.js.map +1 -0
- package/dist/components/MobileAppTile/MobileAppTile.js +1 -1
- package/dist/icons/IconName.d.ts +4 -2
- package/dist/icons/IconName.js +3 -1
- package/dist/icons/IconName.js.map +1 -1
- package/dist/ui-kit/Button/ButtonInner.js +1 -1
- package/dist/ui-kit/Foldable/Foldable.d.ts +1 -1
- package/lib/common.css +1 -1
- package/lib/components/Blocks.js +7 -5
- package/lib/components/Blocks.js.map +1 -1
- package/lib/components/Carousel/Carousel.d.ts +1 -1
- package/lib/components/Carousel/Carousel.fixture.d.ts +1 -0
- package/lib/components/Carousel/Carousel.js +4 -4
- package/lib/components/Carousel/Carousel.js.map +1 -1
- package/lib/components/Carousel/CarouselNavButtons.d.ts +11 -0
- package/lib/components/Carousel/CarouselNavButtons.js +34 -0
- package/lib/components/Carousel/CarouselNavButtons.js.map +1 -0
- package/lib/components/CarouselCard/CarouselCard.d.ts +1 -1
- package/lib/components/CarouselCard/CarouselCard.js +2 -2
- package/lib/components/CarouselCard/CarouselCard.js.map +1 -1
- package/lib/components/CarouselCard/CarouselCardContent.d.ts +5 -2
- package/lib/components/CarouselCard/constants.d.ts +3 -0
- package/lib/components/CarouselCard/constants.js +9 -0
- package/lib/components/CarouselCard/constants.js.map +1 -0
- package/lib/components/CarouselTariffsCard/CarouselTariffsCard.d.ts +5 -0
- package/lib/components/CarouselTariffsCard/CarouselTariffsCard.fixture.d.ts +9 -0
- package/lib/components/CarouselTariffsCard/CarouselTariffsCard.js +27 -0
- package/lib/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -0
- package/lib/components/CarouselTariffsCard/CarouselTariffsCardContent.d.ts +15 -0
- package/lib/components/CarouselTariffsCard/CarouselTariffsCardContent.js +2 -0
- package/lib/components/CarouselTariffsCard/CarouselTariffsCardContent.js.map +1 -0
- package/lib/components/MobileAppTile/MobileAppTile.js +1 -1
- package/lib/icons/IconName.d.ts +4 -2
- package/lib/icons/IconName.js +3 -1
- package/lib/icons/IconName.js.map +1 -1
- package/lib/ui-kit/Button/ButtonInner.js +1 -1
- package/lib/ui-kit/Foldable/Foldable.d.ts +1 -1
- package/mobile/bundle/bundle.umd.js +2 -2
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/components/Carousel/Carousel.d.ts +1 -1
- package/mobile/bundle/components/Carousel/CarouselNavButtons.d.ts +11 -0
- package/mobile/bundle/components/CarouselCard/CarouselCard.d.ts +1 -1
- package/mobile/bundle/components/CarouselCard/CarouselCardContent.d.ts +5 -2
- package/mobile/bundle/components/CarouselCard/constants.d.ts +3 -0
- package/mobile/bundle/components/CarouselTariffsCard/CarouselTariffsCard.d.ts +5 -0
- package/mobile/bundle/components/CarouselTariffsCard/CarouselTariffsCardContent.d.ts +15 -0
- package/mobile/bundle/icons/IconName.d.ts +4 -2
- package/mobile/bundle/ui-kit/Foldable/Foldable.d.ts +1 -1
- package/mobile/dist/components/Carousel/Carousel.d.ts +1 -1
- package/mobile/dist/components/Carousel/Carousel.js +4 -4
- package/mobile/dist/components/Carousel/Carousel.js.map +1 -1
- package/mobile/dist/components/Carousel/CarouselNavButtons.d.ts +11 -0
- package/mobile/dist/components/Carousel/CarouselNavButtons.js +36 -0
- package/mobile/dist/components/Carousel/CarouselNavButtons.js.map +1 -0
- package/mobile/dist/components/CarouselCard/CarouselCard.d.ts +1 -1
- package/mobile/dist/components/CarouselCard/CarouselCard.js +2 -2
- package/mobile/dist/components/CarouselCard/CarouselCard.js.map +1 -1
- package/mobile/dist/components/CarouselCard/CarouselCardContent.d.ts +5 -2
- package/mobile/dist/components/CarouselCard/constants.d.ts +3 -0
- package/mobile/dist/components/CarouselCard/constants.js +11 -0
- package/mobile/dist/components/CarouselCard/constants.js.map +1 -0
- package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCard.d.ts +5 -0
- package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCard.js +29 -0
- package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -0
- package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCardContent.d.ts +15 -0
- package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCardContent.js +2 -0
- package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCardContent.js.map +1 -0
- package/mobile/dist/icons/IconName.d.ts +4 -2
- package/mobile/dist/icons/IconName.js +3 -1
- package/mobile/dist/icons/IconName.js.map +1 -1
- package/mobile/dist/ui-kit/Button/ButtonInner.js +1 -1
- package/mobile/dist/ui-kit/Foldable/Foldable.d.ts +1 -1
- package/mobile/lib/components/Carousel/Carousel.d.ts +1 -1
- package/mobile/lib/components/Carousel/Carousel.js +4 -4
- package/mobile/lib/components/Carousel/Carousel.js.map +1 -1
- package/mobile/lib/components/Carousel/CarouselNavButtons.d.ts +11 -0
- package/mobile/lib/components/Carousel/CarouselNavButtons.js +34 -0
- package/mobile/lib/components/Carousel/CarouselNavButtons.js.map +1 -0
- package/mobile/lib/components/CarouselCard/CarouselCard.d.ts +1 -1
- package/mobile/lib/components/CarouselCard/CarouselCard.js +2 -2
- package/mobile/lib/components/CarouselCard/CarouselCard.js.map +1 -1
- package/mobile/lib/components/CarouselCard/CarouselCardContent.d.ts +5 -2
- package/mobile/lib/components/CarouselCard/constants.d.ts +3 -0
- package/mobile/lib/components/CarouselCard/constants.js +9 -0
- package/mobile/lib/components/CarouselCard/constants.js.map +1 -0
- package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCard.d.ts +5 -0
- package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCard.js +27 -0
- package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -0
- package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCardContent.d.ts +15 -0
- package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCardContent.js +2 -0
- package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCardContent.js.map +1 -0
- package/mobile/lib/icons/IconName.d.ts +4 -2
- package/mobile/lib/icons/IconName.js +3 -1
- package/mobile/lib/icons/IconName.js.map +1 -1
- package/mobile/lib/ui-kit/Button/ButtonInner.js +1 -1
- package/mobile/lib/ui-kit/Foldable/Foldable.d.ts +1 -1
- package/mobile/src/components/Carousel/Carousel.tsx +5 -5
- package/mobile/src/components/Carousel/CarouselNavButtons.tsx +51 -0
- package/mobile/src/components/CarouselCard/CarouselCard.tsx +4 -4
- package/mobile/src/components/CarouselCard/CarouselCardContent.ts +5 -2
- package/mobile/src/components/CarouselCard/constants.ts +11 -0
- package/mobile/src/components/CarouselTariffsCard/CarouselTariffsCard.example.json +24 -0
- package/mobile/src/components/CarouselTariffsCard/CarouselTariffsCard.tsx +93 -0
- package/mobile/src/components/CarouselTariffsCard/CarouselTariffsCard.ui.json +1 -0
- package/mobile/src/components/CarouselTariffsCard/CarouselTariffsCardContent.ts +16 -0
- package/mobile/src/icons/HeartIcon.svg +3 -0
- package/mobile/src/icons/IconName.ts +5 -5
- package/mobile/src/ui-kit/Button/ButtonInner.tsx +1 -1
- package/mobile/src/ui-kit/Foldable/Foldable.tsx +1 -1
- package/package.json +1 -1
- package/src/components/Blocks.ts +7 -5
- package/src/components/Carousel/Carousel.fixture.tsx +29 -1
- package/src/components/Carousel/Carousel.tsx +5 -5
- package/src/components/Carousel/CarouselNavButtons.tsx +51 -0
- package/src/components/CarouselCard/CarouselCard.tsx +4 -4
- package/src/components/CarouselCard/CarouselCardContent.ts +5 -2
- package/src/components/CarouselCard/constants.ts +11 -0
- package/src/components/CarouselTariffsCard/CarouselTariffsCard.example.json +24 -0
- package/src/components/CarouselTariffsCard/CarouselTariffsCard.fixture.tsx +64 -0
- package/src/components/CarouselTariffsCard/CarouselTariffsCard.tsx +93 -0
- package/src/components/CarouselTariffsCard/CarouselTariffsCard.ui.json +1 -0
- package/src/components/CarouselTariffsCard/CarouselTariffsCardContent.ts +16 -0
- package/src/components/MobileAppTile/MobileAppTile.tsx +1 -1
- package/src/icons/HeartIcon.svg +3 -0
- package/src/icons/IconName.ts +327 -6
- package/src/ui-kit/Button/ButtonInner.tsx +1 -1
- package/src/ui-kit/Foldable/Foldable.tsx +1 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
|
+
import type { VNode } from '../../model/VNode';
|
|
4
|
+
import { renderArrows } from '../../ui-kit/Button/renderArrows';
|
|
5
|
+
|
|
6
|
+
interface CarouselNavButtonsProps {
|
|
7
|
+
cardsCount: number;
|
|
8
|
+
activeCardIndex: number;
|
|
9
|
+
setActiveCardIndex: (index: number) => void;
|
|
10
|
+
cardFullViewCount: number;
|
|
11
|
+
cards?: VNode[];
|
|
12
|
+
isCycle?: boolean;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const CarouselNavButtons = JSX<CarouselNavButtonsProps>(
|
|
16
|
+
({ cardsCount, activeCardIndex, setActiveCardIndex, cardFullViewCount, isCycle }) => {
|
|
17
|
+
const isGalleryScrollAvailable = cardsCount > cardFullViewCount;
|
|
18
|
+
|
|
19
|
+
const showNextButton =
|
|
20
|
+
(isCycle && isGalleryScrollAvailable) ||
|
|
21
|
+
(isGalleryScrollAvailable && cardsCount - activeCardIndex > cardFullViewCount);
|
|
22
|
+
|
|
23
|
+
const showPrevButton =
|
|
24
|
+
(isCycle && isGalleryScrollAvailable) || (isGalleryScrollAvailable && activeCardIndex > 0);
|
|
25
|
+
|
|
26
|
+
const handleNextClick = useCallback(() => {
|
|
27
|
+
if (isCycle) {
|
|
28
|
+
const nextIndex = activeCardIndex + 1;
|
|
29
|
+
setActiveCardIndex(cardsCount === nextIndex ? 0 : nextIndex);
|
|
30
|
+
} else {
|
|
31
|
+
setActiveCardIndex(activeCardIndex + 1);
|
|
32
|
+
}
|
|
33
|
+
}, []);
|
|
34
|
+
|
|
35
|
+
const handlePrevClick = useCallback(() => {
|
|
36
|
+
if (isCycle && cardsCount > 0) {
|
|
37
|
+
const prevIndex = activeCardIndex - 1;
|
|
38
|
+
setActiveCardIndex(prevIndex < 0 ? cardsCount - 1 : prevIndex);
|
|
39
|
+
} else {
|
|
40
|
+
setActiveCardIndex(activeCardIndex - 1);
|
|
41
|
+
}
|
|
42
|
+
}, []);
|
|
43
|
+
|
|
44
|
+
return renderArrows({
|
|
45
|
+
handler: [handlePrevClick, handleNextClick],
|
|
46
|
+
isShown: [showPrevButton, showNextButton],
|
|
47
|
+
btnClass: ['left-8', 'right-8'],
|
|
48
|
+
className: 'top-1/2 z-10',
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Headline } from '../Headline/Headline';
|
|
2
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
3
|
-
import { renderButton } from '../../ui-kit/Button/ButtonSection';
|
|
4
|
-
import type { CarouselCardContent } from './CarouselCardContent';
|
|
5
2
|
import type { CarouselCardVersion } from '../../model/CarouselCardVersion';
|
|
6
3
|
import type { UniBlockProps } from '../../model/JSXBlock';
|
|
4
|
+
import { renderButton } from '../../ui-kit/Button/ButtonSection';
|
|
5
|
+
import { Headline } from '../Headline/Headline';
|
|
6
|
+
import type { CarouselCardContent } from './CarouselCardContent';
|
|
7
7
|
|
|
8
8
|
export interface CarouselCardProps extends CarouselCardContent, UniBlockProps {
|
|
9
9
|
version?: CarouselCardVersion;
|
|
@@ -13,7 +13,7 @@ const BLOCK_CLASSES = 'absolute border border-solid border-main-stroke w-[100%]
|
|
|
13
13
|
|
|
14
14
|
const CARD_STYLE_MAP: Record<CarouselCardVersion, string> = {
|
|
15
15
|
normal: 'min-w-[100%] justify-center items-center my-7 col-span-12',
|
|
16
|
-
mini: '
|
|
16
|
+
mini: 'justify-center items-center mx-4 my-9 col-span-4',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
const CARD_WIDTH_MAP: Record<CarouselCardVersion, string> = {
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import type { ButtonWithIconProps } from '../../ui-kit/Button/ButtonProps';
|
|
2
|
-
import type { HeadlineCommonProps } from '../../model/HeadlineType';
|
|
3
1
|
import type { CarouselCardVersion } from '../../model/CarouselCardVersion';
|
|
2
|
+
import type { HeadlineCommonProps } from '../../model/HeadlineType';
|
|
3
|
+
import type { ButtonWithIconProps } from '../../ui-kit/Button/ButtonProps';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* @title Карточка какусели
|
|
7
|
+
*/
|
|
5
8
|
export interface CarouselCardContent extends HeadlineCommonProps {
|
|
6
9
|
/**
|
|
7
10
|
* @title Кнопка
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CarouselCardVersion } from '../../model/CarouselCardVersion';
|
|
2
|
+
|
|
3
|
+
export const cardStyleMap: Record<CarouselCardVersion, string> = {
|
|
4
|
+
normal: 'min-w-[100%] justify-center items-center m-7 col-span-12',
|
|
5
|
+
mini: 'min-w-auto justify-center items-center m-9 col-span-4',
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export const cardWidthMap: Record<CarouselCardVersion, string> = {
|
|
9
|
+
normal: 'w-[1007px]',
|
|
10
|
+
mini: 'w-[350px]',
|
|
11
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Заголовок",
|
|
3
|
+
"button": {
|
|
4
|
+
"href": "",
|
|
5
|
+
"text": "Кнопка",
|
|
6
|
+
"target": "_self",
|
|
7
|
+
"version": "primary"
|
|
8
|
+
},
|
|
9
|
+
"isHighlighting": false,
|
|
10
|
+
"rows": [
|
|
11
|
+
{
|
|
12
|
+
"title": "Ячейка 1-1",
|
|
13
|
+
"description": "Описание 1-1"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"title": "Ячейка 1-2",
|
|
17
|
+
"description": "Описание 1-2"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"title": "Ячейка 1-3",
|
|
21
|
+
"description": "Описание 1-3"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import type { HeadlineCommonProps } from '../../model/HeadlineType';
|
|
3
|
+
import type { UniBlockProps } from '../../model/JSXBlock';
|
|
4
|
+
import { VNode } from '../../model/VNode';
|
|
5
|
+
import { BlockWrapper } from '../../ui-kit/BlockWrapper';
|
|
6
|
+
import { Button } from '../../ui-kit/Button/Button';
|
|
7
|
+
import { Foldable } from '../../ui-kit/Foldable/Foldable';
|
|
8
|
+
import { FoldablePartProps } from '../../ui-kit/Foldable/FoldablePartProps';
|
|
9
|
+
import { FoldableSection } from '../../ui-kit/Foldable/FoldableSection';
|
|
10
|
+
import { Heading } from '../../ui-kit/Heading/Heading';
|
|
11
|
+
import { Icon } from '../../ui-kit/Icon/Icon';
|
|
12
|
+
import { Img } from '../../ui-kit/Img/Img';
|
|
13
|
+
import type { CarouselTariffsCardContent } from './CarouselTariffsCardContent';
|
|
14
|
+
|
|
15
|
+
export interface CarouselTariffsCardProps extends CarouselTariffsCardContent, UniBlockProps {}
|
|
16
|
+
|
|
17
|
+
export const CarouselTariffsCard = JSX<CarouselTariffsCardProps>(
|
|
18
|
+
({ className = '', title, icon, isHighlighting, button, rows = [], ...rest }) => {
|
|
19
|
+
const hitStyle = getHitStyle(Boolean(isHighlighting));
|
|
20
|
+
const rowsNode = rows.map(renderCardInfo);
|
|
21
|
+
const VISIBLE_ROWS_COUNT = 1;
|
|
22
|
+
const [visibleRows, hiddenRows] = [
|
|
23
|
+
rowsNode.slice(0, VISIBLE_ROWS_COUNT),
|
|
24
|
+
rowsNode.slice(VISIBLE_ROWS_COUNT),
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<BlockWrapper
|
|
29
|
+
className={`font-sans bg-white p-[50px] p-8 border border-main-stroke relative w-[322px] min-w-[322px] -ml-[1px] ${hitStyle} ${className}`}
|
|
30
|
+
{...rest}
|
|
31
|
+
>
|
|
32
|
+
{isHighlighting ? renderHitIcon() : null}
|
|
33
|
+
{icon?.src ? <Img className="flex justify-center" image={icon} /> : null}
|
|
34
|
+
{title ? (
|
|
35
|
+
<Heading className="text-primary-text text-center pt-2" headingType="h5" title={title} />
|
|
36
|
+
) : null}
|
|
37
|
+
{button ? <Button className="w-full mt-4" {...button} /> : null}
|
|
38
|
+
{rows?.length ? (
|
|
39
|
+
<Foldable
|
|
40
|
+
renderFoldableSection={({ isUnfolded }) => (
|
|
41
|
+
<div>
|
|
42
|
+
{visibleRows}
|
|
43
|
+
<FoldableSection isUnfolded={isUnfolded}>{hiddenRows}</FoldableSection>
|
|
44
|
+
</div>
|
|
45
|
+
)}
|
|
46
|
+
renderFoldButton={rows.length > 1 ? renderFoldButton : null}
|
|
47
|
+
/>
|
|
48
|
+
) : null}
|
|
49
|
+
</BlockWrapper>
|
|
50
|
+
);
|
|
51
|
+
},
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
const getHitStyle = (isHighlighting: boolean): string =>
|
|
55
|
+
isHighlighting ? 'mt-9 pt-[71px]' : 'mt-[70px] pt-9';
|
|
56
|
+
|
|
57
|
+
const renderFoldButton = ({ isUnfolded, onToggle }: FoldablePartProps): VNode => (
|
|
58
|
+
<button
|
|
59
|
+
className="w-full cursor-pointer text-primary-main pt-5 flex justify-between items-center"
|
|
60
|
+
onClick={onToggle}
|
|
61
|
+
>
|
|
62
|
+
<div>{isUnfolded ? 'Скрыть' : 'Подробнее о тарифе'}</div>
|
|
63
|
+
<Icon
|
|
64
|
+
className="text-primary-text"
|
|
65
|
+
name={isUnfolded ? 'ArrowUpIcon' : 'ArrowDownIcon'}
|
|
66
|
+
width="16"
|
|
67
|
+
height="16"
|
|
68
|
+
asSVG
|
|
69
|
+
/>
|
|
70
|
+
</button>
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
const renderCardInfo = (cell: HeadlineCommonProps): VNode => (
|
|
74
|
+
<div className="py-5 border-b border-main-divider flex flex-col gap-1">
|
|
75
|
+
{cell?.title ? (
|
|
76
|
+
<div className="text-secondary-text text-m-light opacity-80">{cell.title}</div>
|
|
77
|
+
) : null}
|
|
78
|
+
{cell?.description ? <div className="text-primary-text text-h6">{cell.description}</div> : null}
|
|
79
|
+
</div>
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
const renderHitIcon = (): VNode => {
|
|
83
|
+
const POSITION_STYLE = 'absolute -top-7 -right-4';
|
|
84
|
+
|
|
85
|
+
return (
|
|
86
|
+
<div
|
|
87
|
+
className={`h-[60px] w-[60px] bg-white flex flex-col items-center justify-center shadow-[0_4px_25px_rgba(0,0,0,0.07)] ${POSITION_STYLE}`}
|
|
88
|
+
>
|
|
89
|
+
<Icon iconVersion="black" name="HeartIcon" width="23" height="22" asSVG />
|
|
90
|
+
<div className="text-center">Хит</div>
|
|
91
|
+
</div>
|
|
92
|
+
);
|
|
93
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { HeadlineCommonProps, TitleProps } from '../../model/HeadlineType';
|
|
2
|
+
import type { Picture } from '../../model/Picture';
|
|
3
|
+
import type { ButtonProps } from '../../ui-kit/Button/ButtonProps';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @title Карточка тарифной карусели
|
|
7
|
+
*/
|
|
8
|
+
export type CarouselTariffsCardContent = TitleProps & {
|
|
9
|
+
icon?: Picture;
|
|
10
|
+
/** @title Выделить карточку */
|
|
11
|
+
isHighlighting?: boolean;
|
|
12
|
+
/** @title Кнопка */
|
|
13
|
+
button?: ButtonProps;
|
|
14
|
+
/** @title Ячейка */
|
|
15
|
+
rows?: HeadlineCommonProps[];
|
|
16
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg title="Сердце" width="24" height="22" viewBox="0 0 24 22" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M7.87565 3.66675C5.09122 3.66675 2.83398 5.92398 2.83398 8.70841C2.83398 13.7501 8.79232 18.3334 12.0007 19.3996C15.209 18.3334 21.1673 13.7501 21.1673 8.70841C21.1673 5.92398 18.9101 3.66675 16.1257 3.66675C14.4205 3.66675 12.9131 4.51324 12.0007 5.80893C11.0882 4.51324 9.5808 3.66675 7.87565 3.66675Z" fill="currentColor" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
+
</svg>
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
/* eslint-disable max-len, max-lines */
|
|
4
4
|
|
|
5
5
|
export const IconsWithoutInversion = new Set([
|
|
6
|
-
'ActualBalanceIcon', 'AirPlaneIcon', 'CardWithGemIcon', 'CarIcon', 'CinemaIcon', 'ClockIcon', 'ComfortableCompIcon', 'CreditCardsIcon', 'DocsIcon', 'DollarIcon', 'DoneIcon', 'EarthIcon', 'EuroIcon', 'FullScreenIcon', 'GlassIcon', 'HuaweiIcon', 'InterestGrowthIcon', 'JCBIcon', 'MapMarkerClusterIcon', 'MapMarkerSingleIcon', 'MasterCardIcon', 'MirIcon', 'MoneyInsuranceIcon', 'NewDocIcon', 'OfficeIcon', 'PackA4Icon', 'PassSendIcon', 'PowerIcon', 'PumpkinIcon', 'SignDocsIcon', 'SoundIcon', 'UnionPayIcon', 'UserGeoLocationIcon', 'VisaIcon', 'WateringCanIcon'
|
|
6
|
+
'ActualBalanceIcon', 'AirPlaneIcon', 'CardWithGemIcon', 'CarIcon', 'CinemaIcon', 'ClockIcon', 'ComfortableCompIcon', 'CreditCardsIcon', 'DocsIcon', 'DollarIcon', 'DoneIcon', 'EarthIcon', 'EuroIcon', 'FullScreenIcon', 'GlassIcon', 'HeartIcon', 'HuaweiIcon', 'InterestGrowthIcon', 'JCBIcon', 'MapMarkerClusterIcon', 'MapMarkerSingleIcon', 'MasterCardIcon', 'MirIcon', 'MoneyInsuranceIcon', 'NewDocIcon', 'OfficeIcon', 'PackA4Icon', 'PassSendIcon', 'PowerIcon', 'PumpkinIcon', 'SignDocsIcon', 'SoundIcon', 'UnionPayIcon', 'UserGeoLocationIcon', 'VisaIcon', 'WateringCanIcon'
|
|
7
7
|
]);
|
|
8
8
|
|
|
9
9
|
export enum IconMap {
|
|
10
|
-
ActualBalanceIcon = 'ActualBalanceIcon', AirPlaneIcon = 'AirPlaneIcon', AppleIcon = 'AppleIcon', ArrowDownIcon = 'ArrowDownIcon', ArrowLeftIcon = 'ArrowLeftIcon', ArrowUpIcon = 'ArrowUpIcon', AtmIcon = 'AtmIcon', BankIcon = 'BankIcon', BuildingIcon = 'BuildingIcon', BurgerIcon = 'BurgerIcon', Calendar2Icon = 'Calendar2Icon', CalendarCircleIcon = 'CalendarCircleIcon', CalendarIcon = 'CalendarIcon', CalendarTickIcon = 'CalendarTickIcon', Car2Icon = 'Car2Icon', CardIcon = 'CardIcon', CardPosIcon = 'CardPosIcon', CardTickIcon = 'CardTickIcon', CardWithGemIcon = 'CardWithGemIcon', CarIcon = 'CarIcon', ChartSquareIcon = 'ChartSquareIcon', CinemaIcon = 'CinemaIcon', ClockIcon = 'ClockIcon', CloseIcon = 'CloseIcon', ComfortableCompIcon = 'ComfortableCompIcon', CreditCardsIcon = 'CreditCardsIcon', DiscountShapeIcon = 'DiscountShapeIcon', DocDownloadIcon = 'DocDownloadIcon', DocIcon = 'DocIcon', DocIconMonoColor = 'DocIconMonoColor', DocsIcon = 'DocsIcon', DocumentText2Icon = 'DocumentText2Icon', DocumentTextIcon = 'DocumentTextIcon', DollarIcon = 'DollarIcon', DoneIcon = 'DoneIcon', DoneSimpleIcon = 'DoneSimpleIcon', EarthIcon = 'EarthIcon', EmptyWalletChangeIcon = 'EmptyWalletChangeIcon', EmptyWalletIcon = 'EmptyWalletIcon', EuroIcon = 'EuroIcon', FullScreenIcon = 'FullScreenIcon', GeolocationIcon = 'GeolocationIcon', GlassIcon = 'GlassIcon', GlobalIcon = 'GlobalIcon', GpsIcon = 'GpsIcon', GridIcon = 'GridIcon', HuaweiIcon = 'HuaweiIcon', InterestGrowthIcon = 'InterestGrowthIcon', InterestIcon = 'InterestIcon', JCBIcon = 'JCBIcon', LogoIcon = 'LogoIcon', LoupeIcon = 'LoupeIcon', MapMarkerClusterIcon = 'MapMarkerClusterIcon', MapMarkerSingleIcon = 'MapMarkerSingleIcon', MasterCardIcon = 'MasterCardIcon', MetroIcon = 'MetroIcon', MinusIcon = 'MinusIcon', MirIcon = 'MirIcon', MoneyIcon = 'MoneyIcon', MoneyInsuranceIcon = 'MoneyInsuranceIcon', MoneysIcon = 'MoneysIcon', MonitorMobileIcon = 'MonitorMobileIcon', NewDocIcon = 'NewDocIcon', OfficeIcon = 'OfficeIcon', OkIcon = 'OkIcon', PackA4Icon = 'PackA4Icon', PassSendIcon = 'PassSendIcon', PercentageRoundIcon = 'PercentageRoundIcon', PercentageSquareIcon = 'PercentageSquareIcon', PersonalCardIcon = 'PersonalCardIcon', PlayMarketIcon = 'PlayMarketIcon', PlusIcon = 'PlusIcon', PowerIcon = 'PowerIcon', Profile2UserIcon = 'Profile2UserIcon', ProfileIcon = 'ProfileIcon', PumpkinIcon = 'PumpkinIcon', RoundRubleIcon = 'RoundRubleIcon', SafeIcon = 'SafeIcon', ShieldTickIcon = 'ShieldTickIcon', SignDocsIcon = 'SignDocsIcon', SmallClockIcon = 'SmallClockIcon', SoundIcon = 'SoundIcon', StrongBoxIcon = 'StrongBoxIcon', TelegramIcon = 'TelegramIcon', UnionPayIcon = 'UnionPayIcon', UserGeoLocationIcon = 'UserGeoLocationIcon', UserSquareIcon = 'UserSquareIcon', UserTickIcon = 'UserTickIcon', VisaIcon = 'VisaIcon', VKIcon = 'VKIcon', WalletAdd2Icon = 'WalletAdd2Icon', WalletAddIcon = 'WalletAddIcon', WalletIcon = 'WalletIcon', WalletWithMoneyIcon = 'WalletWithMoneyIcon', WateringCanIcon = 'WateringCanIcon'
|
|
10
|
+
ActualBalanceIcon = 'ActualBalanceIcon', AirPlaneIcon = 'AirPlaneIcon', AppleIcon = 'AppleIcon', ArrowDownIcon = 'ArrowDownIcon', ArrowLeftIcon = 'ArrowLeftIcon', ArrowUpIcon = 'ArrowUpIcon', AtmIcon = 'AtmIcon', BankIcon = 'BankIcon', BuildingIcon = 'BuildingIcon', BurgerIcon = 'BurgerIcon', Calendar2Icon = 'Calendar2Icon', CalendarCircleIcon = 'CalendarCircleIcon', CalendarIcon = 'CalendarIcon', CalendarTickIcon = 'CalendarTickIcon', Car2Icon = 'Car2Icon', CardIcon = 'CardIcon', CardPosIcon = 'CardPosIcon', CardTickIcon = 'CardTickIcon', CardWithGemIcon = 'CardWithGemIcon', CarIcon = 'CarIcon', ChartSquareIcon = 'ChartSquareIcon', CinemaIcon = 'CinemaIcon', ClockIcon = 'ClockIcon', CloseIcon = 'CloseIcon', ComfortableCompIcon = 'ComfortableCompIcon', CreditCardsIcon = 'CreditCardsIcon', DiscountShapeIcon = 'DiscountShapeIcon', DocDownloadIcon = 'DocDownloadIcon', DocIcon = 'DocIcon', DocIconMonoColor = 'DocIconMonoColor', DocsIcon = 'DocsIcon', DocumentText2Icon = 'DocumentText2Icon', DocumentTextIcon = 'DocumentTextIcon', DollarIcon = 'DollarIcon', DoneIcon = 'DoneIcon', DoneSimpleIcon = 'DoneSimpleIcon', EarthIcon = 'EarthIcon', EmptyWalletChangeIcon = 'EmptyWalletChangeIcon', EmptyWalletIcon = 'EmptyWalletIcon', EuroIcon = 'EuroIcon', FullScreenIcon = 'FullScreenIcon', GeolocationIcon = 'GeolocationIcon', GlassIcon = 'GlassIcon', GlobalIcon = 'GlobalIcon', GpsIcon = 'GpsIcon', GridIcon = 'GridIcon', HeartIcon = 'HeartIcon', HuaweiIcon = 'HuaweiIcon', InterestGrowthIcon = 'InterestGrowthIcon', InterestIcon = 'InterestIcon', JCBIcon = 'JCBIcon', LogoIcon = 'LogoIcon', LoupeIcon = 'LoupeIcon', MapMarkerClusterIcon = 'MapMarkerClusterIcon', MapMarkerSingleIcon = 'MapMarkerSingleIcon', MasterCardIcon = 'MasterCardIcon', MetroIcon = 'MetroIcon', MinusIcon = 'MinusIcon', MirIcon = 'MirIcon', MoneyIcon = 'MoneyIcon', MoneyInsuranceIcon = 'MoneyInsuranceIcon', MoneysIcon = 'MoneysIcon', MonitorMobileIcon = 'MonitorMobileIcon', NewDocIcon = 'NewDocIcon', OfficeIcon = 'OfficeIcon', OkIcon = 'OkIcon', PackA4Icon = 'PackA4Icon', PassSendIcon = 'PassSendIcon', PercentageRoundIcon = 'PercentageRoundIcon', PercentageSquareIcon = 'PercentageSquareIcon', PersonalCardIcon = 'PersonalCardIcon', PlayMarketIcon = 'PlayMarketIcon', PlusIcon = 'PlusIcon', PowerIcon = 'PowerIcon', Profile2UserIcon = 'Profile2UserIcon', ProfileIcon = 'ProfileIcon', PumpkinIcon = 'PumpkinIcon', RoundRubleIcon = 'RoundRubleIcon', SafeIcon = 'SafeIcon', ShieldTickIcon = 'ShieldTickIcon', SignDocsIcon = 'SignDocsIcon', SmallClockIcon = 'SmallClockIcon', SoundIcon = 'SoundIcon', StrongBoxIcon = 'StrongBoxIcon', TelegramIcon = 'TelegramIcon', UnionPayIcon = 'UnionPayIcon', UserGeoLocationIcon = 'UserGeoLocationIcon', UserSquareIcon = 'UserSquareIcon', UserTickIcon = 'UserTickIcon', VisaIcon = 'VisaIcon', VKIcon = 'VKIcon', WalletAdd2Icon = 'WalletAdd2Icon', WalletAddIcon = 'WalletAddIcon', WalletIcon = 'WalletIcon', WalletWithMoneyIcon = 'WalletWithMoneyIcon', WateringCanIcon = 'WateringCanIcon'
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export enum IconTitleMap {
|
|
14
|
-
ActualBalanceIcon = 'Деньги', AirPlaneIcon = 'Самолёт', AppleIcon = 'Лого «Apple»', ArrowDownIcon = 'Стрелка \'Вниз\'', ArrowLeftIcon = 'Стрелка', ArrowUpIcon = 'Стрелка вверх', AtmIcon = 'Банкомат', BankIcon = 'Банк', BuildingIcon = 'Здание с деревом', BurgerIcon = 'Бургер', Calendar2Icon = 'Календарь 2', CalendarCircleIcon = 'Скруглённый календарь', CalendarIcon = 'Календарь', CalendarTickIcon = 'Календарь с галочкой', Car2Icon = 'Машина2', CardIcon = 'Кред. карта', CardPosIcon = 'Кред. карта под наклоном', CardTickIcon = 'Кред. карта с галочкой', CardWithGemIcon = 'Карта с драгоценностями', CarIcon = 'Машина', ChartSquareIcon = 'Деньги внутри кошелька', CinemaIcon = 'Кинотеатр', ClockIcon = 'Часы', CloseIcon = 'Крестик', ComfortableCompIcon = 'Кресло', CreditCardsIcon = 'Кредитные карты', DiscountShapeIcon = 'Скидка', DocDownloadIcon = 'Скачать документ', DocIcon = 'Документ', DocIconMonoColor = 'Документ (одноцветный)', DocsIcon = 'Документы', DocumentText2Icon = 'Документы-2', DocumentTextIcon = 'Документ с текстом', DollarIcon = 'Доллар', DoneIcon = 'Зелёная \'галочка\' в круге', DoneSimpleIcon = 'Зелёная \'галочка\'', EarthIcon = 'Земля', EmptyWalletChangeIcon = 'Пустой кошелёк с возвратом', EmptyWalletIcon = 'Пустой кошелёк', EuroIcon = 'Евро', FullScreenIcon = 'FullScreenIcon', GeolocationIcon = 'Геолокация', GlassIcon = 'Зеркало', GlobalIcon = 'Глобус', GpsIcon = 'Gps', GridIcon = 'Сетка (белая)', HuaweiIcon = 'Лого «Huawei»', InterestGrowthIcon = 'Диаграмма роста', InterestIcon = 'Скидка', JCBIcon = 'JCB', LogoIcon = 'Logo', LoupeIcon = 'Лупа', MapMarkerClusterIcon = 'Маркер карты', MapMarkerSingleIcon = 'Маркер карты РСХБ', MasterCardIcon = 'MasterCard', MetroIcon = 'Лого Метро', MinusIcon = 'Минус', MirIcon = 'МИР', MoneyIcon = 'Деньги', MoneyInsuranceIcon = 'Денежное страхование', MoneysIcon = 'Купюры', MonitorMobileIcon = 'Монитор и мобильный', NewDocIcon = 'Новый документ', OfficeIcon = 'Офис', OkIcon = 'Лого «Одноклассники»', PackA4Icon = 'Пачка бумаги А4', PassSendIcon = 'Бизнес', PercentageRoundIcon = 'Проценты (круг.)', PercentageSquareIcon = 'Проценты', PersonalCardIcon = 'Персональная карта', PlayMarketIcon = 'Лого «PlayMarket»', PlusIcon = 'Плюс', PowerIcon = 'Щит', Profile2UserIcon = 'Профиль, 2 персоны', ProfileIcon = 'Профиль', PumpkinIcon = 'Тыква', RoundRubleIcon = 'Рубль (круг.)', SafeIcon = 'Сейф', ShieldTickIcon = 'Безопасность', SignDocsIcon = 'Подписанные документы', SmallClockIcon = 'Маленькие часы', SoundIcon = 'Звук', StrongBoxIcon = 'Ящик с замочной скважиной', TelegramIcon = 'Лого «Telegram»', UnionPayIcon = 'UnionPay', UserGeoLocationIcon = 'UserGeoLocationIcon', UserSquareIcon = 'Пользователь в рамке', UserTickIcon = 'Пользователь', VisaIcon = 'Visa', VKIcon = 'Лого «VK»', WalletAdd2Icon = 'Пополнение карты', WalletAddIcon = 'Кошелёк с плюсом', WalletIcon = 'Кошелёк', WalletWithMoneyIcon = 'Кошелёк с деньгами', WateringCanIcon = 'Добавить продукт'
|
|
14
|
+
ActualBalanceIcon = 'Деньги', AirPlaneIcon = 'Самолёт', AppleIcon = 'Лого «Apple»', ArrowDownIcon = 'Стрелка \'Вниз\'', ArrowLeftIcon = 'Стрелка', ArrowUpIcon = 'Стрелка вверх', AtmIcon = 'Банкомат', BankIcon = 'Банк', BuildingIcon = 'Здание с деревом', BurgerIcon = 'Бургер', Calendar2Icon = 'Календарь 2', CalendarCircleIcon = 'Скруглённый календарь', CalendarIcon = 'Календарь', CalendarTickIcon = 'Календарь с галочкой', Car2Icon = 'Машина2', CardIcon = 'Кред. карта', CardPosIcon = 'Кред. карта под наклоном', CardTickIcon = 'Кред. карта с галочкой', CardWithGemIcon = 'Карта с драгоценностями', CarIcon = 'Машина', ChartSquareIcon = 'Деньги внутри кошелька', CinemaIcon = 'Кинотеатр', ClockIcon = 'Часы', CloseIcon = 'Крестик', ComfortableCompIcon = 'Кресло', CreditCardsIcon = 'Кредитные карты', DiscountShapeIcon = 'Скидка', DocDownloadIcon = 'Скачать документ', DocIcon = 'Документ', DocIconMonoColor = 'Документ (одноцветный)', DocsIcon = 'Документы', DocumentText2Icon = 'Документы-2', DocumentTextIcon = 'Документ с текстом', DollarIcon = 'Доллар', DoneIcon = 'Зелёная \'галочка\' в круге', DoneSimpleIcon = 'Зелёная \'галочка\'', EarthIcon = 'Земля', EmptyWalletChangeIcon = 'Пустой кошелёк с возвратом', EmptyWalletIcon = 'Пустой кошелёк', EuroIcon = 'Евро', FullScreenIcon = 'FullScreenIcon', GeolocationIcon = 'Геолокация', GlassIcon = 'Зеркало', GlobalIcon = 'Глобус', GpsIcon = 'Gps', GridIcon = 'Сетка (белая)', HeartIcon = 'Сердце', HuaweiIcon = 'Лого «Huawei»', InterestGrowthIcon = 'Диаграмма роста', InterestIcon = 'Скидка', JCBIcon = 'JCB', LogoIcon = 'Logo', LoupeIcon = 'Лупа', MapMarkerClusterIcon = 'Маркер карты', MapMarkerSingleIcon = 'Маркер карты РСХБ', MasterCardIcon = 'MasterCard', MetroIcon = 'Лого Метро', MinusIcon = 'Минус', MirIcon = 'МИР', MoneyIcon = 'Деньги', MoneyInsuranceIcon = 'Денежное страхование', MoneysIcon = 'Купюры', MonitorMobileIcon = 'Монитор и мобильный', NewDocIcon = 'Новый документ', OfficeIcon = 'Офис', OkIcon = 'Лого «Одноклассники»', PackA4Icon = 'Пачка бумаги А4', PassSendIcon = 'Бизнес', PercentageRoundIcon = 'Проценты (круг.)', PercentageSquareIcon = 'Проценты', PersonalCardIcon = 'Персональная карта', PlayMarketIcon = 'Лого «PlayMarket»', PlusIcon = 'Плюс', PowerIcon = 'Щит', Profile2UserIcon = 'Профиль, 2 персоны', ProfileIcon = 'Профиль', PumpkinIcon = 'Тыква', RoundRubleIcon = 'Рубль (круг.)', SafeIcon = 'Сейф', ShieldTickIcon = 'Безопасность', SignDocsIcon = 'Подписанные документы', SmallClockIcon = 'Маленькие часы', SoundIcon = 'Звук', StrongBoxIcon = 'Ящик с замочной скважиной', TelegramIcon = 'Лого «Telegram»', UnionPayIcon = 'UnionPay', UserGeoLocationIcon = 'UserGeoLocationIcon', UserSquareIcon = 'Пользователь в рамке', UserTickIcon = 'Пользователь', VisaIcon = 'Visa', VKIcon = 'Лого «VK»', WalletAdd2Icon = 'Пополнение карты', WalletAddIcon = 'Кошелёк с плюсом', WalletIcon = 'Кошелёк', WalletWithMoneyIcon = 'Кошелёк с деньгами', WateringCanIcon = 'Добавить продукт'
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
/**
|
|
@@ -19,7 +19,7 @@ export enum IconTitleMap {
|
|
|
19
19
|
* @title Иконка
|
|
20
20
|
* @enumNames [
|
|
21
21
|
* "",
|
|
22
|
-
* 'Деньги', 'Самолёт', 'Лого «Apple»', 'Стрелка \'Вниз\'', 'Стрелка', 'Стрелка вверх', 'Банкомат', 'Банк', 'Здание с деревом', 'Бургер', 'Календарь 2', 'Скруглённый календарь', 'Календарь', 'Календарь с галочкой', 'Машина2', 'Кред. карта', 'Кред. карта под наклоном', 'Кред. карта с галочкой', 'Карта с драгоценностями', 'Машина', 'Деньги внутри кошелька', 'Кинотеатр', 'Часы', 'Крестик', 'Кресло', 'Кредитные карты', 'Скидка', 'Скачать документ', 'Документ', 'Документ (одноцветный)', 'Документы', 'Документы-2', 'Документ с текстом', 'Доллар', 'Зелёная \'галочка\' в круге', 'Зелёная \'галочка\'', 'Земля', 'Пустой кошелёк с возвратом', 'Пустой кошелёк', 'Евро', 'FullScreenIcon', 'Геолокация', 'Зеркало', 'Глобус', 'Gps', 'Сетка (белая)', 'Лого «Huawei»', 'Диаграмма роста', 'Скидка', 'JCB', 'Logo', 'Лупа', 'Маркер карты', 'Маркер карты РСХБ', 'MasterCard', 'Лого Метро', 'Минус', 'МИР', 'Деньги', 'Денежное страхование', 'Купюры', 'Монитор и мобильный', 'Новый документ', 'Офис', 'Лого «Одноклассники»', 'Пачка бумаги А4', 'Бизнес', 'Проценты (круг.)', 'Проценты', 'Персональная карта', 'Лого «PlayMarket»', 'Плюс', 'Щит', 'Профиль, 2 персоны', 'Профиль', 'Тыква', 'Рубль (круг.)', 'Сейф', 'Безопасность', 'Подписанные документы', 'Маленькие часы', 'Звук', 'Ящик с замочной скважиной', 'Лого «Telegram»', 'UnionPay', 'UserGeoLocationIcon', 'Пользователь в рамке', 'Пользователь', 'Visa', 'Лого «VK»', 'Пополнение карты', 'Кошелёк с плюсом', 'Кошелёк', 'Кошелёк с деньгами', 'Добавить продукт'
|
|
22
|
+
* 'Деньги', 'Самолёт', 'Лого «Apple»', 'Стрелка \'Вниз\'', 'Стрелка', 'Стрелка вверх', 'Банкомат', 'Банк', 'Здание с деревом', 'Бургер', 'Календарь 2', 'Скруглённый календарь', 'Календарь', 'Календарь с галочкой', 'Машина2', 'Кред. карта', 'Кред. карта под наклоном', 'Кред. карта с галочкой', 'Карта с драгоценностями', 'Машина', 'Деньги внутри кошелька', 'Кинотеатр', 'Часы', 'Крестик', 'Кресло', 'Кредитные карты', 'Скидка', 'Скачать документ', 'Документ', 'Документ (одноцветный)', 'Документы', 'Документы-2', 'Документ с текстом', 'Доллар', 'Зелёная \'галочка\' в круге', 'Зелёная \'галочка\'', 'Земля', 'Пустой кошелёк с возвратом', 'Пустой кошелёк', 'Евро', 'FullScreenIcon', 'Геолокация', 'Зеркало', 'Глобус', 'Gps', 'Сетка (белая)', 'Сердце', 'Лого «Huawei»', 'Диаграмма роста', 'Скидка', 'JCB', 'Logo', 'Лупа', 'Маркер карты', 'Маркер карты РСХБ', 'MasterCard', 'Лого Метро', 'Минус', 'МИР', 'Деньги', 'Денежное страхование', 'Купюры', 'Монитор и мобильный', 'Новый документ', 'Офис', 'Лого «Одноклассники»', 'Пачка бумаги А4', 'Бизнес', 'Проценты (круг.)', 'Проценты', 'Персональная карта', 'Лого «PlayMarket»', 'Плюс', 'Щит', 'Профиль, 2 персоны', 'Профиль', 'Тыква', 'Рубль (круг.)', 'Сейф', 'Безопасность', 'Подписанные документы', 'Маленькие часы', 'Звук', 'Ящик с замочной скважиной', 'Лого «Telegram»', 'UnionPay', 'UserGeoLocationIcon', 'Пользователь в рамке', 'Пользователь', 'Visa', 'Лого «VK»', 'Пополнение карты', 'Кошелёк с плюсом', 'Кошелёк', 'Кошелёк с деньгами', 'Добавить продукт'
|
|
23
23
|
* ]
|
|
24
24
|
*/
|
|
25
|
-
export type IconName = '' | 'ActualBalanceIcon' | 'AirPlaneIcon' | 'AppleIcon' | 'ArrowDownIcon' | 'ArrowLeftIcon' | 'ArrowUpIcon' | 'AtmIcon' | 'BankIcon' | 'BuildingIcon' | 'BurgerIcon' | 'Calendar2Icon' | 'CalendarCircleIcon' | 'CalendarIcon' | 'CalendarTickIcon' | 'Car2Icon' | 'CardIcon' | 'CardPosIcon' | 'CardTickIcon' | 'CardWithGemIcon' | 'CarIcon' | 'ChartSquareIcon' | 'CinemaIcon' | 'ClockIcon' | 'CloseIcon' | 'ComfortableCompIcon' | 'CreditCardsIcon' | 'DiscountShapeIcon' | 'DocDownloadIcon' | 'DocIcon' | 'DocIconMonoColor' | 'DocsIcon' | 'DocumentText2Icon' | 'DocumentTextIcon' | 'DollarIcon' | 'DoneIcon' | 'DoneSimpleIcon' | 'EarthIcon' | 'EmptyWalletChangeIcon' | 'EmptyWalletIcon' | 'EuroIcon' | 'FullScreenIcon' | 'GeolocationIcon' | 'GlassIcon' | 'GlobalIcon' | 'GpsIcon' | 'GridIcon' | 'HuaweiIcon' | 'InterestGrowthIcon' | 'InterestIcon' | 'JCBIcon' | 'LogoIcon' | 'LoupeIcon' | 'MapMarkerClusterIcon' | 'MapMarkerSingleIcon' | 'MasterCardIcon' | 'MetroIcon' | 'MinusIcon' | 'MirIcon' | 'MoneyIcon' | 'MoneyInsuranceIcon' | 'MoneysIcon' | 'MonitorMobileIcon' | 'NewDocIcon' | 'OfficeIcon' | 'OkIcon' | 'PackA4Icon' | 'PassSendIcon' | 'PercentageRoundIcon' | 'PercentageSquareIcon' | 'PersonalCardIcon' | 'PlayMarketIcon' | 'PlusIcon' | 'PowerIcon' | 'Profile2UserIcon' | 'ProfileIcon' | 'PumpkinIcon' | 'RoundRubleIcon' | 'SafeIcon' | 'ShieldTickIcon' | 'SignDocsIcon' | 'SmallClockIcon' | 'SoundIcon' | 'StrongBoxIcon' | 'TelegramIcon' | 'UnionPayIcon' | 'UserGeoLocationIcon' | 'UserSquareIcon' | 'UserTickIcon' | 'VisaIcon' | 'VKIcon' | 'WalletAdd2Icon' | 'WalletAddIcon' | 'WalletIcon' | 'WalletWithMoneyIcon' | 'WateringCanIcon';
|
|
25
|
+
export type IconName = '' | 'ActualBalanceIcon' | 'AirPlaneIcon' | 'AppleIcon' | 'ArrowDownIcon' | 'ArrowLeftIcon' | 'ArrowUpIcon' | 'AtmIcon' | 'BankIcon' | 'BuildingIcon' | 'BurgerIcon' | 'Calendar2Icon' | 'CalendarCircleIcon' | 'CalendarIcon' | 'CalendarTickIcon' | 'Car2Icon' | 'CardIcon' | 'CardPosIcon' | 'CardTickIcon' | 'CardWithGemIcon' | 'CarIcon' | 'ChartSquareIcon' | 'CinemaIcon' | 'ClockIcon' | 'CloseIcon' | 'ComfortableCompIcon' | 'CreditCardsIcon' | 'DiscountShapeIcon' | 'DocDownloadIcon' | 'DocIcon' | 'DocIconMonoColor' | 'DocsIcon' | 'DocumentText2Icon' | 'DocumentTextIcon' | 'DollarIcon' | 'DoneIcon' | 'DoneSimpleIcon' | 'EarthIcon' | 'EmptyWalletChangeIcon' | 'EmptyWalletIcon' | 'EuroIcon' | 'FullScreenIcon' | 'GeolocationIcon' | 'GlassIcon' | 'GlobalIcon' | 'GpsIcon' | 'GridIcon' | 'HeartIcon' | 'HuaweiIcon' | 'InterestGrowthIcon' | 'InterestIcon' | 'JCBIcon' | 'LogoIcon' | 'LoupeIcon' | 'MapMarkerClusterIcon' | 'MapMarkerSingleIcon' | 'MasterCardIcon' | 'MetroIcon' | 'MinusIcon' | 'MirIcon' | 'MoneyIcon' | 'MoneyInsuranceIcon' | 'MoneysIcon' | 'MonitorMobileIcon' | 'NewDocIcon' | 'OfficeIcon' | 'OkIcon' | 'PackA4Icon' | 'PassSendIcon' | 'PercentageRoundIcon' | 'PercentageSquareIcon' | 'PersonalCardIcon' | 'PlayMarketIcon' | 'PlusIcon' | 'PowerIcon' | 'Profile2UserIcon' | 'ProfileIcon' | 'PumpkinIcon' | 'RoundRubleIcon' | 'SafeIcon' | 'ShieldTickIcon' | 'SignDocsIcon' | 'SmallClockIcon' | 'SoundIcon' | 'StrongBoxIcon' | 'TelegramIcon' | 'UnionPayIcon' | 'UserGeoLocationIcon' | 'UserSquareIcon' | 'UserTickIcon' | 'VisaIcon' | 'VKIcon' | 'WalletAdd2Icon' | 'WalletAddIcon' | 'WalletIcon' | 'WalletWithMoneyIcon' | 'WateringCanIcon';
|
|
@@ -31,7 +31,7 @@ const getButtonStyle = (props: ButtonInnerProps) => {
|
|
|
31
31
|
return '';
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
const withTextStyle = `gap-2 ${aboveText ? 'py-2.5 px-7' : 'py-4 px-
|
|
34
|
+
const withTextStyle = `gap-2 ${aboveText ? 'py-2.5 px-7' : 'py-4 px-4'}`;
|
|
35
35
|
|
|
36
36
|
return [
|
|
37
37
|
'group flex items-center justify-center',
|
|
@@ -7,7 +7,7 @@ export interface FoldableProps {
|
|
|
7
7
|
unfoldedByDefault?: boolean;
|
|
8
8
|
isFoldButtonOnTop?: boolean;
|
|
9
9
|
renderFoldableSection: (props: FoldablePartProps) => VNode;
|
|
10
|
-
renderFoldButton?: (props: FoldablePartProps) => VNode;
|
|
10
|
+
renderFoldButton?: ((props: FoldablePartProps) => VNode) | null;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export const Foldable = JSX<FoldableProps>(
|
package/package.json
CHANGED
package/src/components/Blocks.ts
CHANGED
|
@@ -7,6 +7,9 @@ import { BonusBenefitsBlock } from './BonusBenefitsBlock/BonusBenefitsBlock';
|
|
|
7
7
|
import { BusinessBlock } from './BusinessBlock/BusinessBlock';
|
|
8
8
|
import { Calculator } from './Calculator/Calculator';
|
|
9
9
|
import { CardTransfer } from './CardTransfer/CardTransfer';
|
|
10
|
+
import { Carousel } from './Carousel/Carousel';
|
|
11
|
+
import { CarouselCard } from './CarouselCard/CarouselCard';
|
|
12
|
+
import { CarouselTariffsCard } from './CarouselTariffsCard/CarouselTariffsCard';
|
|
10
13
|
import { Catalog } from './Catalog/Catalog';
|
|
11
14
|
import { ComparisonTable } from './ComparisonTable/ComparisonTable';
|
|
12
15
|
import { ContactsBlock } from './ContactsBlock/ContactsBlock';
|
|
@@ -42,8 +45,6 @@ import { TariffsTable } from './TariffsTable/TariffsTable';
|
|
|
42
45
|
import { TextBlock } from './TextBlock/TextBlock';
|
|
43
46
|
import { Tile } from './Tile/Tile';
|
|
44
47
|
import { VerticalLayout } from './VerticalLayout/VerticalLayout';
|
|
45
|
-
import { CarouselCard } from './CarouselCard/CarouselCard';
|
|
46
|
-
import { Carousel } from './Carousel/Carousel';
|
|
47
48
|
|
|
48
49
|
export const Blocks: BlocksRegistry = {
|
|
49
50
|
Accordion,
|
|
@@ -53,10 +54,13 @@ export const Blocks: BlocksRegistry = {
|
|
|
53
54
|
Bonus,
|
|
54
55
|
BonusBenefitsBlock,
|
|
55
56
|
CardTransfer,
|
|
56
|
-
ComparisonTable,
|
|
57
57
|
Calculator,
|
|
58
|
+
Carousel,
|
|
59
|
+
CarouselCard,
|
|
60
|
+
CarouselTariffsCard,
|
|
58
61
|
Catalog,
|
|
59
62
|
ContactsBlock,
|
|
63
|
+
ComparisonTable,
|
|
60
64
|
ErrorBlock,
|
|
61
65
|
ExchangeRateTile,
|
|
62
66
|
Footer,
|
|
@@ -89,6 +93,4 @@ export const Blocks: BlocksRegistry = {
|
|
|
89
93
|
TextBlock,
|
|
90
94
|
Tile,
|
|
91
95
|
VerticalLayout,
|
|
92
|
-
CarouselCard,
|
|
93
|
-
Carousel,
|
|
94
96
|
};
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import '../../react/setup-fixture';
|
|
2
|
+
import { CarouselCard } from '../CarouselCard/CarouselCard';
|
|
2
3
|
import { CARD, CARD_MINI, CARD_NEW } from '../CarouselCard/CarouselCard.fixture';
|
|
4
|
+
import { CarouselTariffsCard } from '../CarouselTariffsCard/CarouselTariffsCard';
|
|
5
|
+
import { TARIFFS_CARD, TARIFFS_CARD_HIT } from '../CarouselTariffsCard/CarouselTariffsCard.fixture';
|
|
3
6
|
import { Carousel } from './Carousel';
|
|
4
|
-
import { CarouselCard } from '../CarouselCard/CarouselCard';
|
|
5
7
|
|
|
6
8
|
const CAROUSEL_CARD_BLOCK = <CarouselCard className="col-span-12" {...CARD} />;
|
|
7
9
|
|
|
@@ -9,6 +11,12 @@ const CAROUSEL_CARD_BLOCK_MINI = <CarouselCard className="col-span-3" {...CARD_M
|
|
|
9
11
|
|
|
10
12
|
const CAROUSEL_CARD_NEW = <CarouselCard className="col-span-12" {...CARD_NEW} />;
|
|
11
13
|
|
|
14
|
+
const CAROUSEL_TARIFFS_CARD = <CarouselTariffsCard className="col-span-12" {...TARIFFS_CARD} />;
|
|
15
|
+
|
|
16
|
+
const CAROUSEL_TARIFFS_CARD_HIT = (
|
|
17
|
+
<CarouselTariffsCard className="col-span-12" {...TARIFFS_CARD_HIT} />
|
|
18
|
+
);
|
|
19
|
+
|
|
12
20
|
export default {
|
|
13
21
|
default: (
|
|
14
22
|
<div className="container grid grid-cols-12">
|
|
@@ -45,4 +53,24 @@ export default {
|
|
|
45
53
|
</Carousel>
|
|
46
54
|
</div>
|
|
47
55
|
),
|
|
56
|
+
tariffs: (
|
|
57
|
+
<div className="container grid grid-cols-12">
|
|
58
|
+
<Carousel
|
|
59
|
+
className="col-span-12"
|
|
60
|
+
cardFullViewCount={3}
|
|
61
|
+
cardWidth={322}
|
|
62
|
+
isBlur={true}
|
|
63
|
+
isCyclic={false}
|
|
64
|
+
block={{ type: 'Carousel', blocks: new Array(5).fill(TARIFFS_CARD).flat() }}
|
|
65
|
+
>
|
|
66
|
+
{[
|
|
67
|
+
CAROUSEL_TARIFFS_CARD,
|
|
68
|
+
CAROUSEL_TARIFFS_CARD_HIT,
|
|
69
|
+
CAROUSEL_TARIFFS_CARD,
|
|
70
|
+
CAROUSEL_TARIFFS_CARD,
|
|
71
|
+
CAROUSEL_TARIFFS_CARD,
|
|
72
|
+
]}
|
|
73
|
+
</Carousel>
|
|
74
|
+
</div>
|
|
75
|
+
),
|
|
48
76
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { BlockWrapper } from '../../ui-kit/BlockWrapper';
|
|
2
|
-
import { CarouselContainer } from './CarouselContainer';
|
|
3
|
-
import { renderArrows } from '../../ui-kit/Button/renderArrows';
|
|
4
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
5
2
|
import { useCarouselControl } from '../../hooks/useCarousel';
|
|
6
|
-
import type { CarouselContent } from './CarouselContent';
|
|
7
3
|
import type { JSXBlock, UniBlockProps } from '../../model/JSXBlock';
|
|
4
|
+
import { BlockWrapper } from '../../ui-kit/BlockWrapper';
|
|
5
|
+
import { renderArrows } from '../../ui-kit/Button/renderArrows';
|
|
6
|
+
import { CarouselContainer } from './CarouselContainer';
|
|
7
|
+
import type { CarouselContent } from './CarouselContent';
|
|
8
8
|
|
|
9
9
|
export interface CarouselProps extends CarouselContent, UniBlockProps {}
|
|
10
10
|
|
|
@@ -67,4 +67,4 @@ export const Carousel: JSXBlock<CarouselProps> = JSX<CarouselProps>(
|
|
|
67
67
|
},
|
|
68
68
|
);
|
|
69
69
|
|
|
70
|
-
Carousel.childrenTypes = ['CarouselCard'];
|
|
70
|
+
Carousel.childrenTypes = ['CarouselCard', 'CarouselTariffsCard'];
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
|
+
import type { VNode } from '../../model/VNode';
|
|
4
|
+
import { renderArrows } from '../../ui-kit/Button/renderArrows';
|
|
5
|
+
|
|
6
|
+
interface CarouselNavButtonsProps {
|
|
7
|
+
cardsCount: number;
|
|
8
|
+
activeCardIndex: number;
|
|
9
|
+
setActiveCardIndex: (index: number) => void;
|
|
10
|
+
cardFullViewCount: number;
|
|
11
|
+
cards?: VNode[];
|
|
12
|
+
isCycle?: boolean;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const CarouselNavButtons = JSX<CarouselNavButtonsProps>(
|
|
16
|
+
({ cardsCount, activeCardIndex, setActiveCardIndex, cardFullViewCount, isCycle }) => {
|
|
17
|
+
const isGalleryScrollAvailable = cardsCount > cardFullViewCount;
|
|
18
|
+
|
|
19
|
+
const showNextButton =
|
|
20
|
+
(isCycle && isGalleryScrollAvailable) ||
|
|
21
|
+
(isGalleryScrollAvailable && cardsCount - activeCardIndex > cardFullViewCount);
|
|
22
|
+
|
|
23
|
+
const showPrevButton =
|
|
24
|
+
(isCycle && isGalleryScrollAvailable) || (isGalleryScrollAvailable && activeCardIndex > 0);
|
|
25
|
+
|
|
26
|
+
const handleNextClick = useCallback(() => {
|
|
27
|
+
if (isCycle) {
|
|
28
|
+
const nextIndex = activeCardIndex + 1;
|
|
29
|
+
setActiveCardIndex(cardsCount === nextIndex ? 0 : nextIndex);
|
|
30
|
+
} else {
|
|
31
|
+
setActiveCardIndex(activeCardIndex + 1);
|
|
32
|
+
}
|
|
33
|
+
}, []);
|
|
34
|
+
|
|
35
|
+
const handlePrevClick = useCallback(() => {
|
|
36
|
+
if (isCycle && cardsCount > 0) {
|
|
37
|
+
const prevIndex = activeCardIndex - 1;
|
|
38
|
+
setActiveCardIndex(prevIndex < 0 ? cardsCount - 1 : prevIndex);
|
|
39
|
+
} else {
|
|
40
|
+
setActiveCardIndex(activeCardIndex - 1);
|
|
41
|
+
}
|
|
42
|
+
}, []);
|
|
43
|
+
|
|
44
|
+
return renderArrows({
|
|
45
|
+
handler: [handlePrevClick, handleNextClick],
|
|
46
|
+
isShown: [showPrevButton, showNextButton],
|
|
47
|
+
btnClass: ['left-8', 'right-8'],
|
|
48
|
+
className: 'top-1/2 z-10',
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Headline } from '../Headline/Headline';
|
|
2
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
3
|
-
import { renderButton } from '../../ui-kit/Button/ButtonSection';
|
|
4
|
-
import type { CarouselCardContent } from './CarouselCardContent';
|
|
5
2
|
import type { CarouselCardVersion } from '../../model/CarouselCardVersion';
|
|
6
3
|
import type { UniBlockProps } from '../../model/JSXBlock';
|
|
4
|
+
import { renderButton } from '../../ui-kit/Button/ButtonSection';
|
|
5
|
+
import { Headline } from '../Headline/Headline';
|
|
6
|
+
import type { CarouselCardContent } from './CarouselCardContent';
|
|
7
7
|
|
|
8
8
|
export interface CarouselCardProps extends CarouselCardContent, UniBlockProps {
|
|
9
9
|
version?: CarouselCardVersion;
|
|
@@ -13,7 +13,7 @@ const BLOCK_CLASSES = 'absolute border border-solid border-main-stroke w-[100%]
|
|
|
13
13
|
|
|
14
14
|
const CARD_STYLE_MAP: Record<CarouselCardVersion, string> = {
|
|
15
15
|
normal: 'min-w-[100%] justify-center items-center my-7 col-span-12',
|
|
16
|
-
mini: '
|
|
16
|
+
mini: 'justify-center items-center mx-4 my-9 col-span-4',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
const CARD_WIDTH_MAP: Record<CarouselCardVersion, string> = {
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import type { ButtonWithIconProps } from '../../ui-kit/Button/ButtonProps';
|
|
2
|
-
import type { HeadlineCommonProps } from '../../model/HeadlineType';
|
|
3
1
|
import type { CarouselCardVersion } from '../../model/CarouselCardVersion';
|
|
2
|
+
import type { HeadlineCommonProps } from '../../model/HeadlineType';
|
|
3
|
+
import type { ButtonWithIconProps } from '../../ui-kit/Button/ButtonProps';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* @title Карточка какусели
|
|
7
|
+
*/
|
|
5
8
|
export interface CarouselCardContent extends HeadlineCommonProps {
|
|
6
9
|
/**
|
|
7
10
|
* @title Кнопка
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CarouselCardVersion } from '../../model/CarouselCardVersion';
|
|
2
|
+
|
|
3
|
+
export const cardStyleMap: Record<CarouselCardVersion, string> = {
|
|
4
|
+
normal: 'min-w-[100%] justify-center items-center m-7 col-span-12',
|
|
5
|
+
mini: 'min-w-auto justify-center items-center m-9 col-span-4',
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export const cardWidthMap: Record<CarouselCardVersion, string> = {
|
|
9
|
+
normal: 'w-[1007px]',
|
|
10
|
+
mini: 'w-[350px]',
|
|
11
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Заголовок",
|
|
3
|
+
"button": {
|
|
4
|
+
"href": "",
|
|
5
|
+
"text": "Кнопка",
|
|
6
|
+
"target": "_self",
|
|
7
|
+
"version": "primary"
|
|
8
|
+
},
|
|
9
|
+
"isHighlighting": false,
|
|
10
|
+
"rows": [
|
|
11
|
+
{
|
|
12
|
+
"title": "Ячейка 1-1",
|
|
13
|
+
"description": "Описание 1-1"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"title": "Ячейка 1-2",
|
|
17
|
+
"description": "Описание 1-2"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"title": "Ячейка 1-3",
|
|
21
|
+
"description": "Описание 1-3"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|