access for the start

This commit is contained in:
Kakabay 2025-01-29 14:29:54 +05:00
parent 17b0691c85
commit f225c07395
44 changed files with 377 additions and 227 deletions

BIN
public/CTA.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 KiB

5
public/about-card-bg.svg Normal file
View File

@ -0,0 +1,5 @@
<svg width="83" height="120" viewBox="0 0 83 120" fill="none" xmlns="http://www.w3.org/2000/svg">
<g opacity="0.1">
<path fill-rule="evenodd" clip-rule="evenodd" d="M31.5503 8.94022L38.0103 3.3582C42.3169 -0.506279 53.5143 4.21697 59.5436 8.51083C59.5436 8.51083 68.5876 3.78758 74.6169 3.3582C80.2156 2.49942 82.7996 3.3582 82.7996 3.3582L100.026 20.963C100.026 20.963 101.749 24.8275 100.888 31.2683C100.457 33.8446 99.5955 36.4209 98.7342 39.4266C100.026 41.1442 102.61 43.7205 104.764 46.2968C107.778 50.1613 107.778 50.1613 107.778 50.1613C110.793 42.8617 111.224 39.856 111.224 32.1271L118.545 38.9972C118.545 38.9972 118.545 46.7262 116.392 52.3082C114.238 57.8902 113.377 59.6078 113.377 59.6078C113.377 59.6078 116.822 67.3367 117.684 73.3481C118.545 79.7889 117.684 82.7946 117.684 82.7946L111.224 90.5236C111.224 87.0885 109.932 72.4894 100.888 58.3196C98.7342 54.8845 96.1502 51.4494 93.9969 48.8731C93.9969 48.8731 91.8435 45.438 89.2596 42.8617C86.6756 40.2854 79.3542 32.9858 79.3542 32.9858L68.5876 40.7148C68.5876 40.7148 70.3102 42.4323 74.1862 46.2968C78.0622 50.1613 86.6756 60.0372 86.6756 60.0372C88.8289 63.0429 91.4129 66.9073 93.9969 70.7718C101.318 83.6534 102.18 96.1056 102.18 99.5407C97.4422 103.835 87.1062 114.999 83.6609 117.146C81.5076 118.434 69.4489 117.146 65.5729 114.999C61.2663 112.852 61.2663 112.852 61.2663 112.852C61.2663 112.852 53.9449 115.857 47.9156 117.146C41.4556 118.434 39.733 118.004 39.733 118.004L31.5503 111.134C31.5503 111.134 43.6089 111.993 55.2369 105.981C66.8649 99.9701 78.4929 89.6648 78.4929 89.6648L88.3982 79.7889C88.3982 79.7889 83.2302 70.7718 81.0769 68.1955C64.7116 86.6591 41.4556 102.117 22.937 101.258L2.265 83.6534C2.265 83.6534 -1.18033 77.642 6.14099 61.7547C6.57166 61.3253 6.57166 60.4665 7.00233 60.0372C5.71033 57.0315 3.98766 52.7376 2.69567 48.8731C0.973001 42.0029 2.69567 37.2797 2.69567 37.2797C2.69567 37.2797 16.477 22.2512 19.9223 20.5336C23.3676 19.2455 30.2583 20.1043 33.7036 21.3924C34.9956 21.8218 36.2876 22.6806 37.149 23.11L37.5796 22.6806C44.9009 16.6692 49.6383 13.6635 49.6383 13.6635C43.1783 11.0871 38.441 10.2284 31.5503 8.94022ZM17.3383 93.5293C18.6303 89.6648 19.9223 86.2297 20.7836 82.3652L12.1703 71.6306C12.1703 71.6306 10.8783 72.9187 10.017 76.7832C9.15566 80.6477 7.43299 83.6534 10.017 86.2297C12.1703 88.806 17.3383 93.5293 17.3383 93.5293ZM39.733 52.3082C39.733 52.3082 56.0983 35.1328 69.8796 27.8332C84.0916 20.5336 91.8436 20.1043 91.8436 20.1043C91.8436 20.1043 87.9676 14.5222 84.5222 11.9459C81.0769 9.3696 77.2009 11.0871 73.3249 12.3753C69.8796 13.6635 64.2809 16.2398 54.3756 22.2512C40.1636 31.2683 32.4116 41.5736 32.4116 41.5736L39.733 52.3082ZM8.72499 38.1385C8.72499 38.1385 8.72499 40.7148 10.017 45.0086C11.309 49.3025 15.185 57.0315 22.5063 68.1955C30.2583 79.3595 40.1636 87.9473 40.1636 87.9473L50.4996 80.6477C50.4996 80.6477 42.7476 74.6363 36.2876 65.6192C29.397 56.6021 24.229 48.4437 21.645 42.4323C19.061 36.4209 17.3383 29.1214 17.3383 29.1214C14.3237 32.1271 12.1703 34.274 8.72499 38.1385ZM46.6236 60.8959L59.9743 74.2069L72.0329 60.8959L59.5436 48.4437L46.6236 60.8959ZM69.4489 107.699L71.6022 108.558C73.3249 109.417 80.2156 111.563 81.9382 111.134C83.2302 110.705 90.1209 104.264 91.4129 102.976C90.9822 102.976 81.0769 99.1113 81.0769 99.1113C77.2009 102.976 74.1862 105.552 69.4489 107.699Z" fill="#99101D"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

