@redneckz/wildless-cms-uni-blocks 0.14.934 → 0.14.936

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 (127) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +171 -2
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/CashbackCalculator/CashbackCalculator.d.ts +6 -0
  5. package/bundle/components/CashbackCalculator/CashbackCalculatorContent.d.ts +24 -0
  6. package/bundle/components/CashbackCalculator/CashbackCalculatorResult.d.ts +6 -0
  7. package/bundle/components/CashbackCalculator/CashbackCategory.d.ts +14 -0
  8. package/bundle/components/CashbackCalculator/useCashbackCalculator.d.ts +10 -0
  9. package/bundle/ui-kit/InfoCard/InfoCard.d.ts +2 -0
  10. package/dist/components/Blocks.js +2 -0
  11. package/dist/components/Blocks.js.map +1 -1
  12. package/dist/components/Blocks.mobile.js +2 -0
  13. package/dist/components/Blocks.mobile.js.map +1 -1
  14. package/dist/components/CashbackCalculator/CashbackCalculator.d.ts +6 -0
  15. package/dist/components/CashbackCalculator/CashbackCalculator.js +28 -0
  16. package/dist/components/CashbackCalculator/CashbackCalculator.js.map +1 -0
  17. package/dist/components/CashbackCalculator/CashbackCalculatorContent.d.ts +24 -0
  18. package/dist/components/CashbackCalculator/CashbackCalculatorContent.js +2 -0
  19. package/dist/components/CashbackCalculator/CashbackCalculatorContent.js.map +1 -0
  20. package/dist/components/CashbackCalculator/CashbackCalculatorResult.d.ts +6 -0
  21. package/dist/components/CashbackCalculator/CashbackCalculatorResult.js +27 -0
  22. package/dist/components/CashbackCalculator/CashbackCalculatorResult.js.map +1 -0
  23. package/dist/components/CashbackCalculator/CashbackCategory.d.ts +14 -0
  24. package/dist/components/CashbackCalculator/CashbackCategory.js +72 -0
  25. package/dist/components/CashbackCalculator/CashbackCategory.js.map +1 -0
  26. package/dist/components/CashbackCalculator/useCashbackCalculator.d.ts +10 -0
  27. package/dist/components/CashbackCalculator/useCashbackCalculator.js +77 -0
  28. package/dist/components/CashbackCalculator/useCashbackCalculator.js.map +1 -0
  29. package/dist/ui-kit/InfoCard/InfoCard.d.ts +2 -0
  30. package/dist/ui-kit/InfoCard/InfoCard.js +2 -1
  31. package/dist/ui-kit/InfoCard/InfoCard.js.map +1 -1
  32. package/lib/common.css +1 -1
  33. package/lib/components/Blocks.js +2 -0
  34. package/lib/components/Blocks.js.map +1 -1
  35. package/lib/components/Blocks.mobile.js +2 -0
  36. package/lib/components/Blocks.mobile.js.map +1 -1
  37. package/lib/components/CashbackCalculator/CashbackCalculator.d.ts +6 -0
  38. package/lib/components/CashbackCalculator/CashbackCalculator.fixture.d.ts +6 -0
  39. package/lib/components/CashbackCalculator/CashbackCalculator.fixture.mobile.d.ts +5 -0
  40. package/lib/components/CashbackCalculator/CashbackCalculator.js +26 -0
  41. package/lib/components/CashbackCalculator/CashbackCalculator.js.map +1 -0
  42. package/lib/components/CashbackCalculator/CashbackCalculatorContent.d.ts +24 -0
  43. package/lib/components/CashbackCalculator/CashbackCalculatorContent.js +2 -0
  44. package/lib/components/CashbackCalculator/CashbackCalculatorContent.js.map +1 -0
  45. package/lib/components/CashbackCalculator/CashbackCalculatorResult.d.ts +6 -0
  46. package/lib/components/CashbackCalculator/CashbackCalculatorResult.js +25 -0
  47. package/lib/components/CashbackCalculator/CashbackCalculatorResult.js.map +1 -0
  48. package/lib/components/CashbackCalculator/CashbackCategory.d.ts +14 -0
  49. package/lib/components/CashbackCalculator/CashbackCategory.js +70 -0
  50. package/lib/components/CashbackCalculator/CashbackCategory.js.map +1 -0
  51. package/lib/components/CashbackCalculator/useCashbackCalculator.d.ts +10 -0
  52. package/lib/components/CashbackCalculator/useCashbackCalculator.js +74 -0
  53. package/lib/components/CashbackCalculator/useCashbackCalculator.js.map +1 -0
  54. package/lib/ui-kit/InfoCard/InfoCard.d.ts +2 -0
  55. package/lib/ui-kit/InfoCard/InfoCard.js +2 -1
  56. package/lib/ui-kit/InfoCard/InfoCard.js.map +1 -1
  57. package/mobile/bundle/bundle.umd.js +171 -2
  58. package/mobile/bundle/bundle.umd.min.js +1 -1
  59. package/mobile/bundle/components/CashbackCalculator/CashbackCalculator.d.ts +6 -0
  60. package/mobile/bundle/components/CashbackCalculator/CashbackCalculatorContent.d.ts +24 -0
  61. package/mobile/bundle/components/CashbackCalculator/CashbackCalculatorResult.d.ts +6 -0
  62. package/mobile/bundle/components/CashbackCalculator/CashbackCategory.d.ts +14 -0
  63. package/mobile/bundle/components/CashbackCalculator/useCashbackCalculator.d.ts +10 -0
  64. package/mobile/bundle/ui-kit/InfoCard/InfoCard.d.ts +2 -0
  65. package/mobile/dist/components/Blocks.js +2 -0
  66. package/mobile/dist/components/Blocks.js.map +1 -1
  67. package/mobile/dist/components/CashbackCalculator/CashbackCalculator.d.ts +6 -0
  68. package/mobile/dist/components/CashbackCalculator/CashbackCalculator.js +28 -0
  69. package/mobile/dist/components/CashbackCalculator/CashbackCalculator.js.map +1 -0
  70. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorContent.d.ts +24 -0
  71. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorContent.js +2 -0
  72. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorContent.js.map +1 -0
  73. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorResult.d.ts +6 -0
  74. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorResult.js +27 -0
  75. package/mobile/dist/components/CashbackCalculator/CashbackCalculatorResult.js.map +1 -0
  76. package/mobile/dist/components/CashbackCalculator/CashbackCategory.d.ts +14 -0
  77. package/mobile/dist/components/CashbackCalculator/CashbackCategory.js +72 -0
  78. package/mobile/dist/components/CashbackCalculator/CashbackCategory.js.map +1 -0
  79. package/mobile/dist/components/CashbackCalculator/useCashbackCalculator.d.ts +10 -0
  80. package/mobile/dist/components/CashbackCalculator/useCashbackCalculator.js +77 -0
  81. package/mobile/dist/components/CashbackCalculator/useCashbackCalculator.js.map +1 -0
  82. package/mobile/dist/ui-kit/InfoCard/InfoCard.d.ts +2 -0
  83. package/mobile/dist/ui-kit/InfoCard/InfoCard.js +2 -1
  84. package/mobile/dist/ui-kit/InfoCard/InfoCard.js.map +1 -1
  85. package/mobile/lib/common.css +1 -1
  86. package/mobile/lib/components/Blocks.js +2 -0
  87. package/mobile/lib/components/Blocks.js.map +1 -1
  88. package/mobile/lib/components/CashbackCalculator/CashbackCalculator.d.ts +6 -0
  89. package/mobile/lib/components/CashbackCalculator/CashbackCalculator.js +26 -0
  90. package/mobile/lib/components/CashbackCalculator/CashbackCalculator.js.map +1 -0
  91. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorContent.d.ts +24 -0
  92. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorContent.js +2 -0
  93. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorContent.js.map +1 -0
  94. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorResult.d.ts +6 -0
  95. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorResult.js +25 -0
  96. package/mobile/lib/components/CashbackCalculator/CashbackCalculatorResult.js.map +1 -0
  97. package/mobile/lib/components/CashbackCalculator/CashbackCategory.d.ts +14 -0
  98. package/mobile/lib/components/CashbackCalculator/CashbackCategory.js +70 -0
  99. package/mobile/lib/components/CashbackCalculator/CashbackCategory.js.map +1 -0
  100. package/mobile/lib/components/CashbackCalculator/useCashbackCalculator.d.ts +10 -0
  101. package/mobile/lib/components/CashbackCalculator/useCashbackCalculator.js +74 -0
  102. package/mobile/lib/components/CashbackCalculator/useCashbackCalculator.js.map +1 -0
  103. package/mobile/lib/ui-kit/InfoCard/InfoCard.d.ts +2 -0
  104. package/mobile/lib/ui-kit/InfoCard/InfoCard.js +2 -1
  105. package/mobile/lib/ui-kit/InfoCard/InfoCard.js.map +1 -1
  106. package/mobile/src/components/Blocks.ts +2 -0
  107. package/mobile/src/components/CashbackCalculator/CashbackCalculator.example.json +1 -0
  108. package/mobile/src/components/CashbackCalculator/CashbackCalculator.tsx +117 -0
  109. package/mobile/src/components/CashbackCalculator/CashbackCalculator.ui.json +15 -0
  110. package/mobile/src/components/CashbackCalculator/CashbackCalculatorContent.ts +27 -0
  111. package/mobile/src/components/CashbackCalculator/CashbackCalculatorResult.tsx +66 -0
  112. package/mobile/src/components/CashbackCalculator/CashbackCategory.tsx +143 -0
  113. package/mobile/src/components/CashbackCalculator/useCashbackCalculator.ts +93 -0
  114. package/mobile/src/ui-kit/InfoCard/InfoCard.tsx +9 -2
  115. package/package.json +1 -1
  116. package/src/components/Blocks.mobile.ts +2 -0
  117. package/src/components/Blocks.ts +2 -0
  118. package/src/components/CashbackCalculator/CashbackCalculator.example.json +1 -0
  119. package/src/components/CashbackCalculator/CashbackCalculator.fixture.mobile.tsx +45 -0
  120. package/src/components/CashbackCalculator/CashbackCalculator.fixture.tsx +54 -0
  121. package/src/components/CashbackCalculator/CashbackCalculator.tsx +117 -0
  122. package/src/components/CashbackCalculator/CashbackCalculator.ui.json +15 -0
  123. package/src/components/CashbackCalculator/CashbackCalculatorContent.ts +27 -0
  124. package/src/components/CashbackCalculator/CashbackCalculatorResult.tsx +66 -0
  125. package/src/components/CashbackCalculator/CashbackCategory.tsx +143 -0
  126. package/src/components/CashbackCalculator/useCashbackCalculator.ts +93 -0
  127. package/src/ui-kit/InfoCard/InfoCard.tsx +9 -2
