@redneckz/wildless-cms-uni-blocks 0.2.62 → 0.2.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Blocks.d.ts +3 -1
- package/dist/Blocks.js +2 -0
- package/dist/Blocks.js.map +1 -1
- package/dist/Gallery.d.ts +16 -0
- package/dist/Gallery.js +37 -0
- package/dist/Gallery.js.map +1 -0
- package/dist/ui-kit/ArrowButton.d.ts +6 -0
- package/dist/ui-kit/ArrowButton.js +8 -0
- package/dist/ui-kit/ArrowButton.js.map +1 -0
- package/dist/ui-kit/Icon.d.ts +1 -1
- package/dist/ui-kit/Icon.js.map +1 -1
- package/lib/Blocks.d.ts +3 -1
- package/lib/Blocks.js +2 -0
- package/lib/Blocks.js.map +1 -1
- package/lib/Gallery.d.ts +16 -0
- package/lib/Gallery.js +35 -0
- package/lib/Gallery.js.map +1 -0
- package/lib/common.css +1 -1
- package/lib/ui-kit/ArrowButton.d.ts +6 -0
- package/lib/ui-kit/ArrowButton.js +6 -0
- package/lib/ui-kit/ArrowButton.js.map +1 -0
- package/lib/ui-kit/Icon.d.ts +1 -1
- package/lib/ui-kit/Icon.js.map +1 -1
- package/package.json +3 -3
- package/src/Blocks.ts +4 -1
- package/src/ContentPage.page.json +105 -0
- package/src/Gallery.fixture.tsx +213 -0
- package/src/Gallery.tsx +137 -0
- package/src/PromoTile.fixture.tsx +25 -0
- package/src/ui-kit/ArrowButton.tsx +33 -0
- package/src/ui-kit/Icon.tsx +2 -1
package/dist/Blocks.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ import { ProductTileContent } from './ProductTile';
|
|
|
11
11
|
import { BaseTileContent } from './BaseTile';
|
|
12
12
|
import { PromoTileContent } from './PromoTile';
|
|
13
13
|
import { TextBlockContent } from './TextBlock';
|
|
14
|
+
import { GalleryContent } from './Gallery';
|
|
14
15
|
export declare const Blocks: {
|
|
15
16
|
Header: (props: import("@redneckz/uni-jsx").PropsWithChildren<import("./Header/Header").HeaderProps, any>, context?: any) => any;
|
|
16
17
|
Footer: (props: import("@redneckz/uni-jsx").PropsWithChildren<import("./Footer/Footer").FooterProps, any>, context?: any) => any;
|
|
@@ -25,5 +26,6 @@ export declare const Blocks: {
|
|
|
25
26
|
ProductGallery: (props: import("@redneckz/uni-jsx").PropsWithChildren<import("./ProductGallery").ProductGalleryProps, any>, context?: any) => any;
|
|
26
27
|
ExchangeRateTile: (props: import("@redneckz/uni-jsx").PropsWithChildren<import("./ExchangeRateTile").ExchangeRateTileProps, any>, context?: any) => any;
|
|
27
28
|
MobileAppTile: (props: import("@redneckz/uni-jsx").PropsWithChildren<import("./MobileAppTile").MobileAppTileProps, any>, context?: any) => any;
|
|
29
|
+
Gallery: (props: import("@redneckz/uni-jsx").PropsWithChildren<import("./Gallery").GalleryProps, any>, context?: any) => any;
|
|
28
30
|
};
|
|
29
|
-
export declare type BlockContent = HeaderContent | FooterContent | PlaceholderContent | BaseTileContent | TextBlockContent | ProductTileContent | PromoTileContent | ProductBlockInnerContent | StepsBlockContent | BenefitsBlockContent | ProductGalleryContent | ExchangeRateTileContent | MobileAppTileContent;
|
|
31
|
+
export declare type BlockContent = HeaderContent | FooterContent | PlaceholderContent | BaseTileContent | TextBlockContent | ProductTileContent | PromoTileContent | ProductBlockInnerContent | StepsBlockContent | BenefitsBlockContent | ProductGalleryContent | ExchangeRateTileContent | MobileAppTileContent | GalleryContent;
|
package/dist/Blocks.js
CHANGED
|
@@ -13,6 +13,7 @@ const ProductTile_1 = require("./ProductTile");
|
|
|
13
13
|
const PromoTile_1 = require("./PromoTile");
|
|
14
14
|
const Tile_1 = require("./Tile");
|
|
15
15
|
const TextBlock_1 = require("./TextBlock");
|
|
16
|
+
const Gallery_1 = require("./Gallery");
|
|
16
17
|
exports.Blocks = {
|
|
17
18
|
Header: index_2.Header,
|
|
18
19
|
Footer: index_1.Footer,
|
|
@@ -27,5 +28,6 @@ exports.Blocks = {
|
|
|
27
28
|
ProductGallery: ProductGallery_1.ProductGallery,
|
|
28
29
|
ExchangeRateTile: ExchangeRateTile_1.ExchangeRateTile,
|
|
29
30
|
MobileAppTile: MobileAppTile_1.MobileAppTile,
|
|
31
|
+
Gallery: Gallery_1.Gallery,
|
|
30
32
|
};
|
|
31
33
|
//# sourceMappingURL=Blocks.js.map
|
package/dist/Blocks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Blocks.js","sourceRoot":"","sources":["../src/Blocks.ts"],"names":[],"mappings":";;AAAA,mDAAsE;AACtE,yDAA+E;AAC/E,0CAAuD;AACvD,0CAAuD;AACvD,mDAAsE;AACtE,+CAAgE;AAChE,iDAA8C;AAE9C,qDAAyE;AACzE,6CAA6D;AAC7D,+CAAgE;AAEhE,2CAA0D;AAC1D,iCAA8B;AAC9B,2CAA0D;
|
|
1
|
+
{"version":3,"file":"Blocks.js","sourceRoot":"","sources":["../src/Blocks.ts"],"names":[],"mappings":";;AAAA,mDAAsE;AACtE,yDAA+E;AAC/E,0CAAuD;AACvD,0CAAuD;AACvD,mDAAsE;AACtE,+CAAgE;AAChE,iDAA8C;AAE9C,qDAAyE;AACzE,6CAA6D;AAC7D,+CAAgE;AAEhE,2CAA0D;AAC1D,iCAA8B;AAC9B,2CAA0D;AAC1D,uCAAoD;AAEvC,QAAA,MAAM,GAAG;IACpB,MAAM,EAAN,cAAM;IACN,MAAM,EAAN,cAAM;IACN,WAAW,EAAX,yBAAW;IACX,IAAI,EAAJ,WAAI;IACJ,SAAS,EAAT,qBAAS;IACT,SAAS,EAAT,qBAAS;IACT,WAAW,EAAX,yBAAW;IACX,YAAY,EAAZ,2BAAY;IACZ,UAAU,EAAV,uBAAU;IACV,aAAa,EAAb,6BAAa;IACb,cAAc,EAAd,+BAAc;IACd,gBAAgB,EAAhB,mCAAgB;IAChB,aAAa,EAAb,6BAAa;IACb,OAAO,EAAP,iBAAO;CACR,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Picture, UniBlockProps } from './types';
|
|
2
|
+
export interface GalleryCard {
|
|
3
|
+
title?: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
image?: Picture;
|
|
6
|
+
href?: string;
|
|
7
|
+
items?: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface GalleryContent {
|
|
10
|
+
title?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
cards?: GalleryCard[];
|
|
13
|
+
}
|
|
14
|
+
export interface GalleryProps extends GalleryContent, UniBlockProps {
|
|
15
|
+
}
|
|
16
|
+
export declare const Gallery: (props: import("@redneckz/uni-jsx").PropsWithChildren<GalleryProps, any>, context?: any) => any;
|
package/dist/Gallery.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
exports.Gallery = void 0;
|
|
3
|
+
const jsx_runtime_1 = require("@redneckz/uni-jsx/jsx-runtime");
|
|
4
|
+
const uni_jsx_1 = require("@redneckz/uni-jsx");
|
|
5
|
+
const Img_1 = require("./Img");
|
|
6
|
+
const ArrowButton_1 = require("./ui-kit/ArrowButton");
|
|
7
|
+
const BlockItem_1 = require("./ui-kit/BlockItem");
|
|
8
|
+
const Button_1 = require("./ui-kit/Button");
|
|
9
|
+
const Title_1 = require("./ui-kit/Title");
|
|
10
|
+
const CARD_WIDTH = 384;
|
|
11
|
+
const GALLERY_LENGTH_FOR_SCROLL = 3;
|
|
12
|
+
exports.Gallery = (0, uni_jsx_1.JSX)(({ title, description, context, cards = [], className }) => {
|
|
13
|
+
const [activeCardIndex, setActiveCardIndex] = context.useState(0);
|
|
14
|
+
function handleNextClick() {
|
|
15
|
+
setActiveCardIndex(activeCardIndex + 1);
|
|
16
|
+
}
|
|
17
|
+
function handlePrevClick() {
|
|
18
|
+
setActiveCardIndex(activeCardIndex - 1);
|
|
19
|
+
}
|
|
20
|
+
const isGalleryScrollAvailable = cards?.length > GALLERY_LENGTH_FOR_SCROLL;
|
|
21
|
+
const showNextButton = isGalleryScrollAvailable && cards?.length - activeCardIndex > GALLERY_LENGTH_FOR_SCROLL;
|
|
22
|
+
const showPrevButton = isGalleryScrollAvailable && activeCardIndex > 0;
|
|
23
|
+
return ((0, jsx_runtime_1.jsxs)("section", { className: `relative font-sans text-primary-text bg-white p-12 overflow-hidden ${className}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center mb-8", children: [(0, jsx_runtime_1.jsx)(Title_1.Title, { className: "font-medium m-0 text-centers", children: title }), description ? ((0, jsx_runtime_1.jsx)("div", { className: "font-normal text-base max-w-[600px] mt-3", children: description })) : null] }), (0, jsx_runtime_1.jsx)("div", {
|
|
24
|
+
// Need to place all cards at the center if count of cards less than 4
|
|
25
|
+
className: `flex ${cards?.length <= GALLERY_LENGTH_FOR_SCROLL ? 'justify-center' : ''} duration-1000`,
|
|
26
|
+
// All cards has same width
|
|
27
|
+
style: { transform: `translateX(-${activeCardIndex * CARD_WIDTH}px)` }, role: "list", children: cards?.map(renderCard) }), showPrevButton && ((0, jsx_runtime_1.jsx)(ArrowButton_1.ArrowButton, { className: "absolute top-1/2 left-8", onClick: handlePrevClick, ariaLabel: "\u041F\u0440\u043E\u043B\u0438\u0441\u0442\u0430\u0442\u044C \u0432\u043B\u0435\u0432\u043E" })), showNextButton && ((0, jsx_runtime_1.jsx)(ArrowButton_1.ArrowButton, { className: "absolute top-1/2 right-1 z-20 rotate-180", onClick: handleNextClick, ariaLabel: "\u041F\u0440\u043E\u043B\u0438\u0441\u0442\u0430\u0442\u044C \u0432\u043F\u0440\u0430\u0432\u043E" })), (0, jsx_runtime_1.jsx)("div", { className: "absolute top-0 right-0 bottom-0 w-[84px]", style: {
|
|
28
|
+
background: 'linear-gradient(270deg, #FFFFFF 34.89%, rgba(255, 255, 255, 0) 92.52%)',
|
|
29
|
+
} })] }));
|
|
30
|
+
});
|
|
31
|
+
function renderCard(card, key) {
|
|
32
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "box-border border-solid border rounded-md border-main-divider p-7 mx-2 flex flex-col justify-between items-stretch min-w-[364px] w-[364px] w-full", role: "listitem", children: [(0, jsx_runtime_1.jsxs)("div", { children: [card.image?.src ? ((0, jsx_runtime_1.jsx)("div", { className: "flex justify-center", children: (0, jsx_runtime_1.jsx)(Img_1.Img, { className: "mb-6", image: card.image }) })) : null, card.title ? ((0, jsx_runtime_1.jsx)("h4", { className: `font-medium text-xl m-0 ${!card.description && !card.items?.length ? 'text-center' : ''}`, children: card.title })) : null, card.description ? ((0, jsx_runtime_1.jsx)("div", { className: "font-normal text-sm text-secondary-text mt-2", children: card.description })) : null, card.items?.length ? renderItems(card.items) : null] }), card.href ? ((0, jsx_runtime_1.jsx)(Button_1.Button, { className: "mt-6", text: "\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435", version: "secondary", href: card.href })) : null] }, key));
|
|
33
|
+
}
|
|
34
|
+
function renderItems(items = []) {
|
|
35
|
+
return ((0, jsx_runtime_1.jsx)("section", { className: "max-w-[308px] mt-2", role: "list", children: items.map((item, i) => ((0, jsx_runtime_1.jsx)(BlockItem_1.BlockItem, { children: (0, jsx_runtime_1.jsx)("span", { className: "text-sm text-secondary-text", children: item }) }, String(i)))) }));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=Gallery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Gallery.js","sourceRoot":"","sources":["../src/Gallery.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
exports.ArrowButton = void 0;
|
|
3
|
+
const jsx_runtime_1 = require("@redneckz/uni-jsx/jsx-runtime");
|
|
4
|
+
const uni_jsx_1 = require("@redneckz/uni-jsx");
|
|
5
|
+
exports.ArrowButton = (0, uni_jsx_1.JSX)(({ className, onClick, ariaLabel }) => {
|
|
6
|
+
return ((0, jsx_runtime_1.jsx)("button", { className: `${className} border-none no-underline w-12 h-12 rounded-3xl bg-white flex text-black hover:text-primary-main`, style: { boxShadow: '0px 4px 25px rgba(0, 0, 0, 0.07)' }, onClick: onClick, "aria-label": ariaLabel, children: (0, jsx_runtime_1.jsxs)("svg", { className: "m-auto", width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [(0, jsx_runtime_1.jsx)("path", { d: "M7 12L3 8L7 4", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }), (0, jsx_runtime_1.jsx)("path", { d: "M14 9C14.5523 9 15 8.55228 15 8C15 7.44772 14.5523 7 14 7L14 9ZM8 7C7.44772 7 7 7.44772 7 8C7 8.55229 7.44772 9 8 9L8 7ZM14 7L8 7L8 9L14 9L14 7Z", fill: "currentColor" })] }) }));
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=ArrowButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArrowButton.js","sourceRoot":"","sources":["../../src/ui-kit/ArrowButton.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AAQ3B,QAAA,WAAW,GAAG,IAAA,aAAG,EAAmB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;IACrF,OAAO,CACL,mCACE,SAAS,EAAE,GAAG,SAAS,kGAAkG,EACzH,KAAK,EAAE,EAAE,SAAS,EAAE,kCAAkC,EAAE,EACxD,OAAO,EAAE,OAAO,gBACJ,SAAS,YAErB,iCACE,SAAS,EAAC,QAAQ,EAClB,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,aAElC,iCAAM,CAAC,EAAC,eAAe,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,GAAG,EACtF,iCACE,CAAC,EAAC,kJAAkJ,EACpJ,IAAI,EAAC,cAAc,GACnB,IACE,GACC,CACV,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
package/dist/ui-kit/Icon.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare type IconName = 'ActualBalanceIcon' | 'AppleIcon' | 'CalendarIcon' | 'ClockIcon' | 'ComfortableCompIcon' | 'DollarIcon' | 'EmptyWalletIcon' | 'EuroIcon' | 'GridIcon' | 'LoupeIcon' | 'NewDocIcon' | 'OkIcon' | 'PassSendIcon' | 'PercentageSquareIcon' | 'PlayMarketIcon' | 'ProfileIcon' | 'SignDocsIcon' | 'TelegramIcon' | 'VKIcon';
|
|
1
|
+
export declare type IconName = 'ActualBalanceIcon' | 'AppleIcon' | 'CalendarIcon' | 'ClockIcon' | 'ComfortableCompIcon' | 'DollarIcon' | 'EmptyWalletIcon' | 'EuroIcon' | 'GridIcon' | 'LoupeIcon' | 'NewDocIcon' | 'OkIcon' | 'PassSendIcon' | 'PercentageSquareIcon' | 'PlayMarketIcon' | 'ProfileIcon' | 'SignDocsIcon' | 'TelegramIcon' | 'VKIcon' | 'ArrowLeftIcon';
|
|
2
2
|
export interface IconProps {
|
|
3
3
|
className?: string;
|
|
4
4
|
name: IconName;
|
package/dist/ui-kit/Icon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../src/ui-kit/Icon.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,wDAAqD;
|
|
1
|
+
{"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../src/ui-kit/Icon.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,wDAAqD;AAkCxC,QAAA,IAAI,GAAG,IAAA,aAAG,EACrB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,QAAQ,IAAI,EAAE,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,CAAC,CACvE,gCACE,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,GAAG,iCAAe,CAAC,GAAG,IAAI,EAAE,SAAS,IAAI,MAAM,EACpD,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,KACR,QAAQ,GACZ,CACH,CACF,CAAC"}
|
package/lib/Blocks.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ import { ProductTileContent } from './ProductTile';
|
|
|
11
11
|
import { BaseTileContent } from './BaseTile';
|
|
12
12
|
import { PromoTileContent } from './PromoTile';
|
|
13
13
|
import { TextBlockContent } from './TextBlock';
|
|
14
|
+
import { GalleryContent } from './Gallery';
|
|
14
15
|
export declare const Blocks: {
|
|
15
16
|
Header: (props: import("@redneckz/uni-jsx").PropsWithChildren<import("./Header/Header").HeaderProps, any>, context?: any) => any;
|
|
16
17
|
Footer: (props: import("@redneckz/uni-jsx").PropsWithChildren<import("./Footer/Footer").FooterProps, any>, context?: any) => any;
|
|
@@ -25,5 +26,6 @@ export declare const Blocks: {
|
|
|
25
26
|
ProductGallery: (props: import("@redneckz/uni-jsx").PropsWithChildren<import("./ProductGallery").ProductGalleryProps, any>, context?: any) => any;
|
|
26
27
|
ExchangeRateTile: (props: import("@redneckz/uni-jsx").PropsWithChildren<import("./ExchangeRateTile").ExchangeRateTileProps, any>, context?: any) => any;
|
|
27
28
|
MobileAppTile: (props: import("@redneckz/uni-jsx").PropsWithChildren<import("./MobileAppTile").MobileAppTileProps, any>, context?: any) => any;
|
|
29
|
+
Gallery: (props: import("@redneckz/uni-jsx").PropsWithChildren<import("./Gallery").GalleryProps, any>, context?: any) => any;
|
|
28
30
|
};
|
|
29
|
-
export declare type BlockContent = HeaderContent | FooterContent | PlaceholderContent | BaseTileContent | TextBlockContent | ProductTileContent | PromoTileContent | ProductBlockInnerContent | StepsBlockContent | BenefitsBlockContent | ProductGalleryContent | ExchangeRateTileContent | MobileAppTileContent;
|
|
31
|
+
export declare type BlockContent = HeaderContent | FooterContent | PlaceholderContent | BaseTileContent | TextBlockContent | ProductTileContent | PromoTileContent | ProductBlockInnerContent | StepsBlockContent | BenefitsBlockContent | ProductGalleryContent | ExchangeRateTileContent | MobileAppTileContent | GalleryContent;
|
package/lib/Blocks.js
CHANGED
|
@@ -11,6 +11,7 @@ import { ProductTile } from './ProductTile.js';
|
|
|
11
11
|
import { PromoTile } from './PromoTile.js';
|
|
12
12
|
import { Tile } from './Tile.js';
|
|
13
13
|
import { TextBlock } from './TextBlock.js';
|
|
14
|
+
import { Gallery } from './Gallery.js';
|
|
14
15
|
export const Blocks = {
|
|
15
16
|
Header,
|
|
16
17
|
Footer,
|
|
@@ -25,5 +26,6 @@ export const Blocks = {
|
|
|
25
26
|
ProductGallery,
|
|
26
27
|
ExchangeRateTile,
|
|
27
28
|
MobileAppTile,
|
|
29
|
+
Gallery,
|
|
28
30
|
};
|
|
29
31
|
//# sourceMappingURL=Blocks.js.map
|
package/lib/Blocks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Blocks.js","sourceRoot":"","sources":["../src/Blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAA2B,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAiB,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAiB,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAsB,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAyB,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAqB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAsB,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAoB,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAoB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Blocks.js","sourceRoot":"","sources":["../src/Blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAA2B,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAiB,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAiB,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAsB,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAyB,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAqB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAsB,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAoB,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAoB,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAC;AAEpD,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM;IACN,MAAM;IACN,WAAW;IACX,IAAI;IACJ,SAAS;IACT,SAAS;IACT,WAAW;IACX,YAAY;IACZ,UAAU;IACV,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,OAAO;CACR,CAAC"}
|
package/lib/Gallery.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Picture, UniBlockProps } from './types';
|
|
2
|
+
export interface GalleryCard {
|
|
3
|
+
title?: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
image?: Picture;
|
|
6
|
+
href?: string;
|
|
7
|
+
items?: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface GalleryContent {
|
|
10
|
+
title?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
cards?: GalleryCard[];
|
|
13
|
+
}
|
|
14
|
+
export interface GalleryProps extends GalleryContent, UniBlockProps {
|
|
15
|
+
}
|
|
16
|
+
export declare const Gallery: (props: import("@redneckz/uni-jsx").PropsWithChildren<GalleryProps, any>, context?: any) => any;
|
package/lib/Gallery.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
|
|
2
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
3
|
+
import { Img } from './Img.js';
|
|
4
|
+
import { ArrowButton } from './ui-kit/ArrowButton.js';
|
|
5
|
+
import { BlockItem } from './ui-kit/BlockItem.js';
|
|
6
|
+
import { Button } from './ui-kit/Button.js';
|
|
7
|
+
import { Title } from './ui-kit/Title.js';
|
|
8
|
+
const CARD_WIDTH = 384;
|
|
9
|
+
const GALLERY_LENGTH_FOR_SCROLL = 3;
|
|
10
|
+
export const Gallery = JSX(({ title, description, context, cards = [], className }) => {
|
|
11
|
+
const [activeCardIndex, setActiveCardIndex] = context.useState(0);
|
|
12
|
+
function handleNextClick() {
|
|
13
|
+
setActiveCardIndex(activeCardIndex + 1);
|
|
14
|
+
}
|
|
15
|
+
function handlePrevClick() {
|
|
16
|
+
setActiveCardIndex(activeCardIndex - 1);
|
|
17
|
+
}
|
|
18
|
+
const isGalleryScrollAvailable = cards?.length > GALLERY_LENGTH_FOR_SCROLL;
|
|
19
|
+
const showNextButton = isGalleryScrollAvailable && cards?.length - activeCardIndex > GALLERY_LENGTH_FOR_SCROLL;
|
|
20
|
+
const showPrevButton = isGalleryScrollAvailable && activeCardIndex > 0;
|
|
21
|
+
return (_jsxs("section", { className: `relative font-sans text-primary-text bg-white p-12 overflow-hidden ${className}`, children: [_jsxs("div", { className: "flex flex-col items-center mb-8", children: [_jsx(Title, { className: "font-medium m-0 text-centers", children: title }), description ? (_jsx("div", { className: "font-normal text-base max-w-[600px] mt-3", children: description })) : null] }), _jsx("div", {
|
|
22
|
+
// Need to place all cards at the center if count of cards less than 4
|
|
23
|
+
className: `flex ${cards?.length <= GALLERY_LENGTH_FOR_SCROLL ? 'justify-center' : ''} duration-1000`,
|
|
24
|
+
// All cards has same width
|
|
25
|
+
style: { transform: `translateX(-${activeCardIndex * CARD_WIDTH}px)` }, role: "list", children: cards?.map(renderCard) }), showPrevButton && (_jsx(ArrowButton, { className: "absolute top-1/2 left-8", onClick: handlePrevClick, ariaLabel: "\u041F\u0440\u043E\u043B\u0438\u0441\u0442\u0430\u0442\u044C \u0432\u043B\u0435\u0432\u043E" })), showNextButton && (_jsx(ArrowButton, { className: "absolute top-1/2 right-1 z-20 rotate-180", onClick: handleNextClick, ariaLabel: "\u041F\u0440\u043E\u043B\u0438\u0441\u0442\u0430\u0442\u044C \u0432\u043F\u0440\u0430\u0432\u043E" })), _jsx("div", { className: "absolute top-0 right-0 bottom-0 w-[84px]", style: {
|
|
26
|
+
background: 'linear-gradient(270deg, #FFFFFF 34.89%, rgba(255, 255, 255, 0) 92.52%)',
|
|
27
|
+
} })] }));
|
|
28
|
+
});
|
|
29
|
+
function renderCard(card, key) {
|
|
30
|
+
return (_jsxs("div", { className: "box-border border-solid border rounded-md border-main-divider p-7 mx-2 flex flex-col justify-between items-stretch min-w-[364px] w-[364px] w-full", role: "listitem", children: [_jsxs("div", { children: [card.image?.src ? (_jsx("div", { className: "flex justify-center", children: _jsx(Img, { className: "mb-6", image: card.image }) })) : null, card.title ? (_jsx("h4", { className: `font-medium text-xl m-0 ${!card.description && !card.items?.length ? 'text-center' : ''}`, children: card.title })) : null, card.description ? (_jsx("div", { className: "font-normal text-sm text-secondary-text mt-2", children: card.description })) : null, card.items?.length ? renderItems(card.items) : null] }), card.href ? (_jsx(Button, { className: "mt-6", text: "\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435", version: "secondary", href: card.href })) : null] }, key));
|
|
31
|
+
}
|
|
32
|
+
function renderItems(items = []) {
|
|
33
|
+
return (_jsx("section", { className: "max-w-[308px] mt-2", role: "list", children: items.map((item, i) => (_jsx(BlockItem, { children: _jsx("span", { className: "text-sm text-secondary-text", children: item }) }, String(i)))) }));
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=Gallery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Gallery.js","sourceRoot":"","sources":["../src/Gallery.tsx"],"names":[],"mappings":"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"}
|
package/lib/common.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@import "../fonts/ubuntu/ubuntu.css";[data-theme=pc]{--color-primary-main:66,171,68;--color-primary-hover:36,131,65;--color-primary-active:36,95,52;--color-secondary-hover:216,242,217;--color-secondary-active:197,226,198}[data-theme=bc]{--color-primary-main:131,184,62;--color-primary-hover:92,146,29;--color-primary-active:60,94,16;--color-secondary-hover:232,244,217;--color-secondary-active:216,227,202}[data-theme=eo]{--color-primary-main:221,182,61;--color-primary-hover:187,151,39;--color-primary-active:126,99,12;--color-secondary-hover:241,236,221;--color-secondary-active:229,222,199}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.top-4{top:1rem}.right-4{right:1rem}.bottom-0{bottom:0}.right-0{right:0}.left-0{left:0}.-bottom-2{bottom:-.5rem}.top-1{top:.25rem}.right-1{right:.25rem}.z-10{z-index:10}.col-span-12{grid-column:span 12/span 12}.col-span-8{grid-column:span 8/span 8}.col-span-4{grid-column:span 4/span 4}.col-span-6{grid-column:span 6/span 6}.m-0{margin:0}.-mx-20{margin-left:-5rem;margin-right:-5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mt-9{margin-top:2.25rem}.mt-auto{margin-top:auto}.ml-7{margin-left:1.75rem}.mt-2\.5{margin-top:.625rem}.mt-2{margin-top:.5rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.mb-6{margin-bottom:1.5rem}.mt-6{margin-top:1.5rem}.mb-3\.5{margin-bottom:.875rem}.mb-3{margin-bottom:.75rem}.mt-5{margin-top:1.25rem}.mb-1{margin-bottom:.25rem}.mr-8{margin-right:2rem}.mt-4{margin-top:1rem}.mb-2{margin-bottom:.5rem}.ml-auto{margin-left:auto}.mr-5{margin-right:1.25rem}.mr-7{margin-right:1.75rem}.mr-2{margin-right:.5rem}.ml-2\.5{margin-left:.625rem}.box-border{box-sizing:border-box}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-full{height:100%}.h-\[70px\]{height:70px}.h-8{height:2rem}.h-\[90px\]{height:90px}.h-4{height:1rem}.h-\[50px\]{height:50px}.h-\[3px\]{height:3px}.h-0\.5{height:.125rem}.h-0{height:0}.h-\[100px\]{height:100px}.h-9{height:2.25rem}.h-\[1px\]{height:1px}.h-\[8px\]{height:8px}.h-\[2px\]{height:2px}.h-\[24px\]{height:24px}.min-h-\[70px\]{min-height:70px}.min-h-\[90px\]{min-height:90px}.min-h-\[50px\]{min-height:50px}.min-h-\[100px\]{min-height:100px}.min-h-\[320px\]{min-height:320px}.min-h-\[32px\]{min-height:32px}.min-h-\[8px\]{min-height:8px}.w-\[70px\]{width:70px}.w-full{width:100%}.w-8{width:2rem}.w-\[125px\]{width:125px}.w-\[90px\]{width:90px}.w-\[50px\]{width:50px}.w-\[100px\]{width:100px}.w-\[276px\]{width:276px}.w-4{width:1rem}.w-\[280px\]{width:280px}.w-\[235px\]{width:235px}.w-9{width:2.25rem}.w-\[24px\]{width:24px}.w-\[8px\]{width:8px}.w-\[36px\]{width:36px}.w-10{width:2.5rem}.min-w-\[70px\]{min-width:70px}.min-w-\[90px\]{min-width:90px}.min-w-\[600px\]{min-width:600px}.min-w-\[50px\]{min-width:50px}.min-w-\[100px\]{min-width:100px}.min-w-\[32px\]{min-width:32px}.min-w-\[8px\]{min-width:8px}.max-w-\[600px\]{max-width:600px}.max-w-\[47rem\]{max-width:47rem}.max-w-\[580px\]{max-width:580px}.max-w-min{max-width:-webkit-min-content;max-width:-moz-min-content;max-width:min-content}.max-w-\[292px\]{max-width:292px}.max-w-\[170px\]{max-width:170px}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.basis-0{flex-basis:0px}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@-webkit-keyframes progress{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes progress{0%{transform:translateX(-100%)}to{transform:translateX(0)}}.animate-slide{-webkit-animation:progress linear;animation:progress linear}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-3{gap:.75rem}.gap-5{gap:1.25rem}.gap-1{gap:.25rem}.gap-6{gap:1.5rem}.gap-4{gap:1rem}.gap-32{gap:8rem}.gap-11{gap:2.75rem}.gap-\[14px\]{gap:14px}.gap-2{gap:.5rem}.gap-3\.5{gap:.875rem}.gap-x-24{-moz-column-gap:6rem;column-gap:6rem}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded{border-radius:.25rem}.rounded-tl-lg{border-top-left-radius:.5rem}.rounded-bl-3xl{border-bottom-left-radius:1.5rem}.rounded-br-3xl{border-bottom-right-radius:1.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-0{border-width:0}.border-x-0{border-left-width:0;border-right-width:0}.border-y{border-bottom-width:1px}.border-t,.border-y{border-top-width:1px}.border-r{border-right-width:1px}.border-solid{border-style:solid}.border-none{border-style:none}.border-main{--tw-border-opacity:1;border-color:rgba(240,244,240,var(--tw-border-opacity))}.border-main-divider{--tw-border-opacity:1;border-color:rgba(235,237,240,var(--tw-border-opacity))}.border-primary-main{--tw-border-opacity:1;border-color:rgba(var(--color-primary-main),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-y-main-divider{--tw-border-opacity:1;border-bottom-color:rgba(235,237,240,var(--tw-border-opacity));border-top-color:rgba(235,237,240,var(--tw-border-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-main{--tw-bg-opacity:1;background-color:rgba(240,244,240,var(--tw-bg-opacity))}.bg-secondary-text{--tw-bg-opacity:1;background-color:rgba(125,126,127,var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-secondary-light{--tw-bg-opacity:1;background-color:rgba(245,247,249,var(--tw-bg-opacity))}.bg-inherit{background-color:inherit}.bg-primary-main{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-main),var(--tw-bg-opacity))}.bg-primary-main\/10{background-color:rgba(var(--color-primary-main),.1)}.bg-main-divider{--tw-bg-opacity:1;background-color:rgba(235,237,240,var(--tw-bg-opacity))}.bg-secondary-dark{--tw-bg-opacity:1;background-color:rgba(226,228,229,var(--tw-bg-opacity))}.p-12{padding:3rem}.p-10{padding:2.5rem}.p-20{padding:5rem}.p-2{padding:.5rem}.p-\[10px\]{padding:10px}.p-\[26px\]{padding:26px}.p-9{padding:2.25rem}.p-0{padding:0}.px-0{padding-left:0;padding-right:0}.py-4{padding-bottom:1rem;padding-top:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-12{padding-left:3rem;padding-right:3rem}.py-12{padding-bottom:3rem;padding-top:3rem}.px-\[88px\]{padding-left:88px;padding-right:88px}.px-3{padding-left:.75rem;padding-right:.75rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-0{padding-bottom:0;padding-top:0}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-10{padding-bottom:2.5rem;padding-top:2.5rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.px-20{padding-left:5rem;padding-right:5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-4{padding-left:1rem;padding-right:1rem}.pb-2{padding-bottom:.5rem}.pt-0{padding-top:0}.pl-11{padding-left:2.75rem}.pt-4{padding-top:1rem}.pt-10{padding-top:2.5rem}.pl-\[50px\]{padding-left:50px}.pb-\[50px\]{padding-bottom:50px}.pr-\[7\.5rem\]{padding-right:7.5rem}.pl-2\.5{padding-left:.625rem}.pt-2\.5{padding-top:.625rem}.pb-1\.5{padding-bottom:.375rem}.pr-\[6\.25rem\]{padding-right:6.25rem}.pl-2{padding-left:.5rem}.pt-2{padding-top:.5rem}.pb-1{padding-bottom:.25rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pr-4{padding-right:1rem}.pt-0\.5{padding-top:.125rem}.pr-3{padding-right:.75rem}.pr-28{padding-right:7rem}.pr-9{padding-right:2.25rem}.pr-\[4\.75rem\]{padding-right:4.75rem}.pr-\[9\.4rem\]{padding-right:9.4rem}.pb-8{padding-bottom:2rem}.pt-\[3px\]{padding-top:3px}.pt-\[30px\]{padding-top:30px}.pb-7{padding-bottom:1.75rem}.pt-5{padding-top:1.25rem}.pb-\[5px\]{padding-bottom:5px}.pt-\[5px\]{padding-top:5px}.pl-4{padding-left:1rem}.pl-12{padding-left:3rem}.pr-\[6\%\]{padding-right:6%}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:Ubuntu,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-base{font-size:1rem;line-height:1.5rem}.text-title{font-size:2rem;line-height:2.5rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.375rem}.text-xs{font-size:.75rem;line-height:1.125rem}.text-title-sm{font-size:1.75rem;line-height:2.5rem}.text-xxs{font-size:.625rem;line-height:.625rem}.text-title-lg{font-size:2.5rem;line-height:3rem}.text-title-xs{font-size:1.5rem;line-height:1.875rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.text-primary-text{--tw-text-opacity:1;color:rgba(28,28,28,var(--tw-text-opacity))}.text-secondary-text{--tw-text-opacity:1;color:rgba(125,126,127,var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-primary-main{--tw-text-opacity:1;color:rgba(var(--color-primary-main),var(--tw-text-opacity))}.text-secondary-light{--tw-text-opacity:1;color:rgba(245,247,249,var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.no-underline{-webkit-text-decoration-line:none;text-decoration-line:none}.shadow-\[0_8px_32px_0px_\#00000014\]{--tw-shadow:0 8px 32px 0px #00000014;--tw-shadow-colored:0 8px 32px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.duration-1000{transition-duration:1s}.rotate-180{transform:rotate(180deg)}.-translate-x-full{transform:translateX(-100%)}.visited\:text-secondary-text:visited{color:rgba(125,126,127,var(--tw-text-opacity))}.hover\:bg-primary-hover:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-hover),var(--tw-bg-opacity))}.hover\:bg-secondary-hover:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-hover),var(--tw-bg-opacity))}.hover\:text-primary-text:hover{--tw-text-opacity:1;color:rgba(28,28,28,var(--tw-text-opacity))}.hover\:text-primary-main:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-main),var(--tw-text-opacity))}.hover\:text-secondary-active:hover{--tw-text-opacity:1;color:rgba(var(--color-secondary-active),var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.active\:bg-primary-active:active{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-active),var(--tw-bg-opacity))}.active\:bg-secondary-active:active{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-active),var(--tw-bg-opacity))}.group:hover .group-hover\:text-primary-text{--tw-text-opacity:1;color:rgba(28,28,28,var(--tw-text-opacity))}@media (min-width:1280px) and (max-width:1535px){.xl\:w-\[220px\]{width:220px}.xl\:gap-8{gap:2rem}.xl\:gap-5{gap:1.25rem}}
|
|
1
|
+
@import "../fonts/ubuntu/ubuntu.css";[data-theme=pc]{--color-primary-main:66,171,68;--color-primary-hover:36,131,65;--color-primary-active:36,95,52;--color-secondary-hover:216,242,217;--color-secondary-active:197,226,198}[data-theme=bc]{--color-primary-main:131,184,62;--color-primary-hover:92,146,29;--color-primary-active:60,94,16;--color-secondary-hover:232,244,217;--color-secondary-active:216,227,202}[data-theme=eo]{--color-primary-main:221,182,61;--color-primary-hover:187,151,39;--color-primary-active:126,99,12;--color-secondary-hover:241,236,221;--color-secondary-active:229,222,199}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.top-4{top:1rem}.right-4{right:1rem}.bottom-0{bottom:0}.right-0{right:0}.top-1\/2{top:50%}.left-8{left:2rem}.right-1{right:.25rem}.top-0{top:0}.left-0{left:0}.-bottom-2{bottom:-.5rem}.top-1{top:.25rem}.z-20{z-index:20}.z-10{z-index:10}.col-span-12{grid-column:span 12/span 12}.col-span-8{grid-column:span 8/span 8}.col-span-4{grid-column:span 4/span 4}.col-span-6{grid-column:span 6/span 6}.m-0{margin:0}.m-auto{margin:auto}.-mx-20{margin-left:-5rem;margin-right:-5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mt-9{margin-top:2.25rem}.mt-auto{margin-top:auto}.ml-7{margin-left:1.75rem}.mt-2\.5{margin-top:.625rem}.mt-2{margin-top:.5rem}.ml-2{margin-left:.5rem}.mb-8{margin-bottom:2rem}.mt-3{margin-top:.75rem}.mb-6{margin-bottom:1.5rem}.mt-6{margin-top:1.5rem}.ml-4{margin-left:1rem}.mb-3\.5{margin-bottom:.875rem}.mb-3{margin-bottom:.75rem}.mt-5{margin-top:1.25rem}.mb-1{margin-bottom:.25rem}.mr-8{margin-right:2rem}.mt-4{margin-top:1rem}.mb-2{margin-bottom:.5rem}.ml-auto{margin-left:auto}.mr-5{margin-right:1.25rem}.mr-7{margin-right:1.75rem}.mr-2{margin-right:.5rem}.ml-2\.5{margin-left:.625rem}.box-border{box-sizing:border-box}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-full{height:100%}.h-\[70px\]{height:70px}.h-8{height:2rem}.h-\[90px\]{height:90px}.h-4{height:1rem}.h-\[50px\]{height:50px}.h-\[3px\]{height:3px}.h-0\.5{height:.125rem}.h-0{height:0}.h-\[100px\]{height:100px}.h-9{height:2.25rem}.h-\[1px\]{height:1px}.h-12{height:3rem}.h-\[8px\]{height:8px}.h-\[2px\]{height:2px}.h-\[24px\]{height:24px}.min-h-\[70px\]{min-height:70px}.min-h-\[90px\]{min-height:90px}.min-h-\[50px\]{min-height:50px}.min-h-\[100px\]{min-height:100px}.min-h-\[320px\]{min-height:320px}.min-h-\[32px\]{min-height:32px}.min-h-\[8px\]{min-height:8px}.w-\[70px\]{width:70px}.w-full{width:100%}.w-8{width:2rem}.w-\[84px\]{width:84px}.w-\[364px\]{width:364px}.w-\[125px\]{width:125px}.w-\[90px\]{width:90px}.w-\[50px\]{width:50px}.w-\[100px\]{width:100px}.w-\[276px\]{width:276px}.w-4{width:1rem}.w-\[280px\]{width:280px}.w-\[235px\]{width:235px}.w-9{width:2.25rem}.w-\[24px\]{width:24px}.w-12{width:3rem}.w-\[8px\]{width:8px}.w-\[36px\]{width:36px}.w-10{width:2.5rem}.min-w-\[70px\]{min-width:70px}.min-w-\[364px\]{min-width:364px}.min-w-\[90px\]{min-width:90px}.min-w-\[600px\]{min-width:600px}.min-w-\[50px\]{min-width:50px}.min-w-\[100px\]{min-width:100px}.min-w-\[32px\]{min-width:32px}.min-w-\[8px\]{min-width:8px}.max-w-\[600px\]{max-width:600px}.max-w-\[47rem\]{max-width:47rem}.max-w-\[580px\]{max-width:580px}.max-w-\[308px\]{max-width:308px}.max-w-min{max-width:-webkit-min-content;max-width:-moz-min-content;max-width:min-content}.max-w-\[292px\]{max-width:292px}.max-w-\[170px\]{max-width:170px}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.basis-0{flex-basis:0px}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@-webkit-keyframes progress{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes progress{0%{transform:translateX(-100%)}to{transform:translateX(0)}}.animate-slide{-webkit-animation:progress linear;animation:progress linear}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-3{gap:.75rem}.gap-5{gap:1.25rem}.gap-1{gap:.25rem}.gap-6{gap:1.5rem}.gap-4{gap:1rem}.gap-32{gap:8rem}.gap-11{gap:2.75rem}.gap-\[14px\]{gap:14px}.gap-2{gap:.5rem}.gap-3\.5{gap:.875rem}.gap-x-24{-moz-column-gap:6rem;column-gap:6rem}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-3xl{border-radius:1.5rem}.rounded{border-radius:.25rem}.rounded-tl-lg{border-top-left-radius:.5rem}.rounded-bl-3xl{border-bottom-left-radius:1.5rem}.rounded-br-3xl{border-bottom-right-radius:1.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-0{border-width:0}.border-x-0{border-left-width:0;border-right-width:0}.border-y{border-bottom-width:1px}.border-t,.border-y{border-top-width:1px}.border-r{border-right-width:1px}.border-solid{border-style:solid}.border-none{border-style:none}.border-main-divider{--tw-border-opacity:1;border-color:rgba(235,237,240,var(--tw-border-opacity))}.border-main{--tw-border-opacity:1;border-color:rgba(240,244,240,var(--tw-border-opacity))}.border-primary-main{--tw-border-opacity:1;border-color:rgba(var(--color-primary-main),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-y-main-divider{--tw-border-opacity:1;border-bottom-color:rgba(235,237,240,var(--tw-border-opacity));border-top-color:rgba(235,237,240,var(--tw-border-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-main{--tw-bg-opacity:1;background-color:rgba(240,244,240,var(--tw-bg-opacity))}.bg-secondary-text{--tw-bg-opacity:1;background-color:rgba(125,126,127,var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-secondary-light{--tw-bg-opacity:1;background-color:rgba(245,247,249,var(--tw-bg-opacity))}.bg-inherit{background-color:inherit}.bg-primary-main{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-main),var(--tw-bg-opacity))}.bg-primary-main\/10{background-color:rgba(var(--color-primary-main),.1)}.bg-main-divider{--tw-bg-opacity:1;background-color:rgba(235,237,240,var(--tw-bg-opacity))}.bg-secondary-dark{--tw-bg-opacity:1;background-color:rgba(226,228,229,var(--tw-bg-opacity))}.p-12{padding:3rem}.p-10{padding:2.5rem}.p-20{padding:5rem}.p-7{padding:1.75rem}.p-2{padding:.5rem}.p-\[10px\]{padding:10px}.p-\[26px\]{padding:26px}.p-9{padding:2.25rem}.p-0{padding:0}.px-0{padding-left:0;padding-right:0}.py-4{padding-bottom:1rem;padding-top:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-12{padding-left:3rem;padding-right:3rem}.py-12{padding-bottom:3rem;padding-top:3rem}.px-\[88px\]{padding-left:88px;padding-right:88px}.px-3{padding-left:.75rem;padding-right:.75rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-0{padding-bottom:0;padding-top:0}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-10{padding-bottom:2.5rem;padding-top:2.5rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.px-20{padding-left:5rem;padding-right:5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-4{padding-left:1rem;padding-right:1rem}.pb-2{padding-bottom:.5rem}.pt-0{padding-top:0}.pl-11{padding-left:2.75rem}.pt-4{padding-top:1rem}.pt-10{padding-top:2.5rem}.pl-\[50px\]{padding-left:50px}.pb-\[50px\]{padding-bottom:50px}.pr-\[7\.5rem\]{padding-right:7.5rem}.pl-2\.5{padding-left:.625rem}.pt-2\.5{padding-top:.625rem}.pb-1\.5{padding-bottom:.375rem}.pr-\[6\.25rem\]{padding-right:6.25rem}.pl-2{padding-left:.5rem}.pt-2{padding-top:.5rem}.pb-1{padding-bottom:.25rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pr-4{padding-right:1rem}.pt-0\.5{padding-top:.125rem}.pr-3{padding-right:.75rem}.pr-28{padding-right:7rem}.pr-9{padding-right:2.25rem}.pr-\[4\.75rem\]{padding-right:4.75rem}.pr-\[9\.4rem\]{padding-right:9.4rem}.pb-8{padding-bottom:2rem}.pt-\[3px\]{padding-top:3px}.pt-\[30px\]{padding-top:30px}.pb-7{padding-bottom:1.75rem}.pt-5{padding-top:1.25rem}.pb-\[5px\]{padding-bottom:5px}.pt-\[5px\]{padding-top:5px}.pl-4{padding-left:1rem}.pl-12{padding-left:3rem}.pr-\[6\%\]{padding-right:6%}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:Ubuntu,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-base{font-size:1rem;line-height:1.5rem}.text-title{font-size:2rem;line-height:2.5rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.375rem}.text-xs{font-size:.75rem;line-height:1.125rem}.text-title-sm{font-size:1.75rem;line-height:2.5rem}.text-xxs{font-size:.625rem;line-height:.625rem}.text-title-lg{font-size:2.5rem;line-height:3rem}.text-title-xs{font-size:1.5rem;line-height:1.875rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.text-primary-text{--tw-text-opacity:1;color:rgba(28,28,28,var(--tw-text-opacity))}.text-secondary-text{--tw-text-opacity:1;color:rgba(125,126,127,var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-primary-main{--tw-text-opacity:1;color:rgba(var(--color-primary-main),var(--tw-text-opacity))}.text-secondary-light{--tw-text-opacity:1;color:rgba(245,247,249,var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.no-underline{-webkit-text-decoration-line:none;text-decoration-line:none}.shadow-\[0_8px_32px_0px_\#00000014\]{--tw-shadow:0 8px 32px 0px #00000014;--tw-shadow-colored:0 8px 32px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.duration-1000{transition-duration:1s}.rotate-180{transform:rotate(180deg)}.-translate-x-full{transform:translateX(-100%)}.visited\:text-secondary-text:visited{color:rgba(125,126,127,var(--tw-text-opacity))}.hover\:bg-primary-hover:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-hover),var(--tw-bg-opacity))}.hover\:bg-secondary-hover:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-hover),var(--tw-bg-opacity))}.hover\:text-primary-text:hover{--tw-text-opacity:1;color:rgba(28,28,28,var(--tw-text-opacity))}.hover\:text-primary-main:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-main),var(--tw-text-opacity))}.hover\:text-secondary-active:hover{--tw-text-opacity:1;color:rgba(var(--color-secondary-active),var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.active\:bg-primary-active:active{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-active),var(--tw-bg-opacity))}.active\:bg-secondary-active:active{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-active),var(--tw-bg-opacity))}.group:hover .group-hover\:text-primary-text{--tw-text-opacity:1;color:rgba(28,28,28,var(--tw-text-opacity))}@media (min-width:1280px) and (max-width:1535px){.xl\:w-\[220px\]{width:220px}.xl\:gap-8{gap:2rem}.xl\:gap-5{gap:1.25rem}}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
|
|
2
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
3
|
+
export const ArrowButton = JSX(({ className, onClick, ariaLabel }) => {
|
|
4
|
+
return (_jsx("button", { className: `${className} border-none no-underline w-12 h-12 rounded-3xl bg-white flex text-black hover:text-primary-main`, style: { boxShadow: '0px 4px 25px rgba(0, 0, 0, 0.07)' }, onClick: onClick, "aria-label": ariaLabel, children: _jsxs("svg", { className: "m-auto", width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("path", { d: "M7 12L3 8L7 4", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }), _jsx("path", { d: "M14 9C14.5523 9 15 8.55228 15 8C15 7.44772 14.5523 7 14 7L14 9ZM8 7C7.44772 7 7 7.44772 7 8C7 8.55229 7.44772 9 8 9L8 7ZM14 7L8 7L8 9L14 9L14 7Z", fill: "currentColor" })] }) }));
|
|
5
|
+
});
|
|
6
|
+
//# sourceMappingURL=ArrowButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArrowButton.js","sourceRoot":"","sources":["../../src/ui-kit/ArrowButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAQxC,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAmB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;IACrF,OAAO,CACL,iBACE,SAAS,EAAE,GAAG,SAAS,kGAAkG,EACzH,KAAK,EAAE,EAAE,SAAS,EAAE,kCAAkC,EAAE,EACxD,OAAO,EAAE,OAAO,gBACJ,SAAS,YAErB,eACE,SAAS,EAAC,QAAQ,EAClB,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,aAElC,eAAM,CAAC,EAAC,eAAe,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,GAAG,EACtF,eACE,CAAC,EAAC,kJAAkJ,EACpJ,IAAI,EAAC,cAAc,GACnB,IACE,GACC,CACV,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
package/lib/ui-kit/Icon.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare type IconName = 'ActualBalanceIcon' | 'AppleIcon' | 'CalendarIcon' | 'ClockIcon' | 'ComfortableCompIcon' | 'DollarIcon' | 'EmptyWalletIcon' | 'EuroIcon' | 'GridIcon' | 'LoupeIcon' | 'NewDocIcon' | 'OkIcon' | 'PassSendIcon' | 'PercentageSquareIcon' | 'PlayMarketIcon' | 'ProfileIcon' | 'SignDocsIcon' | 'TelegramIcon' | 'VKIcon';
|
|
1
|
+
export declare type IconName = 'ActualBalanceIcon' | 'AppleIcon' | 'CalendarIcon' | 'ClockIcon' | 'ComfortableCompIcon' | 'DollarIcon' | 'EmptyWalletIcon' | 'EuroIcon' | 'GridIcon' | 'LoupeIcon' | 'NewDocIcon' | 'OkIcon' | 'PassSendIcon' | 'PercentageSquareIcon' | 'PlayMarketIcon' | 'ProfileIcon' | 'SignDocsIcon' | 'TelegramIcon' | 'VKIcon' | 'ArrowLeftIcon';
|
|
2
2
|
export interface IconProps {
|
|
3
3
|
className?: string;
|
|
4
4
|
name: IconName;
|
package/lib/ui-kit/Icon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../src/ui-kit/Icon.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../src/ui-kit/Icon.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAkCrD,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CACrB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,QAAQ,IAAI,EAAE,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,CAAC,CACvE,cACE,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,GAAG,eAAe,CAAC,GAAG,IAAI,EAAE,SAAS,IAAI,MAAM,EACpD,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,KACR,QAAQ,GACZ,CACH,CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@redneckz/wildless-cms-uni-blocks",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.65",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -150,8 +150,8 @@
|
|
|
150
150
|
],
|
|
151
151
|
"lint-staged": {
|
|
152
152
|
"src/**/*.{js,jsx,ts,tsx,css}": "prettier --write",
|
|
153
|
-
"
|
|
154
|
-
"cosmos
|
|
153
|
+
"*.{js,jsx,ts,tsx,css,json}": [
|
|
154
|
+
"npm run cosmos:export",
|
|
155
155
|
"git add ./docs"
|
|
156
156
|
]
|
|
157
157
|
}
|
package/src/Blocks.ts
CHANGED
|
@@ -13,6 +13,7 @@ import { BaseTileContent } from './BaseTile';
|
|
|
13
13
|
import { PromoTile, PromoTileContent } from './PromoTile';
|
|
14
14
|
import { Tile } from './Tile';
|
|
15
15
|
import { TextBlock, TextBlockContent } from './TextBlock';
|
|
16
|
+
import { Gallery, GalleryContent } from './Gallery';
|
|
16
17
|
|
|
17
18
|
export const Blocks = {
|
|
18
19
|
Header,
|
|
@@ -28,6 +29,7 @@ export const Blocks = {
|
|
|
28
29
|
ProductGallery,
|
|
29
30
|
ExchangeRateTile,
|
|
30
31
|
MobileAppTile,
|
|
32
|
+
Gallery,
|
|
31
33
|
};
|
|
32
34
|
|
|
33
35
|
export type BlockContent =
|
|
@@ -43,4 +45,5 @@ export type BlockContent =
|
|
|
43
45
|
| BenefitsBlockContent
|
|
44
46
|
| ProductGalleryContent
|
|
45
47
|
| ExchangeRateTileContent
|
|
46
|
-
| MobileAppTileContent
|
|
48
|
+
| MobileAppTileContent
|
|
49
|
+
| GalleryContent;
|
|
@@ -714,6 +714,111 @@
|
|
|
714
714
|
"iconVersion": "small"
|
|
715
715
|
}
|
|
716
716
|
},
|
|
717
|
+
{
|
|
718
|
+
"type": "Gallery",
|
|
719
|
+
"style": ["col-span-12"],
|
|
720
|
+
"content": {
|
|
721
|
+
"title": "Вы можете оплатить бонусными баллами",
|
|
722
|
+
"description": "Удобный каталог с большим ассортиментом товаров и сервисов",
|
|
723
|
+
"cards": [
|
|
724
|
+
{
|
|
725
|
+
"image": {
|
|
726
|
+
"src": "money-1.png",
|
|
727
|
+
"title": "Деньги",
|
|
728
|
+
"format": "webp",
|
|
729
|
+
"size": {
|
|
730
|
+
"width": 140,
|
|
731
|
+
"height": 140
|
|
732
|
+
}
|
|
733
|
+
},
|
|
734
|
+
"title": "Более 5000 товаров",
|
|
735
|
+
"description": "Время копить: ставка растет в зависимости от срока нахождения средств на Счете!",
|
|
736
|
+
"href": "/credit-cards",
|
|
737
|
+
"items": [
|
|
738
|
+
"Качественные фермерские продукты напрямую от производителей",
|
|
739
|
+
"Самая большая база сельских туров по России",
|
|
740
|
+
"Площадки для создания комфортной жизни за городом"
|
|
741
|
+
]
|
|
742
|
+
},
|
|
743
|
+
{
|
|
744
|
+
"image": {
|
|
745
|
+
"src": "credit-card-1.png",
|
|
746
|
+
"title": "Деньги",
|
|
747
|
+
"format": "webp",
|
|
748
|
+
"size": {
|
|
749
|
+
"width": 140,
|
|
750
|
+
"height": 140
|
|
751
|
+
}
|
|
752
|
+
},
|
|
753
|
+
"title": "Более 1000 развлечений",
|
|
754
|
+
"description": "Порядок и условия предоставления в соответствии с 106 ФЗ",
|
|
755
|
+
"href": "/credit-cards",
|
|
756
|
+
"items": [
|
|
757
|
+
"Качественные фермерские продукты напрямую от производителей",
|
|
758
|
+
"Самая большая база сельских туров по России",
|
|
759
|
+
"Площадки для создания комфортной жизни за городом"
|
|
760
|
+
]
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
"image": {
|
|
764
|
+
"src": "globe-1.png",
|
|
765
|
+
"title": "Деньги",
|
|
766
|
+
"format": "webp",
|
|
767
|
+
"size": {
|
|
768
|
+
"width": 140,
|
|
769
|
+
"height": 140
|
|
770
|
+
}
|
|
771
|
+
},
|
|
772
|
+
"title": "Фермерские продукты",
|
|
773
|
+
"description": "Высокий процент даже при небольшой сумме денежных средств",
|
|
774
|
+
"href": "/credit-cards",
|
|
775
|
+
"items": [
|
|
776
|
+
"Качественные фермерские продукты напрямую от производителей",
|
|
777
|
+
"Самая большая база сельских туров по России",
|
|
778
|
+
"Площадки для создания комфортной жизни за городом"
|
|
779
|
+
]
|
|
780
|
+
},
|
|
781
|
+
{
|
|
782
|
+
"image": {
|
|
783
|
+
"src": "money-2.png",
|
|
784
|
+
"title": "Деньги",
|
|
785
|
+
"format": "webp",
|
|
786
|
+
"size": {
|
|
787
|
+
"width": 140,
|
|
788
|
+
"height": 140
|
|
789
|
+
}
|
|
790
|
+
},
|
|
791
|
+
"title": "«Моя выгода»",
|
|
792
|
+
"description": "Время копить: ставка растет в зависимости от срока нахождения средств на Счете!",
|
|
793
|
+
"href": "/credit-cards",
|
|
794
|
+
"items": [
|
|
795
|
+
"Качественные фермерские продукты напрямую от производителей",
|
|
796
|
+
"Самая большая база сельских туров по России",
|
|
797
|
+
"Площадки для создания комфортной жизни за городом"
|
|
798
|
+
]
|
|
799
|
+
},
|
|
800
|
+
{
|
|
801
|
+
"image": {
|
|
802
|
+
"src": "credit-card-1.png",
|
|
803
|
+
"title": "Деньги",
|
|
804
|
+
"format": "webp",
|
|
805
|
+
"size": {
|
|
806
|
+
"width": 140,
|
|
807
|
+
"height": 140
|
|
808
|
+
}
|
|
809
|
+
},
|
|
810
|
+
"title": "Фермерские продукты",
|
|
811
|
+
"description": "Высокий процент даже при небольшой сумме денежных средств",
|
|
812
|
+
"href": "/credit-cards",
|
|
813
|
+
"items": [
|
|
814
|
+
"Качественные фермерские продукты напрямую от производителей",
|
|
815
|
+
"Самая большая база сельских туров по России",
|
|
816
|
+
"Площадки для создания комфортной жизни за городом"
|
|
817
|
+
]
|
|
818
|
+
}
|
|
819
|
+
]
|
|
820
|
+
}
|
|
821
|
+
},
|
|
717
822
|
|
|
718
823
|
{
|
|
719
824
|
"type": "Footer",
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { context } from './setup-fixture';
|
|
2
|
+
|
|
3
|
+
import { Gallery, GalleryProps } from './Gallery';
|
|
4
|
+
import { Picture } from './types';
|
|
5
|
+
|
|
6
|
+
const image: Picture = {
|
|
7
|
+
src: 'money-1.png',
|
|
8
|
+
format: 'webp',
|
|
9
|
+
size: {
|
|
10
|
+
width: 140,
|
|
11
|
+
height: 140,
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const defaultItems = [
|
|
16
|
+
'Качественные фермерские продукты напрямую от производителей',
|
|
17
|
+
'Самая большая база сельских туров по России',
|
|
18
|
+
'Площадки для создания комфортной жизни за городом',
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
const defaultProps: GalleryProps = {
|
|
22
|
+
title: 'Вы можете оплатить бонусными баллами',
|
|
23
|
+
description: 'Удобный каталог с большим ассортиментом товаров и сервисов',
|
|
24
|
+
context,
|
|
25
|
+
cards: [
|
|
26
|
+
{
|
|
27
|
+
title: 'Более 5000 товаров',
|
|
28
|
+
description:
|
|
29
|
+
'Время копить: ставка растет в зависимости от срока нахождения средств на Счете!',
|
|
30
|
+
image,
|
|
31
|
+
href: '/credit-cards',
|
|
32
|
+
items: defaultItems,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
title: 'Более 1000 развлечений',
|
|
36
|
+
description: 'Порядок и условия предоставления в соответствии с 106 ФЗ',
|
|
37
|
+
image,
|
|
38
|
+
href: '/credit-cards',
|
|
39
|
+
items: defaultItems,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
title: 'Фермерские продукты',
|
|
43
|
+
description: 'Высокий процент даже при небольшой сумме денежных средств',
|
|
44
|
+
image,
|
|
45
|
+
href: '/credit-cards',
|
|
46
|
+
items: defaultItems,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
title: '«Моя выгода»',
|
|
50
|
+
description:
|
|
51
|
+
'Время копить: ставка растет в зависимости от срока нахождения средств на Счете!',
|
|
52
|
+
image,
|
|
53
|
+
href: '/credit-cards',
|
|
54
|
+
items: defaultItems,
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
title: 'Фермерские продукты',
|
|
58
|
+
description: 'Высокий процент даже при небольшой сумме денежных средств',
|
|
59
|
+
image,
|
|
60
|
+
href: '/credit-cards',
|
|
61
|
+
items: defaultItems,
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const textAndButtonProps: GalleryProps = {
|
|
67
|
+
title: 'Вы можете оплатить бонусными баллами',
|
|
68
|
+
description: 'Удобный каталог с большим ассортиментом товаров и сервисов',
|
|
69
|
+
context,
|
|
70
|
+
cards: [
|
|
71
|
+
{
|
|
72
|
+
title: 'Более 5000 товаров',
|
|
73
|
+
description:
|
|
74
|
+
'Время копить: ставка растет в зависимости от срока нахождения средств на Счете!',
|
|
75
|
+
image,
|
|
76
|
+
href: '/credit-cards',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
title: 'Более 1000 развлечений',
|
|
80
|
+
description: 'Порядок и условия предоставления в соответствии с 106 ФЗ',
|
|
81
|
+
image,
|
|
82
|
+
href: '/credit-cards',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
title: 'Фермерские продукты',
|
|
86
|
+
description: 'Высокий процент даже при небольшой сумме денежных средств',
|
|
87
|
+
image,
|
|
88
|
+
href: '/credit-cards',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
title: '«Моя выгода»',
|
|
92
|
+
description:
|
|
93
|
+
'Время копить: ставка растет в зависимости от срока нахождения средств на Счете!',
|
|
94
|
+
image,
|
|
95
|
+
href: '/credit-cards',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
title: 'Фермерские продукты',
|
|
99
|
+
description: 'Высокий процент даже при небольшой сумме денежных средств',
|
|
100
|
+
image,
|
|
101
|
+
href: '/credit-cards',
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const listAndButtonProps: GalleryProps = {
|
|
107
|
+
title: 'Вы можете оплатить бонусными баллами',
|
|
108
|
+
description: 'Удобный каталог с большим ассортиментом товаров и сервисов',
|
|
109
|
+
context,
|
|
110
|
+
cards: [
|
|
111
|
+
{
|
|
112
|
+
title: 'Более 5000 товаров',
|
|
113
|
+
image,
|
|
114
|
+
href: '/credit-cards',
|
|
115
|
+
items: defaultItems,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
title: 'Более 1000 развлечений',
|
|
119
|
+
image,
|
|
120
|
+
href: '/credit-cards',
|
|
121
|
+
items: defaultItems,
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
title: 'Фермерские продукты',
|
|
125
|
+
image,
|
|
126
|
+
href: '/credit-cards',
|
|
127
|
+
items: defaultItems,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
title: '«Моя выгода»',
|
|
131
|
+
image,
|
|
132
|
+
href: '/credit-cards',
|
|
133
|
+
items: defaultItems,
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
title: 'Фермерские продукты',
|
|
137
|
+
image,
|
|
138
|
+
href: '/credit-cards',
|
|
139
|
+
items: defaultItems,
|
|
140
|
+
},
|
|
141
|
+
],
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
const textAndNoButtonProps: GalleryProps = {
|
|
145
|
+
title: 'Вы можете оплатить бонусными баллами',
|
|
146
|
+
description: 'Удобный каталог с большим ассортиментом товаров и сервисов',
|
|
147
|
+
context,
|
|
148
|
+
cards: [
|
|
149
|
+
{
|
|
150
|
+
title: 'Более 5000 товаров',
|
|
151
|
+
description:
|
|
152
|
+
'Время копить: ставка растет в зависимости от срока нахождения средств на Счете!',
|
|
153
|
+
image,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
title: 'Более 1000 развлечений',
|
|
157
|
+
description: 'Порядок и условия предоставления в соответствии с 106 ФЗ',
|
|
158
|
+
image,
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
title: 'Фермерские продукты',
|
|
162
|
+
description: 'Высокий процент даже при небольшой сумме денежных средств',
|
|
163
|
+
image,
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
title: '«Моя выгода»',
|
|
167
|
+
description:
|
|
168
|
+
'Время копить: ставка растет в зависимости от срока нахождения средств на Счете!',
|
|
169
|
+
image,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
title: 'Фермерские продукты',
|
|
173
|
+
description: 'Высокий процент даже при небольшой сумме денежных средств',
|
|
174
|
+
image,
|
|
175
|
+
},
|
|
176
|
+
],
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
const onlyTitleProps: GalleryProps = {
|
|
180
|
+
title: 'Вы можете оплатить бонусными баллами',
|
|
181
|
+
description: 'Удобный каталог с большим ассортиментом товаров и сервисов',
|
|
182
|
+
context,
|
|
183
|
+
cards: [
|
|
184
|
+
{
|
|
185
|
+
title: 'Более 5000 товаров',
|
|
186
|
+
image,
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
title: 'Более 1000 развлечений',
|
|
190
|
+
image,
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
title: 'Фермерские продукты',
|
|
194
|
+
image,
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
title: '«Моя выгода»',
|
|
198
|
+
image,
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
title: 'Фермерские продукты',
|
|
202
|
+
image,
|
|
203
|
+
},
|
|
204
|
+
],
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
export default {
|
|
208
|
+
default: <Gallery {...defaultProps} />,
|
|
209
|
+
'text and button': <Gallery {...textAndButtonProps} />,
|
|
210
|
+
'list and button': <Gallery {...listAndButtonProps} />,
|
|
211
|
+
'text and no button': <Gallery {...textAndNoButtonProps} />,
|
|
212
|
+
'only title': <Gallery {...onlyTitleProps} />,
|
|
213
|
+
};
|
package/src/Gallery.tsx
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { Img } from './Img';
|
|
3
|
+
import { Picture, UniBlockProps } from './types';
|
|
4
|
+
import { ArrowButton } from './ui-kit/ArrowButton';
|
|
5
|
+
import { BlockItem } from './ui-kit/BlockItem';
|
|
6
|
+
import { Button } from './ui-kit/Button';
|
|
7
|
+
import { Title } from './ui-kit/Title';
|
|
8
|
+
|
|
9
|
+
export interface GalleryCard {
|
|
10
|
+
title?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
image?: Picture;
|
|
13
|
+
href?: string;
|
|
14
|
+
items?: string[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface GalleryContent {
|
|
18
|
+
title?: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
cards?: GalleryCard[];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface GalleryProps extends GalleryContent, UniBlockProps {}
|
|
24
|
+
|
|
25
|
+
const CARD_WIDTH = 384;
|
|
26
|
+
const GALLERY_LENGTH_FOR_SCROLL = 3;
|
|
27
|
+
|
|
28
|
+
export const Gallery = JSX<GalleryProps>(
|
|
29
|
+
({ title, description, context, cards = [], className }) => {
|
|
30
|
+
const [activeCardIndex, setActiveCardIndex] = context.useState(0);
|
|
31
|
+
|
|
32
|
+
function handleNextClick() {
|
|
33
|
+
setActiveCardIndex(activeCardIndex + 1);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function handlePrevClick() {
|
|
37
|
+
setActiveCardIndex(activeCardIndex - 1);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const isGalleryScrollAvailable = cards?.length > GALLERY_LENGTH_FOR_SCROLL;
|
|
41
|
+
|
|
42
|
+
const showNextButton =
|
|
43
|
+
isGalleryScrollAvailable && cards?.length - activeCardIndex > GALLERY_LENGTH_FOR_SCROLL;
|
|
44
|
+
|
|
45
|
+
const showPrevButton = isGalleryScrollAvailable && activeCardIndex > 0;
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<section
|
|
49
|
+
className={`relative font-sans text-primary-text bg-white p-12 overflow-hidden ${className}`}
|
|
50
|
+
>
|
|
51
|
+
<div className="flex flex-col items-center mb-8">
|
|
52
|
+
<Title className="font-medium m-0 text-centers">{title}</Title>
|
|
53
|
+
{description ? (
|
|
54
|
+
<div className="font-normal text-base max-w-[600px] mt-3">{description}</div>
|
|
55
|
+
) : null}
|
|
56
|
+
</div>
|
|
57
|
+
<div
|
|
58
|
+
// Need to place all cards at the center if count of cards less than 4
|
|
59
|
+
className={`flex ${
|
|
60
|
+
cards?.length <= GALLERY_LENGTH_FOR_SCROLL ? 'justify-center' : ''
|
|
61
|
+
} duration-1000`}
|
|
62
|
+
// All cards has same width
|
|
63
|
+
style={{ transform: `translateX(-${activeCardIndex * CARD_WIDTH}px)` }}
|
|
64
|
+
role="list"
|
|
65
|
+
>
|
|
66
|
+
{cards?.map(renderCard)}
|
|
67
|
+
</div>
|
|
68
|
+
{showPrevButton && (
|
|
69
|
+
<ArrowButton
|
|
70
|
+
className="absolute top-1/2 left-8"
|
|
71
|
+
onClick={handlePrevClick}
|
|
72
|
+
ariaLabel="Пролистать влево"
|
|
73
|
+
/>
|
|
74
|
+
)}
|
|
75
|
+
{showNextButton && (
|
|
76
|
+
<ArrowButton
|
|
77
|
+
className="absolute top-1/2 right-1 z-20 rotate-180"
|
|
78
|
+
onClick={handleNextClick}
|
|
79
|
+
ariaLabel="Пролистать вправо"
|
|
80
|
+
/>
|
|
81
|
+
)}
|
|
82
|
+
<div
|
|
83
|
+
className="absolute top-0 right-0 bottom-0 w-[84px]"
|
|
84
|
+
style={{
|
|
85
|
+
background: 'linear-gradient(270deg, #FFFFFF 34.89%, rgba(255, 255, 255, 0) 92.52%)',
|
|
86
|
+
}}
|
|
87
|
+
></div>
|
|
88
|
+
</section>
|
|
89
|
+
);
|
|
90
|
+
},
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
function renderCard(card: GalleryCard, key: number) {
|
|
94
|
+
return (
|
|
95
|
+
<div
|
|
96
|
+
className="box-border border-solid border rounded-md border-main-divider p-7 mx-2 flex flex-col justify-between items-stretch min-w-[364px] w-[364px] w-full"
|
|
97
|
+
role="listitem"
|
|
98
|
+
key={key}
|
|
99
|
+
>
|
|
100
|
+
<div>
|
|
101
|
+
{card.image?.src ? (
|
|
102
|
+
<div className="flex justify-center">
|
|
103
|
+
<Img className="mb-6" image={card.image} />
|
|
104
|
+
</div>
|
|
105
|
+
) : null}
|
|
106
|
+
{card.title ? (
|
|
107
|
+
<h4
|
|
108
|
+
className={`font-medium text-xl m-0 ${
|
|
109
|
+
!card.description && !card.items?.length ? 'text-center' : ''
|
|
110
|
+
}`}
|
|
111
|
+
>
|
|
112
|
+
{card.title}
|
|
113
|
+
</h4>
|
|
114
|
+
) : null}
|
|
115
|
+
{card.description ? (
|
|
116
|
+
<div className="font-normal text-sm text-secondary-text mt-2">{card.description}</div>
|
|
117
|
+
) : null}
|
|
118
|
+
{card.items?.length ? renderItems(card.items) : null}
|
|
119
|
+
</div>
|
|
120
|
+
{card.href ? (
|
|
121
|
+
<Button className="mt-6" text="Подробнее" version="secondary" href={card.href} />
|
|
122
|
+
) : null}
|
|
123
|
+
</div>
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function renderItems(items: string[] = []) {
|
|
128
|
+
return (
|
|
129
|
+
<section className="max-w-[308px] mt-2" role="list">
|
|
130
|
+
{items.map((item, i) => (
|
|
131
|
+
<BlockItem key={String(i)}>
|
|
132
|
+
<span className="text-sm text-secondary-text">{item}</span>
|
|
133
|
+
</BlockItem>
|
|
134
|
+
))}
|
|
135
|
+
</section>
|
|
136
|
+
);
|
|
137
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { context } from './setup-fixture';
|
|
2
|
+
|
|
3
|
+
import { PromoTile } from './PromoTile';
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
default: (
|
|
7
|
+
<div className="grid grid-cols-12">
|
|
8
|
+
<PromoTile
|
|
9
|
+
context={context}
|
|
10
|
+
className="col-span-4"
|
|
11
|
+
title="Акции и спецпредложения"
|
|
12
|
+
description="Пенсионный кредит по специальной процентной ставке"
|
|
13
|
+
version="secondary"
|
|
14
|
+
date="2022-04-16"
|
|
15
|
+
buttons={[
|
|
16
|
+
{
|
|
17
|
+
text: 'Все акции',
|
|
18
|
+
href: '/credits',
|
|
19
|
+
version: 'secondary',
|
|
20
|
+
},
|
|
21
|
+
]}
|
|
22
|
+
/>
|
|
23
|
+
</div>
|
|
24
|
+
),
|
|
25
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
|
|
3
|
+
export interface ArrowButtonProps {
|
|
4
|
+
onClick?: () => void;
|
|
5
|
+
ariaLabel?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const ArrowButton = JSX<ArrowButtonProps>(({ className, onClick, ariaLabel }) => {
|
|
10
|
+
return (
|
|
11
|
+
<button
|
|
12
|
+
className={`${className} border-none no-underline w-12 h-12 rounded-3xl bg-white flex text-black hover:text-primary-main`}
|
|
13
|
+
style={{ boxShadow: '0px 4px 25px rgba(0, 0, 0, 0.07)' }}
|
|
14
|
+
onClick={onClick}
|
|
15
|
+
aria-label={ariaLabel}
|
|
16
|
+
>
|
|
17
|
+
<svg
|
|
18
|
+
className="m-auto"
|
|
19
|
+
width="16"
|
|
20
|
+
height="16"
|
|
21
|
+
viewBox="0 0 16 16"
|
|
22
|
+
fill="none"
|
|
23
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
24
|
+
>
|
|
25
|
+
<path d="M7 12L3 8L7 4" stroke="currentColor" strokeWidth="2" strokeLinecap="round" />
|
|
26
|
+
<path
|
|
27
|
+
d="M14 9C14.5523 9 15 8.55228 15 8C15 7.44772 14.5523 7 14 7L14 9ZM8 7C7.44772 7 7 7.44772 7 8C7 8.55229 7.44772 9 8 9L8 7ZM14 7L8 7L8 9L14 9L14 7Z"
|
|
28
|
+
fill="currentColor"
|
|
29
|
+
/>
|
|
30
|
+
</svg>
|
|
31
|
+
</button>
|
|
32
|
+
);
|
|
33
|
+
});
|