This commit is contained in:
Shohrat 2023-01-25 03:48:23 +00:00
parent d85fd93978
commit 8df632594b
71 changed files with 4407 additions and 1624 deletions

View File

@ -58,8 +58,8 @@ return [
'host' => 'localhost',
'port' => 3306,
'database' => 'tehnika',
'username' => 'root',
'password' => 'bt110226',
'username' => 'tehnika',
'password' => 'tehnika123**456',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',

View File

@ -0,0 +1,3 @@
<svg width="39" height="39" viewBox="0 0 39 39" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22.4347 19.4982L31.3843 10.5681C31.7763 10.1761 31.9964 9.64447 31.9964 9.09014C31.9964 8.5358 31.7763 8.00416 31.3843 7.61219C30.9924 7.22021 30.4609 7 29.9066 7C29.3524 7 28.8208 7.22021 28.4289 7.61219L19.5 16.5631L10.5711 7.61219C10.1792 7.22021 9.64765 7 9.09339 7C8.53913 7 8.00757 7.22021 7.61565 7.61219C7.22373 8.00416 7.00355 8.5358 7.00355 9.09014C7.00355 9.64447 7.22373 10.1761 7.61565 10.5681L16.5653 19.4982L7.61565 28.4284C7.42057 28.6219 7.26573 28.8521 7.16007 29.1058C7.0544 29.3594 7 29.6315 7 29.9063C7 30.1811 7.0544 30.4532 7.16007 30.7069C7.26573 30.9605 7.42057 31.1907 7.61565 31.3843C7.80914 31.5794 8.03933 31.7342 8.29296 31.8399C8.54659 31.9456 8.81863 32 9.09339 32C9.36815 32 9.64019 31.9456 9.89382 31.8399C10.1474 31.7342 10.3776 31.5794 10.5711 31.3843L19.5 22.4333L28.4289 31.3843C28.6224 31.5794 28.8526 31.7342 29.1062 31.8399C29.3598 31.9456 29.6319 32 29.9066 32C30.1814 32 30.4534 31.9456 30.707 31.8399C30.9607 31.7342 31.1909 31.5794 31.3843 31.3843C31.5794 31.1907 31.7343 30.9605 31.8399 30.7069C31.9456 30.4532 32 30.1811 32 29.9063C32 29.6315 31.9456 29.3594 31.8399 29.1058C31.7343 28.8521 31.5794 28.6219 31.3843 28.4284L22.4347 19.4982Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,91 @@
<svg width="161" height="42" viewBox="0 0 161 42" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M56.1 13.1V14.3C56.1 14.5 55.9999 14.6 55.7999 14.6H53.6V26.8C53.6 27 53.4999 27.1 53.2999 27.1H52C51.8 27.1 51.7 27 51.7 26.8V14.6H49.5C49.3 14.6 49.2 14.5 49.2 14.3V13.1C49.2 12.9 49.3 12.8 49.5 12.8H55.7C56 12.9 56.1 13 56.1 13.1Z" fill="white"/>
<path d="M56.6003 23.4999V16.4999C56.6003 14.3999 58.0003 12.8999 60.1003 12.8999H62.1003C62.3003 12.8999 62.4003 12.9999 62.4003 13.1999V14.3999C62.4003 14.5999 62.3003 14.6999 62.1003 14.6999H60.1003C59.0003 14.6999 58.3003 15.4999 58.3003 16.6999V19.2999H61.5003C61.7003 19.2999 61.8003 19.3999 61.8003 19.5999V20.6999C61.8003 20.8999 61.7003 20.9999 61.5003 20.9999H58.3003V23.6999C58.3003 24.8999 59.0003 25.6999 60.1003 25.6999H62.1003C62.3003 25.6999 62.4003 25.7999 62.4003 25.9999V27.1999C62.4003 27.3999 62.3003 27.4999 62.1003 27.4999H60.0003C58.0003 27.0999 56.6003 25.5999 56.6003 23.4999Z" fill="white"/>
<path d="M69.1999 12.9H70.4999C70.6999 12.9 70.7999 13 70.7999 13.2V26.8C70.7999 27 70.6999 27.1 70.4999 27.1H69.1999C68.9999 27.1 68.8999 27 68.8999 26.8V20.7H65.7999V26.8C65.7999 27 65.6999 27.1 65.4999 27.1H64.1999C63.9999 27.1 63.8999 27 63.8999 26.8V13.1C63.8999 12.9 63.9999 12.8 64.1999 12.8H65.4999C65.6999 12.8 65.7999 12.9 65.7999 13.1V19H68.8999V13.1C68.8999 13 68.9999 12.9 69.1999 12.9Z" fill="white"/>
<path d="M72.8999 26.7V16.4C72.8999 14.2 74.2999 12.7 76.3999 12.7C78.4999 12.7 79.8999 14.2 79.8999 16.4V26.8C79.8999 27 79.7999 27.1 79.5999 27.1H78.2999C78.0999 27.1 77.9999 27 77.9999 26.8V16.3C77.9999 15.1 77.3999 14.4 76.3999 14.4C75.3999 14.4 74.7999 15.2 74.7999 16.3V26.8C74.7999 27 74.6999 27.1 74.4999 27.1H73.0999C72.9999 27 72.8999 26.9 72.8999 26.7Z" fill="white"/>
<path d="M82.1999 12.8999H83.4999C83.6999 12.8999 83.7999 12.9999 83.7999 13.1999V26.7999C83.7999 26.9999 83.6999 27.0999 83.4999 27.0999H82.1999C81.9999 27.0999 81.8999 26.9999 81.8999 26.7999V13.0999C81.8999 12.9999 81.9999 12.8999 82.1999 12.8999Z" fill="white"/>
<path d="M86 26.7V13.1C86 12.9 86.1 12.8 86.3 12.8H87.6C87.8 12.8 87.9 12.9 87.9 13.1V19H89.5L91.2 13C91.2 12.9 91.4 12.8 91.5 12.8H92.8C93 12.8 93.1 12.9 93 13.1L91.1 19.5C92.3 20 92.9 21.2 92.9 22.8V26.8C92.9 27 92.8 27.1 92.6 27.1H91.3C91.1 27.1 91 27 91 26.8V22.8C91 21.6 90.4 20.8 89.3 20.8H87.8V26.8C87.8 27 87.7 27.1 87.5 27.1H86.2C86.1 27 86 26.9 86 26.7Z" fill="white"/>
<path d="M94.6003 26.7V16.4C94.6003 14.2 96.0003 12.7 98.1003 12.7C100.2 12.7 101.6 14.2 101.6 16.4V26.8C101.6 27 101.5 27.1 101.3 27.1H100C99.8003 27.1 99.7003 27 99.7003 26.8V22.3H96.4003V26.8C96.4003 27 96.3003 27.1 96.1003 27.1H94.8003C94.7003 27 94.6003 26.9 94.6003 26.7ZM99.7003 20.6V16.3C99.7003 15.1 99.1003 14.4 98.1003 14.4C97.1003 14.4 96.5003 15.1 96.5003 16.3V20.6H99.7003Z" fill="white"/>
<path d="M108.1 26.6V13.3C108.1 13 108.3 12.8 108.6 12.8H111.3C113.3 12.8 114.6 14.3 114.6 16.2V23.6C114.6 25.5 113.3 27.1 111.3 27.1H108.6C108.3 27.1 108.1 26.9 108.1 26.6ZM111.3 26.2C112.7 26.2 113.6 25.1 113.6 23.6V16.2C113.6 14.8 112.7 13.7 111.3 13.7H109.1V26.2H111.3Z" fill="white"/>
<path d="M117.6 12.9C117.7 12.9 117.8 13 117.8 13.1V23.7C117.8 25.3 118.7 26.4 120.1 26.4C121.5 26.4 122.4 25.3 122.4 23.7V13C122.4 12.9 122.5 12.8 122.6 12.8H123.2C123.3 12.8 123.4 12.9 123.4 13V23.6C123.4 25.7 122.1 27.2 120.1 27.2C118.1 27.2 116.8 25.7 116.8 23.6V13C116.8 12.9 116.9 12.8 117 12.8H117.6V12.9Z" fill="white"/>
<path d="M125.7 26.9V16.3C125.7 14.2 127 12.7 129 12.7C131 12.7 132.3 14.2 132.3 16.3V26.9C132.3 27 132.2 27.1 132.1 27.1H131.5C131.4 27.1 131.3 27 131.3 26.9V16.3C131.3 14.7 130.4 13.6 129 13.6C127.6 13.6 126.7 14.7 126.7 16.3V26.9C126.7 27 126.6 27.1 126.5 27.1H125.9C125.8 27 125.7 27 125.7 26.9Z" fill="white"/>
<path d="M137.1 26.9V22.4C135.5 22.2 134.3 20.8 134.3 19V13C134.3 12.9 134.4 12.8 134.5 12.8H135.1C135.2 12.8 135.3 12.9 135.3 13V19C135.3 20.5 136.3 21.6 137.6 21.6C138.9 21.6 139.9 20.5 139.9 19V13C139.9 12.9 140 12.8 140.1 12.8H140.7C140.8 12.8 140.9 12.9 140.9 13V19C140.9 20.8 139.7 22.2 138.1 22.4V26.9C138.1 27 138 27.1 137.9 27.1H137.3C137.2 27 137.1 27 137.1 26.9Z" fill="white"/>
<path d="M142.9 26.9V16.3C142.9 14.1 144.2 12.7 146.2 12.7C148.1 12.7 149.5 14.1 149.5 16.3V26.9C149.5 27 149.4 27.1 149.3 27.1H148.7C148.6 27.1 148.5 27 148.5 26.9V21.8H143.8V26.9C143.8 27 143.7 27.1 143.6 27.1H143.1C143 27 142.9 27 142.9 26.9ZM148.5 20.9V16.3C148.5 14.6 147.6 13.6 146.2 13.6C144.7 13.6 143.9 14.6 143.9 16.3V20.9H148.5Z" fill="white"/>
<path d="M151.4 23.6C151.4 23.5 151.5 23.4 151.6 23.4H152.2C152.3 23.4 152.4 23.5 152.4 23.6C152.5 25.3 153.3 26.4 154.8 26.4C156.3 26.4 157.1 25.5 157.1 24.1C157.1 20.5 151.5 19.9 151.5 15.9C151.5 14 152.8 12.8 154.7 12.8C156.5 12.8 157.8 14.2 157.9 16.4C157.9 16.5 157.8 16.6 157.7 16.6H157.1C157 16.6 156.9 16.5 156.9 16.4C156.8 14.6 156 13.7 154.7 13.7C153.3 13.7 152.5 14.5 152.5 15.9C152.5 19.3 158.1 19.9 158.1 24.1C158.1 26 156.8 27.3 154.8 27.3C152.7 27.2 151.4 25.7 151.4 23.6Z" fill="white"/>
<path d="M160.2 12.8999H160.8C160.9 12.8999 161 12.9999 161 13.0999V26.8999C161 26.9999 160.9 27.0999 160.8 27.0999H160.2C160.1 27.0999 160 26.9999 160 26.8999V12.9999C160.1 12.8999 160.1 12.8999 160.2 12.8999Z" fill="white"/>
<path d="M9.30011 37.4999L9.10011 37.3999C8.90011 37.2999 8.70011 37.2999 8.60011 37.4999C8.50011 37.6999 8.50011 37.8999 8.70011 37.9999L8.90011 38.0999C9.10011 38.1999 9.30011 38.1999 9.40011 37.9999C9.50011 37.8999 9.50011 37.6999 9.30011 37.4999Z" fill="white"/>
<path d="M3.60026 31.4001C3.50026 31.2001 3.30026 31.2001 3.10026 31.3001C2.90026 31.4001 2.90026 31.6001 3.00026 31.8001L3.10026 32.0001C3.10026 32.0001 3.10026 32.0001 3.20026 32.1001C3.30026 32.2001 3.50026 32.2001 3.60026 32.1001C3.80026 32.0001 3.80026 31.8001 3.70026 31.6001L3.60026 31.4001Z" fill="white"/>
<path d="M3.00006 30.3L2.90006 30.1C2.80006 29.9 2.60006 29.9 2.40006 30C2.20006 30.1 2.20006 30.3 2.30006 30.5L2.40006 30.7C2.40006 30.7 2.40006 30.8 2.50006 30.8C2.60006 30.9 2.80006 30.9 2.90006 30.9C3.00006 30.7 3.10006 30.5 3.00006 30.3Z" fill="white"/>
<path d="M0.700001 21.8999V21.6999C0.700001 21.4999 0.500001 21.3999 0.300001 21.3999C0.100001 21.3999 0 21.5999 0 21.7999V21.9999C0 22.0999 3.7998e-07 22.1999 0.1 22.1999C0.2 22.2999 0.3 22.2999 0.4 22.2999C0.6 22.1999 0.700001 22.0999 0.700001 21.8999Z" fill="white"/>
<path d="M2.29992 29L2.19992 28.8C2.09992 28.6 1.89992 28.5 1.69992 28.6C1.49992 28.7 1.39992 28.9 1.49992 29.1L1.59992 29.3C1.59992 29.3 1.59992 29.4 1.69992 29.4C1.79992 29.5 1.89992 29.5 2.09992 29.5C2.29992 29.3 2.39992 29.1 2.29992 29Z" fill="white"/>
<path d="M1.80002 27.6001L1.70002 27.4001C1.60002 27.2001 1.40002 27.1001 1.30002 27.2001C1.10002 27.3001 1.00002 27.5001 1.10002 27.6001L1.20002 27.8001C1.20002 27.9001 1.20002 27.9001 1.30002 27.9001C1.40002 28.0001 1.50002 28.0001 1.70002 28.0001C1.80002 28.0001 1.90002 27.8001 1.80002 27.6001Z" fill="white"/>
<path d="M1.10039 24.8V24.6C1.10039 24.4 0.900392 24.3 0.700392 24.3C0.500392 24.3 0.400391 24.5001 0.400391 24.7001V24.9C0.400391 25 0.400391 25 0.500391 25.1C0.600391 25.2 0.700392 25.2001 0.800392 25.2001C1.00039 25.1001 1.10039 25 1.10039 24.8Z" fill="white"/>
<path d="M0.79961 23.3V23.1C0.79961 22.9 0.599609 22.8 0.399609 22.8C0.199609 22.8 0.0996094 23.0001 0.0996094 23.2001V23.4C0.0996094 23.5 0.0996098 23.5 0.19961 23.6C0.29961 23.7 0.399609 23.7001 0.499609 23.7001C0.699609 23.7001 0.89961 23.5 0.79961 23.3Z" fill="white"/>
<path d="M1.39997 26.2V26C1.39997 25.8 1.19997 25.7 0.999972 25.7C0.799972 25.7 0.699973 25.9 0.799973 26.1V26.2999C0.799973 26.3999 0.799971 26.4 0.899971 26.5C0.999971 26.6 1.09997 26.6 1.19997 26.6C1.29997 26.6 1.39997 26.4 1.39997 26.2Z" fill="white"/>
<path d="M4.40006 32.5999C4.30006 32.4999 4.10006 32.3999 3.90006 32.4999C3.70006 32.5999 3.70006 32.7999 3.80006 32.9999L3.90006 33.1999C4.00006 33.2999 4.20006 33.2999 4.30006 33.1999C4.50006 33.0999 4.50006 32.8999 4.40006 32.6999V32.5999Z" fill="white"/>
<path d="M13.0996 39.7L12.8996 39.6C12.6996 39.5 12.4996 39.6 12.3996 39.8C12.2996 40 12.3996 40.2 12.5996 40.3L12.7996 40.4C12.9996 40.5 13.1996 40.4 13.2996 40.2C13.3996 40.1 13.2996 39.9 13.1996 39.8C13.1996 39.7 13.0996 39.7 13.0996 39.7Z" fill="white"/>
<path d="M13.1 1.6C12.8 1.7 12.7 1.9 12.8 2.1C12.8 2.1 12.7999 2.2 12.8999 2.2C12.9999 2.3 13.1 2.3 13.3 2.3H13.3999H13.5C13.7 2.2 13.6999 2 13.6999 1.9C13.4999 1.6 13.2 1.5 13.1 1.6Z" fill="white"/>
<path d="M9.10006 3.69994L8.90006 3.79994C8.70006 3.89994 8.70006 4.09994 8.80006 4.29994C8.90006 4.39994 9.10006 4.39994 9.20006 4.29994L9.30006 4.19994C9.50006 4.09994 9.50006 3.89994 9.40006 3.69994C9.50006 3.59994 9.30006 3.49994 9.10006 3.69994Z" fill="white"/>
<path d="M14.4996 40.2L14.2996 40.1C14.0996 40 13.8996 40.1 13.8996 40.3C13.7996 40.5 13.8996 40.7 14.0996 40.7L14.2996 40.8C14.4996 40.9 14.6996 40.8 14.6996 40.6C14.6996 40.5 14.6996 40.3 14.5996 40.2H14.4996Z" fill="white"/>
<path d="M11.8004 2.1001L11.6004 2.2001C11.4004 2.3001 11.4004 2.5001 11.4004 2.7001C11.4004 2.7001 11.4004 2.8001 11.5004 2.8001C11.6004 2.9001 11.8004 2.9001 11.9004 2.9001L12.1004 2.8001C12.3004 2.7001 12.3004 2.5001 12.3004 2.3001C12.1004 2.1001 11.9004 2.1001 11.8004 2.1001Z" fill="white"/>
<path d="M11.8 39.0001L11.6 38.9001C11.4 38.8001 11.2 38.9001 11.1 39.0001C11 39.2001 11.1 39.4001 11.2 39.5001L11.4 39.6001C11.6 39.7001 11.8 39.6001 11.9 39.5001C12 39.4001 12 39.2001 11.8 39.0001C11.8 39.1001 11.8 39.1001 11.8 39.0001Z" fill="white"/>
<path d="M10.5001 38.3L10.3001 38.2C10.1001 38.1 9.90006 38.1 9.80006 38.3C9.70006 38.5 9.70006 38.7 9.90006 38.8L10.1001 38.9C10.3001 39 10.5001 38.9 10.6001 38.8C10.7001 38.7 10.7001 38.5 10.5001 38.3C10.6001 38.4 10.5001 38.3 10.5001 38.3Z" fill="white"/>
<path d="M10.4 2.89991L10.3 2.99991C10.1 2.99991 10 3.29991 10.1 3.39991C10.1 3.39991 10.1 3.39991 10.2 3.49991C10.3 3.59991 10.5 3.59991 10.6 3.59991L10.8 3.49991C11 3.39991 11 3.19991 10.9 2.99991C10.8 2.79991 10.5 2.79991 10.4 2.89991Z" fill="white"/>
<path d="M2.29961 12.0999C2.49961 12.1999 2.69961 12.0999 2.79961 11.8999L2.89961 11.6999C2.99961 11.4999 2.89961 11.2999 2.69961 11.1999C2.49961 11.0999 2.29961 11.1999 2.19961 11.3999L2.09961 11.5999C2.09961 11.7999 2.09961 11.9999 2.29961 12.0999Z" fill="white"/>
<path d="M39.6 13L39.7 13.2C39.8 13.4 40 13.5 40.2 13.4C40.4 13.3 40.5 13.1 40.4 12.9L40.3 12.7C40.3 12.7 40.3 12.6 40.2 12.6C40.1 12.5 40 12.5 39.8 12.5C39.6 12.7 39.5 12.9 39.6 13Z" fill="white"/>
<path d="M40.1996 14.4L40.2996 14.6C40.3996 14.8 40.5996 14.9 40.6996 14.8C40.8996 14.7 40.9996 14.5 40.8996 14.4L40.7996 14.2C40.7996 14.1 40.7996 14.1 40.6996 14.1C40.5996 14 40.4996 14 40.2996 14C40.1996 14 40.0996 14.2 40.1996 14.4Z" fill="white"/>
<path d="M39.0004 11.7001L39.1004 11.9001C39.2004 12.1001 39.4004 12.1001 39.6004 12.0001C39.8004 11.9001 39.8004 11.7001 39.7004 11.5001L39.6004 11.3001C39.6004 11.3001 39.6004 11.2001 39.5004 11.2001C39.4004 11.1001 39.2004 11.1001 39.1004 11.1001C39.0004 11.3001 38.9004 11.5001 39.0004 11.7001Z" fill="white"/>
<path d="M40.6 15.7999V15.9999C40.6 16.1999 40.8 16.2999 41 16.2999C41.2 16.2999 41.3 16.0999 41.2 15.8999V15.6999C41.2 15.5999 41.2 15.5999 41.1 15.4999C41 15.3999 40.9 15.3999 40.8 15.3999C40.6 15.3999 40.5 15.5999 40.6 15.7999Z" fill="white"/>
<path d="M41.0996 18.7001V18.9C41.0996 19.1 41.2996 19.2001 41.4996 19.2001C41.6996 19.2001 41.7996 19 41.7996 18.8V18.6C41.7996 18.5 41.7996 18.5 41.6996 18.4C41.5996 18.3 41.4996 18.3 41.3996 18.3C41.1996 18.3 41.0996 18.5001 41.0996 18.7001Z" fill="white"/>
<path d="M40.9004 17.2001V17.4C40.9004 17.6 41.1004 17.7001 41.3004 17.7001C41.5004 17.7001 41.6004 17.5 41.6004 17.3V17.1C41.6004 17 41.6004 17 41.5004 16.9C41.4004 16.8 41.3004 16.8 41.2004 16.8C41.0004 16.9 40.9004 17.0001 40.9004 17.2001Z" fill="white"/>
<path d="M41.3 20.1V20.2999C41.3 20.4999 41.5 20.6 41.7 20.6C41.9 20.6 42 20.4 42 20.2V20C42 19.9 42 19.7999 41.9 19.7999C41.8 19.6999 41.7 19.7 41.6 19.7C41.4 19.8 41.2 19.9 41.3 20.1Z" fill="white"/>
<path d="M38.4001 10.6C38.5001 10.8 38.7001 10.8 38.9001 10.7C39.1001 10.6 39.1001 10.4 39.0001 10.2L38.9001 9.99995C38.9001 9.99995 38.9001 9.99995 38.8001 9.89995C38.7001 9.79995 38.5001 9.79995 38.4001 9.89995C38.2001 9.99995 38.2001 10.2 38.3001 10.4L38.4001 10.6Z" fill="white"/>
<path d="M2.99967 10.7999C3.19967 10.8999 3.39967 10.7999 3.49967 10.6999L3.59967 10.4999C3.69967 10.2999 3.59967 10.0999 3.49967 9.99992C3.29967 9.89992 3.09967 9.99992 2.99967 10.0999L2.89967 10.2999C2.79967 10.4999 2.79967 10.6999 2.99967 10.7999Z" fill="white"/>
<path d="M0.89995 16.2999C1.09995 16.2999 1.29995 16.1999 1.29995 15.9999V15.7999C1.29995 15.5999 1.19995 15.3999 1.09995 15.3999C0.899951 15.3999 0.699951 15.4999 0.699951 15.5999V15.7999C0.699951 15.8999 0.699952 15.9999 0.799952 16.0999C0.699952 16.2999 0.79995 16.2999 0.89995 16.2999Z" fill="white"/>
<path d="M0.600048 17.7999C0.800048 17.7999 1.00005 17.6999 1.00005 17.4999V17.2999C1.00005 17.0999 0.900048 16.8999 0.700048 16.8999C0.500048 16.8999 0.300049 16.9999 0.300049 17.1999V17.3999C0.300049 17.4999 0.300047 17.5999 0.400047 17.6999C0.400047 17.7999 0.500048 17.7999 0.600048 17.7999Z" fill="white"/>
<path d="M0.399609 19.2999C0.599609 19.2999 0.79961 19.1999 0.79961 18.9999V18.7999C0.79961 18.5999 0.699609 18.3999 0.499609 18.3999C0.299609 18.3999 0.0996094 18.4999 0.0996094 18.6999V18.8999C0.0996094 18.9999 0.0996098 19.0999 0.19961 19.1999C0.29961 19.1999 0.299609 19.2999 0.399609 19.2999Z" fill="white"/>
<path d="M1.2 14.9C1.4 15 1.6 14.9 1.6 14.7L1.7 14.5C1.8 14.3 1.7 14.1 1.5 14.1C1.3 14 1.1 14.1 1.1 14.3L1 14.5C1 14.6 1 14.8 1.1 14.9H1.2Z" fill="white"/>
<path d="M3.80045 9.59991C4.00045 9.69991 4.20045 9.69991 4.30045 9.49991L4.40045 9.39991C4.50045 9.19991 4.50045 8.99991 4.30045 8.89991C4.10045 8.79991 3.90045 8.79991 3.80045 8.99991L3.70045 9.19991C3.60045 9.19991 3.60045 9.39991 3.80045 9.59991C3.70045 9.49991 3.80045 9.59991 3.80045 9.59991Z" fill="white"/>
<path d="M0.300001 20.7999C0.500001 20.7999 0.700001 20.6999 0.700001 20.4999V20.2999C0.700001 20.0999 0.6 19.8999 0.4 19.8999C0.2 19.8999 0 19.9999 0 20.1999V20.3999C0 20.4999 3.7998e-07 20.5999 0.1 20.6999C0.2 20.6999 0.300001 20.7999 0.300001 20.7999Z" fill="white"/>
<path d="M14.6004 1L14.4004 1.1C14.2004 1.1 14.1004 1.3 14.2004 1.5C14.2004 1.6 14.2004 1.6 14.3004 1.6C14.4004 1.7 14.5004 1.7 14.7004 1.7L14.9004 1.6C15.1004 1.5 15.2004 1.3 15.1004 1.2C14.9004 1.1 14.7004 1 14.6004 1Z" fill="white"/>
<path d="M1.70041 13.5C1.90041 13.6 2.10041 13.5 2.20041 13.3L2.30041 13.1C2.40041 12.9 2.30041 12.7 2.10041 12.6C1.90041 12.5 1.70041 12.6 1.60041 12.8L1.50041 13C1.40041 13.1 1.50041 13.3 1.60041 13.4C1.60041 13.5 1.70041 13.5 1.70041 13.5Z" fill="white"/>
<path d="M39.7 29.9001C39.5 29.8001 39.3 29.9001 39.2 30.1001L39.1 30.2001C39 30.4001 39.1 30.6001 39.3 30.7001C39.5 30.8001 39.7 30.7001 39.8 30.5001L39.9 30.3001C39.9 30.2001 39.8 30.0001 39.7 29.9001Z" fill="white"/>
<path d="M32.9997 37.7C32.8997 37.6 32.6997 37.6 32.5997 37.7L32.4997 37.8C32.2997 37.9 32.2997 38.1 32.3997 38.3C32.4997 38.5 32.6997 38.5 32.8997 38.4L33.0997 38.3C33.0997 38.1 33.1997 37.9 32.9997 37.7C33.0997 37.7 32.9997 37.7 32.9997 37.7Z" fill="white"/>
<path d="M29.1 39.7999C29 39.6999 28.9 39.7 28.7 39.7H28.6H28.5C28.3 39.8 28.3 39.9999 28.3 40.0999C28.4 40.2999 28.6 40.2999 28.8 40.2999H28.9C29.1 40.1999 29.2 39.9999 29.1 39.7999C29.2 39.8999 29.2 39.8999 29.1 39.7999Z" fill="white"/>
<path d="M38.1001 9.5001C38.3001 9.4001 38.3001 9.2001 38.2001 9.0001L38.1001 8.8001C38.0001 8.7001 37.8001 8.7001 37.7001 8.8001C37.5001 8.9001 37.5001 9.1001 37.6001 9.3001L37.7001 9.4001C37.7001 9.5001 37.9001 9.6001 38.1001 9.5001Z" fill="white"/>
<path d="M33.1004 3.89991C32.9004 3.79991 32.7004 3.79991 32.6004 3.99991C32.5004 4.09991 32.5004 4.29991 32.6004 4.39991L32.8004 4.49991C33.0004 4.59991 33.2004 4.59991 33.3004 4.39991C33.4004 4.19991 33.4004 3.99991 33.2004 3.89991H33.1004Z" fill="white"/>
<path d="M31.8001 38.4999C31.7001 38.3999 31.5001 38.3999 31.4001 38.3999L31.2001 38.4999C31.0001 38.5999 31.0001 38.7999 31.1001 38.9999C31.2001 39.1999 31.4001 39.1999 31.6001 39.0999L31.7001 38.9999C31.9001 38.9999 31.9001 38.6999 31.8001 38.4999C31.8001 38.5999 31.8001 38.4999 31.8001 38.4999Z" fill="white"/>
<path d="M29.3 1.80012L29.1 1.70012C28.9 1.60012 28.7 1.70012 28.6 1.90012C28.5 2.00012 28.6 2.20012 28.7 2.30012L28.8 2.40012L29 2.50012C29.2 2.60012 29.4 2.50012 29.5 2.30012C29.6 2.10012 29.5 1.90012 29.3 1.80012Z" fill="white"/>
<path d="M30.5 39.2001C30.4 39.1001 30.2 39.1001 30.1 39.1001L29.9 39.2001C29.7 39.3001 29.7 39.5001 29.7 39.7001C29.8 39.9001 30 39.9001 30.2 39.9001L30.4 39.8001C30.6 39.7001 30.6 39.5001 30.5 39.2001C30.5 39.3001 30.5 39.2001 30.5 39.2001Z" fill="white"/>
<path d="M30.7004 2.39997L30.5004 2.29997C30.3004 2.19997 30.1004 2.29997 30.0004 2.39997C29.9004 2.49997 30.0004 2.69997 30.1004 2.79997C30.1004 2.79997 30.2004 2.79997 30.2004 2.89997L30.4004 2.99997C30.6004 3.09997 30.8004 2.99997 30.9004 2.89997C30.9004 2.69997 30.8004 2.49997 30.7004 2.39997Z" fill="white"/>
<path d="M32.0001 3.20002L31.8001 3.10002C31.6001 3.00002 31.4001 3.10002 31.3001 3.20002C31.2001 3.30002 31.2001 3.50002 31.4001 3.60002C31.4001 3.60002 31.4001 3.60001 31.5001 3.70002L31.7001 3.80002C31.9001 3.90002 32.1001 3.90001 32.2001 3.70002C32.2001 3.50002 32.1001 3.30002 32.0001 3.20002Z" fill="white"/>
<path d="M38.2001 32.3999C38.0001 32.2999 37.8001 32.2999 37.7001 32.4999L37.6001 32.5999C37.5001 32.7999 37.5001 32.9999 37.7001 33.0999C37.9001 33.1999 38.1001 33.1999 38.2001 32.9999L38.3001 32.7999C38.4001 32.7999 38.4001 32.5999 38.2001 32.3999C38.2001 32.4999 38.2001 32.3999 38.2001 32.3999Z" fill="white"/>
<path d="M41.1 25.7C40.9 25.7 40.7 25.8 40.7 26V26.2C40.7 26.4 40.8 26.6 40.9 26.6C41.1 26.6 41.3 26.5 41.3 26.4V26.2C41.3 26.1 41.3 26 41.2 25.9C41.2 25.7 41.2 25.7 41.1 25.7Z" fill="white"/>
<path d="M41.4 24.2C41.2 24.2 41 24.3 41 24.5V24.7C41 24.9 41.1 25.1 41.3 25.1C41.5 25.1 41.7 24.9999 41.7 24.7999V24.6C41.7 24.5 41.7 24.3999 41.6 24.2999C41.5 24.1999 41.5 24.2 41.4 24.2Z" fill="white"/>
<path d="M41.6 22.7C41.4 22.7 41.2 22.8 41.2 23V23.2C41.2 23.4 41.3 23.6 41.5 23.6C41.7 23.6 41.9 23.4999 41.9 23.2999V23.1C41.9 23 41.9 22.8999 41.8 22.7999C41.7 22.7999 41.6 22.7 41.6 22.7Z" fill="white"/>
<path d="M40.7004 27.1C40.5004 27 40.3004 27.1 40.3004 27.3L40.2004 27.5C40.1004 27.7 40.2004 27.9 40.4004 27.9C40.6004 28 40.8004 27.9 40.8004 27.7L40.9004 27.5C40.9004 27.4 40.9004 27.2 40.8004 27.1C40.8004 27.1 40.8004 27.1 40.7004 27.1Z" fill="white"/>
<path d="M39.0001 31.2001C38.8001 31.1001 38.6001 31.2001 38.5001 31.3001L38.4001 31.5001C38.3001 31.7001 38.4001 31.9001 38.5001 32.0001C38.7001 32.1001 38.9001 32.0001 39.0001 31.9001L39.1001 31.7001C39.2001 31.5001 39.1001 31.3001 39.0001 31.2001Z" fill="white"/>
<path d="M41.9 21.2999C41.8 21.1999 41.8 21.2 41.7 21.2C41.5 21.2 41.3 21.3 41.3 21.5V21.7C41.3 21.9 41.4 22.1 41.6 22.1C41.8 22.1 42 21.9999 42 21.7999V21.6C42 21.5 41.9 21.3999 41.9 21.2999Z" fill="white"/>
<path d="M40.2 28.4999C40 28.3999 39.8 28.4999 39.7 28.6999L39.6 28.8999C39.5 29.0999 39.6 29.2999 39.8 29.3999C40 29.4999 40.2 29.3999 40.3 29.1999L40.4 28.9999C40.5 28.8999 40.4 28.6999 40.3 28.5999C40.3 28.4999 40.3 28.4999 40.2 28.4999Z" fill="white"/>
<path d="M21.5996 41.3H21.3996C21.1996 41.3 21.0996 41.5001 21.0996 41.7001C21.0996 41.9001 21.2996 42 21.4996 42H21.6996C21.8996 42 21.9996 41.8 21.9996 41.6C21.9996 41.5 21.9996 41.4001 21.8996 41.4001C21.7996 41.3001 21.6996 41.3 21.5996 41.3Z" fill="white"/>
<path d="M20.1996 41.3H19.9996C19.7996 41.3 19.5996 41.4 19.5996 41.6C19.5996 41.8 19.6996 42 19.8996 42H20.0996C20.2996 42 20.4996 41.9001 20.4996 41.7001C20.4996 41.6001 20.4996 41.5001 20.3996 41.4001C20.3996 41.3001 20.2996 41.3 20.1996 41.3Z" fill="white"/>
<path d="M15.8997 40.6H15.6997C15.4997 40.5 15.2997 40.7 15.2997 40.8C15.1997 41 15.3997 41.2 15.4997 41.2H15.6997C15.8997 41.2 16.0997 41.1 16.0997 41C16.0997 40.9 16.0997 40.7 15.9997 40.7L15.8997 40.6Z" fill="white"/>
<path d="M18.6996 41.1001H18.4996C18.2996 41.1001 18.0996 41.2001 18.0996 41.4001C18.0996 41.6001 18.1996 41.8001 18.3996 41.8001H18.5996C18.7996 41.8001 18.9996 41.7001 18.9996 41.5001C18.9996 41.4001 18.9996 41.3001 18.8996 41.2001C18.8996 41.2001 18.7996 41.2001 18.6996 41.1001Z" fill="white"/>
<path d="M20.5 0H20.3C20.1 0 20 0.2 20 0.4C20 0.5 20 0.6 20.1 0.6C20.2 0.7 20.3 0.7 20.4 0.7H20.6C20.8 0.7 20.9 0.5 20.9 0.3C20.8 0.2 20.7 0 20.5 0Z" fill="white"/>
<path d="M19 0.100098H18.8C18.6 0.100098 18.5 0.300098 18.5 0.500098C18.5 0.600098 18.5 0.700098 18.6 0.700098C18.7 0.800098 18.8 0.800098 18.9 0.800098H19.1C19.3 0.800098 19.4 0.600098 19.4 0.400098C19.4 0.200098 19.2 0.100098 19 0.100098Z" fill="white"/>
<path d="M17.5 0.300049H17.3C17.1 0.300049 17 0.500049 17 0.700049C17 0.800049 17 0.800049 17.1 0.900049C17.2 1.00005 17.3 1.00005 17.4 1.00005H17.6C17.8 1.00005 17.9 0.800049 17.9 0.600049C17.9 0.400049 17.7 0.300049 17.5 0.300049Z" fill="white"/>
<path d="M16 0.600098H15.8C15.6 0.600098 15.5 0.800098 15.5 1.0001C15.5 1.1001 15.5 1.1001 15.6 1.2001C15.7 1.3001 15.8 1.3001 15.9 1.3001H16.1C16.3 1.3001 16.4 1.1001 16.4 0.900098C16.4 0.700098 16.2 0.600098 16 0.600098Z" fill="white"/>
<path d="M17.3 40.8999H17.1C16.9 40.8999 16.7 40.9999 16.7 41.1999C16.7 41.3999 16.8 41.5999 17 41.5999H17.2C17.4 41.5999 17.6 41.4999 17.6 41.2999C17.6 41.1999 17.6 41.0999 17.5 40.9999C17.4 40.9999 17.4 40.8999 17.3 40.8999Z" fill="white"/>
<path d="M23.5004 0.199951H23.3004C23.1004 0.199951 22.9004 0.299951 22.9004 0.499951C22.9004 0.599951 22.9004 0.699951 23.0004 0.799951C23.1004 0.899951 23.1004 0.899951 23.2004 0.899951H23.4004C23.6004 0.899951 23.8004 0.799951 23.8004 0.599951C23.8004 0.399951 23.7004 0.199951 23.5004 0.199951Z" fill="white"/>
<path d="M25.0004 0.399902H24.8004C24.6004 0.399902 24.4004 0.499902 24.4004 0.699902C24.4004 0.799902 24.4004 0.899902 24.5004 0.999902C24.5004 0.999902 24.6004 1.0999 24.7004 1.0999H24.9004C25.1004 1.0999 25.3004 0.999902 25.3004 0.799902C25.3004 0.599902 25.2004 0.499902 25.0004 0.399902Z" fill="white"/>
<path d="M26.5004 0.800049H26.3004C26.1004 0.800049 25.9004 0.900049 25.9004 1.00005C25.9004 1.10005 25.9004 1.30005 26.0004 1.30005C26.0004 1.30005 26.1004 1.40005 26.2004 1.40005H26.4004C26.6004 1.50005 26.8004 1.30005 26.8004 1.20005C26.8004 1.00005 26.7004 0.800049 26.5004 0.800049Z" fill="white"/>
<path d="M26.3 40.7999C26.2 40.6999 26.1 40.7 26 40.7H25.8C25.6 40.7 25.5 40.8999 25.5 41.0999C25.5 41.2999 25.7 41.4 25.9 41.4H26.1C26.3 41.4 26.4 41.2 26.4 41C26.4 40.9 26.3 40.7999 26.3 40.7999Z" fill="white"/>
<path d="M27.6996 40.4001C27.5996 40.3001 27.4996 40.3 27.2996 40.3L27.0996 40.4001C26.8996 40.5001 26.7996 40.7 26.8996 40.8C26.9996 41 27.1996 41.1 27.2996 41L27.4996 40.9001C27.6996 40.8001 27.7996 40.6 27.6996 40.5C27.7996 40.4 27.7996 40.4001 27.6996 40.4001Z" fill="white"/>
<path d="M27.9 1.20002L27.7 1.10002C27.5 1.00002 27.3 1.10002 27.3 1.30002C27.3 1.40002 27.3 1.60002 27.4 1.70002L27.5 1.80002L27.7 1.90002C27.9 2.00002 28.1 1.90002 28.1 1.70002C28.2 1.50002 28.1 1.30002 27.9 1.20002Z" fill="white"/>
<path d="M23.0996 41.2H22.8996C22.6996 41.2 22.5996 41.3999 22.5996 41.5999C22.5996 41.7999 22.7996 41.9 22.9996 41.9H23.1996C23.3996 41.9 23.4996 41.7 23.4996 41.5C23.4996 41.4 23.4996 41.2999 23.3996 41.2999C23.2996 41.1999 23.1996 41.2 23.0996 41.2Z" fill="white"/>
<path d="M22.0004 0.100098H21.8004C21.6004 0.100098 21.4004 0.200098 21.4004 0.400098C21.4004 0.500098 21.4004 0.600098 21.5004 0.700098C21.6004 0.800098 21.6004 0.800098 21.7004 0.800098H21.9004C22.1004 0.800098 22.3004 0.700098 22.3004 0.500098C22.3004 0.300098 22.2004 0.100098 22.0004 0.100098Z" fill="white"/>
<path d="M24.5 41H24.3C24.1 41 24 41.2 24 41.4C24 41.6 24.2 41.7 24.4 41.7H24.6C24.8 41.7 24.9 41.5 24.9 41.3C24.9 41.2 24.9 41.2 24.8 41.1C24.8 41 24.7 41 24.5 41Z" fill="white"/>
<path d="M20.9004 4.3999C17.1004 4.3999 13.6004 5.6999 10.8004 7.8999C10.9004 7.9999 11.0004 8.0999 11.2004 8.2999C7.40039 11.1999 4.90039 15.7999 4.90039 20.8999C4.90039 26.8999 8.20039 32.0999 13.2004 34.8999C13.1004 34.9999 13.0004 35.1999 12.9004 35.2999C15.3004 36.5999 18.0004 37.3999 20.9004 37.3999C30.0004 37.3999 37.4004 29.9999 37.4004 20.8999C37.4004 11.7999 29.9004 4.3999 20.9004 4.3999ZM5.20039 20.8999C5.20039 15.7999 7.60039 11.2999 11.4004 8.4999C11.5004 8.5999 11.6004 8.6999 11.8004 8.8999C14.3004 6.9999 17.5004 5.7999 20.9004 5.7999C29.2004 5.7999 36.0004 12.5999 36.0004 20.8999C36.0004 29.1999 29.2004 35.9999 20.9004 35.9999C18.3004 35.9999 15.9004 35.2999 13.7004 34.1999C13.6004 34.2999 13.5004 34.4999 13.4004 34.5999C8.50039 31.8999 5.20039 26.7999 5.20039 20.8999Z" fill="white"/>
<path d="M33.9996 18.8C32.9996 12.4 27.4996 7.5 20.8996 7.5C13.5996 7.5 7.59961 13.5 7.59961 20.8C7.59961 28.1 13.5996 34.1 20.8996 34.1C21.8996 34.1 22.8996 34 23.8996 33.8C29.7996 32.4 34.2996 27.1 34.2996 20.8C34.1996 20.1 34.0996 19.5 33.9996 18.8ZM32.7996 20.9C32.7996 26.7 28.6996 31.5 23.1996 32.6C22.3996 32.8 21.5996 32.8 20.7996 32.8C14.1996 32.8 8.79961 27.4 8.79961 20.8C8.79961 14.2 14.1996 8.8 20.7996 8.8C26.6996 8.8 31.5996 13.1 32.5996 18.6C32.6996 19.4 32.7996 20.1 32.7996 20.9Z" fill="white"/>
<path d="M30.4996 20.9C30.4996 15.6 26.1996 11.2 20.7996 11.2C15.4996 11.2 11.0996 15.5 11.0996 20.9C11.0996 21.2 11.0996 21.5 11.0996 21.8C10.8996 21.8 10.7996 21.8 10.5996 21.8C10.9996 27 15.3996 31.1 20.6996 31.1C23.2996 31.1 25.6996 30.1 27.4996 28.4C27.3996 28.3 27.1996 28.2 27.0996 28.1C29.2996 26.3 30.4996 23.7 30.4996 20.9ZM11.4996 20.9C11.4996 15.8 15.6996 11.6 20.7996 11.6C25.8996 11.6 30.0996 15.8 30.0996 20.9C30.0996 23.7 28.8996 26.1 26.9996 27.9C26.8996 27.8 26.6996 27.7 26.5996 27.6C24.9996 29 22.9996 29.7999 20.7996 29.7999C16.2996 29.7999 12.4996 26.3 11.9996 21.9C11.7996 21.9 11.6996 21.9 11.4996 21.9C11.4996 21.5 11.4996 21.2 11.4996 20.9Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

2
themes/tehnika/assets/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,127 @@
class Select {
selectorValue;
/**
* ID or classname of an element
* @param {string} selectorValue
*/
constructor(selectorValue) {
this.selectorValue = selectorValue;
}
/**
*
* @returns HTMLElement
*/
getElement() {
try {
return document.querySelector(this.selectorValue);
} catch {
throw new Error("Bad selector!");
}
}
}
// Year
class AssignYear {
element;
/**
* @param {string} id
* ID of an element
*/
constructor(id) {
this.element = new Select(id).getElement();
}
/**
* @returns `current year`
*/
assign() {
const year = new Date().getFullYear();
this.element.innerText = year;
return year;
}
}
class AssignEvent {
identifier;
eventType;
actionType;
addedClass = "active";
target = "self";
/**
* ID or class of an HTML element
* @param {string} identifier
* Event type on which action is executed
* @param {string} eventType
* Type of action
* @param {"add" | "remove" | "toggle"} actionType
* Added classname
* @param {string} addedClass
* Target element identifier
* @param {string} target
*
*/
constructor(identifier, eventType, actionType, addedClass, target) {
this.identifier = identifier;
this.eventType = eventType;
this.actionType = actionType;
this.addedClass = addedClass;
this.target = target;
}
listen() {
const element = new Select(this.identifier).getElement();
let target;
if (this.target === "self") {
target = element;
} else {
target = new Select(this.target).getElement();
}
element.addEventListener(this.eventType, () => {
switch (this.actionType) {
case "add":
target.classList.add(this.addedClass);
break;
case "remove":
target.classList.remove(this.addedClass);
break;
case "toggle":
target.classList.toggle(this.addedClass);
break;
default:
throw new Error("Bad action type!");
}
});
return [element, target];
}
}
const displayedYear = new AssignYear("#year").assign();
const dropdownPair = new AssignEvent(
".nav-dropdown-wrapper",
"click",
"toggle",
"active",
".nav-dropdown"
).listen();
const burgerPair = new AssignEvent(
".nav-burger",
"click",
"add",
"active",
".burger-wrapper"
).listen();
const burgerClosePair = new AssignEvent(
".burger-outer",
"click",
"remove",
"active",
".burger-wrapper"
).listen();
const burgerLang = new AssignEvent(
".burger-language",
"click",
"toggle",
"active",
".burger-dropdown"
).listen();

View File

@ -1,10 +1,10 @@
// Swiper
const partnerSwiper = new Swiper(".partnerSwiper", {
slidesPerView: 4,
// spaceBetween: 60,
slidesPerView: 1,
spaceBetween: 0,
autoplay: {
delay: 3000,
disableOnInteraction: true,
disableOnInteraction: false,
},
loop: true,
navigation: {
@ -15,4 +15,149 @@ const partnerSwiper = new Swiper(".partnerSwiper", {
clickable: true,
el: ".swiper-pagination",
},
breakpoints: {
1200: {
slidesPerView: 5,
},
1000: {
slidesPerView: 4,
},
850: {
slidesPerView: 3,
},
700: {
slidesPerView: 2,
},
},
});
// Abstract class
class Select {
selectorValue;
/**
* ID or classname of an element
* @param {string} selectorValue
*/
constructor(selectorValue) {
this.selectorValue = selectorValue;
}
/**
*
* @returns HTMLElement
*/
getElement() {
try {
return document.querySelector(this.selectorValue);
} catch {
throw new Error("Bad selector!");
}
}
}
// Year
class AssignYear {
element;
/**
* @param {string} id
* ID of an element
*/
constructor(id) {
this.element = new Select(id).getElement();
}
/**
* @returns `current year`
*/
assign() {
const year = new Date().getFullYear();
this.element.innerText = year;
return year;
}
}
class AssignEvent {
identifier;
eventType;
actionType;
addedClass = "active";
target = "self";
/**
* ID or class of an HTML element
* @param {string} identifier
* Event type on which action is executed
* @param {string} eventType
* Type of action
* @param {"add" | "remove" | "toggle"} actionType
* Added classname
* @param {string} addedClass
* Target element identifier
* @param {string} target
*
*/
constructor(identifier, eventType, actionType, addedClass, target) {
this.identifier = identifier;
this.eventType = eventType;
this.actionType = actionType;
this.addedClass = addedClass;
this.target = target;
}
listen() {
const element = new Select(this.identifier).getElement();
let target;
if (this.target === "self") {
target = element;
} else {
target = new Select(this.target).getElement();
}
element.addEventListener(this.eventType, () => {
switch (this.actionType) {
case "add":
target.classList.add(this.addedClass);
break;
case "remove":
target.classList.remove(this.addedClass);
break;
case "toggle":
target.classList.toggle(this.addedClass);
break;
default:
throw new Error("Bad action type!");
}
});
return [element, target];
}
}
const displayedYear = new AssignYear("#year").assign();
const dropdownPair = new AssignEvent(
".nav-dropdown-wrapper",
"click",
"toggle",
"active",
".nav-dropdown"
).listen();
const burgerPair = new AssignEvent(
".nav-burger",
"click",
"add",
"active",
".burger-wrapper"
).listen();
const burgerClosePair = new AssignEvent(
".burger-outer",
"click",
"remove",
"active",
".burger-wrapper"
).listen();
const burgerLang = new AssignEvent(
".burger-language",
"click",
"toggle",
"active",
".burger-dropdown"
).listen();

View File

@ -0,0 +1,127 @@
class Select {
selectorValue;
/**
* ID or classname of an element
* @param {string} selectorValue
*/
constructor(selectorValue) {
this.selectorValue = selectorValue;
}
/**
*
* @returns HTMLElement
*/
getElement() {
try {
return document.querySelector(this.selectorValue);
} catch {
throw new Error("Bad selector!");
}
}
}
// Year
class AssignYear {
element;
/**
* @param {string} id
* ID of an element
*/
constructor(id) {
this.element = new Select(id).getElement();
}
/**
* @returns `current year`
*/
assign() {
const year = new Date().getFullYear();
this.element.innerText = year;
return year;
}
}
class AssignEvent {
identifier;
eventType;
actionType;
addedClass = "active";
target = "self";
/**
* ID or class of an HTML element
* @param {string} identifier
* Event type on which action is executed
* @param {string} eventType
* Type of action
* @param {"add" | "remove" | "toggle"} actionType
* Added classname
* @param {string} addedClass
* Target element identifier
* @param {string} target
*
*/
constructor(identifier, eventType, actionType, addedClass, target) {
this.identifier = identifier;
this.eventType = eventType;
this.actionType = actionType;
this.addedClass = addedClass;
this.target = target;
}
listen() {
const element = new Select(this.identifier).getElement();
let target;
if (this.target === "self") {
target = element;
} else {
target = new Select(this.target).getElement();
}
element.addEventListener(this.eventType, () => {
switch (this.actionType) {
case "add":
target.classList.add(this.addedClass);
break;
case "remove":
target.classList.remove(this.addedClass);
break;
case "toggle":
target.classList.toggle(this.addedClass);
break;
default:
throw new Error("Bad action type!");
}
});
return [element, target];
}
}
const displayedYear = new AssignYear("#year").assign();
const dropdownPair = new AssignEvent(
".nav-dropdown-wrapper",
"click",
"toggle",
"active",
".nav-dropdown"
).listen();
const burgerPair = new AssignEvent(
".nav-burger",
"click",
"add",
"active",
".burger-wrapper"
).listen();
const burgerClosePair = new AssignEvent(
".burger-outer",
"click",
"remove",
"active",
".burger-wrapper"
).listen();
const burgerLang = new AssignEvent(
".burger-language",
"click",
"toggle",
"active",
".burger-dropdown"
).listen();

View File

@ -11,3 +11,12 @@
text-align: center;
}
}
// Media
@media screen and (max-width: 600px) {
.footer-inner {
p {
font-size: 1.6rem;
}
}
}

View File

@ -35,7 +35,7 @@ a {
.container {
@include stretch;
max-width: 148rem;
max-width: 128rem;
padding: 0 4rem;
margin: 0 auto;
}
@ -47,3 +47,19 @@ a {
.btn {
@include btn;
}
.main {
min-height: 79.4vh;
}
body {
overflow-x: hidden;
}
// Media
@media screen and (max-width: 1000px) {
.container {
max-width: 123.2rem;
padding: 0 1.6rem;
}
}

View File

@ -20,12 +20,238 @@
span {
padding: 1rem 0;
@include stretch;
font-size: 2.4rem;
font-size: 1.8rem;
font-weight: bold;
color: $base-blue;
cursor: pointer;
}
}
.nav-logo {
@include imgStyle(19.6rem, 4.3rem, contain);
}
.nav-dropdown-wrapper {
position: relative;
}
.nav-dropdown {
position: absolute;
top: 4rem;
left: 50%;
transform: translateX(-50%);
width: fit-content;
opacity: 0;
max-height: 0;
overflow: hidden;
z-index: 4;
box-shadow: 0.1rem 0.1rem 0.3rem rgba(0, 0, 0, 0.2),
-0.1rem -0.1rem 0.3rem rgba(0, 0, 0, 0.2);
@include transition-std;
@include flex(column);
background: $base-white;
a {
padding: 1.2rem;
background: $base-white;
@include transition-std;
&:hover {
background: $hover-white;
@include transition-std;
}
}
&.active {
opacity: 1;
max-height: 10rem;
@include transition-std;
}
}
// Burger
.nav-burger {
cursor: pointer;
position: relative;
display: none;
align-items: center;
justify-content: center;
width: 3.2rem;
height: 3.2rem;
&.active {
.burger-line-2 {
opacity: 0;
@include transition-std;
}
.burger-line {
top: 50%;
}
.burger-line-1 {
transform: rotate(45deg);
}
.burger-line-3 {
transform: rotate(-45deg);
}
}
}
.burger-line {
opacity: 1;
width: 100%;
height: 0.3rem;
border-radius: 2rem;
background: $base-blue;
transform-origin: center;
@include transition-std;
}
.burger-line-1,
.burger-line-3 {
content: "";
position: absolute;
left: 0;
display: block;
width: 100%;
height: 0.3rem;
background: $base-blue;
border-radius: 2rem;
@include transition-std;
transform: rotate(0deg);
}
.burger-line-1 {
top: 0.4rem;
}
.burger-line-3 {
top: calc(100% - 0.5rem);
}
.burger-wrapper {
@include flex;
z-index: 1000;
position: fixed;
top: 0;
right: -120%;
width: 100vw;
height: 100vh;
@include transition-std;
&.active {
@include transition-std;
right: 0;
.burger-outer {
width: 22%;
@include transition-std;
}
}
}
.burger-inner {
@include flex(column);
align-items: center;
justify-content: space-between;
padding: 7rem 3rem;
min-height: 100vh;
width: 78%;
background: $base-blue;
}
.burger-outer {
background: rgba(0, 0, 0, 0.5);
position: relative;
width: 0;
min-height: 100vh;
@include transition-std;
}
.burger-close {
position: absolute;
left: 50%;
top: 1rem;
transform: translateX(-50%);
}
.burger-logo-wrapper {
@include flex;
align-items: center;
justify-content: center;
width: 100%;
}
.burger-logo {
@include imgStyle(16.1rem, 4.2rem, contain);
}
.burger-top {
@include flex(column);
gap: 5.4rem;
}
.burger-links {
@include flex(column);
gap: 3.4rem;
a {
padding: 1rem 0;
display: block;
width: 100%;
text-align: center;
color: $base-white;
font-weight: bold;
font-size: 2rem;
letter-spacing: 0.1em;
}
}
.burger-dropdown {
width: 100%;
background: $dark-blue;
overflow: hidden;
position: absolute;
max-height: 0;
left: 0;
bottom: 100%;
@include transition-std;
button {
order: -1;
padding: 1rem;
color: $base-white;
font-weight: bold;
font-size: 2.5rem;
&.active {
order: 99999;
}
}
&.active {
max-height: 16.2rem;
@include transition-std;
}
}
.burger-language {
background: $dark-blue;
position: relative;
@include transition-std;
span {
display: block;
padding: 1rem;
color: $base-white;
font-weight: bold;
font-size: 2.5rem;
}
}
// Media
@media screen and (max-width: 1000px) {
.nav-links {
display: none;
}
.nav-burger {
@include flex;
}
}

View File

@ -1,9 +1,13 @@
$base-white: #ffffff;
$hover-white: #d0d0d0;
$dark-blue: #244e9c;
$base-blue: #305ba9;
$base-orange: #ff8007;
$base-gray: #c4c4c4;
$light-gray: #f2f2f2;
$base-black: #333333;
$section-fz: 3.2rem;
$section-fz-mobile: 2.4rem;
// Mixins
@ -58,8 +62,11 @@ $base-black: #333333;
gap: 1.6rem;
h4 {
text-transform: uppercase;
font-size: 4rem;
color: $base-blue;
font-size: $section-fz;
@media screen and (max-width: 600px) {
font-size: $section-fz-mobile;
}
}
span {
display: block;
@ -80,3 +87,8 @@ $base-black: #333333;
font-size: 1.6rem;
color: $base-white;
}
// Media
@media screen and (max-width: 600px) {
$section-fz: 2.4rem;
}

View File

@ -19,3 +19,15 @@
}
}
}
// Media
@media screen and (max-width: 600px) {
.about-content {
p {
font-size: 1.8rem;
}
}
.main-inner {
padding: 8rem 0;
}
}

