@redneckz/wildless-cms-uni-blocks 0.3.56 → 0.3.57

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.
Files changed (171) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +69 -20
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/dist/components/BlockContent.d.ts +2 -1
  5. package/dist/components/Blocks.d.ts +1 -0
  6. package/dist/components/Blocks.js +2 -0
  7. package/dist/components/Blocks.js.map +1 -1
  8. package/dist/components/GroupBlock/BlocksTypeProps.d.ts +36 -0
  9. package/dist/components/GroupBlock/BlocksTypeProps.js +2 -0
  10. package/dist/components/GroupBlock/BlocksTypeProps.js.map +1 -0
  11. package/dist/components/GroupBlock/EmbeddableGroupBlocks.d.ts +4 -0
  12. package/dist/components/GroupBlock/EmbeddableGroupBlocks.js +9 -0
  13. package/dist/components/GroupBlock/EmbeddableGroupBlocks.js.map +1 -0
  14. package/dist/components/GroupBlock/GroupBlock.d.ts +9 -0
  15. package/dist/components/GroupBlock/GroupBlock.js +19 -0
  16. package/dist/components/GroupBlock/GroupBlock.js.map +1 -0
  17. package/dist/components/GroupBlock/GroupBlockContent.d.ts +21 -0
  18. package/dist/components/GroupBlock/GroupBlockContent.js +2 -0
  19. package/dist/components/GroupBlock/GroupBlockContent.js.map +1 -0
  20. package/dist/components/GroupBlock/GroupBlockTabs.d.ts +10 -0
  21. package/dist/components/GroupBlock/GroupBlockTabs.js +18 -0
  22. package/dist/components/GroupBlock/GroupBlockTabs.js.map +1 -0
  23. package/dist/components/GroupBlock/GroupBlocksItem.d.ts +8 -0
  24. package/dist/components/GroupBlock/GroupBlocksItem.js +20 -0
  25. package/dist/components/GroupBlock/GroupBlocksItem.js.map +1 -0
  26. package/dist/components/GroupBlock/filterBlocksByTag.d.ts +2 -0
  27. package/dist/components/GroupBlock/filterBlocksByTag.js +7 -0
  28. package/dist/components/GroupBlock/filterBlocksByTag.js.map +1 -0
  29. package/dist/components/GroupBlock/renderBlocksTypes.d.ts +9 -0
  30. package/dist/components/GroupBlock/renderBlocksTypes.js +16 -0
  31. package/dist/components/GroupBlock/renderBlocksTypes.js.map +1 -0
  32. package/dist/components/OtherProducts/OtherProductsContent.d.ts +4 -2
  33. package/dist/components/ProductBlock/ProductBlockInner.js +1 -1
  34. package/dist/components/ProductBlock/ProductBlockInner.js.map +1 -1
  35. package/dist/components/ProductGalleryGreen/ProductGalleryGreen.js +9 -11
  36. package/dist/components/ProductGalleryGreen/ProductGalleryGreen.js.map +1 -1
  37. package/dist/utils/style2className.d.ts +1 -1
  38. package/dist/utils/style2className.js +3 -1
  39. package/dist/utils/style2className.js.map +1 -1
  40. package/lib/common.css +1 -1
  41. package/lib/components/BlockContent.d.ts +2 -1
  42. package/lib/components/Blocks.d.ts +1 -0
  43. package/lib/components/Blocks.js +2 -0
  44. package/lib/components/Blocks.js.map +1 -1
  45. package/lib/components/GroupBlock/BlocksTypeProps.d.ts +36 -0
  46. package/lib/components/GroupBlock/BlocksTypeProps.js +2 -0
  47. package/lib/components/GroupBlock/BlocksTypeProps.js.map +1 -0
  48. package/lib/components/GroupBlock/EmbeddableGroupBlocks.d.ts +4 -0
  49. package/lib/components/GroupBlock/EmbeddableGroupBlocks.js +7 -0
  50. package/lib/components/GroupBlock/EmbeddableGroupBlocks.js.map +1 -0
  51. package/lib/components/GroupBlock/GroupBlock.d.ts +9 -0
  52. package/lib/components/GroupBlock/GroupBlock.fixture.d.ts +4 -0
  53. package/lib/components/GroupBlock/GroupBlock.js +17 -0
  54. package/lib/components/GroupBlock/GroupBlock.js.map +1 -0
  55. package/lib/components/GroupBlock/GroupBlockContent.d.ts +21 -0
  56. package/lib/components/GroupBlock/GroupBlockContent.js +2 -0
  57. package/lib/components/GroupBlock/GroupBlockContent.js.map +1 -0
  58. package/lib/components/GroupBlock/GroupBlockTabs.d.ts +10 -0
  59. package/lib/components/GroupBlock/GroupBlockTabs.js +16 -0
  60. package/lib/components/GroupBlock/GroupBlockTabs.js.map +1 -0
  61. package/lib/components/GroupBlock/GroupBlocksItem.d.ts +8 -0
  62. package/lib/components/GroupBlock/GroupBlocksItem.js +17 -0
  63. package/lib/components/GroupBlock/GroupBlocksItem.js.map +1 -0
  64. package/lib/components/GroupBlock/filterBlocksByTag.d.ts +2 -0
  65. package/lib/components/GroupBlock/filterBlocksByTag.js +4 -0
  66. package/lib/components/GroupBlock/filterBlocksByTag.js.map +1 -0
  67. package/lib/components/GroupBlock/renderBlocksTypes.d.ts +9 -0
  68. package/lib/components/GroupBlock/renderBlocksTypes.js +13 -0
  69. package/lib/components/GroupBlock/renderBlocksTypes.js.map +1 -0
  70. package/lib/components/OtherProducts/OtherProductsContent.d.ts +4 -2
  71. package/lib/components/ProductBlock/ProductBlockInner.js +1 -1
  72. package/lib/components/ProductBlock/ProductBlockInner.js.map +1 -1
  73. package/lib/components/ProductGalleryGreen/ProductGalleryGreen.js +9 -11
  74. package/lib/components/ProductGalleryGreen/ProductGalleryGreen.js.map +1 -1
  75. package/lib/utils/style2className.d.ts +1 -1
  76. package/lib/utils/style2className.js +3 -1
  77. package/lib/utils/style2className.js.map +1 -1
  78. package/mobile/bundle/bundle.umd.js +3 -1
  79. package/mobile/bundle/bundle.umd.min.js +1 -1
  80. package/mobile/dist/components/BlockContent.d.ts +2 -1
  81. package/mobile/dist/components/GroupBlock/BlocksTypeProps.d.ts +36 -0
  82. package/mobile/dist/components/GroupBlock/BlocksTypeProps.js +2 -0
  83. package/mobile/dist/components/GroupBlock/BlocksTypeProps.js.map +1 -0
  84. package/mobile/dist/components/GroupBlock/EmbeddableGroupBlocks.d.ts +4 -0
  85. package/mobile/dist/components/GroupBlock/EmbeddableGroupBlocks.js +9 -0
  86. package/mobile/dist/components/GroupBlock/EmbeddableGroupBlocks.js.map +1 -0
  87. package/mobile/dist/components/GroupBlock/GroupBlock.d.ts +9 -0
  88. package/mobile/dist/components/GroupBlock/GroupBlock.js +19 -0
  89. package/mobile/dist/components/GroupBlock/GroupBlock.js.map +1 -0
  90. package/mobile/dist/components/GroupBlock/GroupBlockContent.d.ts +21 -0
  91. package/mobile/dist/components/GroupBlock/GroupBlockContent.js +2 -0
  92. package/mobile/dist/components/GroupBlock/GroupBlockContent.js.map +1 -0
  93. package/mobile/dist/components/GroupBlock/GroupBlockTabs.d.ts +10 -0
  94. package/mobile/dist/components/GroupBlock/GroupBlockTabs.js +18 -0
  95. package/mobile/dist/components/GroupBlock/GroupBlockTabs.js.map +1 -0
  96. package/mobile/dist/components/GroupBlock/GroupBlocksItem.d.ts +8 -0
  97. package/mobile/dist/components/GroupBlock/GroupBlocksItem.js +20 -0
  98. package/mobile/dist/components/GroupBlock/GroupBlocksItem.js.map +1 -0
  99. package/mobile/dist/components/GroupBlock/filterBlocksByTag.d.ts +2 -0
  100. package/mobile/dist/components/GroupBlock/filterBlocksByTag.js +7 -0
  101. package/mobile/dist/components/GroupBlock/filterBlocksByTag.js.map +1 -0
  102. package/mobile/dist/components/GroupBlock/renderBlocksTypes.d.ts +9 -0
  103. package/mobile/dist/components/GroupBlock/renderBlocksTypes.js +16 -0
  104. package/mobile/dist/components/GroupBlock/renderBlocksTypes.js.map +1 -0
  105. package/mobile/dist/components/OtherProducts/OtherProductsContent.d.ts +4 -2
  106. package/mobile/dist/components/ProductGalleryGreen/ProductGalleryGreen.js +9 -11
  107. package/mobile/dist/components/ProductGalleryGreen/ProductGalleryGreen.js.map +1 -1
  108. package/mobile/dist/utils/style2className.d.ts +1 -1
  109. package/mobile/dist/utils/style2className.js +3 -1
  110. package/mobile/dist/utils/style2className.js.map +1 -1
  111. package/mobile/lib/components/BlockContent.d.ts +2 -1
  112. package/mobile/lib/components/GroupBlock/BlocksTypeProps.d.ts +36 -0
  113. package/mobile/lib/components/GroupBlock/BlocksTypeProps.js +2 -0
  114. package/mobile/lib/components/GroupBlock/BlocksTypeProps.js.map +1 -0
  115. package/mobile/lib/components/GroupBlock/EmbeddableGroupBlocks.d.ts +4 -0
  116. package/mobile/lib/components/GroupBlock/EmbeddableGroupBlocks.js +7 -0
  117. package/mobile/lib/components/GroupBlock/EmbeddableGroupBlocks.js.map +1 -0
  118. package/mobile/lib/components/GroupBlock/GroupBlock.d.ts +9 -0
  119. package/mobile/lib/components/GroupBlock/GroupBlock.js +17 -0
  120. package/mobile/lib/components/GroupBlock/GroupBlock.js.map +1 -0
  121. package/mobile/lib/components/GroupBlock/GroupBlockContent.d.ts +21 -0
  122. package/mobile/lib/components/GroupBlock/GroupBlockContent.js +2 -0
  123. package/mobile/lib/components/GroupBlock/GroupBlockContent.js.map +1 -0
  124. package/mobile/lib/components/GroupBlock/GroupBlockTabs.d.ts +10 -0
  125. package/mobile/lib/components/GroupBlock/GroupBlockTabs.js +16 -0
  126. package/mobile/lib/components/GroupBlock/GroupBlockTabs.js.map +1 -0
  127. package/mobile/lib/components/GroupBlock/GroupBlocksItem.d.ts +8 -0
  128. package/mobile/lib/components/GroupBlock/GroupBlocksItem.js +17 -0
  129. package/mobile/lib/components/GroupBlock/GroupBlocksItem.js.map +1 -0
  130. package/mobile/lib/components/GroupBlock/filterBlocksByTag.d.ts +2 -0
  131. package/mobile/lib/components/GroupBlock/filterBlocksByTag.js +4 -0
  132. package/mobile/lib/components/GroupBlock/filterBlocksByTag.js.map +1 -0
  133. package/mobile/lib/components/GroupBlock/renderBlocksTypes.d.ts +9 -0
  134. package/mobile/lib/components/GroupBlock/renderBlocksTypes.js +13 -0
  135. package/mobile/lib/components/GroupBlock/renderBlocksTypes.js.map +1 -0
  136. package/mobile/lib/components/OtherProducts/OtherProductsContent.d.ts +4 -2
  137. package/mobile/lib/components/ProductGalleryGreen/ProductGalleryGreen.js +9 -11
  138. package/mobile/lib/components/ProductGalleryGreen/ProductGalleryGreen.js.map +1 -1
  139. package/mobile/lib/utils/style2className.d.ts +1 -1
  140. package/mobile/lib/utils/style2className.js +3 -1
  141. package/mobile/lib/utils/style2className.js.map +1 -1
  142. package/mobile/src/components/BlockContent.ts +3 -1
  143. package/mobile/src/components/GroupBlock/BlocksTypeProps.ts +40 -0
  144. package/mobile/src/components/GroupBlock/EmbeddableGroupBlocks.tsx +7 -0
  145. package/mobile/src/components/GroupBlock/GroupBlock.example.json +27 -0
  146. package/mobile/src/components/GroupBlock/GroupBlock.tsx +43 -0
  147. package/mobile/src/components/GroupBlock/GroupBlockContent.ts +23 -0
  148. package/mobile/src/components/GroupBlock/GroupBlockTabs.tsx +54 -0
  149. package/mobile/src/components/GroupBlock/GroupBlocksItem.tsx +30 -0
  150. package/mobile/src/components/GroupBlock/filterBlocksByTag.ts +5 -0
  151. package/mobile/src/components/GroupBlock/renderBlocksTypes.tsx +27 -0
  152. package/mobile/src/components/OtherProducts/OtherProductsContent.ts +4 -2
  153. package/mobile/src/components/ProductGalleryGreen/ProductGalleryGreen.tsx +8 -14
  154. package/mobile/src/utils/style2className.ts +3 -2
  155. package/package.json +1 -1
  156. package/src/components/BlockContent.ts +3 -1
  157. package/src/components/Blocks.ts +2 -0
  158. package/src/components/GroupBlock/BlocksTypeProps.ts +40 -0
  159. package/src/components/GroupBlock/EmbeddableGroupBlocks.tsx +7 -0
  160. package/src/components/GroupBlock/GroupBlock.example.json +27 -0
  161. package/src/components/GroupBlock/GroupBlock.fixture.tsx +51 -0
  162. package/src/components/GroupBlock/GroupBlock.tsx +43 -0
  163. package/src/components/GroupBlock/GroupBlockContent.ts +23 -0
  164. package/src/components/GroupBlock/GroupBlockTabs.tsx +54 -0
  165. package/src/components/GroupBlock/GroupBlocksItem.tsx +30 -0
  166. package/src/components/GroupBlock/filterBlocksByTag.ts +5 -0
  167. package/src/components/GroupBlock/renderBlocksTypes.tsx +27 -0
  168. package/src/components/OtherProducts/OtherProductsContent.ts +4 -2
  169. package/src/components/ProductBlock/ProductBlockInner.tsx +1 -1
  170. package/src/components/ProductGalleryGreen/ProductGalleryGreen.tsx +8 -14
  171. package/src/utils/style2className.ts +3 -2
