@redneckz/wildless-cms-uni-blocks 0.2.72 → 0.2.73

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Gallery.js","sourceRoot":"","sources":["../src/Gallery.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Gallery.js","sourceRoot":"","sources":["../src/Gallery.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK9C,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAe,CAAC,KAAK,EAAE,EAAE,CAAC,KAAC,YAAY,OAAK,KAAK,EAAE,OAAO,EAAC,QAAQ,GAAG,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { GalleryContent } from './GalleryContent';
2
+ import type { GalleryVersion } from './model/GalleryVersion';
3
+ import type { UniBlockProps } from './types';
4
+ export interface GalleryInnerProps extends GalleryContent, UniBlockProps {
5
+ version?: GalleryVersion;
6
+ }
7
+ export declare const GalleryInner: (props: import("@redneckz/uni-jsx").PropsWithChildren<GalleryInnerProps, any>, context?: any) => any;
@@ -0,0 +1,46 @@
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 cardStyleMap = {
9
+ normal: 'min-w-[364px] w-[364px]',
10
+ mini: 'min-w-[260px] w-[260px]',
11
+ };
12
+ const cardWidthMap = {
13
+ normal: 380,
14
+ mini: 276,
15
+ };
16
+ const galleryLengthForScrollMap = {
17
+ normal: 3,
18
+ mini: 4,
19
+ };
20
+ export const GalleryInner = JSX(({ title, description, context, cards = [], className, version = 'normal' }) => {
21
+ const [activeCardIndex, setActiveCardIndex] = context.useState(0);
22
+ function handleNextClick() {
23
+ setActiveCardIndex(activeCardIndex + 1);
24
+ }
25
+ function handlePrevClick() {
26
+ setActiveCardIndex(activeCardIndex - 1);
27
+ }
28
+ const isGalleryScrollAvailable = cards?.length > galleryLengthForScrollMap[version];
29
+ const showNextButton = isGalleryScrollAvailable &&
30
+ cards?.length - activeCardIndex > galleryLengthForScrollMap[version];
31
+ const showPrevButton = isGalleryScrollAvailable && activeCardIndex > 0;
32
+ 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: [title ? _jsx(Title, { className: "font-medium m-0 text-center", children: title }) : null, description ? (_jsx("div", { className: "font-normal text-base max-w-[600px] mt-3", children: description })) : null] }), _jsx("div", {
33
+ // Need to place all cards at the center if count of cards less than 4
34
+ className: `flex ${cards?.length <= galleryLengthForScrollMap[version] ? 'justify-center' : ''} duration-1000`,
35
+ // All cards has same width
36
+ style: { transform: `translateX(-${activeCardIndex * cardWidthMap[version]}px)` }, role: "list", children: cards?.map((card, i) => renderCard(card, i, version)) }), 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: {
37
+ background: 'linear-gradient(270deg, #FFFFFF 34.89%, rgba(255, 255, 255, 0) 92.52%)',
38
+ } })] }));
39
+ });
40
+ function renderCard(card, i, version) {
41
+ 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 ${cardStyleMap[version]} 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 ? (_jsx("section", { className: "max-w-[308px] mt-2", role: "list", children: card.items.map(renderItem) })) : null] }), card.href ? (_jsx(Button, { className: "mt-6", text: "\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435", version: "secondary", href: card.href })) : null] }, String(i)));
42
+ }
43
+ function renderItem(item, i) {
44
+ return (_jsx(BlockItem, { children: _jsx("span", { className: "text-sm text-secondary-text", children: item }) }, String(i)));
45
+ }
46
+ //# sourceMappingURL=GalleryInner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GalleryInner.js","sourceRoot":"","sources":["../src/GalleryInner.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { GalleryContent } from './GalleryContent';
2
+ import { UniBlockProps } from './types';
3
+ export interface MiniGalleryProps extends GalleryContent, UniBlockProps {
4
+ }
5
+ export declare const MiniGallery: (props: import("@redneckz/uni-jsx").PropsWithChildren<MiniGalleryProps, any>, context?: any) => any;
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { JSX } from '@redneckz/uni-jsx';
3
+ import { GalleryInner } from './GalleryInner.js';
4
+ export const MiniGallery = JSX((props) => (_jsx(GalleryInner, { ...props, version: "mini" })));
5
+ //# sourceMappingURL=MiniGallery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MiniGallery.js","sourceRoot":"","sources":["../src/MiniGallery.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK9C,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAmB,CAAC,KAAK,EAAE,EAAE,CAAC,CAC1D,KAAC,YAAY,OAAK,KAAK,EAAE,OAAO,EAAC,MAAM,GAAG,CAC3C,CAAC,CAAC"}
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}.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-1{margin-left:.25rem;margin-right:.25rem}.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;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-4{padding:1rem}.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%)}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.horizontal-list{-webkit-overflow-scrolling:touch;display:flex;overflow-x:scroll;overscroll-behavior:contain;scroll-snap-type:x mandatory;touch-action:pan-x}.horizontal-list-item{flex-shrink:0;scroll-snap-align:start;scroll-snap-stop:always;width: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-1{margin-left:.25rem;margin-right:.25rem}.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-\[364px\]{width:364px}.w-\[260px\]{width:260px}.w-\[84px\]{width:84px}.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-\[260px\]{min-width:260px}.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;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-4{padding:1rem}.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%)}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.horizontal-list{-webkit-overflow-scrolling:touch;display:flex;overflow-x:scroll;overscroll-behavior:contain;scroll-snap-type:x mandatory;touch-action:pan-x}.horizontal-list-item{flex-shrink:0;scroll-snap-align:start;scroll-snap-stop:always;width: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 @@
1
+ export declare type GalleryVersion = 'normal' | 'mini';
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=GalleryVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GalleryVersion.js","sourceRoot":"","sources":["../../src/model/GalleryVersion.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redneckz/wildless-cms-uni-blocks",
3
- "version": "0.2.72",
3
+ "version": "0.2.73",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
package/src/Blocks.ts CHANGED
@@ -3,6 +3,7 @@ import { ExchangeRateTile } from './ExchangeRateTile';
3
3
  import { Footer } from './Footer/Footer';
4
4
  import { Gallery } from './Gallery';
5
5
  import { Header } from './Header/Header';
6
+ import { MiniGallery } from './MiniGallery';
6
7
  import { MobileAppTile } from './MobileAppTile';
7
8
  import { Placeholder } from './Placeholder';
8
9
  import { ProductBlock } from './ProductBlock';
@@ -28,4 +29,5 @@ export const Blocks = {
28
29
  ExchangeRateTile,
29
30
  MobileAppTile,
30
31
  Gallery,
32
+ MiniGallery,
31
33
  };
@@ -819,6 +819,81 @@
819
819
  ]
