upd
This commit is contained in:
+254
-254
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 232 KiB After Width: | Height: | Size: 232 KiB |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 224 KiB |
@@ -0,0 +1,116 @@
|
||||
<svg width="548" height="467" viewBox="0 0 548 467" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g opacity="0.3">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M304.126 465.692C271.133 465.034 238.271 458.875 208.799 444.031C179.555 429.302 159.072 403.244 135.341 380.683C108.57 355.232 64.0342 338.589 59.3468 301.949C54.5101 264.142 107.06 240.067 112.526 202.347C118.681 159.872 62.7524 108.325 91.961 76.8799C122.506 43.9958 182.429 96.1223 224.838 81.4337C260.324 69.1432 267.977 13.5725 304.126 3.39595C339.04 -6.43306 373.586 19.2218 408.283 29.7902C447.993 41.8852 510.664 31.2709 524.331 70.4678C540.759 117.582 465.505 158.464 470.461 208.113C474.52 248.784 544.811 260.815 547.401 301.606C549.718 338.09 507.708 361.965 481.873 387.83C457.902 411.829 432.372 434.263 401.303 447.873C370.755 461.254 337.47 466.357 304.126 465.692Z" stroke="url(#paint0_linear_1867_41861)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M86.8503 365.589C68.7693 354.663 52.5211 340.73 40.9321 323.067C29.433 305.54 26.4178 284.537 20.4819 264.434C13.7855 241.755 -5.57918 218.273 3.54932 196.46C12.9684 173.952 49.8088 177.427 64.9123 158.265C81.9194 136.688 67.4098 90.2085 93.6682 82.1254C121.128 73.6725 137.666 121.752 165.88 127.184C189.488 131.729 211.517 103.372 234.816 109.301C257.318 115.028 268.26 140.308 284.114 157.274C302.259 176.69 340.402 190.867 335.434 216.972C329.462 248.349 274.655 246.925 261.511 276.036C250.744 299.882 285.864 329.052 274.245 352.495C263.852 373.463 232.919 373.251 210.317 379.32C189.346 384.952 168.011 389.217 146.43 386.817C125.211 384.457 105.124 376.631 86.8503 365.589Z" stroke="url(#paint1_linear_1867_41861)"/>
|
||||
<path d="M199.726 435.052C228.321 450.359 260.459 457.216 292.86 458.671C325.606 460.142 358.436 455.943 388.779 443.544C419.64 430.933 445.275 409.515 469.416 386.523C495.434 361.742 537.296 339.313 535.913 303.408C534.368 263.265 465.598 249.722 462.606 209.661C458.953 160.756 533.896 122.431 518.909 75.7359C506.441 36.8878 444.603 45.7813 405.882 32.9242C372.049 21.6899 338.734 -4.36406 304.188 4.43802C268.42 13.5513 259.539 67.9652 224.371 79.1718C182.341 92.5651 124.74 39.8793 93.9224 71.4414C64.4527 101.623 118.143 153.641 111.055 195.224C104.76 232.153 52.5362 254.52 56.3621 291.786C60.07 327.902 103.421 345.345 129.102 371.008C151.866 393.757 171.353 419.864 199.726 435.052Z" stroke="url(#paint2_linear_1867_41861)"/>
|
||||
<path d="M190.834 426.381C218.547 442.117 249.947 449.639 281.738 451.862C313.867 454.109 346.217 450.789 376.326 439.353C406.948 427.721 432.653 407.312 456.929 385.319C483.093 361.615 524.761 340.609 524.283 305.307C523.748 265.839 456.529 250.851 454.572 211.427C452.182 163.3 526.735 127.491 513.158 81.2577C501.862 42.7933 440.902 50.0142 403.184 36.4366C370.226 24.5729 338.14 -1.83497 303.991 5.96468C268.635 14.0401 258.578 67.2711 223.759 77.4174C182.147 89.5435 126.859 36.3814 95.8142 66.6286C66.1279 95.5526 117.592 147.963 109.611 188.635C102.523 224.754 50.6775 245.446 53.5226 282.144C56.2801 317.71 98.4351 335.906 123.032 361.743C144.835 384.646 163.336 410.767 190.834 426.381Z" stroke="url(#paint3_linear_1867_41861)"/>
|
||||
<path d="M182.112 418.02C208.939 434.151 239.588 442.306 270.751 445.267C302.245 448.261 334.093 445.793 363.938 435.3C394.293 424.629 420.034 405.217 444.41 384.215C470.682 361.58 512.113 341.974 512.508 307.298C512.949 268.528 447.311 252.165 446.354 213.405C445.186 166.088 519.27 132.751 507.07 87.0195C496.92 48.9729 436.884 54.5705 400.178 40.3144C368.105 27.8576 337.245 1.14068 303.522 7.96328C268.606 15.0271 257.427 67.0511 222.988 76.1616C181.83 87.0497 128.841 33.4932 97.6164 62.4343C67.7576 90.1091 117.009 142.834 108.176 182.576C100.332 217.87 48.9155 236.919 50.8107 273.024C52.6474 308.016 93.596 326.916 117.116 352.889C137.965 375.912 155.493 402.014 182.112 418.02Z" stroke="url(#paint4_linear_1867_41861)"/>
|
||||
<path d="M173.548 409.975C199.487 426.466 229.374 435.221 259.892 438.892C290.734 442.601 322.057 440.958 351.612 431.389C381.67 421.657 407.413 403.232 431.855 383.212C458.199 361.636 499.349 343.404 500.585 309.375C501.968 271.328 437.935 253.659 437.945 215.587C437.957 169.111 511.496 138.2 500.64 93.0099C491.608 55.4137 432.537 59.4388 396.855 44.5459C365.676 31.5328 336.037 4.55121 302.766 10.4229C268.318 16.5022 256.071 67.2968 222.042 75.3968C181.373 85.0774 130.669 31.2075 99.3089 58.8525C69.3211 85.288 116.377 138.25 106.734 177.046C98.1694 211.499 47.2312 228.939 48.2077 264.428C49.1541 298.822 88.8879 318.377 111.34 344.448C131.243 367.56 147.81 393.611 173.548 409.975Z" stroke="url(#paint5_linear_1867_41861)"/>
|
||||
<path d="M165.131 402.247C190.181 419.065 219.295 428.388 249.152 432.736C279.327 437.131 310.105 436.285 339.34 427.618C369.074 418.804 394.787 401.353 419.263 382.307C445.642 361.778 486.468 344.895 488.514 311.532C490.802 274.231 428.399 255.325 429.34 217.966C430.489 172.359 503.41 143.826 493.862 99.215C485.919 62.1008 427.855 64.605 393.204 49.1174C362.927 35.5847 334.502 8.38229 301.71 13.3299C267.758 18.4525 254.496 67.9974 220.905 75.1132C180.76 83.6174 132.322 29.5141 100.872 55.8746C70.7982 81.0819 115.679 134.205 105.266 172.039C96.0185 205.639 45.6061 221.506 45.6959 256.355C45.7829 290.129 84.2952 310.29 105.689 336.424C124.654 359.59 140.274 385.56 165.131 402.247Z" stroke="url(#paint6_linear_1867_41861)"/>
|
||||
<path d="M156.85 394.841C181.012 411.951 209.343 421.809 238.525 426.805C268.018 431.854 298.23 431.777 327.121 423.991C356.505 416.071 382.154 399.582 406.63 381.497C433.009 362.006 473.471 346.442 476.294 313.765C479.45 277.23 418.699 257.158 420.536 220.533C422.778 175.823 495.008 149.617 486.734 105.623C479.85 69.0211 422.83 70.0571 389.218 54.0168C359.848 40.0011 332.631 12.6214 300.342 16.6726C266.911 20.867 252.69 69.1438 219.565 75.3023C179.976 82.6624 133.784 28.4046 102.288 53.4936C72.1704 77.485 114.896 130.694 103.756 167.553C93.8633 200.287 44.0229 214.618 43.2585 248.805C42.5176 281.938 79.8033 302.658 100.151 328.817C118.188 352.006 132.875 377.863 156.85 394.841Z" stroke="url(#paint7_linear_1867_41861)"/>
|
||||
<path d="M148.691 387.757C171.966 405.126 199.506 415.485 228 421.098C256.797 426.77 286.425 427.435 314.945 420.506C343.953 413.458 369.508 397.917 393.95 380.781C420.294 362.313 460.352 348.041 463.919 316.066C467.908 280.318 408.826 259.149 411.523 223.28C414.815 179.493 486.284 155.562 479.246 112.219C473.391 76.1589 417.452 75.7804 384.885 59.2294C356.428 44.7674 330.408 17.2534 298.646 20.4363C265.761 23.7318 250.636 70.724 218.003 75.9529C179.002 82.202 135.033 27.8675 103.535 51.6994C73.4147 74.4887 114.011 127.71 102.185 163.582C91.6838 195.438 42.4599 208.272 40.8743 241.778C39.3376 274.249 75.3932 295.479 94.7062 321.628C111.826 344.808 125.596 370.523 148.691 387.757Z" stroke="url(#paint8_linear_1867_41861)"/>
|
||||
<path d="M140.644 380.999C163.034 398.594 189.776 409.422 217.57 415.62C245.659 421.884 274.684 423.259 302.81 417.165C331.416 410.966 356.846 396.356 381.224 380.157C407.499 362.698 447.113 349.688 451.391 318.433C456.175 283.489 398.779 261.294 402.299 226.201C406.597 183.36 477.238 161.649 471.398 118.991C466.54 83.5012 411.717 81.7627 380.198 64.7428C352.657 49.8712 327.824 22.2652 296.613 24.6087C264.298 27.0351 248.323 72.7283 216.207 77.056C177.825 82.2281 136.054 27.8932 104.596 50.4838C74.5139 72.0861 113.006 125.248 100.538 160.12C89.4652 191.09 40.901 202.467 38.5277 235.271C36.2277 267.063 71.0513 288.754 89.3432 314.858C105.558 337.998 118.427 363.541 140.644 380.999Z" stroke="url(#paint9_linear_1867_41861)"/>
|
||||
<path d="M132.697 374.57C154.206 392.357 180.144 403.619 207.226 410.372C234.596 417.196 263.003 419.253 290.711 413.968C318.891 408.594 344.165 394.9 368.448 379.623C394.619 363.158 433.753 351.378 438.709 320.858C444.25 286.736 388.553 263.586 392.86 229.286C398.118 187.414 467.865 167.867 463.186 125.927C459.293 91.0337 405.617 87.9905 375.149 70.5436C348.527 55.2988 324.869 27.6427 294.23 29.1762C262.507 30.764 245.738 75.1455 214.164 78.6011C176.429 82.7311 136.827 28.4709 105.452 49.8373C75.4487 70.2689 111.866 123.299 98.7969 157.164C87.1907 187.239 39.3275 197.2 36.2005 229.284C33.1701 260.379 66.7616 282.484 84.0469 308.509C99.3694 331.578 111.355 356.921 132.697 374.57Z" stroke="url(#paint10_linear_1867_41861)"/>
|
||||
<path d="M124.839 368.468C145.471 386.415 170.601 398.08 196.961 405.355C223.601 412.707 251.373 415.416 278.641 410.916C306.373 406.341 331.462 393.546 355.618 379.176C381.654 363.689 420.27 353.107 425.87 323.336C432.13 290.051 378.144 266.017 383.2 232.527C389.373 191.645 458.163 174.204 454.605 133.011C451.644 98.7408 399.146 94.4491 369.731 76.6168C344.029 61.0352 321.533 33.37 291.486 34.1236C260.377 34.9038 242.868 77.963 211.859 80.5763C174.799 83.6995 137.337 29.588 106.085 49.7485C76.1998 69.0271 110.573 121.856 96.9456 154.706C84.8435 183.878 37.7212 192.465 33.8749 223.814C30.1473 254.195 62.5082 276.666 78.8024 302.577C93.2463 325.547 104.366 350.661 124.839 368.468Z" stroke="url(#paint11_linear_1867_41861)"/>
|
||||
<path d="M117.057 362.696C136.819 380.77 161.137 392.803 186.766 400.569C212.668 408.418 239.791 411.748 266.596 408.009C293.858 404.206 318.733 392.292 342.734 378.814C368.601 364.288 406.666 354.871 412.874 325.861C419.816 293.427 367.549 268.579 373.317 235.916C380.358 196.042 448.131 180.647 445.653 140.231C443.591 106.608 392.3 101.124 363.937 82.948C339.154 67.0659 317.806 39.4319 288.371 39.436C257.896 39.4403 239.703 81.1684 209.281 82.9698C172.922 85.1226 137.567 31.2318 106.478 50.2063C76.7497 68.3506 109.112 120.911 94.9685 152.738C82.408 181.003 36.0648 188.259 31.5339 218.856C27.1427 248.508 58.276 271.298 73.5957 297.064C87.1759 319.904 97.4492 344.762 117.057 362.696Z" stroke="url(#paint12_linear_1867_41861)"/>
|
||||
<path d="M109.341 357.255C128.238 375.424 151.742 387.793 176.633 396.018C201.788 404.331 228.249 408.251 254.572 405.247C281.343 402.191 305.976 391.14 329.791 378.536C355.459 364.952 392.938 356.666 399.722 328.429C407.306 296.859 356.765 271.268 363.207 239.445C371.07 200.596 437.767 187.185 436.328 147.575C435.131 114.622 385.072 108.004 357.76 89.5246C333.896 73.3778 313.679 45.8147 284.874 45.1004C255.052 44.3608 236.23 84.7511 206.416 85.7714C170.784 86.9908 137.501 33.3915 106.615 51.2008C77.08 68.2309 107.466 120.455 92.8492 151.255C79.8681 178.608 34.3403 184.578 29.1597 214.409C24.139 243.319 54.0494 266.38 68.4123 291.968C81.1442 314.65 90.5908 339.227 109.341 357.255Z" stroke="url(#paint13_linear_1867_41861)"/>
|
||||
<path d="M101.679 352.144C119.72 370.376 142.407 383.049 166.553 391.701C190.955 400.446 216.742 404.926 242.562 402.629C268.822 400.293 293.186 390.084 316.788 378.337C342.225 365.676 379.087 358.486 386.411 331.032C394.599 300.338 345.788 274.073 352.865 243.104C361.504 205.297 427.069 193.806 426.628 155.028C426.261 122.766 377.458 115.072 351.195 96.3305C328.246 79.9548 309.144 52.5015 280.987 51.1002C251.834 49.6492 232.439 88.6968 203.252 88.9675C168.369 89.291 137.122 36.0523 106.477 52.7186C77.1732 68.6557 105.621 120.478 90.5724 150.248C77.208 176.686 32.5304 181.415 26.7356 210.467C21.1195 238.622 49.8132 261.908 63.2377 287.287C75.1379 309.784 83.7784 334.053 101.679 352.144Z" stroke="url(#paint14_linear_1867_41861)"/>
|
||||
<path d="M94.0586 347.364C111.251 365.629 133.123 378.571 156.518 387.619C180.162 396.763 205.264 401.771 230.562 400.156C256.293 398.512 280.361 389.126 303.721 378.217C328.899 366.459 365.112 360.328 372.942 333.666C381.696 303.858 334.616 276.991 342.289 246.886C351.657 210.135 416.037 200.499 416.551 162.577C416.978 131.027 369.454 122.315 344.234 103.352C322.198 86.783 304.192 59.4775 276.698 57.421C248.233 55.2916 228.319 92.9936 199.778 92.5465C165.667 92.0123 136.416 39.2017 106.049 54.7482C77.0116 69.6146 103.56 120.973 88.1222 149.71C74.412 175.231 30.6176 178.765 24.244 207.026C18.067 234.415 45.5517 257.881 58.0575 283.019C69.1433 305.303 76.9991 329.241 94.0586 347.364Z" stroke="url(#paint15_linear_1867_41861)"/>
|
||||
<path d="M86.4689 342.914C102.824 361.18 123.881 374.36 146.521 383.771C169.402 393.282 193.808 398.788 218.568 397.826C243.75 396.847 267.497 388.261 290.59 378.171C315.479 367.295 351.014 362.187 359.315 336.325C368.595 307.411 323.245 280.01 331.477 250.78C341.526 215.097 404.67 207.251 406.096 170.208C407.283 139.389 361.056 129.718 336.875 110.574C315.746 93.8461 298.817 66.7257 272.001 64.046C244.238 61.2717 223.861 97.6269 195.982 96.4945C162.663 95.1412 135.367 42.8243 105.316 57.2756C76.5793 71.0947 101.27 121.926 85.4844 149.631C71.4654 174.235 28.5855 176.621 21.6688 204.081C14.9656 230.694 41.2506 254.293 52.8581 279.162C63.1476 301.207 70.2406 324.789 86.4689 342.914Z" stroke="url(#paint16_linear_1867_41861)"/>
|
||||
<path d="M78.8995 338.793C94.4274 357.031 114.671 370.415 136.553 380.158C158.668 390.004 182.37 395.976 206.575 395.639C231.192 395.297 254.594 387.49 277.393 378.198C301.965 368.183 336.794 364.059 345.531 339.004C355.298 310.992 311.675 283.127 320.427 254.78C331.11 220.176 392.97 214.051 395.265 177.908C397.174 147.838 352.263 137.267 329.113 117.981C308.885 101.13 293.012 74.2308 266.888 70.9607C239.841 67.5749 219.055 102.584 191.855 100.799C159.348 98.666 133.964 46.9068 104.263 60.2885C75.8609 73.0847 98.7368 123.33 82.6452 150.003C68.3546 173.69 26.4184 174.976 18.9947 201.626C11.7999 227.453 36.896 251.141 47.6267 275.712C57.1389 297.492 63.4919 320.696 78.8995 338.793Z" stroke="url(#paint17_linear_1867_41861)"/>
|
||||
<path d="M71.3362 334.999C86.049 353.179 105.483 366.736 126.605 376.779C147.951 386.928 170.94 393.334 194.575 393.594C218.613 393.859 241.644 386.809 264.124 378.294C288.353 369.117 322.45 365.94 331.587 341.696C341.803 314.592 299.902 286.331 309.134 258.875C320.404 225.358 380.934 220.886 384.054 185.663C386.649 156.359 343.069 144.947 320.942 125.559C301.608 108.618 286.769 81.9759 261.349 78.1479C235.031 74.1847 213.89 107.851 187.384 105.446C155.706 102.573 132.189 51.4334 102.872 63.772C74.8377 75.5708 95.9437 125.171 79.5876 150.815C65.0621 173.588 24.0973 173.822 16.2024 199.654C8.55097 224.689 32.4705 248.421 42.3466 272.665C51.1012 294.157 56.7374 316.96 71.3362 334.999Z" stroke="url(#paint18_linear_1867_41861)"/>
|
||||
<path d="M63.7689 331.532C77.6792 349.625 96.3077 363.323 116.668 373.634C137.245 384.054 159.516 390.862 182.565 391.691C206.008 392.535 228.647 386.218 250.784 378.458C274.643 370.095 307.983 367.825 317.486 344.397C328.111 318.205 287.923 289.617 297.597 263.058C309.406 230.636 368.563 227.745 372.464 193.46C375.709 164.937 333.473 152.744 312.359 133.293C293.911 116.296 280.083 89.9451 255.379 85.5924C229.801 81.0859 208.359 113.413 182.56 110.423C151.727 106.849 130.03 56.3895 101.13 67.7127C73.4955 78.5406 92.8783 127.44 76.2987 152.058C61.5749 173.92 21.6072 173.152 13.2771 198.159C5.20406 222.395 27.9607 246.128 37.0052 270.019C45.0227 291.197 49.9663 313.58 63.7689 331.532Z" stroke="url(#paint19_linear_1867_41861)"/>
|
||||
<path d="M56.1866 328.389C69.3083 346.366 87.1366 360.174 106.736 370.721C126.543 381.38 148.09 388.559 170.541 389.928C193.376 391.32 215.601 385.712 237.371 378.685C260.835 371.112 293.393 369.71 303.228 347.101C314.224 321.823 275.738 292.975 285.815 267.318C298.117 235.996 355.86 234.616 360.496 201.286C364.353 173.557 323.474 160.643 303.362 141.166C285.789 124.147 272.949 98.121 248.97 93.2768C224.144 88.2614 202.453 119.257 177.374 115.714C147.401 111.48 127.475 61.7585 99.025 72.095C71.8198 81.9793 89.5277 130.124 72.7654 153.721C57.8793 174.677 18.9327 172.956 10.2036 197.133C1.74377 220.565 23.3528 244.256 31.5896 267.768C38.8912 288.61 43.1667 310.552 56.1866 328.389Z" stroke="url(#paint20_linear_1867_41861)"/>
|
||||
<path d="M48.5781 325.569C60.9256 343.402 77.9602 357.288 96.799 368.04C115.838 378.906 136.657 386.425 158.498 388.304C180.711 390.215 202.501 385.291 223.883 378.974C246.927 372.166 278.683 371.591 288.814 349.802C300.141 325.442 263.346 296.4 273.787 271.647C286.533 241.429 342.826 241.489 348.152 209.128C352.584 182.206 313.069 168.631 293.948 149.165C277.24 132.157 265.362 106.488 242.118 101.186C218.051 95.6958 196.165 125.367 171.817 121.306C142.718 116.453 124.511 67.5252 96.5418 76.9047C69.7959 85.8739 85.8789 133.211 68.9743 155.794C53.9617 175.849 16.0582 173.226 6.96608 196.57C-1.84554 219.194 18.6323 242.801 26.0862 265.908C32.6937 286.392 36.3262 307.873 48.5781 325.569Z" stroke="url(#paint21_linear_1867_41861)"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_1867_41861" x1="560.534" y1="10.4329" x2="67.2164" y2="541.201" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_1867_41861" x1="374.72" y1="195.278" x2="-68.6542" y2="331.647" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_1867_41861" x1="555.952" y1="17.6353" x2="58.2331" y2="527.059" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint3_linear_1867_41861" x1="550.966" y1="25.0952" x2="49.5983" y2="513.29" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint4_linear_1867_41861" x1="545.571" y1="32.7967" x2="41.2979" y2="499.903" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint5_linear_1867_41861" x1="539.762" y1="40.7257" x2="33.3168" y2="486.907" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint6_linear_1867_41861" x1="533.532" y1="48.8659" x2="25.64" y2="474.31" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint7_linear_1867_41861" x1="526.88" y1="57.2031" x2="18.2538" y2="462.12" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint8_linear_1867_41861" x1="519.798" y1="65.7205" x2="11.1397" y2="450.343" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint9_linear_1867_41861" x1="512.284" y1="74.4036" x2="4.28371" y2="438.986" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint10_linear_1867_41861" x1="504.337" y1="83.2373" x2="-2.3298" y2="428.057" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint11_linear_1867_41861" x1="495.952" y1="92.2052" x2="-8.71696" y2="417.559" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint12_linear_1867_41861" x1="487.129" y1="101.291" x2="-14.8935" y2="407.497" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint13_linear_1867_41861" x1="477.866" y1="110.481" x2="-20.8757" y2="397.878" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint14_linear_1867_41861" x1="468.162" y1="119.759" x2="-26.6795" y2="388.704" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint15_linear_1867_41861" x1="458.017" y1="129.109" x2="-32.3217" y2="379.979" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint16_linear_1867_41861" x1="447.431" y1="138.515" x2="-37.818" y2="371.705" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint17_linear_1867_41861" x1="436.405" y1="147.962" x2="-43.1837" y2="363.886" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint18_linear_1867_41861" x1="424.939" y1="157.435" x2="-48.4379" y2="356.523" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint19_linear_1867_41861" x1="413.035" y1="166.918" x2="-53.5959" y2="349.617" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint20_linear_1867_41861" x1="400.696" y1="176.396" x2="-58.6736" y2="343.169" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint21_linear_1867_41861" x1="387.923" y1="185.855" x2="-63.6876" y2="337.179" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D375FF"/>
|
||||
<stop offset="0.598958" stop-color="#798FFF"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 21 KiB |
+212
-219
@@ -23,8 +23,8 @@ import StreamCard2 from "./components/StreamCard2";
|
||||
function App() {
|
||||
const [fullname, setFullname] = useState<string>("");
|
||||
const [email, setEmail] = useState<string>("");
|
||||
const [company, setCompany] = useState<string>("");
|
||||
const [phone, setPhone] = useState<string>("");
|
||||
const [request, setRequest] = useState<string>("");
|
||||
const [isShowComplexCards, setIsShowComplexCards] = useState<boolean>(false);
|
||||
const [setModalComponent] = useModalStore((state) => [state.setComponent]);
|
||||
|
||||
@@ -37,21 +37,27 @@ function App() {
|
||||
async function handleSubmitSendMail(e: FormEvent<HTMLFormElement>) {
|
||||
e.preventDefault();
|
||||
|
||||
await api.post("mail", {
|
||||
json: {
|
||||
fullname,
|
||||
email,
|
||||
company,
|
||||
phone,
|
||||
},
|
||||
});
|
||||
const result: any = await api
|
||||
.post("mail", {
|
||||
json: {
|
||||
fullname,
|
||||
email,
|
||||
phone,
|
||||
request,
|
||||
},
|
||||
})
|
||||
.json();
|
||||
|
||||
setFullname("");
|
||||
setEmail("");
|
||||
setCompany("");
|
||||
setPhone("");
|
||||
if (result.ok) {
|
||||
setFullname("");
|
||||
setEmail("");
|
||||
setPhone("");
|
||||
setRequest("");
|
||||
|
||||
setModalComponent(<FeedbackFormSuccess />);
|
||||
setModalComponent(<FeedbackFormSuccess />);
|
||||
} else {
|
||||
alert("Error sending, please try again later.");
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
@@ -661,12 +667,15 @@ function App() {
|
||||
<div className="lg:grid grid-cols-2">
|
||||
<div className="space-y-14">
|
||||
<Title>
|
||||
<Trans i18nKey="showAllAdvantagesHeading">
|
||||
Покажите все преимущества вашего жилого комплекса клиенту
|
||||
<br />
|
||||
из любой точки мира
|
||||
{/* <Trans i18nKey="showAllAdvantagesHeading"> */}
|
||||
Graff.estate stream
|
||||
<br />—{" "}
|
||||
<Trans i18nKey="remoteDemoHeading">
|
||||
удаленная демонстрация жилого комплекса
|
||||
</Trans>
|
||||
{/* </Trans> */}
|
||||
</Title>
|
||||
|
||||
<div className="w-3/4 space-y-4">
|
||||
<p className="2xl:text-2xl sm:text-xl text-lg">
|
||||
<Trans i18nKey="showAllAdvantagesText">
|
||||
@@ -681,9 +690,13 @@ function App() {
|
||||
</Trans>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="relative w-[150%] lg:-translate-x-[27%] -translate-x-[21%] -translate-y-[5%]">
|
||||
<Map />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="lg:border-l-2 lg:border-t-0 border-t-2 border-[#2E3038] lg:pl-8 space-y-8 lg:mt-0 lg:pt-0 mt-8 pt-8">
|
||||
<div className="relative h-fit bg-[#131317] lg:border-l-2 lg:border-t-0 border-t-2 border-[#2E3038] lg:pl-8 lg:space-y-8 space-y-4 lg:pt-0 pt-8">
|
||||
<p className="uppercase tracking-wider lg:text-2xl sm:text-xl">
|
||||
<Trans i18nKey="availableDemonstrationsHeading">
|
||||
Демонстрация технологии
|
||||
@@ -729,9 +742,7 @@ function App() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* <div className="flex flex-col items-center lg:translate-x-0 lg:translate-y-0 -translate-x-[7%] translate-y-[10%]">
|
||||
<Map />
|
||||
</div> */}
|
||||
<div className="flex flex-col items-center lg:translate-x-0 lg:translate-y-0 -translate-x-[7%] translate-y-[10%]"></div>
|
||||
</div>
|
||||
|
||||
{/* <div className="xl:space-y-10 lg:space-y-8 sm:space-y-6 space-y-4 mt-16">
|
||||
@@ -971,248 +982,230 @@ function App() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{i18n.language === "ru" && (
|
||||
<div className="relative lg:block hidden">
|
||||
<div className="lg:container mx-auto p-4 xl:max-w-screen-2xl">
|
||||
<div className="mb-48">
|
||||
<Title>Нам доверяют</Title>
|
||||
<motion.div
|
||||
initial={{ backgroundPositionX: "0%" }}
|
||||
animate={{ backgroundPositionX: "10000%" }}
|
||||
transition={{
|
||||
repeat: Infinity,
|
||||
ease: "linear",
|
||||
duration: 2400,
|
||||
}}
|
||||
className="absolute top-32 left-0 h-[200px] w-full bg-repeat-x"
|
||||
style={{ backgroundImage: "url('/images/logos.svg')" }}
|
||||
/>
|
||||
</div>
|
||||
<div className="relative lg:block hidden">
|
||||
<div className="lg:container mx-auto p-4 xl:max-w-screen-2xl">
|
||||
<div className="mb-48">
|
||||
<Title>
|
||||
<Trans i18nKey="weAreTrustedHeading">Нам доверяют</Trans>
|
||||
</Title>
|
||||
<motion.div
|
||||
initial={{ backgroundPositionX: "0%" }}
|
||||
animate={{ backgroundPositionX: "10000%" }}
|
||||
transition={{
|
||||
repeat: Infinity,
|
||||
ease: "linear",
|
||||
duration: 2400,
|
||||
}}
|
||||
className="absolute top-32 left-0 h-[200px] w-full bg-repeat-x"
|
||||
style={{
|
||||
backgroundImage: `url('/images/${
|
||||
i18n.language === "ru" ? "logos" : "logos_en"
|
||||
}.svg')`,
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<div className="bg-[#23232A]">
|
||||
<div className="border-t-2 border-[#212431] 2xl:pt-28 lg:pt-20 pt-12 pb-8">
|
||||
<div className="lg:container mx-auto p-4 xl:max-w-screen-2xl">
|
||||
<div className="space-y-16 mt-12 mb-8">
|
||||
<div className="space-y-16">
|
||||
<div className="space-y-8">
|
||||
<p className="font-gilroy 2xl:text-7xl lg:text-5xl sm:text-4xl text-3xl w-1/2 text-gradient">
|
||||
<Trans i18nKey="contactUsHeading">Свяжитесь с нами</Trans>
|
||||
</p>
|
||||
<p className="font-gilroy 2xl:text-4xl sm:text-3xl text-2xl">
|
||||
<Trans i18nKey="contactUsDesc">
|
||||
<div className="space-y-16">
|
||||
<div className="grid sm:grid-cols-2 gap-8">
|
||||
<div className="space-y-12">
|
||||
<Title>
|
||||
<Trans i18nKey={"contactUsHeading"}>Свяжитесь с нами</Trans>
|
||||
</Title>
|
||||
|
||||
<p className="2xl:text-4xl lg:text-3xl text-2xl">
|
||||
<Trans i18nKey={"contactUsDesc"}>
|
||||
Хотите увеличить конверсию?
|
||||
<br />
|
||||
Давайте обсудим детали!
|
||||
</Trans>
|
||||
</p>
|
||||
|
||||
<div className="sm:block hidden">
|
||||
<img src="/images/shapes/5.svg" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form
|
||||
className="grid lg:grid-cols-2 2xl:gap-8 xl:gap-6 gap-4"
|
||||
onSubmit={handleSubmitSendMail}
|
||||
className="xl:space-y-12 lg:space-y-10 space-y-8"
|
||||
>
|
||||
<div className="2xl:space-y-8 xl:space-y-6 space-y-4">
|
||||
<div className="xl:space-y-8 lg:space-y-6 space-y-4">
|
||||
<div className="space-y-2">
|
||||
<label
|
||||
htmlFor=""
|
||||
className="text-[#D9D9D9] block 2xl:text-xl sm:text-lg text-sm"
|
||||
>
|
||||
<Trans i18nKey="contactUsLabelName">Имя Фамилия*</Trans>
|
||||
</label>
|
||||
<p className="text-xl text-[#8088A7]">
|
||||
<Trans i18nKey={"contactUsLabelName"}>Имя*</Trans>
|
||||
</p>
|
||||
<input
|
||||
required
|
||||
type="text"
|
||||
className="text-xl p-4 bg-[#454554] outline-none border border-transparent rounded-lg focus:border-[#BC75FF] transition-colors w-full"
|
||||
value={fullname}
|
||||
onChange={(e) => setFullname(e.target.value)}
|
||||
className="bg-[#212431] xl:p-4 lg:p-3 p-2 border border-transparent focus:border-[#BC75FF] outline-none transition-colors rounded w-full"
|
||||
/>
|
||||
</div>
|
||||
<div className="space-y-2">
|
||||
<label
|
||||
htmlFor=""
|
||||
className="text-[#D9D9D9] block 2xl:text-xl sm:text-lg text-sm"
|
||||
>
|
||||
<Trans i18nKey="contactUsLabelCompany">Компания</Trans>
|
||||
</label>
|
||||
<input
|
||||
type="text"
|
||||
className="text-xl p-4 bg-[#454554] outline-none border border-transparent rounded-lg focus:border-[#BC75FF] transition-colors w-full"
|
||||
value={company}
|
||||
onChange={(e) => setCompany(e.target.value)}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="2xl:space-y-8 xl:space-y-6 space-y-4">
|
||||
<div className="space-y-2">
|
||||
<label
|
||||
htmlFor=""
|
||||
className="text-[#D9D9D9] block 2xl:text-xl sm:text-lg text-sm"
|
||||
>
|
||||
Email*
|
||||
</label>
|
||||
<p className="text-xl text-[#8088A7]">Email*</p>
|
||||
<input
|
||||
required
|
||||
type="email"
|
||||
className="text-xl p-4 bg-[#454554] outline-none border border-transparent rounded-lg focus:border-[#BC75FF] transition-colors w-full"
|
||||
value={email}
|
||||
onChange={(e) => setEmail(e.target.value)}
|
||||
className="bg-[#212431] xl:p-4 lg:p-3 p-2 border border-transparent focus:border-[#BC75FF] outline-none transition-colors rounded w-full"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
<label
|
||||
htmlFor=""
|
||||
className="text-[#D9D9D9] block 2xl:text-xl sm:text-lg text-sm"
|
||||
>
|
||||
<Trans i18nKey="contactUsLabelPhone">Телефон</Trans>
|
||||
</label>
|
||||
{i18n.language === "ru" ? (
|
||||
<InputMask
|
||||
maskChar={null}
|
||||
mask={"+7 (999) 999-99-99"}
|
||||
type="text"
|
||||
className="text-xl p-4 bg-[#454554] outline-none border border-transparent rounded-lg focus:border-[#BC75FF] transition-colors w-full"
|
||||
value={phone}
|
||||
onChange={(e) => setPhone(e.target.value)}
|
||||
/>
|
||||
) : (
|
||||
<InputMask
|
||||
maskChar={null}
|
||||
mask={"+999999999999999"}
|
||||
type="text"
|
||||
className="text-xl p-4 bg-[#454554] outline-none border border-transparent rounded-lg focus:border-[#BC75FF] transition-colors w-full"
|
||||
value={phone}
|
||||
onChange={(e) => setPhone(e.target.value)}
|
||||
/>
|
||||
)}
|
||||
<p className="text-xl text-[#8088A7]">
|
||||
<Trans i18nKey={"contactUsLabelPhone"}>Телефон</Trans>
|
||||
</p>
|
||||
<InputMask
|
||||
mask={"+999999999999999"}
|
||||
maskChar={null}
|
||||
type="text"
|
||||
value={phone}
|
||||
onChange={(e) => setPhone(e.target.value)}
|
||||
className="bg-[#212431] xl:p-4 lg:p-3 p-2 border border-transparent focus:border-[#BC75FF] outline-none transition-colors rounded w-full"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
<p className="text-xl text-[#8088A7]">
|
||||
<Trans i18nKey={"contactUsLabelRequest"}>
|
||||
Ваш запрос
|
||||
</Trans>
|
||||
</p>
|
||||
<textarea
|
||||
value={request}
|
||||
onChange={(e) => setRequest(e.target.value)}
|
||||
className="bg-[#212431] xl:p-4 lg:p-3 p-2 border border-transparent focus:border-[#BC75FF] outline-none transition-colors rounded w-full h-52 resize-none"
|
||||
></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="space-y-8">
|
||||
<div className="space-x-4">
|
||||
<div className="2xl:text-xl sm:text-base text-sm flex items-center space-x-4">
|
||||
<div>
|
||||
<input
|
||||
required
|
||||
type="checkbox"
|
||||
defaultChecked={true}
|
||||
className="absolute opacity-0 h-10 w-10 cursor-pointer"
|
||||
<div className="2xl:text-xl sm:text-base text-sm flex items-center space-x-4">
|
||||
<div>
|
||||
<input
|
||||
required
|
||||
type="checkbox"
|
||||
defaultChecked={true}
|
||||
className="absolute opacity-0 h-10 w-10 cursor-pointer"
|
||||
/>
|
||||
<div className="bg-[#212431] rounded-lg h-10 w-10 p-1">
|
||||
<svg
|
||||
width="32"
|
||||
height="32"
|
||||
viewBox="0 0 32 32"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className="hidden"
|
||||
>
|
||||
<path
|
||||
d="M6.6665 14.6667L13.3332 21.3334L25.3332 10.6667"
|
||||
stroke="#F2F2F2"
|
||||
strokeWidth="2"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
<div className="bg-[#454554] rounded-lg h-10 w-10 p-1">
|
||||
<svg
|
||||
width="32"
|
||||
height="32"
|
||||
viewBox="0 0 32 32"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className="hidden"
|
||||
>
|
||||
<path
|
||||
d="M6.6665 14.6667L13.3332 21.3334L25.3332 10.6667"
|
||||
stroke="#F2F2F2"
|
||||
strokeWidth="2"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-[#ABABBA] text-opacity-50">
|
||||
<Trans i18nKey="contactUsCheckboxText1">
|
||||
Я согласен с
|
||||
</Trans>
|
||||
</span>{" "}
|
||||
<a
|
||||
href="https://graff.tech/privacypolicy"
|
||||
target="_blank"
|
||||
className="text-white"
|
||||
>
|
||||
<Trans i18nKey="contactUsCheckboxText2">
|
||||
политикой конфиденциальности
|
||||
</Trans>
|
||||
</a>
|
||||
</div>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
type="submit"
|
||||
className="2xl:text-3xl sm:text-2xl text-lg w-full px-8 py-4 bg-gradient-to-tr from-[#BC75FF] to-[#798FFF] rounded-full opacity-95 hover:opacity-100 transition-opacity"
|
||||
>
|
||||
<Trans i18nKey="contactUsBtn">Отправить заявку</Trans>
|
||||
</button>
|
||||
<div>
|
||||
<span className="text-[#8088A7] text-opacity-50">
|
||||
<Trans i18nKey="contactUsCheckboxText1">
|
||||
Я согласен с
|
||||
</Trans>
|
||||
</span>{" "}
|
||||
<a
|
||||
href="https://graff.tech/privacypolicy"
|
||||
target="_blank"
|
||||
>
|
||||
<Trans i18nKey="contactUsCheckboxText2">
|
||||
политикой конфиденциальности
|
||||
</Trans>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button
|
||||
type="submit"
|
||||
className="2xl:text-3xl sm:text-2xl text-lg w-full px-8 py-4 bg-gradient-to-tr from-[#BC75FF] to-[#798FFF] rounded-full opacity-95 hover:opacity-100 transition-opacity"
|
||||
>
|
||||
<Trans i18nKey="contactUsBtn">Отправить заявку</Trans>
|
||||
</button>
|
||||
</form>
|
||||
<div className="h-0.5 bg-[#454554]"></div>
|
||||
<div className="grid sm:grid-cols-2 gap-8">
|
||||
<div className="space-y-8">
|
||||
<div className="space-y-2">
|
||||
<p className="2xl:text-xl sm:text-lg text-[#ABABBA]">
|
||||
Email
|
||||
</p>
|
||||
<p className="2xl:text-3xl sm:text-2xl text-xl">
|
||||
info@graff.tech
|
||||
</p>
|
||||
</div>
|
||||
<div className="space-y-2">
|
||||
<p className="2xl:text-xl sm:text-lg text-[#ABABBA]">
|
||||
<Trans i18nKey="feedbackTitle2">Телефон</Trans>
|
||||
</p>
|
||||
<p className="2xl:text-3xl sm:text-2xl text-xl">
|
||||
<Trans i18nKey="phoneСountryСode">8</Trans> 800 770 00
|
||||
76
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="h-0.5 bg-[#212431]"></div>
|
||||
|
||||
<div className="grid sm:grid-cols-2 gap-8">
|
||||
<div className="space-y-8">
|
||||
<div className="space-y-2">
|
||||
<p className="2xl:text-xl sm:text-lg text-[#8088A7]">
|
||||
Email
|
||||
</p>
|
||||
<p className="2xl:text-3xl sm:text-2xl text-xl">
|
||||
info@graff.tech
|
||||
</p>
|
||||
</div>
|
||||
<div className="space-y-8">
|
||||
<div className="space-y-2">
|
||||
<p className="2xl:text-xl sm:text-lg text-[#ABABBA]">
|
||||
<Trans i18nKey="feedbackTitle1">Сайт</Trans>
|
||||
</p>
|
||||
<p className="2xl:text-3xl sm:text-2xl text-xl">
|
||||
<a href="https://graff.tech" target="_blank">
|
||||
graff.tech
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<div className="space-y-2">
|
||||
<p className="2xl:text-xl sm:text-lg text-[#ABABBA]">
|
||||
<Trans i18nKey="feedbackTitle3">Социальные сети</Trans>
|
||||
</p>
|
||||
<p className="2xl:text-3xl sm:text-2xl text-xl space-x-4">
|
||||
<a
|
||||
href="https://www.youtube.com/@GRAFFtech"
|
||||
target="_blank"
|
||||
>
|
||||
YouTube
|
||||
</a>
|
||||
<a
|
||||
href="https://vk.com/graffinteractive"
|
||||
target="_blank"
|
||||
>
|
||||
VK
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<div className="space-y-2">
|
||||
<p className="2xl:text-xl sm:text-lg text-[#8088A7]">
|
||||
<Trans i18nKey="feedbackTitle2">Телефон</Trans>
|
||||
</p>
|
||||
<p className="2xl:text-3xl sm:text-2xl text-xl">
|
||||
<Trans i18nKey="phoneСountryСode">8</Trans> 800 770 00 76
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="h-0.5 bg-[#454554]"></div>
|
||||
<div className="flex sm:flex-row flex-col flex-wrap sm:items-center gap-4 items-start justify-between text-[#C5C7CE] 2xl:text-xl">
|
||||
<div className="flex items-center space-x-8">
|
||||
<img src="/logo.svg" alt="" />
|
||||
<a href="https://graff.tech/privacypolicy" target="_blank">
|
||||
<Trans i18nKey="footerText1">
|
||||
Политика конфиденциальности
|
||||
</Trans>
|
||||
</a>
|
||||
<div className="space-y-8">
|
||||
<div className="space-y-2">
|
||||
<p className="2xl:text-xl sm:text-lg text-[#8088A7]">
|
||||
<Trans i18nKey="feedbackTitle1">Сайт</Trans>
|
||||
</p>
|
||||
<p className="2xl:text-3xl sm:text-2xl text-xl">
|
||||
<a href="https://graff.tech" target="_blank">
|
||||
graff.tech
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<div className="space-y-2">
|
||||
<p className="2xl:text-xl sm:text-lg text-[#8088A7]">
|
||||
<Trans i18nKey="feedbackTitle3">Социальные сети</Trans>
|
||||
</p>
|
||||
<p className="2xl:text-3xl sm:text-2xl text-xl space-x-4">
|
||||
<a
|
||||
href="https://www.youtube.com/@GRAFFtech"
|
||||
target="_blank"
|
||||
>
|
||||
YouTube
|
||||
</a>
|
||||
<a href="https://vk.com/graffinteractive" target="_blank">
|
||||
VK
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<p>
|
||||
© 2023 GRAFF interactive.{" "}
|
||||
<Trans i18nKey="footerText2">Все права защищены</Trans>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="h-0.5 bg-[#212431]"></div>
|
||||
|
||||
<div className="flex sm:flex-row flex-col flex-wrap sm:items-center gap-12 items-start text-[#C5C7CE] 2xl:text-xl">
|
||||
<div className="flex items-center space-x-12">
|
||||
<img src="/logo.svg" alt="" />
|
||||
<a href="https://graff.tech/privacypolicy" target="_blank">
|
||||
<Trans i18nKey="footerText1">
|
||||
Политика конфиденциальности
|
||||
</Trans>
|
||||
</a>
|
||||
</div>
|
||||
<p>
|
||||
© 2023 GRAFF interactive.{" "}
|
||||
<Trans i18nKey="footerText2">Все права защищены</Trans>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5,6 +5,7 @@ import useModalStore from "../store/modal";
|
||||
import FeedbackFormSuccess from "./FeedbackFormSuccess";
|
||||
import { Trans } from "react-i18next";
|
||||
import i18n from "../i18n";
|
||||
import Title from "./Title";
|
||||
|
||||
function FeedbackForm() {
|
||||
const [modalComponent, setModalComponent] = useModalStore((state) => [
|
||||
@@ -13,172 +14,143 @@ function FeedbackForm() {
|
||||
]);
|
||||
const [fullname, setFullname] = useState<string>("");
|
||||
const [email, setEmail] = useState<string>("");
|
||||
const [company, setCompany] = useState<string>("");
|
||||
const [phone, setPhone] = useState<string>("");
|
||||
const [request, setRequest] = useState<string>("");
|
||||
|
||||
async function handleSubmitSendMail(e: FormEvent<HTMLFormElement>) {
|
||||
e.preventDefault();
|
||||
|
||||
await api.post("mail", {
|
||||
json: {
|
||||
fullname,
|
||||
email,
|
||||
company,
|
||||
phone,
|
||||
},
|
||||
});
|
||||
const result: any = await api
|
||||
.post("mail", {
|
||||
json: {
|
||||
fullname,
|
||||
email,
|
||||
phone,
|
||||
request,
|
||||
},
|
||||
})
|
||||
.json();
|
||||
|
||||
setFullname("");
|
||||
setEmail("");
|
||||
setCompany("");
|
||||
setPhone("");
|
||||
if (result.ok) {
|
||||
setFullname("");
|
||||
setEmail("");
|
||||
setPhone("");
|
||||
setRequest("");
|
||||
|
||||
setModalComponent(<FeedbackFormSuccess />);
|
||||
setModalComponent(<FeedbackFormSuccess />);
|
||||
} else {
|
||||
alert("Error sending, please try again later.");
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="fixed top-0 left-0 w-full h-full overflow-y-auto">
|
||||
<div className="lg:p-8 sm:p-6 p-4 w-full min-h-full relative flex flex-col justify-center items-center">
|
||||
<div className="space-y-8 bg-[#23232A] 2xl:p-16 xl:p-12 lg:p-8 p-4 rounded-xl 2xl:w-[1472px] xl:w-[1248px] lg:w-[968px]">
|
||||
<p className="font-gilroy 2xl:text-7xl xl:text-6xl sm:text-5xl text-4xl text-gradient w-fit">
|
||||
<Trans i18nKey="contactUsHeading">Свяжитесь с нами</Trans>
|
||||
</p>
|
||||
<div className="space-y-8 bg-[#131317] 2xl:p-16 xl:p-12 lg:p-8 p-4 rounded-xl 2xl:w-[1280px] xl:w-[1024px] lg:w-[768px] w-full">
|
||||
<Title>
|
||||
<Trans i18nKey={"contactUsHeading"}>Свяжитесь с нами</Trans>
|
||||
</Title>
|
||||
|
||||
<form
|
||||
className="grid lg:grid-cols-2 2xl:gap-8 xl:gap-6 gap-4"
|
||||
onSubmit={handleSubmitSendMail}
|
||||
className="xl:space-y-12 lg:space-y-10 space-y-8"
|
||||
>
|
||||
<div className="2xl:space-y-8 xl:space-y-6 space-y-4">
|
||||
<div className="xl:space-y-8 lg:space-y-6 space-y-4">
|
||||
<div className="space-y-2">
|
||||
<label
|
||||
htmlFor=""
|
||||
className="text-[#D9D9D9] block 2xl:text-xl sm:text-lg text-sm"
|
||||
>
|
||||
<Trans i18nKey="contactUsLabelName">Имя Фамилия*</Trans>
|
||||
</label>
|
||||
<p className="lg:text-xl sm:text-lg text-[#8088A7]">
|
||||
<Trans i18nKey={"contactUsLabelName"}>Имя*</Trans>
|
||||
</p>
|
||||
<input
|
||||
required
|
||||
type="text"
|
||||
className="lg:text-xl lg:py-4 px-3 py-2 bg-[#454554] outline-none border border-transparent rounded-lg focus:border-[#BC75FF] transition-colors w-full"
|
||||
value={fullname}
|
||||
onChange={(e) => setFullname(e.target.value)}
|
||||
className="bg-[#212431] xl:p-4 lg:p-3 p-2 border border-transparent focus:border-[#BC75FF] outline-none transition-colors rounded w-full"
|
||||
/>
|
||||
</div>
|
||||
<div className="space-y-2">
|
||||
<label
|
||||
htmlFor=""
|
||||
className="text-[#D9D9D9] block 2xl:text-xl sm:text-lg text-sm"
|
||||
>
|
||||
<Trans i18nKey="contactUsLabelCompany">Компания</Trans>
|
||||
</label>
|
||||
<input
|
||||
type="text"
|
||||
className="lg:text-xl lg:py-4 px-3 py-2 bg-[#454554] outline-none border border-transparent rounded-lg focus:border-[#BC75FF] transition-colors w-full"
|
||||
value={company}
|
||||
onChange={(e) => setCompany(e.target.value)}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="2xl:space-y-8 xl:space-y-6 space-y-4">
|
||||
<div className="space-y-2">
|
||||
<label
|
||||
htmlFor=""
|
||||
className="text-[#D9D9D9] block 2xl:text-xl sm:text-lg text-sm"
|
||||
>
|
||||
Email*
|
||||
</label>
|
||||
<p className="text-xl text-[#8088A7]">Email*</p>
|
||||
<input
|
||||
required
|
||||
type="email"
|
||||
className="lg:text-xl lg:py-4 px-3 py-2 bg-[#454554] outline-none border border-transparent rounded-lg focus:border-[#BC75FF] transition-colors w-full"
|
||||
value={email}
|
||||
onChange={(e) => setEmail(e.target.value)}
|
||||
className="bg-[#212431] xl:p-4 lg:p-3 p-2 border border-transparent focus:border-[#BC75FF] outline-none transition-colors rounded w-full"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
<label
|
||||
htmlFor=""
|
||||
className="text-[#D9D9D9] block 2xl:text-xl sm:text-lg text-sm"
|
||||
>
|
||||
<Trans i18nKey="contactUsLabelPhone">Телефон</Trans>
|
||||
</label>
|
||||
{i18n.language === "ru" ? (
|
||||
<InputMask
|
||||
maskChar={null}
|
||||
mask={"+7 (999) 999-99-99"}
|
||||
type="text"
|
||||
className="lg:text-xl lg:py-4 px-3 py-2 bg-[#454554] outline-none border border-transparent rounded-lg focus:border-[#BC75FF] transition-colors w-full"
|
||||
value={phone}
|
||||
onChange={(e) => setPhone(e.target.value)}
|
||||
/>
|
||||
) : (
|
||||
<InputMask
|
||||
maskChar={null}
|
||||
mask={"+999999999999999"}
|
||||
type="text"
|
||||
className="text-xl p-4 bg-[#454554] outline-none border border-transparent rounded-lg focus:border-[#BC75FF] transition-colors w-full"
|
||||
value={phone}
|
||||
onChange={(e) => setPhone(e.target.value)}
|
||||
/>
|
||||
)}
|
||||
<p className="lg:text-xl sm:text-lg text-[#8088A7]">
|
||||
<Trans i18nKey={"contactUsLabelPhone"}>Телефон</Trans>
|
||||
</p>
|
||||
<InputMask
|
||||
mask={"+999999999999999"}
|
||||
maskChar={null}
|
||||
type="text"
|
||||
value={phone}
|
||||
onChange={(e) => setPhone(e.target.value)}
|
||||
className="bg-[#212431] xl:p-4 lg:p-3 p-2 border border-transparent focus:border-[#BC75FF] outline-none transition-colors rounded w-full"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
<p className="lg:text-xl sm:text-lg text-[#8088A7]">
|
||||
<Trans i18nKey={"contactUsLabelRequest"}>Ваш запрос</Trans>
|
||||
</p>
|
||||
<textarea
|
||||
value={request}
|
||||
onChange={(e) => setRequest(e.target.value)}
|
||||
className="bg-[#212431] xl:p-4 lg:p-3 p-2 border border-transparent focus:border-[#BC75FF] outline-none transition-colors rounded w-full lg:h-52 h-36 resize-none"
|
||||
></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="space-y-8">
|
||||
<div className="space-x-4">
|
||||
<div className="2xl:text-xl sm:text-base text-sm flex items-center space-x-4">
|
||||
<div>
|
||||
<input
|
||||
required
|
||||
type="checkbox"
|
||||
defaultChecked={true}
|
||||
className="absolute opacity-0 h-10 w-10 cursor-pointer"
|
||||
<div className="2xl:text-xl sm:text-base text-sm flex items-center space-x-4">
|
||||
<div>
|
||||
<input
|
||||
required
|
||||
type="checkbox"
|
||||
defaultChecked={true}
|
||||
className="absolute opacity-0 h-10 w-10 cursor-pointer"
|
||||
/>
|
||||
<div className="bg-[#212431] rounded-lg h-10 w-10 p-1">
|
||||
<svg
|
||||
width="32"
|
||||
height="32"
|
||||
viewBox="0 0 32 32"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className="hidden"
|
||||
>
|
||||
<path
|
||||
d="M6.6665 14.6667L13.3332 21.3334L25.3332 10.6667"
|
||||
stroke="#F2F2F2"
|
||||
strokeWidth="2"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
<div className="bg-[#454554] rounded-lg h-10 w-10 p-1">
|
||||
<svg
|
||||
width="32"
|
||||
height="32"
|
||||
viewBox="0 0 32 32"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className="hidden"
|
||||
>
|
||||
<path
|
||||
d="M6.6665 14.6667L13.3332 21.3334L25.3332 10.6667"
|
||||
stroke="#F2F2F2"
|
||||
strokeWidth="2"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-[#ABABBA] text-opacity-50">
|
||||
<Trans i18nKey="contactUsCheckboxText1">
|
||||
Я согласен с
|
||||
</Trans>
|
||||
</span>{" "}
|
||||
<a
|
||||
href="https://graff.tech/privacypolicy"
|
||||
target="_blank"
|
||||
className="text-white"
|
||||
>
|
||||
<Trans i18nKey="contactUsCheckboxText2">
|
||||
политикой конфиденциальности
|
||||
</Trans>
|
||||
</a>
|
||||
</div>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
type="submit"
|
||||
className="2xl:text-xl w-full lg:py-4 px-8 py-3 bg-gradient-to-tr from-[#BC75FF] to-[#798FFF] rounded-full opacity-95 hover:opacity-100 transition-opacity"
|
||||
>
|
||||
<Trans i18nKey="contactUsBtn">Отправить заявку</Trans>
|
||||
</button>
|
||||
<div>
|
||||
<span className="text-[#8088A7] text-opacity-50">
|
||||
<Trans i18nKey="contactUsCheckboxText1">Я согласен с</Trans>
|
||||
</span>{" "}
|
||||
<a href="https://graff.tech/privacypolicy" target="_blank">
|
||||
<Trans i18nKey="contactUsCheckboxText2">
|
||||
политикой конфиденциальности
|
||||
</Trans>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button
|
||||
type="submit"
|
||||
className="2xl:text-3xl sm:text-2xl lg:text-lg w-full xl:px-8 lg:px-6 px-4 xl:py-4 lg:py-3 py-2 bg-gradient-to-tr from-[#BC75FF] to-[#798FFF] rounded-full opacity-95 hover:opacity-100 transition-opacity"
|
||||
>
|
||||
<Trans i18nKey="contactUsBtn">Отправить заявку</Trans>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -18,7 +18,7 @@ function FeedbackForm() {
|
||||
return (
|
||||
<div className="fixed top-0 left-0 w-full h-full overflow-y-auto">
|
||||
<div className="lg:p-8 sm:p-6 p-4 w-full min-h-full relative flex flex-col justify-center items-center">
|
||||
<div className="space-y-8 bg-[#23232A] 2xl:p-24 xl:p-20 lg:p-16 sm:p-14 p-8 rounded-xl 2xl:w-[1472px] xl:w-[1248px] lg:w-[968px]">
|
||||
<div className="space-y-8 bg-[#131317] 2xl:p-16 xl:p-12 lg:p-8 p-4 rounded-xl 2xl:w-[1280px] xl:w-[1024px] lg:w-[768px] w-full">
|
||||
<div className="2xl:space-y-44 xl:space-y-40 lg:space-y-36 sm:space-y-36 space-y-8">
|
||||
<div className="2xl:space-y-14 space-y-10 xl:w-2/3 lg:w-3/4">
|
||||
<p className="font-gilroy 2xl:text-7xl xl:text-6xl sm:text-5xl text-4xl text-gradient w-fit">
|
||||
@@ -50,7 +50,7 @@ function FeedbackForm() {
|
||||
|
||||
<button
|
||||
onClick={() => setModalComponent(null)}
|
||||
className="2xl:text-3xl sm:text-2xl text-lg px-8 py-4 bg-gradient-to-tr from-[#BC75FF] to-[#798FFF] text-white rounded-full opacity-95 hover:opacity-100 transition-opacity lg:w-1/2 w-full"
|
||||
className="2xl:text-3xl sm:text-2xl lg:text-lg w-full xl:px-8 lg:px-6 px-4 xl:py-4 lg:py-3 py-2 bg-gradient-to-tr from-[#BC75FF] to-[#798FFF] rounded-full opacity-95 hover:opacity-100 transition-opacity"
|
||||
>
|
||||
<Trans i18nKey="feedbackFormSuccessBtn">Продолжить</Trans>
|
||||
</button>
|
||||
|
||||
@@ -14,7 +14,6 @@ function Map() {
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlnsXlink="http://www.w3.org/1999/xlink"
|
||||
className="lg:w-[175%] w-[150%]"
|
||||
>
|
||||
<g clipPath="url(#clip0_1793_32274)">
|
||||
<g opacity="0.1">
|
||||
|
||||
@@ -11,7 +11,7 @@ interface StreamCardProps {
|
||||
function StreamCard2({ image, icon, name, location, build }: StreamCardProps) {
|
||||
return (
|
||||
<div
|
||||
className="h-[288px] p-4 bg-no-repeat bg-cover bg-center flex flex-col justify-between rounded-lg"
|
||||
className="xl:h-[340px] h-[320px] p-4 bg-no-repeat bg-cover bg-center flex flex-col justify-between rounded-lg"
|
||||
style={{
|
||||
backgroundImage: `linear-gradient(180deg, rgba(19, 19, 23, 0.8) 0%, rgba(19, 19, 23, 0.16) 37.46%, rgba(19, 19, 23, 0) 52.88%, rgba(19, 19, 23, 0.16) 69.88%, rgba(19, 19, 23, 0.8) 100%), url('${image}')`,
|
||||
}}
|
||||
|
||||
+7
-3
@@ -99,6 +99,7 @@ i18n
|
||||
"Высокий уровень графики и полное погружение покупателя в процесс выбора квартиры.",
|
||||
showAllAdvantagesText2:
|
||||
"Местоположение и устройство значения не имеют. Нужен только интернет.",
|
||||
remoteDemoHeading: "удаленная демонстрация жилого комплекса",
|
||||
availableDemonstrationsHeading: "Демонстрация технологии",
|
||||
residentialСomplex1: "МФК «Re:volution towers»",
|
||||
residentialСomplex2: "ЖК «Айвазовский»",
|
||||
@@ -119,12 +120,13 @@ i18n
|
||||
availableDemonstrationsCardBtn: "Запустить демо",
|
||||
implementedProjectsHeading: "Реализованные проекты",
|
||||
implementedProjectsBtn: "Показать больше",
|
||||
weAreTrustedHeading: "Нам доверяют",
|
||||
contactUsHeading: "Свяжитесь с нами",
|
||||
contactUsDesc:
|
||||
"Хотите увеличить конверсию?<br />Давайте обсудим детали!",
|
||||
contactUsLabelName: "Имя Фамилия*",
|
||||
contactUsLabelCompany: "Компания",
|
||||
contactUsLabelName: "Имя*",
|
||||
contactUsLabelPhone: "Телефон",
|
||||
contactUsLabelRequest: "Ваш запрос",
|
||||
contactUsCheckboxText1: "Я согласен с",
|
||||
contactUsCheckboxText2: "политикой конфиденциальности",
|
||||
contactUsBtn: "Отправить заявку",
|
||||
@@ -229,6 +231,7 @@ i18n
|
||||
"High-quality graphics and full immersion of the customer into the apartment selection process.",
|
||||
showAllAdvantagesText2:
|
||||
"No matter where you or your terminal is located. Internet connection is the only thing you need.",
|
||||
remoteDemoHeading: "remote demo of a residential complex",
|
||||
availableDemonstrationsHeading: "Technology demonstration",
|
||||
residentialСomplex1: "Re:volution towers",
|
||||
residentialСomplex2: "Aivazovsky",
|
||||
@@ -249,12 +252,13 @@ i18n
|
||||
availableDemonstrationsCardBtn: "Run demo",
|
||||
implementedProjectsHeading: "Implemented projects",
|
||||
implementedProjectsBtn: "Show more",
|
||||
weAreTrustedHeading: "We are trusted",
|
||||
contactUsHeading: "Contact us",
|
||||
contactUsDesc:
|
||||
"Need to increase conversion?<br />You are welcome to discuss the details!",
|
||||
contactUsLabelName: "Name*",
|
||||
contactUsLabelCompany: "Company",
|
||||
contactUsLabelPhone: "Phone",
|
||||
contactUsLabelRequest: "Your request",
|
||||
contactUsCheckboxText1: "I agree with the",
|
||||
contactUsCheckboxText2: "privacy policy",
|
||||
contactUsBtn: "Send request",
|
||||
|
||||
+39
-30
@@ -6,7 +6,7 @@ import nodemailer from "nodemailer";
|
||||
import Mail from "./models/Mail.js";
|
||||
|
||||
const app = express();
|
||||
const port = 3003;
|
||||
const port = 3000;
|
||||
|
||||
app.use(cors());
|
||||
app.use(express.json());
|
||||
@@ -32,7 +32,7 @@ app.get("/regions", async (req, res) => {
|
||||
|
||||
console.log(regions);
|
||||
|
||||
res.send(regions);
|
||||
res.json(regions);
|
||||
});
|
||||
|
||||
app.get("/region/:id", async (req, res) => {
|
||||
@@ -62,52 +62,61 @@ app.get("/region/:id", async (req, res) => {
|
||||
const { objSquareLivingAmt, objCnt } = result3.data.total;
|
||||
const avgAreaInComplex = Math.round(objSquareLivingAmt / objCnt);
|
||||
|
||||
res.send({ avgApartmentArea, priceAvg, avgAreaInComplex });
|
||||
res.json({ avgApartmentArea, priceAvg, avgAreaInComplex });
|
||||
} catch (error) {
|
||||
res.send({ error: 1 });
|
||||
res.json({ error: 1 });
|
||||
}
|
||||
});
|
||||
|
||||
app.post("/mail", async (req, res) => {
|
||||
const { fullname, email, company, phone } = req.body;
|
||||
await Mail.create(req.body);
|
||||
try {
|
||||
const { fullname, email, phone, request } = req.body;
|
||||
await Mail.create(req.body);
|
||||
|
||||
// create reusable transporter object using the default SMTP transport
|
||||
let transporter = nodemailer.createTransport({
|
||||
host: "mail.netangels.ru",
|
||||
port: 587,
|
||||
secure: false, // true for 465, false for other ports
|
||||
auth: {
|
||||
user: "test@graff.tech", // generated ethereal user
|
||||
pass: "ZmL0pKiDFWUyCDMq", // generated ethereal password
|
||||
},
|
||||
});
|
||||
// create reusable transporter object using the default SMTP transport
|
||||
let transporter = nodemailer.createTransport({
|
||||
host: "mail.netangels.ru",
|
||||
port: 587,
|
||||
secure: false, // true for 465, false for other ports
|
||||
auth: {
|
||||
user: "test@graff.tech", // generated ethereal user
|
||||
pass: "ZmL0pKiDFWUyCDMq", // generated ethereal password
|
||||
},
|
||||
});
|
||||
|
||||
// send mail with defined transport object
|
||||
let info = await transporter.sendMail({
|
||||
from: `${email}`, // sender address
|
||||
to: "info@graff.tech", // list of receivers
|
||||
subject: 'Заявка с сайта estate.graff.tech', // Subject line
|
||||
text: `
|
||||
// send mail with defined transport object
|
||||
let info = await transporter.sendMail({
|
||||
from: email, // sender address
|
||||
to: "info@graff.tech", // list of receivers
|
||||
subject: "Заявка с сайта estate.graff.tech", // Subject line
|
||||
text: `
|
||||
Имя Фамилия: ${fullname}
|
||||
Email: ${email}
|
||||
Телефон: ${phone}
|
||||
Компания: ${company}
|
||||
Текст запроса: ${request}
|
||||
`, // plain text body
|
||||
html: `<div>
|
||||
<p>Имя Фамилия: ${fullname}</p>
|
||||
html: `<div>
|
||||
<p>Имя: ${fullname}</p>
|
||||
<p>Email: ${email}</p>
|
||||
<p>Телефон: ${phone}</p>
|
||||
<p>Компания: ${company}</p>
|
||||
<p>Текст запроса: ${request}</p>
|
||||
</div>`, // html body
|
||||
});
|
||||
});
|
||||
|
||||
console.log(info);
|
||||
console.log(info);
|
||||
|
||||
res.send({ ok: 1 });
|
||||
console.log(req.body);
|
||||
|
||||
res.json({ ok: 1 });
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
res.json({ error: 1 });
|
||||
}
|
||||
});
|
||||
|
||||
app.listen(port, async () => {
|
||||
await mongoose.connect(
|
||||
"mongodb://192.168.1.159:27017/",
|
||||
"mongodb://root:p62Z!ZatgY25@194.26.138.94:27017/",
|
||||
{ dbName: "estate" },
|
||||
console.log("DB connection...")
|
||||
);
|
||||
|
||||
@@ -5,15 +5,15 @@ const mailSchema = new Schema(
|
||||
fullname: {
|
||||
type: String,
|
||||
required: true,
|
||||
}, // String is shorthand for {type: String}
|
||||
},
|
||||
email: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
company: {
|
||||
phone: {
|
||||
type: String,
|
||||
},
|
||||
phone: {
|
||||
request: {
|
||||
type: String,
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user