Compare commits
19 Commits
master
...
features/l
Author | SHA1 | Date |
---|---|---|
|
2c7d2e7738 | |
|
3850c55b44 | |
|
a38141d5a0 | |
|
e7d5a3b8a7 | |
|
80a8defbe8 | |
|
6de7de2676 | |
|
3421906e88 | |
|
e555a7a6cc | |
|
7acd26ac1a | |
|
378ed477ab | |
|
2da5a6928d | |
|
8606c6a0b2 | |
|
f80b66622d | |
|
41abc230f2 | |
|
8d29f74018 | |
|
9e399f17c4 | |
|
f2e132fb80 | |
|
c87f2cec45 | |
|
f11e7e95c9 |
|
@ -0,0 +1,7 @@
|
|||
services:
|
||||
client:
|
||||
image: 80.249.144.200:5000/relynolli_client:latest-amd
|
||||
platform: linux/amd64
|
||||
build: .
|
||||
ports:
|
||||
- "3000:3000"
|
|
@ -24,10 +24,10 @@
|
|||
"lodash": "^4.17.21",
|
||||
"mysql2": "^3.9.1",
|
||||
"nanoid": "^5.0.5",
|
||||
"next": "14.1.0",
|
||||
"next": "^14.2.2",
|
||||
"next-sitemap": "^4.2.3",
|
||||
"react": "^18",
|
||||
"react-dom": "^18",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-hook-form": "^7.50.1",
|
||||
"react-image": "^4.1.0",
|
||||
"react-imask": "^7.5.0",
|
||||
|
|
|
@ -8,3 +8,4 @@
|
|||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
||||
|
|
Before Width: | Height: | Size: 421 B After Width: | Height: | Size: 422 B |
After Width: | Height: | Size: 727 KiB |
|
@ -0,0 +1,4 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M8.35921 13.9603L12.3286 7.08507C12.6274 6.58588 13.1105 6.22418 13.6737 6.07804C14.2368 5.93191 14.8349 6.01304 15.3387 6.30394C15.8426 6.59484 16.2118 7.07218 16.3669 7.63295C16.5219 8.19373 16.4502 8.79296 16.1673 9.30135L10.9598 18.3353C10.7164 18.769 10.3894 19.15 9.99767 19.4562C9.60595 19.7625 9.15732 19.988 8.6778 20.1196C8.19828 20.2512 7.69741 20.2863 7.20422 20.2229C6.71103 20.1595 6.23533 19.9989 5.8047 19.7502C5.37406 19.5016 4.99707 19.17 4.69556 18.7746C4.39405 18.3791 4.17402 17.9278 4.04824 17.4467C3.92246 16.9657 3.89342 16.4644 3.96281 15.972C4.0322 15.4796 4.19863 15.0059 4.45246 14.5783L9.70129 5.4871C10.4124 4.29553 11.5639 3.43167 12.9068 3.08223C14.2497 2.73279 15.6762 2.92585 16.8779 3.61966C18.0797 4.31348 18.9601 5.45233 19.3289 6.79005C19.6978 8.12777 19.5254 9.55691 18.849 10.7685L13.9442 19.264"
|
||||
stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.0 KiB |
|
@ -0,0 +1,8 @@
|
|||
<svg width="23" height="23" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M19.6459 9.7655H16.8763C14.605 9.7655 12.7555 7.91591 12.7555 5.64466V2.87508C12.7555 2.348 12.3242 1.91675 11.7971 1.91675H7.73379C4.78212 1.91675 2.39587 3.83341 2.39587 7.25466V15.7455C2.39587 19.1667 4.78212 21.0834 7.73379 21.0834H15.2663C18.218 21.0834 20.6042 19.1667 20.6042 15.7455V10.7238C20.6042 10.1967 20.173 9.7655 19.6459 9.7655ZM11.7684 15.1226L9.85171 17.0392C9.78462 17.1063 9.69837 17.1638 9.61212 17.1926C9.52795 17.2312 9.43642 17.2512 9.34379 17.2512C9.25117 17.2512 9.15963 17.2312 9.07546 17.1926C8.99617 17.1594 8.92444 17.1105 8.86462 17.0488C8.85504 17.0392 8.84546 17.0392 8.84546 17.0297L6.92879 15.113C6.79512 14.9777 6.72016 14.7952 6.72016 14.6051C6.72016 14.4149 6.79512 14.2324 6.92879 14.0972C7.20671 13.8192 7.66671 13.8192 7.94462 14.0972L8.62504 14.7967V10.7813C8.62504 10.3884 8.95087 10.0626 9.34379 10.0626C9.73671 10.0626 10.0625 10.3884 10.0625 10.7813V14.7967L10.7525 14.1067C11.0305 13.8288 11.4905 13.8288 11.7684 14.1067C12.0463 14.3847 12.0463 14.8447 11.7684 15.1226Z"
|
||||
/>
|
||||
fill="#8F8F8F"
|
||||
<path d="M16.7038 8.44289C17.6142 8.45247 18.8792 8.45247 19.9621 8.45247C20.5084 8.45247 20.7959 7.81039 20.4125 7.42706C19.0325 6.03747 16.56 3.53622 15.1417 2.11789C14.7488 1.72497 14.0684 1.99331 14.0684 2.53956V5.88414C14.0684 7.28331 15.2567 8.44289 16.7038 8.44289Z"
|
||||
/>
|
||||
fill="#8F8F8F"
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
|
@ -0,0 +1,7 @@
|
|||
<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="40" height="40" rx="8" fill-opacity="0.7"/>
|
||||
<g clip-path="url(#clip0_948_14736)">
|
||||
<path d="M14 8V32H21.3868C25.732 31.8985 27.0355 27.9878 27.0355 25.3807V14.0832C27.0355 11.4761 25.732 8 21.3868 8H14ZM18.3452 27.9878V11.9107H20.5178C21.3868 11.9107 22.6904 13.2142 22.6904 14.0832V25.8152C22.6904 26.6843 21.3868 27.9878 20.5178 27.9878H18.3452Z"/>
|
||||
</g>
|
||||
<!--fill-rule="evenodd" clip-rule="evenodd"-->
|
||||
</svg>
|
After Width: | Height: | Size: 514 B |
|
@ -0,0 +1 @@
|
|||
google-site-verification: googlef3fb867fca74c7f3.html
|
|
@ -0,0 +1,73 @@
|
|||
<svg width="324" height="315" viewBox="0 0 324 315" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1199_5743)">
|
||||
<path d="M127.25 0.939571L152.304 0.0756503C153.482 0.0350214 154.437 1.04277 154.386 2.22064C150.901 83.576 225.855 126.848 299.573 84.1364C300.597 83.5428 301.938 83.9301 302.442 85.0014L312.784 106.978C313.198 107.858 312.952 108.88 312.134 109.405C302.412 115.647 242.334 150.906 181 112C124.229 75.9885 124.794 13.8816 125.381 2.73758C125.433 1.73673 126.248 0.97411 127.25 0.939571Z" fill="url(#paint0_linear_1199_5743)"/>
|
||||
<path d="M195 311L176 313C174.904 313 171.029 311.095 171 310C171 230.057 91.5 183 23.5832 232.214C22.5072 232.865 21.0775 232.41 20.6228 231.238L12.5488 210.415C12.2244 209.579 12.4615 208.658 13.2022 208.151C22.0909 202.071 78.9766 166.474 140.5 205.5C196.731 241.169 197.831 298.557 197.5 309C197.467 310.035 196.035 311 195 311Z" fill="url(#paint1_linear_1199_5743)"/>
|
||||
<path d="M187.5 129C187.5 133.97 183.471 138 178.5 138C173.529 138 169.5 133.97 169.5 129C169.5 124.029 173.529 120 178.5 120C183.471 120 187.5 124.029 187.5 129Z" fill="#4CAD33"/>
|
||||
<path d="M224 306C224 310.97 219.971 315 215 315C210.029 315 206 310.97 206 306C206 301.029 210.029 297 215 297C219.971 297 224 301.029 224 306Z" fill="#4CAD33"/>
|
||||
<path d="M105 172C105 176.97 100.971 181 96 181C91.0294 181 87 176.97 87 172C87 167.029 91.0294 163 96 163C100.971 163 105 167.029 105 172Z" fill="#4CAD33"/>
|
||||
<path d="M155 188C155 192.97 150.971 197 146 197C141.029 197 137 192.97 137 188C137 183.029 141.029 179 146 179C150.971 179 155 183.029 155 188Z" fill="#4CAD33"/>
|
||||
<path d="M194 222C194 226.97 189.971 231 185 231C180.029 231 176 226.97 176 222C176 217.029 180.029 213 185 213C189.971 213 194 217.029 194 222Z" fill="#4CAD33"/>
|
||||
<path d="M214 263C214 267.97 209.971 272 205 272C200.029 272 196 267.97 196 263C196 258.029 200.029 254 205 254C209.971 254 214 258.029 214 263Z" fill="#4CAD33"/>
|
||||
<path d="M59 174C59 178.97 54.9706 183 50 183C45.0294 183 41 178.97 41 174C41 169.029 45.0294 165 50 165C54.9706 165 59 169.029 59 174Z" fill="#4CAD33"/>
|
||||
<path d="M148 95.9999C148 100.97 143.971 105 139 105C134.029 105 130 100.97 130 95.9999C130 91.0293 134.029 86.9999 139 86.9999C143.971 86.9999 148 91.0293 148 95.9999Z" fill="#4CAD33"/>
|
||||
<path d="M127 54.9999C127 59.9705 122.971 63.9999 118 63.9999C113.029 63.9999 109 59.9705 109 54.9999C109 50.0293 113.029 45.9999 118 45.9999C122.971 45.9999 127 50.0293 127 54.9999Z" fill="#4CAD33"/>
|
||||
<path d="M118 13.9999C118 18.9705 113.971 22.9999 109 22.9999C104.029 22.9999 100 18.9705 100 13.9999C100 9.02934 104.029 4.9999 109 4.9999C113.971 4.9999 118 9.02934 118 13.9999Z" fill="#4CAD33"/>
|
||||
<path d="M323.5 130C323.5 134.97 319.471 139 314.5 139C309.529 139 305.5 134.97 305.5 130C305.5 125.029 309.529 121 314.5 121C319.471 121 323.5 125.029 323.5 130Z" fill="#4CAD33"/>
|
||||
<path d="M282.5 144C282.5 148.97 278.471 153 273.5 153C268.529 153 264.5 148.97 264.5 144C264.5 139.029 268.529 135 273.5 135C278.471 135 282.5 139.029 282.5 144Z" fill="#4CAD33"/>
|
||||
<path d="M237.5 147C237.5 151.97 233.471 156 228.5 156C223.529 156 219.5 151.97 219.5 147C219.5 142.029 223.529 138 228.5 138C233.471 138 237.5 142.029 237.5 147Z" fill="#4CAD33"/>
|
||||
<path d="M50 50.4999C50 51.8806 48.8807 52.9999 47.5 52.9999C46.1193 52.9999 45 51.8806 45 50.4999C45 49.1192 46.1193 47.9999 47.5 47.9999C48.8807 47.9999 50 49.1192 50 50.4999Z" fill="#4CAE33"/>
|
||||
<path d="M33 144.5C33 145.881 31.8807 147 30.5 147C29.1193 147 28 145.881 28 144.5C28 143.119 29.1193 142 30.5 142C31.8807 142 33 143.119 33 144.5Z" fill="#4CAE33"/>
|
||||
<path d="M87 63.4999C87 64.8806 85.8807 65.9999 84.5 65.9999C83.1193 65.9999 82 64.8806 82 63.4999C82 62.1192 83.1193 60.9999 84.5 60.9999C85.8807 60.9999 87 62.1192 87 63.4999Z" fill="#4CAE33"/>
|
||||
<path d="M59 82.4999C59 83.8806 57.8807 84.9999 56.5 84.9999C55.1193 84.9999 54 83.8806 54 82.4999C54 81.1192 55.1193 79.9999 56.5 79.9999C57.8807 79.9999 59 81.1192 59 82.4999Z" fill="#4CAE33"/>
|
||||
<path d="M98 87.4999C98 88.8806 96.8807 89.9999 95.5 89.9999C94.1193 89.9999 93 88.8806 93 87.4999C93 86.1192 94.1193 84.9999 95.5 84.9999C96.8807 84.9999 98 86.1192 98 87.4999Z" fill="#4CAE33"/>
|
||||
<path d="M83 112.5C83 113.881 81.8807 115 80.5 115C79.1193 115 78 113.881 78 112.5C78 111.119 79.1193 110 80.5 110C81.8807 110 83 111.119 83 112.5Z" fill="#4CAE33"/>
|
||||
<path d="M58 140.5C58 141.881 56.8807 143 55.5 143C54.1193 143 53 141.881 53 140.5C53 139.119 54.1193 138 55.5 138C56.8807 138 58 139.119 58 140.5Z" fill="#4CAE33"/>
|
||||
<path d="M113 109.5C113 110.881 111.881 112 110.5 112C109.119 112 108 110.881 108 109.5C108 108.119 109.119 107 110.5 107C111.881 107 113 108.119 113 109.5Z" fill="#4CAE33"/>
|
||||
<path d="M84 140.5C84 141.881 82.8807 143 81.5 143C80.1193 143 79 141.881 79 140.5C79 139.119 80.1193 138 81.5 138C82.8807 138 84 139.119 84 140.5Z" fill="#4CAE33"/>
|
||||
<path d="M131 127.5C131 128.881 129.881 130 128.5 130C127.119 130 126 128.881 126 127.5C126 126.119 127.119 125 128.5 125C129.881 125 131 126.119 131 127.5Z" fill="#4CAE33"/>
|
||||
<path d="M110 144.5C110 145.881 108.881 147 107.5 147C106.119 147 105 145.881 105 144.5C105 143.119 106.119 142 107.5 142C108.881 142 110 143.119 110 144.5Z" fill="#4CAE33"/>
|
||||
<path d="M135 151.5C135 152.881 133.881 154 132.5 154C131.119 154 130 152.881 130 151.5C130 150.119 131.119 149 132.5 149C133.881 149 135 150.119 135 151.5Z" fill="#4CAE33"/>
|
||||
<path d="M151 144.5C151 145.881 149.881 147 148.5 147C147.119 147 146 145.881 146 144.5C146 143.119 147.119 142 148.5 142C149.881 142 151 143.119 151 144.5Z" fill="#4CAE33"/>
|
||||
<path d="M173 158.5C173 159.881 171.881 161 170.5 161C169.119 161 168 159.881 168 158.5C168 157.119 169.119 156 170.5 156C171.881 156 173 157.119 173 158.5Z" fill="#4CAE33"/>
|
||||
<path d="M159 162.5C159 163.881 157.881 165 156.5 165C155.119 165 154 163.881 154 162.5C154 161.119 155.119 160 156.5 160C157.881 160 159 161.119 159 162.5Z" fill="#4CAE33"/>
|
||||
<path d="M198 168.5C198 169.881 196.881 171 195.5 171C194.119 171 193 169.881 193 168.5C193 167.119 194.119 166 195.5 166C196.881 166 198 167.119 198 168.5Z" fill="#4CAE33"/>
|
||||
<path d="M182 175.5C182 176.881 180.881 178 179.5 178C178.119 178 177 176.881 177 175.5C177 174.119 178.119 173 179.5 173C180.881 173 182 174.119 182 175.5Z" fill="#4CAE33"/>
|
||||
<path d="M223 175.5C223 176.881 221.881 178 220.5 178C219.119 178 218 176.881 218 175.5C218 174.119 219.119 173 220.5 173C221.881 173 223 174.119 223 175.5Z" fill="#4CAE33"/>
|
||||
<path d="M201 192.5C201 193.881 199.881 195 198.5 195C197.119 195 196 193.881 196 192.5C196 191.119 197.119 190 198.5 190C199.881 190 201 191.119 201 192.5Z" fill="#4CAE33"/>
|
||||
<path d="M249 178.5C249 179.881 247.881 181 246.5 181C245.119 181 244 179.881 244 178.5C244 177.119 245.119 176 246.5 176C247.881 176 249 177.119 249 178.5Z" fill="#4CAE33"/>
|
||||
<path d="M274 177.5C274 178.881 272.881 180 271.5 180C270.119 180 269 178.881 269 177.5C269 176.119 270.119 175 271.5 175C272.881 175 274 176.119 274 177.5Z" fill="#4CAE33"/>
|
||||
<path d="M322 166.5C322 167.881 320.881 169 319.5 169C318.119 169 317 167.881 317 166.5C317 165.119 318.119 164 319.5 164C320.881 164 322 165.119 322 166.5Z" fill="#4CAE33"/>
|
||||
<path d="M248 207.5C248 208.881 246.881 210 245.5 210C244.119 210 243 208.881 243 207.5C243 206.119 244.119 205 245.5 205C246.881 205 248 206.119 248 207.5Z" fill="#4CAE33"/>
|
||||
<path d="M278 207.5C278 208.881 276.881 210 275.5 210C274.119 210 273 208.881 273 207.5C273 206.119 274.119 205 275.5 205C276.881 205 278 206.119 278 207.5Z" fill="#4CAE33"/>
|
||||
<path d="M317 200.5C317 201.881 315.881 203 314.5 203C313.119 203 312 201.881 312 200.5C312 199.119 313.119 198 314.5 198C315.881 198 317 199.119 317 200.5Z" fill="#4CAE33"/>
|
||||
<path d="M218 211.5C218 212.881 216.881 214 215.5 214C214.119 214 213 212.881 213 211.5C213 210.119 214.119 209 215.5 209C216.881 209 218 210.119 218 211.5Z" fill="#4CAE33"/>
|
||||
<path d="M233 233.5C233 234.881 231.881 236 230.5 236C229.119 236 228 234.881 228 233.5C228 232.119 229.119 231 230.5 231C231.881 231 233 232.119 233 233.5Z" fill="#4CAE33"/>
|
||||
<path d="M262 233.5C262 234.881 260.881 236 259.5 236C258.119 236 257 234.881 257 233.5C257 232.119 258.119 231 259.5 231C260.881 231 262 232.119 262 233.5Z" fill="#4CAE33"/>
|
||||
<path d="M244 257.5C244 258.881 242.881 260 241.5 260C240.119 260 239 258.881 239 257.5C239 256.119 240.119 255 241.5 255C242.881 255 244 256.119 244 257.5Z" fill="#4CAE33"/>
|
||||
<path d="M252 290.5C252 291.881 250.881 293 249.5 293C248.119 293 247 291.881 247 290.5C247 289.119 248.119 288 249.5 288C250.881 288 252 289.119 252 290.5Z" fill="#4CAE33"/>
|
||||
<path d="M279 266.5C279 267.881 277.881 269 276.5 269C275.119 269 274 267.881 274 266.5C274 265.119 275.119 264 276.5 264C277.881 264 279 265.119 279 266.5Z" fill="#4CAE33"/>
|
||||
<path d="M303 236.5C303 237.881 301.881 239 300.5 239C299.119 239 298 237.881 298 236.5C298 235.119 299.119 234 300.5 234C301.881 234 303 235.119 303 236.5Z" fill="#4CAE33"/>
|
||||
<path d="M300 173.5C300 174.881 298.881 176 297.5 176C296.119 176 295 174.881 295 173.5C295 172.119 296.119 171 297.5 171C298.881 171 300 172.119 300 173.5Z" fill="#4CAE33"/>
|
||||
<path d="M44 109.5C44 110.881 42.8807 112 41.5 112C40.1193 112 39 110.881 39 109.5C39 108.119 40.1193 107 41.5 107C42.8807 107 44 108.119 44 109.5Z" fill="#4CAE33"/>
|
||||
<path d="M76 28.4999C76 29.8806 74.8807 30.9999 73.5 30.9999C72.1193 30.9999 71 29.8806 71 28.4999C71 27.1192 72.1193 25.9999 73.5 25.9999C74.8807 25.9999 76 27.1192 76 28.4999Z" fill="#4CAE33"/>
|
||||
<path d="M26 80.4999C26 81.8806 24.8807 82.9999 23.5 82.9999C22.1193 82.9999 21 81.8806 21 80.4999C21 79.1192 22.1193 77.9999 23.5 77.9999C24.8807 77.9999 26 79.1192 26 80.4999Z" fill="#4CAE33"/>
|
||||
<path d="M7 151.5C7 152.881 5.88071 154 4.5 154C3.11929 154 2 152.881 2 151.5C2 150.119 3.11929 149 4.5 149C5.88071 149 7 150.119 7 151.5Z" fill="#4CAE33"/>
|
||||
<path d="M12 117.5C12 118.881 10.8807 120 9.5 120C8.11929 120 7 118.881 7 117.5C7 116.119 8.11929 115 9.5 115C10.8807 115 12 116.119 12 117.5Z" fill="#4CAE33"/>
|
||||
<path d="M18 189C18 193.97 13.9706 198 9 198C4.02944 198 0 193.97 0 189C0 184.029 4.02944 180 9 180C13.9706 180 18 184.029 18 189Z" fill="#4CAD33"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_1199_5743" x1="0.407829" y1="4.91863" x2="365.916" y2="151.926" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#787878"/>
|
||||
<stop offset="0.34" stop-color="#D9D9D9"/>
|
||||
<stop offset="1" stop-color="#737373"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_1199_5743" x1="-5.01043" y1="-15.794" x2="372.53" y2="125.755" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#787878"/>
|
||||
<stop offset="0.34" stop-color="#D9D9D9"/>
|
||||
<stop offset="1" stop-color="#737373"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_1199_5743">
|
||||
<rect width="324" height="315" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 11 KiB |
|
@ -0,0 +1,3 @@
|
|||
<svg width="21" height="21" viewBox="0 0 3 21" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect y="21" width="21" height="3" rx="1.5" transform="rotate(-90 0 21)" fill="#141414"/>
|
||||
</svg>
|
After Width: | Height: | Size: 192 B |
After Width: | Height: | Size: 704 KiB |
After Width: | Height: | Size: 746 KiB |
|
@ -0,0 +1,3 @@
|
|||
<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10.5 0C10.8481 0 11.1819 0.138281 11.4281 0.384423C11.6742 0.630564 11.8125 0.964403 11.8125 1.3125V9.1875H19.6875C20.0356 9.1875 20.3694 9.32578 20.6156 9.57192C20.8617 9.81806 21 10.1519 21 10.5C21 10.8481 20.8617 11.1819 20.6156 11.4281C20.3694 11.6742 20.0356 11.8125 19.6875 11.8125H11.8125V19.6875C11.8125 20.0356 11.6742 20.3694 11.4281 20.6156C11.1819 20.8617 10.8481 21 10.5 21C10.1519 21 9.81806 20.8617 9.57192 20.6156C9.32578 20.3694 9.1875 20.0356 9.1875 19.6875V11.8125H1.3125C0.964403 11.8125 0.630564 11.6742 0.384423 11.4281C0.138281 11.1819 0 10.8481 0 10.5C0 10.1519 0.138281 9.81806 0.384423 9.57192C0.630564 9.32578 0.964403 9.1875 1.3125 9.1875H9.1875V1.3125C9.1875 0.964403 9.32578 0.630564 9.57192 0.384423C9.81806 0.138281 10.1519 0 10.5 0Z" fill="#151515"/>
|
||||
</svg>
|
After Width: | Height: | Size: 901 B |
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 687 KiB |
|
@ -1,36 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
|
||||
<url><loc>https://relynolli.ru</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/articles</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/cart</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/catalog</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/contact</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/news</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/order/make</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/catalog/maslo-motornoe-relynolli-premium-m1-lh-10w-40-sn-cf-1l-kanistra-acea-a5-b5</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/catalog/maslo-motornoe-relynolli-premium-m1-lh-10w-40-sn-cf-4l-kanistra-acea-a5-b5</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/catalog/maslo-motornoe-relynolli-premium-m1-nh-5w-30-sn-cf-1l-kanistra-acea-a5-b5</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/catalog/maslo-motornoe-relynolli-premium-m1-nh-5w-30-sn-cf-205l-bochka-acea-a5-b5</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/catalog/maslo-motornoe-relynolli-premium-m1-nh-5w-30-sn-cf-4l-kanistra-acea-a5-b5</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/catalog/maslo-motornoe-relynolli-premium-m1-nh-5w-40-sn-cf-1l-kanistra-acea-a5-b5</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/catalog/maslo-motornoe-relynolli-premium-m1-nh-5w-40-sn-cf-205l-bochka-acea-a5-b5</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/catalog/maslo-motornoe-relynolli-premium-m1-nh-5w-40-sn-cf-4l-kanistra-acea-a5-b5</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/catalog/maslo-motornoe-relynolli-standart-m1-lh-10w-40-slcf-1l-kanistra-acea-a3b4</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/catalog/maslo-motornoe-relynolli-standart-m1-lh-10w-40-slcf-4l-kanistra-acea-a3b4</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/articles/poyasnenie-po-sootvetstviyu-masel-relynolli-klassu-acea-a5-b5</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/articles/professionalnoe-retsenzirovanie-dissertatsii-ot-ntts-td-tekhnokhim-grupp</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/articles/tsifrovizatsiya-sklada-otgruzki-bez-oshibok-relynolli</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/articles/realnye-ispytaniya-masla-ili-fokus-pokus</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/articles/nauchno-tekhnicheskiy-tsentr-vozmozhnosti-i-perspektivy</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/articles/skhema-ispytaniy-relynolli-garantiya-nadezhnosti-i-dostovernosti</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/news/meniaj_besplatno</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/news/tv-reportazh-relynolli</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/news/motornoe-maslo-relynolli-v-podarok</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/news/samarskij-politeh-relynolli</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/news/start-sotrudnichestva-service-trans-cargo-tehnohim-relynolli</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/news/tehnohim-yarmarka-vakanciy</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/news/skidka-10-dlya-podpischikov-kanala-telegram</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/news/kazautoexpo-2023-relynolli</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/news/relynolli-magazin-roznica</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/news/bisness-yaroslavii</loc><lastmod>2024-04-15T14:24:16.500Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru</loc><lastmod>2024-04-21T23:16:22.760Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/articles</loc><lastmod>2024-04-21T23:16:22.761Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/cart</loc><lastmod>2024-04-21T23:16:22.761Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/catalog</loc><lastmod>2024-04-21T23:16:22.761Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/contact</loc><lastmod>2024-04-21T23:16:22.761Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/news</loc><lastmod>2024-04-21T23:16:22.761Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
<url><loc>https://relynolli.ru/order/make</loc><lastmod>2024-04-21T23:16:22.761Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||
</urlset>
|
|
@ -32,13 +32,16 @@ const OrderInfo = (props: OrderInfoProps) => {
|
|||
<div className="confirm shadow-lg p-7 text-[#333333] mb-4">
|
||||
<h2 className={"text-subtitle-2 font-bold mb-2"}>Информация о заказе</h2>
|
||||
<div className="flex justify-between mb-2">
|
||||
<span>Товаров на:</span>
|
||||
{/* TODO round value */}
|
||||
{/*<span>{String(totalProductPriceQs.data ? _.sum(totalProductPriceQs.data.data!.items.map(item => item.cart.product.price.BASE * item.cart.quantity)) : 0).replace(/\B(?=(\d{3})+(?!\d))/g, " ")} ₽</span>*/}
|
||||
<span>Товаров на:</span>
|
||||
{/* TODO round value */}
|
||||
{/*<span>{String(totalProductPriceQs.data ? _.sum(totalProductPriceQs.data.data!.items.map(item => item.cart.product.price.BASE * item.cart.quantity)) : 0).replace(/\B(?=(\d{3})+(?!\d))/g, " ")} ₽</span>*/}
|
||||
</div>
|
||||
<form className="flex justify-between h-[50px] mb-2">
|
||||
<Input isDisabled={totalProductPriceQs.data && couponApplied && _.some(totalProductPriceQs.data.data!.items, "discount")} isInvalid={totalProductPriceQs.data && couponApplied && _.every(totalProductPriceQs.data.data!.items, ["discount", null])} type="text" label="Введите промокод" variant={"bordered"}
|
||||
className={"border-[#1E1E1E] mr-4"} onChange={(e) => setCoupon(e.target.value)}/>
|
||||
<Input
|
||||
isDisabled={totalProductPriceQs.data && couponApplied && _.some(totalProductPriceQs.data.data!.items, "discount")}
|
||||
isInvalid={totalProductPriceQs.data && couponApplied && _.every(totalProductPriceQs.data.data!.items, ["discount", null])}
|
||||
type="text" label="Введите промокод" variant={"bordered"}
|
||||
className={"border-[#1E1E1E] mr-4"} onChange={(e) => setCoupon(e.target.value)}/>
|
||||
<Button isDisabled={couponApplied} className={"flex-auto h-full"}
|
||||
color={'primary'} onClick={() => setCouponApplied(true)}><ChevronRightIcon/></Button>
|
||||
</form>
|
||||
|
@ -52,7 +55,8 @@ const OrderInfo = (props: OrderInfoProps) => {
|
|||
|
||||
<div className="flex justify-between mb-2 items-center">
|
||||
<span>Итого: </span>
|
||||
<span className={"text-title-3 font-bold"}>{String(totalProductPriceQs.data ? totalProductPriceQs.data.data!.total : 0).replace(/\B(?=(\d{3})+(?!\d))/g, " ")} ₽</span>
|
||||
<span
|
||||
className={"text-title-3 font-bold"}>{String(totalProductPriceQs.data ? totalProductPriceQs.data.data!.total : 0).replace(/\B(?=(\d{3})+(?!\d))/g, " ")} ₽</span>
|
||||
</div>
|
||||
|
||||
<div className="flex justify-between mb-8 text-[#808080] text-subtitle-5">
|
||||
|
@ -64,7 +68,9 @@ const OrderInfo = (props: OrderInfoProps) => {
|
|||
props.setIsDisabled(!props.isDisabled)
|
||||
}}
|
||||
className={"[&_span:last-child]:!text-[#808080] [&_span:last-child]:text-subtitle-5 [&_span:last-child]:leading-normal mb-6"}>Нажимая
|
||||
кнопку «Оформить заказ», я даю согласие на <Link className={"text-primary"} href={"https://tehnohimgrupp.ru/upload/Согласие на ОПД Технохим.pdf"}>обработку моих персональных данных</Link></Checkbox>
|
||||
кнопку «Оформить заказ», я даю согласие на <Link className={"text-primary"}
|
||||
href={"https://tehnohimgrupp.ru/upload/Согласие на ОПД Технохим.pdf"}>обработку
|
||||
моих персональных данных</Link></Checkbox>
|
||||
|
||||
</div>
|
||||
)
|
||||
|
|
|
@ -21,7 +21,10 @@ const EmailInput = ({control, errors} : InputPropsType) => {
|
|||
"inputWrapper": "h-[65px]",
|
||||
"label": "group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#8F8F8F]"
|
||||
}}
|
||||
variant={"bordered"} label={"E-mail"} type={"email"} isRequired
|
||||
variant={"bordered"}
|
||||
label={"E-mail"}
|
||||
type={"email"}
|
||||
isRequired
|
||||
labelPlacement={"outside"} {...field}
|
||||
isInvalid={!!errors.email}
|
||||
errorMessage={errors.email && errors.email.message}
|
||||
|
|
|
@ -39,7 +39,7 @@ const normalizeInput = (value: string, previousValue: string) => {
|
|||
return ""
|
||||
};
|
||||
|
||||
const PhoneInput = ({control, errors, watch, setValue} : InputPropsType) => {
|
||||
const PhoneInput = ({control, errors, watch, setValue}: InputPropsType) => {
|
||||
|
||||
const [phoneNumberPrev, setPhoneNumberPrev] = useState("")
|
||||
const phoneNumberCur = watch("phoneNumber")
|
||||
|
@ -53,27 +53,27 @@ const PhoneInput = ({control, errors, watch, setValue} : InputPropsType) => {
|
|||
}, [phoneNumberCur])
|
||||
|
||||
return (
|
||||
<Controller control={control}
|
||||
name={"phoneNumber"}
|
||||
rules={{
|
||||
required: "Поле обязательно для заполнения",
|
||||
pattern: {
|
||||
message: "Неверный формат номера телефона",
|
||||
value: /\+\d \(\d{3}\) \d{3} \d{2}-\d{2}/
|
||||
}
|
||||
}}
|
||||
render={({field}) =>
|
||||
<Input
|
||||
classNames={{
|
||||
"inputWrapper": "h-[65px]",
|
||||
"label": "group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#8F8F8F]"
|
||||
}}
|
||||
variant={"bordered"} label={"Телефон"} type={"tel"} isRequired
|
||||
labelPlacement={"outside"} {...field}
|
||||
isInvalid={!!errors.phoneNumber}
|
||||
errorMessage={errors.phoneNumber && errors.phoneNumber.message}
|
||||
/>
|
||||
}/>
|
||||
<Controller control={control}
|
||||
name={"phoneNumber"}
|
||||
rules={{
|
||||
required: "Поле обязательно для заполнения",
|
||||
pattern: {
|
||||
message: "Неверный формат номера телефона",
|
||||
value: /\+\d \(\d{3}\) \d{3} \d{2}-\d{2}/
|
||||
}
|
||||
}}
|
||||
render={({field}) =>
|
||||
<Input
|
||||
classNames={{
|
||||
"inputWrapper": "h-[65px]",
|
||||
"label": "group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#8F8F8F]"
|
||||
}}
|
||||
variant={"bordered"} label={"Телефон"} type={"tel"} isRequired
|
||||
labelPlacement={"outside"} {...field}
|
||||
isInvalid={!!errors.phoneNumber}
|
||||
errorMessage={errors.phoneNumber && errors.phoneNumber.message}
|
||||
/>
|
||||
}/>
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,83 @@
|
|||
import {
|
||||
Accordion,
|
||||
AccordionItem
|
||||
} from "@nextui-org/react";
|
||||
import Plus from "@/../public/plus_icon_turned.svg"
|
||||
import Minus from "@/../public/minus_icon_turned.svg"
|
||||
|
||||
const AccordSupp = () => {
|
||||
return (
|
||||
<Accordion
|
||||
itemClasses={{
|
||||
base:"!bg-gray-card",
|
||||
content:"text-gray-3 bg-white p-6 rounded-[8px]",
|
||||
indicator:"bg-primary p-[22px] rounded-[4px]"
|
||||
}}
|
||||
variant="splitted"
|
||||
>
|
||||
<AccordionItem key="1" aria-label="Для чего необходимо моторное масло, основные функции моторного масла?" title="Для чего необходимо моторное масло, основные функции моторного масла?" indicator={({ isOpen})=> (isOpen ? <Minus /> : <Plus/>)}>
|
||||
Моторное масло является неотъемлемым полноправным элементом конструкции двигателя внутреннего сгорания наряду с такими деталями как блок цилиндров, коленчатый вал, поршни или шатуны. Основная функция моторного масла – снижение трения и износа деталей двигателя. Именно снижение, поскольку полностью исключить износ невозможно, но возможно его минимизировать и обеспечить долговечность двигателя.
|
||||
Также при смазывании двигателя масло отводит тепло от нагретых деталей, уплотняет зазоры в сопряжениях (в частности, в цилиндро-поршневой группе), защищает детали от коррозионного воздействия продуктов неполного сгорания топлива, удерживает образующиеся загрязнения во взвешенном состоянии, тем самым препятствуя образованию отложений на деталях двигателя и обеспечивая их чистоту.
|
||||
</AccordionItem>
|
||||
<AccordionItem key="2" aria-label="Из чего состоит моторное масло?" title="Из чего состоит моторное масло?" indicator={({ isOpen})=> (isOpen ? <Minus /> : <Plus/>)}>
|
||||
Любое моторное масло состоит из базовой основы (то есть смеси базовых масел) и дополнительных компонентов, называемых добавками или присадками, которые обеспечивают повышение эксплуатационных свойств базового масла. <br/>
|
||||
В зависимости от базовой основы моторные масла принято делить на минеральные, полусинтетические и синтетические. Моторные масла на минеральной основе обладают стабильными свойствами, в частности, высокой растворимостью присадок (высокой приёмистостью к присадкам), что обеспечивает эффективность работы присадок, хорошие смазывающие свойства. Полусинтетические моторные масла в качестве базовой основы имеют смесь минерального и синтетического масел, что позволяет добиться улучшения низкотемпературных свойств, обеспечить лучшую текучесть масел при низких температурах.
|
||||
|
||||
<ul className="my-2 list-inside">
|
||||
<b>Синтетические масла имеют ряд дополнительных преимуществ:</b>
|
||||
<li className="!text-medium">отличные низкотемпературные свойства;</li>
|
||||
<li className="!text-medium">высокую стабильность против окисления, низкую летучесть и низкий расход масла на угар;</li>
|
||||
<li className="!text-medium">высокие моющие свойства и минимальное количество отложений;</li>
|
||||
<li className="!text-medium">увеличенный срок службы.</li>
|
||||
</ul>
|
||||
</AccordionItem>
|
||||
<AccordionItem key="3" aria-label="Что такое вязкость и какие бывают вязкости масел?" title="Что такое вязкость и какие бывают вязкости масел?" indicator={({ isOpen})=> (isOpen ? <Minus /> : <Plus/>)}>
|
||||
Вязкость (текучесть) масла – одна из важнейших физико-химических характеристик масла, влияющая на выбор масла для конкретного двигателя и условий эксплуатации. Масло должно быть, с одной стороны, достаточно жидким (текучим) при низкой температуре, чтобы обеспечить надёжный запуск двигателя при низких температурах. Но, с другой стороны, масло должно быть достаточно густым, чтобы эффективно разделять трущиеся поверхности двигателя в прогретом состоянии и защищать от износа.
|
||||
<br/>Таким образом, моторные масла принято классифицировать в первую очередь по вязкости (или по вязкостно-температурным свойствам). Наибольшее распространение получила классификация моторных масле по вязкости, разработанная Американским обществом автомобильных инженеров (SAE) – классификация SAEJ300. В соответствии с данной классификацией масла разделены на 16 классов от 0W до 60. Часть классов относится к зимним классам – 0W, 5W, 10W и др. А часть классов относится к летним – 16, 20, 30, 40 и др. Моторные масла, вязкость которых обозначена с указанием и зимнего и летнего классов, например 5W-40, 0W-30, называются всесезонными и предназначены для эксплуатации в двигателях как при низкой так и при высокой температуре окружающего воздуха, в зимнее и летнее время года. Такие масла получили наибольшее распространения в автомобильных двигателях.
|
||||
</AccordionItem>
|
||||
<AccordionItem key="4" aria-label="Как выбрать моторное масло?" title="Как выбрать моторное масло?" indicator={({ isOpen})=> (isOpen ? <Minus /> : <Plus/>)}>
|
||||
<ol className="list-decimal list-inside">
|
||||
<b>При выборе моторного масла необходимо учитывать:</b>
|
||||
<li>Температуру окружающего воздуха, при которой эксплуатируется автомобиль и двигатель</li>
|
||||
<li>Вид применяемого топлива (бензин или дизель)</li>
|
||||
<li>Конструктивные особенности систем двигателя, например, наличие современной системы очистки (нейтрализации) отработавших газов и др.</li>
|
||||
</ol>
|
||||
|
||||
Существует ещё ряд факторов. Однако, для того, чтобы при выборе моторного масла не запутаться во всех этих особенностях и тонкостях, необходимо обратиться к руководству по эксплуатации автомобиля (или двигателя). Именно в руководстве по эксплуатации содержится информация о рекомендуемом для применения классе вязкости моторного масла, уровне его эксплуатационных свойств. При этом марка (производитель) моторного масла может отличаться от того, что указано в руководстве.
|
||||
|
||||
</AccordionItem>
|
||||
<AccordionItem key="5" aria-label="Как часто необходимо менять моторное масло?"
|
||||
title="Как часто необходимо менять моторное масло?"
|
||||
indicator={({isOpen}) => (isOpen ? <Minus/> : <Plus/>)}>
|
||||
<ol className="list-decimal list-inside">
|
||||
<b>Интервал замены моторного масла зависит от ряда факторов, таких как:</b>
|
||||
<li>Условия эксплуатации, нагрузка на двигатель, стиль вождения</li>
|
||||
<li>Качество применяемого топлива (содержание в нем серы)</li>
|
||||
<li>Качество самого моторного масла, уровень его моющих и нейтрализующих свойств, стабильность против
|
||||
окисления и др.
|
||||
</li>
|
||||
</ol>
|
||||
Информация о рекомендованном интервале замены моторного масла также содержится в сервисной книжке
|
||||
автомобиля или руководстве по эксплуатации. Типичным интервалом замены считается интервал между
|
||||
техническими обслуживаниями двигателя равный 10-15 тыс. км пробега, при тяжёлых условиях эксплуатации
|
||||
интервал обычно рекомендуется сократить примерно в два раза, например, до 7-8 тыс. км. <br/>
|
||||
Главное – моторное масло должно быть заменено до того, как оно потеряет свои свойства, до того, как его
|
||||
физико-химические параметры (вязкость, щелочное число, кислотное число, температура вспышки) достигнут
|
||||
своих браковочных значений.
|
||||
|
||||
</AccordionItem>
|
||||
<AccordionItem key="6" aria-label="Как и где необходимо менять моторное масло?" title="Как и где необходимо менять моторное масло?"
|
||||
indicator={({isOpen}) => (isOpen ? <Minus/> : <Plus/>)}>
|
||||
Замену моторного масла необходимо проводить на станциях технического обслуживания автомобилей, дилерских центрах, специальных пунктах замены масел. При смене моторного масла в обязательном порядке необходимо заменять и масляный фильтр. Специалисты, например на пункте замены масла, помогут с выбором необходимого класса вязкости масла, уровнем его эксплуатационных свойств, подберут требуемый масляный фильтр и проведут квалифицированную замену. В некоторых случаях может быть рекомендована процедура промывки смазочной системы двигателя. Например, при переходе с масла, имеющего минеральную основу, на масло с синтетической основой.
|
||||
</AccordionItem>
|
||||
<AccordionItem key="7" aria-label="Как не попасться на контрафактное некачественное масло?" title="Как не попасться на контрафактное некачественное масло?"
|
||||
indicator={({isOpen}) => (isOpen ? <Minus/> : <Plus/>)}>
|
||||
Применение моторного масла, не отвечающего необходимым требованиям, может привести к отказам двигателя и к его капитальному ремонту.<br/>
|
||||
При производстве качественных моторных масел добросовестные производители используют высококачественные базовые масла, стабильный пакет присадок, соблюдают технологию производства. Это позволяет обеспечить надёжную работу масла на всём интервале до замены.<br/>
|
||||
Недобросовестные производители стараются экономить на компонентах масла, используют компоненты низкого качества. Для того, чтобы избежать покупки некачественного моторного масла несоответствующего требованиям необходимо обращаться на станции технического обслуживания автомобилей, дилерские центры и пункты замены масел, которые дорожат своими клиентами, своей деловой репутацией и не будут использовать некачественное масло в своей работе.
|
||||
</AccordionItem>
|
||||
</Accordion>
|
||||
)
|
||||
}
|
||||
|
||||
export default AccordSupp
|
|
@ -4,11 +4,11 @@ import Logo from "../../../public/header_logo.svg";
|
|||
import TgIcon from "../../../public/tg_icon.svg"
|
||||
import VkIcon from "../../../public/vk_icon.svg"
|
||||
import YouTubeIcon from "../../../public/YouTubeIcon.svg"
|
||||
import {Img} from "react-image";
|
||||
import Drive2 from "../../../public/drive2.svg"
|
||||
|
||||
const Footer = () => {
|
||||
return (
|
||||
<footer className={"bg-black-2 pt-4"}>
|
||||
<footer className={"bg-black-4 pt-4"}>
|
||||
<div className="wrapper text-white grid grid-cols-12">
|
||||
<div className="logo col-span-12 xl:col-span-3">
|
||||
<Link href={"/"} className={"transition-none pt-8 pb-2 block"}>
|
||||
|
@ -19,46 +19,74 @@ const Footer = () => {
|
|||
<a className={"block"} href={"tel:+74951919720"}>+7(495)191-97-20</a>
|
||||
|
||||
<div className="socials my-4 flex [&_a]:mr-2">
|
||||
<a href="https://vk.com/relynolli_vk" className={"group"}><VkIcon className={"fill-gray-3 group-hover:fill-primary transition-colors [&_path]:fill-white"}/></a>
|
||||
<a href="https://t.me/relynolli" className={"group"}><TgIcon className={"fill-gray-3 group-hover:fill-primary transition-colors [&_path]:fill-white"} /></a>
|
||||
<a href="https://t.me/relynolli" className={"group"}><YouTubeIcon className={"fill-gray-3 group-hover:fill-primary transition-colors [&_path]:fill-white last:[&_path]:fill-gray-3"} /></a>
|
||||
<a href="https://vk.com/relynolli_vk" className={"group"}><VkIcon
|
||||
className={"fill-gray-3 group-hover:fill-primary transition-colors [&_path]:fill-white"}/></a>
|
||||
<a href="https://t.me/relynolli" className={"group"}><TgIcon
|
||||
className={"fill-gray-3 group-hover:fill-primary transition-colors [&_path]:fill-white"}/></a>
|
||||
<a href="https://youtube.com/@Relynolli" className={"group"}><YouTubeIcon
|
||||
className={"fill-gray-3 group-hover:fill-primary transition-colors [&_path]:fill-white last:[&_path]:fill-gray-3"}/></a>
|
||||
<a href="https://www.drive2.ru/o/relynolli/" className={"group"}><Drive2
|
||||
className={"fill-gray-3 group-hover:fill-primary transition-colors [&_path]:fill-white last:[&_path]:fill-gray-3"}/></a>
|
||||
{/* <a href="https://youtube.com/@Relynolli" className={"group"}><Img src={'/ozon_icon.png'} className={"w-[40px] h-[40px] grayscale group-hover:grayscale-0 transition-all"} /></a> */}
|
||||
</div>
|
||||
|
||||
{/*<div className={"markets my-2"}>*/}
|
||||
{/* <a href="#" className={"group"}><Img src={'/ozon_icon.png'} className={"w-[40px] h-[40px] grayscale group-hover:grayscale-0 transition-all"} /></a>*/}
|
||||
{/*</div>*/}
|
||||
{/* <div className={"markets my-2"}>
|
||||
|
||||
</div> */}
|
||||
</div>
|
||||
<div className="col-span-12 xl:col-span-3 xl:col-start-5 mt-5">
|
||||
<h2 className={"text-2xl hover:text-primary transition-colors"}>Бренд</h2>
|
||||
<div className="col-span-12 xl:col-span-2 xl:col-start-5 mt-5">
|
||||
<h2 className={"text-2xl hover:text-primary transition-colors"}><Link
|
||||
href={"/catalog"}>Продукция</Link></h2>
|
||||
<ul className={"text-gray-3 text-sm font-semibold my-2"}>
|
||||
<li className={"hover:text-primary transition-colors"}>Персонализация</li>
|
||||
<li className={"hover:text-primary transition-colors"}>Технологии</li>
|
||||
<li className={"hover:text-primary transition-colors"}>Производство</li>
|
||||
<li className={"hover:text-primary transition-colors"}><Link href={"/news"}>Новости</Link></li>
|
||||
<li className={"hover:text-primary transition-colors"}>Карьера</li>
|
||||
<li className={"hover:text-primary transition-colors"}>Миссия</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div className="col-span-12 xl:col-span-3 mt-5">
|
||||
<h2 className={"text-2xl hover:text-primary transition-colors"}><Link href={"/catalog"}>Продукция</Link></h2>
|
||||
<ul className={"text-gray-3 text-sm font-semibold my-2"}>
|
||||
<li className={"hover:text-primary transition-colors"}><Link href={"/catalog"}>Relynolli ® Standart M</Link></li>
|
||||
<li className={"hover:text-primary transition-colors"}><Link href={"/catalog"}>Relynolli ® Premium M</Link></li>
|
||||
<li className={"hover:text-primary transition-colors"}><Link href={"/catalog"}>Relynolli ®
|
||||
Standart M</Link></li>
|
||||
<li className={"hover:text-primary transition-colors"}><Link href={"/catalog"}>Relynolli ®
|
||||
Premium M</Link></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div className="col-span-12 xl:col-span-2 mt-5">
|
||||
<h2 className={"text-2xl hover:text-primary transition-colors"}>Информация</h2>
|
||||
<h2 className={"text-2xl transition-colors"}>О компании</h2>
|
||||
<ul className={"text-gray-3 text-sm font-semibold my-2"}>
|
||||
<li className={"hover:text-primary transition-colors"}>Оплата</li>
|
||||
<li className={"hover:text-primary transition-colors"}><Link href={"/contact"}>Контакты</Link></li>
|
||||
<li className={"hover:text-primary transition-colors"}>Поддержка и рекламации</li>
|
||||
<li className={"hover:text-primary transition-colors"}><Link
|
||||
href={"/personalization"}>Персонализация</Link></li>
|
||||
<li className={"hover:text-primary transition-colors"}><Link
|
||||
href={"/technology"}>Технологии</Link></li>
|
||||
<li className={"hover:text-primary transition-colors"}><Link
|
||||
href={"/production"}>Производство</Link></li>
|
||||
<li className={"hover:text-primary transition-colors"}><Link href={"/news"}>Новости</Link></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div className="col-span-12 xl:col-span-2 mt-5">
|
||||
<h2 className={"text-2xl transition-colors"}>Информация</h2>
|
||||
<ul className={"text-gray-3 text-sm font-semibold my-2"}>
|
||||
<li className={"transition-colors"}>Оплата</li>
|
||||
<li className={"hover:text-primary transition-colors"}><Link href={"/contact"}>Контакты</Link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div className="col-span-12 xl:col-span-2 mt-5">
|
||||
<h2 className={"text-2xl transition-colors"}>Партнерам</h2>
|
||||
<ul className={"text-gray-3 text-sm font-semibold my-2"}>
|
||||
<li className={"hover:text-primary transition-colors"}>Карьера</li>
|
||||
<li className={"hover:text-primary transition-colors"}><Link href={"/mission"}>Миссия</Link>
|
||||
</li>
|
||||
<li className={"hover:text-primary transition-colors"}><Link href={"/support"}>Поддержка и
|
||||
рекламации</Link></li>
|
||||
</ul>
|
||||
</div>
|
||||
<Divider className={"col-span-12 my-8 h-[1px] w-full bg-gray-3"}/>
|
||||
<div className="col-span-12">
|
||||
<h2>© ООО "ТД Технохим Групп" 2024</h2>
|
||||
<p className={"text-gray-3 text-sm font-semibold my-2 mt-4"}><Link href={"https://tehnohimgrupp.ru/upload/Политика_обработки_ПДн_ТХГ.pdf"}>Политика конфиденциальности</Link></p>
|
||||
<p className={"text-gray-3 text-sm font-semibold my-2"}><Link href={"https://tehnohimgrupp.ru/upload/Согласие на ОПД Технохим.pdf"}>Обработка персональных данных</Link></p>
|
||||
<div className="col-span-12 xl:col-span-10">
|
||||
<h2 className="col-span-3">© ООО "ТД Технохим Групп" 2024</h2>
|
||||
<p className={"text-gray-3 text-sm font-semibold my-2 mt-4 col-span-3"}><Link
|
||||
href={"https://tehnohimgrupp.ru/upload/Политика_обработки_ПДн_ТХГ.pdf"}>Политика
|
||||
конфиденциальности</Link></p>
|
||||
<p className={"text-gray-3 text-sm font-semibold my-2 col-span-3"}><Link
|
||||
href={"https://tehnohimgrupp.ru/upload/Согласие на ОПД Технохим.pdf"}>Обработка персональных
|
||||
данных</Link></p>
|
||||
</div>
|
||||
<div className="col-span-12 mt-6 xl:col-span-2">
|
||||
<iframe src="https://yandex.ru/sprav/widget/rating-badge/32353164529?type=rating&theme=dark"
|
||||
width="150" height="50"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -0,0 +1,194 @@
|
|||
import {
|
||||
Button,
|
||||
Checkbox,
|
||||
Input,
|
||||
Modal,
|
||||
ModalContent,
|
||||
ModalHeader,
|
||||
ModalBody,
|
||||
ModalFooter,
|
||||
useDisclosure,
|
||||
Link
|
||||
} from "@nextui-org/react";
|
||||
import ChevronBannerIcon from "@/../public/banner_arr_btn.svg.svg"
|
||||
import ClampIcon from "../../../public/clamp.svg"
|
||||
|
||||
|
||||
const FormCustomization = () => {
|
||||
const {isOpen, onOpen, onOpenChange} = useDisclosure();
|
||||
return (
|
||||
<form className="bg-gray-4 rounded-[30px] p-20 text-white flex flex-col">
|
||||
<h2><i>Cоздать продукт «под себя»</i></h2>
|
||||
<p>Опишите нам задачи для создания вашего продукта</p>
|
||||
<div className="mb-5">
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="text"
|
||||
label="ФИО"
|
||||
/>
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="text"
|
||||
label="Город"
|
||||
/>
|
||||
<div className="flex flex-wrap items-end md:flex-nowrap md:mb-0 gap-4">
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="email"
|
||||
label="E-mail"
|
||||
/>
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="tel"
|
||||
label="Телефон"
|
||||
/>
|
||||
</div>
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="text"
|
||||
label="Описание задачи (тестовое)"
|
||||
/>
|
||||
</div>
|
||||
<div className="pt-5 pb-5">
|
||||
|
||||
<div className="flex flex-wrap flex-col font-semibold">
|
||||
<Link
|
||||
onPress={onOpen}
|
||||
color="primary"
|
||||
className={"flex flex-wrap flex-row gap-2"}
|
||||
>
|
||||
<ClampIcon className={"stroke-[2px] stroke-primary"}/>
|
||||
<div className="flex flex-wrap flex-col gap-2 items-start">
|
||||
<span className="hover:underline">Добавить документ</span>
|
||||
<span className="text-sm font-light text-white">
|
||||
Общий объём файлов не более 5 Мб
|
||||
</span>
|
||||
</div>
|
||||
</Link>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<Modal
|
||||
isOpen={isOpen}
|
||||
onOpenChange={onOpenChange}
|
||||
placement="bottom-center"
|
||||
>
|
||||
<ModalContent className="bg-black-2">
|
||||
{(onClose) => (
|
||||
<>
|
||||
<ModalHeader className="flex flex-col gap-1 text-white">Прикрепите файл</ModalHeader>
|
||||
<ModalBody>
|
||||
<Input
|
||||
type="file"
|
||||
/>
|
||||
</ModalBody>
|
||||
<ModalFooter>
|
||||
<Button color="danger" variant="flat" onPress={onClose}>
|
||||
Отмена
|
||||
</Button>
|
||||
<Button color="primary" onPress={onClose}>
|
||||
Прикрепить
|
||||
</Button>
|
||||
</ModalFooter>
|
||||
</>
|
||||
)}
|
||||
</ModalContent>
|
||||
</Modal>
|
||||
</div>
|
||||
|
||||
<div className="flex flex-wrap flex-row justify-between gap-5">
|
||||
<Checkbox defaultSelected color={"primary"}
|
||||
className={"[&_span:last-child]:!text-white [&_span:last-child]:text-subtitle-5 [&_span:last-child]:leading-normal"}>Нажимая
|
||||
кнопку «Отправить отклик», я даю согласие на
|
||||
<Link className={"text-primary text-sm"}
|
||||
underline={"hover"}
|
||||
href={"https://tehnohimgrupp.ru/upload/Согласие на ОПД Технохим.pdf"}>
|
||||
обработку моих персональных данных
|
||||
</Link>
|
||||
</Checkbox>
|
||||
<Button className="text-black text-xl font-extrabold h-[70px] uppercase flex flex-wrap gap-10"
|
||||
color={"primary"} endContent={<ChevronBannerIcon className={"stroke-[3px] stroke-black"}/>}><i>Отправить
|
||||
отклик</i></Button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
)
|
||||
}
|
||||
|
||||
export default FormCustomization
|
|
@ -0,0 +1,116 @@
|
|||
import {
|
||||
Button,
|
||||
Checkbox,
|
||||
Input,
|
||||
Link
|
||||
} from "@nextui-org/react";
|
||||
import ChevronBannerIcon from "@/../public/banner_arr_btn.svg.svg"
|
||||
|
||||
|
||||
const FormMission = () => {
|
||||
return (
|
||||
<form className="bg-gray-4 rounded-[30px] p-20 text-white flex flex-col">
|
||||
<h2><i>Оставить заявку</i></h2>
|
||||
<div className="mb-5">
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="text"
|
||||
label="ФИО контактного лица"
|
||||
/>
|
||||
<div className="flex flex-wrap items-end md:flex-nowrap md:mb-0 gap-4">
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="email"
|
||||
label="E-mail"
|
||||
/>
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="tel"
|
||||
label="Телефон"
|
||||
/>
|
||||
</div>
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="text"
|
||||
label="Ваш вопрос"
|
||||
/>
|
||||
</div>
|
||||
<div className="flex flex-wrap flex-row justify-between gap-5">
|
||||
<Checkbox defaultSelected color={"primary"}
|
||||
className={"[&_span:last-child]:!text-white [&_span:last-child]:text-subtitle-5 [&_span:last-child]:leading-normal"}>Нажимая
|
||||
кнопку «Отправить отклик», я даю согласие на
|
||||
<Link className={"text-primary text-sm"}
|
||||
underline={"hover"}
|
||||
href={"https://tehnohimgrupp.ru/upload/Согласие на ОПД Технохим.pdf"}>
|
||||
обработку моих персональных данных
|
||||
</Link>
|
||||
</Checkbox>
|
||||
<Button className="text-black text-xl font-extrabold h-[70px] uppercase flex flex-wrap gap-10"
|
||||
color={"primary"} endContent={<ChevronBannerIcon className={"stroke-[3px] stroke-black"}/>}><i>Отправить вопрос</i></Button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
)
|
||||
}
|
||||
|
||||
export default FormMission
|
|
@ -0,0 +1,247 @@
|
|||
import {Button, Checkbox, Input, RadioGroup, Radio,Link} from "@nextui-org/react";
|
||||
|
||||
import ChevronBannerIcon from "@/../public/banner_arr_btn.svg.svg"
|
||||
|
||||
|
||||
const FormPersonalization = () => {
|
||||
return (
|
||||
<form className="bg-gray-4 rounded-[30px] p-7 lg:p-20 text-white flex flex-col">
|
||||
<h2><i>Обратиться в Научно-Технический Центр (НТЦ) ООО «ТД Технохим Групп»</i></h2>
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="text"
|
||||
label="Полное название компании"
|
||||
/>
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="text"
|
||||
label="Юридический адрес"
|
||||
/>
|
||||
<div className="flex flex-wrap items-end md:flex-nowrap md:mb-0 gap-4">
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="text"
|
||||
label="ИНН"
|
||||
/>
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="text"
|
||||
label="Почтовый адрес"
|
||||
/>
|
||||
</div>
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="text"
|
||||
label="Ваши ФИО"
|
||||
/>
|
||||
<div className="flex flex-wrap items-end md:flex-nowrap mb-6 md:mb-0 gap-4">
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="text"
|
||||
label="Ваша должность, звание"
|
||||
/>
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="text"
|
||||
label="Вид деятельности"
|
||||
/>
|
||||
</div>
|
||||
<div className="flex flex-wrap items-end md:flex-nowrap mb-6 md:mb-0 gap-4">
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="tel"
|
||||
label="Ваш рабочий телефон"
|
||||
/>
|
||||
<Input
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[65px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[60px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage="Поле обязательно для заполнения"
|
||||
labelPlacement="outside"
|
||||
type="email"
|
||||
label="Ваш рабочий Email"
|
||||
/>
|
||||
</div>
|
||||
<div className="flex flex-wrap flex-col gap-5 mb-10 mt-10">
|
||||
<RadioGroup
|
||||
color={"primary"}
|
||||
>
|
||||
<Radio
|
||||
classNames={{
|
||||
label: [
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
value="niokr">
|
||||
Запрос на сотрудничество (НИОКР)
|
||||
</Radio>
|
||||
<Radio
|
||||
classNames={{
|
||||
label: [
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
value="edu">
|
||||
Обучение
|
||||
</Radio>
|
||||
<Radio
|
||||
classNames={{
|
||||
label: [
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
value="another">
|
||||
Иные вопросы
|
||||
</Radio>
|
||||
</RadioGroup>
|
||||
</div>
|
||||
<div className="flex flex-wrap flex-row justify-between gap-5">
|
||||
<Checkbox defaultSelected color={"primary"}
|
||||
className={"[&_span:last-child]:!text-white [&_span:last-child]:text-subtitle-5 [&_span:last-child]:leading-normal"}>Нажимая кнопку «Оформить заказ», я даю согласие на
|
||||
<Link className={"text-primary text-sm"}
|
||||
underline={"hover"}
|
||||
href={"https://tehnohimgrupp.ru/upload/Согласие на ОПД Технохим.pdf"}>
|
||||
обработку моих персональных данных
|
||||
</Link>
|
||||
</Checkbox>
|
||||
<Button className="text-black text-xl font-extrabold h-[70px] uppercase flex flex-wrap gap-10"
|
||||
color={"primary"} endContent={<ChevronBannerIcon className={"stroke-[3px] stroke-black"}/>}><i>Отправить
|
||||
вопрос</i></Button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
)
|
||||
}
|
||||
|
||||
export default FormPersonalization
|
|
@ -0,0 +1,47 @@
|
|||
import {
|
||||
Button,
|
||||
Input,
|
||||
} from "@nextui-org/react";
|
||||
import ChevronBannerIcon from "@/../public/banner_arr_btn.svg.svg"
|
||||
|
||||
|
||||
const FormSupport = () => {
|
||||
return (
|
||||
<form className="bg-gray-4 rounded-[30px] p-7 lg:p-12 xl:p-16 text-white flex flex-col">
|
||||
<h2><i>Проверить масло</i></h2>
|
||||
<div className="grid lg:grid-cols-12 lg:items-baseline gap-4">
|
||||
<Input
|
||||
className="col-span-1 lg:col-span-8 2xl:col-span-9"
|
||||
classNames={{
|
||||
inputWrapper: [
|
||||
"bg-transparent",
|
||||
"h-[70px]",
|
||||
"border-gray-3",
|
||||
],
|
||||
label: [
|
||||
"group[data-filled-within=true] group-data-[filled-within=true]:-translate-y-[70px] group-data-[filled-within=true]:text-[#FFFFFF]",
|
||||
"text-white",
|
||||
]
|
||||
}}
|
||||
variant={"bordered"}
|
||||
color={"primary"}
|
||||
isRequired
|
||||
errorMessage={"Поле обязательно для заполнения"}
|
||||
labelPlacement="outside"
|
||||
type="text"
|
||||
label="Введите уникальный 15-ти значный код"
|
||||
/>
|
||||
|
||||
<Button
|
||||
className="text-black text-xl font-extrabold h-[70px] uppercase gap-5 col-span-1 lg:col-span-4 2xl:col-span-3"
|
||||
color={"primary"} endContent={<ChevronBannerIcon className={"stroke-[3px] stroke-black"}/>}>
|
||||
<i>Проверить масло</i>
|
||||
</Button>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
)
|
||||
}
|
||||
|
||||
export default FormSupport
|
|
@ -5,6 +5,7 @@ import {
|
|||
Navbar,
|
||||
NavbarBrand,
|
||||
NavbarContent,
|
||||
Tooltip,
|
||||
NavbarItem
|
||||
} from "@nextui-org/react";
|
||||
import Link from "next/link";
|
||||
|
@ -107,44 +108,57 @@ const Header = () => {
|
|||
</nav>
|
||||
|
||||
<div className="w-[35%] xl:w-[30%] xl:flex justify-end [&>*]:mr-4 items-center hidden">
|
||||
<div
|
||||
className={'border-1 border-[#404040] rounded-[8px] group hover:border-green-2 transition-colors cursor-pointer px-3 h-[50px] flex items-center'}>
|
||||
<SearchIcon className={"stroke-2 stroke-white group-hover:stroke-green-2 transition-colors"}/>
|
||||
</div>
|
||||
<Tooltip content={"В разработке"} className={"text-black"} size={"lg"}>
|
||||
<div
|
||||
className={'border-1 border-[#404040] rounded-[8px] group hover:border-green-2 transition-colors cursor-pointer px-3 h-[50px] flex items-center'}>
|
||||
<SearchIcon className={"stroke-2 stroke-white group-hover:stroke-green-2 transition-colors"}/>
|
||||
<span
|
||||
className={"block bg-primary text-black absolute top-[-10%] left-0 w-full font-bold lg:hidden px-4 py-2"}>
|
||||
В разработке
|
||||
</span>
|
||||
</div>
|
||||
</Tooltip>
|
||||
|
||||
<div
|
||||
className={"border-1 border-[#404040] rounded-[8px] group hover:border-green-2 transition-colors cursor-pointer px-3 h-[50px] flex items-center"}>
|
||||
<Link href={"#"}
|
||||
<Link href={"tel:+74951919720"}
|
||||
className={"text-xs 2xl:text-header-link text-white group-hover:text-green-2 group-hover:opacity-100 transition-colors"}>+7(495)191-97-20</Link>
|
||||
</div>
|
||||
<Tooltip content={"В разработке"} className={"text-black"} size={"lg"}>
|
||||
<div className={"flex flex-row items-center group"}>
|
||||
{/* <Dropdown> */}
|
||||
{/* <DropdownTrigger> */}
|
||||
<button
|
||||
className={"flex flex-row items-center border-[#404040] border-1 hover:border-green-2 rounded-[8px] transition-colors h-[50px] px-3"}>
|
||||
<RegistrationIcon
|
||||
className={"mr-2 fill-white group-hover:fill-green-2 transition-colors"}/>
|
||||
<span
|
||||
className={"text-white group-hover:text-green-2 transition-colors"}>Вход</span>
|
||||
<span
|
||||
className={"block bg-primary text-black absolute top-[-10%] left-0 w-full font-bold lg:hidden px-4 py-2"}>
|
||||
В разработке
|
||||
</span>
|
||||
</button>
|
||||
{/* </DropdownTrigger> */}
|
||||
{/* <DropdownMenu className={"text-black"}>
|
||||
<DropdownItem key={"business-login"}>Войти как Юр. Лицо</DropdownItem>
|
||||
<DropdownItem key={"personal-login"}>Войти как Физ. Лицо</DropdownItem>
|
||||
</DropdownMenu> */}
|
||||
|
||||
<div className={"flex flex-row items-center group"}>
|
||||
<Dropdown>
|
||||
<DropdownTrigger>
|
||||
<button
|
||||
className={"flex flex-row items-center border-[#404040] border-1 hover:border-green-2 rounded-[8px] transition-colors h-[50px] px-3"}>
|
||||
<RegistrationIcon
|
||||
className={"mr-2 fill-white group-hover:fill-green-2 transition-colors"}/>
|
||||
<span
|
||||
className={"text-white group-hover:text-green-2 transition-colors"}>Вход</span>
|
||||
</button>
|
||||
</DropdownTrigger>
|
||||
<DropdownMenu className={"text-black"}>
|
||||
<DropdownItem key={"business-login"}>Войти как Юр. Лицо</DropdownItem>
|
||||
<DropdownItem key={"personal-login"}>Войти как Физ. Лицо</DropdownItem>
|
||||
</DropdownMenu>
|
||||
{/* </Dropdown> */}
|
||||
</div>
|
||||
</Tooltip>
|
||||
|
||||
</Dropdown>
|
||||
</div>
|
||||
|
||||
{cart.data &&
|
||||
<Badge isInvisible={!Boolean(cart.data.data)} color={"primary"} content={cart.data.data && cart.data.data.length}
|
||||
className={"text-black font-semibold"}>
|
||||
<Link href={'/cart'}
|
||||
className={"rounded-[8px] group transition-colors cursor-pointer bg-transparent hover:bg-primary flex items-center px-3 h-[50px]"}>
|
||||
<CartLogo className={"fill-white group-hover:fill-black-1 transition-colors"}/>
|
||||
</Link>
|
||||
</Badge>
|
||||
}
|
||||
{/*{cart.data &&*/}
|
||||
{/* <Badge isInvisible={!Boolean(cart.data.data)} color={"primary"} content={cart.data.data && cart.data.data.length}*/}
|
||||
{/* className={"text-black font-semibold"}>*/}
|
||||
{/* <Link href={'/cart'}*/}
|
||||
{/* className={"rounded-[8px] group transition-colors cursor-pointer bg-transparent hover:bg-primary flex items-center px-3 h-[50px]"}>*/}
|
||||
{/* <CartLogo className={"fill-white group-hover:fill-black-1 transition-colors"}/>*/}
|
||||
{/* </Link>*/}
|
||||
{/* </Badge>*/}
|
||||
{/*}*/}
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -179,6 +193,7 @@ const Header = () => {
|
|||
className={"text-xs 2xl:text-header-link text-white group-hover:text-green-2 group-hover:opacity-100 transition-colors"}>+7(495)191-97-20</Link>
|
||||
</div>
|
||||
|
||||
|
||||
<div className={"flex flex-row items-center group w-1/2"}>
|
||||
<Dropdown>
|
||||
<DropdownTrigger>
|
||||
|
@ -198,6 +213,7 @@ const Header = () => {
|
|||
</Dropdown>
|
||||
</div>
|
||||
|
||||
|
||||
{cart.data &&
|
||||
<Badge isInvisible={!Boolean(cart.data.data)} color={"primary"} content={cart.data.data && cart.data.data.length}
|
||||
className={"text-black font-semibold"}>
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
import {
|
||||
Button, Link,
|
||||
|
||||
} from "@nextui-org/react";
|
||||
import DocIcon from "../../../public/docdownload.svg"
|
||||
|
||||
type DocProps = {
|
||||
name: string,
|
||||
link: string,
|
||||
}
|
||||
|
||||
const LinkDoc = (props:DocProps) => {
|
||||
return (
|
||||
<Button
|
||||
className="flex flex-row p-7 text-base justify-between shadow-lg rounded-xl whitespace-normal gap-5 border-0 h-[70px] sm:w-full"
|
||||
variant="bordered"
|
||||
href={props.link ?? ''}
|
||||
as={Link}
|
||||
// onPress={() => {
|
||||
// window.location.href ={props.link};
|
||||
// }}
|
||||
>
|
||||
<div className="flex items-center gap-3">
|
||||
<DocIcon className="fill-primary"/>
|
||||
<div className="text-base ">{props.name}</div>
|
||||
</div>
|
||||
{/*<span className="text-xs font-light text-gray-3">{props.weight}</span>*/}
|
||||
</Button>
|
||||
)
|
||||
}
|
||||
|
||||
export default LinkDoc
|
|
@ -0,0 +1,27 @@
|
|||
import {
|
||||
Button,
|
||||
|
||||
} from "@nextui-org/react";
|
||||
import DocIcon from "../../../public/docdownload.svg"
|
||||
|
||||
|
||||
const LinkSupport = () => {
|
||||
return (
|
||||
<div className="">
|
||||
<Button
|
||||
className="flex flex-row p-7 text-base justify-between shadow-lg rounded-xl whitespace-normal border-0 h-[70px]"
|
||||
variant="bordered"
|
||||
href={""}
|
||||
>
|
||||
<div className="flex items-center justify-center gap-3">
|
||||
<DocIcon className="fill-gray-3" />
|
||||
<span className="text-base "></span>
|
||||
</div>
|
||||
<span className="!text-xs font-light text-gray-3">542 КБ</span>
|
||||
</Button>
|
||||
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default LinkSupport
|
|
@ -0,0 +1,25 @@
|
|||
export default function Logo() {
|
||||
return (
|
||||
<svg viewBox="0 0 425 52" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_544_20628)">
|
||||
<path d="M167.082 26.0001H185.865L191.984 35.9265L207.032 25.9688L213.717 26.0001L191.419 40.6624L186.351 52.0001H171.366L176.293 40.8505L167.082 26.0001Z" fill="#151515"/>
|
||||
<path d="M217.561 26L205.949 52H212.602L217.482 41.0072L244.848 52H252.458L264.038 26H257.464L252.474 37.1809L224.904 26H217.561Z" fill="#151515"/>
|
||||
<path d="M288.72 52.0001H269.232C266.925 52.0001 265.105 51.4355 263.771 50.2908C262.328 49.0519 261.606 47.3113 261.606 45.0531C261.606 43.2341 262.092 41.2112 263.081 38.9844C264.666 35.3776 267.019 32.3511 270.142 29.9204C273.531 27.2859 277.077 25.9844 280.796 25.9844H300.285C302.607 25.9844 304.443 26.5332 305.777 27.6466C307.22 28.8384 307.942 30.5477 307.942 32.8058C307.942 34.6563 307.44 36.7106 306.42 38.9844C304.851 42.5441 302.482 45.5549 299.328 48.0013C295.907 50.6515 292.376 51.9844 288.705 51.9844L288.72 52.0001ZM292.706 32.4452C292.706 31.1279 291.764 30.4693 289.897 30.4693H286.555C284.829 30.4693 283.417 31.0809 282.303 32.3197C281.596 33.1038 280.812 34.4681 279.949 36.4126L278.097 40.5369C277.093 42.7793 276.575 44.4102 276.575 45.4295C276.575 46.8252 277.376 47.5151 278.96 47.5151H282.303C284.076 47.5151 285.613 46.7467 286.932 45.21C287.795 44.2063 288.689 42.6382 289.63 40.5525L291.482 36.4283C292.298 34.5779 292.69 33.2606 292.69 32.4452H292.706Z" fill="#151515"/>
|
||||
<path d="M153.022 47.5307C151.124 47.5307 150.182 46.8878 150.182 45.6019C150.182 44.7864 150.606 43.4535 151.438 41.5874L158.31 26.0156H142.541L130.976 52.0156H166.454L168.463 47.5464H153.022V47.5307Z" fill="#151515"/>
|
||||
<path d="M327.29 47.5307C325.391 47.5307 324.45 46.8878 324.45 45.6019C324.45 44.7864 324.874 43.4535 325.705 41.5874L332.578 26.0156H316.808L305.244 52.0156H340.722L342.73 47.5464H327.29V47.5307Z" fill="#151515"/>
|
||||
<path d="M367.836 47.5307C365.938 47.5307 364.996 46.8878 364.996 45.6019C364.996 44.7864 365.42 43.4535 366.252 41.5874L373.124 26.0156H357.355L345.79 52.0156H381.268L383.277 47.5464H367.836V47.5307Z" fill="#151515"/>
|
||||
<path d="M386.117 52H401.887L413.452 26H397.572L386.117 52Z" fill="#151515"/>
|
||||
<path d="M39.0087 0H23.129L0 52H15.8169L39.0087 0Z" fill="#151515"/>
|
||||
<path d="M418.99 13.5332L424.999 0H409.026L407.77 2.85404C406.138 6.55489 402.482 8.93848 398.434 8.93848H150.103L148.094 13.5332H418.99Z" fill="#151515"/>
|
||||
<path d="M59.2661 52L41.9586 26.2666L45.3479 19.1785H57.2106C59.2347 19.1785 61.1805 18.7551 63.0477 17.8926C65.1818 16.9361 66.594 15.6502 67.3315 14.0193C67.5982 13.4077 67.7238 12.8589 67.7238 12.3571C67.7238 10.0832 65.778 8.93848 61.8866 8.93848H44.7359L25.0747 52H18.092L41.8017 0H79.4452C82.7561 0 85.4864 0.627262 87.6047 1.89747C90.1938 3.41858 91.4961 5.6924 91.4961 8.71894C91.4961 10.3812 91.1038 12.0277 90.335 13.6429C88.5148 17.532 85.4393 20.7937 81.0771 23.4282C77.1856 25.7021 72.8391 27.2232 68.0062 27.9759C78.692 43.0929 84.7802 52 84.7802 52H59.2661Z" fill="#B3C53F"/>
|
||||
<path d="M118.689 30.4692H135.369L137.425 26H101.021L89.1582 52H125.546L127.602 47.5308H111.769C109.824 47.5308 108.851 46.8878 108.851 45.6019C108.851 44.7865 109.275 43.4536 110.138 41.5875L113.731 33.6212C114.594 31.7081 116.54 30.4849 118.674 30.4849L118.689 30.4692Z" fill="#B3C53F"/>
|
||||
<path d="M123.945 41.2427L126.001 36.7578H116.508H116.147L114.107 41.2427H123.945Z" fill="#B3C53F"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_544_20628">
|
||||
<rect width="425" height="52" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
)
|
||||
}
|
|
@ -49,7 +49,7 @@ const Wrapper = (props: WrapperProps) => {
|
|||
|
||||
export const WrapperDark =(props: WrapperProps) => {
|
||||
return <>
|
||||
<section className={"bg-black-2 text-white py-7"}>
|
||||
<section className={"bg-black-4 text-white py-7"}>
|
||||
<div className="wrapper">
|
||||
{
|
||||
props.breadcrumbs &&
|
||||
|
|
|
@ -9,7 +9,7 @@ const News = (props: InferGetStaticPropsType<typeof getStaticProps>) => {
|
|||
{
|
||||
props.news.picture && <Img className={"max-h-[250px] lg:max-h-[500px] mb-6 mx-auto rounded-[20px]"} src={"https://relynolli.ru/upload/" + props.news.picture} alt={props.news.name} />
|
||||
}
|
||||
<div className="content text-base lg:text-2xl [&>*]:mb-4 [&_img]:max-h-[250px] [&_img]:lg:max-h-[500px] [&_a]:text-primary break-words" dangerouslySetInnerHTML={{__html: props.news.content}}></div>
|
||||
<div className="content text-base lg:text-xl [&>*]:mb-4 [&_img]:max-h-[250px] [&_img]:lg:max-h-[500px] [&_a]:text-primary break-words" dangerouslySetInnerHTML={{__html: props.news.content}}></div>
|
||||
</Wrapper>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
import {Img} from "react-image";
|
||||
import {useQuery} from "@tanstack/react-query";
|
||||
import LocalAPI from "@/service/localAPI";
|
||||
// @ts-ignore
|
||||
import {News} from "@/service/types/local";
|
||||
import {WrapperDark} from "@/components/reusable/wrapper";
|
||||
import {Skeleton} from "@nextui-org/react";
|
||||
import Link from "next/link";
|
||||
import Head from "next/head";
|
||||
|
||||
const NewsCard = (props: News) => {
|
||||
return (
|
||||
|
@ -36,6 +38,11 @@ const News = () => {
|
|||
})
|
||||
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>Блог Relynolli – полезные статьи о моторных маслах</title>
|
||||
<meta name={"description"} content={"В нашем блоге вы найдете полезные статьи о моторных маслах, классификации, спецификациях. Рекомендации бо использовании машинных масел для двигателей от экспертов Relynolli."}/>
|
||||
</Head>
|
||||
<WrapperDark title={"Статьи"} breadcrumbs={[{name: "Статьи", link: "/articles"}]}>
|
||||
|
||||
<div className="news-container grid grid-cols-1 lg:grid-cols-3 gap-5">
|
||||
|
@ -49,7 +56,10 @@ const News = () => {
|
|||
}
|
||||
|
||||
</div>
|
||||
</WrapperDark>)
|
||||
</WrapperDark>
|
||||
|
||||
</>
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import {BreadcrumbItem, Breadcrumbs, Button, Skeleton, Spinner} from "@nextui-org/react";
|
||||
import {BreadcrumbItem, Breadcrumbs, Button, Spinner} from "@nextui-org/react";
|
||||
import HomeIcon from "../../../public/home_icon.svg";
|
||||
import Link from "next/link";
|
||||
import {InferGetStaticPropsType} from "next";
|
||||
|
@ -8,9 +8,10 @@ import favouritesStore, {toggleFavourite} from "@/store/favourites";
|
|||
import {useSnapshot} from "valtio";
|
||||
import useClient from "@/hooks/useClient";
|
||||
import LocalAPI from "@/service/localAPI";
|
||||
import {useQuery, useQueryClient, useMutation} from "@tanstack/react-query";
|
||||
import {useMutation, useQuery, useQueryClient} from "@tanstack/react-query";
|
||||
import {Img} from 'react-image'
|
||||
import {CartItem, Wrapper} from "@/service/types/local";
|
||||
import LinkDoc from "@/components/reusable/linkDoc";
|
||||
|
||||
const OilCard = ({product}: InferGetStaticPropsType<typeof getStaticProps>) => {
|
||||
const {favourites} = useSnapshot(favouritesStore)
|
||||
|
@ -39,11 +40,12 @@ const OilCard = ({product}: InferGetStaticPropsType<typeof getStaticProps>) => {
|
|||
<>
|
||||
<section className={"bg-black-4"}>
|
||||
<div className="wrapper pt-8">
|
||||
<Breadcrumbs separator="/"
|
||||
itemClasses={{
|
||||
separator: "px-2 text-[#8F8F8F]",
|
||||
item: "text-[#8F8F8F]"
|
||||
}}
|
||||
<Breadcrumbs
|
||||
separator="/"
|
||||
itemClasses={{
|
||||
separator: "px-2 text-[#8F8F8F]",
|
||||
item: "text-[#8F8F8F] whitespace-normal",
|
||||
}}
|
||||
>
|
||||
<BreadcrumbItem startContent={<HomeIcon/>}>
|
||||
<Link href={"/"}>Главная</Link>
|
||||
|
@ -53,11 +55,13 @@ const OilCard = ({product}: InferGetStaticPropsType<typeof getStaticProps>) => {
|
|||
Каталог
|
||||
</Link>
|
||||
</BreadcrumbItem>
|
||||
<BreadcrumbItem><Link className={"!whitespace-break-spaces"} href={"/catalog/" + product.name}>{product.name}</Link></BreadcrumbItem>
|
||||
<BreadcrumbItem>{product.name}</BreadcrumbItem>
|
||||
</Breadcrumbs>
|
||||
</div>
|
||||
<div className="wrapper mt-12 grid grid-cols-1 lg:grid-cols-2 gap-4 items-center">
|
||||
{isClient && product.properties.main_image && <Img src={"https://relynolli.ru/upload/" + product.properties.main_image[0]} alt={product.name} className={"object-center max-w-[300px] mx-auto"} loader={<Spinner />}/>}
|
||||
<div className="wrapper mt-12 mb-12 grid grid-cols-1 lg:grid-cols-2 gap-4 items-center">
|
||||
{isClient && product.properties.main_image &&
|
||||
<Img src={"https://relynolli.ru/upload/" + product.properties.main_image[0]} alt={product.name}
|
||||
className={"object-center max-w-[300px] mx-auto"} loader={<Spinner/>}/>}
|
||||
<div className="right-block mt-4">
|
||||
<span
|
||||
className={"text-sm md:text-xl text-[#E0E3E3] mb-7 block"}>Артикул: {product.properties.vendor_code}</span>
|
||||
|
@ -80,22 +84,24 @@ const OilCard = ({product}: InferGetStaticPropsType<typeof getStaticProps>) => {
|
|||
<span className={"block text-base text-[#E0E3E3] font-normal"}>1 шт</span>
|
||||
</span>
|
||||
|
||||
{isClient &&
|
||||
<Button onClick={() => toggleCart.mutate({productId: product.id, quantity: 1})} color={"primary"} className={"order-3 col-span-2 lg:order-none text-black font-extrabold uppercase italic h-[70px]"}
|
||||
startContent={<Cart/>}>
|
||||
{/*{isClient &&*/}
|
||||
{/* <Button onClick={() => toggleCart.mutate({productId: product.id, quantity: 1})}*/}
|
||||
{/* color={"primary"}*/}
|
||||
{/* className={"order-3 col-span-2 lg:order-none text-black font-extrabold uppercase italic h-[70px]"}*/}
|
||||
{/* startContent={<Cart/>}>*/}
|
||||
|
||||
{(cartItems.data && cartItems.data.data && cartItems.data.data.map((item)=> item.product.id).includes(product.id)) ? "В корзине" : "Добавить в корзину"}
|
||||
{/* {(cartItems.data && cartItems.data.data && cartItems.data.data.map((item) => item.product.id).includes(product.id)) ? "В корзине" : "Добавить в корзину"}*/}
|
||||
|
||||
</Button>}
|
||||
{/* </Button>}*/}
|
||||
{
|
||||
isClient &&
|
||||
<Button onClick={() => toggleFavourite(product.id)} className={`max-w-fit justify-self-end lg:justify-self-start order-2 lg:order-none px-5 rounded-[8px] h-[70px] ${favourites.includes(product.id) ? "bg-green-2 fill-black": "bg-[#E2E2E5] bg-opacity-30 fill-white"}`}>
|
||||
<Favourites />
|
||||
<Button onClick={() => toggleFavourite(product.id)}
|
||||
className={`max-w-fit justify-self-end lg:justify-self-start order-2 lg:order-none px-5 rounded-[8px] h-[70px] ${favourites.includes(product.id) ? "bg-green-2 fill-black" : "bg-[#E2E2E5] bg-opacity-30 fill-white"}`}>
|
||||
<Favourites/>
|
||||
</Button>
|
||||
}
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -105,7 +111,8 @@ const OilCard = ({product}: InferGetStaticPropsType<typeof getStaticProps>) => {
|
|||
<section className={"bg-white text-black"}>
|
||||
<div className="wrapper pt-12">
|
||||
<h2 className={"text-title-3 font-semibold mb-4"}>Описание</h2>
|
||||
<p className={"mb-16 block"}>{product.detailText}</p>
|
||||
<div className="description mb-16 block" dangerouslySetInnerHTML={{__html: product.detailText}}>
|
||||
</div>
|
||||
|
||||
<h2 className={"text-title-3 font-semibold mb-4"}>Характеристики</h2>
|
||||
|
||||
|
@ -169,7 +176,13 @@ const OilCard = ({product}: InferGetStaticPropsType<typeof getStaticProps>) => {
|
|||
|
||||
|
||||
<h2 className={"text-title-3 font-semibold mb-4"}>Документация</h2>
|
||||
{/* TODO Документация */}
|
||||
<div className="pb-4 flex flex-row">
|
||||
{isClient && product.properties.documents &&
|
||||
<LinkDoc name={product.properties.documents[0]} link={product.properties.documents[0]}/>}
|
||||
{/*"relynolli.ru/upload/"+*/}
|
||||
{isClient && product.properties.documents &&
|
||||
<LinkDoc name={product.properties.documents[1]} link={product.properties.documents[1]}/>}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</>
|
||||
|
@ -193,7 +206,7 @@ export const getStaticPaths = async () => {
|
|||
|
||||
export const getStaticProps = async ({params: {code}}: { params: { code: string } }) => {
|
||||
const service = new LocalAPI()
|
||||
try {
|
||||
try {
|
||||
const data = await service.getCatalogItemByCode(code)
|
||||
return {
|
||||
props: {
|
||||
|
@ -201,10 +214,9 @@ export const getStaticProps = async ({params: {code}}: { params: { code: string
|
|||
},
|
||||
revalidate: 10 * 60
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
} catch (e) {
|
||||
return {
|
||||
notFound: true,
|
||||
notFound: true,
|
||||
revalidate: 10 * 60
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ import LocalAPI from "@/service/localAPI";
|
|||
import { Img } from "react-image";
|
||||
import { Dispatch, SetStateAction, useEffect, useState } from "react";
|
||||
import { Product } from "@/service/types/local";
|
||||
import Head from "next/head";
|
||||
|
||||
type SelectedFiltersStruct = {
|
||||
[key: string]: string[];
|
||||
|
@ -189,25 +190,25 @@ const CatalogCard = (product: Product & { isFavourite: boolean }) => {
|
|||
{`${product.price.BASE}`.replace(/\B(?=(\d{3})+(?!\d))/g, " ")} ₽
|
||||
</span>
|
||||
|
||||
{(cartItems.data) ? (
|
||||
<Button
|
||||
onClick={() =>
|
||||
toggleCart.mutate({
|
||||
productId: product.id,
|
||||
quantity: 1,
|
||||
})
|
||||
}
|
||||
className={
|
||||
"bg-green-2 text-black-3 relative z-20 text-lg font-bold uppercase italic"
|
||||
}
|
||||
>
|
||||
{(cartItems.data && cartItems.data.data && cartItems.data.data
|
||||
.map(({ productId }) => productId)
|
||||
.includes(product.id))
|
||||
? "В корзине"
|
||||
: "В корзину"}
|
||||
</Button>
|
||||
) : null}
|
||||
{/*{(cartItems.data) ? (*/}
|
||||
{/* <Button*/}
|
||||
{/* onClick={() =>*/}
|
||||
{/* toggleCart.mutate({*/}
|
||||
{/* productId: product.id,*/}
|
||||
{/* quantity: 1,*/}
|
||||
{/* })*/}
|
||||
{/* }*/}
|
||||
{/* className={*/}
|
||||
{/* "bg-green-2 text-black-3 relative z-20 text-lg font-bold uppercase italic"*/}
|
||||
{/* }*/}
|
||||
{/* >*/}
|
||||
{/* {(cartItems.data && cartItems.data.data && cartItems.data.data*/}
|
||||
{/* .map(({ productId }) => productId)*/}
|
||||
{/* .includes(product.id))*/}
|
||||
{/* ? "В корзине"*/}
|
||||
{/* : "В корзину"}*/}
|
||||
{/* </Button>*/}
|
||||
{/*) : null}*/}
|
||||
|
||||
<Link
|
||||
href={"/catalog/" + product.code}
|
||||
|
@ -242,46 +243,63 @@ const Catalog = (props: InferGetStaticPropsType<typeof getStaticProps>) => {
|
|||
});
|
||||
|
||||
return (
|
||||
<Wrapper
|
||||
title={"Каталог"}
|
||||
breadcrumbs={[{ name: "Каталог", link: "/catalog" }]}
|
||||
>
|
||||
<div className="mb-4 flex justify-end">
|
||||
<Pagination
|
||||
page={page}
|
||||
total={totalPageCount}
|
||||
initialPage={1}
|
||||
onChange={(page) => {
|
||||
setPage(page);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
<div className="flex flex-col justify-between lg:flex-row">
|
||||
<FilterGenerator
|
||||
filterPropertiesData={props.filterPropertiesData}
|
||||
setSelectedFilter={setSelectedFilters}
|
||||
/>
|
||||
<div className="products grid h-fit w-full grid-cols-1 gap-7 lg:w-3/4 2xl:grid-cols-2">
|
||||
{catalogQuery.isFetching &&
|
||||
Array(10)
|
||||
.fill(null)
|
||||
.map((_, index) => (
|
||||
<Skeleton key={index} className={"h-[250px] rounded-[20px]"} />
|
||||
))}
|
||||
|
||||
{catalogQuery.data &&
|
||||
catalogQuery.data.data!.map((product) => (
|
||||
<>
|
||||
<CatalogCard
|
||||
key={product.id}
|
||||
{...product}
|
||||
isFavourite={favourites.includes(product.id)}
|
||||
/>
|
||||
</>
|
||||
))}
|
||||
<>
|
||||
<Head>
|
||||
<title>Каталог Relynolli – купить моторное масло для автомобиля и техники на официальном сайте</title>
|
||||
<meta name={"description"} content={"Relynolli предлагает большой выбор моторных масел для легковых автомобилей, коммерческого транспорта и спецтехник: цены и характеристики в каталоге. Выбирайте лучшее машинное масло."}/>
|
||||
</Head>
|
||||
<Wrapper
|
||||
title={"Каталог"}
|
||||
breadcrumbs={[{name: "Каталог", link: "/catalog"}]}
|
||||
>
|
||||
<div className="mb-4 flex justify-end">
|
||||
<Pagination
|
||||
page={page}
|
||||
total={totalPageCount}
|
||||
initialPage={1}
|
||||
onChange={(page) => {
|
||||
setPage(page);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</Wrapper>
|
||||
<div className="flex flex-col justify-between lg:flex-row">
|
||||
<FilterGenerator
|
||||
filterPropertiesData={props.filterPropertiesData}
|
||||
setSelectedFilter={setSelectedFilters}
|
||||
/>
|
||||
<div className="products grid h-fit w-full grid-cols-1 gap-7 lg:w-3/4 2xl:grid-cols-2">
|
||||
{catalogQuery.isFetching &&
|
||||
Array(10)
|
||||
.fill(null)
|
||||
.map((_, index) => (
|
||||
<Skeleton key={index} className={"h-[250px] rounded-[20px]"}/>
|
||||
))}
|
||||
|
||||
{catalogQuery.data &&
|
||||
catalogQuery.data.data!.map((product) => (
|
||||
<>
|
||||
<CatalogCard
|
||||
key={product.id}
|
||||
{...product}
|
||||
isFavourite={favourites.includes(product.id)}
|
||||
/>
|
||||
</>
|
||||
))}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div className="mt-4 flex justify-end">
|
||||
<Pagination
|
||||
page={page}
|
||||
total={totalPageCount}
|
||||
initialPage={1}
|
||||
onChange={(page) => {
|
||||
setPage(page);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</Wrapper>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import Wrapper from "@/components/reusable/wrapper";
|
||||
import Stepper from "@/components/reusable/stepper";
|
||||
import CallbackForm from "@/components/reusable/contacts/callbackForm";
|
||||
import Head from "next/head";
|
||||
|
||||
const Form1 = () => (
|
||||
<>
|
||||
|
@ -537,6 +538,13 @@ const Contact = () => {
|
|||
]
|
||||
|
||||
return (
|
||||
<>
|
||||
|
||||
<Head>
|
||||
|
||||
<title>Контакты Relynolli: телефоны, адреса, почта</title>
|
||||
<meta name={"description"} content={"Контактная информация Relynolli: телефон, график работы компании, адреса, email. Обратная связь."}/>
|
||||
</Head>
|
||||
<Wrapper title={"Контакты"} breadcrumbs={[{name: "Контакты", link: "/contacts"}]}>
|
||||
<iframe className={"rounded-[20px] mb-24"} src="https://yandex.ru/map-widget/v1/?um=constructor%3Aa9c71bba18ffe78a2028d1851bd205ecebc04063c76af8dedab6bceff5c73b24&source=constructor" width="100%" height="500"></iframe>
|
||||
|
||||
|
@ -576,6 +584,7 @@ const Contact = () => {
|
|||
|
||||
|
||||
</Wrapper>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ import {News, Wrapper} from "@/service/types/local";
|
|||
import useClient from "@/hooks/useClient";
|
||||
import {useQuery} from "@tanstack/react-query";
|
||||
import LocalAPI from "@/service/localAPI";
|
||||
import Head from "next/head";
|
||||
|
||||
const Hero = () => {
|
||||
return (
|
||||
|
@ -71,7 +72,7 @@ const Hero = () => {
|
|||
качественного моторного масла </h2>
|
||||
<span
|
||||
className={"text-xl uppercase xl:text-title-2 leading-inherit text-subtitle-1 mb-4 xl:mb-6 text-primary"}>-ЛЕГКО</span>
|
||||
<Link href={"https://forms.yandex.ru/u/65e4c1e9eb6146024f8e3234/"}
|
||||
<Link href={"https://yandex.ru/business/widget/request/company/32353164529"}
|
||||
className={'w-full lg:w-1/2 bg-green-2 rounded-[8px] p-6 flex justify-between items-center text-black hover:scale-105 transition'}>
|
||||
<span className={"text-sm text-[1.125rem] font-extrabold italic uppercase"}>Получить предложение о партнерстве</span>
|
||||
<ChevronBannerIcon className={"stroke-[3px] stroke-black"}/>
|
||||
|
@ -93,7 +94,7 @@ const Hero = () => {
|
|||
<span className={"text-sm italic leading-[100%] xl:text-subtitle-1 mb-4 xl:mb-6"}>Поставляем масло <span
|
||||
className={"text-primary"}>RELYNOLLI ®</span> в партнерские СТО на льготных условиях</span>
|
||||
|
||||
<Link href={"https://forms.yandex.ru/u/65e4c1e9eb6146024f8e3234/"}
|
||||
<Link href={"https://yandex.ru/business/widget/request/company/32353164529"}
|
||||
className={'w-full lg:w-1/2 bg-green-2 rounded-[8px] p-6 flex justify-between items-center text-black hover:scale-105 transition'}>
|
||||
<span className={"text-sm text-[1.125rem] font-extrabold italic uppercase"}>Узнать больше</span>
|
||||
<ChevronBannerIcon className={"stroke-[3px] stroke-black"}/>
|
||||
|
@ -110,7 +111,7 @@ const Hero = () => {
|
|||
|
||||
const MainInfo = () => {
|
||||
return (
|
||||
<section className={"bg-white text-black rounded-[8px]"}>
|
||||
<section className={"bg-white text-black"}>
|
||||
<div className="wrapper py-8 mb-8">
|
||||
<h1 className={"text-4xl xl:text-title-1 leading-normal font-bold text-center italic uppercase text-black mb-8"}>Моторные
|
||||
масла и смазочные материалы <br/>
|
||||
|
@ -122,7 +123,7 @@ const MainInfo = () => {
|
|||
<div
|
||||
className="wrapper mx-auto py-8 grid grid-cols-1 lg:grid-cols-2 grid-rows-3 lg:grid-rows-2 gap-4 h-auto [&>*]:h-[390px] [&_span]:text-base [&_span]:md:text-xl [&_span]:leading-[110%]">
|
||||
|
||||
<Card className={"lg:hover:scale-105 relative group lg:grayscale hover:grayscale-0 transition-all"}>
|
||||
<Card className={"lg:hover:scale-105 relative group lg:grayscale hover:grayscale-0 transition-all rounded-[30px]"}>
|
||||
<Link href={"/catalog"} className={"absolute top-0 left-0 z-20 w-full h-full"}/>
|
||||
<Image removeWrapper className={"w-full h-full object-cover brightness-75 relative z-10"}
|
||||
src={"/oil2.png"}></Image>
|
||||
|
@ -136,7 +137,7 @@ const MainInfo = () => {
|
|||
|
||||
</Card>
|
||||
|
||||
<Tooltip content={"Выпуск Апрель 2024"} className={"text-black"} size={"lg"}>
|
||||
<Tooltip content={"Выпуск Июнь 2024"} className={"text-black"} size={"lg"}>
|
||||
<Card className={"rounded-[30px] group transition-size"}>
|
||||
<Image removeWrapper className={"z-0 w-full h-full object-cover brightness-50 grayscale"}
|
||||
src={"/oil1.png"}></Image>
|
||||
|
@ -150,7 +151,7 @@ const MainInfo = () => {
|
|||
|
||||
<span
|
||||
className={"block bg-primary text-black absolute top-[-10%] left-0 w-full font-bold lg:hidden px-4 py-2"}>
|
||||
Выпуск Апрель 2024
|
||||
Выпуск Июнь 2024
|
||||
</span>
|
||||
</CardHeader>
|
||||
</Card>
|
||||
|
@ -172,14 +173,14 @@ const MainInfo = () => {
|
|||
|
||||
<span
|
||||
className={"block bg-primary text-black absolute top-[-10%] left-0 w-full font-bold lg:hidden px-4 py-2"}>
|
||||
Выпуск Апрель 2024
|
||||
Выпуск Июнь 2024
|
||||
</span>
|
||||
</CardHeader>
|
||||
</Card>
|
||||
</Tooltip>
|
||||
|
||||
|
||||
<Tooltip content={"Выпуск Апрель 2024"} className={"text-black"} size={"lg"}>
|
||||
<Tooltip content={"Выпуск Июнь 2024"} className={"text-black"} size={"lg"}>
|
||||
<Card className={"rounded-[30px] transition-size group"}>
|
||||
<Image removeWrapper className={"z-0 w-full h-full object-cover brightness-50 grayscale"}
|
||||
src={"/oil4.png"}></Image>
|
||||
|
@ -193,7 +194,7 @@ const MainInfo = () => {
|
|||
|
||||
<span
|
||||
className={"block bg-primary text-black absolute top-[-10%] left-0 w-full font-bold lg:hidden px-4 py-2"}>
|
||||
Выпуск Апрель 2024
|
||||
Выпуск Июнь 2024
|
||||
</span>
|
||||
</CardHeader>
|
||||
|
||||
|
@ -229,8 +230,11 @@ const Achievements = () => {
|
|||
</div>
|
||||
|
||||
|
||||
<Button className={"bg-green-2 font-bold uppercase italic"} endContent={<ChevronBannerIcon
|
||||
className={"stroke-[3px] stroke-black"}/>}>Посмотреть</Button>
|
||||
<Button className={"bg-green-2 font-bold uppercase italic w-[200px] h-fit text-wrap p-4"}
|
||||
endContent={<ChevronBannerIcon className={"stroke-[3px] stroke-black"}/>}>
|
||||
<span
|
||||
className={"block w-2/3 text-left !font-bold italic"}>Посмотреть</span>
|
||||
</Button>
|
||||
|
||||
|
||||
</CardHeader>
|
||||
|
@ -247,11 +251,13 @@ const Achievements = () => {
|
|||
<span className={"text-base md:text-xl text-white opacity-50"}>Обладают высокой смазывающей способностью и обеспечивают надёжную защиту двигателя от износа</span>
|
||||
</div>
|
||||
|
||||
<Button className={"bg-green-2 font-bold uppercase italic w-[200px] h-fit text-wrap"}
|
||||
<Button className={"bg-green-2 font-bold uppercase italic w-[200px] h-fit text-wrap p-4"}
|
||||
href={"/technology"}
|
||||
as={Link}
|
||||
endContent={<ChevronBannerIcon
|
||||
className={"stroke-[3px] stroke-black"}/>}>
|
||||
<span
|
||||
className={"block w-2/3 text-left !font-bold italic"}>Расшифровка масел группы - N</span>
|
||||
className={"block w-2/3 text-left !font-bold italic"}>Технологии Relynolli ®</span>
|
||||
</Button>
|
||||
|
||||
</CardHeader>
|
||||
|
@ -295,7 +301,7 @@ const NewsSlider = () => {
|
|||
return (
|
||||
<section className={""}>
|
||||
<div className="wrapper">
|
||||
<div className="flex flex-wrap items-center mb-5">
|
||||
<div className="flex flex-wrap justify-between items-center mb-5">
|
||||
<h2 className={"text-2xl md:text-3xl leading-[35px] text-white m-0 mr-4 "}>Новости</h2>
|
||||
<Link
|
||||
className={"block border-primary border-1 text-primary rounded px-4 py-2 italic text-2xl hover:bg-primary hover:text-black transition-colors font-bold"}
|
||||
|
@ -354,6 +360,10 @@ const ArticlesSlider = () => {
|
|||
export default function Home() {
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>Relynolli – купить моторное масло на официальном сайте российского производителя по выгодной цене</title>
|
||||
<meta name={"description"} content={"Официальный сайт производителя моторного масла Relynolli ®. Российское автомобильное масло Релиноли важнейшая «деталь» двигателя вашего автомобиля. Купить в интернет-магазине оптом и в розницу."}/>
|
||||
</Head>
|
||||
<Hero/>
|
||||
<MainInfo/>
|
||||
<Achievements/>
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
import Wrapper from "@/components/reusable/wrapper"
|
||||
import Logo from "@/components/reusable/logo"
|
||||
import Link from "next/link"
|
||||
import FormMission from "@/components/reusable/formMission";
|
||||
|
||||
const Mission = () => {
|
||||
return (<Wrapper title="Миссия Relynolli ®"
|
||||
breadcrumbs={[{ name: "Миссия Relynolli ®", link: "/mission" }]}>
|
||||
|
||||
<div className="content text-base [&_h2]:text-2xl [&_section]:mb-10 [&_h2]:xl:text-4xl [&_h2]:mb-6 [&_h2]:font-bold [&_p]:xl:text-xl [&_p]:mb-9 [&_ul>li]:xl:text-xl [&_ul]:list-disc [&_li]:mb-2">
|
||||
<section>
|
||||
<h2><i>Моторное масло является полноправным элементом конструкции, важнейшей «деталью» двигателя и во многом определяет надёжность его работы.</i></h2>
|
||||
<p>Высокие температуры, высокие сдвиговые нагрузки, взаимодействие с агрессивной средой – всё это усложняет работу моторного масла в двигателе.</p>
|
||||
<p>Создавая моторное масло марки Relynolli ®, мы исходили из передовых мировых разработок в области многофункциональных пакетов присадок. При производстве моторных масел и других смазочных материалов мы используем высококачественные базовые масла, самые современные пакеты присадок.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2><i>Каждый образец масла, созданный по собственной рецептуре, проходит серию лабораторных
|
||||
исследований и эксплуатационных испытаний.</i></h2>
|
||||
<div className="bg-[#E2E2E5]/30 py-16 px-14 mt-12 mb-12 rounded-[20px]">
|
||||
<div className="w-1/2 [&_svg]:mb-4">
|
||||
<Logo/>
|
||||
<p>Зарегистрированная международная торговая марка.</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<p>Мы особое внимание уделяем смазочной способности наших масел, то есть способности снижать износ и
|
||||
силу трения в сопряжениях деталей двигателя, не зависящей от вязкости масла.</p>
|
||||
<p>Даже сейчас, когда Вы читаете этот текст, образцы моторных масел Relynolli ® проходят очередную серию
|
||||
испытаний и скоро «заступят» на защиту двигателей наших клиентов от износа.</p>
|
||||
<p>Энергосбережение и энергосберегающие свойства – ещё один важный аспект, которому мы отводим особую
|
||||
роль при разработке масел Relynolli ®. Главным элементом, позволяющим в тяжёлых условиях работы
|
||||
снизить механические потери в двигателе и, соответственно, расход топлива, является наш усиленный
|
||||
антифрикционный беззольный пакет присадок. Применение собственных антифрикционных технологий в
|
||||
моторных маслах Relynolli ® позволяет обеспечить снижение расхода топлива автомобилем до от 2% до
|
||||
8%, в зависимости от условий эксплуатации.</p>
|
||||
<p>Мы постоянно совершенствуем наши смазочные материалы и открыто рассказываем о результатах
|
||||
лабораторных и эксплуатационных испытаний.</p>
|
||||
</section>
|
||||
|
||||
<p><b>Если у вас остались вопросы, позвоните на номер <Link className="text-primary hover:underline"
|
||||
href="tel:74951919720">8 (495) 191 97
|
||||
20</Link> или оставьте заявку</b></p>
|
||||
|
||||
<section>
|
||||
<FormMission/>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
|
||||
</Wrapper>
|
||||
)
|
||||
}
|
||||
|
||||
export default Mission;
|
|
@ -9,7 +9,7 @@ const News = (props: InferGetStaticPropsType<typeof getStaticProps>) => {
|
|||
{
|
||||
props.news.picture && <Img className={"max-h-[250px] lg:max-h-[500px] mb-6 mx-auto rounded-[20px]"} src={"https://relynolli.ru/upload/" + props.news.picture} alt={props.news.name} />
|
||||
}
|
||||
<div className="content text-base lg:text-2xl [&>*]:mb-4 [&_img]:max-h-[250px] [&_img]:lg:max-h-[500px] [&_a]:text-primary break-words" dangerouslySetInnerHTML={{__html: props.news.content}}></div>
|
||||
<div className="content text-base lg:text-xl [&>*]:mb-4 [&_img]:max-h-[250px] [&_img]:lg:max-h-[500px] [&_a]:text-primary break-words" dangerouslySetInnerHTML={{__html: props.news.content}}></div>
|
||||
</Wrapper>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
import {Img} from "react-image";
|
||||
import {useQuery} from "@tanstack/react-query";
|
||||
import LocalAPI from "@/service/localAPI";
|
||||
// @ts-ignore
|
||||
import {News} from "@/service/types/local";
|
||||
import {WrapperDark} from "@/components/reusable/wrapper";
|
||||
import {Skeleton} from "@nextui-org/react";
|
||||
import Link from "next/link";
|
||||
import Head from "next/head";
|
||||
|
||||
const NewsCard = (props: News) => {
|
||||
return (
|
||||
|
@ -36,20 +38,28 @@ const News = () => {
|
|||
})
|
||||
|
||||
return (
|
||||
<WrapperDark title={"Новости"} breadcrumbs={[{name: "Новости", link: "/news"}]}>
|
||||
<>
|
||||
<Head>
|
||||
<title>Новости Relynolli – актуальная информация о бренде, публикации в СМИ</title>
|
||||
<meta name="description" content="Все новости от бренда моторных масел Relynolli: акции, актуальная информация, видео и публикации в СМИ. Узнайте о профильных мероприятиях с участием Релиноли и ТД ТЕХНОХИМ ГРУПП."/>
|
||||
</Head>
|
||||
<WrapperDark title={"Новости"} breadcrumbs={[{name: "Новости", link: "/news"}]}>
|
||||
|
||||
<div className="news-container grid grid-cols-1 lg:grid-cols-3 gap-5">
|
||||
{
|
||||
queryNews.data && queryNews.data.data!.map(news => <NewsCard key={news.id} {...news}/>)
|
||||
}
|
||||
{
|
||||
queryNews.isFetching && Array(10).fill(0).map((_, index) => <Skeleton key={index} className={"rounded-[20px] !bg-gray-3"}>
|
||||
<div className="w-full h-64 "></div>
|
||||
</Skeleton> )
|
||||
}
|
||||
<div className="news-container grid grid-cols-1 lg:grid-cols-3 gap-5">
|
||||
{
|
||||
queryNews.data && queryNews.data.data!.map(news => <NewsCard key={news.id} {...news}/>)
|
||||
}
|
||||
{
|
||||
queryNews.isFetching && Array(10).fill(0).map((_, index) => <Skeleton key={index} className={"rounded-[20px] !bg-gray-3"}>
|
||||
<div className="w-full h-64 "></div>
|
||||
</Skeleton> )
|
||||
}
|
||||
|
||||
</div>
|
||||
</WrapperDark>
|
||||
</>
|
||||
)
|
||||
|
||||
</div>
|
||||
</WrapperDark>)
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -166,7 +166,10 @@ const MakeOrder = () => {
|
|||
|
||||
</form>
|
||||
|
||||
<Modal isOpen={modalVisible} size={'4xl'}>
|
||||
<Modal
|
||||
isOpen={modalVisible}
|
||||
size={'4xl'}
|
||||
>
|
||||
<ModalContent className={"text-[#151515]"}>
|
||||
<ModalBody>
|
||||
<div className="flex items-center flex-col p-7">
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
import Wrapper from "@/components/reusable/wrapper"
|
||||
import { Img } from "react-image"
|
||||
import FormPersonalization from "@/components/reusable/formPersonalization";
|
||||
import FormCustomization from "@/components/reusable/formCustomization";
|
||||
|
||||
|
||||
const Personalization = () => {
|
||||
return (<Wrapper title="Персонализация от Relynolli ®"
|
||||
breadcrumbs={[{ name: "Персонализация от Relynolli ®", link: "/personalization" }]}>
|
||||
|
||||
<div className="content text-base [&_h2]:text-2xl [&_section]:mb-10 [&_h2]:xl:text-4xl [&_h2]:mb-6 [&_h2]:font-bold [&_p]:xl:text-xl [&_p]:mb-9 [&_ul>li]:xl:text-xl [&_ul]:list-disc [&_li]:mb-2">
|
||||
<section>
|
||||
<p>На базе собственного Научно-технического центра (НТЦ ООО «ТД Технохим Групп) наша компания готова доработать линейку продукции или услуги под запросы конкретного клиента.</p>
|
||||
<a className="img-block relative flex justify-center">
|
||||
<Img src={"/motocross.png"} alt="motocross"></Img>
|
||||
</a>
|
||||
</section>
|
||||
<section>
|
||||
<a className="img-block relative flex justify-center">
|
||||
<Img src={"/ringrace.png"} alt="ringrace"></Img>
|
||||
</a>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Приборостроение, НИОКР</h2>
|
||||
<a className="img-block relative flex justify-center">
|
||||
<Img src={"/niokr.png"} alt="niokr"></Img>
|
||||
</a>
|
||||
</section>
|
||||
<section>
|
||||
<FormPersonalization/>
|
||||
</section>
|
||||
<section>
|
||||
<h2>Кастомизация</h2>
|
||||
<p>(от англ. to customize — «настроить») — это индивидуализация продукции под заказ конкретного потребителя при помощи конструктивных доработок или настроек.</p>
|
||||
</section>
|
||||
<section>
|
||||
<FormCustomization/>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
</Wrapper>
|
||||
)
|
||||
}
|
||||
|
||||
export default Personalization;
|
|
@ -0,0 +1,44 @@
|
|||
import { WrapperDark } from "@/components/reusable/wrapper"
|
||||
import { Card, CardHeader, Image } from "@nextui-org/react";
|
||||
|
||||
import { Img } from "react-image"
|
||||
|
||||
const Production = () => {
|
||||
return (<WrapperDark title="Производство"
|
||||
breadcrumbs={[{ name: "Производство", link: "/production" }]}>
|
||||
|
||||
<div className="content text-base [&_h2]:text-2xl [&_section]:mb-10 [&_h2]:xl:text-4xl [&_h2]:mb-6 [&_h2]:font-bold [&_p]:xl:text-xl [&_p]:mb-9 [&_ul>li]:xl:text-xl [&_ul]:list-disc [&_li]:mb-2">
|
||||
<section>
|
||||
<h2><i>Смазочные материалы Relynolli ® производятся в России. Мы стремимся к полной открытости для наших клиентов.</i></h2>
|
||||
<p>При производстве смазочных материалов, в частности, моторных масел мы используем высококачественные базовые масла II, III и IV группы по классификации API, а также самые современные пакеты многофункциональных присадок, обеспечивающие нашим маслам высокий уровень вязкостно-температурных, моюще-диспергирующих, антиокислительных, противоизносных, антифрикционных и других свойств</p>
|
||||
|
||||
<div className="img-block relative rounded-[40px]">
|
||||
<Img src={"/production.png"} alt="Производство"></Img>
|
||||
</div>
|
||||
</section>
|
||||
{/* <section>
|
||||
<h2 className="">Каталог масел</h2>
|
||||
</section> */}
|
||||
<section className="grid grid-cols-1 lg:grid-cols-1 gap-4 mb-6 [&>*]:h-[800px] [&>*]:md:h-[700px]">
|
||||
<Card className="rounded-[40px]">
|
||||
<Image removeWrapper className={"w-full h-full object-cover brightness-100 relative z-15 rounded-[40px]"}
|
||||
src={"/chemicals.png"} alt="Химия"></Image>
|
||||
|
||||
<CardHeader className="absolute z-10 top-10 left-10 bottom-5 flex-col !items-start w-1/2 justify-between text-white">
|
||||
<div className="block">
|
||||
<h2 className={"text-2xl md:text-3xl leading-[35px] mb-6 "}><i>Сертификация продукции проводится при помощи испытаний НТЦ ООО «ТД Технохим Групп».</i></h2>
|
||||
<p className={"text-base md:text-xl text-white opacity-50"}>Каждая партия выпускаемого масла проходит комплекс лабораторных испытаний в научно-техническом центре нашей компании, а также в ведущих аккредитованных лабораториях страны.</p>
|
||||
<p className={"text-base md:text-xl text-white opacity-50"}>Мы активно занимаемся научно-исследовательскими работами в области создания собственных антифрикционных и противоизносных компонентов к смазочным маслам и пластичным смазками.</p>
|
||||
</div>
|
||||
|
||||
</CardHeader>
|
||||
</Card>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
</WrapperDark>
|
||||
)
|
||||
}
|
||||
|
||||
export default Production;
|
|
@ -0,0 +1,67 @@
|
|||
import Wrapper from "@/components/reusable/wrapper"
|
||||
import LinkSupport from "@/components/reusable/linkSupport";
|
||||
import FormSupport from "@/components/reusable/formSupport";
|
||||
import AccordSupp from "@/components/reusable/accordSupport";
|
||||
import {Button, Link} from "@nextui-org/react";
|
||||
import ChevronBannerIcon from "../../public/banner_arr_btn.svg.svg";
|
||||
|
||||
const Support = () => {
|
||||
return (<Wrapper title="Поддержка продукции Relynolli® ООО «ТД Технохим Групп»"
|
||||
breadcrumbs={[{name: "Поддержка и рекламация", link: "/personalization"}]}>
|
||||
|
||||
<div
|
||||
className="content text-base [&_h2]:text-2xl [&_section]:mb-10 [&_h2]:xl:text-4xl [&_h2]:font-bold [&_p]:xl:text-xl [&_p]:mb-9 [&_ul>li]:xl:text-xl [&_ul]:list-disc [&_li]:mb-2 bg-white">
|
||||
<section>
|
||||
<p>Мы всегда готовы ответить на вопросы, связанные с качеством выпускаемых смазочных материалов.
|
||||
Если у Вас возникли вопросы, то вы можете обратиться в службу технической поддержки компании ООО
|
||||
«ТД Технохим Групп»</p>
|
||||
<div
|
||||
className="grid gap-4 xl:grid-cols-3 lg:grid-cols-2 sm:grid-cols-1 h-auto [&>*]:h-[70px] [&_span]:text-sm [&_span]:md:text-base [&_span]:leading-[110%]">
|
||||
<LinkSupport/>
|
||||
<LinkSupport/>
|
||||
<LinkSupport/>
|
||||
<LinkSupport/>
|
||||
<LinkSupport/>
|
||||
<LinkSupport/>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="!mb-16">
|
||||
<h2 className="mb-10">Важно</h2>
|
||||
<ul className="list-disc list-inside">
|
||||
<li>Данные о партии и сроке хранения продукции смотрите на этикетке канистры.</li>
|
||||
<li>Перед началом работы следует внимательно ознакомиться с инструкцией по эксплуатации.</li>
|
||||
<li>Все условия гарантии соответствуют действующему законодательству РФ.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<FormSupport/>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="mb-10">Часто задаваемые вопросы</h2>
|
||||
<AccordSupp/>
|
||||
</section>
|
||||
</div>
|
||||
<section
|
||||
className="bg-gradient-to-t from-green-1 to-black w-full flex flex-wrap justify-center lg:p-24 rounded-[30px]">
|
||||
<div
|
||||
className="bg-black bg-opacity-20 flex flex-wrap flex-col justify-center text-white p-7 rounded-[30px] lg:p-16 pb-20 pt-20 gap-5">
|
||||
<h2 className="text-3xl">У вас остались вопросы?</h2>
|
||||
<p>Вы можете обратиться в службу технической поддержки компании ООО «ТД Технохим Групп» и мы ответим
|
||||
на все Ваши вопросы!</p>
|
||||
<Button className="text-black text-xl font-extrabold h-[70px] uppercase gap-5 "
|
||||
color={"primary"}
|
||||
href={"https://yandex.ru/business/widget/request/company/32353164529"}
|
||||
as={Link}
|
||||
endContent={<ChevronBannerIcon className={"stroke-[3px] stroke-black"}/>}>
|
||||
<i>Задать вопрос</i>
|
||||
</Button>
|
||||
</div>
|
||||
</section>
|
||||
</Wrapper>
|
||||
)
|
||||
}
|
||||
|
||||
export default Support;
|
|
@ -0,0 +1,97 @@
|
|||
import Wrapper from "@/components/reusable/wrapper"
|
||||
import {Card, CardHeader, Image} from "@nextui-org/react";
|
||||
|
||||
const Technology = () => {
|
||||
return (<Wrapper title="технологии Relynolli ®"
|
||||
breadcrumbs={[{name: "Технологии Relynolli ® ™", link: "/technology"}]}>
|
||||
|
||||
<div
|
||||
className="content text-base [&_h2]:text-2xl [&_section]:mb-10 [&_h2]:xl:text-4xl [&_h2]:mb-6 [&_h2]:font-bold [&_p]:xl:text-xl [&_p]:mb-9 [&_ul>li]:xl:text-xl [&_ul]:list-disc [&_li]:mb-2">
|
||||
<section>
|
||||
<h2><i>«Engine Life Improvement Technologies» –</i></h2>
|
||||
<p>Технологии повышения ресурса двигателя</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Что мы ждём от моторного масла?</h2>
|
||||
<p>Моторное масло, подвергаясь в двигателе тепловому, механическому и химическому воздействиям,
|
||||
выполняет множество функций: . Другими словами, моторное масло должно обеспечить сохранение всех
|
||||
показателей двигателя (мощностных характеристик, топливной экономичности, экологичности) на
|
||||
заданном уровне на протяжении всего срока службы. Обеспечить это можно только в том случае, если
|
||||
геометрические параметры деталей двигателя и его основных систем не выходят за допустимые
|
||||
пределы, качество поверхностей деталей остаётся на высоком уровне, образующиеся в процессе
|
||||
работы двигателя отложения оказывают минимальное влияние на изменение теплового и напряжённого
|
||||
состояние деталей цилиндро-поршневой группы и других систем. В связи с этим моторное масло
|
||||
прежде всего должно обладать высокой смазочной способностью, противоизносными и
|
||||
моюще-диспергирующими свойствами, оптимальной вязкостно-температурной характеристикой.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Пакет присадок AW-I <span>(разработан НТЦ ООО «ТД Технохим Групп»)</span></h2>
|
||||
<p><b>Мы уделяем особое внимание усилению смазывающей способности наших смазочных материалов за счёт
|
||||
применения собственных разработок.</b></p>
|
||||
<p>Первая разработка в ряду технологий повышения ресурса двигателей – это пакет присадок под
|
||||
названием «AW-I», который базируется на каскадном нанометрическом молибденосодержащем комплексе,
|
||||
способствующем улучшению эксплуатационных характеристик двигателей внутреннего сгорания
|
||||
автомобилей.</p>
|
||||
<p>Пакет присадок не содержит абразивных частиц и не влияет на моющие и диспергирующие свойства
|
||||
моторных и трансмиссионных масел, совместим со всеми типами масел, безопасен для каталитических
|
||||
нейтрализаторов и способствует:</p>
|
||||
<ul className="list-inside m-5 mb-10">
|
||||
<li>созданию высокопрочных устойчивых граничных плёнок;</li>
|
||||
<li>улучшению микроструктуры поверхностей трения деталей двигателя;</li>
|
||||
<li>снижению интенсивности изнашивания деталей двигателя и тем самым увеличению ресурса
|
||||
двигателя;
|
||||
</li>
|
||||
<li>снижению механических потерь при тяжёлых условиях эксплуатации и экономии топлива.</li>
|
||||
</ul>
|
||||
<b className="text-xl">Состав «AW-I»: нанометрический Мо с длинными углеводородными радикалами.</b>
|
||||
</section>
|
||||
|
||||
|
||||
<section>
|
||||
<div className="grid gap-4 justify-items-end lg:grid-cols-8 mb-10">
|
||||
<div className="col-span-5">
|
||||
<h2>Механизм действия антифрикционного пакета присадок «AW-I»</h2>
|
||||
<p className="">Основан на уникальных физических свойствах материалов, входящих в состав, имеющих
|
||||
нанометрический размер и высокую отрицательную полярность, что способствует получению качественно новых
|
||||
поверхностей трения деталей и приповерхностных слоёв с мощными антифрикционными
|
||||
свойствами.
|
||||
</p>
|
||||
<p>Входящие в состав пакета присадок нанометрические молибденовые группы и длинные
|
||||
углеводородные
|
||||
радикалы в результате механохимической (трибохимической) активации в зоне трения
|
||||
образуют на
|
||||
поверхностях деталей упорядоченный полимолекулярный адсорбционный слой, имеющий низкое
|
||||
сопротивление сдвигу, но устойчивый к разрушению и обладающий свойствами упругого
|
||||
твёрдого
|
||||
тела,
|
||||
способный воспринимать высокие нагрузки при сдавливании. Именно такая структура
|
||||
граничного
|
||||
смазочного слоя по типу «сендвича» обеспечивает хорошие антифрикционные свойства,
|
||||
уменьшение
|
||||
коэффициента трения в широком диапазоне температур до 250 градусов, хорошие защитные и
|
||||
противоизносные свойства, а также способствует значительному улучшению диссипативных
|
||||
свойств
|
||||
смазочного слоя в сопряжениях двигателя.
|
||||
</p>
|
||||
</div>
|
||||
<Card className="rounded-[40px] col-span-5 bg-black p-16 text-white lg:col-span-3 flex flex-col items-center">
|
||||
<p className={"text-base md:text-xl text-white opacity-50"}>Механизм действия
|
||||
противоизносных и антифрикционных присадок изображён на нашем логотипе концепции „Engine
|
||||
Life Improvement Technologies“ — Технологии повышения ресурса двигателя»</p>
|
||||
<Image src="/mechanizm.svg"></Image>
|
||||
</Card>
|
||||
</div>
|
||||
<p>ООО «ТД Технохим Групп» стремимся к развитию российского научно-технического потенциала в области
|
||||
разработки и производства высококачественных и эффективных смазочных материалов и поэтому
|
||||
приглашаем к сотрудничеству заинтересованные организации.</p>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
|
||||
</Wrapper>
|
||||
)
|
||||
}
|
||||
|
||||
export default Technology;
|
|
@ -16,7 +16,8 @@ class LocalAPI {
|
|||
|
||||
constructor() {
|
||||
this.instance = axios.create({
|
||||
baseURL: process.env.NODE_ENV === "development" ? "http://localhost:8000" : "https://relynolli.ru"
|
||||
// process.env.NODE_ENV === "development" ? "http://localhost:8000" :
|
||||
baseURL: "https://relynolli.ru"
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -29,7 +30,9 @@ class LocalAPI {
|
|||
...filters
|
||||
}
|
||||
})
|
||||
|
||||
if (!data.data) {
|
||||
data.data = []
|
||||
}
|
||||
return data
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ const {nextui} = require("@nextui-org/react");
|
|||
|
||||
const config: Config = {
|
||||
content: [
|
||||
|
||||
"./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
|
||||
"./src/components/**/*.{js,ts,jsx,tsx,mdx}",
|
||||
"./src/app/**/*.{js,ts,jsx,tsx,mdx}",
|
||||
|
@ -23,7 +24,6 @@ const config: Config = {
|
|||
"yellow-1": "#FFD235",
|
||||
"gray-1": "#ccc",
|
||||
"gray-2": "#cacaca",
|
||||
"gray-3": "#787878",
|
||||
"black-1": "#000",
|
||||
"black-2": "#262626",
|
||||
},
|
||||
|
@ -54,6 +54,7 @@ const config: Config = {
|
|||
light: {
|
||||
colors: {
|
||||
"primary": "#92E727",
|
||||
"secondary": '#fff',
|
||||
"green-1": "#B3C53F",
|
||||
"green-2": "#92E727",
|
||||
"yellow-1": "#FFD235",
|
||||
|
@ -61,6 +62,7 @@ const config: Config = {
|
|||
"gray-1": "#ccc",
|
||||
"gray-2": "#cacaca",
|
||||
"gray-3": "#787878",
|
||||
"gray-4": "rgb(74 74 74)",
|
||||
"black-1": "#000",
|
||||
"black-2": "#262626",
|
||||
"black-3": "#151515",
|
||||
|
|