@redneckz/wildless-cms-uni-blocks 0.2.48 → 0.2.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/Blocks.d.ts +3 -1
- package/dist/Blocks.js +2 -0
- package/dist/Blocks.js.map +1 -1
- package/dist/Footer/Sitemap.js +6 -4
- package/dist/Footer/Sitemap.js.map +1 -1
- package/dist/ProductBlockInner.js +2 -1
- package/dist/ProductBlockInner.js.map +1 -1
- package/dist/ProductGallery.js +2 -2
- package/dist/ProductGallery.js.map +1 -1
- package/dist/ProductTile.d.ts +17 -0
- package/dist/ProductTile.js +27 -0
- package/dist/ProductTile.js.map +1 -0
- package/dist/StepsBlock.js +7 -3
- package/dist/StepsBlock.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/joinList.d.ts +1 -0
- package/dist/utils/joinList.js +7 -0
- package/dist/utils/joinList.js.map +1 -0
- package/lib/Blocks.d.ts +3 -1
- package/lib/Blocks.js +2 -0
- package/lib/Blocks.js.map +1 -1
- package/lib/Footer/Sitemap.js +6 -4
- package/lib/Footer/Sitemap.js.map +1 -1
- package/lib/ProductBlockInner.js +2 -1
- package/lib/ProductBlockInner.js.map +1 -1
- package/lib/ProductGallery.js +2 -2
- package/lib/ProductGallery.js.map +1 -1
- package/lib/ProductTile.d.ts +17 -0
- package/lib/ProductTile.js +25 -0
- package/lib/ProductTile.js.map +1 -0
- package/lib/StepsBlock.js +7 -3
- package/lib/StepsBlock.js.map +1 -1
- package/lib/common.css +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/utils/joinList.d.ts +1 -0
- package/lib/utils/joinList.js +4 -0
- package/lib/utils/joinList.js.map +1 -0
- package/package.json +1 -1
- package/src/Blocks.ts +3 -0
- package/src/ContentPage.page.json +140 -0
- package/src/Footer/Sitemap.tsx +7 -5
- package/src/ProductBlockInner.tsx +4 -3
- package/src/ProductGallery.tsx +3 -5
- package/src/ProductTile.fixture.tsx +147 -0
- package/src/ProductTile.tsx +95 -0
- package/src/StepsBlock.tsx +20 -6
- package/src/index.ts +1 -0
- package/src/utils/joinList.ts +7 -0
package/lib/common.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@import "../fonts/ubuntu/ubuntu.css";[data-theme=pc]{--color-primary-main:#42ab44;--color-primary-hover:#248341;--color-primary-active:#245f34;--color-secondary-hover:#c5e2c6;--color-secondary-active:#d8f2d9}[data-theme=bc]{--color-primary-main:#83b83e;--color-primary-hover:#5c921d;--color-primary-active:#3c5e10;--color-secondary-hover:#e8f4d9;--color-secondary-active:#d8e3ca}[data-theme=eo]{--color-primary-main:#ddb63d;--color-primary-hover:#bb9727;--color-primary-active:#7e630c;--color-secondary-hover:#f1ecdd;--color-secondary-active:#e5dec7}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.top-4{top:1rem}.right-4{right:1rem}.bottom-0{bottom:0}.right-0{right:0}.left-0{left:0}.-bottom-2{bottom:-.5rem}.top-0{top:0}.z-10{z-index:10}.col-span-12{grid-column:span 12/span 12}.col-span-8{grid-column:span 8/span 8}.col-span-4{grid-column:span 4/span 4}.col-span-6{grid-column:span 6/span 6}.m-0{margin:0}.-mx-20{margin-left:-5rem;margin-right:-5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mt-9{margin-top:2.25rem}.mt-2{margin-top:.5rem}.mb-5{margin-bottom:1.25rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.mb-6{margin-bottom:1.5rem}.mt-4{margin-top:1rem}.mt-7{margin-top:1.75rem}.mt-5{margin-top:1.25rem}.mt-auto{margin-top:auto}.mt-8{margin-top:2rem}.mt-6{margin-top:1.5rem}.mt-2\.5{margin-top:.625rem}.mb-4{margin-bottom:1rem}.mr-8{margin-right:2rem}.ml-auto{margin-left:auto}.mr-5{margin-right:1.25rem}.mr-7{margin-right:1.75rem}.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}.h-\[70px\]{height:70px}.h-8{height:2rem}.h-full{height:100%}.h-\[90px\]{height:90px}.h-4{height:1rem}.h-\[50px\]{height:50px}.h-\[3px\]{height:3px}.h-\[100px\]{height:100px}.h-\[220px\]{height:220px}.h-\[1px\]{height:1px}.h-\[8px\]{height:8px}.h-\[2px\]{height:2px}.h-\[24px\]{height:24px}.min-h-\[70px\]{min-height:70px}.min-h-\[50px\]{min-height:50px}.min-h-\[100px\]{min-height:100px}.min-h-\[32px\]{min-height:32px}.min-h-\[8px\]{min-height:8px}.w-\[70px\]{width:70px}.w-full{width:100%}.w-8{width:2rem}.w-\[125px\]{width:125px}.w-\[90px\]{width:90px}.w-\[50px\]{width:50px}.w-\[100px\]{width:100px}.w-\[220px\]{width:220px}.w-\[280px\]{width:280px}.w-\[235px\]{width:235px}.w-\[24px\]{width:24px}.w-\[8px\]{width:8px}.w-\[36px\]{width:36px}.w-10{width:2.5rem}.min-w-\[70px\]{min-width:70px}.min-w-\[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-\[47rem\]{max-width:47rem}.max-w-\[580px\]{max-width:580px}.max-w-\[600px\]{max-width:600px}.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-0{flex-grow:0}.grow{flex-grow:1}.basis-full{flex-basis:100%}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@-webkit-keyframes progress{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes progress{0%{transform:translateX(-100%)}to{transform:translateX(0)}}.animate-slide{-webkit-animation:progress linear;animation:progress linear}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,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-5{gap:1.25rem}.gap-1{gap:.25rem}.gap-3{gap:.75rem}.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}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.625rem*var(--tw-space-y-reverse));margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.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-l-full{border-bottom-left-radius:9999px;border-top-left-radius:9999px}.rounded-r-full{border-bottom-right-radius:9999px;border-top-right-radius:9999px}.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-t{border-top-width:1px}.border-r{border-right-width:1px}.border-solid{border-style:solid}.border-none{border-style:none}.border-main{--tw-border-opacity:1;border-color:rgb(240 244 240/var(--tw-border-opacity))}.border-main-divider{--tw-border-opacity:1;border-color:rgb(235 237 240/var(--tw-border-opacity))}.border-primary-main{border-color:var(--color-primary-main)}.border-transparent{border-color:transparent}.border-y-main-divider{--tw-border-opacity:1;border-bottom-color:rgb(235 237 240/var(--tw-border-opacity));border-top-color:rgb(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:rgb(240 244 240/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-secondary-light{--tw-bg-opacity:1;background-color:rgb(245 247 249/var(--tw-bg-opacity))}.bg-inherit{background-color:inherit}.bg-primary-main{background-color:var(--color-primary-main)}.bg-main-divider{--tw-bg-opacity:1;background-color:rgb(235 237 240/var(--tw-bg-opacity))}.bg-secondary-dark{--tw-bg-opacity:1;background-color:rgb(226 228 229/var(--tw-bg-opacity))}.p-12{padding:3rem}.p-10{padding:2.5rem}.p-20{padding:5rem}.p-2{padding:.5rem}.p-11{padding:2.75rem}.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-3{padding-left:.75rem;padding-right:.75rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-\[5px\]{padding-bottom:5px;padding-top:5px}.px-20{padding-left:5rem;padding-right:5rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.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}.pr-\[7\.5rem\]{padding-right:7.5rem}.pr-28{padding-right:7rem}.pt-\[3px\]{padding-top:3px}.pt-\[5px\]{padding-top:5px}.pt-5{padding-top:1.25rem}.pb-8{padding-bottom:2rem}.pl-4{padding-left:1rem}.pl-\[170px\]{padding-left:170px}.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-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-base{font-size:1rem;line-height:1.5rem}.text-xs{font-size:.75rem;line-height:1.125rem}.text-title-lg{font-size:2.5rem;line-height:3rem}.text-title-sm{font-size:1.75rem;line-height:2.5rem}.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:rgb(28 28 28/var(--tw-text-opacity))}.text-secondary-text{--tw-text-opacity:1;color:rgb(125 126 127/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-main{--tw-text-opacity:1;color:rgb(240 244 240/var(--tw-text-opacity))}.text-primary-main{color:var(--color-primary-main)}.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}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-1000{transition-duration:1s}.rotate-180{transform:rotate(180deg)}.-translate-x-full{transform:translateX(-100%)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:top-\[50px\]:after{content:var(--tw-content);top:50px}.after\:right-\[-50\%\]:after{content:var(--tw-content);right:-50%}.after\:h-0\.5:after{content:var(--tw-content);height:.125rem}.after\:h-0:after{content:var(--tw-content);height:0}.after\:w-full:after{content:var(--tw-content);width:100%}.after\:bg-secondary-light:after{--tw-bg-opacity:1;background-color:rgb(245 247 249/var(--tw-bg-opacity));content:var(--tw-content)}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.last\:after\:content-none:last-child:after{--tw-content:none;content:var(--tw-content)}.visited\:text-secondary-text:visited{color:#7d7e7f}.hover\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\:bg-secondary-hover:hover{background-color:var(--color-secondary-hover)}.hover\:text-primary-text:hover{--tw-text-opacity:1;color:rgb(28 28 28/var(--tw-text-opacity))}.hover\:text-primary-main:hover{color:var(--color-primary-main)}.hover\:text-secondary-hover:hover{color:var(--color-secondary-hover)}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.active\:bg-primary-active:active{background-color:var(--color-primary-active)}.active\:bg-secondary-active:active{background-color:var(--color-secondary-active)}.group:hover .group-hover\:text-primary-text{--tw-text-opacity:1;color:rgb(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:#42ab44;--color-primary-hover:#248341;--color-primary-active:#245f34;--color-secondary-hover:#c5e2c6;--color-secondary-active:#d8f2d9}[data-theme=bc]{--color-primary-main:#83b83e;--color-primary-hover:#5c921d;--color-primary-active:#3c5e10;--color-secondary-hover:#e8f4d9;--color-secondary-active:#d8e3ca}[data-theme=eo]{--color-primary-main:#ddb63d;--color-primary-hover:#bb9727;--color-primary-active:#7e630c;--color-secondary-hover:#f1ecdd;--color-secondary-active:#e5dec7}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.top-4{top:1rem}.right-4{right:1rem}.bottom-0{bottom:0}.right-0{right:0}.left-0{left:0}.-bottom-2{bottom:-.5rem}.top-0{top:0}.z-10{z-index:10}.col-span-12{grid-column:span 12/span 12}.col-span-8{grid-column:span 8/span 8}.col-span-4{grid-column:span 4/span 4}.col-span-6{grid-column:span 6/span 6}.m-0{margin:0}.-mx-20{margin-left:-5rem;margin-right:-5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mt-9{margin-top:2.25rem}.mt-2{margin-top:.5rem}.mb-5{margin-bottom:1.25rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.mb-6{margin-bottom:1.5rem}.mt-4{margin-top:1rem}.mt-7{margin-top:1.75rem}.mt-5{margin-top:1.25rem}.mb-2{margin-bottom:.5rem}.mt-auto{margin-top:auto}.mt-8{margin-top:2rem}.mr-8{margin-right:2rem}.mb-4{margin-bottom:1rem}.mb-2\.5{margin-bottom:.625rem}.mt-6{margin-top:1.5rem}.mt-2\.5{margin-top:.625rem}.ml-auto{margin-left:auto}.mr-5{margin-right:1.25rem}.mr-7{margin-right:1.75rem}.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}.h-\[70px\]{height:70px}.h-8{height:2rem}.h-full{height:100%}.h-\[90px\]{height:90px}.h-4{height:1rem}.h-\[50px\]{height:50px}.h-\[3px\]{height:3px}.h-\[220px\]{height:220px}.h-0\.5{height:.125rem}.h-0{height:0}.h-\[100px\]{height:100px}.h-\[1px\]{height:1px}.h-\[8px\]{height:8px}.h-\[2px\]{height:2px}.h-\[24px\]{height:24px}.min-h-\[70px\]{min-height:70px}.min-h-\[50px\]{min-height:50px}.min-h-\[100px\]{min-height:100px}.min-h-\[32px\]{min-height:32px}.min-h-\[8px\]{min-height:8px}.w-\[70px\]{width:70px}.w-full{width:100%}.w-8{width:2rem}.w-\[125px\]{width:125px}.w-\[90px\]{width:90px}.w-\[50px\]{width:50px}.w-\[220px\]{width:220px}.w-\[100px\]{width:100px}.w-\[276px\]{width:276px}.w-\[280px\]{width:280px}.w-\[235px\]{width:235px}.w-\[24px\]{width:24px}.w-\[8px\]{width:8px}.w-\[36px\]{width:36px}.w-10{width:2.5rem}.min-w-\[70px\]{min-width:70px}.min-w-\[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-\[47rem\]{max-width:47rem}.max-w-\[580px\]{max-width:580px}.max-w-\[600px\]{max-width:600px}.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}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow-0{flex-grow:0}.grow{flex-grow:1}.basis-full{flex-basis:100%}.basis-0{flex-basis:0px}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@-webkit-keyframes progress{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes progress{0%{transform:translateX(-100%)}to{transform:translateX(0)}}.animate-slide{-webkit-animation:progress linear;animation:progress linear}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-5{gap:1.25rem}.gap-1{gap:.25rem}.gap-3{gap:.75rem}.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-l-full{border-bottom-left-radius:9999px;border-top-left-radius:9999px}.rounded-r-full{border-bottom-right-radius:9999px;border-top-right-radius:9999px}.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-t{border-top-width:1px}.border-r{border-right-width:1px}.border-solid{border-style:solid}.border-none{border-style:none}.border-main{--tw-border-opacity:1;border-color:rgb(240 244 240/var(--tw-border-opacity))}.border-main-divider{--tw-border-opacity:1;border-color:rgb(235 237 240/var(--tw-border-opacity))}.border-primary-main{border-color:var(--color-primary-main)}.border-transparent{border-color:transparent}.border-y-main-divider{--tw-border-opacity:1;border-bottom-color:rgb(235 237 240/var(--tw-border-opacity));border-top-color:rgb(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:rgb(240 244 240/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-secondary-light{--tw-bg-opacity:1;background-color:rgb(245 247 249/var(--tw-bg-opacity))}.bg-inherit{background-color:inherit}.bg-primary-main{background-color:var(--color-primary-main)}.bg-main-divider{--tw-bg-opacity:1;background-color:rgb(235 237 240/var(--tw-bg-opacity))}.bg-secondary-dark{--tw-bg-opacity:1;background-color:rgb(226 228 229/var(--tw-bg-opacity))}.p-12{padding:3rem}.p-10{padding:2.5rem}.p-20{padding:5rem}.p-2{padding:.5rem}.p-11{padding:2.75rem}.p-\[10px\]{padding:10px}.p-9{padding:2.25rem}.p-\[26px\]{padding:26px}.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-2{padding-bottom:.5rem;padding-top:.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-\[5px\]{padding-bottom:5px;padding-top:5px}.px-20{padding-left:5rem;padding-right:5rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.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}.pr-\[7\.5rem\]{padding-right:7.5rem}.pt-1{padding-top:.25rem}.pr-28{padding-right:7rem}.pt-\[3px\]{padding-top:3px}.pt-\[5px\]{padding-top:5px}.pt-5{padding-top:1.25rem}.pb-8{padding-bottom:2rem}.pl-4{padding-left:1rem}.pl-\[170px\]{padding-left:170px}.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-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-base{font-size:1rem;line-height:1.5rem}.text-xs{font-size:.75rem;line-height:1.125rem}.text-title-lg{font-size:2.5rem;line-height:3rem}.text-title-sm{font-size:1.75rem;line-height:2.5rem}.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:rgb(28 28 28/var(--tw-text-opacity))}.text-secondary-text{--tw-text-opacity:1;color:rgb(125 126 127/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-main{--tw-text-opacity:1;color:rgb(240 244 240/var(--tw-text-opacity))}.text-primary-main{color:var(--color-primary-main)}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.no-underline{-webkit-text-decoration-line:none;text-decoration-line:none}.shadow-\[0_8px_32px_0px_\#00000014\]{--tw-shadow:0 8px 32px 0px #00000014;--tw-shadow-colored:0 8px 32px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.duration-1000{transition-duration:1s}.rotate-180{transform:rotate(180deg)}.-translate-x-full{transform:translateX(-100%)}.visited\:text-secondary-text:visited{color:#7d7e7f}.hover\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\:bg-secondary-hover:hover{background-color:var(--color-secondary-hover)}.hover\:text-primary-text:hover{--tw-text-opacity:1;color:rgb(28 28 28/var(--tw-text-opacity))}.hover\:text-primary-main:hover{color:var(--color-primary-main)}.hover\:text-secondary-hover:hover{color:var(--color-secondary-hover)}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.active\:bg-primary-active:active{background-color:var(--color-primary-active)}.active\:bg-secondary-active:active{background-color:var(--color-secondary-active)}.group:hover .group-hover\:text-primary-text{--tw-text-opacity:1;color:rgb(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}}
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAWpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAWpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function joinList<E>(sep: E): (list: E[]) => E[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"joinList.js","sourceRoot":"","sources":["../../src/utils/joinList.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAI,GAAM;IAChC,OAAO,CAAC,IAAI,EAAE,EAAE,CACd,IAAI,CAAC,MAAM,CACT,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EACxE,EAAS,CACV,CAAC;AACN,CAAC"}
|
package/package.json
CHANGED
package/src/Blocks.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { ProductBlock } from './ProductBlock';
|
|
|
8
8
|
import { ProductBlockInnerContent } from './ProductBlockInner';
|
|
9
9
|
import { ProductGallery, ProductGalleryContent } from './ProductGallery';
|
|
10
10
|
import { StepsBlock, StepsBlockContent } from './StepsBlock';
|
|
11
|
+
import { ProductTile, ProductTileContent } from './ProductTile';
|
|
11
12
|
import { Tile, TileContent } from './Tile';
|
|
12
13
|
|
|
13
14
|
export const Blocks = {
|
|
@@ -15,6 +16,7 @@ export const Blocks = {
|
|
|
15
16
|
Footer,
|
|
16
17
|
Placeholder,
|
|
17
18
|
Tile,
|
|
19
|
+
ProductTile,
|
|
18
20
|
ProductBlock,
|
|
19
21
|
StepsBlock,
|
|
20
22
|
BenefitsBlock,
|
|
@@ -28,6 +30,7 @@ export type BlockContent =
|
|
|
28
30
|
| FooterContent
|
|
29
31
|
| PlaceholderContent
|
|
30
32
|
| TileContent
|
|
33
|
+
| ProductTileContent
|
|
31
34
|
| ProductBlockInnerContent
|
|
32
35
|
| StepsBlockContent
|
|
33
36
|
| BenefitsBlockContent
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"src": "money-1.png",
|
|
61
61
|
"title": "деньги",
|
|
62
62
|
"format": "webp",
|
|
63
|
+
"alt": "Кредит наличными",
|
|
63
64
|
"size": {
|
|
64
65
|
"width": 220,
|
|
65
66
|
"height": 220
|
|
@@ -353,6 +354,145 @@
|
|
|
353
354
|
"title": "Неизвестный блок"
|
|
354
355
|
}
|
|
355
356
|
},
|
|
357
|
+
{
|
|
358
|
+
"type": "ProductTile",
|
|
359
|
+
"style": ["col-span-6"],
|
|
360
|
+
"content": {
|
|
361
|
+
"title": "Акция! “Кредит На все, что хочется!”",
|
|
362
|
+
"description": "Потребительский кредит на любые цели, без залога и поручительства",
|
|
363
|
+
"benefits": [
|
|
364
|
+
{
|
|
365
|
+
"label": "Кредитный лимит",
|
|
366
|
+
"description": "до 5 млн Р"
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
"label": "Процентная ставка",
|
|
370
|
+
"description": "от 12,5%"
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
"label": "Срок кредитования",
|
|
374
|
+
"description": "до 5 лет"
|
|
375
|
+
}
|
|
376
|
+
],
|
|
377
|
+
"button": {
|
|
378
|
+
"text": "Подробнее",
|
|
379
|
+
"href": "/credit-cards",
|
|
380
|
+
"version": "secondary"
|
|
381
|
+
},
|
|
382
|
+
"image": {
|
|
383
|
+
"src": "card-with-diamond.png",
|
|
384
|
+
"alt": "Кредиты в РСХБ",
|
|
385
|
+
"format": "webp",
|
|
386
|
+
"size": {
|
|
387
|
+
"width": 220,
|
|
388
|
+
"height": 220
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"type": "ProductTile",
|
|
395
|
+
"style": ["col-span-6"],
|
|
396
|
+
"content": {
|
|
397
|
+
"title": "Акция! “Пенсионный кредит”",
|
|
398
|
+
"description": "Потребительский кредит на любые цели, без залога и поручительства",
|
|
399
|
+
"benefits": [
|
|
400
|
+
{
|
|
401
|
+
"label": "Кредитный лимит",
|
|
402
|
+
"description": "до 3 млн Р"
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"label": "Процентная ставка",
|
|
406
|
+
"description": "от 12,5%"
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
"label": "Срок кредитования",
|
|
410
|
+
"description": "до 3 лет"
|
|
411
|
+
}
|
|
412
|
+
],
|
|
413
|
+
"button": {
|
|
414
|
+
"text": "Подробнее",
|
|
415
|
+
"href": "/credit-cards",
|
|
416
|
+
"target": "_blank",
|
|
417
|
+
"version": "secondary"
|
|
418
|
+
},
|
|
419
|
+
"image": {
|
|
420
|
+
"src": "letter-with-money.png",
|
|
421
|
+
"alt": "Пенсионный кредит в РСХБ",
|
|
422
|
+
"format": "webp",
|
|
423
|
+
"size": {
|
|
424
|
+
"width": 220,
|
|
425
|
+
"height": 220
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
"type": "ProductTile",
|
|
432
|
+
"style": ["col-span-8"],
|
|
433
|
+
"content": {
|
|
434
|
+
"title": "Кредит под залог недвижимости",
|
|
435
|
+
"description": "Без переоформления залогой недвижимости на банк",
|
|
436
|
+
"benefits": [
|
|
437
|
+
{
|
|
438
|
+
"label": "Кредитный лимит",
|
|
439
|
+
"description": "до 10 млн Р"
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"label": "Процентная ставка",
|
|
443
|
+
"description": "от 21,5%"
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"label": "Срок кредитования",
|
|
447
|
+
"description": "до 10 лет"
|
|
448
|
+
}
|
|
449
|
+
],
|
|
450
|
+
"button": {
|
|
451
|
+
"text": "Подробнее",
|
|
452
|
+
"href": "/credit-cards",
|
|
453
|
+
"target": "_blank",
|
|
454
|
+
"version": "secondary"
|
|
455
|
+
},
|
|
456
|
+
"image": {
|
|
457
|
+
"src": "building.png",
|
|
458
|
+
"alt": "Кредит под залог недвижимости в РСХБ",
|
|
459
|
+
"format": "webp",
|
|
460
|
+
"size": {
|
|
461
|
+
"width": 220,
|
|
462
|
+
"height": 220
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
"type": "ProductTile",
|
|
469
|
+
"style": ["col-span-4"],
|
|
470
|
+
"version": "secondary",
|
|
471
|
+
"content": {
|
|
472
|
+
"title": "Кредит пенсионный",
|
|
473
|
+
"description": "Для людей в возрасте до 75 лет",
|
|
474
|
+
"benefits": [
|
|
475
|
+
{
|
|
476
|
+
"label": "Кредитный лимит",
|
|
477
|
+
"description": "до 3 млн Р"
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
"label": "Процентная ставка",
|
|
481
|
+
"description": "от 16,8%"
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
"label": "Срок кредитования",
|
|
485
|
+
"description": "до 150 лет"
|
|
486
|
+
}
|
|
487
|
+
],
|
|
488
|
+
"button": {
|
|
489
|
+
"text": "Подробнее",
|
|
490
|
+
"href": "/credit-cards",
|
|
491
|
+
"target": "_blank",
|
|
492
|
+
"version": "secondary"
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
},
|
|
356
496
|
{
|
|
357
497
|
"type": "Footer",
|
|
358
498
|
"style": ["col-span-12"],
|
package/src/Footer/Sitemap.tsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import {
|
|
2
|
+
import { Router, HandlerDecorator } from '../ContentPageContext';
|
|
3
3
|
import { mergeTopItems } from '../mergeTopItems';
|
|
4
4
|
import type { LinkContent, TopMenuItem, UniBlockProps } from '../types';
|
|
5
5
|
import { useLink } from '../useLink';
|
|
@@ -11,17 +11,19 @@ export interface SitemapProps extends UniBlockProps {
|
|
|
11
11
|
export const Sitemap = JSX<SitemapProps>(({ className, items, context }) => {
|
|
12
12
|
const sitemap = useSitemap(context.useAsyncData);
|
|
13
13
|
const mergedItems = mergeTopItems(sitemap.topItems, items);
|
|
14
|
+
const linkParams = {
|
|
15
|
+
router: context.useRouter(),
|
|
16
|
+
handlerDecorator: context.handlerDecorator,
|
|
17
|
+
};
|
|
14
18
|
|
|
15
19
|
return (
|
|
16
20
|
<div className={`flex items-start justify-start gap-11 xl:gap-5 ${className || ''}`}>
|
|
17
|
-
{mergedItems?.map((_, i) => renderColumn(_, i,
|
|
21
|
+
{mergedItems?.map((_, i) => renderColumn(_, i, linkParams))}
|
|
18
22
|
</div>
|
|
19
23
|
);
|
|
20
24
|
});
|
|
21
25
|
|
|
22
|
-
const renderColumn = (c: TopMenuItem, index: number,
|
|
23
|
-
const router = context.useRouter();
|
|
24
|
-
const { handlerDecorator } = context;
|
|
26
|
+
const renderColumn = (c: TopMenuItem, index: number, { router, handlerDecorator }) => {
|
|
25
27
|
const { text, href, items, target } = c;
|
|
26
28
|
|
|
27
29
|
return (
|
|
@@ -7,6 +7,7 @@ import type { ButtonProps } from './ui-kit/Button';
|
|
|
7
7
|
import { Button } from './ui-kit/Button';
|
|
8
8
|
import { Breadcrumb, BreadcrumbProps } from './ui-kit/Breadcrumb';
|
|
9
9
|
import { useLink } from './useLink';
|
|
10
|
+
import { joinList } from './utils/joinList';
|
|
10
11
|
|
|
11
12
|
const ICONS = { EmptyWalletIcon, PercentageSquareIcon, CalendarIcon };
|
|
12
13
|
|
|
@@ -32,7 +33,7 @@ export const ProductBlockInner = JSX<ProductBlockInnerProps>(
|
|
|
32
33
|
<div className="flex flex-col">
|
|
33
34
|
{breadcrumbs?.length ? (
|
|
34
35
|
<div className="text-xs mb-6">
|
|
35
|
-
{
|
|
36
|
+
{joinList(<span className="text-secondary-text mx-2">/</span>)(
|
|
36
37
|
breadcrumbs.map((breadcrumb, i) => (
|
|
37
38
|
<Breadcrumb
|
|
38
39
|
key={String(i)}
|
|
@@ -57,9 +58,9 @@ export const ProductBlockInner = JSX<ProductBlockInnerProps>(
|
|
|
57
58
|
<div className="flex gap-6 mt-7">{benefits.map(renderBenefit)}</div>
|
|
58
59
|
) : null}
|
|
59
60
|
{items?.length ? (
|
|
60
|
-
<section className="
|
|
61
|
+
<section className="mt-5" role="list">
|
|
61
62
|
{items.map((_, i) => (
|
|
62
|
-
<BlockItem key={String(i)} text={_} />
|
|
63
|
+
<BlockItem className="mb-2" key={String(i)} text={_} />
|
|
63
64
|
))}
|
|
64
65
|
</section>
|
|
65
66
|
) : null}
|
package/src/ProductGallery.tsx
CHANGED
|
@@ -29,16 +29,14 @@ export const ProductGallery = JSX<ProductGalleryProps>(
|
|
|
29
29
|
return (
|
|
30
30
|
<section className={`font-sans bg-white overflow-hidden w-100 ${className || ''}`}>
|
|
31
31
|
<div
|
|
32
|
-
className={`flex
|
|
32
|
+
className={`flex duration-1000`}
|
|
33
33
|
style={{ transform: `translateX(-${activeSlideIndex}00%)` }}
|
|
34
34
|
role="list"
|
|
35
35
|
>
|
|
36
36
|
{galleryBlocks.map((_, i) => renderProductBlock(_, i, context))}
|
|
37
37
|
</div>
|
|
38
38
|
|
|
39
|
-
<div
|
|
40
|
-
className={`border-0 border-t border-solid border-main-divider grid grid-cols-${galleryNav.length}`}
|
|
41
|
-
>
|
|
39
|
+
<div className={`border-t border-solid border-main-divider flex`}>
|
|
42
40
|
{galleryNav.map((slide, i) =>
|
|
43
41
|
renderNavButton({
|
|
44
42
|
slide,
|
|
@@ -73,7 +71,7 @@ function renderNavButton({ slide, i, activeSlideIndex, onClick, duration }) {
|
|
|
73
71
|
type="button"
|
|
74
72
|
key={String(i)}
|
|
75
73
|
onClick={onClick}
|
|
76
|
-
className={`group relative overflow-hidden border-0 bg-inherit cursor-pointer text-left px-0 py-4`}
|
|
74
|
+
className={`group relative overflow-hidden border-0 bg-inherit cursor-pointer text-left px-0 py-4 grow basis-0`}
|
|
77
75
|
>
|
|
78
76
|
<div className="border-0 border-r border-solid border-main-divider px-6">
|
|
79
77
|
<div className={`text-sm font-medium group-hover:text-primary-text ${btnTitleClassName}`}>
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { context } from './setup-fixture';
|
|
2
|
+
|
|
3
|
+
import { ProductTile } from './ProductTile';
|
|
4
|
+
import { Picture } from './types';
|
|
5
|
+
|
|
6
|
+
const cardWithMoney: Picture = {
|
|
7
|
+
src: 'card-with-diamond.png',
|
|
8
|
+
alt: 'Кредиты в РСХБ',
|
|
9
|
+
format: 'webp',
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const letterWithMoney: Picture = {
|
|
13
|
+
src: 'letter-with-money.png',
|
|
14
|
+
alt: 'Пенсионный кредит в РСХБ',
|
|
15
|
+
format: 'webp',
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const building: Picture = {
|
|
19
|
+
src: 'building.png',
|
|
20
|
+
alt: 'Кредит под залог недвижимости в РСХБ',
|
|
21
|
+
format: 'webp',
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default {
|
|
25
|
+
credit: (
|
|
26
|
+
<div className="grid grid-cols-12">
|
|
27
|
+
<ProductTile
|
|
28
|
+
context={context}
|
|
29
|
+
className="col-span-6"
|
|
30
|
+
title="Акция! “Кредит На все, что хочется!”"
|
|
31
|
+
description="Потребительский кредит на любые цели, без залога и поручительства"
|
|
32
|
+
benefits={[
|
|
33
|
+
{
|
|
34
|
+
label: 'Кредитный лимит',
|
|
35
|
+
description: 'до 5 млн Р',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
label: 'Процентная ставка',
|
|
39
|
+
description: 'от 12,5%',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
label: 'Срок кредитования',
|
|
43
|
+
description: 'до 5 лет',
|
|
44
|
+
},
|
|
45
|
+
]}
|
|
46
|
+
button={{
|
|
47
|
+
text: 'Подробнее',
|
|
48
|
+
href: '/credit-cards',
|
|
49
|
+
version: 'secondary',
|
|
50
|
+
}}
|
|
51
|
+
image={cardWithMoney}
|
|
52
|
+
/>
|
|
53
|
+
</div>
|
|
54
|
+
),
|
|
55
|
+
pension: (
|
|
56
|
+
<div className="grid grid-cols-12">
|
|
57
|
+
<ProductTile
|
|
58
|
+
context={context}
|
|
59
|
+
className="col-span-6"
|
|
60
|
+
title="Акция! “Пенсионный кредит”"
|
|
61
|
+
description={'Потребительский кредит на любые цели, без залога и поручительства'}
|
|
62
|
+
benefits={[
|
|
63
|
+
{
|
|
64
|
+
label: 'Кредитный лимит',
|
|
65
|
+
description: 'до 3 млн Р',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
label: 'Процентная ставка',
|
|
69
|
+
description: 'от 12,5%',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
label: 'Срок кредитования',
|
|
73
|
+
description: 'до 3 лет',
|
|
74
|
+
},
|
|
75
|
+
]}
|
|
76
|
+
button={{
|
|
77
|
+
href: 'https://rshb.ru',
|
|
78
|
+
text: 'Подробнее',
|
|
79
|
+
target: '_blank',
|
|
80
|
+
version: 'secondary',
|
|
81
|
+
}}
|
|
82
|
+
image={letterWithMoney}
|
|
83
|
+
/>
|
|
84
|
+
</div>
|
|
85
|
+
),
|
|
86
|
+
'credit-card': (
|
|
87
|
+
<div className="grid grid-cols-12">
|
|
88
|
+
<ProductTile
|
|
89
|
+
context={context}
|
|
90
|
+
className="col-span-8"
|
|
91
|
+
title="Кредит под залог недвижимости"
|
|
92
|
+
description={'Без переоформления залогой недвижимости на банк'}
|
|
93
|
+
benefits={[
|
|
94
|
+
{
|
|
95
|
+
label: 'Кредитный лимит',
|
|
96
|
+
description: 'до 10 млн Р',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
label: 'Процентная ставка',
|
|
100
|
+
description: 'от 21,5%',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
label: 'Срок кредитования',
|
|
104
|
+
description: 'до 10 лет',
|
|
105
|
+
},
|
|
106
|
+
]}
|
|
107
|
+
button={{
|
|
108
|
+
href: 'https://rshb.ru',
|
|
109
|
+
text: 'Подробнее',
|
|
110
|
+
target: '_blank',
|
|
111
|
+
version: 'secondary',
|
|
112
|
+
}}
|
|
113
|
+
image={building}
|
|
114
|
+
/>
|
|
115
|
+
</div>
|
|
116
|
+
),
|
|
117
|
+
'pension-credit': (
|
|
118
|
+
<div className="grid grid-cols-12">
|
|
119
|
+
<ProductTile
|
|
120
|
+
context={context}
|
|
121
|
+
className="col-span-4"
|
|
122
|
+
title="Кредит пенсионный"
|
|
123
|
+
description={'Для людей в возрасте до 75 лет'}
|
|
124
|
+
benefits={[
|
|
125
|
+
{
|
|
126
|
+
label: 'Кредитный лимит',
|
|
127
|
+
description: 'до 3 млн Р',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
label: 'Процентная ставка',
|
|
131
|
+
description: 'от 16,8%',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
label: 'Срок кредитования',
|
|
135
|
+
description: 'до 5 лет',
|
|
136
|
+
},
|
|
137
|
+
]}
|
|
138
|
+
button={{
|
|
139
|
+
href: 'https://rshb.ru',
|
|
140
|
+
text: 'Подробнее',
|
|
141
|
+
target: '_blank',
|
|
142
|
+
version: 'secondary',
|
|
143
|
+
}}
|
|
144
|
+
/>
|
|
145
|
+
</div>
|
|
146
|
+
),
|
|
147
|
+
};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import type { ContentPageContext } from './ContentPageContext';
|
|
3
|
+
import { Img } from './Img';
|
|
4
|
+
import { BlockVersion, Picture } from './types';
|
|
5
|
+
import type { ButtonProps } from './ui-kit/Button';
|
|
6
|
+
import { Button } from './ui-kit/Button';
|
|
7
|
+
import { useLink } from './useLink';
|
|
8
|
+
import type { Benefit } from './types';
|
|
9
|
+
|
|
10
|
+
export interface ProductTileContent {
|
|
11
|
+
title?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
benefits?: Benefit[];
|
|
14
|
+
image?: Picture;
|
|
15
|
+
button?: ButtonProps;
|
|
16
|
+
version?: BlockVersion;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface ProductTileProps extends ProductTileContent {
|
|
20
|
+
className?: string;
|
|
21
|
+
context: ContentPageContext;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const productTileStyleMap: Record<BlockVersion, string> = {
|
|
25
|
+
primary: 'bg-white text-primary-text',
|
|
26
|
+
secondary: 'bg-primary-main text-white',
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export const ProductTile = JSX<ProductTileProps>(
|
|
30
|
+
({ className, context, title, description, button, image, benefits, version = 'primary' }) => {
|
|
31
|
+
const router = context.useRouter();
|
|
32
|
+
const { handlerDecorator } = context;
|
|
33
|
+
return (
|
|
34
|
+
<section className={`font-sans p-9 ${className || ''} ${productTileStyleMap[version]}`}>
|
|
35
|
+
<div className="flex flex-col w-full">
|
|
36
|
+
{title && (
|
|
37
|
+
<h3 className="font-medium text-title-sm m-0 whitespace-pre-wrap max-w-[600px]">
|
|
38
|
+
{title}
|
|
39
|
+
</h3>
|
|
40
|
+
)}
|
|
41
|
+
{description && (
|
|
42
|
+
<div className="font-normal text-base max-w-[600px] mt-4">{description}</div>
|
|
43
|
+
)}
|
|
44
|
+
<div className="flex mt-5">
|
|
45
|
+
<div className="grow flex flex-col">
|
|
46
|
+
<div className="flex">
|
|
47
|
+
{benefits?.length ? (
|
|
48
|
+
<div className="mr-8">{benefits.map(renderBenefitDescription)}</div>
|
|
49
|
+
) : null}
|
|
50
|
+
{benefits?.length ? (
|
|
51
|
+
<div className="pt-1">
|
|
52
|
+
{benefits.map((_, i) => renderBenefitLabel(_, i, version))}
|
|
53
|
+
</div>
|
|
54
|
+
) : null}
|
|
55
|
+
</div>
|
|
56
|
+
{button?.text && (
|
|
57
|
+
<div className="mt-auto">
|
|
58
|
+
<Button
|
|
59
|
+
className="mt-8"
|
|
60
|
+
{...useLink({ router, handlerDecorator }, button)}
|
|
61
|
+
version="secondary"
|
|
62
|
+
/>
|
|
63
|
+
</div>
|
|
64
|
+
)}
|
|
65
|
+
</div>
|
|
66
|
+
{image && (
|
|
67
|
+
<div className="mt-auto flex-none h-[220px] w-[220px]">
|
|
68
|
+
<Img image={image} />
|
|
69
|
+
</div>
|
|
70
|
+
)}
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
</section>
|
|
74
|
+
);
|
|
75
|
+
},
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
function renderBenefitLabel(benefit: Benefit, i: number, version = 'primary') {
|
|
79
|
+
const labelStyleMap: Record<BlockVersion, string> = {
|
|
80
|
+
primary: 'text-secondary-text',
|
|
81
|
+
secondary: 'text-white',
|
|
82
|
+
};
|
|
83
|
+
return (
|
|
84
|
+
<div key={String(i)} className={`text-sm mb-4 ${labelStyleMap[version]}`}>
|
|
85
|
+
{benefit.label}
|
|
86
|
+
</div>
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
function renderBenefitDescription(benefit: Benefit, i: number) {
|
|
90
|
+
return (
|
|
91
|
+
<div key={String(i)} className="text-xl font-medium mb-2.5">
|
|
92
|
+
{benefit.description}
|
|
93
|
+
</div>
|
|
94
|
+
);
|
|
95
|
+
}
|
package/src/StepsBlock.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
2
|
import { NewDocIcon, PassSendIcon, ActualBalanceIcon } from './Icons/index';
|
|
3
3
|
import type { UniBlockProps } from './types';
|
|
4
|
+
import { joinList } from './utils/joinList';
|
|
4
5
|
|
|
5
6
|
const ICONS = { NewDocIcon, PassSendIcon, ActualBalanceIcon };
|
|
6
7
|
export interface Step {
|
|
@@ -24,22 +25,35 @@ export const StepsBlock = JSX<StepsBlockProps>(({ className, title, steps }) =>
|
|
|
24
25
|
}`}
|
|
25
26
|
>
|
|
26
27
|
<h2 className="font-medium text-title m-0 max-w-[47rem] text-center">{title}</h2>
|
|
27
|
-
{steps?.length ?
|
|
28
|
+
{steps?.length ? (
|
|
29
|
+
<div>
|
|
30
|
+
<div className="flex mt-9 items-center px-[88px]">
|
|
31
|
+
{joinList(<div className="h-0.5 w-full bg-secondary-light"></div>)(
|
|
32
|
+
steps.map((step, i) => renderStepIcon(step, i)),
|
|
33
|
+
)}
|
|
34
|
+
</div>
|
|
35
|
+
<div className="flex mt-9 justify-between gap-x-24">{steps.map(renderStepTitle)}</div>
|
|
36
|
+
</div>
|
|
37
|
+
) : null}
|
|
28
38
|
</section>
|
|
29
39
|
);
|
|
30
40
|
});
|
|
31
41
|
|
|
32
|
-
const
|
|
42
|
+
const renderStepIcon = (step: Step, i: number) => {
|
|
33
43
|
return (
|
|
34
|
-
<div
|
|
35
|
-
key={String(i)}
|
|
36
|
-
className="flex flex-col items-center text-center px-12 relative after:content-[''] last:after:content-none after:bg-secondary-light after:absolute after:top-[50px] after:h-0.5 after:w-full after:right-[-50%]"
|
|
37
|
-
>
|
|
44
|
+
<div key={String(i)} className="flex flex-col items-center text-center relative">
|
|
38
45
|
<div className="h-[100px] w-[100px] min-w-[100px] min-h-[100px] bg-secondary-light rounded-full p-[26px] box-border z-10">
|
|
39
46
|
{(step.icon && ICONS[step.icon]?.({ width: 48, height: 48 })) || (
|
|
40
47
|
<span className="font-medium text-title-sm text-secondary-text">{i + 1}</span>
|
|
41
48
|
)}
|
|
42
49
|
</div>
|
|
50
|
+
</div>
|
|
51
|
+
);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const renderStepTitle = (step: Step, i: number) => {
|
|
55
|
+
return (
|
|
56
|
+
<div key={String(i)} className="flex flex-col items-center text-center relative w-[276px]">
|
|
43
57
|
<div className="max-w-min">
|
|
44
58
|
<h5 className="font-medium text-xl m-0 mt-4 whitespace-nowrap px-3">{step.label}</h5>
|
|
45
59
|
{step.description && (
|
package/src/index.ts
CHANGED