@@ -13,7 +13,10 @@ export interface BlockItemCommonProps {
13
13
  * @title Отображать в раскрытом виде
14
14
  */
15
15
  isExpanded?: boolean;
16
- /** @title Блоки */
16
+ /**
17
+ * @title Блоки
18
+ * @maxItems 10
19
+ */
17
20
  blocks?: BlockDef[];
18
21
  columns?: ColumnsCount;
19
22
  }
@@ -25,7 +28,6 @@ export interface OtherProductsContent {
25
28
  title?: string;
26
29
  /**
27
30
  * @title Список
28
- * @maxItems 10
29
31
  */
30
32
  blockItems?: BlockItemCommonProps[];
31
33
  colorPalette?: ColorPalette;
@@ -15,7 +15,7 @@ const productSlideStyleMap = {
15
15
  primary: 'bg-white text-primary-text',
16
16
  secondary: 'bg-primary-main text-white',
17
17
  };
18
- exports.ProductGalleryGreen = (0, uni_jsx_1.JSX)(({ className = '', context, slides = [], version = 'primary', duration = 0, anchor = null }) => {
18
+ exports.ProductGalleryGreen = (0, uni_jsx_1.JSX)(({ className = '', context, slides = [], version = 'primary', anchor = null }) => {
19
19
  const galleryNav = slides.map((s) => s.nav);
20
20
  const galleryBlocks = slides.map((s) => s.productBlock);
21
21
  const [activeSlideIndex, setActiveSlideIndex] = context.useState(0);
@@ -26,19 +26,18 @@ exports.ProductGalleryGreen = (0, uni_jsx_1.JSX)(({ className = '', context, sli
26
26
  activeSlideIndex,
27
27
  onClick: () => setActiveSlideIndex(i),
28
28
  version,
29
- duration,
30
29
  })) })] }));