@@ -1,8 +1,10 @@
1
1
  import { type IconVersion } from '../../model/IconVersion';
2
+ import { type Picture } from '../../model/Picture';
2
3
  import { type IconName } from '../Icon/IconProps';
3
4
  export interface InfoCardProps {
4
5
  __html?: string;
5
6
  icon?: IconName;
6
7
  iconVersion?: IconVersion;
8
+ image?: Picture;
7
9
  }
8
10
  export declare const InfoCard: import("@redneckz/uni-jsx").UNIComponent<InfoCardProps, any, any>;
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
3
  import { Icon } from '../Icon/Icon.js';
4
+ import { Img } from '../Img/Img.js';
4
5
  import { RichText } from '../RichText/RichText.js';
5
- export const InfoCard = JSX(({ __html, icon = 'InfoCircleIcon', iconVersion = 'black' }) => (_jsxs("div", { className: "flex flex-row items-center w-full min-h-14 bg-main-gray rounded-lg gap-m p-m", children: [_jsx("div", { className: "rounded-full bg-white p-xs", children: _jsx(Icon, { name: icon, width: "24", height: "24", iconVersion: iconVersion }) }), _jsx("div", { className: "", children: _jsx(RichText, { __html: __html }) })] })));
6
+ export const InfoCard = JSX(({ __html, icon = 'InfoCircleIcon', iconVersion = 'black', image }) => (_jsxs("div", { className: "flex flex-row items-center w-full min-h-14 bg-main-gray rounded-lg gap-m p-m", children: [_jsx("div", { className: "rounded-full bg-white p-xs", children: image ? (_jsx(Img, { image: image, className: "block w-max" })) : (_jsx(Icon, { name: icon, width: "24", height: "24", iconVersion: iconVersion })) }), _jsx("div", { className: "", children: _jsx(RichText, { __html: __html }) })] })));
6
7
  //# sourceMappingURL=InfoCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InfoCard.js","sourceRoot":"","sources":["../../../src/ui-kit/InfoCard/InfoCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQhD,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CACzB,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,gBAAgB,EAAE,WAAW,GAAG,OAAO,EAAE,EAAE,EAAE,CAAC,CAC9D,eAAK,SAAS,EAAC,8EAA8E,aAC3F,cAAK,SAAS,EAAC,4BAA4B,YACzC,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,WAAW,EAAE,WAAW,GAAI,GACjE,EACN,cAAK,SAAS,EAAC,EAAE,YACf,KAAC,QAAQ,IAAC,MAAM,EAAE,MAAM,GAAI,GACxB,IACF,CACP,CACF,CAAC"}