View File

@ -1,6 +1,6 @@
.about-inner {
gap: 3.2rem;
padding: 10rem 0;
padding: 16rem 0 10rem;
@include grid(false, 1fr 1fr);
}
@ -18,7 +18,7 @@
.about-left {
h5 {
margin-top: 0.8rem;
font-size: 2.4rem;
font-size: 1.8rem;
color: $base-black;
font-weight: normal;
line-height: 2.9rem;
@ -38,7 +38,7 @@
.about-img {
justify-self: flex-end;
@include imgStyle(44.4rem, 55rem, cover);
@include imgStyle(40rem, 49.5rem, cover);
position: relative;
z-index: 2;
}
@ -50,10 +50,73 @@
}
.about-dots-blue {
top: -7.2rem;
right: -7.2rem;
top: -4.2rem;
right: -4.2rem;
}
.about-dots-orange {
bottom: -7.2rem;
bottom: -4.2rem;
left: -4.2rem;
}
// Media
@media screen and (max-width: 1400px) {
.about-right {
justify-content: center;
}
.about-img {
justify-self: center;
}
}
@media screen and (max-width: 1000px) {
.about-inner {
grid-template-columns: 1fr;
padding: 4.5rem 0 16rem 0;
}
}
@media screen and (max-width: 600px) {
.about-img {
@include imgStyle(22.6rem, 28rem, cover);
}
.about-dots {
@include imgStyle(17.7rem, 16.3rem, contain);
}
.about-dots-orange {
bottom: -4.2rem;
left: -7.2rem;
}
.about-dots-blue {
top: -4.2rem;
right: -7.2rem;
}
.about-left {
h5,
h6 {
font-size: 1.6rem;
}
.about-btn {
max-width: unset;
}
}
.about-inner {
padding-bottom: 8rem;
}
.about-right {
padding: 5rem 0;
overflow: hidden;
}
}
@media screen and (max-width: 600px) {
.hero {
min-height: unset;
height: 30.8rem;
img,
picture {
min-height: unset;
height: 30.8rem;
}
}
}

View File

@ -1,3 +1,15 @@
.hero {
@include imgStyle($objFit: cover);
}
// Media
@media screen and (max-width: 1000px) {
.hero {
min-height: 42.8rem;
overflow: hidden;
img {
min-height: 42.8rem;
}
}
}

View File

@ -55,10 +55,10 @@
.form-right {
@include flex(column);
gap: 0.8rem;
gap: 2.4rem;
button {
margin-top: 6.7rem;
margin-top: 3.3rem;
cursor: pointer;
}
@ -97,3 +97,21 @@
height: 2rem;
}
}
// Media
@media screen and (max-width: 1000px) {
.form {
bottom: 14rem;
}
.map-form {
padding-bottom: 110rem;
}
}
@media screen and (max-width: 800px) {
.form {
grid-template-columns: 1fr;
max-height: 88rem;
padding: 6rem 1.5rem;
}
}