3
public/chevron.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.23021 8.01443C4.35919 7.70304 4.66305 7.5 5.00011 7.5H15.0001C15.3372 7.5 15.641 7.70304 15.77 8.01443C15.899 8.32583 15.8277 8.68426 15.5894 8.92259L10.5894 13.9226C10.2639 14.248 9.73629 14.248 9.41085 13.9226L4.41085 8.92259C4.17252 8.68426 4.10122 8.32583 4.23021 8.01443ZM7.01195 9.16667L10.0001 12.1548L12.9883 9.16667H7.01195Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 505 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

9
public/contacts/fax.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -0,0 +1,4 @@
<svg width="65" height="64" viewBox="0 0 65 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="0.333374" width="64" height="64" rx="2" fill="#C7D0E1"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.0004 16.0005C29.2315 16.0005 26.5247 16.8216 24.2225 18.3599C21.9202 19.8982 20.1258 22.0846 19.0661 24.6428C18.0065 27.2009 17.7292 30.0158 18.2693 32.7315C18.8094 35.4471 20.1427 37.9416 22.1004 39.8995C22.1004 39.8995 22.1005 39.8996 22.1004 39.8995L30.5879 48.385C30.9629 48.7596 31.4713 48.9701 32.0014 48.9701C32.5315 48.9701 33.0399 48.7596 33.4149 48.385L41.9001 39.8997C41.9001 39.8997 41.9001 39.8997 41.9001 39.8997C43.858 37.9418 45.1913 35.4472 45.7314 32.7315C46.2716 30.0158 45.9943 27.2009 44.9346 24.6428C43.875 22.0846 42.0806 19.8982 39.7783 18.3599C37.476 16.8216 34.7693 16.0005 32.0004 16.0005ZM22.0002 15.034C24.9603 13.0561 28.4403 12.0005 32.0004 12.0005C35.5604 12.0005 39.0405 13.0561 42.0005 15.034C44.9606 17.0118 47.2677 19.823 48.6301 23.112C49.9925 26.401 50.349 30.0201 49.6546 33.5118C48.9601 37.0034 47.2459 40.2107 44.7286 42.7281L36.2426 51.2141C35.1175 52.338 33.5916 52.9701 32.0014 52.9701C30.4111 52.9701 28.8859 52.3387 27.7609 51.2148L19.2723 42.7283C16.7551 40.2109 15.0406 37.0034 14.3462 33.5118C13.6517 30.0201 14.0082 26.401 15.3706 23.112C16.733 19.823 19.0401 17.0118 22.0002 15.034ZM26.3435 24.3431C27.8438 22.8429 29.8786 22 32.0004 22C34.1221 22 36.1569 22.8429 37.6572 24.3431C39.1575 25.8434 40.0004 27.8783 40.0004 30C40.0004 32.1217 39.1575 34.1566 37.6572 35.6569C36.1569 37.1571 34.1221 38 32.0004 38C29.8786 38 27.8438 37.1571 26.3435 35.6569C24.8432 34.1566 24.0004 32.1217 24.0004 30C24.0004 27.8783 24.8432 25.8434 26.3435 24.3431ZM32.0004 26C30.9395 26 29.9221 26.4214 29.1719 27.1716C28.4218 27.9217 28.0004 28.9391 28.0004 30C28.0004 31.0609 28.4218 32.0783 29.1719 32.8284C29.9221 33.5786 30.9395 34 32.0004 34C33.0612 34 34.0786 33.5786 34.8288 32.8284C35.5789 32.0783 36.0004 31.0609 36.0004 30C36.0004 28.9391 35.5789 27.9217 34.8288 27.1716C34.0786 26.4214 33.0612 26 32.0004 26Z" fill="#1D2637"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

4
public/contacts/mail.svg Normal file
View File

@ -0,0 +1,4 @@
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="64" height="64" rx="2" fill="#C7D0E1"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M18 20C17.4696 20 16.9609 20.2107 16.5858 20.5858C16.4394 20.7322 16.3181 20.8989 16.2245 21.0793L32 31.5963L47.7755 21.0793C47.6819 20.8989 47.5606 20.7322 47.4142 20.5858C47.0391 20.2107 46.5304 20 46 20H18ZM48 25.737L33.1094 35.6641C32.4376 36.112 31.5624 36.112 30.8906 35.6641L16 25.737V42C16 42.5304 16.2107 43.0391 16.5858 43.4142C16.9609 43.7893 17.4696 44 18 44H46C46.5304 44 47.0391 43.7893 47.4142 43.4142C47.7893 43.0391 48 42.5304 48 42V25.737ZM13.7574 17.7574C14.8826 16.6321 16.4087 16 18 16H46C47.5913 16 49.1174 16.6321 50.2426 17.7574C51.3679 18.8826 52 20.4087 52 22V42C52 43.5913 51.3679 45.1174 50.2426 46.2426C49.1174 47.3679 47.5913 48 46 48H18C16.4087 48 14.8826 47.3679 13.7574 46.2426C12.6321 45.1174 12 43.5913 12 42V22C12 20.4087 12.6321 18.8826 13.7574 17.7574Z" fill="#1D2637"/>
</svg>

After

Width:  |  Height:  |  Size: 1014 B

View File