1
+ {"version":3,"file":"InfoCard.js","sourceRoot":"","sources":["../../../src/ui-kit/InfoCard/InfoCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAGxC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAShD,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CACzB,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,gBAAgB,EAAE,WAAW,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACrE,eAAK,SAAS,EAAC,8EAA8E,aAC3F,cAAK,SAAS,EAAC,4BAA4B,YACxC,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,GAAG,IAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAC,aAAa,GAAG,CAC9C,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,WAAW,EAAE,WAAW,GAAI,CACtE,GACG,EACN,cAAK,SAAS,EAAC,EAAE,YACf,KAAC,QAAQ,IAAC,MAAM,EAAE,MAAM,GAAI,GACxB,IACF,CACP,CACF,CAAC"}
@@ -4643,7 +4643,7 @@
4643
4643
  return [storedValue, setValue];
4644
4644
  }
4645
4645
 
4646
- const InfoCard = JSX(({ __html, icon = 'InfoCircleIcon', iconVersion = 'black' }) => (jsxs("div", { className: "flex flex-row items-center w-full min-h-14 bg-main-gray rounded-lg gap-m p-m", children: [jsx("div", { className: "rounded-full bg-white p-xs", children: jsx(Icon, { name: icon, width: "24", height: "24", iconVersion: iconVersion }) }), jsx("div", { className: "", children: jsx(RichText, { __html: __html }) })] })));
4646
+ const InfoCard = JSX(({ __html, icon = 'InfoCircleIcon', iconVersion = 'black', image }) => (jsxs("div", { className: "flex flex-row items-center w-full min-h-14 bg-main-gray rounded-lg gap-m p-m", children: [jsx("div", { className: "rounded-full bg-white p-xs", children: image ? (jsx(Img, { image: image, className: "block w-max" })) : (jsx(Icon, { name: icon, width: "24", height: "24", iconVersion: iconVersion })) }), jsx("div", { className: "", children: jsx(RichText, { __html: __html }) })] })));
4647
4647
 