View File

@ -32,6 +32,7 @@
.swiper-wrapper {
align-items: center;
min-height: 30rem;
}
}
@ -41,7 +42,7 @@
width: 6rem;
height: 6rem;
padding: 1rem;
top: 25%;
top: 40%;
img {
width: 4rem;
height: 4rem;
@ -64,12 +65,28 @@
}
.swiper-pagination-bullet {
width: 1.6rem;
height: 1.6rem;
width: 1.2rem;
height: 1.2rem;
&:not(:last-child) {
margin-right: 2rem !important;
margin-left: 0 !important;
}
}
.swiper-pagination-bullet-active {
background: $base-blue;
}
// Media
@media screen and (max-width: 1000px) {
.swiper-pagination {
display: none;
}
.swiper-wrapper {
min-height: unset;
}
}
@media screen and (max-width: 600px) {
.partners-inner {
padding-bottom: 4rem;
}
}

View File

@ -13,6 +13,7 @@
@include imgStyle($objFit: cover);
position: relative;
overflow: hidden;
max-height: 21.4rem;
img {
transform: scale(1);
@include transition-std;
@ -45,3 +46,35 @@
}
}
}
// Media
@media screen and (max-width: 1000px) {
.products-container {
margin: 0;
padding: 0;
max-width: unset;
width: 100%;
}
.products-title {
padding: 0 1.6rem;
}
.products-item {
min-height: 21.4rem;
h5 {
font-size: 1.8rem;
}
img {
min-height: 21.4rem;
}
}
}
// Media
@media screen and (max-width: 600px) {
.products-inner {
padding-bottom: 8rem;
}
}