31
30
  });
32
31
  function renderProductBlock(block, i, context) {
33
32
  const { version } = block;
34
33
  const additionalClass = version ? productBlockStyleMap[version].title : '';
35
- return ((0, jsx_runtime_1.jsx)("section", { className: "box-border relative flex grow-0 shrink-0 basis-full", role: "listitem", children: (0, jsx_runtime_1.jsx)("div", { className: "flex grow", children: (0, jsx_runtime_1.jsx)(ProductBlockInner_1.ProductBlockInner, { className: `pl-[50px] pr-2 z-[1] ${additionalClass}`, context: context, textBlockClassName: "mb-[154px]", ...block }) }) }, String(i)));
34
+ return ((0, jsx_runtime_1.jsx)("section", { className: "box-border relative flex grow-0 shrink-0 basis-full", role: "listitem", children: (0, jsx_runtime_1.jsx)("div", { className: "flex grow", children: (0, jsx_runtime_1.jsx)(ProductBlockInner_1.ProductBlockInner, { className: `pl-[50px] z-[1] ${additionalClass}`, context: context, textBlockClassName: "mb-[154px]", ...block }) }) }, String(i)));
36
35
  }
37
- function renderNavButton({ slide, i, activeSlideIndex, onClick, version, duration }) {
36
+ function renderNavButton({ slide, i, activeSlideIndex, onClick, version }) {
38
37
  const isActiveBtn = i === activeSlideIndex;
39
38
  const btnClassName = isActiveBtn
40
- ? 'bg-white shadow-dark-blue/42 h-[102px] w-[354px] min-w-[354px] max-w-[354px] p-0 border-none'
41
- : `min-w-[277px] px-0 pt-4 pb-[23px] hover:py-[26px] hover:py-[26px] ease-in duration-300
39
+ ? 'bg-white shadow-dark-blue/42 h-[102px] w-[354px] min-w-[354px] p-0 border-none'
40
+ : `min-w-[277px] px-0 pt-4 pb-[23px] hover:py-[26px] hover:py-[26px] ease-in duration-300 bg-white/10
42
41
  ${productSlideStyleMap[version]}`;
43
42
  const btnTitleClassName = isActiveBtn
44
43
  ? 'text-primary-text text-title-2xs'
@@ -46,10 +45,9 @@ function renderNavButton({ slide, i, activeSlideIndex, onClick, version, duratio
46
45
  const btnDescClassName = isActiveBtn
47
46
  ? 'text-secondary-text text-m-title-xs mt-2.5'
48
47
  : `text-m-md mt-1.5 ${productBlockStyleMap[version].text}`;
49
- const additionalBorder = version === 'secondary' ? 'border-white/50' : '';
50
- const progressBarClassName = isActiveBtn ? 'animate-slide' : '';
51
- return ((0, jsx_runtime_1.jsxs)("button", { type: "button", onClick: onClick, "aria-label": slide?.title, className: `box-border font-sans group relative overflow-hidden border-[1px] cursor-pointer text-left mx-1 grow basis-0 backdrop-blur-sm
52
- ${btnClassName} ${additionalBorder}
53
- `, children: [(0, jsx_runtime_1.jsxs)("div", { className: "border-0 px-6", children: [(0, jsx_runtime_1.jsx)("div", { className: `font-medium ${btnTitleClassName}`, children: slide?.title }), (0, jsx_runtime_1.jsx)("div", { className: `text-secondary-text ${btnDescClassName}`, children: slide.description })] }), (0, jsx_runtime_1.jsx)("div", { className: `absolute bottom-0 left-0 w-full h-[3px] bg-primary-main -translate-x-full ${progressBarClassName}`, style: { animationDuration: `${duration}s`, animationFillMode: 'forwards' } })] }, String(i)));
48
+ const additionalBorder = version === 'secondary' ? 'border-white/50' : 'border-black/50';
49
+ return ((0, jsx_runtime_1.jsx)("button", { type: "button", onClick: onClick, "aria-label": slide?.title, className: `box-border font-sans relative overflow-hidden border-[1px] border-white/50 cursor-pointer text-left mx-1 grow basis-0
50
+ ${btnClassName} ${additionalBorder}
51
+ `, children: (0, jsx_runtime_1.jsxs)("div", { className: "border-0 px-6", children: [(0, jsx_runtime_1.jsx)("div", { className: `font-medium ${btnTitleClassName}`, children: slide?.title }), (0, jsx_runtime_1.jsx)("div", { className: `text-secondary-text ${btnDescClassName}`, children: slide.description })] }) }, String(i)));
54
52
  }
55
53
  //# sourceMappingURL=ProductGalleryGreen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductGalleryGreen.js","sourceRoot":"","sources":["../../../src/components/ProductGalleryGreen/ProductGalleryGreen.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProductGalleryGreen.js","sourceRoot":"","sources":["../../../src/components/ProductGalleryGreen/ProductGalleryGreen.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const style2className: (style: string[] | undefined | null) => string;
1
+ export declare function style2className(style: string[] | undefined | null): string;
@@ -1,5 +1,7 @@
1
1
  Object.defineProperty(exports, "__esModule", { value: true });
2
2
  exports.style2className = void 0;
3
- const style2className = (style) => style ? style.join(' ') : '';
3
+ function style2className(style) {
4
+ return style ? style.filter(Boolean).join(' ') : '';
5
+ }
4
6
  exports.style2className = style2className;
5
7
  //# sourceMappingURL=style2className.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"style2className.js","sourceRoot":"","sources":["../../src/utils/style2className.ts"],"names":[],"mappings":";;AAAO,MAAM,eAAe,GAAG,CAAC,KAAkC,EAAU,EAAE,CAC5E,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AADlB,QAAA,eAAe,mBACG"}
1
+ {"version":3,"file":"style2className.js","sourceRoot":"","sources":["../../src/utils/style2className.ts"],"names":[],"mappings":";;AAAA,SAAgB,eAAe,CAAC,KAAkC;IAChE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAFD,0CAEC"}
@@ -5,6 +5,7 @@ import type { ExchangeRateTileContent } from './ExchangeRateTile/ExchangeRateTil
5
5
  import type { FooterContent } from './Footer/FooterContent';
6
6
  import type { GalleryContent } from './Gallery/GalleryContent';
7
7
  import type { GracePeriodContent } from './GracePeriod/GracePeriodContent';
8
+ import type { GroupBlockContent } from './GroupBlock/GroupBlockContent';
8
9
  import type { HeaderContent } from './Header/HeaderContent';
9
10
  import type { LinkDocsContent } from './LinkDocs/LinkDocsContent';
10
11
  import type { LinkListContent } from './LinkList/LinkListContent';
@@ -24,4 +25,4 @@ import type { TileContent } from './Tile/TileContent';
24
25
  /**
25
26
  * @hidden
26
27
  */
27
- export declare type BlockContent = BenefitsBlockContent | BonusContent | ComparisonTableContent | ExchangeRateTileContent | FooterContent | GalleryContent | GracePeriodContent | HeaderContent | LinkDocsContent | MobileAppTileContent | NavigatorTabsContent | PictureTextContent | PlaceholderContent | ProductBlockContent | ProductGalleryContent | ProductTileContent | PromoTileContent | StepsBlockContent | TariffsTableContent | TextBlockContent | TileContent | NavigationContent | LinkListContent;
28
+ export declare type BlockContent = BenefitsBlockContent | BonusContent | ComparisonTableContent | ExchangeRateTileContent | FooterContent | GalleryContent | GracePeriodContent | HeaderContent | LinkDocsContent | MobileAppTileContent | NavigatorTabsContent | PictureTextContent | PlaceholderContent | ProductBlockContent | ProductGalleryContent | ProductTileContent | PromoTileContent | StepsBlockContent | TariffsTableContent | TextBlockContent | TileContent | NavigationContent | LinkListContent | GroupBlockContent;
@@ -0,0 +1,36 @@
1
+ import type { ProductBlockContent } from '../../components/ProductBlock/ProductBlockContent';
2
+ import type { ProductTileContent } from '../../components/ProductTile/ProductTileContent';
3
+ import { ContentPageContext } from '../../components/ContentPage/ContentPageContext';
4
+ export interface ActiveHandler {
5
+ context: ContentPageContext;
6
+ blocks?: GroupBlockDef[];
7
+ initialState?: boolean;
8
+ }
9
+ export interface GroupBlockCommonProps {
10
+ /** @title Стиль */
11
+ style?: string[];
12
+ /** @title Теги */
13
+ tags?: string[];
14
+ }
15
+ /**
16
+ * @title Продуктовый блок
17
+ * @default {"blockType": "ProductBlock"}
18
+ */
19
+ export declare type ProductBlockDef = ProductBlockContent & GroupBlockCommonProps & {
20
+ blockType: 'ProductBlock';
21
+ };
22
+ /**
23
+ * @title Продуктовая плитка
24
+ * @default {"blockType": "ProductTile"}
25
+ */
26
+ export declare type ProductTileDef = ProductTileContent & GroupBlockCommonProps & {
27
+ blockType: 'ProductTile';
28
+ };
29
+ /**
30
+ * @title Выберите блок
31
+ */
32
+ export declare type EmptyOption = null;
33
+ /**
34
+ * @title Содержимое блока
35
+ */
36
+ export declare type GroupBlockDef = EmptyOption | ProductBlockDef | ProductTileDef;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BlocksTypeProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlocksTypeProps.js","sourceRoot":"","sources":["../../../src/components/GroupBlock/BlocksTypeProps.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export declare const EmbeddableGroupBlocks: {
2
+ ProductBlock: (props: import("@redneckz/uni-jsx").PropsWithChildren<import("../ProductBlock/ProductBlock").ProductBlockProps, any>, context?: any) => any;
3
+ ProductTile: (props: import("@redneckz/uni-jsx").PropsWithChildren<import("../ProductTile/ProductTile").ProductTileProps, any>, context?: any) => any;
4
+ };
@@ -0,0 +1,7 @@
1
+ import { ProductBlock } from '../ProductBlock/ProductBlock.js';
2
+ import { ProductTile } from '../ProductTile/ProductTile.js';
3
+ export const EmbeddableGroupBlocks = {
4
+ ProductBlock,
5
+ ProductTile,
6
+ };
7
+ //# sourceMappingURL=EmbeddableGroupBlocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddableGroupBlocks.js","sourceRoot":"","sources":["../../../src/components/GroupBlock/EmbeddableGroupBlocks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,YAAY;IACZ,WAAW;CACZ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { UniBlockProps } from '../../types';
2
+ import type { GroupBlockContent, GroupBlockTab } from './GroupBlockContent';
3
+ export interface TabsItemProps extends GroupBlockTab {
4
+ count?: number;
5
+ }
6
+ export interface GroupBlockProps extends GroupBlockContent, UniBlockProps {
7
+ tabs?: TabsItemProps[];
8
+ }
9
+ export declare const GroupBlock: (props: import("@redneckz/uni-jsx").PropsWithChildren<GroupBlockProps, any>, context?: any) => any;
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { JSX } from '@redneckz/uni-jsx';
3
+ import { GroupBlockTabs } from './GroupBlockTabs.js';
4
+ import { GroupBlocksItem } from './GroupBlocksItem.js';
5
+ import { filterBlocksByTag } from './filterBlocksByTag.js';
6
+ export const GroupBlock = JSX(({ className = '', tabs, context, anchor = null, groupBlocks = [] }) => {
7
+ const [currentTag, setCurrentTag] = context.useState(tabs?.[0]?.tag);
8
+ const filteredBlocks = filterBlocksByTag(groupBlocks, currentTag);
9
+ const tabsNewMap = tabs?.map((tab) => {
10
+ const count = tab.tag
11
+ ? groupBlocks.filter((block) => block?.tags?.includes(`${tab.tag}`)).length
12
+ : groupBlocks.length;
13
+ return { ...tab, count };
14
+ });
15
+ return (_jsxs("section", { id: anchor, className: `box-border gap-1 h-12 ${className}`, children: [tabsNewMap?.length ? (_jsx(GroupBlockTabs, { currentTag: currentTag, onTabClick: setCurrentTag, tabs: tabsNewMap })) : null, groupBlocks.length ? (_jsx("div", { className: "list-none", children: _jsx(GroupBlocksItem, { context: context, groupBlocks: filteredBlocks }) })) : null] }));
16
+ });
17
+ //# sourceMappingURL=GroupBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupBlock.js","sourceRoot":"","sources":["../../../src/components/GroupBlock/GroupBlock.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAUxD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAC3B,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,GAAG,EAAE,EAAE,EAAE,EAAE;IACrE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAErE,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAElE,MAAM,UAAU,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG;YACnB,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM;YAC3E,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;QAEvB,OAAO,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,mBAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,yBAAyB,SAAS,EAAE,aACjE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CACpB,KAAC,cAAc,IAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,GAAI,CACxF,CAAC,CAAC,CAAC,IAAI,EACP,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CACpB,cAAK,SAAS,EAAC,WAAW,YACxB,KAAC,eAAe,IAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,GAAI,GAC9D,CACP,CAAC,CAAC,CAAC,IAAI,IACA,CACX,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { GroupBlockDef } from './BlocksTypeProps';
2
+ /**
3
+ * @title Таб
4
+ */
5
+ export interface GroupBlockTab {
6
+ /** @title Название */
7
+ title?: string;
8
+ /** @title Tег */
9
+ tag?: string;
10
+ }
11
+ /**
12
+ * @title Блок-группировки
13
+ */
14
+ export interface GroupBlockContent {
15
+ /** @title Блоки */
16
+ groupBlocks?: GroupBlockDef[];
17
+ /** @title Табы */
18
+ tabs?: GroupBlockTab[];
19
+ /** @title Показывать счетчик блоков во вкладках */
20
+ isShowCounter?: boolean;
21
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=GroupBlockContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupBlockContent.js","sourceRoot":"","sources":["../../../src/components/GroupBlock/GroupBlockContent.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import type { TabsItemProps } from './GroupBlock';
2
+ export declare type TabClickHandler = (tag: any) => void;
3
+ export interface GroupBlockTabsProps {
4
+ onTabClick: TabClickHandler;
5
+ currentTag?: string;
6
+ className?: string;
7
+ tabs?: TabsItemProps[];
8
+ isShowCounter?: boolean;
9
+ }
10
+ export declare const GroupBlockTabs: (props: import("@redneckz/uni-jsx").PropsWithChildren<GroupBlockTabsProps, any>, context?: any) => any;
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { JSX } from '@redneckz/uni-jsx';
3
+ export const GroupBlockTabs = JSX((props) => {
4
+ const { tabs, currentTag, onTabClick, className = '', isShowCounter = true } = props;
5
+ return (_jsx("div", { className: `mb-2 box-border flex gap-x-1 h-12 ${className}`, role: "tablist", children: tabs?.map(renderTab(onTabClick, isShowCounter, currentTag)) }));
6
+ });
7
+ const badgeStyle = 'w-[22px] h-[22px] rounded-full text-m-sm';
8
+ const renderTab = (onTabClick, isShowCounter, currentTag) => (tab, i) => {
9
+ const isActive = currentTag === tab.tag;
10
+ const tabBg = isActive ? 'bg-primary-main' : 'group bg-white';
11
+ const tabText = isActive ? 'text-white' : 'text-secondary-text group-hover:text-primary-main';
12
+ const counterBlockStyle = `${badgeStyle}
13
+ ${isActive ? 'bg-white/30 text-white' : 'bg-secondary-text/10 text-secondary-text'}`;
14
+ return (_jsx("div", { className: `flex h-full w-full flex-1 cursor-pointer mr-2 last:mr-0 box-content ${tabBg}`, role: "tab", onClick: () => onTabClick(tab.tag), "aria-selected": String(isActive), tag: tab?.tag, children: _jsxs("div", { className: "flex flex-1 items-center justify-center", children: [tab?.title ? _jsx("h3", { className: `mr-8 ${tabText}`, children: tab?.title }) : null, isShowCounter ? (_jsx("div", { className: `flex items-center justify-center ${counterBlockStyle}`, children: _jsx("span", { children: tab.count }) })) : null] }) }, String(i)));
15
+ };
16
+ //# sourceMappingURL=GroupBlockTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupBlockTabs.js","sourceRoot":"","sources":["../../../src/components/GroupBlock/GroupBlockTabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAaxC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAsB,CAAC,KAAK,EAAE,EAAE;IAC/D,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,GAAG,EAAE,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAErF,OAAO,CACL,cAAK,SAAS,EAAE,qCAAqC,SAAS,EAAE,EAAE,IAAI,EAAC,SAAS,YAC7E,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,GACxD,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,0CAA0C,CAAC;AAE9D,MAAM,SAAS,GACb,CAAC,UAA2B,EAAE,aAAsB,EAAE,UAAmB,EAAE,EAAE,CAC7E,CAAC,GAAkB,EAAE,CAAS,EAAE,EAAE;IAChC,MAAM,QAAQ,GAAG,UAAU,KAAK,GAAG,CAAC,GAAG,CAAC;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mDAAmD,CAAC;IAC9F,MAAM,iBAAiB,GAAG,GAAG,UAAU;QACnC,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,0CAA0C,EAAE,CAAC;IAEvF,OAAO,CACL,cAEE,SAAS,EAAE,uEAAuE,KAAK,EAAE,EACzF,IAAI,EAAC,KAAK,EACV,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,mBACnB,MAAM,CAAC,QAAQ,CAAC,EAC/B,GAAG,EAAE,GAAG,EAAE,GAAG,YAEb,eAAK,SAAS,EAAC,yCAAyC,aACrD,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,aAAI,SAAS,EAAE,QAAQ,OAAO,EAAE,YAAG,GAAG,EAAE,KAAK,GAAM,CAAC,CAAC,CAAC,IAAI,EACvE,aAAa,CAAC,CAAC,CAAC,CACf,cAAK,SAAS,EAAE,oCAAoC,iBAAiB,EAAE,YACrE,yBAAO,GAAG,CAAC,KAAK,GAAQ,GACpB,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,IAdD,MAAM,CAAC,CAAC,CAAC,CAeV,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ContentPageContext } from '../../components/ContentPage/ContentPageContext';
2
+ import type { UniBlockProps } from '../../types';
3
+ import type { GroupBlockDef } from './BlocksTypeProps';
4
+ import { GroupBlockContent } from './GroupBlockContent';
5
+ export interface GroupBlocksProps extends GroupBlockContent, UniBlockProps {
6
+ }
7
+ export declare const GroupBlocksItem: (props: import("@redneckz/uni-jsx").PropsWithChildren<GroupBlocksProps, any>, context?: any) => any;
8
+ export declare const renderBlock: (context: ContentPageContext) => (block: GroupBlockDef, i: number) => any;
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { JSX } from '@redneckz/uni-jsx';
3
+ import { style2className } from '../../utils/style2className.js';
4
+ import { EmbeddableGroupBlocks } from './EmbeddableGroupBlocks.js';
5
+ export const GroupBlocksItem = JSX(({ groupBlocks, context }) => {
6
+ return (_jsx("div", { className: 'grid grid-cols-12 gap-2 box-border', children: groupBlocks?.length ? groupBlocks.map(renderBlock(context)) : null }));
7
+ });
8
+ export const renderBlock = (context) => (block, i) => {
9
+ const type = block?.blockType;
10
+ if (!type || !(type in EmbeddableGroupBlocks)) {
11
+ return null;
12
+ }
13
+ const classNameBlock = style2className(block?.style);
14
+ const EmbeddedBlock = EmbeddableGroupBlocks[type];
15
+ return (_jsx(EmbeddedBlock, { context: context, ...block, className: classNameBlock }, `block_${i}`));
16
+ };
17
+ //# sourceMappingURL=GroupBlocksItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupBlocksItem.js","sourceRoot":"","sources":["../../../src/components/GroupBlock/GroupBlocksItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAIxC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAmB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE;IAChF,OAAO,CACL,cAAK,SAAS,EAAE,oCAAoC,YACjD,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAC/D,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAA2B,EAAE,EAAE,CAAC,CAAC,KAAoB,EAAE,CAAS,EAAE,EAAE;IAC9F,MAAM,IAAI,GAAG,KAAK,EAAE,SAAS,CAAC;IAC9B,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,qBAAqB,CAAC,EAAE;QAC7C,OAAO,IAAI,CAAC;KACb;IACD,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrD,MAAM,aAAa,GAAa,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5D,OAAO,CACL,KAAC,aAAa,IAAoB,OAAO,EAAE,OAAO,KAAM,KAAK,EAAE,SAAS,EAAE,cAAc,IAApE,SAAS,CAAC,EAAE,CAA4D,CAC7F,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { GroupBlockDef } from './BlocksTypeProps';
2
+ export declare const filterBlocksByTag: (blocks: GroupBlockDef[], tag?: string) => GroupBlockDef[];
@@ -0,0 +1,4 @@
1
+ export const filterBlocksByTag = (blocks, tag) => {
2
+ return tag ? blocks.filter((block) => block?.tags?.includes(tag)) : blocks;
3
+ };
4
+ //# sourceMappingURL=filterBlocksByTag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterBlocksByTag.js","sourceRoot":"","sources":["../../../src/components/GroupBlock/filterBlocksByTag.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAuB,EAAE,GAAY,EAAE,EAAE;IACzE,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7E,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ContentPageContext } from '../../components/ContentPage/ContentPageContext';
2
+ import type { GroupBlockDef } from './BlocksTypeProps';
3
+ declare type EmbeddableBlocksProps = {
4
+ groupBlocks?: GroupBlockDef[];
5
+ context: ContentPageContext;
6
+ className?: string;
7
+ };
8
+ export declare const renderBlock: ({ context, className }: EmbeddableBlocksProps) => (block: GroupBlockDef, i: number) => any;
9
+ export {};
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { EmbeddableGroupBlocks } from './EmbeddableGroupBlocks.js';
3
+ import { style2className } from '../../utils/style2className.js';
4
+ export const renderBlock = ({ context, className }) => (block, i) => {
5
+ const type = block?.blockType;
6
+ if (!type || !(type in EmbeddableGroupBlocks)) {
7
+ return null;
8
+ }
9
+ const classNameBlock = style2className(block?.style);
10
+ const EmbeddedBlock = EmbeddableGroupBlocks[type];
11
+ return (_jsx("div", { className: className, children: _jsx(EmbeddedBlock, { context: context, ...block, className: classNameBlock }) }, `block_${i}`));
12
+ };
13
+ //# sourceMappingURL=renderBlocksTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderBlocksTypes.js","sourceRoot":"","sources":["../../../src/components/GroupBlock/renderBlocksTypes.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAQ9D,MAAM,CAAC,MAAM,WAAW,GACtB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAyB,EAAE,EAAE,CAClD,CAAC,KAAoB,EAAE,CAAS,EAAE,EAAE;IAClC,MAAM,IAAI,GAAG,KAAK,EAAE,SAAS,CAAC;IAC9B,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,qBAAqB,CAAC,EAAE;QAC7C,OAAO,IAAI,CAAC;KACb;IACD,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrD,MAAM,aAAa,GAAa,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5D,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,YACvB,KAAC,aAAa,IAAC,OAAO,EAAE,OAAO,KAAM,KAAK,EAAE,SAAS,EAAE,cAAc,GAAI,IAD3C,SAAS,CAAC,EAAE,CAEtC,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -13,7 +13,10 @@ export interface BlockItemCommonProps {
13
13
  * @title Отображать в раскрытом виде
14
14
  */
15
15
  isExpanded?: boolean;
16
- /** @title Блоки */
16
+ /**
17
+ * @title Блоки
18
+ * @maxItems 10
19
+ */
17
20
  blocks?: BlockDef[];
18
21
  columns?: ColumnsCount;
19
22
  }
@@ -25,7 +28,6 @@ export interface OtherProductsContent {
25
28
  title?: string;
26
29
  /**
27
30
  * @title Список
28
- * @maxItems 10
29
31
  */
30
32
  blockItems?: BlockItemCommonProps[];
31
33
  colorPalette?: ColorPalette;
@@ -13,7 +13,7 @@ const productSlideStyleMap = {
13
13
  primary: 'bg-white text-primary-text',
14
14
  secondary: 'bg-primary-main text-white',
15
15
  };
16
- export const ProductGalleryGreen = JSX(({ className = '', context, slides = [], version = 'primary', duration = 0, anchor = null }) => {
16
+ export const ProductGalleryGreen = JSX(({ className = '', context, slides = [], version = 'primary', anchor = null }) => {
17
17
  const galleryNav = slides.map((s) => s.nav);
18
18
  const galleryBlocks = slides.map((s) => s.productBlock);
19
19
  const [activeSlideIndex, setActiveSlideIndex] = context.useState(0);
@@ -24,19 +24,18 @@ export const ProductGalleryGreen = JSX(({ className = '', context, slides = [],
24
24
  activeSlideIndex,
25
25
  onClick: () => setActiveSlideIndex(i),
26
26
  version,
27
- duration,
28
27
  })) })] }));
29
28
  });
30
29
  function renderProductBlock(block, i, context) {
31
30
  const { version } = block;
32
31
  const additionalClass = version ? productBlockStyleMap[version].title : '';
33
- return (_jsx("section", { className: "box-border relative flex grow-0 shrink-0 basis-full", role: "listitem", children: _jsx("div", { className: "flex grow", children: _jsx(ProductBlockInner, { className: `pl-[50px] pr-2 z-[1] ${additionalClass}`, context: context, textBlockClassName: "mb-[154px]", ...block }) }) }, String(i)));
32
+ return (_jsx("section", { className: "box-border relative flex grow-0 shrink-0 basis-full", role: "listitem", children: _jsx("div", { className: "flex grow", children: _jsx(ProductBlockInner, { className: `pl-[50px] z-[1] ${additionalClass}`, context: context, textBlockClassName: "mb-[154px]", ...block }) }) }, String(i)));
34
33
  }
35
- function renderNavButton({ slide, i, activeSlideIndex, onClick, version, duration }) {
34
+ function renderNavButton({ slide, i, activeSlideIndex, onClick, version }) {
36
35
  const isActiveBtn = i === activeSlideIndex;
37
36
  const btnClassName = isActiveBtn
38
- ? 'bg-white shadow-dark-blue/42 h-[102px] w-[354px] min-w-[354px] max-w-[354px] p-0 border-none'
39
- : `min-w-[277px] px-0 pt-4 pb-[23px] hover:py-[26px] hover:py-[26px] ease-in duration-300
37
+ ? 'bg-white shadow-dark-blue/42 h-[102px] w-[354px] min-w-[354px] p-0 border-none'
38
+ : `min-w-[277px] px-0 pt-4 pb-[23px] hover:py-[26px] hover:py-[26px] ease-in duration-300 bg-white/10
40
39
  ${productSlideStyleMap[version]}`;
41
40
  const btnTitleClassName = isActiveBtn
42
41
  ? 'text-primary-text text-title-2xs'
@@ -44,10 +43,9 @@ function renderNavButton({ slide, i, activeSlideIndex, onClick, version, duratio
44
43
  const btnDescClassName = isActiveBtn
45
44
  ? 'text-secondary-text text-m-title-xs mt-2.5'
46
45
  : `text-m-md mt-1.5 ${productBlockStyleMap[version].text}`;
47
- const additionalBorder = version === 'secondary' ? 'border-white/50' : '';
48
- const progressBarClassName = isActiveBtn ? 'animate-slide' : '';
49
- return (_jsxs("button", { type: "button", onClick: onClick, "aria-label": slide?.title, className: `box-border font-sans group relative overflow-hidden border-[1px] cursor-pointer text-left mx-1 grow basis-0 backdrop-blur-sm
50
- ${btnClassName} ${additionalBorder}
51
- `, children: [_jsxs("div", { className: "border-0 px-6", children: [_jsx("div", { className: `font-medium ${btnTitleClassName}`, children: slide?.title }), _jsx("div", { className: `text-secondary-text ${btnDescClassName}`, children: slide.description })] }), _jsx("div", { className: `absolute bottom-0 left-0 w-full h-[3px] bg-primary-main -translate-x-full ${progressBarClassName}`, style: { animationDuration: `${duration}s`, animationFillMode: 'forwards' } })] }, String(i)));
46
+ const additionalBorder = version === 'secondary' ? 'border-white/50' : 'border-black/50';
47
+ return (_jsx("button", { type: "button", onClick: onClick, "aria-label": slide?.title, className: `box-border font-sans relative overflow-hidden border-[1px] border-white/50 cursor-pointer text-left mx-1 grow basis-0
48
+ ${btnClassName} ${additionalBorder}
49
+ `, children: _jsxs("div", { className: "border-0 px-6", children: [_jsx("div", { className: `font-medium ${btnTitleClassName}`, children: slide?.title }), _jsx("div", { className: `text-secondary-text ${btnDescClassName}`, children: slide.description })] }) }, String(i)));
52
50
  }
53
51
  //# sourceMappingURL=ProductGalleryGreen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductGalleryGreen.js","sourceRoot":"","sources":["../../../src/components/ProductGalleryGreen/ProductGalleryGreen.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProductGalleryGreen.js","sourceRoot":"","sources":["../../../src/components/ProductGalleryGreen/ProductGalleryGreen.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const style2className: (style: string[] | undefined | null) => string;
1
+ export declare function style2className(style: string[] | undefined | null): string;
@@ -1,2 +1,4 @@
1
- export const style2className = (style) => style ? style.join(' ') : '';
1
+ export function style2className(style) {
2
+ return style ? style.filter(Boolean).join(' ') : '';
3
+ }
2
4
  //# sourceMappingURL=style2className.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"style2className.js","sourceRoot":"","sources":["../../src/utils/style2className.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAkC,EAAU,EAAE,CAC5E,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"style2className.js","sourceRoot":"","sources":["../../src/utils/style2className.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,KAAkC;IAChE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC"}
@@ -5,6 +5,7 @@ import type { ExchangeRateTileContent } from './ExchangeRateTile/ExchangeRateTil
5
5
  import type { FooterContent } from './Footer/FooterContent';
6
6
  import type { GalleryContent } from './Gallery/GalleryContent';
7
7
  import type { GracePeriodContent } from './GracePeriod/GracePeriodContent';
8
+ import type { GroupBlockContent } from './GroupBlock/GroupBlockContent';
8
9
  import type { HeaderContent } from './Header/HeaderContent';
9
10
  import type { LinkDocsContent } from './LinkDocs/LinkDocsContent';
10
11
  import type { LinkListContent } from './LinkList/LinkListContent';
@@ -48,4 +49,5 @@ export type BlockContent =
48
49
  | TextBlockContent
49
50
  | TileContent
50
51
  | NavigationContent
51
- | LinkListContent;
52
+ | LinkListContent
53
+ | GroupBlockContent;
@@ -0,0 +1,40 @@
1
+ import type { ProductBlockContent } from '../../components/ProductBlock/ProductBlockContent';
2
+ import type { ProductTileContent } from '../../components/ProductTile/ProductTileContent';
3
+ import { ContentPageContext } from '../../components/ContentPage/ContentPageContext';
4
+
5
+ export interface ActiveHandler {
6
+ context: ContentPageContext;
7
+ blocks?: GroupBlockDef[];
8
+ initialState?: boolean;
9
+ }
10
+
11
+ export interface GroupBlockCommonProps {
12
+ /** @title Стиль */
13
+ style?: string[];
14
+ /** @title Теги */
15
+ tags?: string[];
16
+ }
17
+
18
+ /**
19
+ * @title Продуктовый блок
20
+ * @default {"blockType": "ProductBlock"}
21
+ */
22
+ export type ProductBlockDef = ProductBlockContent &
23
+ GroupBlockCommonProps & { blockType: 'ProductBlock' };
24
+
25
+ /**
26
+ * @title Продуктовая плитка
27
+ * @default {"blockType": "ProductTile"}
28
+ */
29
+ export type ProductTileDef = ProductTileContent &
30
+ GroupBlockCommonProps & { blockType: 'ProductTile' };
31
+
32
+ /**
33
+ * @title Выберите блок
34
+ */
35
+ export type EmptyOption = null;
36
+
37
+ /**
38
+ * @title Содержимое блока
39
+ */
40
+ export type GroupBlockDef = EmptyOption | ProductBlockDef | ProductTileDef;
@@ -0,0 +1,7 @@
1
+ import { ProductBlock } from '../ProductBlock/ProductBlock';
2
+ import { ProductTile } from '../ProductTile/ProductTile';
3
+
4
+ export const EmbeddableGroupBlocks = {
5
+ ProductBlock,
6
+ ProductTile,
7
+ };
@@ -0,0 +1,27 @@
1
+ {
2
+ "tabs": [
3
+ { "title": "Еще программы", "index": 0 },
4
+ { "title": "Страхование жизни", "index": 1, "tag": "tag1" },
5
+ { "title": "Страхование здоровья", "index": 2, "tag": "tag2" }
6
+ ],
7
+ "blocks": [
8
+ {
9
+ "blockType": "ProductBlock",
10
+ "title": "Продуктовый блок",
11
+ "description": "Описание текстового блока",
12
+ "tags":["tag2"]
13
+ },
14
+ {
15
+ "blockType": "ProductTile",
16
+ "title": "Продуктовая плитка",
17
+ "description": "Описание текстового блока",
18
+ "tags":["tag1"]
19
+ },
20
+ {
21
+ "blockType": "ProductBlock",
22
+ "title": "Продуктовый блок",
23
+ "description": "Описание текстового блока",
24
+ "tags":["tag2"]
25
+ }
26
+ ]
27
+ }
@@ -0,0 +1,43 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import type { UniBlockProps } from '../../types';
3
+ import type { GroupBlockContent, GroupBlockTab } from './GroupBlockContent';
4
+ import { GroupBlockTabs } from './GroupBlockTabs';
5
+ import { GroupBlocksItem } from './GroupBlocksItem';
6
+ import { filterBlocksByTag } from './filterBlocksByTag';
7
+
8
+ export interface TabsItemProps extends GroupBlockTab {
9
+ count?: number;
10
+ }
11
+
12
+ export interface GroupBlockProps extends GroupBlockContent, UniBlockProps {
13
+ tabs?: TabsItemProps[];
14
+ }
15
+
16
+ export const GroupBlock = JSX<GroupBlockProps>(
17
+ ({ className = '', tabs, context, anchor = null, groupBlocks = [] }) => {
18
+ const [currentTag, setCurrentTag] = context.useState(tabs?.[0]?.tag);
19
+
20
+ const filteredBlocks = filterBlocksByTag(groupBlocks, currentTag);
21
+
22
+ const tabsNewMap = tabs?.map((tab) => {
23
+ const count = tab.tag
24
+ ? groupBlocks.filter((block) => block?.tags?.includes(`${tab.tag}`)).length
25
+ : groupBlocks.length;
26
+
27
+ return { ...tab, count };
28
+ });
29
+
30
+ return (
31
+ <section id={anchor} className={`box-border gap-1 h-12 ${className}`}>
32
+ {tabsNewMap?.length ? (
33
+ <GroupBlockTabs currentTag={currentTag} onTabClick={setCurrentTag} tabs={tabsNewMap} />
34
+ ) : null}
35
+ {groupBlocks.length ? (
36
+ <div className="list-none">
37
+ <GroupBlocksItem context={context} groupBlocks={filteredBlocks} />
38
+ </div>
39
+ ) : null}
40
+ </section>
41
+ );
42
+ },
43
+ );