4648
4648
  const getCardTypes = async (paymentSystemTypeCd, creditProgramId) => {
4649
4649
  const data = await fetchRetailJSON('/dictionaryFiltered', 'POST', {
@@ -8493,6 +8493,174 @@
8493
8493
  return (jsxs(BlockWrapper, { className: style('flex flex-col', className), defaultPadding: "p-2xl", ...rest, children: [jsx(Img, { className: "self-center", image: icon }), title ? (jsx(Heading, { className: style('pt-xs', align), headingType: "h5", title: title })) : null, button?.text ? jsx(LinkButton, { className: "w-full mt-m mb-lg", ...button }) : null, hiddenCells.length ? (jsxs(Foldable, { children: [jsxs("div", { children: [visibleCells, jsx(FoldableSection, { isUnfolded: isVisible, children: hiddenCells })] }), cardCells.length >= visibleCellsCount ? (jsx(DefaultFoldButton, { className: "mt-m", label: isVisible ? 'Скрыть' : 'Подробнее о тарифе', isUnfolded: isVisible, embedded: true, data: data, onClick: handleFold })) : null] })) : (jsx("div", { children: visibleCells }))] }));
8494
8494
  });
8495
8495
 
8496
+ const MAX_MONTH_CASHBACK = 5000;
8497
+ const MAX_YEAR_CASHBACK = 60000;
8498
+ const ResultText = JSX(({ text, value }) => (jsxs("div", { className: "space-y-xs w-full", children: [jsx(Text, { size: "text-m", color: "text-primary-text", font: "font-light", children: text }), jsx("div", { className: "w-full text-2xl bg-main-gray px-4 py-3 rounded-md", children: `${toLocalNumberFormat()(value)} ₽` })] })));
8499
+ const CashbackCalculatorResult = JSX(({ cashbacks }) => {
8500
+ const { mounth, year } = getResult(cashbacks);
8501
+ return (jsxs("div", { className: "w-full flex flex-col gap-lg", children: [jsx(Headline, { title: "\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442 \u0440\u0430\u0441\u0447\u0435\u0442\u0430", description: "\u041A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438 \u043A\u0435\u0448\u0431\u044D\u043A\u0430 \u043F\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u043E", headlineVersion: "XS", isEmbedded: true, align: "text-left" }), jsxs("div", { className: "flex flex-col @xs:flex-row gap-lg", children: [jsx(ResultText, { text: "\u0411\u0430\u043B\u043B\u043E\u0432 \u0432 \u043C\u0435\u0441\u044F\u0446", value: mounth }), jsx(ResultText, { text: "\u0411\u0430\u043B\u043B\u043E\u0432 \u0432 \u0433\u043E\u0434", value: year })] })] }));
8502
+ });
8503
+ const getResult = (cashbacks) => {
8504
+ return cashbacks.reduce((acc, val) => {
8505
+ const mounthSum = (Number(val.percent.key) / 100) * val.sum;
8506
+ return {
8507
+ mounth: Math.min(acc.mounth + mounthSum, MAX_MONTH_CASHBACK),
8508
+ year: Math.min(acc.year + mounthSum * 12, MAX_YEAR_CASHBACK),
8509
+ };
8510
+ }, {
8511
+ mounth: 0,
8512
+ year: 0,
8513
+ });
8514
+ };
8515
+
8516
+ const AllPercentCategories = [
8517
+ {
8518
+ text: 'Категория на кешбэк 1,5%',
8519
+ key: '1.5',
8520
+ },
8521
+ {
8522
+ text: 'Категория на кешбэк 3%',
8523
+ key: '3',
8524
+ },
8525
+ {
8526
+ text: 'Категория на кешбэк 5%',
8527
+ key: '5',
8528
+ },
8529
+ {
8530
+ text: 'Категория на кешбэк 10%',
8531
+ key: '10',
8532
+ },
8533
+ {
8534
+ text: 'Категория на кешбэк 15%',
8535
+ key: '15',
8536
+ },
8537
+ ];
8538
+ const PercentCategoriesWithoutIncreased = [
8539
+ {
8540
+ text: 'Категория на кешбэк 1,5%',
8541
+ key: '1.5',
8542
+ },
8543
+ {
8544
+ text: 'Категория на кешбэк 3%',
8545
+ key: '3',
8546
+ },
8547
+ ];
8548
+ const CashbackCategory = JSX(({ categories, cashback, showIncreasedPercents, maxInputRange, deleteImage, onDelete, onChange, }) => {
8549
+ const [currentCategory, setCurrentCategory] = useState(getRandomElement(categories));
8550
+ const isMainCashback = cashback.id === 0;
8551
+ const onChangePercent = (value) => {
8552
+ onChange({
8553
+ ...cashback,
8554
+ percent: value,
8555
+ });
8556
+ };
8557
+ const onChangeSum = (value) => {
8558
+ onChange({
8559
+ ...cashback,
8560
+ sum: value,
8561
+ });
8562
+ };
8563
+ return (jsxs("div", { className: "w-full space-y-m", children: [jsxs("div", { className: "space-y-xs", children: [jsx(Text, { size: "text-m", color: "text-primary-text", font: "font-light", children: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044E \u043A\u0435\u0448\u0431\u044D\u043A\u0430" }), jsxs("div", { className: "flex gap-m", children: [jsx(Select, { className: "w-full", isManualInput: isMainCashback, placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u044D\u0448\u0431\u044D\u043A", options: getPercentCategories(isMainCashback, showIncreasedPercents), value: cashback.percent, onChange: onChangePercent }), !isMainCashback ? (jsx(Button, { version: "secondary", onClick: () => onDelete(cashback.id), shape: "round", className: "px-4 rounded-md", children: jsx(Img, { image: deleteImage }) })) : null] })] }), categories?.length && !isMainCashback ? (jsx(Select, { label: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u0430\u0442\u0435\u043E\u0440\u0438\u044E", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u0430\u0442\u0435\u043E\u0440\u0438\u044E", options: categories, value: currentCategory, onChange: setCurrentCategory })) : null, jsx(InputRange, { step: 500, title: "\u0421\u0443\u043C\u043C\u0430 \u043F\u043E\u043A\u0443\u043F\u043E\u043A \u0432 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438", min: 0, max: maxInputRange, value: cashback.sum, onChange: onChangeSum })] }));
8564
+ });
8565
+ const getRandomElement = (arr) => arr?.[new Date().getTime().toString().slice(-1)];
8566
+ const getPercentCategories = (isMainCashback, showIncreasedPercents) => {
8567
+ if (isMainCashback) {
8568
+ return [];
8569
+ }
8570
+ else if (showIncreasedPercents) {
8571
+ return AllPercentCategories;
8572
+ }
8573
+ else {
8574
+ return PercentCategoriesWithoutIncreased;
8575
+ }
8576
+ };
8577
+
8578
+ const DEFAULT_MULTIPLE_CASHBACK = [
8579
+ {
8580
+ id: 0,
8581
+ percent: {
8582
+ text: 'Категория на кешбэк 1%',
8583
+ key: '1',
8584
+ },
8585
+ sum: 5000,
8586
+ },
8587
+ {
8588
+ id: 1,
8589
+ percent: {
8590
+ text: 'Категория на кешбэк 1,5%',
8591
+ key: '1.5',
8592
+ },
8593
+ sum: 5000,
8594
+ },
8595
+ {
8596
+ id: 2,
8597
+ percent: {
8598
+ text: 'Категория на кешбэк 1,5%',
8599
+ key: '1.5',
8600
+ },
8601
+ sum: 5000,
8602
+ },
8603
+ ];
8604
+ const DEFAULT_CASHBACK = [
8605
+ {
8606
+ id: 0,
8607
+ percent: {
8608
+ text: 'Категория на кешбэк 1%',
8609
+ key: '1',
8610
+ },
8611
+ sum: 5000,
8612
+ },
8613
+ ];
8614
+ const useCashbackCalculator = (isMultiple) => {
8615
+ const { data } = useLeadFormData('CASHBACK_CATEGORY');
8616
+ const [cashbacks, setCashbacks] = useState(isMultiple ? DEFAULT_MULTIPLE_CASHBACK : DEFAULT_CASHBACK);
8617
+ const categories = data?.map((_) => ({
8618
+ key: _.key || '',
8619
+ text: _.value,
8620
+ })) || [];
8621
+ const onAddNewCashback = () => setCashbacks((_) => [
8622
+ ..._,
8623
+ {
8624
+ id: _[_.length - 1].id + 1,
8625
+ percent: {
8626
+ text: 'Категория на кешбэк 1,5%',
8627
+ key: '1.5',
8628
+ },
8629
+ sum: 5000,
8630
+ },
8631
+ ]);
8632
+ const onChangeCashback = (item) => setCashbacks((prev) => prev.map((_) => {
8633
+ if (_.id === item.id) {
8634
+ return item;
8635
+ }
8636
+ return _;
8637
+ }));
8638
+ const onDeleteCashback = (id) => setCashbacks((prev) => prev.filter((_) => _.id !== id));
8639
+ const onResetCashback = () => setCashbacks(DEFAULT_CASHBACK);
8640
+ return {
8641
+ cashbacks,
8642
+ categories,
8643
+ onAddNewCashback,
8644
+ onChangeCashback,
8645
+ onDeleteCashback,
8646
+ onResetCashback,
8647
+ };
8648
+ };
8649
+
8650
+ const INCREASED_PERCENTS = ['5', '10', '15'];
8651
+ const MAX_CATEGORIES = 5;
8652
+ const INFO_BLOCK_HTML = `<p>Полученные баллы можно конвертировать в рубли и компенсировать покупки у партнеров. Подробнее в <a href='#docs'>документах</a></p>`;
8653
+ const CashbackCalculator = JSX(({ maxInputRange = 300000, image, deleteImage, infoImage, isMultiple = false, className = '', ...rest }) => {
8654
+ const { cashbacks, categories, onAddNewCashback, onChangeCashback, onDeleteCashback, onResetCashback, } = useCashbackCalculator(isMultiple);
8655
+ const img = image?.src ? (jsx(Img, { image: image, className: "hidden w-full @xl:block", imageClassName: "justify-self-center" })) : null;
8656
+ return (jsxs(BlockWrapper, { className: style('flex flex-col justify-center items-center gap-lg', className), defaultPadding: style('p-6xl'), ...rest, children: [jsx(Headline, { title: "\u041A\u0430\u043B\u044C\u043A\u0443\u043B\u044F\u0442\u043E\u0440 \u043A\u0435\u0448\u0431\u044D\u043A\u0430", description: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 5 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0439 \u043A\u0435\u0448\u0431\u044D\u043A\u0430, \u0438 \u0432\u044B \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u0435 \u043E\u0431\u0449\u0438\u0439 \u0440\u0430\u0441\u0447\u0435\u0442 \u043F\u043E\u043B\u0443\u0447\u0430\u0435\u043C\u043E\u0433\u043E \u043A\u0435\u0448\u0431\u044D\u043A\u0430", headlineVersion: "XL", isEmbedded: true }), jsxs("div", { className: "flex flex-row items-start gap-lg", children: [jsxs("div", { className: "w-full flex flex-col justify-center items-center gap-lg", children: [cashbacks.map((_) => (jsx(CashbackCategory, { categories: categories, cashback: _, showIncreasedPercents: showIncreasedPercents(_, cashbacks), maxInputRange: maxInputRange, deleteImage: deleteImage, onDelete: onDeleteCashback, onChange: onChangeCashback }, String(_.id)))), renderButtons$1(cashbacks.length, onAddNewCashback, onResetCashback), jsx(CashbackCalculatorResult, { cashbacks: cashbacks }), jsx(InfoCard, { __html: INFO_BLOCK_HTML, image: infoImage }), jsx(LinkButton, { className: "w-full @lg:w-auto self-start", href: "#zayavka", text: "\u041E\u0444\u043E\u0440\u043C\u0438\u0442\u044C \u043A\u0430\u0440\u0442\u0443", version: "primary" })] }), img] })] }));
8657
+ });
8658
+ const renderButtons$1 = (cashbacksLength, onAddNewCashback, onResetCashback) => {
8659
+ return (jsxs("div", { className: "w-full flex flex-col gap-lg", children: [cashbacksLength < MAX_CATEGORIES ? (jsx(Button, { className: "self-start text-primary-main", embedded: true, version: "secondary", onClick: onAddNewCashback, children: "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0435\u0449\u0435" })) : null, cashbacksLength > 2 ? (jsx(Button, { className: "self-start", version: "secondary", onClick: onResetCashback, children: "\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438" })) : null] }));
8660
+ };
8661
+ const showIncreasedPercents = (currentCashback, cashback) => INCREASED_PERCENTS.includes(currentCashback.percent.key) ||
8662
+ !cashback.some((_) => INCREASED_PERCENTS.includes(_.percent.key));
8663
+
8496
8664
  const ProgressBar = JSX(({ step = 10, description, showPercentage = true }) => (jsxs("div", { children: [jsx("div", { className: "h-4 w-full bg-gray relative", children: jsx("div", { className: "h-4 bg-green", style: { width: `${step}%` } }) }), jsxs("div", { className: "relative", children: [showPercentage ? jsxs("div", { className: "absolute left-2/4 text-green", children: [step, "%"] }) : null, description ? jsx("div", { className: "text-right pr-m text-gray", children: description }) : null] })] })));
8497
8665
 
8498
8666
  const CreditCardFormProgress = JSX(({ step = 1, totalSteps = 6, stepsTitles = [] }) => {
@@ -12103,6 +12271,7 @@
12103
12271
  CreditCardForm,
12104
12272
  CreditForm,
12105
12273
  DebitForm,
12274
+ CashbackCalculator,
12106
12275
  };
12107
12276
 
12108
12277
  const applyAspects = (aspects) => (ev) => {
@@ -12226,7 +12395,7 @@
12226
12395
  slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
12227
12396
  });
12228
12397
 
12229
- const packageVersion = "0.14.933";
12398
+ const packageVersion = "0.14.935";
12230
12399
 
12231
12400
  exports.Blocks = Blocks;
12232
12401
  exports.ContentPage = ContentPage;