View File

@ -1,7 +1,7 @@
.top-footer-inner {
padding-bottom: 16rem;
@include grid(false, repeat(3, minmax(17rem, 21.2rem)));
align-items: center;
@include grid(false, repeat(3, minmax(17rem, 24.2rem)));
align-items: flex-start;
justify-content: space-between;
gap: 2.4rem;
}
@ -63,3 +63,23 @@
line-height: 2.9rem;
}
}
// Media
@media screen and (max-width: 1000px) {
.top-footer-inner {
justify-content: center;
grid-template-columns: repeat(1, minmax(17rem, 24.2rem));
gap: 4.4rem;
}
}
@media screen and (max-width: 600px) {
.top-footer-inner {
padding-bottom: 8rem;
}
.top-footer-head {
h4 {
font-size: 1.8rem;
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,48 +1,13 @@
<p>
ХО было образовано в 2009 г. в Ашхабаде. Уже за первые два года
компания зарекомендовала себя как надежного партнера на
международном и национальном рынках.
</p>
<p>
За короткий период мы стали одним из ведущих импортеров
потребительской электроники, бытовой техники, систем коммерческого
кондиционирования, мультемедиа систем для видеостен. Начиная с
2016 г. в портфолио продукции был добавлен широкий спектр
смазочных материалов для пассажирского, коммерческого транспорта и
промышленного оборудования.
</p>
<p>
ХО «Техника дуньяси» занимается импортом продукции высокого
качества от мировых брендов таких как: Samsung, Philips, Midea,
Sony, Toshiba, Sharp, Hitachi, Whirlpool, Neos и др. С целью
поддержания высокого качества поставляемой продукции, был создан
собственный авторизированный сервисный центр.
</p>
<p>
С 2016 г. и по сей день компания, совместно с иностранными
партнерами, импортирует смазочные материалы лучшего мирового
бренда Shell. По всей стране основана сеть суб-дилеров, состоящая
из торговых сетей, индивидуальных розничных точек, пунктов замены
масла и АЗС. Вдобавок, мы успешно осуществляли поставки
специальных смазочных материалов большим промышленным
предприятиям, таким как: ГК «Туркменгаз», ГК «Туркменхимия», АОЗТ
«Морской торговый флот» и ряду иностранных нефтегазовых компаний,
осуществляющих деятельность в Туркменистане.
</p>
<p>
Уже через два года было открыто новое направление и начался
экспорт карбамида (мочевины) из Туркменистана в разные точки мира.
На сегодняшний день общий объем экспортированного товара составил
30 миллионов тонн. Нашими клиентами являются крупные торговые
компании из Европы, СНГ, Ближнего Востока и Южной Азии.
</p>
<p>
Являясь членом Союза промышленников и предпринимателей
Туркменистана, ХО «Техника дуньяси» принимает активное участие в
деловой сфере Туркменистана, предоставляя продукцию и услуги
высокого качества как в секторе Бизнес для потребителя, так и
Бизнес для бизнеса. С долгосрочными перспективами, видением и
стремлению к совершенству компания придерживается принципов
деловой этики, профессионального развития своей команды, доверия и
успеха своих клиентов.
</p>
<p>“Tehnika Dunyasi” ES was established in 2009 in Ashgabat. Within first two years, the company has proved itself as a reliable partner both on international and on domestic markets.</p>
<p>In short period our company became one of the lead importers of consumer electronics, home appliances, commercial air conditioning systems, multimedia videowall systems. Since 2016 a wide range of lubricants for passenger, commercial vehicles and industrial equipment was added to our portfolio.</p>
<p>Our company imports high quality products of world known brands such as Samsung, Philips, Midea, Sony, Toshiba, Sharp, Hitachi, Whirlpool, Neos etc. In order to maintain quality of supplied products, the company operates an authorized service center.</p>
<p>Since 2016, the company together with foreign partners is importing lubricants of top world brand Shell. We have established a countrywide network of sub-dealers consisting of retail chains, individual retail shops, oil change stations and gas stations. Moreover, we have successfully supplied special lubricants to large industrial enterprises such as SC “Turkmengas”, SC “Turkmenhimiya”, “The Marine Merchant Fleet” CJSC and number of foreign oil and gas companies running a successful business in Turkmenistan.</p>
<p>In two years, our company initiated a new business direction and started exporting carbamide (urea) from Turkmenistan to different parts of the world and until now, the export quantity reached 5 million tons. Our clients are large trading companies from Europe, CIS, Middle East and South Asia.</p>
<p>Being a member of the Union of Entrepreneurs and Industrialists of Turkmenistan “Tehnika Dunyasi” ES is an active participant of business sphere in Turkmenistan by providing high quality goods and services both in B2C and B2B sectors.</p>
<p>With a long term perspective, vision and passion for perfection our company adheres to the principles of business ethics, professional development of its team, trust and customer success.</p>

View File

@ -0,0 +1,13 @@
<p>ХО «Техника Дуньяси» было образовано в 2009 г. в г. Ашгабате. Уже за первые два года компания зарекомендовала себя как надежного партнера как на международном, так и национальном рынках.</p>
<p>За короткий период наша компания стала одним из ведущих импортеров потребительской электроники, бытовой техники, систем коммерческого кондиционирования, мультемедиа систем для видеостен. Начиная с 2016 г. в портфолио нашей продукции был добавлен широкий спектр смазочных материалов для пассажирского, коммерческого транспорта и промышленного оборудования.</p>
<p>Наша компания занимается импортом продукции высокого качества от мировых брендов таких как: Samsung, Philips, Midea, Sony, Toshiba, Sharp, Hitachi, Whirlpool, Neos и др. С целью поддержания высокого качества поставляемой продукции, компания имеет свой авторизированный сервисный центр.</p>
<p>С 2016 г. и по сей день компания, совместно с иностранными партнерами, импортирует смазочные материалы лучшего мирового бренда Shell. По всей стране мы основали сеть суб-дилеров состоящие из торговых сетей, индивидуальных розничных точек, пунктов замены масла и АЗС. Вдобавок, мы успешно осуществляли поставки специальных смазочных материалов большим промышленным предприятиям, таким как: ГК «Туркменгаз», ГК «Туркменхимия», АОЗТ «Морской торговый флот» и ряду иностранных нефтегазовых компаний, осуществляющих успешную деятельность в Туркменистане.</p>
<p>Уже через два года наша компания открыла новое направление и начала экспорт карбамида (мочевины) из Туркменистана в разные точки мира, и на сегодняшний день общий объем экспортированного товара составил 5 миллионов тонн. Нашими клиентами являются крупные торговые компании из Европы, СНГ, Ближнего Востока и Южной Азии.</p>
<p>Являясь членом Союза промышленников и предпринимателей Туркменистана, ХО «Техника дуньяси» принимает активное участие в деловой сфере Туркменистана, предоставляя продукцию и услуги высокого качества как в секторе Бизнес для потребителя, так и Бизнес для бизнеса.</p>
<p>С долгосрочными перспективами, видением и стремлению к совершенству наша компания придерживается принципов деловой этики, профессионального развития своей команды, доверия и успеха наших клиентов.</p>

View File

@ -0,0 +1,13 @@
<p>“Tehnika Dünýäsi” hojalyk jemgyýeti 2009-njy ýylda Aşgabatda esaslandyryldy. Eýýäm ilkinji iki ýylyň dowamynda halkara we milli bazarlarda ygtybarly hyzmatdaş hökmünde özüni tanatdy.</p>
<p>Gysga wagtyň içinde kompaniýamyz sarp ediş elektronikasy, durmuş enjamlary, söwda ýeljiretme ulgamlary, wideo diwarlary üçin multimediýa ulgamlary boýunça öňdebaryjy importçylaryň birine öwrüldi. 2016-njy ýyldan başlap önüm portfelimize ýolagçy awtoulaglary, söwda ulaglary we senagat enjamlary üçin köp sanly çalgy ýaglary hem goşuldy.</p>
<p>Biziň kompaniýamyz “Samsung”, “Philips”, “Midea”, “Sony”, “Toshiba”, “Sharp”, “Hitachi”, “Whirlpool”, “Neos” we ş.m. ýaly dünýä meşhur brendleriň ýokary hilli önümlerini import edýär. Berilýän önümleriň ýokary hilini saklamak üçin kompaniýanyň öz ygtyýarly hyzmat merkezi bar.</p>
<p>2016-njy ýyldan şu güne çenli kärhana daşary ýurtly hyzmatdaşlar bilen bilelikde dünýäniň iň gowy “Shell” haryt nyşanly çalgy ýaglaryny import edýär. Ýurduň ähli ýerlerinde aýry-aýry söwda nokatlaryndan, nebit çalşygy nokatlaryndan we ýangyç guýulýan stansiýalardan ybarat kiçi dilerler ulgamyny döretdik. Mundan başga-da, iri senagat kärhanalaryna, ýagny “Türkmengaz” DK, “Türkmenhimiýa” DK, “Deňiz söwda floty” ÝGPJ we Türkmenistanda üstünlikli işleýän birnäçe daşary ýurt nebit we gaz kompaniýalary ýaly iri kärhanalary ýörite çalgy ýaglary bilen üstünlikli üpjün etdik.</p>
<p>Iki ýyldan soň kärhanamyz täze ugur açdy we dünýäniň dürli künjeklerine Türkmenistandan karbamid eksport edip başlady hem-de häzirki wagtda eksport edilen harytlaryň umumy mukdary 5 million tonna barabar boldy. Müşderilerimiz Ýewropadan, GDA-dan, Ýakyn Gündogardan we Günorta Aziýadan gelen iri söwda kompaniýalarydyr.</p>
<p>Türkmenistanyň Senagatçylar we telekeçiler birleşmesiniň agzasy bolmak bilen, “Tehnika Dünýäsi” hojalyk jemgyýeti işewürlik-sarp ediji we telekeçilik-täjirçilik pudaklarynda ýokary hilli önümleri we hyzmatlary hödürläp, Türkmenistanyň işewürlik pudagyna işjeň gatnaşýar</p>
<p>Uzak möhletleýin mümkinçilik, gözýetim we kämillige ygrarlylygymyz bilen kompaniýamyz iş etikasynyň ýörelgelerine, toparymyzyň hünär taýdan ösmegine, müşderilerimiziň ynamyna we üstünligine eýerýär.</p>

View File

@ -1,13 +1,3 @@
<h5>
ХО было образовано в 2009 г. в Ашхабаде. Уже за первые два года
компания зарекомендовала себя как надежного партнера на
международном и национальном рынках.
</h5>
<h6>
За короткий период мы стали одним из ведущих импортеров
потребительской электроники, бытовой техники, систем коммерческого
кондиционирования, мультемедиа систем для видеостен. Начиная с
2016 г. в портфолио продукции был добавлен широкий спектр
смазочных материалов для пассажирского, коммерческого транспорта и
промышленного оборудования.
</h6>
<h5>“Tehnika Dunyasi” ES was established in 2009 in Ashgabat. Within first two years, the company has proved itself as a reliable partner both on international and on domestic markets.</h5>
<h6>In short period our company became one of the lead importers of consumer electronics, home appliances, commercial air conditioning systems, multimedia videowall systems. Since 2016 a wide range of lubricants for passenger, commercial vehicles and industrial equipment was added to our portfolio.</h6>

View File

@ -0,0 +1,3 @@
<h5>ХО «Техника Дуньяси» было образовано в 2009 г. в г. Ашгабате. Уже за первые два года компания зарекомендовала себя как надежного партнера как на международном, так и национальном рынках.</h5>
<h6>За короткий период наша компания стала одним из ведущих импортеров потребительской электроники, бытовой техники, систем коммерческого кондиционирования, мультемедиа систем для видеостен. Начиная с 2016 г. в портфолио нашей продукции был добавлен широкий спектр смазочных материалов для пассажирского, коммерческого транспорта и промышленного оборудования.</h6>

View File

@ -0,0 +1,3 @@
<h5>“Tehnika Dünýäsi” hojalyk jemgyýeti 2009-njy ýylda Aşgabatda esaslandyryldy. Eýýäm ilkinji iki ýylyň dowamynda halkara we milli bazarlarda ygtybarly hyzmatdaş hökmünde özüni tanatdy.</h5>
<h6>Gysga wagtyň içinde kompaniýamyz sarp ediş elektronikasy, durmuş enjamlary, söwda ýeljiretme ulgamlary, wideo diwarlary üçin multimediýa ulgamlary boýunça öňdebaryjy importçylaryň birine öwrüldi. 2016-njy ýyldan başlap önüm portfelimize ýolagçy awtoulaglary, söwda ulaglary we senagat enjamlary üçin köp sanly çalgy ýaglary hem goşuldy.</h6>

View File

@ -1,29 +1,7 @@
<p>
Наша компания предлагает широкий спектр потребительской
электроники, бытовой техники и коммерческих систем
кондиционирования от мировых брендов Samsung, Philips, Midea,
Sony, Toshiba, Sharp, Hitachi, Whirlpool, Neos etc. Вы можете
посетить наш
<a href="https://elektronika.tm/" target="_blank"
>он-лайн магазин</a
>.
</p>
<p>
Также наш сервисный центр предлагает услуги по пост-продажному
ремонту. Чтобы вызвать техника, позвоните в операторский центр по
номеру…
</p>
<p>
ХО «Техника дуньяси» является активным участником на рынке
смазочных материалов Туркменистана. Мы поставляем полный спектр
смазочных материалов марки Shell, которые
<a
href="https://www.shell.com/business-customers/lubricants-for-business/news-and-media-releases/2021/shell-leads-global-lubricants-market-for-15th-year.html"
target="_blank"
>15ый год подряд признаются лидирующими на мировом рынке</a
>. Линейка продукции включает все виды смазочных материалов,
доступных на заводах Shell, от минеральной пластичной смазки до
высококлассных синтетических масел для турбинных двигателей. Чтобы
получить больше информации, пожалуйста, оставьте Вашу заявку на
прайс-лист или предложение на странице Свяжитесь с нами.
</p>
<p>Our Company provides a wide range of consumer electronics, home appliances and commercial air conditioning systems of world-known brands Samsung, Philips, Midea, Sony, Toshiba, Sharp, Hitachi, Whirlpool, Neos etc. <a href="https://elektronika.tm/">Please click here to navigate to our online shop</a>. Our service center is happy to offer high quality aftersales repair works. Please dial our call center to order a technician visit ( 952097, 222255, 222485, 142254, 142255 )</p>
<p>“Tehnika Dunyasi” ES is an active player on Turkmenistan market of lubricants. We are able to supply a full range of Shell brand lubricants, which are considered #1 in the world for <a href="https://www.shell.com/business-customers/lubricants-for-business/news-and-media-releases/2021/shell-leads-global-lubricants-market-for-15th-year.html">15 years in a row</a>. Our lineup includes all types of lubricants available at Shell plants, from mineral grease to high class synthetic turbo engine oil. Please leave your pricelist or quotation request on<a href="http://tehnikadunyasi.com/en/contacts"> Contact us page</a>.</p>
<p>With the development of Turkmenistans chemical industry, the carbamide (urea) became one of the top exported products. In the world, a carbamide has a very wide range of applications. Urea or urea-containing mixtures are used as fertilizers in agriculture. Urea is used as a chemical intermediate, stabilizer in explosives, medicine, and viscosity modifier, and in plastics, adhesives, pharmaceuticals, cosmetics, dentifrices, flame-proofing agents, and preparation of biuret.</p>
<p>“Tehnika Dunyasi” ES maintains close business relations with State Concern “Turkmenhimiya” and exports a High Class Grade B Carbamide produced at “Tejenkarbamid” and “Marykarbamid” plants to different parts of the world. To get a quotation, please leave a request on <a href="http://tehnikadunyasi.com/en/contacts">Contact Us Page</a>.</p>

View File

@ -0,0 +1,5 @@
<p>Наша компания предлагает широкий спектр потребительской электроники, бытовой техники и коммерческих систем кондиционирования от м<span class="fr-tmp fr-em">F</span><span class="fr-tmp fr-sm">F</span>ировых брендов Samsung, Philips, Midea, Sony, Toshiba, Sharp, Hitachi, Whirlpool, Neos etc. Пожалуйста, пройдите <a href="https://elektronika.tm/">по ссылке на наш онлайн-магазин</a>. Так же наш сервисный центр рад предложить услуги по пост-продажному ремонту. Позвоните в наш операторский центр для вызова техника ( 952097, 222255, 222485, 142254, 142255 )</p>
<p>ХО «Техника дуньяси» является активным участником на рынке смазочных материалов Туркменистана. Мы имеем возможность поставлять полный спектр смазочных материалов марки Shell, которые вот <a href="https://www.shell.com/business-customers/lubricants-for-business/news-and-media-releases/2021/shell-leads-global-lubricants-market-for-15th-year.html">уже 15ый год подряд признаются лидирующими на мировом рынке.</a>&nbsp; Линейка нашей продукции включает все виды смазочных материалов, доступных на заводах Shell, от минеральной пластичной смазки до высококлассных синтетических масел для турбинных двигателей. Пожалуйста, оставьте Вашу заявку на прайс-лист или предложение на нашей странице <a href="http://tehnikadunyasi.com/ru/contacts">Свяжитесь с нами</a>.</p>
<p>С развитием химической промышленности Туркменистана, карбамид (мочевина) стал одним из наиболее экспортируемых товаров. В мире карбамид имеет широкий спектр применения. Мочевина или мочевиносодержащие смеси используются в качестве удобрений в сельском хозяйстве. Так же мочевина используется в качестве химических полупродуктов, стабилизаторов во взрывчатках, в медицине и модификаторах вязкости, так же в производстве пластика, клеящих веществ, фармацевтики, косметики, зубной пасты, негорючих материалов и биурета. ХО «Техника дуньяси» поддерживает тесные деловые связи с Государственным концерном «Туркменхимия» и экспортирует карбамид высшего сорта класса Б, произведенный на заводах «Тедженкарбамид» и «Марыкарбамид», в разные части мира. Для получения ценового предложения, пожалуйста, оставьте заявку на нашей странице <a href="http://tehnikadunyasi.com/ru/contacts">Свяжитесь с нами</a>.</p>

View File

@ -0,0 +1,5 @@
<p>Biziň kompaniýamyz “Samsung”, “Philips”, “Midea”, “Sony”, “Toshiba”, “Sharp”, “Hitachi”, “Whirlpool”, “Neos” we beýleki öňdebaryjy sarp ediş elektronikasynyň, durmuş enjamlarynyň we täjirçilik ýeljiretme ulgamlarynyň giň toplumyny hödürleýär. <a href="https://elektronika.tm/">Linkiň üsti bilen biziň onlaýn dükanyma</a> geçip bilersiňiz. Şeýle hem, hyzmat merkezimiz satuwdan soňky abatlaýyş hyzmatlaryny hödürleýär. Tehniki üçin jaň merkezimize aýlaň (952097, 222255, 222485, 142254, 142255)</p>
<p>“Tehnika Dünýäsi” hojalyk jemgyýeti Türkmenistanyň çalgy ýaglary bazaryna işjeň gatnaşýar. <a href="https://www.shell.com/business-customers/lubricants-for-business/news-and-media-releases/2021/shell-leads-global-lubricants-market-for-15th-year.html">15 ýyl bäri dünýä bazarynda öňdebaryjylaryň hatarynda ykrar edilen</a> “Shell” çalgy ýaglarynyň doly toplumyny üpjün edip bilýäris. Önüm liniýamyzyda mineral plastik ýagdan başlap, ýokary öndürijilikli sintetiki turbina hereketlendiriji ýaglaryna çenli “Shell” zawodynda elýeterli bolan çalgy ýaglarynyň ähli görnüşleri bar. Bahalaryň sanawy ýa-da teklipler boýunça arzaňyzy <a href="http://tehnikadunyasi.com/ru/contacts">Biziň bilen habarlaşmak sahypamyzdan ugradyp bilersiňiz</a>.</p>
<p>Türkmenistanyň himiýa pudagynyň ösmegi bilen karbamid iň köp eksport edilýän harytlaryň birine öwrüldi. Dünýäde karbamidiň köp sanly ulanylyşy bar. Karbamid ýa-da karbamid garyndylary oba hojalygynda dökün hökmünde ulanylýar. Karbamid ýarym himiki önümlerde, partlaýjy maddalardaky stabilizatorlarda, lukmançylyk senagatynda we ýelimliligi üýtgedijide, şeýle hem plastmassada, ýelimleýjide, derman önümlerinde, kosmetikada, diş pastasynda, ýanmaýan materiallarda we biuret önümçiliginde ulanylýar. “Tehnika dünýäsi” hojalyk jemgyýeti “Türkmenhimiýa” döwlet konserni bilen ýakyn hyzmatdaşlyk edip, “Tejenkarbamid” we “Marykarbamid” zawodlarynda öndürilen iň ýokary derejeli “B” karbamidi dünýäniň dürli künjeklerine eksport edýär. Bahalaryň sanawy boýunça teklibi almak üçin arzaňyzy <a href="http://tehnikadunyasi.com/ru/contacts">Biziň bilen habarlaşmak sahypamyzdan ugradyp bilersiňiz.</a></p>

View File

@ -11,9 +11,29 @@ forceUrl = 1
<link rel="stylesheet" href="{{ 'assets/styles/swiper-bundle.min.css'|theme}}" />
<link rel="stylesheet" href="{{ 'assets/styles/style.css'|theme}}" />
<title>{{ this.page.title }}</title>
<style>
.nav-dropdown button {
padding: 1.2rem;
background: #ffffff;
-webkit-transition: 0.3s all ease;
transition: 0.3s all ease;
}
.nav-links button, .nav-links span {
padding: 1rem 0;
width: 100%;
height: 100%;
font-size: 1.8rem;
font-weight: bold;
color: #305ba9;
cursor: pointer;
}
</style>
{% styles %}
</head>
<body>
{% partial 'burger' %}
<nav class="nav">
<div class="container">
<div class="nav-inner">
@ -25,6 +45,11 @@ forceUrl = 1
<div class="nav-right">
{% partial 'menu' %}
</div>
<div class="nav-burger">
<div class="burger-line burger-line-1"></div>
<div class="burger-line burger-line-2"></div>
<div class="burger-line burger-line-3"></div>
</div>
</div>
</div>
</nav>
@ -34,12 +59,15 @@ forceUrl = 1
<footer class="footer">
<div class="container">
<div class="footer-inner">
<p>Copyright © Dowletli Zahmet 2022</p>
<p>Copyright © Tehnika Dunyasi <span id="year"></span></p>
</div>
</div>
</footer>
<script src="{{ 'assets/jquery.min.js'|theme}}"></script>
<script src="{{ 'assets/scripts/swiper/swiper-bundle.min.js'|theme}}"></script>
<script src="{{ 'assets/scripts/core/index.js'|theme}}"></script>
{% scripts %}
{% framework extras %}
</body>
</html>

View File

@ -7,58 +7,58 @@ items:
viewBag:
locale:
ru:
title: ''
title: Главная
url: ''
tm:
title: ''
title: 'Baş sahypa'
url: ''
isHidden: '0'
cssClass: ''
isExternal: '0'
-
title: About
title: 'About us'
type: cms-page
code: ''
reference: about
viewBag:
locale:
ru:
title: ''
title: 'О нас'
url: ''
tm:
title: ''
title: 'Biz barada'
url: ''
isHidden: '0'
cssClass: ''
isExternal: '0'
-
title: Services
title: 'Products and Services'
type: cms-page
code: ''
reference: products
viewBag:
locale:
ru:
title: ''
title: 'Продукция и Услуги'
url: ''
tm:
title: ''
title: 'Önümler we hyzmatlar'
url: ''
isHidden: '0'
cssClass: ''
isExternal: '0'
-
title: 'Contact Us'
type: url
url: '#'
title: 'Contact us'
type: cms-page
code: ''
reference: contacts
viewBag:
locale:
ru:
title: ''
title: Контакты
url: ''
tm:
title: ''
title: 'Habarlaşmak üçin'
url: ''
isHidden: '0'
cssClass: ''

View File

@ -1,7 +1,11 @@
title = "about"
title = "About us"
url = "/about"
layout = "master"
is_hidden = 0
[viewBag]
localeTitle[ru] = "О нас"
localeTitle[tm] = "Biz barada"
==
<main class="main">
<div class="container">

View File

@ -0,0 +1,125 @@
title = "Contacts"
url = "/contacts"
layout = "master"
is_hidden = 0
[uploadForm]
group = "Contact Page"
messages_success = "Your form was successfully submitted"
messages_errors = "There were errors with your submission"
mail_enabled = 1
mail_subject = "Contact Page"
mail_recipients[] = "shokki.a96@gmail.com"
inline_errors = "disabled"
sanitize_data = "disabled"
anonymize_ip = "disabled"
recaptcha_theme = "light"
recaptcha_type = "image"
recaptcha_size = "normal"
emails_date_format = "Y-m-d"
uploader_enable = 1
uploader_multi = 1
placeholderText = "Click or drag files to upload"
removeText = "Are you sure ?"
maxSize = 5
fileTypes[] = "jpg"
fileTypes[] = "jpeg"
fileTypes[] = "bmp"
fileTypes[] = "png"
fileTypes[] = "webp"
fileTypes[] = "gif"
fileTypes[] = "js"
fileTypes[] = "map"
fileTypes[] = "ico"
fileTypes[] = "css"
fileTypes[] = "less"
fileTypes[] = "scss"
fileTypes[] = "ics"
fileTypes[] = "odt"
fileTypes[] = "doc"
fileTypes[] = "docx"
fileTypes[] = "ppt"
fileTypes[] = "pptx"
fileTypes[] = "pdf"
fileTypes[] = "swf"
fileTypes[] = "txt"
fileTypes[] = "ods"
fileTypes[] = "xls"
fileTypes[] = "xlsx"
fileTypes[] = "eot"
fileTypes[] = "woff"
fileTypes[] = "woff2"
fileTypes[] = "ttf"
fileTypes[] = "flv"
fileTypes[] = "wmv"
fileTypes[] = "mp3"
fileTypes[] = "ogg"
fileTypes[] = "wav"
fileTypes[] = "avi"
fileTypes[] = "mov"
fileTypes[] = "mp4"
fileTypes[] = "mpeg"
fileTypes[] = "webm"
fileTypes[] = "mkv"
fileTypes[] = "rar"
fileTypes[] = "zip"
==
{% partial 'home/banner' %}
<section class="map-form">
<div class="map">
<!-- <iframe
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3147.4000571400643!2d58.35451331517866!3d37.921083479733156!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3f70020561a41333%3A0x7eb780ec91897617!2z0JzQsNCz0LDQt9C40L0gIkVsZWt0cm9uaWthIER1bnlhc2ki!5e0!3m2!1sen!2snl!4v1666358241300!5m2!1sen!2snl"
width="100%" height="600" style="border: 0" allowfullscreen="" loading="lazy"
referrerpolicy="no-referrer-when-downgrade"></iframe> -->
</div>
{{ form_ajax(uploadForm ~ '::onFormSubmit') }}
<div id="{{ uploadForm }}_forms_flash"></div>
<div class="form" style="height: 125%;">
<div class="form-left">
<div class="form-item">
<label for="name">{{ 'contact.name'|_ }}</label>
<input type="text" id="name" name="name" placeholder="Aman" />
</div>
<div class="form-item">
<label for="surname">{{ 'contact.surname'|_ }}</label>
<input type="text" id="surname" name="surname" placeholder="Amanov" />
</div>
<div class="form-item">
<label for="org">{{ 'contact.organisation'|_ }}</label>
<input type="text" id="org" name="org" placeholder="ELEKTRONIKA" />
</div>
<div class="form-item">
<label for="tel">{{ 'contact.phone'|_ }}</label>
<input type="text" id="tel" name="tel" placeholder="+993 61 616263" />
</div>
</div>
<div class="form-right">
<div class="form-item">
<label for="message">{{ 'contact.message'|_ }}</label>
<textarea id="message" name="message"></textarea>
</div>
<div class="form-item form-file">
<label for="file">{{ 'contact.file'|_ }}</label>
<input type="file" id="file" />
<div class="file-placeholder">
<span>{{ 'contact.select.file'|_ }}</span>
<div class="file-icons">
<img src="{{'assets/icons/file-add.svg'|theme}}" alt="" />
</div>
</div>
</div>
<button type="submit" class="btn">{{ 'contact.send.btn'|_ }}</button>
</div>
</div>
{{ form_close() }}
</section>
{% partial 'home/info' %}

View File

@ -2,20 +2,81 @@ title = "Tehnika Dunyasi"
url = "/"
layout = "master"
is_hidden = 0
[uploadForm]
group = "Contact Us"
messages_success = "Your form was successfully submitted"
messages_errors = "There were errors with your submission"
mail_enabled = 1
mail_subject = "Contact Us"
mail_recipients[] = "shokki.a96@gmail.com"
inline_errors = "disabled"
sanitize_data = "disabled"
anonymize_ip = "disabled"
recaptcha_theme = "light"
recaptcha_type = "image"
recaptcha_size = "normal"
emails_date_format = "Y-m-d"
mail_uploads = 1
uploader_enable = 1
uploader_multi = 1
placeholderText = "Click or drag files to upload"
removeText = "Are you sure ?"
maxSize = 5
fileTypes[] = "jpg"
fileTypes[] = "jpeg"
fileTypes[] = "bmp"
fileTypes[] = "png"
fileTypes[] = "webp"
fileTypes[] = "gif"
fileTypes[] = "js"
fileTypes[] = "map"
fileTypes[] = "ico"
fileTypes[] = "css"
fileTypes[] = "less"
fileTypes[] = "scss"
fileTypes[] = "ics"
fileTypes[] = "odt"
fileTypes[] = "doc"
fileTypes[] = "docx"
fileTypes[] = "ppt"
fileTypes[] = "pptx"
fileTypes[] = "pdf"
fileTypes[] = "swf"
fileTypes[] = "txt"
fileTypes[] = "ods"
fileTypes[] = "xls"
fileTypes[] = "xlsx"
fileTypes[] = "eot"
fileTypes[] = "woff"
fileTypes[] = "woff2"
fileTypes[] = "ttf"
fileTypes[] = "flv"
fileTypes[] = "wmv"
fileTypes[] = "mp3"
fileTypes[] = "ogg"
fileTypes[] = "wav"
fileTypes[] = "avi"
fileTypes[] = "mov"
fileTypes[] = "mp4"
fileTypes[] = "mpeg"
fileTypes[] = "webm"
fileTypes[] = "mkv"
fileTypes[] = "rar"
fileTypes[] = "zip"
==
<section class="hero">
<img src="{{ 'home/hero.jpg'|media}}" alt="" />
</section>
{% partial 'home/banner' %}
<section class="about">
<div class="container">
<div class="about-inner">
<div class="about-left">
<div class="about-title section-title">
<span></span>
<h4>{{ 'home.about.header'|_ }}</h4>
<h4><a href="/about" style="color: #1e5aae;">{{ 'home.about.header'|_ }}</a></h4>
</div>
{% content 'home/about' %}
<div class="about-btn btn">{{ 'home.about.btn'|_ }}</div>
<a href="/about" class="about-btn btn">{{ 'home.about.btn'|_ }}</a>
</div>
<div class="about-right">
<div class="about-img">
@ -31,23 +92,13 @@ is_hidden = 0
</div>
</div>
</section>
{% partial 'home/services' %}
<section class="projects">
<div class="container">
<div class="projects-inner">
<div class="projects-title section-title">
<span></span>
<h4>{{ 'home.projects.header'|_ }}</h4>
</div>
<div class="projects-content">
<div class="projects-img">
<img src="{{ 'assets/images/projects.jpg'|theme}}" alt="" />
</div>
</div>
</div>
</div>
</section>
{% partial 'home/projects' %}
{% partial 'home/partners' %}
<section class="map-form">
<div class="map">
<iframe
@ -55,43 +106,52 @@ is_hidden = 0
width="100%" height="600" style="border: 0" allowfullscreen="" loading="lazy"
referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>
<form class="form">
{{ form_ajax(uploadForm ~ '::onFormSubmit') }}
<div id="{{ uploadForm }}_forms_flash"></div>
<div class="form">
<div class="form-left">
<div class="form-item">
<label for="name">Имя</label>
<label for="name">{{ 'contact.name'|_ }}</label>
<input type="text" id="name" name="name" placeholder="Aman" />
</div>
<div class="form-item">
<label for="surname">Фамилия</label>
<label for="surname">{{ 'contact.surname'|_ }}</label>
<input type="text" id="surname" name="surname" placeholder="Amanov" />
</div>
<div class="form-item">
<label for="org">Название организации</label>
<label for="org">{{ 'contact.organisation'|_ }}</label>
<input type="text" id="org" name="org" placeholder="ELEKTRONIKA" />
</div>
<div class="form-item">
<label for="tel">Номер телефона</label>
<label for="tel">{{ 'contact.phone'|_ }}</label>
<input type="text" id="tel" name="tel" placeholder="+993 61 616263" />
</div>
</div>
<div class="form-right">
<div class="form-item">
<label for="message">Message</label>
<label for="message">{{ 'contact.message'|_ }}</label>
<textarea id="message" name="message"></textarea>
</div>
<div class="form-item form-file">
<label for="file">Прикрепите файл</label>
<label for="file">{{ 'contact.file'|_ }}</label>
<input type="file" id="file" />
<div class="file-placeholder">
<span>Выбрать файл</span>
<span>{{ 'contact.select.file'|_ }}</span>
<div class="file-icons">
<img src="{{'assets/icons/file-add.svg'|theme}}" alt="" />
</div>
</div>
</div>
<button type="submit" class="btn">Send mail</button>
<button type="submit" class="btn">{{ 'contact.send.btn'|_ }}</button>
</div>
</form>
</div>
{{ form_close() }}
</section>
{% partial 'home/info' %}

View File

@ -1,7 +1,11 @@
title = "products"
title = "Products and Services"
url = "/products"
layout = "master"
is_hidden = 0
[viewBag]
localeTitle[ru] = "Продукция и Услуги"
localeTitle[tm] = "Önümler we hyzmatlar"
==
<main class="main">
<div class="container">

View File

@ -0,0 +1,40 @@
[viewBag]
[staticMenu]
code = "top_menu"
==
<section class="burger-wrapper">
<div class="burger-outer">
<div class="burger-close">
<img src="{{'assets/icons/close.svg'|theme}}" alt="" />
</div>
</div>
<div class="burger-inner">
<div class="burger-top">
<div class="burger-logo-wrapper">
<div class="burger-logo">
<img src="{{'assets/icons/logo-white.svg'|theme}}" alt="" />
</div>
</div>
<ul class="burger-links">
{% for item in staticMenu.menuItems %}
{% if not item.isHidden %}
<li><a href="{{ item.url }}">{{ item.title }}</a></li>
{% endif %}
{% endfor %}
</ul>
</div>
<div class="burger-language">
<div class="burger-dropdown">
{{ form_open({ request:'onSwitchLocale'})}}
{% for code, name in locales if code != activeLocale %}
<button type="submit" name="locale" value="{{code}}" style="text-transform: uppercase;">{{code}}</button>
{% endfor %}
{{ form_close() }}
</div>
<span style="text-transform: uppercase;">{{ activeLocale }}</span>
</div>
</div>
</section>

View File

@ -0,0 +1,28 @@
[viewBag]
==
<section class="hero">
<picture>
{% if activeLocale == 'en' %}
<source
media="(min-width: 1000px)"
srcset="{{'home/hero_en.jpg'|media}}"
/>
<img src="{{ 'home/hero_en_mobile.jpg'|media}}" alt="" />
{% elseif activeLocale == 'ru' %}
<source
media="(min-width: 1000px)"
srcset="{{ 'home/hero_ru.jpg'|media}}"
/>
<img src="{{ 'home/hero_ru_mobile.jpg'|media}}" alt="" />
{% elseif activeLocale == 'tm' %}
<source
media="(min-width: 1000px)"
srcset="{{ 'home/hero_tm.jpg'|media}}"
/>
<img src="{{ 'home/hero_tm_mobile.jpg'|media}}" alt="" />
{% endif %}
</picture>
</section>

View File

@ -0,0 +1,119 @@
[viewBag]
[uploadForm]
messages_success = "Your form was successfully submitted"
messages_errors = "There were errors with your submission"
mail_enabled = 1
mail_subject = "Tehnika Dunyasi Contact Web"
mail_recipients[] = "info@tehnikadunyasi.com"
mail_recipients[] = "shokki.a96@gmail.com"
mail_uploads = 1
inline_errors = "disabled"
sanitize_data = "disabled"
anonymize_ip = "disabled"
recaptcha_theme = "light"
recaptcha_type = "image"
recaptcha_size = "normal"
emails_date_format = "Y-m-d"
uploader_enable = 1
uploader_multi = 1
placeholderText = "Click or drag files to upload"
removeText = "Are you sure ?"
maxSize = 5
fileTypes[] = "jpg"
fileTypes[] = "jpeg"
fileTypes[] = "bmp"
fileTypes[] = "png"
fileTypes[] = "webp"
fileTypes[] = "gif"
fileTypes[] = "js"
fileTypes[] = "map"
fileTypes[] = "ico"
fileTypes[] = "css"
fileTypes[] = "less"
fileTypes[] = "scss"
fileTypes[] = "ics"
fileTypes[] = "odt"
fileTypes[] = "doc"
fileTypes[] = "docx"
fileTypes[] = "ppt"
fileTypes[] = "pptx"
fileTypes[] = "pdf"
fileTypes[] = "swf"
fileTypes[] = "txt"
fileTypes[] = "ods"
fileTypes[] = "xls"
fileTypes[] = "xlsx"
fileTypes[] = "eot"
fileTypes[] = "woff"
fileTypes[] = "woff2"
fileTypes[] = "ttf"
fileTypes[] = "flv"
fileTypes[] = "wmv"
fileTypes[] = "mp3"
fileTypes[] = "ogg"
fileTypes[] = "wav"
fileTypes[] = "avi"
fileTypes[] = "mov"
fileTypes[] = "mp4"
fileTypes[] = "mpeg"
fileTypes[] = "webm"
fileTypes[] = "mkv"
fileTypes[] = "rar"
fileTypes[] = "zip"
==
<section class="map-form">
<div class="map">
<iframe
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3147.4000571400643!2d58.35451331517866!3d37.921083479733156!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3f70020561a41333%3A0x7eb780ec91897617!2z0JzQsNCz0LDQt9C40L0gIkVsZWt0cm9uaWthIER1bnlhc2ki!5e0!3m2!1sen!2snl!4v1666358241300!5m2!1sen!2snl"
width="100%" height="600" style="border: 0" allowfullscreen="" loading="lazy"
referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>
{{ form_ajax(uploadForm ~ '::onFormSubmit') }}
<div id="{{ uploadForm }}_forms_flash"></div>
<div class="form">
<div class="form-left">
<div class="form-item">
<label for="name">Имя</label>
<input type="text" id="name" name="name" placeholder="Aman" />
</div>
<div class="form-item">
<label for="surname">Фамилия</label>
<input type="text" id="surname" name="surname" placeholder="Amanov" />
</div>
<div class="form-item">
<label for="org">Название организации</label>
<input type="text" id="org" name="org" placeholder="ELEKTRONIKA" />
</div>
<div class="form-item">
<label for="tel">Номер телефона</label>
<input type="text" id="tel" name="tel" placeholder="+993 61 616263" />
</div>
</div>
<div class="form-right">
<div class="form-item">
<label for="message">Message</label>
<textarea id="message" name="message"></textarea>
</div>
<div class="form-group">
<h4>Upload your resume</h4>
{% partial '@file-upload' %}
</div>
<!-- <div class="form-item form-file">
<label for="file">Прикрепите файл</label>
<input type="file" id="file" />
<div class="file-placeholder">
<span>Выбрать файл</span>
<div class="file-icons">
<img src="{{'assets/icons/file-add.svg'|theme}}" alt="" />
</div>
</div>
</div> -->
<button type="submit" class="btn">Send mail</button>
</div>
</div>
{{ form_submit() }}
{{ form_close() }}
</section>

View File

@ -8,10 +8,10 @@
<div class="top-footer-img">
<img src="{{'assets/icons/map.svg'|theme}}" alt="" />
</div>
<h4>АДРЕС</h4>
<h4>{{ 'home.info.address.header'|_ }}</h4>
</div>
<p class="top-footer-body">
Туркменистан, г. Ашхабад, проспект Битарап Туркменистан, д. 183
{{ 'home.info.address'|_ }}
</p>
</div>
<div class="top-footer-item">
@ -19,12 +19,12 @@
<div class="top-footer-img">
<img src="{{'assets/icons/clock.svg'|theme}}" alt="" />
</div>
<h4>РАБОЧЕЕ ВРЕМЯ</h4>
<h4>{{ 'home.info.work.header'|_ }}</h4>
</div>
<p class="top-footer-body">
Пн - Пт: с 9 до 18:00
{{ 'home.info.work.line1'|_ }}
<br />
Сб : с 9 до 13:00
{{ 'home.info.work.line2'|_ }}
</p>
</div>
<div class="top-footer-item">
@ -32,19 +32,19 @@
<div class="top-footer-img">
<img src="{{'assets/icons/phone.svg'|theme}}" alt="" />
</div>
<h4>КОНТАКТЫ</h4>
<h4>{{ 'home.info.contact.header'|_ }}</h4>
</div>
<p class="top-footer-body">
<a href="mailto:info@tehnikadunyasi.com">
<a href="mailto:{{ 'home.info.email'|_ }}">
<span>Email:</span>
<span>info@tehnikadunyasi.com</span>
<span>{{ 'home.info.email'|_ }}</span>
</a>
<a href="tel:+99312952097">
<span>Тел.:</span>
<span>+993 12 952097</span>
<a href="tel:{{ 'home.info.tel'|_ }}">
<span>{{ 'home.info.tel.header'|_ }}</span>
<span>{{ 'home.info.tel'|_ }}</span>
</a>
<a href="tel:+99312222255">
<span class="nonce">+993 12 222255</span>
<a href="tel:{{ 'home.info.tel2'|_ }}">
<span class="nonce">{{ 'home.info.tel2'|_ }}</span>
</a>
</p>
</div>

View File

@ -0,0 +1,32 @@
[viewBag]
==
<section class="projects">
<div class="container">
<div class="projects-inner">
<div class="projects-title section-title">
<span></span>
<h4>{{ 'home.projects.header'|_ }}</h4>
</div>
<div class="projects-content">
<div class="projects-img">
{% if activeLocale == 'en' %}
<picture>
<source media="(min-width: 1000px)" srcset="{{ 'home/projects/projects_en.jpg'|media}}" />
<img src="{{ 'home/projects/projects_mobile_en.jpg'|media}}" alt="" />
</picture>
{% elseif activeLocale == 'ru' %}
<picture>
<source media="(min-width: 1000px)" srcset="{{ 'home/projects/projects_ru.jpg'|media}}" />
<img src="{{ 'home/projects/projects_mobile_ru.jpg'|media}}" alt="" />
</picture>
{% elseif activeLocale == 'tm' %}
<picture>
<source media="(min-width: 1000px)" srcset="{{ 'home/projects/projects_tm.jpg'|media}}" />
<img src="{{ 'home/projects/projects_mobile_tm.jpg'|media}}" alt="" />
</picture>
{% endif %}
</div>
</div>
</div>
</div>
</section>

View File

@ -1,3 +1,5 @@
[viewBag]
[builderList]
modelClass = "Tehnika\Tehnika\Models\Services"
scope = "-"
@ -7,8 +9,6 @@ noRecordsMessage = "No records found"
detailsPage = "-"
detailsUrlParameter = "id"
pageNumber = "{{ :page }}"
[viewBag]
==
{% set records = builderList.records %}
{% set displayColumn = builderList.displayColumn %}
@ -23,7 +23,7 @@ pageNumber = "{{ :page }}"
<div class="products-inner">
<div class="products-title section-title">
<span></span>
<h4>{{ 'home.services.header'|_ }}</h4>
<h4><a href="/products" style="color: #1e5aae;">{{ 'home.services.header'|_ }}</a></h4>
</div>
<div class="products-content">

View File

@ -1,7 +1,7 @@
[viewBag]
[staticMenu]
code = "top_menu"
[viewBag]
==
<ul class="nav-links">
{% for item in staticMenu.menuItems %}
@ -9,5 +9,17 @@ code = "top_menu"
<li><a href="{{ item.url }}">{{ item.title }}</a></li>
{% endif %}
{% endfor %}
<li class="nav-dropdown"><span>EN</span></li>
<li class="nav-dropdown-wrapper">
<span style="text-transform: uppercase;">{{activeLocale}}</span>
{{ form_open({ request:'onSwitchLocale'})}}
<div class="nav-dropdown">
{% for code, name in locales if code != activeLocale %}
<button name="locale" value="{{code}}" style="padding-left: 10px;padding-right: 10px;">{{code|upper}}</button>
{% endfor %}
</div>
{{ form_close() }}
</li>
</ul>

1
vendor/bin/carbon vendored
View File

@ -1 +0,0 @@
../nesbot/carbon/bin/carbon

23
vendor/bin/carbon vendored Executable file
View File

@ -0,0 +1,23 @@
#!/usr/bin/env php
<?php
use Carbon\Cli\Invoker;
$dir = __DIR__.'/..';
if (!file_exists($dir.'/autoload.php')) {
$dir = __DIR__.'/../vendor';
}
if (!file_exists($dir.'/autoload.php')) {
$dir = __DIR__.'/../../..';
}
if (!file_exists($dir.'/autoload.php')) {
echo 'Autoload not found.';
exit(1);
}
require $dir.'/autoload.php';
exit((new Invoker())(...$argv) ? 0 : 1);

View File

@ -1 +0,0 @@
../league/commonmark/bin/commonmark

181
vendor/bin/commonmark vendored Executable file
View File

@ -0,0 +1,181 @@
#!/usr/bin/env php
<?php
trigger_error('The "bin/commonmark" command has been deprecated since league/commonmark 1.4', E_USER_DEPRECATED);
requireAutoloader();
ini_set('display_errors', 'stderr');
$options = array();
$options_raw = getopt('', array(
'use-asterisk',
'use-underscore',
'enable-strong',
'enable-em',
'safe',
));
foreach ($options_raw as $option => $value) {
switch ($option) {
case 'safe':
$options['html_input'] = 'strip';
$options['allow_unsafe_links'] = false;
break;
case 'use-asterisk':
case 'use-underscore':
case 'enable-strong':
case 'enable-em':
if ($value !== true && $value !== false) {
fail("Invalid value '$value' for option '$option'");
}
break;
}
$options[str_replace('-', '_', $option)] = $value;
}
foreach ($argv as $i => $arg) {
if ($i === 0) {
continue;
}
if (substr($arg, 0, 1) === '-') {
switch ($arg) {
case '-h':
case '--help':
echo getHelpText();
exit(0);
case '-v':
case '--version':
echo \League\CommonMark\CommonMarkConverter::VERSION . "\n";
exit(0);
case '--safe':
$options['safe'] = true;
break;
default:
$option = explode('=', $arg, 2)[0];
if (!preg_match('/^--[^-]/', $option)
|| !array_key_exists(ltrim($option, '-'), $options_raw)) {
fail('Unknown option: ' . $arg);
}
}
} else {
$src = $arg;
}
}
if (isset($src)) {
if (!file_exists($src)) {
fail('File not found: ' . $src);
}
$markdown = file_get_contents($src);
} else {
$stdin = fopen('php://stdin', 'r');
if (stream_set_blocking($stdin, false)) {
$markdown = stream_get_contents($stdin);
}
fclose($stdin);
if (empty($markdown)) {
fail(getHelpText());
}
}
$converter = new \League\CommonMark\CommonMarkConverter($options);
echo $converter->convertToHtml($markdown);
/**
* Get help and usage info
*
* @return string
*/
function getHelpText()
{
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
return <<<WINDOWSHELP
CommonMark - Markdown done right
Usage: commonmark [OPTIONS] [FILE]
-h, --help Shows help and usage information
-v, --version Shows the currently installed version
(Reading data from STDIN is not currently supported on Windows)
Examples:
Converting a file named document.md:
commonmark document.md
Converting a file and saving its output:
commonmark document.md > output.html
Full documentation can be found at http://commonmark.thephpleague.com/
WINDOWSHELP;
}
return <<<HELP
CommonMark - Markdown done right
Usage: commonmark [OPTIONS] [FILE]
-h, --help Shows help and usage information
-v, --version Shows the currently installed version
--safe Escapes all raw HTML input and removes unsafe URLs
If no file is given, input will be read from STDIN
Examples:
Converting a file named document.md:
commonmark document.md
Converting a file and saving its output:
commonmark document.md > output.html
Converting from STDIN:
echo -e '# Hello World!' | commonmark
Converting from STDIN and saving the output:
echo -e '# Hello World!' | commonmark > output.html
Full documentation can be found at http://commonmark.thephpleague.com/
HELP;
}
/**
* @param string $message Error message
*/
function fail($message)
{
fwrite(STDERR, $message . "\n");
exit(1);
}
function requireAutoloader()
{
$autoloadPaths = [
// Local package usage
__DIR__ . '/../vendor/autoload.php',
// Package was included as a library
__DIR__ . '/../../../autoload.php',
];
foreach ($autoloadPaths as $path) {
if (file_exists($path)) {
require_once $path;
break;
}
}
}

View File

@ -1 +0,0 @@
../doctrine/dbal/bin/doctrine-dbal

4
vendor/bin/doctrine-dbal vendored Executable file
View File

@ -0,0 +1,4 @@
#!/usr/bin/env php
<?php
require __DIR__ . '/doctrine-dbal.php';

1
vendor/bin/lessc vendored
View File

@ -1 +0,0 @@
../wikimedia/less.php/bin/lessc

191
vendor/bin/lessc vendored Executable file
View File

@ -0,0 +1,191 @@
#!/usr/bin/env php
<?php
require_once dirname(__FILE__) . '/../lib/Less/Autoloader.php';
Less_Autoloader::register();
// Create our environment
$env = array('compress' => false, 'relativeUrls' => false);
$silent = false;
$watch = false;
$rootpath = '';
// Check for arguments
array_shift($argv);
if (!count($argv)) {
$argv[] = '-h';
}
// parse arguments
foreach ($argv as $key => $arg) {
if (preg_match('/^--?([a-z][0-9a-z-]*)(?:=([^\s]+))?$/i', $arg, $matches)) {
$option = $matches[1];
$value = isset($matches[2]) ? $matches[2] : false;
unset($argv[$key]);
switch ($option) {
case 'h':
case 'help':
echo <<<EOD
Usage: lessc [options] sources [destination]
-h, --help Print help (this message) and exit.
-s, --silent Suppress output of error messages.
-v, --version Print version number and exit.
-x, --compress Compress output by removing some whitespaces.
--include-path=PATHS Set include paths. Separated by `:'. Use `;' on Windows.
--strict-imports Force evaluation of imports.
-sm=on|off Turn on or off strict math, where in strict mode, math
--strict-math=on|off requires brackets. This option may default to on and then
be removed in the future.
-su=on|off Allow mixed units, e.g. 1px+1em or 1px*1px which have units
--strict-units=on|off that cannot be represented.
-ru, --relative-urls re-write relative urls to the base less file.
-rp, --rootpath=URL Set rootpath for url rewriting in relative imports and urls.
Works with or without the relative-urls option.
-w, --watch Watch input files for changes.
EOD;
exit;
case 's':
case 'silent':
$silent = true;
break;
case 'w':
case 'watch':
$watch = true;
break;
case 'v':
case 'version':
echo "lessc " . Less_Version::version . " (less.php)\n\n";
exit;
case 'rp':
case 'rootpath':
$rootpath = $value;
break;
//parser options
case 'compress':
$env['compress'] = true;
break;
case 'ru':
case 'relative-urls':
$env['relativeUrls'] = true;
break;
case 'su':
case 'strict-units':
$env['strictUnits'] = ($value === 'on');
break;
case 'sm':
case 'strict-math':
$env['strictMath'] = ($value === 'on');
break;
case 'x':
case 'include-path':
$env['import_dirs'] = preg_split('#;|\:#', $value);
break;
}
}
}
if (count($argv) > 1) {
$output = array_pop($argv);
$inputs = $argv;
}
else {
$inputs = $argv;
$output = false;
}
if (!count($inputs)) {
echo("lessc: no input files\n");
exit;
}
if ($watch) {
if (!$output) {
echo("lessc: you must specify the output file if --watch is given\n");
exit;
}
$lastAction = 0;
echo("lessc: watching input files\n");
while (1) {
clearstatcache();
$updated = false;
foreach ($inputs as $input) {
if ($input == '-') {
if (count($inputs) == 1) {
echo("lessc: during watching files is not possible to watch stdin\n");
exit;
}
else {
continue;
}
}
if (filemtime($input) > $lastAction) {
$updated = true;
break;
}
}
if ($updated) {
$lastAction = time();
$parser = new Less_Parser($env);
foreach ($inputs as $input) {
try {
$parser->parseFile($input, $rootpath);
}
catch (Exception $e) {
echo("lessc: " . $e->getMessage() . " \n");
continue; // Invalid processing
}
}
file_put_contents($output, $parser->getCss());
echo("lessc: output file recompiled\n");
}
sleep(1);
}
}
else {
$parser = new Less_Parser($env);
foreach ($inputs as $input) {
if ($input == '-') {
$content = file_get_contents('php://stdin');
$parser->parse($content);
}
else {
try {
$parser->parseFile($input);
}
catch (Exception $e) {
if (!$silent) {
echo("lessc: " . ((string)$e) . " \n");
}
}
}
}
if ($output) {
file_put_contents($output, $parser->getCss());
}
else {
echo $parser->getCss();
}
}

View File

@ -1 +0,0 @@
../php-parallel-lint/php-parallel-lint/parallel-lint

74
vendor/bin/parallel-lint vendored Executable file
View File

@ -0,0 +1,74 @@
#!/usr/bin/env php
<?php
/*
Copyright (c) 2014, Jakub Onderka
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies,
either expressed or implied, of the FreeBSD Project.
*/
if (!defined('PHP_VERSION_ID') || PHP_VERSION_ID < 50300) {
fwrite(STDERR, "PHP Parallel Lint requires PHP 5.3.0 or newer." . PHP_EOL);
exit(254);
}
$autoloadLocations = array(
getcwd() . '/vendor/autoload.php',
getcwd() . '/../../autoload.php',
__DIR__ . '/vendor/autoload.php',
__DIR__ . '/../vendor/autoload.php',
__DIR__ . '/../../../autoload.php',
__DIR__ . '/../../autoload.php',
);
if (class_exists('Phar') && Phar::running() !== '') {
// Running from a phar file. Prevent loading - potentially blocking - project autoload file.
$autoloadLocations = array(
__DIR__ . '/vendor/autoload.php',
);
}
$loaded = false;
foreach ($autoloadLocations as $autoload) {
if (is_file($autoload)) {
require_once($autoload);
$loaded = true;
}
}
if (!$loaded) {
fwrite(STDERR,
'You must set up the project dependencies, run the following commands:' . PHP_EOL .
'curl -s https://getcomposer.org/installer | php' . PHP_EOL .
'php composer.phar install' . PHP_EOL
);
exit(254);
}
require_once __DIR__ . '/src/polyfill.php';
$app = new JakubOnderka\PhpParallelLint\Application();
exit($app->run());

View File

@ -1 +0,0 @@
../nikic/php-parser/bin/php-parse

205
vendor/bin/php-parse vendored Executable file
View File

@ -0,0 +1,205 @@
#!/usr/bin/env php
<?php
foreach ([__DIR__ . '/../../../autoload.php', __DIR__ . '/../vendor/autoload.php'] as $file) {
if (file_exists($file)) {
require $file;
break;
}
}
ini_set('xdebug.max_nesting_level', 3000);
// Disable Xdebug var_dump() output truncation
ini_set('xdebug.var_display_max_children', -1);
ini_set('xdebug.var_display_max_data', -1);
ini_set('xdebug.var_display_max_depth', -1);
list($operations, $files, $attributes) = parseArgs($argv);
/* Dump nodes by default */
if (empty($operations)) {
$operations[] = 'dump';
}
if (empty($files)) {
showHelp("Must specify at least one file.");
}
$lexer = new PhpParser\Lexer\Emulative(['usedAttributes' => [
'startLine', 'endLine', 'startFilePos', 'endFilePos', 'comments'
]]);
$parser = (new PhpParser\ParserFactory)->create(
PhpParser\ParserFactory::PREFER_PHP7,
$lexer
);
$dumper = new PhpParser\NodeDumper([
'dumpComments' => true,
'dumpPositions' => $attributes['with-positions'],
]);
$prettyPrinter = new PhpParser\PrettyPrinter\Standard;
$traverser = new PhpParser\NodeTraverser();
$traverser->addVisitor(new PhpParser\NodeVisitor\NameResolver);
foreach ($files as $file) {
if (strpos($file, '<?php') === 0) {
$code = $file;
fwrite(STDERR, "====> Code $code\n");
} else {
if (!file_exists($file)) {
fwrite(STDERR, "File $file does not exist.\n");
exit(1);
}
$code = file_get_contents($file);
fwrite(STDERR, "====> File $file:\n");
}
if ($attributes['with-recovery']) {
$errorHandler = new PhpParser\ErrorHandler\Collecting;
$stmts = $parser->parse($code, $errorHandler);
foreach ($errorHandler->getErrors() as $error) {
$message = formatErrorMessage($error, $code, $attributes['with-column-info']);
fwrite(STDERR, $message . "\n");
}
if (null === $stmts) {
continue;
}
} else {
try {
$stmts = $parser->parse($code);
} catch (PhpParser\Error $error) {
$message = formatErrorMessage($error, $code, $attributes['with-column-info']);
fwrite(STDERR, $message . "\n");
exit(1);
}
}
foreach ($operations as $operation) {
if ('dump' === $operation) {
fwrite(STDERR, "==> Node dump:\n");
echo $dumper->dump($stmts, $code), "\n";
} elseif ('pretty-print' === $operation) {
fwrite(STDERR, "==> Pretty print:\n");
echo $prettyPrinter->prettyPrintFile($stmts), "\n";
} elseif ('json-dump' === $operation) {
fwrite(STDERR, "==> JSON dump:\n");
echo json_encode($stmts, JSON_PRETTY_PRINT), "\n";
} elseif ('var-dump' === $operation) {
fwrite(STDERR, "==> var_dump():\n");
var_dump($stmts);
} elseif ('resolve-names' === $operation) {
fwrite(STDERR, "==> Resolved names.\n");
$stmts = $traverser->traverse($stmts);
}
}
}
function formatErrorMessage(PhpParser\Error $e, $code, $withColumnInfo) {
if ($withColumnInfo && $e->hasColumnInfo()) {
return $e->getMessageWithColumnInfo($code);
} else {
return $e->getMessage();
}
}
function showHelp($error = '') {
if ($error) {
fwrite(STDERR, $error . "\n\n");
}
fwrite($error ? STDERR : STDOUT, <<<OUTPUT
Usage: php-parse [operations] file1.php [file2.php ...]
or: php-parse [operations] "<?php code"
Turn PHP source code into an abstract syntax tree.
Operations is a list of the following options (--dump by default):
-d, --dump Dump nodes using NodeDumper
-p, --pretty-print Pretty print file using PrettyPrinter\Standard
-j, --json-dump Print json_encode() result
--var-dump var_dump() nodes (for exact structure)
-N, --resolve-names Resolve names using NodeVisitor\NameResolver
-c, --with-column-info Show column-numbers for errors (if available)
-P, --with-positions Show positions in node dumps
-r, --with-recovery Use parsing with error recovery
-h, --help Display this page
Example:
php-parse -d -p -N -d file.php
Dumps nodes, pretty prints them, then resolves names and dumps them again.
OUTPUT
);
exit($error ? 1 : 0);
}
function parseArgs($args) {
$operations = [];
$files = [];
$attributes = [
'with-column-info' => false,
'with-positions' => false,
'with-recovery' => false,
];
array_shift($args);
$parseOptions = true;
foreach ($args as $arg) {
if (!$parseOptions) {
$files[] = $arg;
continue;
}
switch ($arg) {
case '--dump':
case '-d':
$operations[] = 'dump';
break;
case '--pretty-print':
case '-p':
$operations[] = 'pretty-print';
break;
case '--json-dump':
case '-j':
$operations[] = 'json-dump';
break;
case '--var-dump':
$operations[] = 'var-dump';
break;
case '--resolve-names':
case '-N';
$operations[] = 'resolve-names';
break;
case '--with-column-info':
case '-c';
$attributes['with-column-info'] = true;
break;
case '--with-positions':
case '-P':
$attributes['with-positions'] = true;
break;
case '--with-recovery':
case '-r':
$attributes['with-recovery'] = true;
break;
case '--help':
case '-h';
showHelp();
break;
case '--':
$parseOptions = false;
break;
default:
if ($arg[0] === '-') {
showHelp("Invalid operation $arg.");
} else {
$files[] = $arg;
}
}
}
return [$operations, $files, $attributes];
}

1
vendor/bin/phpcbf vendored
View File

@ -1 +0,0 @@
../squizlabs/php_codesniffer/bin/phpcbf

19
vendor/bin/phpcbf vendored Executable file
View File

@ -0,0 +1,19 @@
#!/usr/bin/env php
<?php
/**
* PHP Code Beautifier and Fixer fixes violations of a defined coding standard.
*
* @author Greg Sherwood <gsherwood@squiz.net>
* @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600)
* @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
*/
if (is_file(__DIR__.'/../autoload.php') === true) {
include_once __DIR__.'/../autoload.php';
} else {
include_once 'PHP/CodeSniffer/autoload.php';
}
$runner = new PHP_CodeSniffer\Runner();
$exitCode = $runner->runPHPCBF();
exit($exitCode);

1
vendor/bin/phpcs vendored
View File

@ -1 +0,0 @@
../squizlabs/php_codesniffer/bin/phpcs

19
vendor/bin/phpcs vendored Executable file
View File

@ -0,0 +1,19 @@
#!/usr/bin/env php
<?php
/**
* PHP_CodeSniffer detects violations of a defined coding standard.
*
* @author Greg Sherwood <gsherwood@squiz.net>
* @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600)
* @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
*/
if (is_file(__DIR__.'/../autoload.php') === true) {
include_once __DIR__.'/../autoload.php';
} else {
include_once 'PHP/CodeSniffer/autoload.php';
}
$runner = new PHP_CodeSniffer\Runner();
$exitCode = $runner->runPHPCS();
exit($exitCode);

1
vendor/bin/phpunit vendored
View File

@ -1 +0,0 @@
../phpunit/phpunit/phpunit

98
vendor/bin/phpunit vendored Executable file
View File

@ -0,0 +1,98 @@
#!/usr/bin/env php
<?php declare(strict_types=1);
/*
* This file is part of PHPUnit.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
if (!version_compare(PHP_VERSION, PHP_VERSION, '=')) {
fwrite(
STDERR,
sprintf(
'%s declares an invalid value for PHP_VERSION.' . PHP_EOL .
'This breaks fundamental functionality such as version_compare().' . PHP_EOL .
'Please use a different PHP interpreter.' . PHP_EOL,
PHP_BINARY
)
);
die(1);
}
if (version_compare('7.3.0', PHP_VERSION, '>')) {
fwrite(
STDERR,
sprintf(
'This version of PHPUnit requires PHP >= 7.3.' . PHP_EOL .
'You are using PHP %s (%s).' . PHP_EOL,
PHP_VERSION,
PHP_BINARY
)
);
die(1);
}
foreach (['dom', 'json', 'libxml', 'mbstring', 'tokenizer', 'xml', 'xmlwriter'] as $extension) {
if (extension_loaded($extension)) {
continue;
}
fwrite(
STDERR,
sprintf(
'PHPUnit requires the "%s" extension.' . PHP_EOL,
$extension
)
);
die(1);
}
if (!ini_get('date.timezone')) {
ini_set('date.timezone', 'UTC');
}
if (isset($GLOBALS['_composer_autoload_path'])) {
define('PHPUNIT_COMPOSER_INSTALL', $GLOBALS['_composer_autoload_path']);
unset($GLOBALS['_composer_autoload_path']);
} else {
foreach (array(__DIR__ . '/../../autoload.php', __DIR__ . '/../vendor/autoload.php', __DIR__ . '/vendor/autoload.php') as $file) {
if (file_exists($file)) {
define('PHPUNIT_COMPOSER_INSTALL', $file);
break;
}
}
unset($file);
}
if (!defined('PHPUNIT_COMPOSER_INSTALL')) {
fwrite(
STDERR,
'You need to set up the project dependencies using Composer:' . PHP_EOL . PHP_EOL .
' composer install' . PHP_EOL . PHP_EOL .
'You can learn all about Composer on https://getcomposer.org/.' . PHP_EOL
);
die(1);
}
$options = getopt('', array('prepend:'));
if (isset($options['prepend'])) {
require $options['prepend'];
}
unset($options);
require PHPUNIT_COMPOSER_INSTALL;
PHPUnit\TextUI\Command::main();

1
vendor/bin/pscss vendored
View File

@ -1 +0,0 @@
../scssphp/scssphp/bin/pscss

244
vendor/bin/pscss vendored Executable file
View File

@ -0,0 +1,244 @@
#!/usr/bin/env php
<?php
/**
* SCSSPHP
*
* @copyright 2012-2020 Leaf Corcoran
*
* @license http://opensource.org/licenses/MIT MIT
*
* @link http://scssphp.github.io/scssphp
*/
error_reporting(E_ALL);
if (version_compare(PHP_VERSION, '5.6') < 0) {
die('Requires PHP 5.6 or above');
}
include __DIR__ . '/../scss.inc.php';
use ScssPhp\ScssPhp\Compiler;
use ScssPhp\ScssPhp\Exception\SassException;
use ScssPhp\ScssPhp\OutputStyle;
use ScssPhp\ScssPhp\Parser;
use ScssPhp\ScssPhp\Version;
$style = null;
$loadPaths = [];
$dumpTree = false;
$inputFile = null;
$changeDir = false;
$encoding = false;
$sourceMap = false;
$embedSources = false;
$embedSourceMap = false;
/**
* Parse argument
*
* @param int $i
* @param string[] $options
*
* @return string|null
*/
function parseArgument(&$i, $options) {
global $argc;
global $argv;
if (! preg_match('/^(?:' . implode('|', (array) $options) . ')=?(.*)/', $argv[$i], $matches)) {
return;
}
if (strlen($matches[1])) {
return $matches[1];
}
if ($i + 1 < $argc) {
$i++;
return $argv[$i];
}
}
$arguments = [];
for ($i = 1; $i < $argc; $i++) {
if ($argv[$i] === '-?' || $argv[$i] === '-h' || $argv[$i] === '--help') {
$exe = $argv[0];
$HELP = <<<EOT
Usage: $exe [options] [input-file] [output-file]
Options include:
--help Show this message [-h, -?]
--continue-on-error [deprecated] Ignored
--debug-info [deprecated] Ignored [-g]
--dump-tree [deprecated] Dump formatted parse tree [-T]
--iso8859-1 Use iso8859-1 encoding instead of default utf-8
--line-numbers [deprecated] Ignored [--line-comments]
--load-path=PATH Set import path [-I]
--precision=N [deprecated] Ignored. (default 10) [-p]
--sourcemap Create source map file
--embed-sources Embed source file contents in source maps
--embed-source-map Embed the source map contents in CSS (default if writing to stdout)
--style=FORMAT Set the output style (compressed or expanded) [-s, -t]
--version Print the version [-v]
EOT;
exit($HELP);
}
if ($argv[$i] === '-v' || $argv[$i] === '--version') {
exit(Version::VERSION . "\n");
}
// Keep parsing --continue-on-error to avoid BC breaks for scripts using it
if ($argv[$i] === '--continue-on-error') {
// TODO report it as a warning ?
continue;
}
// Keep parsing it to avoid BC breaks for scripts using it
if ($argv[$i] === '-g' || $argv[$i] === '--debug-info') {
// TODO report it as a warning ?
continue;
}
if ($argv[$i] === '--iso8859-1') {
$encoding = 'iso8859-1';
continue;
}
// Keep parsing it to avoid BC breaks for scripts using it
if ($argv[$i] === '--line-numbers' || $argv[$i] === '--line-comments') {
// TODO report it as a warning ?
continue;
}
if ($argv[$i] === '--sourcemap') {
$sourceMap = true;
continue;
}
if ($argv[$i] === '--embed-sources') {
$embedSources = true;
continue;
}
if ($argv[$i] === '--embed-source-map') {
$embedSourceMap = true;
continue;
}
if ($argv[$i] === '-T' || $argv[$i] === '--dump-tree') {
$dumpTree = true;
continue;
}
$value = parseArgument($i, array('-t', '-s', '--style'));
if (isset($value)) {
$style = $value;
continue;
}
$value = parseArgument($i, array('-I', '--load-path'));
if (isset($value)) {
$loadPaths[] = $value;
continue;
}
// Keep parsing --precision to avoid BC breaks for scripts using it
$value = parseArgument($i, array('-p', '--precision'));
if (isset($value)) {
// TODO report it as a warning ?
continue;
}
$arguments[] = $argv[$i];
}
if (isset($arguments[0]) && file_exists($arguments[0])) {
$inputFile = $arguments[0];
$data = file_get_contents($inputFile);
} else {
$data = '';
while (! feof(STDIN)) {
$data .= fread(STDIN, 8192);
}
}
if ($dumpTree) {
$parser = new Parser($inputFile);
print_r(json_decode(json_encode($parser->parse($data)), true));
fwrite(STDERR, 'Warning: the --dump-tree option is deprecated. Use proper debugging tools instead.');
exit();
}
$scss = new Compiler();
if ($loadPaths) {
$scss->setImportPaths($loadPaths);
}
if ($style) {
if ($style === OutputStyle::COMPRESSED || $style === OutputStyle::EXPANDED) {
$scss->setOutputStyle($style);
} else {
fwrite(STDERR, "WARNING: the $style style is deprecated.\n");
$scss->setFormatter('ScssPhp\\ScssPhp\\Formatter\\' . ucfirst($style));
}
}
$outputFile = isset($arguments[1]) ? $arguments[1] : null;
$sourceMapFile = null;
if ($sourceMap) {
$sourceMapOptions = array(
'outputSourceFiles' => $embedSources,
);
if ($embedSourceMap || $outputFile === null) {
$scss->setSourceMap(Compiler::SOURCE_MAP_INLINE);
} else {
$sourceMapFile = $outputFile . '.map';
$sourceMapOptions['sourceMapWriteTo'] = $sourceMapFile;
$sourceMapOptions['sourceMapURL'] = basename($sourceMapFile);
$sourceMapOptions['sourceMapBasepath'] = getcwd();
$sourceMapOptions['sourceMapFilename'] = basename($outputFile);
$scss->setSourceMap(Compiler::SOURCE_MAP_FILE);
}
$scss->setSourceMapOptions($sourceMapOptions);
}
if ($encoding) {
$scss->setEncoding($encoding);
}
try {
$result = $scss->compileString($data, $inputFile);
} catch (SassException $e) {
fwrite(STDERR, 'Error: '.$e->getMessage()."\n");
exit(1);
}
if ($outputFile) {
file_put_contents($outputFile, $result->getCss());
if ($sourceMapFile !== null && $result->getSourceMap() !== null) {
file_put_contents($sourceMapFile, $result->getSourceMap());
}
} else {
echo $result->getCss();
}

1
vendor/bin/psysh vendored
View File

@ -1 +0,0 @@
../psy/psysh/bin/psysh

148
vendor/bin/psysh vendored Executable file
View File

@ -0,0 +1,148 @@
#!/usr/bin/env php
<?php
/*
* This file is part of Psy Shell.
*
* (c) 2012-2022 Justin Hileman
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
// Try to find an autoloader for a local psysh version.
// We'll wrap this whole mess in a Closure so it doesn't leak any globals.
call_user_func(function () {
$cwd = null;
// Find the cwd arg (if present)
$argv = isset($_SERVER['argv']) ? $_SERVER['argv'] : array();
foreach ($argv as $i => $arg) {
if ($arg === '--cwd') {
if ($i >= count($argv) - 1) {
fwrite(STDERR, 'Missing --cwd argument.' . PHP_EOL);
exit(1);
}
$cwd = $argv[$i + 1];
break;
}
if (preg_match('/^--cwd=/', $arg)) {
$cwd = substr($arg, 6);
break;
}
}
// Or fall back to the actual cwd
if (!isset($cwd)) {
$cwd = getcwd();
}
$cwd = str_replace('\\', '/', $cwd);
$chunks = explode('/', $cwd);
while (!empty($chunks)) {
$path = implode('/', $chunks);
$prettyPath = $path;
if (isset($_SERVER['HOME']) && $_SERVER['HOME']) {
$prettyPath = preg_replace('/^' . preg_quote($_SERVER['HOME'], '/') . '/', '~', $path);
}
// Find composer.json
if (is_file($path . '/composer.json')) {
if ($cfg = json_decode(file_get_contents($path . '/composer.json'), true)) {
if (isset($cfg['name']) && $cfg['name'] === 'psy/psysh') {
// We're inside the psysh project. Let's use the local Composer autoload.
if (is_file($path . '/vendor/autoload.php')) {
if (realpath($path) !== realpath(__DIR__ . '/..')) {
fwrite(STDERR, 'Using local PsySH version at ' . $prettyPath . PHP_EOL);
}
require $path . '/vendor/autoload.php';
}
return;
}
}
}
// Or a composer.lock
if (is_file($path . '/composer.lock')) {
if ($cfg = json_decode(file_get_contents($path . '/composer.lock'), true)) {
foreach (array_merge($cfg['packages'], $cfg['packages-dev']) as $pkg) {
if (isset($pkg['name']) && $pkg['name'] === 'psy/psysh') {
// We're inside a project which requires psysh. We'll use the local Composer autoload.
if (is_file($path . '/vendor/autoload.php')) {
if (realpath($path . '/vendor') !== realpath(__DIR__ . '/../../..')) {
fwrite(STDERR, 'Using local PsySH version at ' . $prettyPath . PHP_EOL);
}
require $path . '/vendor/autoload.php';
}
return;
}
}
}
}
array_pop($chunks);
}
});
// We didn't find an autoloader for a local version, so use the autoloader that
// came with this script.
if (!class_exists('Psy\Shell')) {
/* <<< */
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require __DIR__ . '/../vendor/autoload.php';
} elseif (is_file(__DIR__ . '/../../../autoload.php')) {
require __DIR__ . '/../../../autoload.php';
} else {
fwrite(STDERR, 'PsySH dependencies not found, be sure to run `composer install`.' . PHP_EOL);
fwrite(STDERR, 'See https://getcomposer.org to get Composer.' . PHP_EOL);
exit(1);
}
/* >>> */
}
// If the psysh binary was included directly, assume they just wanted an
// autoloader and bail early.
//
// Keep this PHP 5.3 and 5.4 code around for a while in case someone is using a
// globally installed psysh as a bin launcher for older local versions.
if (version_compare(PHP_VERSION, '5.3.6', '<')) {
$trace = debug_backtrace();
} elseif (version_compare(PHP_VERSION, '5.4.0', '<')) {
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
} else {
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);
}
if (Psy\Shell::isIncluded($trace)) {
unset($trace);
return;
}
// Clean up after ourselves.
unset($trace);
// If the local version is too old, we can't do this
if (!function_exists('Psy\bin')) {
$argv = isset($_SERVER['argv']) ? $_SERVER['argv'] : array();
$first = array_shift($argv);
if (preg_match('/php(\.exe)?$/', $first)) {
array_shift($argv);
}
array_unshift($argv, 'vendor/bin/psysh');
fwrite(STDERR, 'A local PsySH dependency was found, but it cannot be loaded. Please update to' . PHP_EOL);
fwrite(STDERR, 'the latest version, or run the local copy directly, e.g.:' . PHP_EOL);
fwrite(STDERR, PHP_EOL);
fwrite(STDERR, ' ' . implode(' ', $argv) . PHP_EOL);
exit(1);
}
// And go!
call_user_func(Psy\bin());