@ -0,0 +1,4 @@
<svg width="65" height="64" viewBox="0 0 65 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="0.666626" width="64" height="64" rx="2" fill="#C7D0E1"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M24.6666 16C24.1362 16 23.6275 16.2107 23.2524 16.5858C22.8773 16.9609 22.6666 17.4696 22.6666 18V46C22.6666 46.5304 22.8773 47.0391 23.2524 47.4142C23.6275 47.7893 24.1362 48 24.6666 48H40.6666C41.1971 48 41.7058 47.7893 42.0808 47.4142C42.4559 47.0391 42.6666 46.5304 42.6666 46V18C42.6666 17.4696 42.4559 16.9609 42.0808 16.5858C41.7058 16.2107 41.1971 16 40.6666 16H36.6666C36.6666 17.1046 35.7712 18 34.6666 18H30.6666C29.5621 18 28.6666 17.1046 28.6666 16H24.6666ZM20.424 13.7574C21.5492 12.6321 23.0753 12 24.6666 12H40.6666C42.2579 12 43.784 12.6321 44.9093 13.7574C46.0345 14.8826 46.6666 16.4087 46.6666 18V46C46.6666 47.5913 46.0345 49.1174 44.9093 50.2426C43.784 51.3679 42.2579 52 40.6666 52H24.6666C23.0753 52 21.5492 51.3679 20.424 50.2426C19.2988 49.1174 18.6666 47.5913 18.6666 46V18C18.6666 16.4087 19.2988 14.8826 20.424 13.7574ZM32.6666 40C33.7712 40 34.6666 40.8954 34.6666 42V42.02C34.6666 43.1246 33.7712 44.02 32.6666 44.02C31.5621 44.02 30.6666 43.1246 30.6666 42.02V42C30.6666 40.8954 31.5621 40 32.6666 40Z" fill="#1D2637"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 24 KiB

BIN
public/cover.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 KiB

BIN
public/hero-banner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 KiB

3
public/in.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 5C5.73478 5 5.48043 5.10536 5.29289 5.29289C5.10536 5.48043 5 5.73478 5 6V18C5 18.2652 5.10536 18.5196 5.29289 18.7071C5.48043 18.8946 5.73478 19 6 19H18C18.2652 19 18.5196 18.8946 18.7071 18.7071C18.8946 18.5196 19 18.2652 19 18V6C19 5.73478 18.8946 5.48043 18.7071 5.29289C18.5196 5.10536 18.2652 5 18 5H6ZM3.87868 3.87868C4.44129 3.31607 5.20435 3 6 3H18C18.7956 3 19.5587 3.31607 20.1213 3.87868C20.6839 4.44129 21 5.20435 21 6V18C21 18.7957 20.6839 19.5587 20.1213 20.1213C19.5587 20.6839 18.7957 21 18 21H6C5.20435 21 4.44129 20.6839 3.87868 20.1213C3.31607 19.5587 3 18.7956 3 18V6C3 5.20435 3.31607 4.44129 3.87868 3.87868ZM8 7C8.55228 7 9 7.44772 9 8V8.01C9 8.56228 8.55228 9.01 8 9.01C7.44772 9.01 7 8.56228 7 8.01V8C7 7.44772 7.44772 7 8 7ZM8 10C8.55228 10 9 10.4477 9 11V16C9 16.5523 8.55228 17 8 17C7.44772 17 7 16.5523 7 16V11C7 10.4477 7.44772 10 8 10ZM11 16C11 16.5523 11.4477 17 12 17C12.5523 17 13 16.5523 13 16V13C13 12.7348 13.1054 12.4804 13.2929 12.2929C13.4804 12.1054 13.7348 12 14 12C14.2652 12 14.5196 12.1054 14.7071 12.2929C14.8946 12.4804 15 12.7348 15 13V16C15 16.5523 15.4477 17 16 17C16.5523 17 17 16.5523 17 16V13C17 12.2043 16.6839 11.4413 16.1213 10.8787C15.5587 10.3161 14.7957 10 14 10C13.5483 10 13.1071 10.1019 12.7071 10.2929C12.5261 10.1119 12.2761 10 12 10C11.4477 10 11 10.4477 11 11V16Z" fill="#ffffff"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

3
public/inst.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 5C7.20435 5 6.44129 5.31607 5.87868 5.87868C5.31607 6.44129 5 7.20435 5 8V16C5 16.7956 5.31607 17.5587 5.87868 18.1213C6.44129 18.6839 7.20435 19 8 19H16C16.7956 19 17.5587 18.6839 18.1213 18.1213C18.6839 17.5587 19 16.7956 19 16V8C19 7.20435 18.6839 6.44129 18.1213 5.87868C17.5587 5.31607 16.7956 5 16 5H8ZM4.46447 4.46447C5.40215 3.52678 6.67392 3 8 3H16C17.3261 3 18.5979 3.52678 19.5355 4.46447C20.4732 5.40215 21 6.67392 21 8V16C21 17.3261 20.4732 18.5979 19.5355 19.5355C18.5979 20.4732 17.3261 21 16 21H8C6.67392 21 5.40215 20.4732 4.46447 19.5355C3.52678 18.5979 3 17.3261 3 16V8C3 6.67392 3.52678 5.40215 4.46447 4.46447ZM16.5 6.5C17.0523 6.5 17.5 6.94772 17.5 7.5V7.51C17.5 8.06228 17.0523 8.51 16.5 8.51C15.9477 8.51 15.5 8.06228 15.5 7.51V7.5C15.5 6.94772 15.9477 6.5 16.5 6.5ZM9.17157 9.17157C9.92172 8.42143 10.9391 8 12 8C13.0609 8 14.0783 8.42143 14.8284 9.17157C15.5786 9.92172 16 10.9391 16 12C16 13.0609 15.5786 14.0783 14.8284 14.8284C14.0783 15.5786 13.0609 16 12 16C10.9391 16 9.92172 15.5786 9.17157 14.8284C8.42143 14.0783 8 13.0609 8 12C8 10.9391 8.42143 9.92172 9.17157 9.17157ZM12 10C11.4696 10 10.9609 10.2107 10.5858 10.5858C10.2107 10.9609 10 11.4696 10 12C10 12.5304 10.2107 13.0391 10.5858 13.4142C10.9609 13.7893 11.4696 14 12 14C12.5304 14 13.0391 13.7893 13.4142 13.4142C13.7893 13.0391 14 12.5304 14 12C14 11.4696 13.7893 10.9609 13.4142 10.5858C13.0391 10.2107 12.5304 10 12 10Z" fill="#ffffff"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
public/offer-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