820
820
  }
821
821
  },
822
+ {
823
+ "type": "MiniGallery",
824
+ "style": ["col-span-12"],
825
+ "content": {
826
+ "title": "Вы можете оплатить бонусными баллами",
827
+ "description": "Удобный каталог с большим ассортиментом товаров и сервисов",
828
+ "cards": [
829
+ {
830
+ "image": {
831
+ "src": "domovoj-kupon.png",
832
+ "title": "Деньги",
833
+ "format": "webp",
834
+ "size": {
835
+ "width": 120,
836
+ "height": 70
837
+ }
838
+ },
839
+ "title": "Более 5000 товаров",
840
+ "description": "Время копить: ставка растет в зависимости от срока нахождения средств на Счете!"
841
+ },
842
+ {
843
+ "image": {
844
+ "src": "domovoj-kupon.png",
845
+ "title": "Деньги",
846
+ "format": "webp",
847
+ "size": {
848
+ "width": 120,
849
+ "height": 70
850
+ }
851
+ },
852
+ "title": "Более 1000 развлечений",
853
+ "description": "Порядок и условия предоставления в соответствии с 106 ФЗ"
854
+ },
855
+ {
856
+ "image": {
857
+ "src": "domovoj-kupon.png",
858
+ "title": "Деньги",
859
+ "format": "webp",
860
+ "size": {
861
+ "width": 120,
862
+ "height": 70
863
+ }
864
+ },
865
+ "title": "Фермерские продукты",
866
+ "description": "Высокий процент даже при небольшой сумме денежных средств"
867
+ },
868
+ {
869
+ "image": {
870
+ "src": "domovoj-kupon.png",
871
+ "title": "Деньги",
872
+ "format": "webp",
873
+ "size": {
874
+ "width": 120,
875
+ "height": 70
876
+ }
877
+ },
878
+ "title": "«Моя выгода»",
879
+ "description": "Время копить: ставка растет в зависимости от срока нахождения средств на Счете!"
880
+ },
881
+ {
882
+ "image": {
883
+ "src": "domovoj-kupon.png",
884
+ "title": "Деньги",
885
+ "format": "webp",
886
+ "size": {
887
+ "width": 120,
888
+ "height": 70
889
+ }
890
+ },
891
+ "title": "Фермерские продукты",
892
+ "description": "Высокий процент даже при небольшой сумме денежных средств"
893
+ }
894
+ ]
895
+ }
896
+ },
822
897
 