View File

@ -1 +0,0 @@
../symfony/var-dumper/Resources/bin/var-dump-server

67
vendor/bin/var-dump-server vendored Executable file
View File

@ -0,0 +1,67 @@
#!/usr/bin/env php
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
if ('cli' !== PHP_SAPI) {
throw new Exception('This script must be run from the command line.');
}
/**
* Starts a dump server to collect and output dumps on a single place with multiple formats support.
*
* @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
*/
use Psr\Log\LoggerInterface;
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Logger\ConsoleLogger;
use Symfony\Component\Console\Output\ConsoleOutput;
use Symfony\Component\VarDumper\Command\ServerDumpCommand;
use Symfony\Component\VarDumper\Server\DumpServer;
function includeIfExists(string $file): bool
{
return file_exists($file) && include $file;
}
if (
!includeIfExists(__DIR__ . '/../../../../autoload.php') &&
!includeIfExists(__DIR__ . '/../../vendor/autoload.php') &&
!includeIfExists(__DIR__ . '/../../../../../../vendor/autoload.php')
) {
fwrite(STDERR, 'Install dependencies using Composer.'.PHP_EOL);
exit(1);
}
if (!class_exists(Application::class)) {
fwrite(STDERR, 'You need the "symfony/console" component in order to run the VarDumper server.'.PHP_EOL);
exit(1);
}
$input = new ArgvInput();
$output = new ConsoleOutput();
$defaultHost = '127.0.0.1:9912';
$host = $input->getParameterOption(['--host'], $_SERVER['VAR_DUMPER_SERVER'] ?? $defaultHost, true);
$logger = interface_exists(LoggerInterface::class) ? new ConsoleLogger($output->getErrorOutput()) : null;
$app = new Application();
$app->getDefinition()->addOption(
new InputOption('--host', null, InputOption::VALUE_REQUIRED, 'The address the server should listen to', $defaultHost)
);
$app->add($command = new ServerDumpCommand(new DumpServer($host, $logger)))
->getApplication()
->setDefaultCommand($command->getName(), true)
->run($input, $output)
;

View File

@ -1 +0,0 @@
../dir1/subdir1