@redneckz/wildless-cms-uni-blocks 0.2.62 → 0.2.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/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
@@ -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;AAE7C,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;CACd,CAAC"}
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;
@@ -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 })), showNextButton && ((0, jsx_runtime_1.jsx)(ArrowButton_1.ArrowButton, { className: "absolute top-1/2 right-1 z-20 rotate-180", onClick: handleNextClick })), (0, jsx_runtime_1.jsx)("div", { className: "absoluted 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: "border-solid border rounded-md border-main-divider p-7 mx-2 flex flex-col justify-between items-stretch min-w-[308px] w-[308px] w-full", 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,6 @@
1
+ export interface ArrowButtonProps {
2
+ onClick?: () => void;
3
+ ariaLabel?: string;
4
+ className?: string;
5
+ }
6
+ export declare const ArrowButton: (props: import("@redneckz/uni-jsx").PropsWithChildren<ArrowButtonProps, any>, context?: any) => any;
@@ -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", "stroke-width": "2", "stroke-linecap": "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;AAS3B,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,kBAAc,GAAG,oBAAgB,OAAO,GAAG,EACxF,iCACE,CAAC,EAAC,kJAAkJ,EACpJ,IAAI,EAAC,cAAc,GACnB,IACE,GACC,CACV,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -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;
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../src/ui-kit/Icon.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,wDAAqD;AAiCxC,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"}
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;AAE1D,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;CACd,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"}
@@ -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 })), showNextButton && (_jsx(ArrowButton, { className: "absolute top-1/2 right-1 z-20 rotate-180", onClick: handleNextClick })), _jsx("div", { className: "absoluted 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: "border-solid border rounded-md border-main-divider p-7 mx-2 flex flex-col justify-between items-stretch min-w-[308px] w-[308px] w-full", 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-\[308px\]{width:308px}.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-\[308px\]{min-width:308px}.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
+ export interface ArrowButtonProps {
2
+ onClick?: () => void;
3
+ ariaLabel?: string;
4
+ className?: string;
5
+ }
6
+ export declare const ArrowButton: (props: import("@redneckz/uni-jsx").PropsWithChildren<ArrowButtonProps, any>, context?: any) => any;
@@ -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", "stroke-width": "2", "stroke-linecap": "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;AASxC,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,kBAAc,GAAG,oBAAgB,OAAO,GAAG,EACxF,eACE,CAAC,EAAC,kJAAkJ,EACpJ,IAAI,EAAC,cAAc,GACnB,IACE,GACC,CACV,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -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;
@@ -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;AAiCrD,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"}
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.62",
3
+ "version": "0.2.63",
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
- "src/**/*.{js,jsx,ts,tsx,css,json}": [
154
- "cosmos-export",
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;
@@ -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
+ };
@@ -0,0 +1,132 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { Img } from './Img';
3
+ import { Picture, UniBlockProps } from './types';
4
+ import { ArrowButton } from './ui-kit/ArrowButton';
5
+ import { BlockItem } from './ui-kit/BlockItem';
6
+ import { Button } from './ui-kit/Button';
7
+ import { Title } from './ui-kit/Title';
8
+
9
+ export interface GalleryCard {
10
+ title?: string;
11
+ description?: string;
12
+ image?: Picture;
13
+ href?: string;
14
+ items?: string[];
15
+ }
16
+
17
+ export interface GalleryContent {
18
+ title?: string;
19
+ description?: string;
20
+ cards?: GalleryCard[];
21
+ }
22
+
23
+ export interface GalleryProps extends GalleryContent, UniBlockProps {}
24
+
25
+ const CARD_WIDTH = 384;
26
+ const GALLERY_LENGTH_FOR_SCROLL = 3;
27
+
28
+ export const Gallery = JSX<GalleryProps>(
29
+ ({ title, description, context, cards = [], className }) => {
30
+ const [activeCardIndex, setActiveCardIndex] = context.useState(0);
31
+
32
+ function handleNextClick() {
33
+ setActiveCardIndex(activeCardIndex + 1);
34
+ }
35
+
36
+ function handlePrevClick() {
37
+ setActiveCardIndex(activeCardIndex - 1);
38
+ }
39
+
40
+ const isGalleryScrollAvailable = cards?.length > GALLERY_LENGTH_FOR_SCROLL;
41
+
42
+ const showNextButton =
43
+ isGalleryScrollAvailable && cards?.length - activeCardIndex > GALLERY_LENGTH_FOR_SCROLL;
44
+
45
+ const showPrevButton = isGalleryScrollAvailable && activeCardIndex > 0;
46
+
47
+ return (
48
+ <section
49
+ className={`relative font-sans text-primary-text bg-white p-12 overflow-hidden ${className}`}
50
+ >
51
+ <div className="flex flex-col items-center mb-8">
52
+ <Title className="font-medium m-0 text-centers">{title}</Title>
53
+ {description ? (
54
+ <div className="font-normal text-base max-w-[600px] mt-3">{description}</div>
55
+ ) : null}
56
+ </div>
57
+ <div
58
+ // Need to place all cards at the center if count of cards less than 4
59
+ className={`flex {${
60
+ cards?.length <= GALLERY_LENGTH_FOR_SCROLL ? 'justify-center' : ''
61
+ } duration-1000`}
62
+ // All cards has same width
63
+ style={{ transform: `translateX(-${activeCardIndex * CARD_WIDTH}px)` }}
64
+ role="list"
65
+ >
66
+ {cards?.map(renderCard)}
67
+ </div>
68
+ {showPrevButton && (
69
+ <ArrowButton className="absolute top-1/2 left-8" onClick={handlePrevClick} />
70
+ )}
71
+ {showNextButton && (
72
+ <ArrowButton
73
+ className="absolute top-1/2 right-1 z-20 rotate-180"
74
+ onClick={handleNextClick}
75
+ />
76
+ )}
77
+ <div
78
+ className="absoluted top-0 right-0 bottom-0 w-[84px]"
79
+ style={{
80
+ background: 'linear-gradient(270deg, #FFFFFF 34.89%, rgba(255, 255, 255, 0) 92.52%)',
81
+ }}
82
+ ></div>
83
+ </section>
84
+ );
85
+ },
86
+ );
87
+
88
+ function renderCard(card: GalleryCard, key: number) {
89
+ return (
90
+ <div
91
+ className="border-solid border rounded-md border-main-divider p-7 mx-2 flex flex-col justify-between items-stretch min-w-[308px] w-[308px] w-full"
92
+ role="listitem"
93
+ key={key}
94
+ >
95
+ <div>
96
+ {card.image?.src ? (
97
+ <div className="flex justify-center">
98
+ <Img className="mb-6" image={card.image} />
99
+ </div>
100
+ ) : null}
101
+ {card.title ? (
102
+ <h4
103
+ className={`font-medium text-xl m-0 ${
104
+ !card.description && !card.items?.length ? 'text-center' : ''
105
+ }`}
106
+ >
107
+ {card.title}
108
+ </h4>
109
+ ) : null}
110
+ {card.description ? (
111
+ <div className="font-normal text-sm text-secondary-text mt-2">{card.description}</div>
112
+ ) : null}
113
+ {card.items?.length ? renderItems(card.items) : null}
114
+ </div>
115
+ {card.href ? (
116
+ <Button className="mt-6" text="Подробнее" version="secondary" href={card.href} />
117
+ ) : null}
118
+ </div>
119
+ );
120
+ }
121
+
122
+ function renderItems(items: string[] = []) {
123
+ return (
124
+ <section className="max-w-[308px] mt-2" role="list">
125
+ {items.map((item, i) => (
126
+ <BlockItem key={String(i)}>
127
+ <span className="text-sm text-secondary-text">{item}</span>
128
+ </BlockItem>
129
+ ))}
130
+ </section>
131
+ );
132
+ }
@@ -0,0 +1,34 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { Icon } from './Icon';
3
+
4
+ export interface ArrowButtonProps {
5
+ onClick?: () => void;
6
+ ariaLabel?: string;
7
+ className?: string;
8
+ }
9
+
10
+ export const ArrowButton = JSX<ArrowButtonProps>(({ className, onClick, ariaLabel }) => {
11
+ return (
12
+ <button
13
+ className={`${className} border-none no-underline w-12 h-12 rounded-3xl bg-white flex text-black hover:text-primary-main`}
14
+ style={{ boxShadow: '0px 4px 25px rgba(0, 0, 0, 0.07)' }}
15
+ onClick={onClick}
16
+ aria-label={ariaLabel}
17
+ >
18
+ <svg
19
+ className="m-auto"
20
+ width="16"
21
+ height="16"
22
+ viewBox="0 0 16 16"
23
+ fill="none"
24
+ xmlns="http://www.w3.org/2000/svg"
25
+ >
26
+ <path d="M7 12L3 8L7 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
27
+ <path
28
+ 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"
29
+ fill="currentColor"
30
+ />
31
+ </svg>
32
+ </button>
33
+ );
34
+ });
@@ -20,7 +20,8 @@ export type IconName =
20
20
  | 'ProfileIcon'
21
21
  | 'SignDocsIcon'
22
22
  | 'TelegramIcon'
23
- | 'VKIcon';
23
+ | 'VKIcon'
24
+ | 'ArrowLeftIcon';
24
25
 
25
26
  export interface IconProps {
26
27
  className?: string;