823
898
  {
824
899
  "type": "Footer",
package/src/Gallery.tsx CHANGED
@@ -1,124 +1,8 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
- import type { GalleryCard, GalleryContent } from './GalleryContent';
3
- import { Img } from './Img';
2
+ import { GalleryContent } from './GalleryContent';
3
+ import { GalleryInner } from './GalleryInner';
4
4
  import { UniBlockProps } from './types';
5
- import { ArrowButton } from './ui-kit/ArrowButton';
6
- import { BlockItem } from './ui-kit/BlockItem';
7
- import { Button } from './ui-kit/Button';
8
- import { Title } from './ui-kit/Title';
9
5
 
10
6
  export interface GalleryProps extends GalleryContent, UniBlockProps {}
11
7
 
12
- const CARD_WIDTH = 384;
13
- const GALLERY_LENGTH_FOR_SCROLL = 3;
14
-
15
- export const Gallery = JSX<GalleryProps>(
16
- ({ title, description, context, cards = [], className }) => {
17
- const [activeCardIndex, setActiveCardIndex] = context.useState(0);
18
-
19
- function handleNextClick() {
20
- setActiveCardIndex(activeCardIndex + 1);
21
- }
22
-
23
- function handlePrevClick() {
24
- setActiveCardIndex(activeCardIndex - 1);
25
- }
26
-
27
- const isGalleryScrollAvailable = cards?.length > GALLERY_LENGTH_FOR_SCROLL;
28
-
29
- const showNextButton =
30
- isGalleryScrollAvailable && cards?.length - activeCardIndex > GALLERY_LENGTH_FOR_SCROLL;
31
-
32
- const showPrevButton = isGalleryScrollAvailable && activeCardIndex > 0;
33
-
34
- return (
35
- <section
36
- className={`relative font-sans text-primary-text bg-white p-12 overflow-hidden ${className}`}
37
- >
38
- <div className="flex flex-col items-center mb-8">
39
- <Title className="font-medium m-0 text-centers">{title}</Title>
40
- {description ? (
41
- <div className="font-normal text-base max-w-[600px] mt-3">{description}</div>
42
- ) : null}
43
- </div>
44
- <div
45
- // Need to place all cards at the center if count of cards less than 4
46
- className={`flex ${
47
- cards?.length <= GALLERY_LENGTH_FOR_SCROLL ? 'justify-center' : ''
48
- } duration-1000`}
49
- // All cards has same width
50
- style={{ transform: `translateX(-${activeCardIndex * CARD_WIDTH}px)` }}
51
- role="list"
52
- >
53
- {cards?.map(renderCard)}
54
- </div>
55
- {showPrevButton && (
56
- <ArrowButton
57
- className="absolute top-1/2 left-8"
58
- onClick={handlePrevClick}
59
- ariaLabel="Пролистать влево"
60
- />
61
- )}
62
- {showNextButton && (
63
- <ArrowButton
64
- className="absolute top-1/2 right-1 z-20 rotate-180"
65
- onClick={handleNextClick}
66
- ariaLabel="Пролистать вправо"
67
- />
68
- )}
69
- <div
70
- className="absolute top-0 right-0 bottom-0 w-[84px]"
71
- style={{
72
- background: 'linear-gradient(270deg, #FFFFFF 34.89%, rgba(255, 255, 255, 0) 92.52%)',
73
- }}
74
- ></div>
75
- </section>
76
- );
77
- },
78
- );
79
-
80
- function renderCard(card: GalleryCard, key: number) {
81
- return (
82
- <div
83
- 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"
84
- role="listitem"
85
- key={key}
86
- >
87
- <div>
88
- {card.image?.src ? (
89
- <div className="flex justify-center">
90
- <Img className="mb-6" image={card.image} />
91
- </div>
92
- ) : null}
93
- {card.title ? (
94
- <h4
95
- className={`font-medium text-xl m-0 ${
96
- !card.description && !card.items?.length ? 'text-center' : ''
97
- }`}
98
- >
99
- {card.title}
100
- </h4>
101
- ) : null}
102
- {card.description ? (
103
- <div className="font-normal text-sm text-secondary-text mt-2">{card.description}</div>
104
- ) : null}
105
- {card.items?.length ? renderItems(card.items) : null}
106
- </div>
107
- {card.href ? (
108
- <Button className="mt-6" text="Подробнее" version="secondary" href={card.href} />
109
- ) : null}
110
- </div>
111
- );
112
- }
113
-
114
- function renderItems(items: string[] = []) {
115
- return (
116
- <section className="max-w-[308px] mt-2" role="list">
117
- {items.map((item, i) => (
118
- <BlockItem key={String(i)}>
119
- <span className="text-sm text-secondary-text">{item}</span>
120
- </BlockItem>
121
- ))}
122
- </section>
123
- );
124
- }
8
+ export const Gallery = JSX<GalleryProps>((props) => <GalleryInner {...props} version="normal" />);
@@ -0,0 +1,140 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { GalleryCard, GalleryContent } from './GalleryContent';
3
+ import { Img } from './Img';
4
+ import type { GalleryVersion } from './model/GalleryVersion';
5
+ import type { UniBlockProps } from './types';
6
+ import { ArrowButton } from './ui-kit/ArrowButton';
7
+ import { BlockItem } from './ui-kit/BlockItem';
8
+ import { Button } from './ui-kit/Button';
9
+ import { Title } from './ui-kit/Title';
10
+
11
+ export interface GalleryInnerProps extends GalleryContent, UniBlockProps {
12
+ version?: GalleryVersion;
13
+ }
14
+
15
+ const cardStyleMap: Record<GalleryVersion, string> = {
16
+ normal: 'min-w-[364px] w-[364px]',
17
+ mini: 'min-w-[260px] w-[260px]',
18
+ };
19
+
20
+ const cardWidthMap: Record<GalleryVersion, number> = {
21
+ normal: 380,
22
+ mini: 276,
23
+ };
24
+
25
+ const galleryLengthForScrollMap: Record<GalleryVersion, number> = {
26
+ normal: 3,
27
+ mini: 4,
28
+ };
29
+
30
+ export const GalleryInner = JSX<GalleryInnerProps>(
31
+ ({ title, description, context, cards = [], className, version = 'normal' }) => {
32
+ const [activeCardIndex, setActiveCardIndex] = context.useState(0);
33
+
34
+ function handleNextClick() {
35
+ setActiveCardIndex(activeCardIndex + 1);
36
+ }
37
+
38
+ function handlePrevClick() {
39
+ setActiveCardIndex(activeCardIndex - 1);
40
+ }
41
+
42
+ const isGalleryScrollAvailable = cards?.length > galleryLengthForScrollMap[version];
43
+
44
+ const showNextButton =
45
+ isGalleryScrollAvailable &&
46
+ cards?.length - activeCardIndex > galleryLengthForScrollMap[version];
47
+
48
+ const showPrevButton = isGalleryScrollAvailable && activeCardIndex > 0;
49
+
50
+ return (
51
+ <section
52
+ className={`relative font-sans text-primary-text bg-white p-12 overflow-hidden ${className}`}
53
+ >
54
+ <div className="flex flex-col items-center mb-8">
55
+ {title ? <Title className="font-medium m-0 text-center">{title}</Title> : null}
56
+ {description ? (
57
+ <div className="font-normal text-base max-w-[600px] mt-3">{description}</div>
58
+ ) : null}
59
+ </div>
60
+ <div
61
+ // Need to place all cards at the center if count of cards less than 4
62
+ className={`flex ${
63
+ cards?.length <= galleryLengthForScrollMap[version] ? 'justify-center' : ''
64
+ } duration-1000`}
65
+ // All cards has same width
66
+ style={{ transform: `translateX(-${activeCardIndex * cardWidthMap[version]}px)` }}
67
+ role="list"
68
+ >
69
+ {cards?.map((card, i) => renderCard(card, i, version))}
70
+ </div>
71
+ {showPrevButton && (
72
+ <ArrowButton
73
+ className="absolute top-1/2 left-8"
74
+ onClick={handlePrevClick}
75
+ ariaLabel="Пролистать влево"
76
+ />
77
+ )}
78
+ {showNextButton && (
79
+ <ArrowButton
80
+ className="absolute top-1/2 right-1 z-20 rotate-180"
81
+ onClick={handleNextClick}
82
+ ariaLabel="Пролистать вправо"
83
+ />
84
+ )}
85
+ <div
86
+ className="absolute top-0 right-0 bottom-0 w-[84px]"
87
+ style={{
88
+ background: 'linear-gradient(270deg, #FFFFFF 34.89%, rgba(255, 255, 255, 0) 92.52%)',
89
+ }}
90
+ ></div>
91
+ </section>
92
+ );
93
+ },
94
+ );
95
+
96
+ function renderCard(card: GalleryCard, i: number, version: GalleryVersion) {
97
+ return (
98
+ <div
99
+ className={`box-border border-solid border rounded-md border-main-divider p-7 mx-2 flex flex-col justify-between items-stretch ${cardStyleMap[version]} w-full`}
100
+ role="listitem"
101
+ key={String(i)}
102
+ >
103
+ <div>
104
+ {card.image?.src ? (
105
+ <div className="flex justify-center">
106
+ <Img className="mb-6" image={card.image} />
107
+ </div>
108
+ ) : null}
109
+ {card.title ? (
110
+ <h4
111
+ className={`font-medium text-xl m-0 ${
112
+ !card.description && !card.items?.length ? 'text-center' : ''
113
+ }`}
114
+ >
115
+ {card.title}
116
+ </h4>
117
+ ) : null}
118
+ {card.description ? (
119
+ <div className="font-normal text-sm text-secondary-text mt-2">{card.description}</div>
120
+ ) : null}
121
+ {card.items?.length ? (
122
+ <section className="max-w-[308px] mt-2" role="list">
123
+ {card.items.map(renderItem)}
124
+ </section>
125
+ ) : null}
126
+ </div>
127
+ {card.href ? (
128
+ <Button className="mt-6" text="Подробнее" version="secondary" href={card.href} />
129
+ ) : null}
130
+ </div>
131
+ );
132
+ }
133
+
134
+ function renderItem(item: string, i: number) {
135
+ return (
136
+ <BlockItem key={String(i)}>
137
+ <span className="text-sm text-secondary-text">{item}</span>
138
+ </BlockItem>
139
+ );
140
+ }
@@ -0,0 +1,90 @@
1
+ import { context } from './setup-fixture';
2
+
3
+ import { MiniGallery, MiniGalleryProps } from './MiniGallery';
4
+ import { Picture } from './model/Picture';
5
+
6
+ const image: Picture = {
7
+ src: 'domovoj-kupon.png',
8
+ format: 'webp',
9
+ size: {
10
+ width: 120,
11
+ height: 70,
12
+ },
13
+ };
14
+
15
+ const defaultProps: MiniGalleryProps = {
16
+ title: 'Вы можете оплатить бонусными баллами',
17
+ description: 'Удобный каталог с большим ассортиментом товаров и сервисов',
18
+ context,
19
+ cards: [
20
+ {
21
+ title: 'Более 5000 товаров',
22
+ description:
23
+ 'Время копить: ставка растет в зависимости от срока нахождения средств на Счете!',
24
+ image,
25
+ },
26
+ {
27
+ title: 'Более 1000 развлечений',
28
+ description: 'Порядок и условия предоставления в соответствии с 106 ФЗ',
29
+ image,
30
+ },
31
+ {
32
+ title: 'Фермерские продукты',
33
+ description: 'Высокий процент даже при небольшой сумме денежных средств',
34
+ image,
35
+ },
36
+ {
37
+ title: '«Моя выгода»',
38
+ description:
39
+ 'Время копить: ставка растет в зависимости от срока нахождения средств на Счете!',
40
+ image,
41
+ },
42
+ {
43
+ title: 'Фермерские продукты',
44
+ description: 'Высокий процент даже при небольшой сумме денежных средств',
45
+ image,
46
+ },
47
+ {
48
+ title: 'Фермерские продукты',
49
+ description: 'Высокий процент даже при небольшой сумме денежных средств',
50
+ image,
51
+ },
52
+ ],
53
+ };
54
+
55
+ const onlyTitleProps: MiniGalleryProps = {
56
+ title: 'Вы можете оплатить бонусными баллами',
57
+ description: 'Удобный каталог с большим ассортиментом товаров и сервисов',
58
+ context,
59
+ cards: [
60
+ {
61
+ title: 'Более 5000 товаров',
62
+ image,
63
+ },
64
+ {
65
+ title: 'Более 1000 развлечений',
66
+ image,
67
+ },
68
+ {
69
+ title: 'Фермерские продукты',
70
+ image,
71
+ },
72
+ {
73
+ title: '«Моя выгода»',
74
+ image,
75
+ },
76
+ {
77
+ title: 'Фермерские продукты',
78
+ image,
79
+ },
80
+ {
81
+ title: 'Фермерские продукты',
82
+ image,
83
+ },
84
+ ],
85
+ };
86
+
87
+ export default {
88
+ default: <MiniGallery {...defaultProps} />,
89
+ 'only title': <MiniGallery {...onlyTitleProps} />,
90
+ };
@@ -0,0 +1,10 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { GalleryContent } from './GalleryContent';
3
+ import { GalleryInner } from './GalleryInner';
4
+ import { UniBlockProps } from './types';
5
+
6
+ export interface MiniGalleryProps extends GalleryContent, UniBlockProps {}
7
+
8
+ export const MiniGallery = JSX<MiniGalleryProps>((props) => (
9
+ <GalleryInner {...props} version="mini" />
10
+ ));
@@ -0,0 +1 @@
1
+ export type GalleryVersion = 'normal' | 'mini';