BIN
public/offer-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

10
public/theme/1.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

10
public/theme/2.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

10
public/theme/3.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.8 KiB

10
public/theme/4.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.3 KiB

10
public/theme/5.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.8 KiB

10
public/theme/6.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.5 KiB

10
public/theme/7.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

10
public/theme/8.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

3
public/x.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.108 3.54798C3.27833 3.21184 3.62317 3 4 3H8.267C8.58555 3 8.88504 3.15177 9.07342 3.40865L13.348 9.23779L19.2929 3.29289C19.6834 2.90237 20.3166 2.90237 20.7071 3.29289C21.0976 3.68342 21.0976 4.31658 20.7071 4.70711L14.5446 10.8696L20.8064 19.4086C21.0293 19.7125 21.0623 20.1159 20.892 20.452C20.7217 20.7882 20.3768 21 20 21H15.733C15.4145 21 15.115 20.8482 14.9266 20.5914L10.652 14.7622L4.70711 20.7071C4.31659 21.0976 3.68342 21.0976 3.2929 20.7071C2.90237 20.3166 2.90237 19.6834 3.2929 19.2929L9.45539 13.1304L3.19359 4.59135C2.97075 4.28747 2.93766 3.88412 3.108 3.54798ZM12.3703 11.2866C12.4012 11.338 12.4371 11.3872 12.4781 11.4336L18.0266 19H16.2398L5.97338 5H7.76026L12.3703 11.2866Z" fill="#ffffff"/>
</svg>

After

Width:  |  Height:  |  Size: 871 B

View File

@ -8,7 +8,7 @@ export const Cover: FC<Props> = ({ title }) => {
return (
<div className="relative flex items-center h-[216px] w-full justify-center">
<img
src="/b2b-cover.png"
src="/cover.png"
className="-z-10 absolute size-full object-cover top-0 left-0"
/>
<h1 className="text-on_primary md:text-5xl text-3xl">{title}</h1>

View File

@ -1,12 +1,13 @@
import { FC } from "react";
import { Container } from "./";
import { Logo } from "../shared";
export const Footer: FC = () => {
return (
<footer className="py-5 bg-bg_surface_container">
<footer className="py-5 bg-primary">
<Container className="flex flex-col gap-6">
<div className="flex flex-col md:flex-row gap-6 md:items-end md:justify-between items-center">
{/* <Logo /> */}
<Logo />
<div className="flex items-center gap-6">
<img src="/inst.svg" />
@ -15,9 +16,9 @@ export const Footer: FC = () => {
</div>
</div>
<hr className="border-outline_v" />
<hr className="border-white/50" />
<h5 className="text-base text-center normal text-on_surface_v">
<h5 className="text-base text-center normal text-white">
©2025 Все права защищены
</h5>
</Container>

View File

@ -1,6 +1,6 @@
import { FC } from "react";
import { Container, Burger } from "./";
import { ArrowUpRight, MapPin, Smartphone } from "lucide-react";
import { MapPin, Smartphone } from "lucide-react";
import { Link } from "react-router-dom";
import { Button } from "../ui/button";
import { Logo } from "../shared";
@ -12,7 +12,7 @@ export const navData = [
},
{
title: "Контакты",
link: "/contacts",
link: "",
},
];
@ -34,7 +34,7 @@ export const navData2 = [
export const Header: FC = () => {
return (
<header>
<div className="h-12 hidden lg:flex bg-primary text-on_primary items-center overflow-hidden">
<div className="h-12 hidden lg:flex bg-teritary text-on_primary items-center overflow-hidden">
<Container className="flex items-center justify-between">
<div className="gap-8 flex items-center justify-between">
<div className="flex items-center gap-2">
@ -42,7 +42,7 @@ export const Header: FC = () => {
<h4 className="text-sm">Ашхабад, Туркменистан</h4>
</div>
<nav className="flex items-center gap-6">
<nav className="flex items-center gap-6 text-reverse_primary">
{navData.map(({ title, link }) => (
<Link className="py-2" key={title} to={link}>
{title}
@ -54,7 +54,7 @@ export const Header: FC = () => {
<div className="flex items-center gap-6">
<div className="flex items-center gap-2">
<Smartphone size={16} strokeWidth="3px" />
<h4 className="text-sm">+99371871814</h4>
<h4 className="text-sm text-reverse_primary">+99371871814</h4>
</div>
{/* <LangMenu /> */}
@ -62,14 +62,14 @@ export const Header: FC = () => {
</Container>
</div>
<div className="bg-white py-2 flex items-center justify-between h-20 overflow-hidden">
<div className="bg-primary py-2 flex items-center justify-between h-20 overflow-hidden">
<Container className="flex items-center justify-between ">
<div className="flex items-center gap-8">
<Link to="/">
<Logo />
</Link>
<nav className="lg:flex hidden items-center gap-6">
<nav className="lg:flex hidden items-center gap-6 text-reverse_primary">
{navData2.map(({ title, link }) => (
<Link key={title} to={link} className="flex items-center gap-2">
{title} <img src="/chevron.svg" />
@ -84,19 +84,20 @@ export const Header: FC = () => {
</div>
<div className="lg:flex hidden items-center gap-2">
<Link to="https://qacis.turkmenexpo.com/" target="_blank">
<Button variant="outline" size={"sm"}>
QACIS 2025
<ArrowUpRight />
</Button>
</Link>
<Button
variant={"secondary"}
size={"sm"}
className="bg-secondary_container text-primary hover:bg-secondary_container/90"
>
Официальная поддержка
</Button>
<Button
variant={"secondary"}
size={"sm"}
className="bg-[#FFAE2A] text-on_teritary hover:bg-[#FFAE2A]/90"
className="bg-reverse_primary text-on_secondary_container hover:bg-reverse_primary/90"
>
Официальная поддержка
B2B | B2G встречи
</Button>
</div>
</Container>

View File

@ -11,11 +11,11 @@ export const AboutCard: FC<Props> = ({ className, nums, text }) => {
return (
<article
className={cn(
"px-6 py-4 relative bg-bg_surface_container h-[160px] w-full overflow-hidden",
"px-6 py-4 relative bg-surface_container h-[160px] w-full overflow-hidden",
className
)}
>
<img src="/bg-logo.svg" className="absolute top-2 right-0" />
<img src="/about-card-bg.svg" className="absolute top-2 right-0" />
<h2 className="text-primary text-[32px] semibold leading-[130%] mb-4">
{nums}
</h2>

View File

@ -1,8 +1,8 @@
import { cn } from "@/lib/utils";
import { FC } from "react";
import { Container } from "../container";
import { Button } from "@/components/ui/button";
import { Link } from "react-router-dom";
import { Container } from "@/components/layout";
interface Props {
className?: string;
@ -22,7 +22,7 @@ export const AboutBron: FC<Props> = ({ className }) => {
<h3 className="h2 text-center !text-on_primary mb-6">
Приглашение к участию
</h3>
<p className="text-center md:text-lg text-sm text-primary_04 max-w-[808px] mx-auto mb-10">
<p className="text-center md:text-lg text-sm text-primary_03 max-w-[828px] px-5 mx-auto mb-10">
Торгово-промышленная палата Туркменистана приглашает бизнес-сообщество
со всего мира присоединиться к этому уникальному событию, которое
станет важным шагом к укреплению позиций Туркменистана на глобальной
@ -31,12 +31,12 @@ export const AboutBron: FC<Props> = ({ className }) => {
<div className="flex flex-col md:flex-row items-center gap-6">
<Link to={"/stend-form"} className="w-full">
<Button className="bg-white w-full text-primary hover:bg-white/90">
<Button className="bg-reverse_primary w-full text-primary hover:bg-reverse_primary/90">
Забронировать стенд
</Button>
</Link>
<Link to={"/B2B-B2G"} className="w-full">
<Button className="bg-white w-full hover:bg-white/90 text-primary">
<Button className="bg-reverse_primary w-full hover:bg-reverse_primary/90 text-primary">
B2B | B2G встречи
</Button>
</Link>

View File

@ -1,6 +1,6 @@
import { Container } from "@/components/layout";
import { cn } from "@/lib/utils";
import { FC } from "react";
import { Container } from "../container";
interface Props {
className?: string;
@ -15,8 +15,8 @@ export const AboutPlace: FC<Props> = ({ className }) => {
)}
>
<Container>
<h3 className="h2 w-[312px] mb-6">Место проведения</h3>
<p className="text-lg max-w-[490px] text-on_surface_v normal">
<h3 className="h2 mb-6">Место проведения</h3>
<p className="text-lg text-on_surface_v normal">
Торгово-промышленная палата Туркменистана создана в целях содействия
развитию экономики Туркменистана, ее интегрированию в мировую
хозяйственную систему, формированию современной промышленной,
@ -25,12 +25,6 @@ export const AboutPlace: FC<Props> = ({ className }) => {
установлении торгово-экономических, научных и технических связей с
зарубежными партнерами.
</p>
{/* <img
src="/map.png"
alt="map"
className="absolute top-0 right-0 w-[900px] h-full object-cover"
/> */}
</Container>
</section>
);

View File

@ -1,8 +1,8 @@
import { cn } from "@/lib/utils";
import { FC } from "react";
import { Container } from "../container";
import { times } from "../home/home-time";
import { TimeCard } from "../time-card";
import { Container } from "@/components/layout";
import { TimeCard } from "../";
interface Props {
className?: string;

View File

@ -2,7 +2,6 @@ import useEmblaCarousel from "embla-carousel-react";
import { FC } from "react";
import { Link } from "react-router-dom";
import { Button } from "@/components/ui/button";
import { useMediaQuery } from "usehooks-ts";
import { Container } from "@/components/layout";
export const btns = [
@ -12,29 +11,29 @@ export const btns = [
},
{
title: "Забронировать стенд",
link: "/stend-form",
link: "",
},
{
title: "B2B | B2G встречи",
link: "/B2B-B2G",
link: "",
},
{
title: "Стать спонсором",
link: "/become-sponsor",
link: "",
},
];
export const HomeHero: FC = () => {
const [embalRef] = useEmblaCarousel();
const lg = useMediaQuery("(min-width: 1024px)");
const md = useMediaQuery("(min-width: 768px)");
// const lg = useMediaQuery("(min-width: 1024px)");
// const md = useMediaQuery("(min-width: 768px)");
function getBanner() {
if (lg) return "/banners/ru/l.jpg";
else if (md) return "/banners/ru/m.jpg";
else return "/banners/ru/s.jpg";
}
// function getBanner() {
// if (lg) return "/banners/ru/l.jpg";
// else if (md) return "/banners/ru/m.jpg";
// else return "/banners/ru/s.jpg";
// }
return (
<section className="flex flex-col gap-5">
@ -42,7 +41,7 @@ export const HomeHero: FC = () => {
<div className="embla__container">
<div className="embla__slide">
<img
src={getBanner()}
src={"/hero-banner.png"}
alt=""
className="size-full object-cover lg:max-h-[600px] lg:min-h-[320px]"
/>
@ -55,8 +54,8 @@ export const HomeHero: FC = () => {
<Link key={title} to={link} className="w-full">
<Button
size={"lg"}
variant={"secondary"}
className="w-full drop-shadow-sm shadow-md bg-[#FFAE2A] text-on_teritary hover:bg-[#FFAE2A]/90"
variant={"teritary"}
className="w-full drop-shadow-sm shadow-md bg-teritary text-on_teritary hover:bg-teritary/90"
>
{title}
</Button>

View File

@ -1,9 +1,9 @@
import { Button } from "@/components/ui/button";
import { cn } from "@/lib/utils";
import { FC, useCallback, useEffect, useState } from "react";
import { Container, EmblaDots } from "../";
import useEmblaCarousel from "embla-carousel-react";
import { ArrowLeft, ArrowRight } from "lucide-react";
import { Container } from "@/components/layout";
interface Props {
className?: string;
@ -76,7 +76,7 @@ export const HomePartners: FC<Props> = ({ className }) => {
</div>
</div>
<EmblaDots scrollTo={scrollTo} slides={4} active={selectedIndex} />
{/* <EmblaDots scrollTo={scrollTo} slides={4} active={selectedIndex} /> */}
</Container>
</section>
);

View File

@ -1,6 +1,6 @@
import { FC } from "react";
import { Container } from "..";
import { ThemeCard } from "../theme-card";
import { Container } from "@/components/layout";
export const themes = [
{

View File

@ -3,7 +3,7 @@ import { FC } from "react";
import { Button } from "@/components/ui/button";
import { Link } from "react-router-dom";
import { Container } from "@/components/layout";
import { TimeCard } from "../";
import { ContactCard, TimeCard } from "../";
interface Props {
className?: string;
@ -61,7 +61,7 @@ export const HomeTime: FC<Props> = ({ className }) => {
))}
</div>
<Link to="/stend-form" className="md:w-fit w-full mx-auto">
<Link to="" className="md:w-fit w-full mx-auto">
<Button className="w-full">Забронируйте стенд </Button>
</Link>
</div>

View File

@ -18,7 +18,7 @@ export const OfferCard: FC<Props> = ({ className, title, text, img }) => {
className
)}
>
<div className="absolute size-full z-10 top-0 left-0 bg-gradient-to-r from-25% from-[#2C57A7] to-[#2C57A7]/20 " />
<div className="absolute size-full z-10 top-0 left-0 bg-gradient-to-r from-25% from-primary to-primary/20 " />
<img
src={img}
className="absolute size-full top-0 right-0 object-cover"

View File

@ -16,7 +16,7 @@ export const TimeCard: FC<Props> = ({
}) => {
return (
<div className={cn("rounded-t-[4px] overflow-hidden", className)}>
<div className="bg-teritary_07 flex items-center text-teritary_11 h-11 px-4">
<div className="bg-primary text-white flex items-center h-11 px-4">
{name}
</div>

View File

@ -1,29 +1,28 @@
import * as React from "react"
import { Slot } from "@radix-ui/react-slot"
import { cva, type VariantProps } from "class-variance-authority"
import * as React from "react";
import { Slot } from "@radix-ui/react-slot";
import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/lib/utils"
import { cn } from "@/lib/utils";
const buttonVariants = cva(
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-[18px] leading-[140%] font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
{
variants: {
variant: {
default:
"bg-primary text-primary-foreground shadow hover:bg-primary/90",
default: "bg-primary text-on_primary shadow hover:bg-primary/90",
teritary: "bg-teritary hover:bg-teritary/90 text-on_surface",
destructive:
"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
outline:
"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
outline: "border border-outline text-on_surface",
secondary:
"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
"bg-secondary_container hover:bg-secondary_container/80 text-on_secondary_container",
ghost: "hover:bg-accent hover:text-accent-foreground",
link: "text-primary underline-offset-4 hover:underline",
link: "text-white h-8",
},
size: {
default: "h-9 px-4 py-2",
sm: "h-8 rounded-md px-3 text-xs",
lg: "h-10 rounded-md px-8",
default: "h-12 px-5 py-2 rounded-[2px]",
sm: "h-10 text-base px-4 rounded-[2px]",
lg: "lg:h-[88px] h-12 rounded-[2px] px-8 ",
icon: "h-9 w-9",
},
},
@ -32,26 +31,26 @@ const buttonVariants = cva(
size: "default",
},
}
)
);
export interface ButtonProps
extends React.ButtonHTMLAttributes<HTMLButtonElement>,
VariantProps<typeof buttonVariants> {
asChild?: boolean
asChild?: boolean;
}
const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
({ className, variant, size, asChild = false, ...props }, ref) => {
const Comp = asChild ? Slot : "button"
const Comp = asChild ? Slot : "button";
return (
<Comp
className={cn(buttonVariants({ variant, size, className }))}
ref={ref}
{...props}
/>
)
);
}
)
Button.displayName = "Button"
);
Button.displayName = "Button";
export { Button, buttonVariants }
export { Button, buttonVariants };

View File

@ -30,108 +30,46 @@
font-family: "Gilroy-Medium";
@apply bg-background;
}
:root {
--background: 0 0% 100%;
--foreground: 0 0% 3.9%;
--card: 0 0% 100%;
--card-foreground: 0 0% 3.9%;
--popover: 0 0% 100%;
--popover-foreground: 0 0% 3.9%;
--primary: 0 0% 9%;
--primary-foreground: 0 0% 98%;
--secondary: 0 0% 96.1%;
--secondary-foreground: 0 0% 9%;
--muted: 0 0% 96.1%;
--muted-foreground: 0 0% 45.1%;
--accent: 0 0% 96.1%;
--accent-foreground: 0 0% 9%;
--destructive: 0 84.2% 60.2%;
--destructive-foreground: 0 0% 98%;
--border: 0 0% 89.8%;
--input: 0 0% 89.8%;
--ring: 0 0% 3.9%;
--chart-1: 12 76% 61%;
--chart-2: 173 58% 39%;
--chart-3: 197 37% 24%;
--chart-4: 43 74% 66%;
--chart-5: 27 87% 67%;
--radius: 0.5rem;
}
.dark {
--background: 0 0% 3.9%;
--foreground: 0 0% 98%;
--card: 0 0% 3.9%;
--card-foreground: 0 0% 98%;
--popover: 0 0% 3.9%;
--popover-foreground: 0 0% 98%;
--primary: 0 0% 98%;
--primary-foreground: 0 0% 9%;
--secondary: 0 0% 14.9%;
--secondary-foreground: 0 0% 98%;
--muted: 0 0% 14.9%;
--muted-foreground: 0 0% 63.9%;
--accent: 0 0% 14.9%;
--accent-foreground: 0 0% 98%;
--destructive: 0 62.8% 30.6%;
--destructive-foreground: 0 0% 98%;
--border: 0 0% 14.9%;
--input: 0 0% 14.9%;
--ring: 0 0% 83.1%;
--chart-1: 220 70% 50%;
--chart-2: 160 60% 45%;
--chart-3: 30 80% 55%;
--chart-4: 280 65% 60%;
--chart-5: 340 75% 55%;
}
}
@layer utilities {
.normal {
@apply font-["Gilroy-Regular"] font-normal;
}
.semibold {
@apply font-["Gilroy-Semibold"] font-semibold;
}
.h1 {
@apply text-[28px] leading-[130%] font-medium;
}
.h2 {
@apply md:text-3xl text-2xl text-[#171717];
}
.p {
@apply text-base leading-[130%];
}
.text-18 {
@apply text-lg normal text-on_surface_v;
}
.dot {
@apply w-5 h-1 cursor-pointer bg-on_surface_v rounded-[2px];
}
.dot-active {
@apply w-5 h-1 bg-on_surface rounded-[2px];
}
.nav-btn {
@apply bg-[#D9D9D9] size-12 rounded-full flex items-center justify-center;
}
.progress-circle {
@apply size-14 rounded-full text-2xl z-10 text-[#5F6674];
}
}
@layer base {
* {
@apply border-border;
}
body {
@apply bg-background text-foreground;
@layer utilities {
.normal {
@apply font-["Gilroy-Regular"] font-normal;
}
.semibold {
@apply font-["Gilroy-Semibold"] font-semibold;
}
.h1 {
@apply text-[28px] leading-[130%] font-medium;
}
.h2 {
@apply md:text-3xl text-2xl text-[#171717];
}
.p {
@apply md:text-lg text-base text-on_surface_v;
}
.text-18 {
@apply text-lg normal text-on_surface_v;
}
.dot {
@apply w-5 h-1 cursor-pointer bg-on_surface_v rounded-[2px];
}
.dot-active {
@apply w-5 h-1 bg-on_surface rounded-[2px];
}
.nav-btn {
@apply bg-[#D9D9D9] size-12 rounded-full flex items-center justify-center;
}
.progress-circle {
@apply size-14 rounded-full text-2xl z-10 text-[#5F6674];
}
}
}

View File

@ -1,6 +1,6 @@
import { clsx, type ClassValue } from "clsx"
import { twMerge } from "tailwind-merge"
import { clsx, type ClassValue } from "clsx";
import { twMerge } from "tailwind-merge";
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs))
return twMerge(clsx(inputs));
}

View File

@ -1,10 +1,5 @@
import { Container, Cover } from "@/components/layout";
import {
AboutBron,
AboutPlace,
AboutThemes,
AboutTime,
} from "@/components/shared";
import { AboutBron, AboutPlace, AboutTime } from "@/components/shared";
import { useScrollTop } from "@/hooks/use-scroll-top";
import { cn } from "@/lib/utils";
import { FC } from "react";
@ -22,41 +17,86 @@ export const About: FC<Props> = ({ className }) => {
<Container className="flex flex-col md:my-20 my-10 gap-16">
<div className="flex flex-col gap-6">
<h3 className="h2">
Международная выставка-ярмарка «Торговля и услуги»
</h3>
<p className="text-18">
Международная выставка-ярмарка «Торговля и услуги» в Ашхабаде: новые
возможности для бизнеса С 29 апреля по 1 мая 2025 года столица
Туркменистана, Ашхабад, станет центром международного делового
сообщества благодаря крупнейшей выставке-ярмарке «Торговля и
услуги». Организованная Торгово-промышленной палатой Туркменистана и
компанией Turkmen Expo, эта выставка направлена на укрепление
глобальных торговых связей, привлечение инвестиций и демонстрацию
экономического потенциала страны.
<h3 className="h2">Выставка-ярмарка «TurkmenTextile Expo 2025» </h3>
<p className="p">
Глобальная выставка и ярмарка текстиля и моды, которая объединит
мировых лидеров отрасли, инновационных производителей и творческих
дизайнеров. Наша миссия укрепить позиции Туркменистана как
ключевого центра текстильной и модной индустрии. Выставка станет
платформой для изучения устойчивых практик, современных технологий и
новых дизайнерских решений, вдохновляя на развитие индустрии.{" "}
</p>
</div>
<div className="flex flex-col gap-6">
<h3 className="h2">Цели выставки</h3>
<h3 className="h2">Перспективы</h3>
<ul className="list-disc pl-8 flex flex-col gap-3 text-lg text-on_surface_v normal">
<h4 className="p">
TurkmenTextile Expo-2025 открывает широкие перспективы для
участников:
</h4>
<ol type="1" className="list-decimal pl-8 flex flex-col gap-3 p">
<li>
Поддержка малых и средних предприятий, их интеграция в
международную экономику.
Расширение деловых связей уникальная возможность для B2B и
B2G-встреч, заключения торговых соглашений и установления
стратегических партнёрств.
</li>
<li>Продвижение экспортного потенциала Туркменистана.</li>
<li>Укрепление деловых связей через B2B- и B2G-встречи.</li>
<li>Привлечение инвестиций в ключевые секторы экономики.</li>
</ul>
<li>
Доступ к инновациям знакомство с передовыми технологиями
текстильного производства, экологичными материалами и трендами
устойчивого дизайна.
</li>
<li>
Повышение экспортного потенциала участие в форумах и семинарах,
посвящённых продвижению продукции на новые рынки.
</li>
<li>
Обучение и развитие мастер-классы и лекции от ведущих мировых
экспертов помогут участникам углубить знания и освоить современные
подходы в области текстильной индустрии.
</li>
<li>
Культурный обмен возможность продемонстрировать богатое
текстильное наследие Туркменистана и вдохновиться культурными
традициями других стран.
</li>
</ol>
</div>
<div className="flex flex-col gap-6">
<h3 className="h2">Ключевые особенности мероприятия</h3>
<ul className="list-disc pl-8 flex flex-col gap-3 text-lg text-on_surface_v normal">
<li>Специализированные выставочные зоны </li>
<li>Форумы по качеству продукции</li>
<li>Воркшопы и бизнес-миссии</li>
<h3 className="h2">Направления</h3>
<h4 className="p">
Выставка охватывает ключевые аспекты текстильной и модной индустрии,
включая:
</h4>
<ul className="list-disc pl-8 flex flex-col gap-3 p">
<li>
Традиционный текстиль: экспозиции, шёлковым изделиям и ремесленным
техникам Туркменистана.
</li>
<li>
Инновационные материалы и технологии: зоны, где демонстрируются
устойчивые материалы, 3D-ткацкие технологии и экологически чистые
красители.
</li>
<li>
Модные показы: ежедневные подиумные шоу с участием местных и
международных дизайнеров, включая зарубежных модельеров.
</li>
<li>
Маркетплейс для переговоров: пространство для встреч между
экспортёрами и импортёрами.
</li>
<li>
Оборудование для текстильной промышленности: современные
технологии и машины для повышения эффективности и
конкурентоспособности.
</li>
<li>
Образовательные зоны: интерактивные экспозиции и семинары на тему
устойчивости, дизайна и переработки.
</li>
</ul>
<p className="text-18">
@ -64,9 +104,33 @@ export const About: FC<Props> = ({ className }) => {
эффективные стратегии для устойчивого бизнеса.
</p>
</div>
<div className="flex flex-col gap-6">
<h3 className="h2">Партнёрство и спонсорство</h3>
<h4 className="p">
TurkmenTextile Expo-2025 приглашает к сотрудничеству международные
организации, ассоциации и бренды для продвижения своих продуктов и
услуг. Партнёры получат:
</h4>
<ul className="list-disc pl-8 flex flex-col gap-3 p">
<li>
Признание на международной арене участие в масштабном событии,
привлекающем ведущих игроков текстильной и модной индустрий.
</li>
<li>
Рекламные возможности интеграция бренда в маркетинговую кампанию
выставки, включая digital и офлайн-каналы.
</li>
<li>
Вклад в развитие индустрии поддержка инноваций, устойчивых
практик и культурного наследия.
</li>
</ul>
</div>
</Container>
<AboutThemes />
{/* <AboutThemes /> */}
<AboutTime />
<AboutPlace />
<AboutBron />

View File

@ -10,20 +10,24 @@ export default {
sm: "calc(var(--radius) - 4px)",
},
colors: {
primary: "#2C57A7",
primary: "#99101D",
reverse_primary: "#F6B2B8",
primary_03: "#F6B2B8",
primary_04: "#9AB4E4",
on_primary: "#ffffff",
primary_container: "#BBCDED",
on_primary_container: "#112343",
primary_outline_reverse: "#789BDB",
surface_container: "#F0EFEF",
secondary: "#495F89",
on_secondary: "#ffffff",
secondary_container: "#C7D0E1",
secondary_container: "#DDCBCD",
on_secondary_container: "#1D2637",
teritary: "#FFAE2A",
on_teritary: "#2A1A00",
teritary: "#F1700D",
on_teritary: "#ffffff",
teritary_container: "#FFDDBA",
on_teritary_container: "#2B1700",
teritary_04: "#FFCE7F",
@ -33,8 +37,8 @@ export default {
teritary_surface_container: "#FFF3E0",
surface_high: "#E8E7EF",
on_surface: "#26292E",
on_surface_v: "#5F6674",
on_surface: "#2C2828",
on_surface_v: "#6F6466",
outline: "#A1A7B2",
outline_v: "#D0D3D8",

View File

@ -1,7 +1,12 @@
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react-swc'
import path from "path";
import react from "@vitejs/plugin-react-swc";
import { defineConfig } from "vite";
// https://vite.dev/config/
export default defineConfig({
plugins: [react()],
})
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
},
});