18 Commits

Author SHA1 Message Date
d6d086299f Создание прототипа главной страницы home-new, изменение стилей на остальных страницах. Требуется дальнейшее тестирование. логика выбора авто сделана 2025-07-04 18:51:57 +03:00
5b8ff6c02e Добавлены отладочные логи для отслеживания значений SSD в компонентах QuickDetailSection и UnitDetailsSection. Обновлены GraphQL запросы для включения поля ssd. Отключено кэширование для получения актуальных данных SSD в UnitDetailsSection. 2025-07-03 15:35:37 +03:00
513163b174 Добавлены новые компоненты Header и MobileMenuBottomSection, улучшено отображение информации о производителях. Упрощены классы и улучшена читаемость кода. Обновлены заголовки и сообщения об ошибках для лучшего пользовательского опыта. 2025-07-03 14:24:02 +03:00
8aa5ab007d Удалены модальные окна выбора бренда из компонентов PartDetailCard, KnotParts, VinPartCard и VinQuick. Вместо этого добавлена логика для перехода на страницу выбора бренда при клике на деталь. Обновлены компоненты для передачи параметров catalogCode и vehicleId. Исправлены типы и улучшена читаемость кода. 2025-07-02 18:03:37 +03:00
a9e4b74179 Обновлены компоненты VehicleSearchResults и InfoVin для поддержки отображения дополнительных атрибутов автомобиля. В VehicleSearchResults добавлена логика для отображения атрибутов из API, а в InfoVin реализован вывод основных параметров и tooltip с полной информацией об автомобиле. Обновлены GraphQL запросы для получения атрибутов. Исправлены типы для LaximoVehicleSearchResult. 2025-07-02 17:52:55 +03:00
35d807f234 Исправлено определение типов для inputRefs в компоненте WizardSearchForm: добавлено поддержка null для HTMLInputElement. 2025-07-02 17:02:31 +03:00
f71672dfa8 Исправление GraphQL ошибок: удаление несуществующих полей из запросов Laximo
- Удалены несуществующие поля doors, frame, frames, framefrom, frameto, engine1, engine2, attributes
- Обновлены GraphQL запросы для соответствия схеме
- Обновлены TypeScript типы LaximoVehicleSearchResult
- Сохранены улучшения UI из удаленного репозитория
- Исправлены ApolloError при поиске автомобилей
2025-07-02 16:36:27 +03:00
cfddecd686 Merge pull request '0207' (#11) from jule into main
Reviewed-on: #11
2025-07-02 16:31:18 +03:00
985ba8aeb1 0207 2025-07-02 16:28:37 +03:00
58991e4226 Обновлены компоненты для улучшения обработки групп быстрого поиска и деталей узлов. Внесены изменения в логику отображения подкатегорий в VinCategory и VinLeftbar, добавлены комментарии для ясности. Исправлены условия пропуска запросов и обновлены типы для поддержки SSD узлов. 2025-07-01 22:24:59 +03:00
1613732775 Изменен порт фронтенда в файле docker-compose.yml с использования переменной окружения на фиксированное значение 3001. Обновлены комментарии для ясности конфигурации. 2025-06-30 19:01:11 +03:00
66d443c58a Добавлены переменные окружения для порта фронтенда и режима работы, обновлены комментарии в файле docker-compose.yml для улучшения читаемости конфигурации. 2025-06-30 18:31:49 +03:00
8e7c398b95 Обновлены компоненты для обработки необязательных свойств и добавлены заглушки для случаев отсутствия данных о транспортном средстве и деталях. Изменены условия пропуска запросов в компонентах InfoVin, KnotIn, KnotParts, VinCategory и VinLeftbar. 2025-06-30 17:42:36 +03:00
6af1ed325c Merge pull request 'ура епте' (#10) from end into main
Reviewed-on: #10
2025-06-30 17:29:00 +03:00
1f1ea8baaf ура епте 2025-06-30 17:28:15 +03:00
8a953d32ae Merge pull request '1452' (#9) from vinleftbaandsearch into main
Reviewed-on: #9
2025-06-30 14:57:52 +03:00
69ccc786ea 1452 2025-06-30 14:52:30 +03:00
8cae029d7f Обновлены запросы GraphQL для поиска: заменен SEARCH_LAXIMO_FULLTEXT на GET_LAXIMO_FULLTEXT_SEARCH в компонентах FulltextSearchSection и VinLeftbar. Удален устаревший запрос SEARCH_LAXIMO_FULLTEXT из файла graphql.ts. 2025-06-30 00:48:55 +03:00
63 changed files with 4004 additions and 1761 deletions

View File

@ -10,15 +10,26 @@ services:
NEXT_PUBLIC_UPLOAD_URL: ${NEXT_PUBLIC_UPLOAD_URL:-http://localhost:4000/upload}
NEXT_PUBLIC_MAINTENANCE_MODE: ${NEXT_PUBLIC_MAINTENANCE_MODE:-false}
NEXT_PUBLIC_YANDEX_MAPS_API_KEY: ${NEXT_PUBLIC_YANDEX_MAPS_API_KEY}
FRONTEND_PORT: ${FRONTEND_PORT:-3000}
NODE_ENV: ${NODE_ENV:-production}
container_name: protekauto-frontend
ports:
- "3001:3000"
environment:
- NODE_ENV=production
# Порт приложения
- FRONTEND_PORT=${FRONTEND_PORT:-3000}
# Окружение
- NODE_ENV=${NODE_ENV:-production}
# API конфигурация
- NEXT_PUBLIC_CMS_GRAPHQL_URL=${NEXT_PUBLIC_CMS_GRAPHQL_URL:-http://localhost:4000/graphql}
- NEXT_PUBLIC_UPLOAD_URL=${NEXT_PUBLIC_UPLOAD_URL:-http://localhost:4000/upload}
- NEXT_PUBLIC_MAINTENANCE_MODE=${NEXT_PUBLIC_MAINTENANCE_MODE:-false}
# Yandex Maps API
- NEXT_PUBLIC_YANDEX_MAPS_API_KEY=${NEXT_PUBLIC_YANDEX_MAPS_API_KEY}
restart: unless-stopped
networks:
- protekauto-network

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6836c4d0a840357cccfad382" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6836c4d0a840357cccfad382" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>About</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6849d22099f3f43006edf7a6" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6849d22099f3f43006edf7a6" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>brand</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6834155694a300ddf57ddb5f" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6834155694a300ddf57ddb5f" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Search result</title>
@ -228,7 +228,7 @@
<h1 class="heading-bi">Аккумуляторная батарея SPEEDMATE AGM 60А</h1>
<div class="div-block-127">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
</div>
@ -439,7 +439,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -468,7 +468,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -497,7 +497,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -526,7 +526,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -555,7 +555,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -584,7 +584,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6835795623b8021d75a042a1" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6835795623b8021d75a042a1" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Cart Step 2</title>
@ -214,7 +214,7 @@
<a href="#" class="button-for-mobile-menu-block w-inline-block">
<div class="block-for-moble-menu-icon">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="name-mobile-menu-item">Избранное</div>
@ -829,7 +829,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -858,7 +858,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -887,7 +887,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -916,7 +916,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -945,7 +945,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -974,7 +974,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="68341f3cfbb7c099cf08ee05" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="68341f3cfbb7c099cf08ee05" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Cart</title>
@ -214,7 +214,7 @@
<a href="#" class="button-for-mobile-menu-block w-inline-block">
<div class="block-for-moble-menu-icon">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="name-mobile-menu-item">Избранное</div>
@ -1123,7 +1123,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -1152,7 +1152,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -1181,7 +1181,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -1210,7 +1210,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -1239,7 +1239,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -1268,7 +1268,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="68258c4d57e731a25c8493c1" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="68258c4d57e731a25c8493c1" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Catalog</title>
@ -214,7 +214,7 @@
<a href="#" class="button-for-mobile-menu-block w-inline-block">
<div class="block-for-moble-menu-icon">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="name-mobile-menu-item">Избранное</div>
@ -478,7 +478,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -507,7 +507,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -536,7 +536,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -565,7 +565,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -594,7 +594,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -623,7 +623,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -652,7 +652,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -681,7 +681,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -710,7 +710,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -739,7 +739,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -768,7 +768,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -797,7 +797,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -826,7 +826,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -855,7 +855,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -884,7 +884,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -913,7 +913,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -942,7 +942,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -971,7 +971,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -1000,7 +1000,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -1029,7 +1029,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6800f8b281fe71c1c06a5b41" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6800f8b281fe71c1c06a5b41" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Protek</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="68455d9b5af7aa0e7725a609" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="68455d9b5af7aa0e7725a609" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>contacts</title>

View File

@ -4601,7 +4601,6 @@ body {
justify-content: flex-start;
align-self: auto;
align-items: flex-start;
margin-bottom: 80px;
display: flex;
}
@ -6533,6 +6532,14 @@ body {
margin-left: 30px;
}
.flex-block-108-copy {
grid-column-gap: 18px;
grid-row-gap: 18px;
justify-content: space-between;
align-items: flex-start;
overflow: scroll;
}
@media screen and (min-width: 1440px) {
.body {
--_fonts---font-family: Onest, sans-serif;
@ -6838,6 +6845,10 @@ body {
margin-top: 0;
}
.ci1:hover {
background-color: var(--light-blue);
}
.vinleftbar {
width: 320px;
}
@ -6855,18 +6866,32 @@ body {
max-width: none;
}
.flex-block-118 {
grid-column-gap: 0px;
grid-row-gap: 0px;
}
.heading-20 {
font-size: 48px;
}
.flex-block-119 {
width: 520px;
width: 480px;
}
.bestpriceitem.end {
display: flex;
}
.flex-block-121 {
grid-column-gap: 15px;
grid-row-gap: 15px;
}
.ci2:hover, .ci3:hover, .ci4:hover, .ci5:hover, .ci6:hover, .ci7:hover, .ci8:hover, .ci9:hover {
background-color: var(--light-blue);
}
.flex-block-124 {
width: 540px;
}
@ -7251,6 +7276,7 @@ body {
}
.slider {
align-self: stretch;
height: auto;
display: flex;
}
@ -7348,6 +7374,8 @@ body {
flex-flow: column;
justify-content: space-between;
align-items: flex-start;
padding-top: 40px;
padding-bottom: 40px;
}
.div-block-12, .div-block-12.small {
@ -8032,8 +8060,12 @@ body {
margin-top: 0;
}
.code-embed-15 {
width: 160px;
}
.topnav {
margin-left: 0;
margin-left: 190px;
}
.topmenub {
@ -8061,6 +8093,10 @@ body {
padding-bottom: 40px;
}
.div-block-128 {
background-position: 0%;
}
.catnav {
padding-left: 30px;
padding-right: 30px;
@ -8089,10 +8125,19 @@ body {
flex-flow: row;
}
.supportheading {
font-size: 30px;
}
.image-5-copy {
object-fit: contain;
}
.image-27 {
margin-bottom: -280px;
margin-left: 530px;
}
.container-copy, .container-copy.nav, .container-copy.info {
padding-left: 0;
padding-right: 0;
@ -8324,6 +8369,10 @@ body {
align-items: center;
}
.flex-block-26 {
min-width: 120px;
}
.container2 {
padding: 20px 30px;
}
@ -8976,6 +9025,18 @@ body {
padding-bottom: 90px;
}
.div-block-129 {
justify-content: flex-start;
align-self: stretch;
align-items: center;
}
.flex-block-108 {
flex-flow: column;
justify-content: space-between;
align-items: center;
}
.container-vin {
padding-top: 20px;
}
@ -8989,7 +9050,24 @@ body {
padding-bottom: 90px;
}
.inbt, .news-index-block-copy {
.inbt {
grid-column-gap: 20px;
grid-row-gap: 20px;
}
.flex-block-123 {
flex-flow: column;
}
.flex-block-124 {
flex: 1;
}
.image-27 {
margin-left: 330px;
}
.news-index-block-copy {
grid-column-gap: 20px;
grid-row-gap: 20px;
}
@ -9349,7 +9427,7 @@ body {
}
.heading_news {
line-height: 28px;
line-height: 20px;
}
.text-block-20 {
@ -9881,6 +9959,10 @@ body {
padding-bottom: 5px;
}
.icon-setting {
border: 0 #000;
}
.section-3 {
padding-left: 15px;
padding-right: 15px;
@ -10246,11 +10328,16 @@ body {
}
.favcardcat {
border-style: none;
width: 30px;
height: 30px;
margin-top: 0;
}
.code-embed-15 {
display: none;
}
.topnav {
margin-left: 0;
top: 58px;
@ -10319,6 +10406,17 @@ body {
padding: 40px 0 90px;
}
.div-block-129 {
justify-content: flex-start;
align-items: flex-start;
width: 100%;
height: auto;
}
.flex-block-109 {
margin-bottom: 10px;
}
.saletag {
padding-top: 3px;
padding-bottom: 3px;
@ -10326,6 +10424,15 @@ body {
top: -15px;
}
.flex-block-110 {
grid-column-gap: 10px;
grid-row-gap: 10px;
flex-flow: column-reverse;
justify-content: flex-start;
align-items: flex-start;
margin-bottom: 20px;
}
.catnav {
padding-left: 15px;
padding-right: 15px;
@ -10452,16 +10559,17 @@ body {
}
.submit-button-copy {
align-self: stretch;
padding: 15px 30px;
align-self: auto;
padding: 15px 25px;
}
.supportheading {
font-size: var(--_fonts---font-size--heading-2);
width: 220px;
}
.image-5-copy {
width: 100%;
width: 60%;
height: 100%;
min-height: auto;
}
@ -10470,6 +10578,10 @@ body {
margin-bottom: 10px;
}
.image-27 {
display: none;
}
.container-copy {
max-width: 100%;
margin-left: 0;

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6800f8b281fe71c1c06a5aec" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6800f8b281fe71c1c06a5aec" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Protek</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6800f8b281fe71c1c06a5b04" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6800f8b281fe71c1c06a5b04" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Protek</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6800f8b281fe71c1c06a5af0" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6800f8b281fe71c1c06a5af0" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Protek</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="683564cb54d9f20bcc1ef4b9" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="683564cb54d9f20bcc1ef4b9" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Favorite</title>
@ -605,7 +605,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -634,7 +634,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -663,7 +663,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -692,7 +692,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -721,7 +721,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="685be6dfd87db2e01cbdb7a2" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="685be6dfd87db2e01cbdb7a2" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Home New</title>
@ -20,7 +20,7 @@
<section class="topmenuh">
<div class="w-layout-blockcontainer container nav w-container">
<div class="w-layout-hflex flex-block-93">
<div class="code-embed-15 w-embed"><svg width="190" height="72" viewbox="0 0 190 72" fill="none" xmlns="http://www.w3.org/2000/svg">
<div class="code-embed-15 w-embed"><svg width="currentwidht" height="currentheight" viewbox="0 0 190 72" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M138.377 29.5883V23.1172H112.878V29.5883H138.377Z" fill="white"></path>
<path d="M107.423 18.1195C109.21 18.1195 110.658 16.6709 110.658 14.884C110.658 13.097 109.21 11.6484 107.423 11.6484L88.395 11.6484C86.6082 11.6484 85.1596 13.097 85.1596 14.884C85.1596 16.6709 86.6082 18.1195 88.395 18.1195H107.423Z" fill="white"></path>
<path d="M130.288 34.2491C128.773 35.3865 126.89 36.0628 124.852 36.0628C119.849 36.0628 115.791 32.0052 115.791 27.0013C115.791 21.9974 119.849 17.9399 124.852 17.9399C129.856 17.9399 133.913 21.9974 133.913 27.0013C133.913 27.9022 133.779 28.7696 133.536 29.5893H140.169C140.31 28.7481 140.384 27.8831 140.384 27.0013C140.384 18.4226 133.431 11.4688 124.852 11.4688C116.274 11.4688 109.32 18.4226 109.32 27.0013C109.32 35.5801 116.274 42.5339 124.852 42.5339C129.249 42.5339 133.218 40.7058 136.045 37.769L130.288 34.2491Z" fill="white"></path>
@ -284,7 +284,7 @@
</section>
<section class="catnav">
<div class="w-layout-blockcontainer batd w-container">
<div class="w-layout-hflex flex-block-108">
<div class="w-layout-hflex flex-block-108-copy">
<div class="ci1">
<div class="text-block-54-copy">Детали для ТО</div>
</div>
@ -456,7 +456,7 @@
<div class="w-layout-vflex bestpriceitem">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="imgitembp"><img width="Auto" height="Auto" alt="" src="images/162615.webp" loading="lazy" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -482,7 +482,7 @@
<div class="w-layout-vflex bestpriceitem">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="imgitembp"><img width="Auto" height="Auto" alt="" src="images/162615.webp" loading="lazy" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -508,7 +508,7 @@
<div class="w-layout-vflex bestpriceitem">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="imgitembp"><img width="Auto" height="Auto" alt="" src="images/162615.webp" loading="lazy" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -534,7 +534,7 @@
<div class="w-layout-vflex bestpriceitem">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="imgitembp"><img width="Auto" height="Auto" alt="" src="images/162615.webp" loading="lazy" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -560,7 +560,7 @@
<div class="w-layout-vflex bestpriceitem">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="imgitembp"><img width="Auto" height="Auto" alt="" src="images/162615.webp" loading="lazy" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -597,7 +597,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -626,7 +626,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -655,7 +655,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -684,7 +684,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -713,7 +713,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -742,7 +742,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -791,7 +791,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -820,7 +820,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -849,7 +849,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -878,7 +878,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -907,7 +907,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -936,7 +936,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -970,7 +970,7 @@
<div class="w-layout-blockcontainer container-copy w-container"><img src="images/support_img.png" loading="lazy" alt="" class="image-27">
<div class="div-block-11">
<div class="w-layout-vflex flex-block-30">
<h3 class="supportheading">МЫ ВСЕГДА РАДЫ ПОМОЧЬ</h3>
<h3 class="supportheading">МЫ ВСЕГДА РАДЫ ПОМОЧЬ</h3>
<div class="text-block-19">Если вам нужна помощь с подбором автозапчастей, то воспользуйтесь формой VIN-запроса. Введите идентификационный номер (VIN) вашего автомобиля — и мы найдём нужную деталь.</div>
</div>
<a href="#" class="submit-button-copy w-button">Отправить VIN-запрос</a>
@ -1173,6 +1173,51 @@
</div>
</div>
</footer>
<nav class="mobile-menu-buttom-section">
<div class="w-layout-blockcontainer mobile-menu-bottom w-container">
<div class="w-layout-hflex flex-block-87">
<a href="#" class="button-for-mobile-menu-block w-inline-block">
<div class="block-for-moble-menu-icon">
<div class="icon-setting w-embed"><svg width="30" height="30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M27 10.8V24H24.6V13.2H5.4V24H3V10.8L15 6L27 10.8ZM23.4 14.4H6.6V16.8H23.4V14.4ZM23.4 18H6.6V20.4H23.4V18Z" fill="currentColor"></path>
<path d="M6.6 21.6H23.4V24H6.6V21.6Z" fill="currentColor"></path>
</svg></div>
</div>
<div class="name-mobile-menu-item">Гараж</div>
</a>
<a href="#" class="button-for-mobile-menu-block w-inline-block">
<div class="block-for-moble-menu-icon">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="name-mobile-menu-item">Избранное</div>
</a>
<a href="#" class="button-for-mobile-menu-block w-inline-block">
<div class="block-for-moble-menu-icon">
<div class="icon-setting w-embed"><svg width="currentWidht" height="currentHeight" viewbox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.1998 22.2C8.8798 22.2 7.81184 23.28 7.81184 24.6C7.81184 25.92 8.8798 27 10.1998 27C11.5197 27 12.5997 25.92 12.5997 24.6C12.5997 23.28 11.5197 22.2 10.1998 22.2ZM3 3V5.4H5.39992L9.71977 14.508L8.09982 17.448C7.90783 17.784 7.79984 18.18 7.79984 18.6C7.79984 19.92 8.8798 21 10.1998 21H24.5993V18.6H10.7037C10.5357 18.6 10.4037 18.468 10.4037 18.3L10.4397 18.156L11.5197 16.2H20.4594C21.3594 16.2 22.1513 15.708 22.5593 14.964L26.8552 7.176C26.9542 6.99286 27.004 6.78718 26.9997 6.57904C26.9955 6.37089 26.9373 6.16741 26.8309 5.98847C26.7245 5.80952 26.5736 5.66124 26.3927 5.55809C26.2119 5.45495 26.0074 5.40048 25.7992 5.4H8.05183L6.92387 3H3ZM22.1993 22.2C20.8794 22.2 19.8114 23.28 19.8114 24.6C19.8114 25.92 20.8794 27 22.1993 27C23.5193 27 24.5993 25.92 24.5993 24.6C24.5993 23.28 23.5193 22.2 22.1993 22.2Z" fill="currentColor"></path>
</svg></div>
<div class="pcs-info">
<div class="text-block-39">12</div>
</div>
</div>
<div class="name-mobile-menu-item">Корзина</div>
</a>
<a href="#" class="button-for-mobile-menu-block w-inline-block">
<div class="block-for-moble-menu-icon">
<div class="icon-setting w-embed"><svg width="currentwidht" height="currentheight" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15 3C8.376 3 3 8.376 3 15C3 21.624 8.376 27 15 27C21.624 27 27 21.624 27 15C27 8.376 21.624 3 15 3ZM15 7.8C17.316 7.8 19.2 9.684 19.2 12C19.2 14.316 17.316 16.2 15 16.2C12.684 16.2 10.8 14.316 10.8 12C10.8 9.684 12.684 7.8 15 7.8ZM15 24.6C12.564 24.6 9.684 23.616 7.632 21.144C9.73419 19.4955 12.3285 18.5995 15 18.5995C17.6715 18.5995 20.2658 19.4955 22.368 21.144C20.316 23.616 17.436 24.6 15 24.6Z" fill="currentColor"></path>
</svg></div>
<div class="info-satus">
<div class="text-block-39">!</div>
</div>
</div>
<div class="name-mobile-menu-item">Кабинет</div>
</a>
</div>
</div>
</nav>
<script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=6800f7e35fcfd4ca3b323269" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script src="js/webflow.js" type="text/javascript"></script>
</body>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6800f7e35fcfd4ca3b3232bc" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6800f7e35fcfd4ca3b3232bc" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Protek</title>
@ -491,7 +491,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -520,7 +520,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -549,7 +549,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -578,7 +578,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -607,7 +607,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -636,7 +636,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -690,7 +690,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -719,7 +719,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -748,7 +748,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -777,7 +777,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -806,7 +806,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -835,7 +835,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">

View File

@ -273,7 +273,7 @@ spurious results.`)}}return!1};class z{constructor(e,t="GraphQL request",n={line
count
product {
id
f_name_: name
f_name_
}
sku {
id
@ -285,7 +285,7 @@ spurious results.`)}}return!1};class z{constructor(e,t="GraphQL request",n={line
}
}
}
`,w=(e,t)=>e.query({query:N,variables:{finalizedOrder:t}}).then(e=>e?.data?.database?.commerceOrder),R=(e,t)=>{if("undefined"==typeof fbq&&"undefined"==typeof gtag)return;let n={};try{let e=window.localStorage.getItem("wf-seen-orders");e&&(n=JSON.parse(e))}catch(e){return}n[t.orderId]||w(e,t).then(e=>{if(!e)return;let{decimalValue:r,unit:i}=e.total;"undefined"!=typeof fbq&&"function"==typeof fbq&&fbq("track","Purchase",{value:r,currency:i,content_ids:(e.userItems||[]).map(e=>e.sku.id),content_type:"product",contents:(e.userItems||[]).map(e=>({id:e.sku.id,quantity:e.count,item_price:e.price.decimalValue}))}),"undefined"!=typeof gtag&&"function"==typeof gtag&&gtag("event","purchase",{transaction_id:e.id,value:r,currency:i,items:(e.userItems||[]).map(e=>({id:e.sku.id,name:e.product.f_name_,quantity:e.count,price:e.price.decimalValue}))}),n[t.orderId]=!0;try{window.localStorage.setItem("wf-seen-orders",JSON.stringify(n))}catch(e){return}})}},14155:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PillGroups",{enumerable:!0,get:function(){return a}});let r=n(10873),i=Object.freeze({RETURN:13,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40});class a{form;pillGroups;onSelect;static hasPillGroups(e){return e.querySelectorAll(`[${r.DATA_ATTR_NODE_TYPE}="${r.NODE_TYPE_COMMERCE_ADD_TO_CART_PILL_GROUP}"]`).length>0}constructor(e,t){this.form=e,this.pillGroups={},this.onSelect=t}init(){for(let e of this.form.querySelectorAll(`[${r.DATA_ATTR_NODE_TYPE}="${r.NODE_TYPE_COMMERCE_ADD_TO_CART_PILL_GROUP}"]`)){let t=new o(e,this.onSelect,this);t.init(),this.pillGroups[t.optionSetId]=t}}setSelectedPillsForSkuValues(e){for(let t of Object.keys(e)){let n=e[t],r=this.pillGroups[t];if(r){let e=r.findPillById(String(n));r.updatePillsWithNewSelected(e)}}}}class o{node;optionSetId;onSelect;pills;groups;constructor(e,t,n){this.node=e,this.optionSetId=String(e.getAttribute(r.DATA_ATTR_COMMERCE_OPTION_SET_ID)),this.onSelect=t,this.pills=[],this.groups=n}get firstEnabledPill(){return this.pills.find(e=>!1===e.disabled)}get value(){let e=this.pills.find(e=>!0===e.checked);return e?e.value:""}get options(){return this.pills}set selectedIndex(e){let t=this.pills[e]||null;this.emitSelected(t)}getAttribute(e){if(e===r.DATA_ATTR_COMMERCE_OPTION_SET_ID)return this.optionSetId;throw Error(`PillGroup: Attempted to fetch unsupported attribute ${e}`)}init(){let e=this.node.querySelectorAll(`[${r.DATA_ATTR_NODE_TYPE}="${r.NODE_TYPE_COMMERCE_ADD_TO_CART_PILL}"]`);this.pills=Array.from(e).map(e=>{let t=new s(e,this);return t.init(),t}),this.firstEnabledPill&&(this.firstEnabledPill.tabIndex=0),this.node._wfPillGroup=this}findPillById(e){return this.pills.find(t=>t.optionId===e)}updatePillsWithNewSelected(e){for(let e of this.pills)e.tabIndex=-1,e.checked=!1;e instanceof s?(e.tabIndex=0,e.checked=!0):this.firstEnabledPill&&(this.firstEnabledPill.tabIndex=0)}emitSelected(e){this.onSelect({optionId:e.optionId,optionSetId:this.optionSetId,groups:Object.values(this.groups.pillGroups)})}traverseAndEmitSelected(e,t){let n,r=this.pills.indexOf(e),i=!1,a=r;for(;!i;){if("previous"===t)(n=a-1)<0&&(n=this.pills.length-1);else if("next"===t)(n=a+1)===this.pills.length&&(n=0);else throw Error(`Unknown pill traversal direction "${t}", use "previous" or "next"`);if(n===r)break;let e=this.pills[n];e.disabled?a=n:(this.emitSelected(e),e.focus(),i=!0)}}}class s{node;optionId;group;constructor(e,t){this.node=e,this.optionId=String(this.node.getAttribute("data-option-id")),this.group=t}init(){this.tabIndex=-1,this.checked=!1,this.node.addEventListener("keydown",this.handleKeyDown),this.node.addEventListener("click",this.handleClick)}get tabIndex(){return this.node.tabIndex}set tabIndex(e){this.node.tabIndex=e}get value(){return this.optionId}get checked(){return"true"===this.node.getAttribute("aria-checked")}set checked(e){this.node.setAttribute("aria-checked",String(e)),e?this.node.classList.add("w--ecommerce-pill-selected"):this.node.classList.remove("w--ecommerce-pill-selected")}get disabled(){return"true"===this.node.getAttribute("aria-disabled")}set disabled(e){this.node.setAttribute("aria-disabled",String(e)),e?(this.node.classList.add("w--ecommerce-pill-disabled"),this.checked=!1,this.tabIndex=-1):this.node.classList.remove("w--ecommerce-pill-disabled")}get enabled(){return!this.disabled}set enabled(e){this.disabled=!e}focus(){this.node.focus()}handleKeyDown=e=>{let t=!1;if(!e.altKey&&!e.metaKey){switch(e.keyCode){case i.RETURN:case i.SPACE:this.handleClick(),t=!0;break;case i.UP:case i.LEFT:this.group.traverseAndEmitSelected(this,"previous"),t=!0;break;case i.DOWN:case i.RIGHT:this.group.traverseAndEmitSelected(this,"next"),t=!0}t&&(e.stopPropagation(),e.preventDefault())}};handleClick=()=>{this.disabled||this.checked||(this.focus(),this.group.emitSelected(this))}}},85986:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n}});let n={log:(...e)=>{},error:(...e)=>{}}},48873:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i}});let n=(e,t=[])=>null==e?t:t.concat(n(Object.getPrototypeOf(e))).concat(Object.keys(e)),r=(e,t)=>{let r=n(e).filter(e=>"currentTarget"!==e).reduce((t,n)=>(t[n]="function"==typeof e[n]?{value:(...t)=>e[n](...t)}:{get:()=>e[n]},t),{});return Object.create(e,{currentTarget:{value:t},...r})};class i{apolloClient;stripeStore;eventHandlers;constructor(e,t){this.eventHandlers={},this.apolloClient=e,this.stripeStore=t}on=(e,t,n)=>{let r=this.eventHandlers[e]instanceof Array?this.eventHandlers[e]:[];return this.eventHandlers[e]=[...r,this.createHandlerProxy(e,t,n)],this};createHandlerProxy=(e,t,n)=>e=>{let i=t(e),a=i instanceof Element?r(e,i):e;i&&n(a,this.apolloClient,this.stripeStore)};attachHandlers=e=>(Object.keys(this.eventHandlers).forEach(t=>{this.eventHandlers[t].forEach(n=>e.addEventListener(t,n,!0))}),this);removeHandlers=e=>(Object.keys(this.eventHandlers).forEach(t=>{this.eventHandlers[t].forEach(n=>e.removeEventListener(t,n,!0))}),this)}},2330:function(e,t,n){"use strict";let r,i,a;Object.defineProperty(t,"__esModule",{value:!0});var o={design:function(){return L},destroy:function(){return O},init:function(){return E},preview:function(){return v}};for(var s in o)Object.defineProperty(t,s,{enumerable:!0,get:o[s]});n(84037),n(68259),n(60033),n(9246),n(67321),n(52897),n(233),n(49754),n(30971),n(62374),n(55152),n(35273),n(30172),n(65723),n(48258),n(89433);let c=n(25195),u=b(n(48873)),l=b(n(84303)),d=b(n(82150)),f=b(n(82333)),p=b(n(45870)),m=b(n(94492)),_=n(5841),h=n(54556);n(67304),n(14362);let M=n(17696),y=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=A(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(r,a,o):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r}(n(86365));function b(e){return e&&e.__esModule?e:{default:e}}function A(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(A=function(e){return e?n:t})(e)}function g(){r&&r.attachHandlers(window)}function T(){r&&r.removeHandlers(window)}function E({siteId:e}){i=(0,c.createApolloClient)({path:window.Webflow.env("design")||window.Webflow.env("preview")?`/api/v2/sites/${e}/apollo`:"/.wf_graphql/apollo",retryConfig:{maxAttempts:5},useCsrf:!0}),a=new _.StripeStore(document),r=new u.default(i,a),l.default.register(r),d.default.register(r),f.default.register(r),p.default.register(r),m.default.register(r),y.default.register(r),(0,M.initializeStripeElements)(a),T(),g(),(0,h.triggerRender)(null,!0),window.Webflow.env()||window.Webflow.load((0,y.renderPaypalButtons)(i))}function v(){T(),g(),(0,h.triggerRender)(null,!0)}function L(){T(),i&&i.store&&i.resetStore()}function O(){T()}},45870:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={default:function(){return m},register:function(){return p}};for(var i in r)Object.defineProperty(t,i,{enumerable:!0,get:r[i]});let a=l(n(28160)),o=l(n(26882)),s=n(54556),c=n(91898),u=n(10873);function l(e){return e&&e.__esModule?e:{default:e}}let d=(e,t)=>{(0,c.renderTree)(e,t)},f=(e,t)=>{if(window.Webflow.env("design")||window.Webflow.env("preview")||!(e instanceof CustomEvent&&e.type===u.RENDER_TREE_EVENT))return;let n=[],{detail:r}=e;null!=r&&r.error&&n.push(r.error);let i=(0,s.findElementByNodeType)(u.NODE_TYPE_COMMERCE_ORDER_CONFIRMATION_WRAPPER);if(!i)return;let{orderId:c,token:l}=o.default.parse(window.location.search.substring(1));if(!c||!l)return;let f={orderId:c,token:l};(0,s.trackOrder)(t,f);let p=(0,s.findAllElementsByNodeType)(u.NODE_TYPE_COMMERCE_ORDER_CONFIRMATION_WRAPPER);t.query({query:(0,a.default)`
`,w=(e,t)=>e.query({query:N,variables:{finalizedOrder:t}}).then(e=>e?.data?.database?.commerceOrder),R=(e,t)=>{if("undefined"==typeof fbq&&"undefined"==typeof gtag)return;let n={};try{let e=window.localStorage.getItem("wf-seen-orders");e&&(n=JSON.parse(e))}catch(e){return}n[t.orderId]||w(e,t).then(e=>{if(!e)return;let{decimalValue:r,unit:i}=e.total;"undefined"!=typeof fbq&&"function"==typeof fbq&&fbq("track","Purchase",{value:r,currency:i,content_ids:(e.userItems||[]).map(e=>e.sku.id),content_type:"product",contents:(e.userItems||[]).map(e=>({id:e.sku.id,quantity:e.count,item_price:e.price.decimalValue}))}),"undefined"!=typeof gtag&&"function"==typeof gtag&&gtag("event","purchase",{transaction_id:e.id,value:r,currency:i,items:(e.userItems||[]).map(e=>({id:e.sku.id,name:e.product.f_name_,quantity:e.count,price:e.price.decimalValue}))}),n[t.orderId]=!0;try{window.localStorage.setItem("wf-seen-orders",JSON.stringify(n))}catch(e){return}})}},14155:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PillGroups",{enumerable:!0,get:function(){return a}});let r=n(10873),i=Object.freeze({RETURN:13,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40});class a{form;pillGroups;onSelect;static hasPillGroups(e){return e.querySelectorAll(`[${r.DATA_ATTR_NODE_TYPE}="${r.NODE_TYPE_COMMERCE_ADD_TO_CART_PILL_GROUP}"]`).length>0}constructor(e,t){this.form=e,this.pillGroups={},this.onSelect=t}init(){for(let e of this.form.querySelectorAll(`[${r.DATA_ATTR_NODE_TYPE}="${r.NODE_TYPE_COMMERCE_ADD_TO_CART_PILL_GROUP}"]`)){let t=new o(e,this.onSelect,this);t.init(),this.pillGroups[t.optionSetId]=t}}setSelectedPillsForSkuValues(e){for(let t of Object.keys(e)){let n=e[t],r=this.pillGroups[t];if(r){let e=r.findPillById(String(n));r.updatePillsWithNewSelected(e)}}}}class o{node;optionSetId;onSelect;pills;groups;constructor(e,t,n){this.node=e,this.optionSetId=String(e.getAttribute(r.DATA_ATTR_COMMERCE_OPTION_SET_ID)),this.onSelect=t,this.pills=[],this.groups=n}get firstEnabledPill(){return this.pills.find(e=>!1===e.disabled)}get value(){let e=this.pills.find(e=>!0===e.checked);return e?e.value:""}get options(){return this.pills}set selectedIndex(e){let t=this.pills[e]||null;this.emitSelected(t)}getAttribute(e){if(e===r.DATA_ATTR_COMMERCE_OPTION_SET_ID)return this.optionSetId;throw Error(`PillGroup: Attempted to fetch unsupported attribute ${e}`)}init(){let e=this.node.querySelectorAll(`[${r.DATA_ATTR_NODE_TYPE}="${r.NODE_TYPE_COMMERCE_ADD_TO_CART_PILL}"]`);this.pills=Array.from(e).map(e=>{let t=new s(e,this);return t.init(),t}),this.firstEnabledPill&&(this.firstEnabledPill.tabIndex=0),this.node._wfPillGroup=this}findPillById(e){return this.pills.find(t=>t.optionId===e)}updatePillsWithNewSelected(e){for(let e of this.pills)e.tabIndex=-1,e.checked=!1;e instanceof s?(e.tabIndex=0,e.checked=!0):this.firstEnabledPill&&(this.firstEnabledPill.tabIndex=0)}emitSelected(e){this.onSelect({optionId:e.optionId,optionSetId:this.optionSetId,groups:Object.values(this.groups.pillGroups)})}traverseAndEmitSelected(e,t){let n,r=this.pills.indexOf(e),i=!1,a=r;for(;!i;){if("previous"===t)(n=a-1)<0&&(n=this.pills.length-1);else if("next"===t)(n=a+1)===this.pills.length&&(n=0);else throw Error(`Unknown pill traversal direction "${t}", use "previous" or "next"`);if(n===r)break;let e=this.pills[n];e.disabled?a=n:(this.emitSelected(e),e.focus(),i=!0)}}}class s{node;optionId;group;constructor(e,t){this.node=e,this.optionId=String(this.node.getAttribute("data-option-id")),this.group=t}init(){this.tabIndex=-1,this.checked=!1,this.node.addEventListener("keydown",this.handleKeyDown),this.node.addEventListener("click",this.handleClick)}get tabIndex(){return this.node.tabIndex}set tabIndex(e){this.node.tabIndex=e}get value(){return this.optionId}get checked(){return"true"===this.node.getAttribute("aria-checked")}set checked(e){this.node.setAttribute("aria-checked",String(e)),e?this.node.classList.add("w--ecommerce-pill-selected"):this.node.classList.remove("w--ecommerce-pill-selected")}get disabled(){return"true"===this.node.getAttribute("aria-disabled")}set disabled(e){this.node.setAttribute("aria-disabled",String(e)),e?(this.node.classList.add("w--ecommerce-pill-disabled"),this.checked=!1,this.tabIndex=-1):this.node.classList.remove("w--ecommerce-pill-disabled")}get enabled(){return!this.disabled}set enabled(e){this.disabled=!e}focus(){this.node.focus()}handleKeyDown=e=>{let t=!1;if(!e.altKey&&!e.metaKey){switch(e.keyCode){case i.RETURN:case i.SPACE:this.handleClick(),t=!0;break;case i.UP:case i.LEFT:this.group.traverseAndEmitSelected(this,"previous"),t=!0;break;case i.DOWN:case i.RIGHT:this.group.traverseAndEmitSelected(this,"next"),t=!0}t&&(e.stopPropagation(),e.preventDefault())}};handleClick=()=>{this.disabled||this.checked||(this.focus(),this.group.emitSelected(this))}}},85986:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n}});let n={log:(...e)=>{},error:(...e)=>{}}},48873:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i}});let n=(e,t=[])=>null==e?t:t.concat(n(Object.getPrototypeOf(e))).concat(Object.keys(e)),r=(e,t)=>{let r=n(e).filter(e=>"currentTarget"!==e).reduce((t,n)=>(t[n]="function"==typeof e[n]?{value:(...t)=>e[n](...t)}:{get:()=>e[n]},t),{});return Object.create(e,{currentTarget:{value:t},...r})};class i{apolloClient;stripeStore;eventHandlers;constructor(e,t){this.eventHandlers={},this.apolloClient=e,this.stripeStore=t}on=(e,t,n)=>{let r=this.eventHandlers[e]instanceof Array?this.eventHandlers[e]:[];return this.eventHandlers[e]=[...r,this.createHandlerProxy(e,t,n)],this};createHandlerProxy=(e,t,n)=>e=>{let i=t(e),a=i instanceof Element?r(e,i):e;i&&n(a,this.apolloClient,this.stripeStore)};attachHandlers=e=>(Object.keys(this.eventHandlers).forEach(t=>{this.eventHandlers[t].forEach(n=>e.addEventListener(t,n,!0))}),this);removeHandlers=e=>(Object.keys(this.eventHandlers).forEach(t=>{this.eventHandlers[t].forEach(n=>e.removeEventListener(t,n,!0))}),this)}},2330:function(e,t,n){"use strict";let r,i,a;Object.defineProperty(t,"__esModule",{value:!0});var o={design:function(){return L},destroy:function(){return O},init:function(){return E},preview:function(){return v}};for(var s in o)Object.defineProperty(t,s,{enumerable:!0,get:o[s]});n(84037),n(68259),n(60033),n(9246),n(67321),n(52897),n(233),n(49754),n(30971),n(62374),n(55152),n(35273),n(30172),n(65723),n(48258),n(89433);let c=n(25195),u=b(n(48873)),l=b(n(84303)),d=b(n(82150)),f=b(n(82333)),p=b(n(45870)),m=b(n(94492)),_=n(5841),h=n(54556);n(67304),n(14362);let M=n(17696),y=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=A(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(r,a,o):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r}(n(86365));function b(e){return e&&e.__esModule?e:{default:e}}function A(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(A=function(e){return e?n:t})(e)}function g(){r&&r.attachHandlers(window)}function T(){r&&r.removeHandlers(window)}function E({siteId:e}){let t=window.Webflow.env("design")||window.Webflow.env("preview");i=(0,c.createApolloClient)({path:t?`/api/v2/sites/${e}/apollo`:"/.wf_graphql/apollo",retryConfig:{maxAttempts:5},useCsrf:!0,disableBatching:!t}),a=new _.StripeStore(document),r=new u.default(i,a),l.default.register(r),d.default.register(r),f.default.register(r),p.default.register(r),m.default.register(r),y.default.register(r),(0,M.initializeStripeElements)(a),T(),g(),(0,h.triggerRender)(null,!0),window.Webflow.env()||window.Webflow.load((0,y.renderPaypalButtons)(i))}function v(){T(),g(),(0,h.triggerRender)(null,!0)}function L(){T(),i&&i.store&&i.resetStore()}function O(){T()}},45870:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={default:function(){return m},register:function(){return p}};for(var i in r)Object.defineProperty(t,i,{enumerable:!0,get:r[i]});let a=l(n(28160)),o=l(n(26882)),s=n(54556),c=n(91898),u=n(10873);function l(e){return e&&e.__esModule?e:{default:e}}let d=(e,t)=>{(0,c.renderTree)(e,t)},f=(e,t)=>{if(window.Webflow.env("design")||window.Webflow.env("preview")||!(e instanceof CustomEvent&&e.type===u.RENDER_TREE_EVENT))return;let n=[],{detail:r}=e;null!=r&&r.error&&n.push(r.error);let i=(0,s.findElementByNodeType)(u.NODE_TYPE_COMMERCE_ORDER_CONFIRMATION_WRAPPER);if(!i)return;let{orderId:c,token:l}=o.default.parse(window.location.search.substring(1));if(!c||!l)return;let f={orderId:c,token:l};(0,s.trackOrder)(t,f);let p=(0,s.findAllElementsByNodeType)(u.NODE_TYPE_COMMERCE_ORDER_CONFIRMATION_WRAPPER);t.query({query:(0,a.default)`
${i.getAttribute(u.ORDER_QUERY)}
`,variables:{finalizedOrder:f},fetchPolicy:"network-only",errorPolicy:"all"}).then(e=>{p.forEach(t=>{d(t,{...e,errors:n.concat(e.errors).filter(Boolean)})})}).catch(e=>{n.push(e),p.forEach(e=>{d(e,{errors:n})})})},p=e=>{e.on(u.RENDER_TREE_EVENT,Boolean,f)},m={register:p}},86365:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,i={default:function(){return T},renderPaypalButtons:function(){return g}};for(var a in i)Object.defineProperty(t,a,{enumerable:!0,get:i[a]});let o=n(54556),s=n(17696),c=n(69773),u=(r=n(85986))&&r.__esModule?r:{default:r},l=n(94797),d=n(10873),f=({target:e})=>!!((0,o.findClosestElementByNodeType)(d.NODE_TYPE_COMMERCE_CHECKOUT_PLACE_ORDER_BUTTON,e)&&e instanceof Element)&&e,p=!1,m=(e,t)=>{if(window.Webflow.env("design")||window.Webflow.env("preview")||!(e instanceof CustomEvent&&e.type===d.RENDER_TREE_EVENT))return;let n=(0,o.findAllElementsByNodeType)(d.NODE_TYPE_COMMERCE_PAYPAL_CHECKOUT_FORM_CONTAINER);if(!n||0===n.length)return;let r=[],{detail:i}=e;null!=i&&i.error&&r.push(i.error);let a=window.document.activeElement,c=(0,o.findClosestElementByNodeType)(d.NODE_TYPE_COMMERCE_PAYPAL_CHECKOUT_FORM_CONTAINER,a),u=null;a instanceof HTMLInputElement&&c&&((u=a.id)||(u=a.getAttribute("data-wf-bindings")),u=u?null:u),(p?Promise.resolve():t.mutate({mutation:l.syncPayPalOrderInfo})).then(()=>{p=!0,(0,s.renderCheckoutFormContainers)(n,r,t,void 0,u)})},_=!1,h=e=>{_=!0,window.addEventListener("beforeunload",s.beforeUnloadHandler);let t=e.innerHTML,n=e.getAttribute(d.DATA_ATTR_LOADING_TEXT);return e.innerHTML=n||d.CHECKOUT_PLACE_ORDER_LOADING_TEXT_DEFAULT,(n=!1)=>{n||(_=!1),window.removeEventListener("beforeunload",s.beforeUnloadHandler),e.innerHTML=t||d.CHECKOUT_PLACE_ORDER_BUTTON_TEXT_DEFAULT}},M=({shippingInfo:e,additionalInfo:t,requiresShipping:n})=>!HTMLFormElement.prototype.reportValidity||!(n&&!e.reportValidity()||t&&t instanceof HTMLFormElement&&!t.reportValidity()),y=(e,t)=>{if(window.Webflow.env("design")||window.Webflow.env("preview")||_)return;let{currentTarget:n}=e;if(!(n instanceof Element))return;let r=(0,o.findClosestElementByNodeType)(d.NODE_TYPE_COMMERCE_PAYPAL_CHECKOUT_FORM_CONTAINER,n);if(!(r instanceof Element))return;let i=(0,o.findElementByNodeType)(d.NODE_TYPE_COMMERCE_PAYPAL_CHECKOUT_ERROR_STATE,r),a=(0,o.findElementByNodeType)(d.NODE_TYPE_COMMERCE_CHECKOUT_SHIPPING_METHODS_WRAPPER,r),c=(0,o.findElementByNodeType)(d.NODE_TYPE_COMMERCE_CHECKOUT_PLACE_ORDER_BUTTON,r),l=(0,o.findElementByNodeType)(d.NODE_TYPE_COMMERCE_CHECKOUT_ADDITIONAL_INFO,r);if(!(i instanceof HTMLElement)||!(a instanceof HTMLFormElement)||!(c instanceof Element))return;let f=i.querySelector(d.CART_CHECKOUT_ERROR_MESSAGE_SELECTOR);if(f&&f.hasAttribute(d.NEEDS_REFRESH))return;let p=l&&l instanceof HTMLElement,m=h(c);i.style.setProperty("display","none"),(0,o.fetchOrderStatusFlags)(t).then(({requiresShipping:e})=>{if(!M({shippingInfo:a,additionalInfo:l,requiresShipping:e}))return void m();let n="";if(e&&a.elements["shipping-method-choice"]){let e=a.querySelector('input[name="shipping-method-choice"]:checked');e&&(n=e.value)}let r=p?(0,o.customDataFormToArray)(l):[];Promise.all([e?(0,s.createOrderShippingMethodMutation)(t,n):Promise.resolve(),p?(0,s.createCustomDataMutation)(t,r):Promise.resolve()]).then(()=>(0,s.createAttemptSubmitOrderRequest)(t,{checkoutType:"paypal"})).then(e=>{u.default.log(e);let t=(0,s.getOrderDataFromGraphQLResponse)(e);t.ok&&(m(!0),(0,s.redirectToOrderConfirmation)(t,!0))}).catch(e=>{if(m(),u.default.error(e),i.style.removeProperty("display"),(0,s.updateErrorMessage)(i,e),e.graphQLErrors&&e.graphQLErrors[0]&&e.graphQLErrors[0].message){let t=(0,o.safeParseJson)(e.graphQLErrors[0].message);t&&t.details&&t.details[0]&&"INSTRUMENT_DECLINED"===t.details[0].issue&&window.parent.postMessage(JSON.stringify({isWebflow:!0,type:"error",detail:t}),window.location.origin)}})})},b=`
display: block;

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="684561bc22684ab14f0094e7" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="684561bc22684ab14f0094e7" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>news open</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6836bfe4b6ece7af45e3e6f2" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6836bfe4b6ece7af45e3e6f2" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>News</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6800f8b381fe71c1c06a5b70" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6800f8b381fe71c1c06a5b70" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Protek</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6836cad8b1a5806f12459deb" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6836cad8b1a5806f12459deb" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Payments method</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6800f8b381fe71c1c06a5b52" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6800f8b381fe71c1c06a5b52" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<base target="_parent">

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="68274b3afd7280478878db26" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="68274b3afd7280478878db26" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Search result</title>
@ -214,7 +214,7 @@
<a href="#" class="button-for-mobile-menu-block w-inline-block">
<div class="block-for-moble-menu-icon">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="name-mobile-menu-item">Избранное</div>
@ -251,7 +251,7 @@
<div class="text-block-53">INA 530059210</div>
<div class="fsfav">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
</div>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="682311e1c6efc75810555f64" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="682311e1c6efc75810555f64" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Search Results</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6847e8e8e1b22b8406a39690" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6847e8e8e1b22b8406a39690" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>Test</title>
@ -214,7 +214,7 @@
<a href="#" class="button-for-mobile-menu-block w-inline-block">
<div class="block-for-moble-menu-icon">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="name-mobile-menu-item">Избранное</div>
@ -478,7 +478,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -507,7 +507,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -536,7 +536,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -565,7 +565,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -594,7 +594,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -623,7 +623,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -652,7 +652,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -681,7 +681,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -710,7 +710,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -739,7 +739,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -768,7 +768,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -797,7 +797,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -826,7 +826,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -855,7 +855,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -884,7 +884,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -913,7 +913,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -942,7 +942,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">
@ -971,7 +971,7 @@
<div class="w-layout-vflex flex-block-15-copy">
<div class="favcardcat">
<div class="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewbox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="black"></path>
<path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path>
</svg></div>
</div>
<div class="div-block-4"><img src="images/162615.webp" loading="lazy" width="Auto" height="Auto" alt="" srcset="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" class="image-5">

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="684e73c998b3d031bf41baf3" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="684e73c998b3d031bf41baf3" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>thankyoupage</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="685e5d95b4304bd8428c1631" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="685e5d95b4304bd8428c1631" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>VIN knot</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="685d5d68623a85f76b103bfa" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="685d5d68623a85f76b103bfa" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>VIN knot</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="685d5478c4ebd5c8793f8c54" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="685d5478c4ebd5c8793f8c54" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>VIN</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Jun 27 2025 11:05:44 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6845507cd7ed248b659ca3b9" data-wf-site="6800f7e35fcfd4ca3b323269">
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Wed Jul 02 2025 10:20:31 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-page="6845507cd7ed248b659ca3b9" data-wf-site="6800f7e35fcfd4ca3b323269" lang="en">
<head>
<meta charset="utf-8">
<title>wholesale</title>

View File

@ -14,6 +14,8 @@ const BrandWizardSearchSection: React.FC = () => {
const [vehicles, setVehicles] = useState<LaximoVehicleSearchResult[] | null>(null);
const [brandQuery, setBrandQuery] = useState('');
const buttonRef = useRef<HTMLButtonElement>(null);
const inputRef = useRef<HTMLInputElement>(null);
const [isOpen, setIsOpen] = useState(false);
// Получение информации о каталоге через useQuery
const {
@ -68,7 +70,7 @@ const BrandWizardSearchSection: React.FC = () => {
const catalogInfo = catalogData?.laximoCatalogInfo;
return (
<section className="max-w-[1100px] min-h-[450px] mx-auto bg-white rounded-2xl shadow p-6 md:p-10 my-8">
<section className="max-w-[1580px] min-h-[450px] mx-auto bg-white rounded-2xl shadow p-6 md:p-10 my-8">
{/* <div className="text-2xl font-bold text-gray-900 mb-6 mt-6 text-center" style={{ fontSize: '28px' }}>Подбор автомобиля по параметрам</div> */}
{/* Combobox бренда */}
<div className="mb-8 w-full">
@ -82,45 +84,64 @@ const BrandWizardSearchSection: React.FC = () => {
</div>
<Combobox value={selectedBrand} onChange={handleBrandChange} nullable>
<div className="relative">
{/* Невидимая кнопка поверх инпута */}
<button
type="button"
className="absolute top-0 left-0 w-full h-full opacity-0 z-10 cursor-pointer"
tabIndex={0}
aria-label="Открыть список брендов"
onClick={() => {
inputRef.current?.focus();
if (inputRef.current) {
inputRef.current.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true }));
}
}}
/>
<Combobox.Input
ref={inputRef}
id="brand-combobox"
className="w-full px-6 py-4 bg-white rounded border border-stone-300 text-sm text-gray-950 placeholder:text-neutral-500 outline-none focus:shadow-none focus:border-stone-300 transition-colors"
displayValue={(brand: LaximoBrand | null) => brand?.name || ''}
onChange={e => setBrandQuery(e.target.value)}
placeholder="Начните вводить бренд..."
autoComplete="off"
onFocus={() => setIsOpen(true)}
onClick={() => setIsOpen(true)}
onBlur={() => setIsOpen(false)}
/>
<Combobox.Button className="absolute inset-y-0 right-0 flex items-center px-3 focus:outline-none w-12">
<Combobox.Button ref={buttonRef} className="absolute inset-y-0 right-0 flex items-center px-3 focus:outline-none w-12">
<svg className="w-5 h-5 text-gray-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 9l6 6 6-6" />
</svg>
</Combobox.Button>
<Combobox.Options
className="absolute left-0 top-full z-10 bg-white border-x border-b border-stone-300 rounded-b-lg shadow-lg w-full max-h-60 overflow-auto scrollbar-none"
style={{ scrollbarWidth: 'none' }}
data-hide-scrollbar
>
{brandsLoading && (
<div className="px-6 py-4 text-gray-500">Загрузка брендов...</div>
)}
{brandsError && (
<div className="px-6 py-4 text-red-500">Ошибка загрузки брендов</div>
)}
{filteredBrands.length === 0 && !brandsLoading && !brandsError && (
<div className="px-6 py-4 text-gray-500">Бренды не найдены</div>
)}
{filteredBrands.map(brand => (
<Combobox.Option
key={brand.code}
value={brand}
className={({ active, selected }) =>
`px-6 py-4 cursor-pointer hover:!bg-[rgb(236,28,36)] hover:!text-white text-sm transition-colors ${selected ? 'bg-red-50 font-semibold text-gray-950' : 'text-neutral-500'}`
}
>
{brand.name}
</Combobox.Option>
))}
</Combobox.Options>
{isOpen && (
<Combobox.Options
className="absolute left-0 top-full z-10 bg-white border-x border-b border-stone-300 rounded-b-lg shadow-lg w-full max-h-60 overflow-auto scrollbar-none"
style={{ scrollbarWidth: 'none' }}
data-hide-scrollbar
>
{brandsLoading && (
<div className="px-6 py-4 text-gray-500">Загрузка брендов...</div>
)}
{brandsError && (
<div className="px-6 py-4 text-red-500">Ошибка загрузки брендов</div>
)}
{filteredBrands.length === 0 && !brandsLoading && !brandsError && (
<div className="px-6 py-4 text-gray-500">Бренды не найдены</div>
)}
{filteredBrands.map(brand => (
<Combobox.Option
key={brand.code}
value={brand}
className={({ active, selected }) =>
`px-6 py-4 cursor-pointer hover:!bg-[rgb(236,28,36)] hover:!text-white text-sm transition-colors ${selected ? 'bg-red-50 font-semibold text-gray-950' : 'text-neutral-500'}`
}
>
{brand.name}
</Combobox.Option>
))}
</Combobox.Options>
)}
</div>
</Combobox>
</div>
@ -152,7 +173,7 @@ const BrandWizardSearchSection: React.FC = () => {
</>
)}
{catalogInfo && !catalogInfo.supportparameteridentification2 && (
<div className="text-yellow-700 bg-yellow-50 border border-yellow-200 rounded-lg p-4 mt-6 text-center">
<div className="text-blue-700 bg-blue-50 border border-blue-200 rounded-lg p-4 mt-6 text-center">
Для выбранного бренда подбор по параметрам недоступен.
</div>
)}

View File

@ -1,7 +1,7 @@
import React, { useState } from 'react';
import { useLazyQuery } from '@apollo/client';
import { LaximoFulltextSearchResult, LaximoFulltextDetail, LaximoOEMResult } from '@/types/laximo';
import { SEARCH_LAXIMO_FULLTEXT, SEARCH_LAXIMO_OEM } from '@/lib/graphql';
import { GET_LAXIMO_FULLTEXT_SEARCH, SEARCH_LAXIMO_OEM } from '@/lib/graphql/laximo';
import PartDetailCard from './PartDetailCard';
interface FulltextSearchSectionProps {
@ -17,7 +17,7 @@ const FulltextSearchSection: React.FC<FulltextSearchSectionProps> = ({
}) => {
const [searchQuery, setSearchQuery] = useState('');
const [executeSearch, { data, loading, error }] = useLazyQuery(SEARCH_LAXIMO_FULLTEXT, {
const [executeSearch, { data, loading, error }] = useLazyQuery(GET_LAXIMO_FULLTEXT_SEARCH, {
errorPolicy: 'all'
});

View File

@ -3,7 +3,6 @@ import { useRouter } from 'next/router';
import { useLazyQuery } from '@apollo/client';
import { LaximoOEMResult } from '@/types/laximo';
import { SEARCH_LAXIMO_OEM } from '@/lib/graphql';
import BrandSelectionModal from './BrandSelectionModal';
interface PartDetailCardProps {
oem: string;
@ -30,7 +29,6 @@ const PartDetailCard: React.FC<PartDetailCardProps> = ({
}) => {
const router = useRouter();
const [localExpanded, setLocalExpanded] = useState(false);
const [isBrandModalOpen, setIsBrandModalOpen] = useState(false);
// Используем локальное состояние если нет внешнего контроля
const expanded = onToggleExpand ? isExpanded : localExpanded;
@ -53,13 +51,12 @@ const PartDetailCard: React.FC<PartDetailCardProps> = ({
const handleFindOffers = () => {
console.log('🔍 Выбрана деталь для поиска предложений:', name, 'OEM:', oem);
// Показываем модал выбора бренда
setIsBrandModalOpen(true);
// Переходим на страницу выбора бренда
const url = `/vehicle-search/${catalogCode}/${vehicleId}/part/${oem}/brands?detailName=${encodeURIComponent(name || '')}`;
router.push(url);
};
const handleCloseBrandModal = () => {
setIsBrandModalOpen(false);
};
const handleOpenFullInfo = () => {
// Переход на отдельную страницу с детальной информацией о детали
@ -250,13 +247,6 @@ const PartDetailCard: React.FC<PartDetailCardProps> = ({
</div>
)}
{/* Модал выбора бренда */}
<BrandSelectionModal
isOpen={isBrandModalOpen}
onClose={handleCloseBrandModal}
articleNumber={oem}
detailName={name}
/>
</div>
);
};

View File

@ -25,9 +25,17 @@ const QuickGroupItem: React.FC<QuickGroupItemProps> = ({ group, level, onGroupCl
const handleGroupClick = () => {
if (canShowDetails) {
// Если это конечная группа с поиском деталей - переходим к просмотру деталей
onGroupClick(group);
} else if (hasChildren) {
// Если это родительская группа с подгруппами
if (group.children?.some(child => child.link)) {
// Есть подгруппы с активным поиском - показываем пользователю выбор
setIsExpanded(!isExpanded);
} else {
// Все подгруппы неактивны - просто разворачиваем
setIsExpanded(!isExpanded);
}
}
};
@ -69,6 +77,11 @@ const QuickGroupItem: React.FC<QuickGroupItemProps> = ({ group, level, onGroupCl
Доступен поиск
</span>
)}
{hasChildren && !canShowDetails && (
<span className="ml-2 inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-blue-100 text-blue-800">
{group.children?.filter(child => child.link).length || 0} подгрупп
</span>
)}
</p>
</div>
</div>
@ -143,8 +156,10 @@ const QuickDetailSection: React.FC<QuickDetailSectionProps> = ({
};
const handleUnitClick = (unit: LaximoUnit) => {
console.log('🔍 Выбран узел для детального просмотра:', unit.name, 'ID:', unit.unitid);
setSelectedUnit(unit);
setSelectedUnit({
...unit,
ssd: unit.ssd || ssd // Сохраняем правильный SSD в selectedUnit
});
};
const handleBackFromUnit = () => {
@ -194,11 +209,21 @@ const QuickDetailSection: React.FC<QuickDetailSectionProps> = ({
// Если выбран узел для детального просмотра, показываем UnitDetailsSection
if (selectedUnit) {
const unitSsd = selectedUnit.ssd || ssd;
console.log('🔍 QuickDetailSection передает в UnitDetailsSection:', {
unitSsd: unitSsd ? `${unitSsd.substring(0, 50)}...` : 'отсутствует',
unitSsdLength: unitSsd?.length,
selectedUnitSsd: selectedUnit.ssd ? `${selectedUnit.ssd.substring(0, 50)}...` : 'отсутствует',
fallbackSsd: ssd ? `${ssd.substring(0, 50)}...` : 'отсутствует',
unitId: selectedUnit.unitid,
unitName: selectedUnit.name
});
return (
<UnitDetailsSection
catalogCode={catalogCode}
vehicleId={vehicleId}
ssd={ssd}
ssd={unitSsd} // Используем SSD узла
unitId={selectedUnit.unitid}
unitName={selectedUnit.name}
onBack={handleBackFromUnit}

View File

@ -29,7 +29,22 @@ const UnitDetailsSection: React.FC<UnitDetailsSectionProps> = ({
const [isBrandModalOpen, setIsBrandModalOpen] = useState(false);
const [selectedDetail, setSelectedDetail] = useState<LaximoUnitDetail | null>(null);
// Отладочная информация для SSD
console.log('🔍 UnitDetailsSection получил SSD:', {
ssd: ssd ? `${ssd.substring(0, 50)}...` : 'отсутствует',
ssdLength: ssd?.length,
unitId,
unitName
});
// Получаем информацию об узле
console.log('🔍 UnitDetailsSection - GET_LAXIMO_UNIT_INFO SSD:', {
ssd: ssd ? `${ssd.substring(0, 50)}...` : 'отсутствует',
ssdLength: ssd?.length,
unitId,
unitName
});
const { data: unitInfoData, loading: unitInfoLoading, error: unitInfoError } = useQuery<{ laximoUnitInfo: LaximoUnitInfo }>(
GET_LAXIMO_UNIT_INFO,
{
@ -40,11 +55,20 @@ const UnitDetailsSection: React.FC<UnitDetailsSectionProps> = ({
ssd: ssd || ''
},
skip: !catalogCode || vehicleId === undefined || vehicleId === null || !unitId,
errorPolicy: 'all'
errorPolicy: 'all',
fetchPolicy: 'no-cache', // Отключаем кэширование для получения актуального SSD
notifyOnNetworkStatusChange: true
}
);
// Получаем детали узла
console.log('🔍 UnitDetailsSection - GET_LAXIMO_UNIT_DETAILS SSD:', {
ssd: ssd ? `${ssd.substring(0, 50)}...` : 'отсутствует',
ssdLength: ssd?.length,
unitId,
unitName
});
const { data: unitDetailsData, loading: unitDetailsLoading, error: unitDetailsError } = useQuery<{ laximoUnitDetails: LaximoUnitDetail[] }>(
GET_LAXIMO_UNIT_DETAILS,
{
@ -55,11 +79,20 @@ const UnitDetailsSection: React.FC<UnitDetailsSectionProps> = ({
ssd: ssd || ''
},
skip: !catalogCode || vehicleId === undefined || vehicleId === null || !unitId,
errorPolicy: 'all'
errorPolicy: 'all',
fetchPolicy: 'no-cache', // Отключаем кэширование для получения актуального SSD
notifyOnNetworkStatusChange: true
}
);
// Получаем карту изображений узла
console.log('🔍 UnitDetailsSection - GET_LAXIMO_UNIT_IMAGE_MAP SSD:', {
ssd: ssd ? `${ssd.substring(0, 50)}...` : 'отсутствует',
ssdLength: ssd?.length,
unitId,
unitName
});
const { data: unitImageMapData, loading: unitImageMapLoading, error: unitImageMapError } = useQuery<{ laximoUnitImageMap: LaximoUnitImageMap }>(
GET_LAXIMO_UNIT_IMAGE_MAP,
{
@ -70,7 +103,9 @@ const UnitDetailsSection: React.FC<UnitDetailsSectionProps> = ({
ssd: ssd || ''
},
skip: !catalogCode || vehicleId === undefined || vehicleId === null || !unitId,
errorPolicy: 'all'
errorPolicy: 'all',
fetchPolicy: 'no-cache', // Отключаем кэширование для получения актуального SSD
notifyOnNetworkStatusChange: true
}
);

View File

@ -47,96 +47,134 @@ const VehicleSearchResults: React.FC<VehicleSearchResultsProps> = ({
}
};
// Функция для условного отображения атрибута
const renderAttribute = (label: string, value: string | undefined) => {
if (!value || value === '' || value === 'undefined') return null
return (
<div className="flex justify-between py-1 border-b border-gray-100">
<span className="text-sm text-gray-600 font-medium">{label}:</span>
<span className="text-sm text-gray-900">{value}</span>
</div>
)
}
if (results.length === 0) {
return null;
}
return (
<div className="bg-white rounded-2xl md:my-8">
<div className="mb-2">
<h4 className="text-lg font-medium text-gray-900">
Найденные автомобили ({results.length})
</h4>
</div>
<div className="flex flex-col gap-4">
<div className="space-y-4">
<h3 className="text-lg font-semibold text-gray-900">
Найдено автомобилей: {results.length}
</h3>
<div className="grid gap-4 md:grid-cols-2 lg:grid-cols-3">
{results.map((vehicle, index) => (
<div
key={vehicle.vehicleid || index}
className="pt-3 pb-3 bg-white border-b border-gray-200 hover:bg-neutral-50 transition-colors cursor-pointer flex flex-col sm:flex-row sm:items-center gap-4"
key={`${vehicle.vehicleid}-${index}`}
className="bg-white rounded-lg shadow-md border border-gray-200 p-4 hover:shadow-lg transition-shadow cursor-pointer"
onClick={() => handleSelectVehicle(vehicle)}
>
<div className="flex-1 min-w-0">
<div className="flex flex-wrap items-center gap-3 mb-2">
<h4 className="text-lg font-semibold text-gray-900 truncate">
{vehicle.name || `${vehicle.brand || 'Unknown'} ${vehicle.model || 'Vehicle'}`}
{/* Заголовок автомобиля */}
<div className="mb-3">
<h4 className="text-lg font-semibold text-blue-600 mb-1">
{vehicle.name || `${vehicle.brand} ${vehicle.model}`}
</h4>
{vehicle.year && (
<span className="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-red-50 text-red-700">
{vehicle.year}
</span>
)}
<p className="text-sm text-gray-500">
{vehicle.modification} ({vehicle.year})
</p>
</div>
{/* Основные характеристики */}
<div className="space-y-1 mb-4">
<h5 className="text-sm font-semibold text-gray-700 mb-2">Основные характеристики</h5>
{renderAttribute('Марка', vehicle.brand)}
{renderAttribute('Модель', vehicle.model)}
{renderAttribute('Двигатель', vehicle.engine)}
</div>
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 text-sm mb-2">
{vehicle.modification && (
<div>
<span className="text-gray-500">Модификация:</span>
<span className="ml-2 font-medium text-gray-900">{vehicle.modification}</span>
{/* Все атрибуты из API */}
{vehicle.attributes && vehicle.attributes.length > 0 && (
<div className="space-y-1 mb-4">
<h5 className="text-sm font-semibold text-gray-700 mb-2">Дополнительные характеристики</h5>
{vehicle.attributes.map((attr, attrIndex) => (
<div key={attrIndex} className="flex justify-between py-1 border-b border-gray-100">
<span className="text-sm text-gray-600 font-medium">{attr.name || attr.key}:</span>
<span className="text-sm text-gray-900">{attr.value}</span>
</div>
))}
</div>
)}
{vehicle.bodytype && (
<div>
<span className="text-gray-500">Тип кузова:</span>
<span className="ml-2 font-medium text-gray-900">{vehicle.bodytype}</span>
</div>
)}
{vehicle.engine && (
<div>
<span className="text-gray-500">Двигатель:</span>
<span className="ml-2 font-medium text-gray-900">{vehicle.engine}</span>
</div>
)}
</div>
{vehicle.notes && (
<div className="mt-3 p-3 bg-yellow-50 rounded-lg">
<div className="flex">
<div className="flex-shrink-0">
<svg className="h-5 w-5 text-yellow-400" viewBox="0 0 20 20" fill="currentColor">
<path fillRule="evenodd" d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clipRule="evenodd" />
</svg>
</div>
<div className="ml-3">
<p className="text-sm text-yellow-800">
<span className="font-medium">Примечание:</span> {vehicle.notes}
</p>
</div>
</div>
{/* Технические характеристики (fallback для старых данных) */}
{(!vehicle.attributes || vehicle.attributes.length === 0) && (
<>
<div className="space-y-1 mb-4">
<h5 className="text-sm font-semibold text-gray-700 mb-2">Дополнительные характеристики</h5>
{renderAttribute('Год', vehicle.year)}
{renderAttribute('Кузов', vehicle.bodytype)}
{renderAttribute('Трансмиссия', vehicle.transmission)}
{renderAttribute('Класс', vehicle.grade)}
{renderAttribute('Цвет кузова', vehicle.framecolor)}
{renderAttribute('Цвет салона', vehicle.trimcolor)}
{renderAttribute('Рынок', vehicle.market)}
{renderAttribute('Регион производства', vehicle.creationregion)}
{renderAttribute('Регион назначения', vehicle.destinationregion)}
</div>
)}
<div className="space-y-1 mb-4">
<h5 className="text-sm font-semibold text-gray-700 mb-2">Технические характеристики</h5>
{renderAttribute('Информация о двигателе', vehicle.engine_info)}
{renderAttribute('Номер двигателя', vehicle.engineno)}
{renderAttribute('Дата производства', vehicle.date)}
{renderAttribute('Произведен', vehicle.manufactured)}
{renderAttribute('Период производства', vehicle.prodPeriod)}
{renderAttribute('Диапазон производства', vehicle.prodRange)}
</div>
<div className="space-y-1 mb-4">
<h5 className="text-sm font-semibold text-gray-700 mb-2">Даты и периоды</h5>
{renderAttribute('Дата с', vehicle.datefrom)}
{renderAttribute('Дата по', vehicle.dateto)}
{renderAttribute('Модельный год с', vehicle.modelyearfrom)}
{renderAttribute('Модельный год по', vehicle.modelyearto)}
</div>
{/* Опции и описание */}
{(vehicle.options || vehicle.description || vehicle.notes) && (
<div className="space-y-1 mb-4">
<h5 className="text-sm font-semibold text-gray-700 mb-2">Опции и описание</h5>
{renderAttribute('Опции', vehicle.options)}
{renderAttribute('Описание', vehicle.description)}
{renderAttribute('Примечания', vehicle.notes)}
</div>
)}
</>
)}
{/* Системная информация */}
<div className="mt-4 pt-3 border-t border-gray-200">
<div className="text-xs text-gray-400 space-y-1">
<div>ID: {vehicle.vehicleid}</div>
{vehicle.catalog && <div>Каталог: {vehicle.catalog}</div>}
{vehicle.ssd && (
<div>SSD: {vehicle.ssd.length > 50 ? `${vehicle.ssd.substring(0, 50)}...` : vehicle.ssd}</div>
)}
</div>
</div>
<div className="flex-shrink-0 flex items-center justify-end">
<button
onClick={e => {
e.stopPropagation();
handleSelectVehicle(vehicle);
}}
className="inline-flex items-center px-6 py-3 border border-transparent text-base font-medium rounded-lg bg-red-600 hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 shadow transition"
style={{ color: '#fff' }}
>
Выбрать
</button>
{/* Debug информация (только в development) */}
{process.env.NODE_ENV === 'development' && (
<div className="mt-4 p-2 bg-gray-100 rounded text-xs">
<div className="font-semibold text-gray-700 mb-1">Debug Info:</div>
<pre className="text-gray-600 whitespace-pre-wrap">
{JSON.stringify(vehicle, null, 2)}
</pre>
</div>
)}
</div>
))}
</div>
<div className="bg-gray-50 rounded-xl pt-4 pb-4 mt-6 flex flex-col sm:flex-row items-center justify-between text-sm text-gray-600">
<span>Показано {results.length} результат{results.length === 1 ? '' : results.length < 5 ? 'а' : 'ов'}</span>
<span>Кликните на автомобиль для подбора запчастей</span>
</div>
</div>
);
};

View File

@ -20,6 +20,7 @@ const WizardSearchForm: React.FC<WizardSearchFormProps> = ({
const [error, setError] = useState<string>('');
const [queries, setQueries] = useState<Record<string, string>>({});
const buttonRefs = useRef<Record<string, React.RefObject<HTMLButtonElement | null>>>({});
const inputRefs = useRef<Record<string, React.RefObject<HTMLInputElement | null>>>({});
const [showSearchButton, setShowSearchButton] = React.useState(true);
const [getWizard2] = useLazyQuery(GET_LAXIMO_WIZARD2, {
@ -220,14 +221,18 @@ const WizardSearchForm: React.FC<WizardSearchFormProps> = ({
? options.filter(option => option.value.toLowerCase().includes(query.toLowerCase()))
: options;
const buttonRef = buttonRefs.current[step.conditionid];
// Создаём ref для инпута, если его ещё нет
if (!inputRefs.current[step.conditionid]) {
inputRefs.current[step.conditionid] = React.createRef<HTMLInputElement>();
}
const inputRef = inputRefs.current[step.conditionid];
// Определяем выбранный ключ
const selectedKey = selectedParams[step.conditionid]?.key || (step.determined ? options.find(o => o.value === step.value)?.key : '');
// Определяем отображаемый label
const selectedLabel =
options.find(o => o.key === selectedKey)?.value ||
selectedParams[step.conditionid]?.value ||
step.value ||
'';
step.value || '';
// Если единственный вариант уже выбран — не рендерим селект
if (options.length === 1 && (selectedKey === options[0].key || step.determined)) {
@ -252,7 +257,21 @@ const WizardSearchForm: React.FC<WizardSearchFormProps> = ({
disabled={isLoading || options.length === 0}
>
<div className="relative">
{/* Невидимая кнопка поверх инпута */}
<button
type="button"
className="absolute top-0 left-0 w-full h-full opacity-0 z-10 cursor-pointer"
tabIndex={0}
aria-label="Открыть список опций"
onClick={() => {
inputRef.current?.focus();
if (inputRef.current) {
inputRef.current.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true }));
}
}}
/>
<Combobox.Input
ref={inputRef}
id={`wizard-combobox-${step.conditionid}`}
className={`w-full px-6 py-4 rounded text-sm text-gray-950 placeholder:text-neutral-500 outline-none focus:shadow-none transition-colors pr-12 ${selectedLabel ? 'bg-gray-50 border-gray-200' : 'bg-white border border-stone-300'}`}
displayValue={() => selectedLabel}
@ -264,7 +283,7 @@ const WizardSearchForm: React.FC<WizardSearchFormProps> = ({
{selectedLabel ? (
<button
type="button"
className="absolute inset-y-0 right-0 w-12 flex items-center justify-center text-gray-400 hover:text-red-600 focus:outline-none"
className="absolute inset-y-0 right-0 w-12 flex items-center justify-center text-gray-400 hover:text-red-600 focus:outline-none z-10"
aria-label="Сбросить"
tabIndex={0}
onClick={() => handleParamReset(step)}
@ -330,8 +349,8 @@ const WizardSearchForm: React.FC<WizardSearchFormProps> = ({
{/* Информация о недостаточности параметров */}
{!isLoading && !canListVehicles && wizardSteps.length > 0 && (
<div className="p-4 bg-yellow-50 border border-yellow-200 rounded-lg">
<p className="text-yellow-800 text-sm">
<div className="p-4 bg-blue-50 border border-blue-200 rounded-lg">
<p className="text-blue-800 text-sm">
Выберите больше параметров для поиска автомобилей
</p>
</div>

View File

@ -0,0 +1,43 @@
import React from "react";
const BestPriceSection: React.FC = () => (
<section className="main">
<div className="w-layout-blockcontainer container w-container">
<div className="w-layout-hflex flex-block-118">
<div className="w-layout-vflex flex-block-119">
<h1 className="heading-20">ЛУЧШАЯ ЦЕНА!</h1>
<div className="text-block-58">Подборка лучших предложенийпо цене</div>
<a href="#" className="button-24 w-button">Показать все</a>
</div>
<div className="w-layout-hflex flex-block-121">
{[...Array(8)].map((_, i) => (
<div className="w-layout-vflex bestpriceitem" key={i}>
<div className="favcardcat">
<div className="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path></svg></div>
</div>
<div className="imgitembp"><img width="auto" height="auto" alt="" src="images/162615.webp" loading="lazy" srcSet="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" className="image-5" />
<div className="saletagbp">-35%</div>
</div>
<div className="div-block-3">
<div className="w-layout-hflex pricecartbp">
<div className="actualprice">от 17 087 </div>
<div className="oldpricebp">22 347 </div>
</div>
<div className="w-layout-hflex flex-block-120">
<div className="nameitembp">Аккумуляторная батарея TYUMEN BATTERY "STANDARD", 6CT-60L, 60</div>
<a href="#" className="button-icon w-inline-block">
<div className="div-block-26">
<div className="icon-setting w-embed"><svg width="currentWidht" height="currentHeight" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.1998 22.2C8.8798 22.2 7.81184 23.28 7.81184 24.6C7.81184 25.92 8.8798 27 10.1998 27C11.5197 27 12.5997 25.92 12.5997 24.6C12.5997 23.28 11.5197 22.2 10.1998 22.2ZM3 3V5.4H5.39992L9.71977 14.508L8.09982 17.448C7.90783 17.784 7.79984 18.18 7.79984 18.6C7.79984 19.92 8.8798 21 10.1998 21H24.5993V18.6H10.7037C10.5357 18.6 10.4037 18.468 10.4037 18.3L10.4397 18.156L11.5197 16.2H20.4594C21.3594 16.2 22.1513 15.708 22.5593 14.964L26.8552 7.176C26.9542 6.99286 27.004 6.78718 26.9997 6.57904C26.9955 6.37089 26.9373 6.16741 26.8309 5.98847C26.7245 5.80952 26.5736 5.66124 26.3927 5.55809C26.2119 5.45495 26.0074 5.40048 25.7992 5.4H8.05183L6.92387 3H3ZM22.1993 22.2C20.8794 22.2 19.8114 23.28 19.8114 24.6C19.8114 25.92 20.8794 27 22.1993 27C23.5193 27 24.5993 25.92 24.5993 24.6C24.5993 23.28 23.5193 22.2 22.1993 22.2Z" fill="currentColor"></path></svg></div>
</div>
</a>
</div>
</div>
</div>
))}
</div>
</div>
</div>
</section>
);
export default BestPriceSection;

View File

@ -0,0 +1,158 @@
import React, { useState } from "react";
import { useRouter } from "next/router";
import { useQuery } from "@apollo/client";
import { GET_LAXIMO_BRANDS } from "@/lib/graphql";
import { LaximoBrand } from "@/types/laximo";
const tabs = [
"Техническое обслуживание",
"Легковые",
"Грузовые",
"Коммерческие",
];
type Brand = { name: string; code?: string };
const BrandSelectionSection: React.FC = () => {
const [activeTab, setActiveTab] = useState(0);
const [selectedBrand, setSelectedBrand] = useState<string>("");
const router = useRouter();
const { data, loading, error } = useQuery<{ laximoBrands: LaximoBrand[] }>(GET_LAXIMO_BRANDS, {
errorPolicy: 'all'
});
const staticBrands: Brand[] = [
{ name: "Audi" },
{ name: "BMW" },
{ name: "Cadillac" },
{ name: "Chevrolet" },
{ name: "Citroen" },
{ name: "Fiat" },
{ name: "Mazda" }
];
let brands: Brand[] = staticBrands;
if (data?.laximoBrands && data.laximoBrands.length > 0) {
brands = data.laximoBrands.map(brand => ({
name: brand.name,
code: brand.code
}));
} else if (error) {
console.warn('Laximo API недоступен, используются статические данные:', error.message);
}
const handleBrandClick = (brand: Brand) => {
if (brand.code) {
router.push(`/brands?selected=${brand.code}`);
} else {
console.warn('Brand code not available for', brand.name);
}
};
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault();
if (selectedBrand) {
const found = brands.find(b => b.code === selectedBrand || b.name === selectedBrand);
if (found && found.code) {
router.push(`/brands?selected=${found.code}`);
return;
}
}
router.push("/brands");
};
if (loading) {
return (
<section>
<div className="w-layout-blockcontainer container w-container">
<div className="w-layout-vflex inbt">
<h2 className="heading-4">Подбор по маркам</h2>
<div className="text-center">Загрузка брендов...</div>
</div>
</div>
</section>
);
}
return (
<section className="main">
<div className="w-layout-blockcontainer container w-container">
<div className="w-layout-vflex inbt">
<h2 className="heading-4">Подбор по маркам</h2>
<div className="w-layout-hflex flex-block-6-copy">
<div className="w-layout-hflex brandsortb">
<div className="w-layout-hflex tabson">
{tabs.map((tab, idx) => (
<div
className={activeTab === idx ? "tab_c tab_card-activ" : "tab_c tab_card"}
key={idx}
onClick={() => setActiveTab(idx)}
style={{ cursor: "pointer" }}
>
{tab}
</div>
))}
</div>
<div className="w-layout-hflex brandsort">
{[...Array(5)].map((_, colIdx) => (
<div className="w-layout-vflex flex-block-26" key={colIdx}>
{brands.slice(colIdx * Math.ceil(brands.length / 5), (colIdx + 1) * Math.ceil(brands.length / 5)).map((brand, idx) => (
<button
onClick={() => handleBrandClick(brand)}
className="link-block-6 w-inline-block text-left"
key={idx}
style={{ background: 'none', border: 'none', padding: 0 }}
>
<div className="indexbrandblock">{brand.name}</div>
</button>
))}
</div>
))}
</div>
<button
onClick={() => router.push('/brands')}
className="w-layout-hflex flex-block-29 cursor-pointer hover:opacity-80 transition-opacity"
style={{ background: 'none', border: 'none', padding: 0 }}
>
<div className="text-block-18">Все марки</div>
<img src="/images/Arrow_right.svg" loading="lazy" alt="Стрелка вправо" />
</button>
</div>
<div className="w-layout-vflex flex-block-124">
<h1 className="heading-21">ПОДБОР АВТОЗАПЧАСТЕЙ ПО МАРКЕ АВТО</h1>
<div className="form-block-4 w-form">
<form id="email-form" name="email-form" data-name="Email Form" method="post" data-wf-page-id="685be6dfd87db2e01cbdb7a2" data-wf-element-id="e673036c-0caf-d251-3b66-9ba9cb85064c" onSubmit={handleSubmit}>
<select
id="field-7"
name="field-7"
data-name="Field 7"
className="select-copy w-select"
value={selectedBrand}
onChange={e => setSelectedBrand(e.target.value)}
>
<option value="">Марка</option>
{brands.map((brand, idx) => (
<option value={brand.code || brand.name} key={idx}>{brand.name}</option>
))}
</select>
<div className="div-block-10-copy">
<input type="submit" data-wait="Please wait..." className="button-3-copy w-button" value="Далее" />
</div>
</form>
<div className="w-form-done">
<div>Thank you! Your submission has been received!</div>
</div>
<div className="w-form-fail">
<div>Oops! Something went wrong while submitting the form.</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
);
};
export default BrandSelectionSection;

View File

@ -0,0 +1,39 @@
import React from "react";
const CategoryNavSection: React.FC = () => (
<section className="catnav">
<div className="w-layout-blockcontainer batd w-container">
<div className="w-layout-hflex flex-block-108-copy">
<div className="ci1">
<div className="text-block-54-copy">Детали для ТО</div>
</div>
<div className="ci2">
<div className="text-block-54">Шины</div>
</div>
<div className="ci3">
<div className="text-block-54">Диски</div>
</div>
<div className="ci4">
<div className="text-block-54">Масла и жидкости</div>
</div>
<div className="ci5">
<div className="text-block-54">Инструменты</div>
</div>
<div className="ci6">
<div className="text-block-54">Автохимия</div>
</div>
<div className="ci7">
<div className="text-block-54">Аксессуары</div>
</div>
<div className="ci8">
<div className="text-block-54">Электрика</div>
</div>
<div className="ci9">
<div className="text-block-54">АКБ</div>
</div>
</div>
</div>
</section>
);
export default CategoryNavSection;

View File

@ -0,0 +1,36 @@
import React from 'react';
const IndexTopMenuNav = () => (
<section className="topmenub">
<div className="w-layout-blockcontainer tb nav w-container">
<div className="w-layout-hflex flex-block-107">
<a href="#" className="link-block-8 w-inline-block">
<div>О компании</div>
</a>
<a href="#" className="link-block-8 w-inline-block">
<div>Оплата и доставка</div>
</a>
<a href="#" className="link-block-8 w-inline-block">
<div>Гарантия и возврат</div>
</a>
<a href="#" className="link-block-8 w-inline-block">
<div>Покупателям</div>
</a>
<a href="#" className="link-block-8 w-inline-block">
<div>Оптовым клиентам</div>
</a>
<a href="#" className="link-block-8 w-inline-block">
<div>Контакты</div>
</a>
<a href="#" className="link-block-8 green w-inline-block">
<div>Новые поступления товаров</div>
</a>
<a href="#" className="link-block-8 orange w-inline-block">
<div>Распродажа</div>
</a>
</div>
</div>
</section>
);
export default IndexTopMenuNav;

View File

@ -0,0 +1,54 @@
import React from "react";
const NewArrivalsSection: React.FC = () => (
<section className="main">
<div className="w-layout-blockcontainer container w-container">
<div className="w-layout-vflex inbt">
<div className="w-layout-hflex flex-block-31">
<h2 className="heading-4">Новое поступление</h2>
</div>
<div className="w-layout-hflex core-product-search">
{[...Array(8)].map((_, i) => (
<div className="w-layout-vflex flex-block-15-copy" key={i}>
<div className="favcardcat">
<div className="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path></svg></div>
</div>
<div className="div-block-4">
<img
src="images/162615.webp"
loading="lazy"
width="auto"
height="auto"
alt="Новое поступление: Аккумуляторная батарея TYUMEN BATTERY"
srcSet="images/162615-p-500.webp 500w, images/162615.webp 600w"
sizes="(max-width: 600px) 100vw, 600px"
className="image-5"
/>
<div className="text-block-7">-35%</div>
</div>
<div className="div-block-3">
<div className="w-layout-hflex flex-block-16">
<div className="text-block-8">от 17 087 </div>
<div className="text-block-9">22 347 </div>
</div>
<div className="w-layout-hflex flex-block-122">
<div className="w-layout-vflex">
<div className="text-block-10">Аккумуляторная батарея TYUMEN BATTERY "STANDARD", 6CT-60L, 60</div>
<div className="text-block-11">Borsehung</div>
</div>
<a href="#" className="button-icon w-inline-block">
<div className="div-block-26">
<div className="icon-setting w-embed"><svg width="currentWidht" height="currentHeight" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.1998 22.2C8.8798 22.2 7.81184 23.28 7.81184 24.6C7.81184 25.92 8.8798 27 10.1998 27C11.5197 27 12.5997 25.92 12.5997 24.6C12.5997 23.28 11.5197 22.2 10.1998 22.2ZM3 3V5.4H5.39992L9.71977 14.508L8.09982 17.448C7.90783 17.784 7.79984 18.18 7.79984 18.6C7.79984 19.92 8.8798 21 10.1998 21H24.5993V18.6H10.7037C10.5357 18.6 10.4037 18.468 10.4037 18.3L10.4397 18.156L11.5197 16.2H20.4594C21.3594 16.2 22.1513 15.708 22.5593 14.964L26.8552 7.176C26.9542 6.99286 27.004 6.78718 26.9997 6.57904C26.9955 6.37089 26.9373 6.16741 26.8309 5.98847C26.7245 5.80952 26.5736 5.66124 26.3927 5.55809C26.2119 5.45495 26.0074 5.40048 25.7992 5.4H8.05183L6.92387 3H3ZM22.1993 22.2C20.8794 22.2 19.8114 23.28 19.8114 24.6C19.8114 25.92 20.8794 27 22.1993 27C23.5193 27 24.5993 25.92 24.5993 24.6C24.5993 23.28 23.5193 22.2 22.1993 22.2Z" fill="currentColor"></path></svg></div>
</div>
</a>
</div>
</div>
</div>
))}
</div>
</div>
</div>
</section>
);
export default NewArrivalsSection;

View File

@ -3,7 +3,7 @@ import NewsCard from "@/components/news/NewsCard";
import Link from "next/link";
const NewsAndPromos = () => (
<section>
<section className="main">
<div className="w-layout-blockcontainer container w-container">
<div className="w-layout-vflex news-index-block">
<div className="w-layout-hflex flex-block-31">

View File

@ -0,0 +1,67 @@
import React from "react";
const ProductOfDaySection: React.FC = () => (
<section className="main">
<div className="w-layout-blockcontainer batd w-container">
<div className="w-layout-hflex flex-block-108">
<div data-delay="4000" data-animation="slide" className="slider w-slider" data-autoplay="false" data-easing="ease" data-hide-arrows="false" data-disable-swipe="false" data-autoplay-limit="0" data-nav-spacing="3" data-duration="500" data-infinite="true">
<div className="mask w-slider-mask">
<div className="slide w-slide">
<div className="div-block-128"></div>
</div>
<div className="w-slide"></div>
<div className="w-slide"></div>
</div>
<div className="left-arrow w-slider-arrow-left">
<div className="div-block-34">
<div className="code-embed-14 w-embed"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.6673 10H3.33398M3.33398 10L8.33398 5M3.33398 10L8.33398 15" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"></path>
</svg></div>
</div>
</div>
<div className="right-arrow w-slider-arrow-right">
<div className="div-block-34 right">
<div className="code-embed-14 w-embed"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.6673 10H3.33398M3.33398 10L8.33398 5M3.33398 10L8.33398 15" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"></path>
</svg></div>
</div>
</div>
<div className="slide-nav w-slider-nav w-slider-nav-invert w-round"></div>
</div>
<div className="div-block-129">
<div className="w-layout-hflex flex-block-109">
<h1 className="heading-18">ТОВАРЫ ДНЯ</h1>
<div className="saletag">-35%</div>
</div>
<div className="w-layout-hflex flex-block-110">
<div className="w-layout-vflex flex-block-111">
<div className="w-layout-hflex flex-block-16">
<div className="text-block-8">от 17 087 </div>
<div className="text-block-9">22 347 </div>
</div>
<div className="text-block-10">Аккумуляторная батарея TYUMEN BATTERY &quot;STANDARD&quot;, 6CT-60L, 60</div>
</div><img width="Auto" height="Auto" alt="" src="/images/162615.webp" loading="lazy" srcSet="/images/162615-p-500.webp 500w, /images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" className="image-5-copy" />
</div>
<div className="w-layout-hflex flex-block-125">
<div className="div-block-134">
<div className="code-embed-17 w-embed"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.6673 10H3.33398M3.33398 10L8.33398 5M3.33398 10L8.33398 15" stroke="currentcolor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"></path>
</svg></div>
</div>
<div className="div-block-134-copy">
<div className="code-embed-17 w-embed"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.6673 10H3.33398M3.33398 10L8.33398 5M3.33398 10L8.33398 15" stroke="currentcolor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"></path>
</svg></div>
</div>
<div className="w-layout-hflex flex-block-126">
<div className="div-block-135"></div>
<div className="div-block-135"></div>
</div>
</div>
</div>
</div>
</div>
</section>
);
export default ProductOfDaySection;

View File

@ -0,0 +1,21 @@
import React from "react";
const PromoImagesSection: React.FC = () => (
<section className="main">
<div className="w-layout-blockcontainer container w-container">
<div className="w-layout-hflex flex-block-123">
<div className="div-block-132">
<img src="images/Group-602.png" loading="lazy" alt="Промо 1" />
</div>
<div className="div-block-132">
<img src="images/Group-603.png" loading="lazy" alt="Промо 2" />
</div>
<div className="div-block-132">
<img src="images/Group-604.png" loading="lazy" alt="Промо 3" />
</div>
</div>
</div>
</section>
);
export default PromoImagesSection;

View File

@ -0,0 +1,25 @@
import React from "react";
const SupportVinSection: React.FC = () => (
<section className="main">
<div className="w-layout-blockcontainer container-copy w-container">
<img
src="images/support_img.png"
loading="lazy"
alt="Поддержка: помощь с VIN-запросом"
className="image-27"
/>
<div className="div-block-11">
<div className="w-layout-vflex flex-block-30">
<h3 className="supportheading">МЫ ВСЕГДА РАДЫ ПОМОЧЬ</h3>
<div className="text-block-19">
Если вам нужна помощь с подбором автозапчастей, то воспользуйтесь формой VIN-запроса. Введите идентификационный номер (VIN) вашего автомобиля и мы найдём нужную деталь.
</div>
</div>
<a href="#" className="submit-button-copy w-button">Отправить VIN-запрос</a>
</div>
</div>
</section>
);
export default SupportVinSection;

View File

@ -0,0 +1,44 @@
import React from "react";
const TopSalesSection: React.FC = () => (
<section className="main">
<div className="w-layout-blockcontainer container w-container">
<div className="w-layout-vflex inbt">
<div className="w-layout-hflex flex-block-31">
<h2 className="heading-4">Топ продаж</h2>
</div>
<div className="w-layout-hflex core-product-search">
{[...Array(8)].map((_, i) => (
<div className="w-layout-vflex flex-block-15-copy" key={i}>
<div className="favcardcat">
<div className="icon-setting w-embed"><svg width="currenWidth" height="currentHeight" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.5996 3.5C15.8107 3.5 17.5 5.1376 17.5 7.19629C17.5 8.46211 16.9057 9.65758 15.7451 11.0117C14.8712 12.0314 13.7092 13.1034 12.3096 14.3311L10.833 15.6143L10.832 15.6152L10 16.3369L9.16797 15.6152L9.16699 15.6143L7.69043 14.3311C6.29084 13.1034 5.12883 12.0314 4.25488 11.0117C3.09428 9.65758 2.50003 8.46211 2.5 7.19629C2.5 5.1376 4.18931 3.5 6.40039 3.5C7.6497 3.50012 8.85029 4.05779 9.62793 4.92188L10 5.33398L10.3721 4.92188C11.1497 4.05779 12.3503 3.50012 13.5996 3.5Z" fill="currentColor" stroke="currentColor"></path></svg></div>
</div>
<div className="div-block-4"><img src="images/162615.webp" loading="lazy" width="auto" height="auto" alt="" srcSet="images/162615-p-500.webp 500w, images/162615.webp 600w" sizes="(max-width: 600px) 100vw, 600px" className="image-5" />
<div className="text-block-7">-35%</div>
</div>
<div className="div-block-3">
<div className="w-layout-hflex flex-block-16">
<div className="text-block-8">от 17 087 </div>
<div className="text-block-9">22 347 </div>
</div>
<div className="w-layout-hflex flex-block-122">
<div className="w-layout-vflex">
<div className="text-block-10">Аккумуляторная батарея TYUMEN BATTERY "STANDARD", 6CT-60L, 60</div>
<div className="text-block-11">Borsehung</div>
</div>
<a href="#" className="button-icon w-inline-block">
<div className="div-block-26">
<div className="icon-setting w-embed"><svg width="currentWidht" height="currentHeight" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.1998 22.2C8.8798 22.2 7.81184 23.28 7.81184 24.6C7.81184 25.92 8.8798 27 10.1998 27C11.5197 27 12.5997 25.92 12.5997 24.6C12.5997 23.28 11.5197 22.2 10.1998 22.2ZM3 3V5.4H5.39992L9.71977 14.508L8.09982 17.448C7.90783 17.784 7.79984 18.18 7.79984 18.6C7.79984 19.92 8.8798 21 10.1998 21H24.5993V18.6H10.7037C10.5357 18.6 10.4037 18.468 10.4037 18.3L10.4397 18.156L11.5197 16.2H20.4594C21.3594 16.2 22.1513 15.708 22.5593 14.964L26.8552 7.176C26.9542 6.99286 27.004 6.78718 26.9997 6.57904C26.9955 6.37089 26.9373 6.16741 26.8309 5.98847C26.7245 5.80952 26.5736 5.66124 26.3927 5.55809C26.2119 5.45495 26.0074 5.40048 25.7992 5.4H8.05183L6.92387 3H3ZM22.1993 22.2C20.8794 22.2 19.8114 23.28 19.8114 24.6C19.8114 25.92 20.8794 27 22.1993 27C23.5193 27 24.5993 25.92 24.5993 24.6C24.5993 23.28 23.5193 22.2 22.1993 22.2Z" fill="currentColor"></path></svg></div>
</div>
</a>
</div>
</div>
</div>
))}
</div>
</div>
</div>
</section>
);
export default TopSalesSection;

View File

@ -1,44 +1,249 @@
import React from "react";
import React, { useState, useEffect, useRef } from "react";
interface InfoVinProps {
vehicleName: string;
vehicleInfo: string;
interface VehicleAttribute {
key: string;
name: string;
value: string;
}
const InfoVin: React.FC<InfoVinProps> = ({ vehicleName, vehicleInfo }) => (
<section className="section-info">
<div className="w-layout-blockcontainer container info w-container">
<div className="w-layout-vflex flex-block-9">
<div className="w-layout-hflex flex-block-7">
<a href="#" className="link-block w-inline-block">
<div>Главная</div>
</a>
<div className="text-block-3"></div>
<a href="/brands" className="link-block w-inline-block">
<div>Оригинальный каталог</div>
</a>
<div className="text-block-3"></div>
<a href="#" className="link-block-2 w-inline-block">
<div>{vehicleName}</div>
</a>
</div>
<div className="w-layout-hflex flex-block-8">
<div className="w-layout-hflex flex-block-10">
<h1 className="heading">{vehicleName}</h1>
interface InfoVinProps {
vehicleName?: string;
vehicleInfo?: string;
vehicleAttributes?: VehicleAttribute[];
}
const InfoVin: React.FC<InfoVinProps> = ({
vehicleName = "VIN декодирование",
vehicleInfo = "Поиск запчастей по VIN номеру автомобиля",
vehicleAttributes = []
}) => {
const [showTooltip, setShowTooltip] = useState(false);
const [tooltipPosition, setTooltipPosition] = useState({ x: 0, y: 0 });
const timeoutRef = useRef<NodeJS.Timeout | null>(null);
const iconRef = useRef<HTMLDivElement>(null);
// Отладочный вывод атрибутов
useEffect(() => {
if (vehicleAttributes.length > 0) {
console.log('🚗 Атрибуты автомобиля:', vehicleAttributes);
console.log('🔍 Ключи атрибутов:', vehicleAttributes.map(attr => ({ key: attr.key, name: attr.name })));
}
}, [vehicleAttributes]);
// Определяем основные параметры для отображения
const getMainParameters = (attributes: VehicleAttribute[]) => {
// Приоритетные ключи для основных параметров
const priorityKeys = [
// Двигатель
{
keys: ['engine', 'enginetype', 'engine_type', 'двигатель', 'тип двигателя', 'motor'],
priority: 1
},
// VIN
{
keys: ['vin', 'вин', 'vin_code'],
priority: 2
},
// Год выпуска
{
keys: ['year', 'год', 'год выпуска', 'production_year', 'model_year'],
priority: 3
},
// Топливо
{
keys: ['fuel', 'топливо', 'тип топлива', 'fuel_type', 'fueltype'],
priority: 4
},
// Коробка передач
{
keys: ['transmission', 'коробка', 'кпп', 'gearbox', 'transmissiontype'],
priority: 5
}
];
const foundParams: Array<{ attr: VehicleAttribute; priority: number }> = [];
// Ищем атрибуты по приоритетным ключам
for (const priorityGroup of priorityKeys) {
const foundAttr = attributes.find(attr =>
priorityGroup.keys.some(key =>
attr.key.toLowerCase().includes(key.toLowerCase()) ||
attr.name.toLowerCase().includes(key.toLowerCase())
)
);
if (foundAttr) {
foundParams.push({ attr: foundAttr, priority: priorityGroup.priority });
}
}
// Сортируем по приоритету и берем максимум 4 параметра
foundParams.sort((a, b) => a.priority - b.priority);
const mainParams = foundParams.slice(0, 4).map(item => item.attr);
// Если основных параметров меньше 3, добавляем первые доступные
if (mainParams.length < 3) {
const additionalParams = attributes
.filter(attr => !mainParams.includes(attr))
.slice(0, 3 - mainParams.length);
return [...mainParams, ...additionalParams];
}
return mainParams;
};
const mainParameters = getMainParameters(vehicleAttributes);
const displayText = mainParameters.length > 0
? mainParameters.map(attr => attr.value).join(' · ')
: vehicleInfo;
// Отладочный вывод выбранных параметров
useEffect(() => {
if (mainParameters.length > 0) {
console.log('✅ Выбранные основные параметры:', mainParameters);
console.log('📝 Отображаемый текст:', displayText);
}
}, [mainParameters, displayText]);
// Вычисляем позицию tooltip
const calculateTooltipPosition = () => {
if (iconRef.current) {
const rect = iconRef.current.getBoundingClientRect();
const tooltipWidth = 500;
const tooltipHeight = 300; // примерная высота
let x = rect.left + rect.width / 2 - tooltipWidth / 2;
let y = rect.bottom + 8;
// Проверяем, не выходит ли tooltip за границы экрана
if (x < 10) x = 10;
if (x + tooltipWidth > window.innerWidth - 10) {
x = window.innerWidth - tooltipWidth - 10;
}
// Если tooltip не помещается снизу, показываем сверху
if (y + tooltipHeight > window.innerHeight - 10) {
y = rect.top - tooltipHeight - 8;
}
setTooltipPosition({ x, y });
}
};
const handleMouseEnter = () => {
if (timeoutRef.current) {
clearTimeout(timeoutRef.current);
}
timeoutRef.current = setTimeout(() => {
calculateTooltipPosition();
setShowTooltip(true);
}, 300); // Задержка 300ms
};
const handleMouseLeave = () => {
if (timeoutRef.current) {
clearTimeout(timeoutRef.current);
}
timeoutRef.current = setTimeout(() => {
setShowTooltip(false);
}, 100); // Небольшая задержка перед скрытием
};
// Очищаем таймеры при размонтировании
useEffect(() => {
return () => {
if (timeoutRef.current) {
clearTimeout(timeoutRef.current);
}
};
}, []);
return (
<>
<section className="section-info">
<div className="w-layout-blockcontainer container info w-container">
<div className="w-layout-vflex flex-block-9">
<div className="w-layout-hflex flex-block-7">
<a href="#" className="link-block w-inline-block">
<div>Главная</div>
</a>
<div className="text-block-3"></div>
<a href="/brands" className="link-block w-inline-block">
<div>Оригинальный каталог</div>
</a>
<div className="text-block-3"></div>
<a href="#" className="link-block-2 w-inline-block">
<div>{vehicleName}</div>
</a>
</div>
<div className="w-layout-hflex flex-block-8">
<div className="w-layout-hflex flex-block-10">
<h1 className="heading">{vehicleName}</h1>
</div>
</div>
</div>
<div className="w-layout-hflex flex-block-112">
<div className="text-block-55">{displayText}</div>
<div className="relative inline-block">
<div
ref={iconRef}
className="w-embed cursor-pointer hover:opacity-70 transition-opacity"
onMouseEnter={handleMouseEnter}
onMouseLeave={handleMouseLeave}
role="button"
tabIndex={0}
aria-label="Показать полную информацию об автомобиле"
onFocus={handleMouseEnter}
onBlur={handleMouseLeave}
>
<svg width="18" height="20" viewBox="0 0 18 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.1 13.5H9.89999V8.1H8.1V13.5ZM8.99999 6.3C9.25499 6.3 9.46889 6.2136 9.64169 6.0408C9.81449 5.868 9.90059 5.6544 9.89999 5.4C9.89939 5.1456 9.81299 4.932 9.64079 4.7592C9.46859 4.5864 9.25499 4.5 8.99999 4.5C8.745 4.5 8.53139 4.5864 8.35919 4.7592C8.187 4.932 8.1006 5.1456 8.1 5.4C8.0994 5.6544 8.1858 5.8683 8.35919 6.0417C8.53259 6.2151 8.74619 6.3012 8.99999 6.3ZM8.99999 18C7.755 18 6.585 17.7636 5.49 17.2908C4.395 16.818 3.4425 16.1769 2.6325 15.3675C1.8225 14.5581 1.1814 13.6056 0.709201 12.51C0.237001 11.4144 0.000601139 10.2444 1.13924e-06 9C-0.00059886 7.7556 0.235801 6.5856 0.709201 5.49C1.1826 4.3944 1.8237 3.4419 2.6325 2.6325C3.4413 1.8231 4.3938 1.182 5.49 0.7092C6.5862 0.2364 7.7562 0 8.99999 0C10.2438 0 11.4138 0.2364 12.51 0.7092C13.6062 1.182 14.5587 1.8231 15.3675 2.6325C16.1763 3.4419 16.8177 4.3944 17.2917 5.49C17.7657 6.5856 18.0018 7.7556 18 9C17.9982 10.2444 17.7618 11.4144 17.2908 12.51C16.8198 13.6056 16.1787 14.5581 15.3675 15.3675C14.5563 16.1769 13.6038 16.8183 12.51 17.2917C11.4162 17.7651 10.2462 18.0012 8.99999 18Z" fill="currentcolor" />
</svg>
</div>
</div>
</div>
</div>
</div>
<div className="w-layout-hflex flex-block-112">
<div className="text-block-55">{vehicleInfo}</div>
<div className="w-embed">
{/* SVG icon */}
<svg width="18" height="20" viewBox="0 0 18 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.1 13.5H9.89999V8.1H8.1V13.5ZM8.99999 6.3C9.25499 6.3 9.46889 6.2136 9.64169 6.0408C9.81449 5.868 9.90059 5.6544 9.89999 5.4C9.89939 5.1456 9.81299 4.932 9.64079 4.7592C9.46859 4.5864 9.25499 4.5 8.99999 4.5C8.745 4.5 8.53139 4.5864 8.35919 4.7592C8.187 4.932 8.1006 5.1456 8.1 5.4C8.0994 5.6544 8.1858 5.8683 8.35919 6.0417C8.53259 6.2151 8.74619 6.3012 8.99999 6.3ZM8.99999 18C7.755 18 6.585 17.7636 5.49 17.2908C4.395 16.818 3.4425 16.1769 2.6325 15.3675C1.8225 14.5581 1.1814 13.6056 0.709201 12.51C0.237001 11.4144 0.000601139 10.2444 1.13924e-06 9C-0.00059886 7.7556 0.235801 6.5856 0.709201 5.49C1.1826 4.3944 1.8237 3.4419 2.6325 2.6325C3.4413 1.8231 4.3938 1.182 5.49 0.7092C6.5862 0.2364 7.7562 0 8.99999 0C10.2438 0 11.4138 0.2364 12.51 0.7092C13.6062 1.182 14.5587 1.8231 15.3675 2.6325C16.1763 3.4419 16.8177 4.3944 17.2917 5.49C17.7657 6.5856 18.0018 7.7556 18 9C17.9982 10.2444 17.7618 11.4144 17.2908 12.51C16.8198 13.6056 16.1787 14.5581 15.3675 15.3675C14.5563 16.1769 13.6038 16.8183 12.51 17.2917C11.4162 17.7651 10.2462 18.0012 8.99999 18Z" fill="currentcolor" />
</svg>
</section>
{/* Tooltip с фиксированным позиционированием */}
{showTooltip && vehicleAttributes.length > 0 && (
<div
className="fixed w-[500px] max-w-[90vw] bg-white border border-gray-200 rounded-lg shadow-xl z-[9999] p-4 animate-in fade-in-0 zoom-in-95 duration-200"
style={{
left: `${tooltipPosition.x}px`,
top: `${tooltipPosition.y}px`,
}}
onMouseEnter={handleMouseEnter}
onMouseLeave={handleMouseLeave}
>
{/* Заголовок */}
<div className="mb-3 pb-2 border-b border-gray-100">
<h3 className="text-sm font-semibold text-gray-900">
Полная информация об автомобиле
</h3>
<p className="text-xs text-gray-600 mt-1">{vehicleName}</p>
</div>
{/* Атрибуты в сетке */}
<div className="grid grid-cols-1 sm:grid-cols-2 gap-3">
{vehicleAttributes.map((attr, index) => (
<div key={index} className="flex flex-col">
<dt className="text-xs font-medium text-gray-500 mb-1">{attr.name}</dt>
<dd className="text-xs text-gray-900 break-words">{attr.value}</dd>
</div>
))}
</div>
{/* Подвал */}
<div className="mt-3 pt-2 border-t border-gray-100">
<div className="text-xs text-gray-500 text-center">
Всего параметров: {vehicleAttributes.length}
</div>
</div>
</div>
</div>
</div>
</section>
);
)}
</>
);
};
export default InfoVin;

View File

@ -5,10 +5,10 @@ import { GET_LAXIMO_UNIT_INFO, GET_LAXIMO_UNIT_IMAGE_MAP } from '@/lib/graphql';
import BrandSelectionModal from '../BrandSelectionModal';
interface KnotInProps {
catalogCode: string;
vehicleId: string;
catalogCode?: string;
vehicleId?: string;
ssd?: string;
unitId: string;
unitId?: string;
unitName?: string;
parts?: Array<{
detailid?: string;
@ -46,8 +46,8 @@ const KnotIn: React.FC<KnotInProps> = ({ catalogCode, vehicleId, ssd, unitId, un
const { data: unitInfoData, loading: unitInfoLoading, error: unitInfoError } = useQuery(
GET_LAXIMO_UNIT_INFO,
{
variables: { catalogCode, vehicleId, unitId, ssd: ssd || '' },
skip: !catalogCode || vehicleId === undefined || vehicleId === null || !unitId,
variables: { catalogCode: catalogCode || '', vehicleId: vehicleId || '', unitId: unitId || '', ssd: ssd || '' },
skip: !catalogCode || !vehicleId || !unitId,
errorPolicy: 'all',
}
);
@ -55,12 +55,22 @@ const KnotIn: React.FC<KnotInProps> = ({ catalogCode, vehicleId, ssd, unitId, un
const { data: imageMapData, loading: imageMapLoading, error: imageMapError } = useQuery(
GET_LAXIMO_UNIT_IMAGE_MAP,
{
variables: { catalogCode, vehicleId, unitId, ssd: ssd || '' },
skip: !catalogCode || vehicleId === undefined || vehicleId === null || !unitId,
variables: { catalogCode: catalogCode || '', vehicleId: vehicleId || '', unitId: unitId || '', ssd: ssd || '' },
skip: !catalogCode || !vehicleId || !unitId,
errorPolicy: 'all',
}
);
// Если нет необходимых данных, показываем заглушку
if (!catalogCode || !vehicleId || !unitId) {
return (
<div className="text-center py-8 text-gray-500">
<div className="text-lg font-medium mb-2">Схема узла</div>
<div className="text-sm">Выберите узел для отображения схемы</div>
</div>
);
}
const unitInfo = unitInfoData?.laximoUnitInfo;
const coordinates = imageMapData?.laximoUnitImageMap?.coordinates || [];
const imageUrl = unitInfo?.imageurl ? getImageUrl(unitInfo.imageurl, selectedImageSize) : '';
@ -113,9 +123,9 @@ const KnotIn: React.FC<KnotInProps> = ({ catalogCode, vehicleId, ssd, unitId, un
<>
<div className="relative inline-block">
{/* ВРЕМЕННО: выводим количество точек для быстрой проверки */}
<div style={{ position: 'absolute', top: 4, left: 4, zIndex: 20, background: 'rgba(255,0,0,0.1)', color: '#c00', fontWeight: 700, fontSize: 14, padding: '2px 8px', borderRadius: 6 }}>
{/* <div style={{ position: 'absolute', top: 4, left: 4, zIndex: 20, background: 'rgba(255,0,0,0.1)', color: '#c00', fontWeight: 700, fontSize: 14, padding: '2px 8px', borderRadius: 6 }}>
{coordinates.length} точек
</div>
</div> */}
<img
ref={imgRef}
src={imageUrl}

View File

@ -1,9 +1,8 @@
import React, { useState } from "react";
import { useRouter } from "next/router";
import BrandSelectionModal from '../BrandSelectionModal';
interface KnotPartsProps {
parts: Array<{
parts?: Array<{
detailid?: string;
codeonimage?: string | number;
oem?: string;
@ -15,19 +14,33 @@ interface KnotPartsProps {
attributes?: Array<{ key: string; name?: string; value: string }>;
}>;
selectedCodeOnImage?: string | number;
catalogCode?: string;
vehicleId?: string;
}
const KnotParts: React.FC<KnotPartsProps> = ({ parts, selectedCodeOnImage }) => {
const [isBrandModalOpen, setIsBrandModalOpen] = useState(false);
const [selectedDetail, setSelectedDetail] = useState<{ oem: string; name: string } | null>(null);
const KnotParts: React.FC<KnotPartsProps> = ({ parts = [], selectedCodeOnImage, catalogCode, vehicleId }) => {
const router = useRouter();
const handlePriceClick = (part: any) => {
if (part.oem) {
setSelectedDetail({ oem: part.oem, name: part.name || '' });
setIsBrandModalOpen(true);
if (part.oem && catalogCode && vehicleId !== undefined) {
// Переходим на страницу выбора бренда
const url = `/vehicle-search/${catalogCode}/${vehicleId}/part/${part.oem}/brands?detailName=${encodeURIComponent(part.name || '')}`;
router.push(url);
}
};
// Если нет деталей, показываем заглушку
if (!parts || parts.length === 0) {
return (
<div className="knot-parts">
<div className="text-center py-8 text-gray-500">
<div className="text-lg font-medium mb-2">Список деталей</div>
<div className="text-sm">Выберите узел для отображения деталей</div>
</div>
</div>
);
}
return (
<>
<div className="knot-parts">
@ -60,12 +73,6 @@ const KnotParts: React.FC<KnotPartsProps> = ({ parts, selectedCodeOnImage }) =>
);
})}
</div>
<BrandSelectionModal
isOpen={isBrandModalOpen}
onClose={() => setIsBrandModalOpen(false)}
articleNumber={selectedDetail?.oem || ''}
detailName={selectedDetail?.name || ''}
/>
</>
);
};

View File

@ -1,83 +1,155 @@
import React, { useState, useRef } from "react";
import { useQuery, useLazyQuery } from "@apollo/client";
import { GET_LAXIMO_CATEGORIES, GET_LAXIMO_UNITS } from "@/lib/graphql/laximo";
import React, { useState, useEffect, useRef } from 'react';
import { useQuery, useLazyQuery } from '@apollo/client';
import { GET_LAXIMO_CATEGORIES, GET_LAXIMO_QUICK_GROUPS, GET_LAXIMO_UNITS } from '@/lib/graphql/laximo';
interface VinCategoryProps {
catalogCode: string;
vehicleId: string;
catalogCode?: string;
vehicleId?: string;
ssd?: string;
onNodeSelect?: (node: any) => void;
activeTab?: 'uzly' | 'manufacturer';
onQuickGroupSelect?: (group: any) => void;
onCategoryClick?: (e?: React.MouseEvent) => void;
}
const VinCategory: React.FC<VinCategoryProps> = ({ catalogCode, vehicleId, ssd, onNodeSelect }) => {
const { data: categoriesData, loading: categoriesLoading, error: categoriesError } = useQuery(GET_LAXIMO_CATEGORIES, {
variables: { catalogCode, vehicleId, ssd },
skip: !catalogCode || vehicleId === undefined || vehicleId === null,
errorPolicy: "all",
});
const categories = categoriesData?.laximoCategories || [];
const VinCategory: React.FC<VinCategoryProps> = ({ catalogCode, vehicleId, ssd, onNodeSelect, activeTab = 'uzly', onQuickGroupSelect, onCategoryClick }) => {
const [selectedCategory, setSelectedCategory] = useState<any>(null);
const [unitsByCategory, setUnitsByCategory] = useState<{ [key: string]: any[] }>({});
const lastCategoryIdRef = useRef<string | null>(null);
// Сброс выбранной категории при смене вкладки
useEffect(() => {
setSelectedCategory(null);
}, [activeTab]);
// Запрос для "Общие" (QuickGroups)
const { data: quickGroupsData, loading: quickGroupsLoading, error: quickGroupsError } = useQuery(GET_LAXIMO_QUICK_GROUPS, {
variables: { catalogCode: catalogCode || '', vehicleId: vehicleId || '', ssd: ssd || '' },
skip: !catalogCode || !vehicleId || activeTab !== 'uzly',
errorPolicy: 'all'
});
// Запрос для "От производителя" (Categories)
const { data: categoriesData, loading: categoriesLoading, error: categoriesError } = useQuery(GET_LAXIMO_CATEGORIES, {
variables: { catalogCode: catalogCode || '', vehicleId: vehicleId || '', ssd: ssd || '' },
skip: !catalogCode || !vehicleId || activeTab !== 'manufacturer',
errorPolicy: 'all'
});
// Запрос для получения units (подкатегорий) в режиме "От производителя"
const [getUnits] = useLazyQuery(GET_LAXIMO_UNITS, {
onCompleted: (data) => {
if (data && data.laximoUnits && lastCategoryIdRef.current) {
setUnitsByCategory((prev) => ({
setUnitsByCategory(prev => ({
...prev,
[lastCategoryIdRef.current!]: data.laximoUnits || [],
[lastCategoryIdRef.current!]: data.laximoUnits || []
}));
}
},
});
const [selectedCategory, setSelectedCategory] = useState<any | null>(null);
const lastCategoryIdRef = useRef<string | null>(null);
// Если выбрана категория — показываем подкатегории (children или units)
let subcategories: any[] = [];
if (selectedCategory) {
if (selectedCategory.children && selectedCategory.children.length > 0) {
subcategories = selectedCategory.children;
} else {
subcategories = unitsByCategory[selectedCategory.quickgroupid] || [];
}
}
const handleCategoryClick = (cat: any) => {
if (cat.children && cat.children.length > 0) {
setSelectedCategory(cat);
} else {
// Если нет children, грузим units (подкатегории)
if (!unitsByCategory[cat.quickgroupid]) {
lastCategoryIdRef.current = cat.quickgroupid;
getUnits({ variables: { catalogCode, vehicleId, ssd, categoryId: cat.quickgroupid } });
}
setSelectedCategory(cat);
},
onError: (error) => {
console.error('Error loading units:', error);
}
};
});
const categories = activeTab === 'uzly' ? (quickGroupsData?.laximoQuickGroups || []) : (categoriesData?.laximoCategories || []);
const loading = activeTab === 'uzly' ? quickGroupsLoading : categoriesLoading;
const error = activeTab === 'uzly' ? quickGroupsError : categoriesError;
const handleBack = () => {
setSelectedCategory(null);
};
const handleSubcategoryClick = (subcat: any) => {
if (onNodeSelect) {
onNodeSelect({
...subcat,
unitid: subcat.unitid || subcat.quickgroupid || subcat.id,
});
const handleCategoryClick = (category: any) => {
// Если передан onCategoryClick, используем его
if (onCategoryClick) {
onCategoryClick();
return;
}
if (activeTab === 'uzly') {
// Логика для вкладки "Общие" (QuickGroups)
if (category.children && category.children.length > 0) {
setSelectedCategory(category);
} else if (category.link && onQuickGroupSelect) {
onQuickGroupSelect(category);
} else if (onNodeSelect) {
onNodeSelect(category);
}
} else {
// Логика для вкладки "От производителя" (Categories)
if (category.children && category.children.length > 0) {
setSelectedCategory(category);
} else {
// Если нет children, грузим units (подкатегории)
const categoryId = category.categoryid || category.quickgroupid || category.id;
if (!unitsByCategory[categoryId] && catalogCode && vehicleId) {
lastCategoryIdRef.current = categoryId;
getUnits({
variables: {
catalogCode,
vehicleId,
ssd: ssd || '',
categoryId
}
});
}
setSelectedCategory(category);
}
}
};
if (categoriesLoading) return <div>Загрузка категорий...</div>;
if (categoriesError) return <div style={{ color: "red" }}>Ошибка: {categoriesError.message}</div>;
const handleSubcategoryClick = (subcat: any) => {
if (activeTab === 'manufacturer' && onNodeSelect) {
// Для режима "От производителя" при клике на подкатегорию открываем KnotIn
onNodeSelect({
...subcat,
unitid: subcat.unitid || subcat.categoryid || subcat.quickgroupid || subcat.id
});
} else {
handleCategoryClick(subcat);
}
};
// Если нет данных о транспортном средстве, показываем заглушку
if (!catalogCode || !vehicleId) {
return (
<div className="w-layout-vflex flex-block-14-copy-copy">
<div className="text-center py-8 text-gray-500">
<div className="text-lg font-medium mb-2">Каталог запчастей</div>
<div className="text-sm">Выберите автомобиль для просмотра каталога</div>
</div>
</div>
);
}
if (loading) return <div>Загрузка категорий...</div>;
if (error) return <div style={{ color: "red" }}>Ошибка: {error.message}</div>;
// Определяем, какие подкатегории показывать
let subcategories: any[] = [];
if (selectedCategory) {
if (activeTab === 'uzly') {
// Для вкладки "Общие" используем children
subcategories = selectedCategory.children || [];
} else {
// Для вкладки "От производителя" используем либо children, либо units
if (selectedCategory.children && selectedCategory.children.length > 0) {
subcategories = selectedCategory.children;
} else {
const categoryId = selectedCategory.categoryid || selectedCategory.quickgroupid || selectedCategory.id;
subcategories = unitsByCategory[categoryId] || [];
}
}
}
return (
<div className="w-layout-vflex flex-block-14-copy-copy">
<div className="w-layout-vflex flex-block-14-copy-copy">
{!selectedCategory ? (
// Список категорий
categories.map((cat: any, idx: number) => (
<div
className="div-block-131"
key={cat.quickgroupid || cat.id || idx}
key={cat.quickgroupid || cat.categoryid || cat.id || idx}
onClick={() => handleCategoryClick(cat)}
style={{ cursor: "pointer" }}
>
@ -91,9 +163,9 @@ const VinCategory: React.FC<VinCategoryProps> = ({ catalogCode, vehicleId, ssd,
</div>
))
) : (
// Список подкатегорий (children или units)
// Список подкатегорий
<>
<div className="div-block-131" onClick={handleBack} style={{ cursor: "pointer", fontWeight: 500 }}>
{/* <div className="div-block-131" onClick={handleBack} style={{ cursor: "pointer", fontWeight: 500 }}>
<div className="text-block-57">← Назад</div>
<div className="w-embed">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
@ -101,28 +173,28 @@ const VinCategory: React.FC<VinCategoryProps> = ({ catalogCode, vehicleId, ssd,
<path fillRule="evenodd" clipRule="evenodd" d="M10.9303 17L10 16.0825L14.1395 12L10 7.91747L10.9303 7L16 12L10.9303 17Z" fill="white"></path>
</svg>
</div>
</div>
</div> */}
{subcategories.length === 0 && <div style={{ color: "#888", padding: 8 }}>Нет подкатегорий</div>}
{subcategories.map((subcat: any, idx: number) => (
<div
className="div-block-131"
key={subcat.quickgroupid || subcat.unitid || subcat.id || idx}
key={subcat.quickgroupid || subcat.categoryid || subcat.unitid || subcat.id || idx}
onClick={() => handleSubcategoryClick(subcat)}
style={{ cursor: "pointer" }}
>
<div className="text-block-57">{subcat.name}</div>
<div className="w-embed">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="24" width="24" height="24" rx="12" transform="rotate(90 24 0)" fill="currentcolor"></rect>
<path fillRule="evenodd" clipRule="evenodd" d="M10.9303 17L10 16.0825L14.1395 12L10 7.91747L10.9303 7L16 12L10.9303 17Z" fill="white"></path>
</svg>
</div>
</div>
))}
<div className="w-embed">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="24" width="24" height="24" rx="12" transform="rotate(90 24 0)" fill="currentcolor"></rect>
<path fillRule="evenodd" clipRule="evenodd" d="M10.9303 17L10 16.0825L14.1395 12L10 7.91747L10.9303 7L16 12L10.9303 17Z" fill="white"></path>
</svg>
</div>
</div>
))}
</>
)}
</div>
);
</div>
);
};
export default VinCategory;

View File

@ -1,27 +1,41 @@
import React, { useState, useEffect } from "react";
import { useLazyQuery, useQuery } from '@apollo/client';
import { SEARCH_LAXIMO_FULLTEXT, GET_LAXIMO_CATEGORIES, GET_LAXIMO_UNITS, GET_LAXIMO_QUICK_GROUPS, GET_LAXIMO_QUICK_DETAIL } from '@/lib/graphql/laximo';
import VinPartCard from './VinPartCard';
import { GET_LAXIMO_FULLTEXT_SEARCH, GET_LAXIMO_CATEGORIES, GET_LAXIMO_UNITS, GET_LAXIMO_QUICK_GROUPS, GET_LAXIMO_QUICK_DETAIL } from '@/lib/graphql/laximo';
interface VinLeftbarProps {
vehicleInfo: {
vehicleInfo?: {
catalog: string;
vehicleid: string;
ssd: string;
[key: string]: any;
};
onSearchResults?: (results: any[]) => void;
onSearchResults?: (data: {
results: any[];
loading: boolean;
error: any;
query: string;
isSearching?: boolean;
}) => void;
onNodeSelect?: (node: any) => void;
onActiveTabChange?: (tab: 'uzly' | 'manufacturer') => void;
onQuickGroupSelect?: (group: any) => void;
}
const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, onNodeSelect }) => {
const catalogCode = vehicleInfo.catalog;
const vehicleId = vehicleInfo.vehicleid;
const ssd = vehicleInfo.ssd;
interface QuickGroup {
quickgroupid: string;
name: string;
link?: boolean;
children?: QuickGroup[];
}
const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, onNodeSelect, onActiveTabChange, onQuickGroupSelect }) => {
const catalogCode = vehicleInfo?.catalog || '';
const vehicleId = vehicleInfo?.vehicleid || '';
const ssd = vehicleInfo?.ssd || '';
const [openIndex, setOpenIndex] = useState<number | null>(null);
const [searchQuery, setSearchQuery] = useState('');
const [activeTab, setActiveTab] = useState<'uzly' | 'manufacturer'>('uzly');
const [executeSearch, { data, loading, error }] = useLazyQuery(SEARCH_LAXIMO_FULLTEXT, { errorPolicy: 'all' });
const [executeSearch, { data, loading, error }] = useLazyQuery(GET_LAXIMO_FULLTEXT_SEARCH, { errorPolicy: 'all' });
const { data: categoriesData, loading: categoriesLoading, error: categoriesError } = useQuery(GET_LAXIMO_CATEGORIES, {
variables: { catalogCode, vehicleId, ssd },
@ -58,7 +72,6 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
console.error('SSD обязателен для поиска по названию');
return;
}
console.log('SEARCH PARAMS', { catalogCode, vehicleId, searchQuery: searchQuery.trim(), ssd });
executeSearch({
variables: {
catalogCode,
@ -79,13 +92,15 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
const searchResults = data?.laximoFulltextSearch;
useEffect(() => {
if (searchResults && onSearchResults) {
onSearchResults(searchResults.details || []);
if (onSearchResults) {
onSearchResults({
results: searchResults?.details || [],
loading: loading,
error: error,
query: searchQuery
});
}
if (!searchQuery.trim() && onSearchResults) {
onSearchResults([]);
}
}, [searchResults, searchQuery, onSearchResults]);
}, [searchResults, loading, error, searchQuery]);
// --- Новый блок: вычисляем доступность поиска ---
const isSearchAvailable = !!catalogCode && vehicleId !== undefined && vehicleId !== null && !!ssd && ssd.trim() !== '';
@ -95,129 +110,94 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
const showTips = isSearchAvailable && !searchQuery.trim() && !loading;
// --- QuickGroups (от производителя) ---
const [selectedQuickGroup, setSelectedQuickGroup] = useState<any | null>(null);
const { data: quickGroupsData, loading: quickGroupsLoading, error: quickGroupsError } = useQuery(GET_LAXIMO_QUICK_GROUPS, {
variables: { catalogCode, vehicleId, ssd },
skip: !catalogCode || vehicleId === undefined || vehicleId === null || activeTab !== 'manufacturer',
skip: !catalogCode || vehicleId === undefined || vehicleId === null,
errorPolicy: 'all'
});
const quickGroups = quickGroupsData?.laximoQuickGroups || [];
const [expandedQuickGroups, setExpandedQuickGroups] = useState<Set<string>>(new Set());
const [expandedQuickGroup, setExpandedQuickGroup] = useState<string | null>(null);
const [expandedSubQuickGroup, setExpandedSubQuickGroup] = useState<string | null>(null);
const handleQuickGroupToggle = (groupId: string) => {
setExpandedQuickGroups(prev => {
const newSet = new Set(prev);
if (newSet.has(groupId)) {
newSet.delete(groupId);
} else {
newSet.add(groupId);
}
return newSet;
});
setExpandedQuickGroup(prev => (prev === groupId ? null : groupId));
setExpandedSubQuickGroup(null);
};
const handleSubQuickGroupToggle = (groupId: string) => {
setExpandedSubQuickGroup(prev => (prev === groupId ? null : groupId));
};
const handleQuickGroupClick = (group: any) => {
if (group.link) {
setSelectedQuickGroup(group);
// Передаем выбранную группу в родительский компонент для отображения справа
if (onQuickGroupSelect) {
onQuickGroupSelect(group);
}
} else {
handleQuickGroupToggle(group.quickgroupid);
}
};
// Детали выбранной группы (если link: true)
console.log('QuickDetail QUERY VARS', {
catalogCode,
vehicleId,
quickGroupId: selectedQuickGroup?.quickgroupid,
ssd
});
const skipQuickDetail =
!selectedQuickGroup ||
!catalogCode ||
vehicleId === undefined ||
vehicleId === null ||
!selectedQuickGroup?.quickgroupid ||
!ssd ||
ssd.trim() === '';
console.log('QuickDetail QUERY VARS', {
catalogCode,
vehicleId,
quickGroupId: selectedQuickGroup?.quickgroupid,
ssd: ssd ? `${ssd.substring(0, 30)}...` : 'отсутствует'
});
console.log('QuickDetail SKIP CONDITIONS', {
hasSelectedQuickGroup: !!selectedQuickGroup,
hasCatalogCode: !!catalogCode,
hasVehicleId: vehicleId !== undefined && vehicleId !== null,
hasQuickGroupId: !!selectedQuickGroup?.quickgroupid,
hasSsd: !!ssd && ssd.trim() !== '',
skipQuickDetail
});
const { data: quickDetailData, loading: quickDetailLoading, error: quickDetailError } = useQuery(GET_LAXIMO_QUICK_DETAIL, {
variables: selectedQuickGroup?.quickgroupid && !skipQuickDetail ? {
catalogCode,
vehicleId,
quickGroupId: selectedQuickGroup.quickgroupid,
ssd
} : undefined,
skip: skipQuickDetail,
errorPolicy: 'all'
});
const quickDetail = quickDetailData?.laximoQuickDetail;
const renderQuickGroupTree = (groups: any[], level = 0): React.ReactNode => (
<div>
{groups.map(group => (
<div key={group.quickgroupid} style={{ marginLeft: level * 16, marginBottom: 8 }}>
<div
className={`flex items-center p-2 rounded cursor-pointer border ${group.link ? 'bg-white hover:bg-red-50 border-gray-200 hover:border-red-300' : 'bg-gray-50 hover:bg-gray-100 border-gray-200'}`}
onClick={() => handleQuickGroupClick(group)}
>
{group.children && group.children.length > 0 && (
<svg className={`w-4 h-4 text-gray-400 mr-2 transition-transform ${expandedQuickGroups.has(group.quickgroupid) ? 'rotate-90' : ''}`} fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
</svg>
)}
<span className={`font-medium ${group.link ? 'text-gray-900' : 'text-gray-600'}`}>{group.name}</span>
{group.link && (
<span className="ml-2 inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-green-100 text-green-800">Доступен поиск</span>
)}
</div>
{group.children && group.children.length > 0 && expandedQuickGroups.has(group.quickgroupid) && (
<div className="mt-1">
{renderQuickGroupTree(group.children, level + 1)}
</div>
)}
</div>
))}
</div>
);
// === Полнотекстовый поиск деталей (аналогично FulltextSearchSection) ===
const [fulltextQuery, setFulltextQuery] = useState('');
const [executeFulltextSearch, { data: fulltextData, loading: fulltextLoading, error: fulltextError }] = useLazyQuery(SEARCH_LAXIMO_FULLTEXT, { errorPolicy: 'all' });
const [executeFulltextSearch, { data: fulltextData, loading: fulltextLoading, error: fulltextError }] = useLazyQuery(GET_LAXIMO_FULLTEXT_SEARCH, { errorPolicy: 'all' });
const handleFulltextSearch = () => {
if (!fulltextQuery.trim()) return;
if (!fulltextQuery.trim()) {
if (onSearchResults) {
onSearchResults({
results: [],
loading: false,
error: null,
query: '',
isSearching: false
});
}
return;
}
if (!ssd || ssd.trim() === '') {
console.error('SSD обязателен для поиска по названию');
return;
}
// Отправляем начальное состояние поиска родителю
if (onSearchResults) {
onSearchResults({
results: [],
loading: true,
error: null,
query: fulltextQuery.trim(),
isSearching: true
});
}
executeFulltextSearch({
variables: {
catalogCode,
vehicleId,
searchText: fulltextQuery.trim(),
searchQuery: fulltextQuery.trim(),
ssd
}
});
};
const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
const newValue = e.target.value;
setFulltextQuery(newValue);
};
useEffect(() => {
if (onSearchResults && (fulltextData || fulltextLoading || fulltextError)) {
onSearchResults({
results: fulltextData?.laximoFulltextSearch?.details || [],
loading: fulltextLoading,
error: fulltextError,
query: fulltextQuery,
isSearching: true
});
}
}, [fulltextData, fulltextLoading, fulltextError, fulltextQuery]);
const handleFulltextKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
if (e.key === 'Enter') {
e.preventDefault();
@ -227,13 +207,31 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
const fulltextResults = fulltextData?.laximoFulltextSearch?.details || [];
useEffect(() => {
if (onActiveTabChange) {
onActiveTabChange(activeTab);
}
}, [activeTab]);
// Если нет данных о транспортном средстве, показываем заглушку
if (!vehicleInfo) {
return (
<div className="w-layout-vflex vinleftbar">
<div className="text-center py-8 text-gray-500">
<div className="text-lg font-medium mb-2">Поиск запчастей</div>
<div className="text-sm">Выберите автомобиль для поиска запчастей</div>
</div>
</div>
);
}
return (
<div className="w-layout-vflex vinleftbar">
{/* === Форма полнотекстового поиска === */}
<div className="div-block-2">
<div className="form-block w-form">
<form id="vin-form-search" name="vin-form-search" data-name="vin-form-search" action="#" method="post" className="form" onSubmit={e => { e.preventDefault(); handleFulltextSearch(); }}>
<a href="#" className="link-block-3 w-inline-block" onClick={e => { e.preventDefault(); if (!ssd || ssd.trim() === '') { return; } handleFulltextSearch(); }}>
<a href="#" className="link-block-3 w-inline-block" onClick={e => { e.preventDefault(); handleFulltextSearch(); }}>
<div className="code-embed-6 w-embed">
{/* SVG */}
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
@ -252,18 +250,10 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
id="VinSearchInput"
required
value={fulltextQuery}
onChange={e => setFulltextQuery(e.target.value)}
onChange={handleInputChange}
onKeyDown={handleFulltextKeyDown}
disabled={fulltextLoading}
/>
<button
type="button"
onClick={handleFulltextSearch}
disabled={!fulltextQuery.trim() || fulltextLoading || !ssd || ssd.trim() === ''}
className="px-4 py-2 bg-red-600 text-white rounded-md hover:bg-red-700 disabled:bg-gray-400 disabled:cursor-not-allowed transition-colors ml-2"
>
{fulltextLoading ? 'Поиск...' : 'Найти'}
</button>
</form>
{(!ssd || ssd.trim() === '') && (
<div className="mt-3 p-3 bg-yellow-50 border border-yellow-200 rounded-lg">
@ -282,64 +272,6 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
</div>
</div>
)}
{fulltextError && (
<div className="bg-red-50 border border-red-200 rounded-lg p-4 mt-3">
<div className="flex">
<div className="flex-shrink-0">
<svg className="h-5 w-5 text-red-400" viewBox="0 0 20 20" fill="currentColor">
<path fillRule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clipRule="evenodd" />
</svg>
</div>
<div className="ml-3">
<h3 className="text-sm font-medium text-red-800">
Ошибка поиска
</h3>
<div className="mt-2 text-sm text-red-700">
<p>{fulltextError.message}</p>
</div>
</div>
</div>
</div>
)}
{fulltextResults && (
<div className="bg-white border border-gray-200 rounded-lg overflow-hidden mt-3">
<div className="px-6 py-4 bg-gray-50 border-b border-gray-200">
<h3 className="text-lg font-medium text-gray-900">
Результаты поиска: "{fulltextQuery}"
</h3>
<p className="text-sm text-gray-600 mt-1">
Найдено {fulltextResults.length} деталей
</p>
</div>
{fulltextResults.length > 0 ? (
<div className="space-y-4 p-6">
<div className="text-sm text-blue-700 bg-blue-50 border border-blue-200 rounded-lg p-3">
💡 Нажмите на карточку детали для поиска предложений и цен. Используйте кнопку "Показать применимость" для просмотра применения в автомобиле.
</div>
{fulltextResults.map((detail: any, index: number) => (
<VinPartCard
key={`${detail.oem}-${index}`}
n={index + 1}
name={detail.name}
oem={detail.oem}
/>
))}
</div>
) : (
<div className="px-6 py-8 text-center">
<svg className="w-12 h-12 mx-auto text-gray-400 mb-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9.172 16.172a4 4 0 015.656 0M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
</svg>
<p className="text-gray-600">
По запросу "{fulltextQuery}" ничего не найдено
</p>
<p className="text-sm text-gray-500 mt-1">
Попробуйте изменить поисковый запрос
</p>
</div>
)}
</div>
)}
</div>
</div>
<div className="w-layout-vflex flex-block-113">
@ -357,6 +289,10 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
e.preventDefault();
if (searchQuery) setSearchQuery('');
setActiveTab('uzly');
// Очищаем выбранную группу при смене таба
if (onQuickGroupSelect) {
onQuickGroupSelect(null);
}
}}
>
Узлы
@ -374,6 +310,10 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
e.preventDefault();
if (searchQuery) setSearchQuery('');
setActiveTab('manufacturer');
// Очищаем выбранную группу при смене таба
if (onQuickGroupSelect) {
onQuickGroupSelect(null);
}
}}
>
От производителя
@ -381,6 +321,112 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
</div>
{/* Tab content start */}
{activeTab === 'uzly' ? (
// Общие (QuickGroups - бывшие "От производителя")
quickGroupsLoading ? (
<div style={{ padding: 16, textAlign: 'center' }}>Загружаем группы быстрого поиска...</div>
) : quickGroupsError ? (
<div style={{ color: 'red', padding: 16 }}>Ошибка загрузки групп: {quickGroupsError.message}</div>
) : (
<>
{(quickGroups as QuickGroup[]).map((group: QuickGroup) => {
const hasChildren = group.children && group.children.length > 0;
const isOpen = expandedQuickGroup === group.quickgroupid;
if (!hasChildren) {
return (
<a
href="#"
key={group.quickgroupid}
className="dropdown-link-3 w-dropdown-link"
onClick={(e) => {
e.preventDefault();
handleQuickGroupClick(group);
}}
>
{group.name}
</a>
);
}
return (
<div
key={group.quickgroupid}
data-hover="false"
data-delay="0"
className={`dropdown-4 w-dropdown${isOpen ? " w--open" : ""}`}
>
<div
className={`dropdown-toggle-3 w-dropdown-toggle${isOpen ? " w--open active" : ""}`}
onClick={() => handleQuickGroupToggle(group.quickgroupid)}
style={{ cursor: "pointer" }}
>
<div className="w-icon-dropdown-toggle"></div>
<div className="text-block-56">{group.name}</div>
</div>
<nav className={`dropdown-list-4 w-dropdown-list${isOpen ? " w--open" : ""}`}>
{group.children?.map((child: QuickGroup) => {
const hasSubChildren = child.children && child.children.length > 0;
const isChildOpen = expandedSubQuickGroup === child.quickgroupid;
if (!hasSubChildren) {
return (
<a
href="#"
key={child.quickgroupid}
className="dropdown-link-3 w-dropdown-link"
onClick={(e) => {
e.preventDefault();
handleQuickGroupClick(child);
}}
>
{child.name}
</a>
);
}
return (
<div
key={child.quickgroupid}
data-hover="false"
data-delay="0"
className={`dropdown-4 w-dropdown pl-0${isChildOpen ? " w--open" : ""}`}
>
<div
className={`dropdown-toggle-card w-dropdown-toggle pl-0${isChildOpen ? " w--open active" : ""}`}
onClick={() => handleSubQuickGroupToggle(child.quickgroupid)}
style={{ cursor: "pointer" }}
>
<div className="w-icon-dropdown-toggle"></div>
<div className="text-block-56">{child.name}</div>
</div>
<nav className={`dropdown-list-4 w-dropdown-list pl-0${isChildOpen ? " w--open" : ""}`}>
{child.children?.map((subChild: QuickGroup) => (
<a
href="#"
key={subChild.quickgroupid}
className="dropdown-link-3 w-dropdown-link"
onClick={(e) => {
e.preventDefault();
handleQuickGroupClick(subChild);
}}
>
{subChild.name}
</a>
))}
</nav>
</div>
);
})}
</nav>
</div>
);
})}
</>
)
) : (
// От производителя (Categories - узлы)
categoriesLoading ? (
<div style={{ padding: 16, textAlign: 'center' }}>Загружаем категории...</div>
) : categoriesError ? (
@ -389,7 +435,6 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
<>
{categories.map((category: any, idx: number) => {
const isOpen = openIndex === idx;
// Подкатегории: сначала children, если нет — unitsByCategory
const subcategories = category.children && category.children.length > 0
? category.children
: unitsByCategory[category.quickgroupid] || [];
@ -414,7 +459,7 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
<a
href="#"
key={subcat.quickgroupid || subcat.unitid}
className="dropdown-link-3 w-dropdown-link"
className="dropdown-link-3 w-dropdown-link pl-0"
onClick={e => {
e.preventDefault();
if (onNodeSelect) {
@ -437,48 +482,6 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
})}
</>
)
) : (
// Manufacturer tab content (QuickGroups)
<div style={{ padding: '16px' }}>
{quickGroupsLoading ? (
<div style={{ textAlign: 'center' }}>Загружаем группы быстрого поиска...</div>
) : quickGroupsError ? (
<div style={{ color: 'red' }}>Ошибка загрузки групп: {quickGroupsError.message}</div>
) : selectedQuickGroup ? (
<div>
<button onClick={() => setSelectedQuickGroup(null)} className="mb-4 px-3 py-1 bg-gray-200 rounded">Назад к группам</button>
<h3 className="text-lg font-semibold mb-2">{selectedQuickGroup.name}</h3>
{quickDetailLoading ? (
<div>Загружаем детали...</div>
) : quickDetailError ? (
<div style={{ color: 'red' }}>Ошибка загрузки деталей: {quickDetailError.message}</div>
) : quickDetail && quickDetail.units && quickDetail.units.length > 0 ? (
<div className="space-y-3">
{quickDetail.units.map((unit: any) => (
<div key={unit.unitid} className="p-3 bg-gray-50 rounded border border-gray-200">
<div className="font-medium text-gray-900">{unit.name}</div>
{unit.details && unit.details.length > 0 && (
<ul className="mt-2 text-sm text-gray-700 list-disc pl-5">
{unit.details.map((detail: any) => (
<li key={detail.detailid}>
<span className="font-medium">{detail.name}</span> <span className="ml-2 text-xs bg-blue-100 text-blue-800 px-2 py-0.5 rounded">OEM: {detail.oem}</span>
</li>
))}
</ul>
)}
</div>
))}
</div>
) : (
<div>Нет деталей для этой группы</div>
)}
</div>
) : quickGroups.length > 0 ? (
renderQuickGroupTree(quickGroups)
) : (
<div>Нет доступных групп быстрого поиска</div>
)}
</div>
)}
{/* Tab content end */}
</div>

View File

@ -6,32 +6,42 @@ interface VinPartCardProps {
oem: string;
name: string;
onPriceClick?: () => void;
catalogCode?: string;
vehicleId?: string;
}
const VinPartCard: React.FC<VinPartCardProps> = ({ n, oem, name, onPriceClick }) => {
const VinPartCard: React.FC<VinPartCardProps> = ({ n, oem, name, onPriceClick, catalogCode, vehicleId }) => {
const router = useRouter();
const handlePriceClick = (e: React.MouseEvent) => {
e.preventDefault();
if (onPriceClick) onPriceClick();
if (oem) router.push(`/search?q=${encodeURIComponent(oem)}&mode=parts`);
if (catalogCode && vehicleId !== undefined) {
// Переходим на страницу выбора бренда
const url = `/vehicle-search/${catalogCode}/${vehicleId}/part/${oem}/brands?detailName=${encodeURIComponent(name || '')}`;
router.push(url);
}
};
return (
<div className="w-layout-hflex knotlistitem">
<div className="w-layout-hflex flex-block-116">
{n !== undefined && <div className="nuberlist">{n}</div>}
<div className="oemnuber">{oem}</div>
</div>
<div className="partsname">{name}</div>
<div className="w-layout-hflex flex-block-117">
<a href="#" className="button-3 w-button" onClick={handlePriceClick}>Цена</a>
<div className="code-embed-16 w-embed">
<svg width="18" height="20" viewBox="0 0 18 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.1 13.5H9.89999V8.1H8.1V13.5ZM8.99999 6.3C9.25499 6.3 9.46889 6.2136 9.64169 6.0408C9.81449 5.868 9.90059 5.6544 9.89999 5.4C9.89939 5.1456 9.81299 4.932 9.64079 4.7592C9.46859 4.5864 9.25499 4.5 8.99999 4.5C8.745 4.5 8.53139 4.5864 8.35919 4.7592C8.187 4.932 8.1006 5.1456 8.1 5.4C8.0994 5.6544 8.1858 5.8683 8.35919 6.0417C8.53259 6.2151 8.74619 6.3012 8.99999 6.3ZM8.99999 18C7.755 18 6.585 17.7636 5.49 17.2908C4.395 16.818 3.4425 16.1769 2.6325 15.3675C1.8225 14.5581 1.1814 13.6056 0.709201 12.51C0.237001 11.4144 0.000601139 10.2444 1.13924e-06 9C-0.00059886 7.7556 0.235801 6.5856 0.709201 5.49C1.1826 4.3944 1.8237 3.4419 2.6325 2.6325C3.4413 1.8231 4.3938 1.182 5.49 0.7092C6.5862 0.2364 7.7562 0 8.99999 0C10.2438 0 11.4138 0.2364 12.51 0.7092C13.6062 1.182 14.5587 1.8231 15.3675 2.6325C16.1763 3.4419 16.8177 4.3944 17.2917 5.49C17.7657 6.5856 18.0018 7.7556 18 9C17.9982 10.2444 17.7618 11.4144 17.2908 12.51C16.8198 13.6056 16.1787 14.5581 15.3675 15.3675C14.5563 16.1769 13.6038 16.8183 12.51 17.2917C11.4162 17.7651 10.2462 18.0012 8.99999 18Z" fill="currentcolor" />
</svg>
<>
<div className="w-layout-hflex knotlistitem">
<div className="w-layout-hflex flex-block-116">
{n !== undefined && <div className="nuberlist">{n}</div>}
<div className="oemnuber">{oem}</div>
</div>
<div className="partsname">{name}</div>
<div className="w-layout-hflex flex-block-117">
<a href="#" className="button-3 w-button" onClick={handlePriceClick}>Цена</a>
<div className="code-embed-16 w-embed">
<svg width="18" height="20" viewBox="0 0 18 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.1 13.5H9.89999V8.1H8.1V13.5ZM8.99999 6.3C9.25499 6.3 9.46889 6.2136 9.64169 6.0408C9.81449 5.868 9.90059 5.6544 9.89999 5.4C9.89939 5.1456 9.81299 4.932 9.64079 4.7592C9.46859 4.5864 9.25499 4.5 8.99999 4.5C8.745 4.5 8.53139 4.5864 8.35919 4.7592C8.187 4.932 8.1006 5.1456 8.1 5.4C8.0994 5.6544 8.1858 5.8683 8.35919 6.0417C8.53259 6.2151 8.74619 6.3012 8.99999 6.3ZM8.99999 18C7.755 18 6.585 17.7636 5.49 17.2908C4.395 16.818 3.4425 16.1769 2.6325 15.3675C1.8225 14.5581 1.1814 13.6056 0.709201 12.51C0.237001 11.4144 0.000601139 10.2444 1.13924e-06 9C-0.00059886 7.7556 0.235801 6.5856 0.709201 5.49C1.1826 4.3944 1.8237 3.4419 2.6325 2.6325C3.4413 1.8231 4.3938 1.182 5.49 0.7092C6.5862 0.2364 7.7562 0 8.99999 0C10.2438 0 11.4138 0.2364 12.51 0.7092C13.6062 1.182 14.5587 1.8231 15.3675 2.6325C16.1763 3.4419 16.8177 4.3944 17.2917 5.49C17.7657 6.5856 18.0018 7.7556 18 9C17.9982 10.2444 17.7618 11.4144 17.2908 12.51C16.8198 13.6056 16.1787 14.5581 15.3675 15.3675C14.5563 16.1769 13.6038 16.8183 12.51 17.2917C11.4162 17.7651 10.2462 18.0012 8.99999 18Z" fill="currentcolor" />
</svg>
</div>
</div>
</div>
</div>
</>
);
};

View File

@ -0,0 +1,94 @@
import React, { useState } from 'react';
import { useQuery } from '@apollo/client';
import { useRouter } from 'next/router';
import { GET_LAXIMO_QUICK_DETAIL } from '@/lib/graphql/laximo';
interface VinQuickProps {
quickGroup: any;
catalogCode: string;
vehicleId: string;
ssd: string;
onBack: () => void;
onNodeSelect: (unit: any) => void;
}
const VinQuick: React.FC<VinQuickProps> = ({ quickGroup, catalogCode, vehicleId, ssd, onBack, onNodeSelect }) => {
const router = useRouter();
const { data, loading, error } = useQuery(GET_LAXIMO_QUICK_DETAIL, {
variables: {
catalogCode,
vehicleId,
quickGroupId: quickGroup.quickgroupid,
ssd
},
skip: !quickGroup || !quickGroup.quickgroupid
});
const quickDetail = data?.laximoQuickDetail;
const handleUnitClick = (unit: any) => {
onNodeSelect({
...unit,
unitid: unit.unitid,
name: unit.name,
catalogCode,
vehicleId,
ssd: unit.ssd || ssd // Используем SSD узла, а не родительский
});
};
const handleDetailClick = (detail: any) => {
if (detail.oem) {
// Переходим на страницу выбора бренда
const url = `/vehicle-search/${catalogCode}/${vehicleId}/part/${detail.oem}/brands?detailName=${encodeURIComponent(detail.name || '')}`;
router.push(url);
}
};
return (
<div className="w-full">
{/* <button onClick={onBack} className="mb-4 px-4 py-2 bg-gray-200 rounded self-start">Назад</button> */}
{loading ? (
<div className="text-center py-4">Загружаем детали...</div>
) : error ? (
<div className="text-red-600 py-4">Ошибка загрузки деталей: {error.message}</div>
) : quickDetail && quickDetail.units ? (
quickDetail.units.map((unit: any) => (
<div key={unit.unitid} className="w-layout-vflex flex-block-14-copy-copy">
<div className="knotinfo">
{unit.imageurl || unit.largeimageurl ? (
<img
src={unit.largeimageurl ? unit.largeimageurl.replace('%size%', '250') : unit.imageurl.replace('%size%', '250')}
alt={unit.name}
className="image-26"
onError={e => { (e.currentTarget as HTMLImageElement).src = '/images/image-44.jpg'; }}
onClick={() => handleUnitClick(unit)}
style={{ cursor: 'pointer' }}
/>
) : (
<img src="/images/image-44.jpg" alt="Нет изображения" className="image-26" />
)}
</div>
<div className="knot-img">
<h1 className="heading-19">{unit.name}</h1>
{unit.details && unit.details.length > 0 && unit.details.map((detail: any) => (
<div className="w-layout-hflex flex-block-115" key={detail.detailid}>
<div className="oemnuber">{detail.oem}</div>
<div className="partsname">{detail.name}</div>
<a href="#" className="button-3 w-button" onClick={e => { e.preventDefault(); handleDetailClick(detail); }}>Показать цены</a>
</div>
))}
<a href="#" className="showallparts w-button" onClick={e => { e.preventDefault(); handleUnitClick(unit); }}>Подробнее</a>
</div>
</div>
))
) : (
<div className="text-center text-gray-500 py-4">Нет деталей для этой группы</div>
)}
</div>
);
};
export default VinQuick;

View File

@ -540,7 +540,9 @@ export const FIND_LAXIMO_VEHICLE_BY_WIZARD = gql`
query FindLaximoVehicleByWizard($catalogCode: String!, $ssd: String!) {
laximoFindVehicleByWizard(catalogCode: $catalogCode, ssd: $ssd) {
vehicleid
name
brand
catalog
model
modification
year
@ -548,12 +550,34 @@ export const FIND_LAXIMO_VEHICLE_BY_WIZARD = gql`
engine
notes
ssd
transmission
date
manufactured
framecolor
trimcolor
engine_info
engineno
market
prodRange
prodPeriod
destinationregion
creationregion
datefrom
dateto
modelyearfrom
modelyearto
options
description
grade
attributes {
key
name
value
}
}
}
`;
export const FIND_LAXIMO_VEHICLE_BY_PLATE = gql`
query FindLaximoVehicleByPlate($catalogCode: String!, $plateNumber: String!) {
laximoFindVehicleByPlate(catalogCode: $catalogCode, plateNumber: $plateNumber) {
@ -587,6 +611,11 @@ export const FIND_LAXIMO_VEHICLE_BY_PLATE = gql`
options
description
grade
attributes {
key
name
value
}
}
}
`;
@ -624,12 +653,15 @@ export const FIND_LAXIMO_VEHICLE_BY_PLATE_GLOBAL = gql`
options
description
grade
attributes {
key
name
value
}
}
}
`;
export const FIND_LAXIMO_PART_REFERENCES = gql`
query FindLaximoPartReferences($partNumber: String!) {
laximoFindPartReferences(partNumber: $partNumber)
@ -669,6 +701,11 @@ export const FIND_LAXIMO_APPLICABLE_VEHICLES = gql`
options
description
grade
attributes {
key
name
value
}
}
}
`;
@ -695,6 +732,30 @@ export const FIND_LAXIMO_VEHICLES_BY_PART_NUMBER = gql`
engine
notes
ssd
transmission
date
manufactured
framecolor
trimcolor
engine_info
engineno
market
prodRange
prodPeriod
destinationregion
creationregion
datefrom
dateto
modelyearfrom
modelyearto
options
description
grade
attributes {
key
name
value
}
}
}
}
@ -799,6 +860,7 @@ export const GET_LAXIMO_UNITS = gql`
code
imageurl
largeimageurl
ssd
children {
quickgroupid
name
@ -806,6 +868,7 @@ export const GET_LAXIMO_UNITS = gql`
code
imageurl
largeimageurl
ssd
children {
quickgroupid
name
@ -813,6 +876,7 @@ export const GET_LAXIMO_UNITS = gql`
code
imageurl
largeimageurl
ssd
}
}
}
@ -831,6 +895,7 @@ export const GET_LAXIMO_QUICK_DETAIL = gql`
description
imageurl
largeimageurl
ssd
details {
detailid
name

View File

@ -84,6 +84,7 @@ export const GET_LAXIMO_UNITS = gql`
code
imageurl
largeimageurl
ssd
children {
quickgroupid
name
@ -91,6 +92,7 @@ export const GET_LAXIMO_UNITS = gql`
code
imageurl
largeimageurl
ssd
children {
quickgroupid
name
@ -98,6 +100,7 @@ export const GET_LAXIMO_UNITS = gql`
code
imageurl
largeimageurl
ssd
}
}
}
@ -135,6 +138,7 @@ export const GET_LAXIMO_QUICK_DETAIL = gql`
code
imageurl
largeimageurl
ssd
details {
detailid
name
@ -180,23 +184,6 @@ export const SEARCH_LAXIMO_OEM = gql`
}
`;
export const SEARCH_LAXIMO_FULLTEXT = gql`
query SearchLaximoFulltext($catalogCode: String!, $vehicleId: String!, $searchText: String!, $ssd: String!) {
laximoFulltextSearch(catalogCode: $catalogCode, vehicleId: $vehicleId, searchText: $searchText, ssd: $ssd) {
details {
codeonimage
code
name
note
filter
oem
price
availability
}
}
}
`;
export const GET_LAXIMO_FULLTEXT_SEARCH = gql`
query GetLaximoFulltextSearch($catalogCode: String!, $vehicleId: String!, $searchQuery: String!, $ssd: String!) {
laximoFulltextSearch(catalogCode: $catalogCode, vehicleId: $vehicleId, searchQuery: $searchQuery, ssd: $ssd) {
@ -208,6 +195,10 @@ export const GET_LAXIMO_FULLTEXT_SEARCH = gql`
parttype
filter
note
codeonimage
code
price
availability
attributes {
key
name

44
src/pages/home-new.tsx Normal file
View File

@ -0,0 +1,44 @@
import React from 'react';
import Head from 'next/head';
import CatalogSubscribe from "@/components/CatalogSubscribe";
import MobileMenuBottomSection from "@/components/MobileMenuBottomSection";
import NewsAndPromos from "@/components/index/NewsAndPromos";
import Footer from "@/components/Footer";
import IndexTopMenuNav from "@/components/index/IndexTopMenuNav";
import ProductOfDaySection from "@/components/index/ProductOfDaySection";
import CategoryNavSection from "@/components/index/CategoryNavSection";
import BrandSelectionSection from "@/components/index/BrandSelectionSection";
import BestPriceSection from "@/components/index/BestPriceSection";
import TopSalesSection from "@/components/index/TopSalesSection";
import PromoImagesSection from "@/components/index/PromoImagesSection";
import NewArrivalsSection from '@/components/index/NewArrivalsSection';
import SupportVinSection from '@/components/index/SupportVinSection';
export default function HomeNew () {
return (
<>
<Head>
<title>Home New</title>
<link href="https://fonts.googleapis.com" rel="preconnect" />
<link href="https://fonts.gstatic.com" rel="preconnect" crossOrigin="anonymous" />
<link href="images/favicon.png" rel="shortcut icon" type="image/x-icon" />
<link href="images/webclip.png" rel="apple-touch-icon" />
</Head>
<IndexTopMenuNav />
<ProductOfDaySection />
<CategoryNavSection />
<BrandSelectionSection />
<BestPriceSection />
<TopSalesSection />
<PromoImagesSection />
<NewArrivalsSection />
<SupportVinSection />
<NewsAndPromos />
<section className="section-3">
<CatalogSubscribe />
</section>
<Footer />
<MobileMenuBottomSection />
</>
);
}

View File

@ -15,7 +15,11 @@ import VinCategory from '@/components/vin/VinCategory';
import PartDetailCard from '@/components/PartDetailCard';
import VinPartCard from '@/components/vin/VinPartCard';
import KnotIn from '@/components/vin/KnotIn';
import KnotParts from '@/components/vin/KnotParts';
import KnotParts from '@/components/vin/KnotParts';
import VinQuick from '@/components/vin/VinQuick';
import CatalogSubscribe from '@/components/CatalogSubscribe';
import MobileMenuBottomSection from '@/components/MobileMenuBottomSection';
interface LaximoVehicleInfo {
vehicleid: string;
@ -42,7 +46,7 @@ const VehicleDetailsPage = () => {
if (searchTypeParam === 'categories') {
// В URL categories, но мы используем quickgroups для групп быстрого поиска
defaultSearchType = 'quickgroups';
console.log('🔄 URL содержит searchType=categories, интерпретируем как quickgroups (группы быстрого поиска)');
} else if (searchTypeParam === 'quickgroups') {
defaultSearchType = 'quickgroups';
} else if (searchTypeParam === 'fulltext') {
@ -53,7 +57,20 @@ const VehicleDetailsPage = () => {
const [searchType, setSearchType] = useState<'quickgroups' | 'categories' | 'fulltext'>(defaultSearchType);
const [showKnot, setShowKnot] = useState(false);
const [foundParts, setFoundParts] = useState<any[]>([]);
const [activeTab, setActiveTab] = useState<'uzly' | 'manufacturer'>('uzly');
const [searchState, setSearchState] = useState<{
loading: boolean;
error: any;
query: string;
isSearching: boolean;
}>({
loading: false,
error: null,
query: '',
isSearching: false
});
const [selectedNode, setSelectedNode] = useState<any | null>(null);
const [selectedQuickGroup, setSelectedQuickGroup] = useState<any | null>(null);
const handleCategoryClick = (e?: React.MouseEvent) => {
if (e) e.preventDefault();
setShowKnot(true);
@ -92,27 +109,14 @@ const VehicleDetailsPage = () => {
const storedSsd = localStorage.getItem(vehicleKey);
if (storedSsd) {
finalSsd = storedSsd;
console.log('🔧 SSD получен из localStorage, длина:', storedSsd.length);
// НЕ ОЧИЩАЕМ SSD сразу, оставляем на случай перезагрузки страницы
// localStorage.removeItem(vehicleKey);
} else {
console.log('⚠️ SSD не найден в localStorage, ключ:', vehicleKey);
console.log('🔍 Все ключи localStorage:', Object.keys(localStorage));
}
} else if (ssdFromQuery && ssdFromQuery.trim() !== '') {
finalSsd = ssdFromQuery;
console.log('🔧 SSD получен из URL');
}
console.log('🔍 Vehicle page params:', {
brand,
vehicleId,
useStorage,
ssdLengthFromUrl,
ssdFromQuery: ssdFromQuery ? `${ssdFromQuery.substring(0, 50)}...` : 'отсутствует',
finalSsd: finalSsd ? `${finalSsd.substring(0, 50)}...` : 'отсутствует',
ssdLength: finalSsd.length
});
const { data: vehicleData, loading: vehicleLoading, error: vehicleError } = useQuery<{ laximoVehicleInfo: LaximoVehicleInfo }>(
GET_LAXIMO_VEHICLE_INFO,
@ -124,9 +128,56 @@ const VehicleDetailsPage = () => {
localized: true
},
skip: !brand || vehicleId === undefined || vehicleId === null,
errorPolicy: 'all'
errorPolicy: 'all',
onCompleted: (data) => {
console.log('🔍 VehicleInfo GraphQL completed:', {
requestedVehicleId: vehicleId,
returnedVehicleId: data?.laximoVehicleInfo?.vehicleid,
vehicleName: data?.laximoVehicleInfo?.name,
ssdUsed: finalSsd?.substring(0, 50) + '...',
fullData: data
});
if (data?.laximoVehicleInfo?.vehicleid !== vehicleId) {
console.log('🚨 ОБНАРУЖЕНО НЕСООТВЕТСТВИЕ VEHICLE ID!');
console.log(`📍 URL vehicleId: ${vehicleId}`);
console.log(`📍 API vehicleId: ${data?.laximoVehicleInfo?.vehicleid}`);
} else {
console.log('✅ Vehicle ID соответствует URL');
}
},
onError: (error) => {
console.error('❌ VehicleInfo GraphQL error:', error);
}
}
);
// Автоматическое перенаправление на правильный vehicleId если API вернул другой ID
useEffect(() => {
if (vehicleData?.laximoVehicleInfo && vehicleData.laximoVehicleInfo.vehicleid !== vehicleId) {
const correctVehicleId = vehicleData.laximoVehicleInfo.vehicleid;
console.log(`🔄 Автоматическое перенаправление: ${vehicleId} -> ${correctVehicleId}`);
// Обновляем localStorage с правильным ключом
if (finalSsd && typeof window !== 'undefined') {
const oldKey = `vehicle_ssd_${brand}_${vehicleId}`;
const newKey = `vehicle_ssd_${brand}_${correctVehicleId}`;
// Перемещаем SSD на правильный ключ
localStorage.setItem(newKey, finalSsd);
localStorage.removeItem(oldKey);
console.log(`💾 SSD перемещен: ${oldKey} -> ${newKey}`);
}
// Строим новый URL с правильным vehicleId
const currentParams = new URLSearchParams(window.location.search);
const newUrl = `/vehicle-search/${brand}/${correctVehicleId}?${currentParams.toString()}`;
// Перенаправляем на правильный URL
router.replace(newUrl);
return;
}
}, [vehicleData, vehicleId, brand, finalSsd, router]);
// Получаем детали выбранного узла, если он выбран
const {
@ -232,12 +283,7 @@ const VehicleDetailsPage = () => {
vehicleInfo = { ...vehicleInfo, vehicleid: fallbackVehicleId };
}
// Логируем, что реально передаём в VinLeftbar
console.log('Передаём в VinLeftbar:', {
catalog: vehicleInfo.catalog,
vehicleid: vehicleInfo.vehicleid,
ssd: vehicleInfo.ssd
});
// Если нет данных автомобиля и есть ошибка, показываем предупреждение
const hasError = vehicleError && !vehicleData?.laximoVehicleInfo;
@ -266,45 +312,102 @@ const VehicleDetailsPage = () => {
? vehicleInfo.attributes.map(attr => attr.value).join(' · ')
: ''
}
vehicleAttributes={vehicleInfo.attributes || []}
/>
<div className="w-layout-blockcontainer container-vin w-container">
{!selectedNode ? (
<div className="w-layout-hflex flex-block-13">
{vehicleInfo && vehicleInfo.catalog && vehicleInfo.vehicleid && vehicleInfo.ssd && (
<VinLeftbar
vehicleInfo={vehicleInfo}
onSearchResults={setFoundParts}
onNodeSelect={setSelectedNode}
/>
)}
{/* Категории или Knot или карточки */}
{foundParts.length > 0 ? (
<div className="knot-parts">
{foundParts.map((detail, idx) => (
<VinPartCard
key={detail.oem + idx}
n={idx + 1}
name={detail.name}
oem={detail.oem}
<>
<VinLeftbar
vehicleInfo={vehicleInfo}
onSearchResults={({ results, loading, error, query, isSearching }) => {
setFoundParts(results);
setSearchState({ loading, error, query, isSearching: isSearching || false });
}}
onNodeSelect={setSelectedNode}
onActiveTabChange={(tab) => setActiveTab(tab)}
onQuickGroupSelect={setSelectedQuickGroup}
/>
{searchState.isSearching ? (
<div className="knot-parts">
{searchState.loading ? (
<div className="text-center py-12">
<div className="animate-spin rounded-full h-12 w-12 border-b-2 border-red-600 mx-auto"></div>
<p className="mt-4 text-gray-600">Выполняется поиск...</p>
</div>
) : searchState.error ? (
<div className="bg-red-50 border border-red-200 rounded-lg p-4 mt-3">
<div className="flex">
<div className="flex-shrink-0">
<svg className="h-5 w-5 text-red-400" viewBox="0 0 20 20" fill="currentColor">
<path fillRule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clipRule="evenodd" />
</svg>
</div>
<div className="ml-3">
<h3 className="text-sm font-medium text-red-800">
Ошибка поиска
</h3>
<div className="mt-2 text-sm text-red-700">
<p>{searchState.error.message}</p>
</div>
</div>
</div>
</div>
) : foundParts.length > 0 ? (
foundParts.map((detail, idx) => (
<VinPartCard
key={detail.oem + idx}
n={idx + 1}
name={detail.name}
oem={detail.oem}
catalogCode={vehicleInfo.catalog}
vehicleId={vehicleInfo.vehicleid}
/>
))
) : (
<div className="text-center py-12">
<svg className="w-12 h-12 mx-auto text-gray-400 mb-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9.172 16.172a4 4 0 015.656 0M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
</svg>
<p className="text-gray-600">
По запросу "{searchState.query}" ничего не найдено
</p>
<p className="text-sm text-gray-500 mt-1">
Попробуйте изменить поисковый запрос
</p>
</div>
)}
</div>
) : showKnot ? (
<VinKnot />
) : selectedQuickGroup ? (
<VinQuick
quickGroup={selectedQuickGroup}
catalogCode={vehicleInfo.catalog}
vehicleId={vehicleInfo.vehicleid}
ssd={vehicleInfo.ssd}
onBack={() => setSelectedQuickGroup(null)}
onNodeSelect={setSelectedNode}
/>
))}
</div>
) : showKnot ? (
<VinKnot />
) : (
<VinCategory
catalogCode={vehicleInfo.catalog}
vehicleId={vehicleInfo.vehicleid}
ssd={vehicleInfo.ssd}
onNodeSelect={setSelectedNode}
/>
) : (
<VinCategory
catalogCode={vehicleInfo.catalog}
vehicleId={vehicleInfo.vehicleid}
ssd={vehicleInfo.ssd}
onNodeSelect={setSelectedNode}
activeTab={activeTab}
onQuickGroupSelect={setSelectedQuickGroup}
/>
)}
</>
)}
</div>
) : (
<div className="w-layout-hflex flex-block-13">
<div className="w-layout-vflex flex-block-14-copy-copy">
<button onClick={() => setSelectedNode(null)} style={{ marginBottom: 16 }}>Назад</button>
{/* <button onClick={() => setSelectedNode(null)} style={{ marginBottom: 16 }}>Назад</button> */}
<KnotIn
catalogCode={vehicleInfo.catalog}
vehicleId={vehicleInfo.vehicleid}
@ -318,7 +421,11 @@ const VehicleDetailsPage = () => {
) : unitDetailsError ? (
<div style={{ color: 'red', padding: 24 }}>Ошибка загрузки деталей: {unitDetailsError.message}</div>
) : unitDetails.length > 0 ? (
<KnotParts parts={unitDetails} />
<KnotParts
parts={unitDetails}
catalogCode={vehicleInfo.catalog}
vehicleId={vehicleInfo.vehicleid}
/>
) : (
<div style={{ padding: 24, textAlign: 'center' }}>Детали не найдены</div>
)}
@ -326,10 +433,15 @@ const VehicleDetailsPage = () => {
</div>
)}
</div>
<section className="section-3">
<CatalogSubscribe />
</section>
<Footer />
<MobileMenuBottomSection />
{/* ====== ВРЕМЕННЫЙ МАКЕТ ДЛЯ ВЕРСТКИ (конец) ====== */}
{/* Навигация */}
{/* Навигация
<nav className="bg-white border-b">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="flex items-center justify-between h-16">
@ -357,7 +469,7 @@ const VehicleDetailsPage = () => {
</div>
</nav>
{/* Информация об автомобиле */}
Информация об автомобиле
<div className="bg-white border-b">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6">
<div className="flex items-center space-x-4 mb-6">
@ -377,7 +489,7 @@ const VehicleDetailsPage = () => {
</div>
</div>
{/* Предупреждение об ошибке */}
Предупреждение об ошибке
{hasError && (
<div className="bg-yellow-50 border border-yellow-200 rounded-lg p-4 mb-6">
<div className="flex">
@ -398,7 +510,7 @@ const VehicleDetailsPage = () => {
</div>
)}
{/* Отладочная информация */}
Отладочная информация
<div className="bg-gray-50 border border-gray-200 rounded-lg p-4 mb-6">
<h4 className="text-sm font-medium text-gray-900 mb-3">
🔧 Отладочная информация
@ -429,7 +541,7 @@ const VehicleDetailsPage = () => {
</div>
</div>
{/* Характеристики автомобиля */}
Характеристики автомобиля
{vehicleInfo.attributes && vehicleInfo.attributes.length > 0 && (
<div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4">
{vehicleInfo.attributes.map((attr, index) => (
@ -443,7 +555,7 @@ const VehicleDetailsPage = () => {
</div>
</div>
{/* Способы поиска запчастей */}
Способы поиска запчастей
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
<div className="mb-6">
<h2 className="text-xl font-bold text-gray-900 mb-2">Поиск запчастей</h2>
@ -452,7 +564,7 @@ const VehicleDetailsPage = () => {
</p>
</div>
{/* Диагностический компонент */}
Диагностический компонент
<LaximoDiagnostic
catalogCode={vehicleInfo.catalog}
vehicleId={vehicleInfo.vehicleid}
@ -465,7 +577,7 @@ const VehicleDetailsPage = () => {
searchType={searchType}
onSearchTypeChange={setSearchType}
/>
</div>
</div> */}
</>
);
};

View File

@ -0,0 +1,235 @@
import React, { useState, useEffect } from 'react';
import { useRouter } from 'next/router';
import { useQuery } from '@apollo/client';
import Head from 'next/head';
import Header from '@/components/Header';
import Footer from '@/components/Footer';
import MobileMenuBottomSection from '@/components/MobileMenuBottomSection';
import { GET_BRANDS_BY_CODE, GET_LAXIMO_CATALOG_INFO } from '@/lib/graphql';
import { LaximoCatalogInfo } from '@/types/laximo';
const InfoBrandSelection = ({
brandName,
oemNumber,
detailName
}: {
brandName: string;
oemNumber: string;
detailName?: string;
}) => (
<section className="section-info">
<div className="w-layout-blockcontainer container info w-container">
<div className="w-layout-vflex flex-block-9">
<div className="w-layout-hflex flex-block-7">
<a href="/" className="link-block w-inline-block">
<div>Главная</div>
</a>
<div className="text-block-3"></div>
<a href="#" className="link-block-2 w-inline-block">
<div>Каталог</div>
</a>
<div className="text-block-3"></div>
<div>{brandName}</div>
<div className="text-block-3"></div>
<div>Деталь {oemNumber}</div>
<div className="text-block-3"></div>
<div>Выбор производителя</div>
</div>
<div className="w-layout-hflex flex-block-8">
<div className="w-layout-hflex flex-block-10">
<h1 className="heading">Выберите производителя для {oemNumber}</h1>
</div>
</div>
</div>
</div>
</section>
);
const BrandSelectionPage = () => {
const router = useRouter();
const { brand, vehicleId, oemNumber, detailName } = router.query;
// Получаем информацию о каталоге
const { data: catalogData, loading: catalogLoading } = useQuery<{ laximoCatalogInfo: LaximoCatalogInfo }>(
GET_LAXIMO_CATALOG_INFO,
{
variables: { catalogCode: brand },
skip: !brand,
errorPolicy: 'all',
}
);
// Получаем список брендов по артикулу
const { data, loading, error } = useQuery(GET_BRANDS_BY_CODE, {
variables: { code: oemNumber },
skip: !oemNumber,
errorPolicy: 'all'
});
if (!brand || vehicleId === undefined || vehicleId === null || !oemNumber) {
return (
<>
<Head>
<title>Выбор производителя</title>
</Head>
<main style={{ minHeight: '100vh', backgroundColor: '#f9fafb' }}>
<div style={{ textAlign: 'center', padding: '4rem 1rem' }}>
<h1 style={{ fontSize: '2rem', fontWeight: 'bold', color: '#1f2937', marginBottom: '1rem' }}>
Неверные параметры
</h1>
<p style={{ color: '#6b7280', marginBottom: '2rem' }}>
Неверные параметры для выбора производителя
</p>
<button
onClick={() => router.back()}
style={{
backgroundColor: '#dc2626',
color: 'white',
padding: '0.75rem 1.5rem',
borderRadius: '0.5rem',
border: 'none',
cursor: 'pointer'
}}
>
Назад
</button>
</div>
</main>
<Footer />
</>
);
}
const catalogInfo = catalogData?.laximoCatalogInfo;
const brandsData = data?.getBrandsByCode;
const brands = brandsData?.brands || [];
const hasError = brandsData?.error || error;
const hasNoBrands = brandsData?.success && brands.length === 0;
const handleBrandSelect = (selectedBrand: string) => {
console.log('🎯 Выбран бренд:', { articleNumber: oemNumber, brand: selectedBrand });
router.push(`/search-result?article=${encodeURIComponent(String(oemNumber))}&brand=${encodeURIComponent(selectedBrand)}`);
};
const handleBack = () => {
router.back();
};
return (
<>
<Head>
<title>Выбор производителя для {oemNumber} - {catalogInfo?.name || 'Каталог запчастей'}</title>
<meta name="description" content={`Выберите производителя для детали ${oemNumber} в каталоге ${catalogInfo?.name}`} />
<link href="images/favicon.png" rel="shortcut icon" type="image/x-icon" />
<link href="images/webclip.png" rel="apple-touch-icon" />
</Head>
<InfoBrandSelection
brandName={catalogInfo?.name || String(brand)}
oemNumber={String(oemNumber)}
detailName={String(detailName || '')}
/>
<div className="page-wrapper bg-[#F5F8FB] min-h-screen">
<div className="w-full max-w-[1580px] mx-auto px-8 max-md:px-5 pt-10 pb-16">
{/* Кнопка назад */}
<div className="mb-6">
<button
onClick={handleBack}
className="flex items-center gap-2 text-gray-600 hover:text-gray-900 transition-colors"
>
<svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M15 19l-7-7 7-7" />
</svg>
Назад к деталям
</button>
</div>
{/* Обработка ошибок */}
{hasError && !loading && (
<div className="bg-red-50 border border-red-200 rounded-2xl shadow p-10 mb-6">
<div className="flex items-center">
<svg className="w-6 h-6 text-red-600 mr-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
<div>
<h3 className="text-lg font-medium text-red-800">Ошибка загрузки</h3>
<p className="text-red-700 mt-1">
{brandsData?.error || error?.message || 'Не удалось загрузить список производителей'}
</p>
</div>
</div>
</div>
)}
{/* Загрузка */}
{(catalogLoading || loading) && (
<div className="bg-white rounded-2xl shadow p-10 flex flex-col items-center justify-center min-h-[300px]">
<div className="animate-spin rounded-full h-24 w-24 border-b-2 border-red-600 mb-6"></div>
<p className="text-lg text-gray-600">Загружаем производителей...</p>
</div>
)}
{/* Результаты */}
{!loading && !hasError && (
<div className="space-y-6">
{hasNoBrands ? (
<div className="bg-[#eaf0fa] border border-[#b3c6e6] rounded-2xl shadow p-10 text-center">
<svg className="w-16 h-16 mx-auto mb-4" style={{ color: '#0d336c' }} fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 15.5c-.77.833.192 2.5 1.732 2.5z" />
</svg>
<h3 className="text-xl font-semibold mb-2" style={{ color: '#0d336c' }}>
Производители не найдены
</h3>
<p className="mb-4" style={{ color: '#0d336c' }}>
По артикулу <span className="font-mono font-semibold">{oemNumber}</span> производители не найдены.
</p>
<p className="text-sm" style={{ color: '#3b5a99' }}>
Попробуйте изменить запрос или обратитесь к нашим менеджерам.
</p>
</div>
) : brands.length > 0 && (
<div className="bg-white rounded-2xl shadow p-10">
<div className="border-b border-gray-200 pb-4">
<h2 className="text-xl font-semibold text-gray-900">
Выбор производителя для артикула: {oemNumber}
</h2>
<p className="text-sm text-gray-600 mt-1">
{detailName && <span>Деталь: {detailName} </span>}
Найдено производителей: <span className="font-medium">{brands.length}</span>
</p>
</div>
<div className="divide-y divide-gray-200">
{brands.map((brandItem: any, index: number) => (
<div key={index}>
<button
onClick={() => handleBrandSelect(brandItem.brand)}
className="w-full text-left p-4 hover:bg-gray-50 transition-colors block group"
>
<div className="flex w-full items-center gap-2">
<div className="w-1/5 max-md:w-1/3 font-bold text-left truncate" style={{ color: 'rgb(77, 180, 94)' }}>
{brandItem.brand}
</div>
<div className="w-1/5 max-md:text-center max-md:w-1/3 font-bold text-left truncate group-hover:text-[#EC1C24] transition-colors">
{oemNumber}
</div>
<div className="w-3/5 max-md:w-1/3 text-left truncate">
{brandItem.name && brandItem.name !== brandItem.brand ? brandItem.name : detailName || 'Запчасть'}
</div>
</div>
</button>
</div>
))}
</div>
</div>
)}
</div>
)}
</div>
<MobileMenuBottomSection />
<Footer />
</div>
</>
);
};
export default BrandSelectionPage;

View File

@ -56,7 +56,7 @@ export default function Vin() {
<div className="w-layout-hflex flex-block-13">
<div className="w-layout-vflex flex-block-14-copy-copy">
<KnotIn />
<KnotParts />
<KnotParts catalogCode="" vehicleId="" />
</div>

View File

@ -465,4 +465,228 @@ input#VinSearchInput {
grid-template-areas: none !important;
grid-auto-flow: row !important; /* <--- ВАЖНО! */
}
}
.dropdown-toggle-card {
padding-left: 0 !important;
}
.dropdown-link-3 {
margin-left: 0 !important;
}
.div-block-131 {
max-width: 230px;
}
.dropdown-toggle-3.active, .dropdown-toggle-card.active {
background-color: var(--background);
}
.dropdown-toggle-3.active {
border-left: 2px solid var(--red);
}
.news-index-block-copy {
grid-column-gap: 20px;
grid-row-gap: 20px;
flex: 1;
max-width: 100%;
margin-top: 0;
margin-bottom: 60px;
}
.news-index-block {
grid-column-gap: 40px;
grid-row-gap: 40px;
flex: 1;
max-width: 100%;
margin-bottom: 100px;
}
@media screen and (max-width: 767px) {
.news-index-block {
grid-column-gap: 20px;
grid-row-gap: 20px;
}
.inbt, .news-index-block-copy {
grid-column-gap: 20px;
grid-row-gap: 20px;
}
}
.news-index-block-copy {
grid-column-gap: 20px;
grid-row-gap: 20px;
flex: 1;
max-width: 100%;
margin-top: 0;
margin-bottom: 60px;
}
.bottom_head {
padding-left: 30px;
padding-right: 30px;
}
@media screen and (max-width: 479px) {
.bottom_head {
padding-left: 15px;
padding-right: 15px;
}
}
.bottom_head {
background-color: var(--back);
flex-flow: column;
justify-content: center;
align-items: flex-start;
width: 100%;
height: auto;
margin-top: -15px;
padding-left: 60px;
padding-right: 60px;
display: flex;
}
body {
background-color: var(--background);
--_fonts---font-family: Onest, sans-serif;
--_fonts---color--dark-blue: #0d336c;
--_fonts---font-size--core: 14px;
--_fonts---font-size--small-font-size: 14px;
--_fonts---color--black: #000;
--_fonts---font-size--bigger: 18px;
--_fonts---color--white: white;
--_fonts---color--light-blue-grey: #8e9aac;
--_fonts---h1: 36px;
--_fonts---color--light-blue: #b7cae2;
--_fonts---color--grey: #747474;
--_fonts---font-size--heading-3: 24px;
--_fonts---font-size--heading-2: 30px;
--_fonts---color--green: #4db45e;
--_fonts---font-size--supersmall: 12px;
font-family: Onest, sans-serif;
}
.menu-button.w--open {
z-index: 2000;
background-color: var(--red);
color: var(--white);
justify-content: center;
align-items: center;
height: 50px;
padding-top: 15px;
padding-bottom: 15px;
left: auto;
}
.heading-7 {
z-index: 999;
color: var(--_fonts---color--black);
font-size: var(--_fonts---font-size--heading-3);
width: 200px;
margin-top: 30px;
margin-bottom: 0;
margin-left: 30px;
line-height: 130%;
position: absolute;
}
.heading-7-white {
z-index: 999;
color: var(--_fonts---color--white);
font-size: var(--_fonts---font-size--heading-3);
width: 200px;
margin-top: 30px;
margin-bottom: 0;
margin-left: 30px;
line-height: 130%;
position: absolute;
}
.mobile-menu-buttom-section {
z-index: 1900;
background-color: var(--white);
display: none;
position: fixed;
inset: auto 0% 0%;
}
.nav-menu-3 {
z-index: 1900;
background-color: #0000;
width: 100%;
height: auto;
display: none;
position: relative;
left: auto;
}
.dropdown-toggle-2 {
z-index: 999;
display: flex;
}
.dropdown-toggle-2.w--open {
z-index: 999998;
}
.div-block-28 {
background-color: var(--background);
height: auto;
margin-top: 60px;
padding-bottom: 60px;
padding-left: 60px;
position: relative;
bottom: auto;
left: 0%;
right: 0%;
}
@media screen and (max-width: 991px) {
.nav-menu-2 {
float: none;
flex-flow: row;
justify-content: flex-start;
align-items: center;
width: 100%;
display: block;
position: relative;
top: 20px;
left: -30px;
right: 0;
}
.div-block-28 {
padding-left: 30px;
}
}
.heading-8-copy {
height: 40px;
}
.flex-block-108 , .flex-block-108-copy, .w-layout-hflex.flex-block-121, .core-product-search{
overflow-x: scroll;
overflow-y: hidden;
}
/* .flex-block-108-copy::-webkit-scrollbar {
display: none;
}
.flex-block-121::-webkit-scrollbar {
display: none;
} */
.flex-block-108 , .flex-block-108-copy, .w-layout-hflex.flex-block-121, .core-product-search {
overflow-x: scroll;
overflow-y: hidden;
scrollbar-width: none; /* Firefox */
}
.flex-block-108::-webkit-scrollbar, .flex-block-108-copy::-webkit-scrollbar, .w-layout-hflex.flex-block-121::-webkit-scrollbar, .core-product-search::-webkit-scrollbar {
display: none; /* Chrome, Safari */
}

View File

@ -3,7 +3,7 @@
--back: #0d336c;
--_fonts---font-family: Onest, sans-serif;
--_fonts---color--dark-blue: #0d336c;
--_fonts---font-size--core: 14px;
--_fonts---font-size--core: 16px;
--_fonts---font-size--small-font-size: 14px;
--_fonts---color--black: #000;
--_fonts---font-size--bigger: 18px;
@ -17,7 +17,6 @@
--_button---dark_blue: #0d336c;
--_fonts---color--white: white;
--_button---hover-dark_blue: #00245b;
--_button---black: #000;
--_button---color: white;
--_round---big-20: 20px;
--_fonts---color--light-blue-grey: #8e9aac;
@ -34,6 +33,7 @@
--_fonts---font-size--heading-2: 30px;
--light-grey: #ececec;
--_button---light-blue: #e6edf6;
--_button---black: #000;
--_fonts---color--green: #4db45e;
--_fonts---font-size--supersmall: 12px;
--light-blue: #dae5ef;
@ -787,8 +787,6 @@
.w-layout-blockcontainer {
max-width: 728px;
}
}
@media screen and (max-width: 767px) {
@ -796,8 +794,6 @@
max-width: none;
}
.w-commerce-commercelayoutcontainer {
flex-direction: column;
align-items: stretch;
@ -828,8 +824,8 @@
}
body {
background-color: var(--background);
--_fonts---font-family: Onest, sans-serif;
color: #333;
font-family: Arial, Helvetica Neue, Helvetica, sans-serif;
font-size: 14px;
line-height: 20px;
}
@ -937,7 +933,7 @@ body {
.flex-block {
grid-column-gap: 15px;
grid-row-gap: 15px;
display: flex;
display: none;
}
.flex-block-2 {
@ -968,14 +964,14 @@ body {
display: flex;
}
.bottom_head {
.topmenuh {
background-color: var(--back);
flex-flow: column;
justify-content: center;
align-items: flex-start;
width: 100%;
height: auto;
margin-top: -15px;
margin-top: 0;
padding-left: 60px;
padding-right: 60px;
display: flex;
@ -995,7 +991,9 @@ body {
background-color: #fff;
justify-content: center;
align-items: center;
padding: 12px 16px 13px;
width: 50px;
height: 44px;
padding: 13px 12px;
display: flex;
}
@ -1005,7 +1003,7 @@ body {
}
.menu-button.w--open {
z-index: 2000;
z-index: 9999999;
background-color: var(--red);
color: var(--white);
justify-content: center;
@ -1114,6 +1112,7 @@ body {
cursor: pointer;
justify-content: flex-start;
align-items: center;
height: 44px;
padding: 6px 15px;
text-decoration: none;
display: flex;
@ -1142,18 +1141,22 @@ body {
.left-arrow {
justify-content: space-between;
align-items: center;
margin-left: -40px;
margin-left: 0;
padding-left: 40px;
display: flex;
position: absolute;
}
.left-arrow:hover {
display: flex;
}
.icon-2 {
color: var(--_button---black);
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
margin: 0;
width: 18px;
height: 18px;
margin: auto;
font-size: 24px;
font-weight: 700;
display: flex;
@ -1168,28 +1171,28 @@ body {
background-color: var(--back);
border: 1px #000;
flex: 1;
min-width: 100%;
max-width: 100%;
height: 480px;
height: 220px;
margin-left: 0;
margin-right: 0;
overflow: hidden;
}
.flex-block-5 {
grid-column-gap: 40px;
grid-row-gap: 40px;
grid-column-gap: 20px;
grid-row-gap: 20px;
flex: 1;
max-width: 100%;
margin-top: 20px;
}
.flex-block-6 {
grid-column-gap: 20px;
grid-row-gap: 20px;
flex-flow: wrap;
grid-template: ". ."
". ."
"Area Area"
/ 1fr 1fr;
grid-template: "."
"."
/ 1fr 1fr 1fr 1fr;
grid-auto-columns: 1fr;
align-self: stretch;
display: grid;
@ -1514,7 +1517,7 @@ body {
padding: 5px;
font-weight: 600;
position: relative;
top: -45px;
top: -35px;
}
.text-block-8 {
@ -1557,7 +1560,7 @@ body {
box-sizing: content-box;
object-fit: contain;
width: 100%;
height: 100%;
height: 180px;
overflow: hidden;
}
@ -1885,9 +1888,11 @@ body {
.flex-block-24 {
grid-column-gap: 40px;
grid-row-gap: 40px;
border-radius: var(--_round---big-20);
background-color: var(--white);
flex-flow: column;
flex: 1;
padding-top: 30px;
padding: 30px 40px;
}
.flex-block-25 {
@ -1901,9 +1906,13 @@ body {
text-decoration: none;
}
.link-block-6:hover {
color: var(--_button---primary);
}
.flex-block-26 {
grid-column-gap: 26px;
grid-row-gap: 26px;
grid-column-gap: 22px;
grid-row-gap: 22px;
flex: 1;
min-width: 140px;
}
@ -1942,8 +1951,8 @@ body {
border-radius: var(--_round---supersmall-4);
background-color: var(--white);
color: var(--_fonts---color--grey);
height: 52px;
margin-bottom: 18px;
height: 46px;
margin-bottom: 12px;
padding: 12px 24px;
}
@ -2009,7 +2018,7 @@ body {
align-self: stretch;
align-items: center;
max-width: 100%;
padding: 30px 40px;
padding: 60px 40px;
display: flex;
}
@ -2031,7 +2040,7 @@ body {
.flex-block-30 {
grid-column-gap: 10px;
grid-row-gap: 10px;
max-width: 840px;
max-width: 540px;
}
.flex-block-31 {
@ -2046,22 +2055,23 @@ body {
flex: 1;
justify-content: flex-start;
align-items: flex-start;
min-width: 480px;
height: 260px;
min-width: 240px;
height: 140px;
padding-top: 0;
padding-left: 0;
display: flex;
overflow: hidden;
}
.div-block-12.small {
min-width: 300px;
min-width: 240px;
}
.heading-7 {
z-index: 999;
color: var(--_fonts---color--black);
font-size: var(--_fonts---font-size--heading-3);
width: 200px;
font-size: var(--_fonts---font-size--bigger);
width: 160px;
margin-top: 30px;
margin-bottom: 0;
margin-left: 30px;
@ -2088,13 +2098,15 @@ body {
}
.heading_news {
font-size: var(--_fonts---font-size--heading-3);
font-size: var(--_fonts---font-size--bigger);
margin-top: 0;
margin-bottom: 0;
line-height: 130%;
}
.text-block-20 {
color: var(--_fonts---color--grey);
font-size: var(--_fonts---font-size--small-font-size);
}
.div-block-13 {
@ -2158,12 +2170,18 @@ body {
.slide-nav {
margin-bottom: -55px;
display: none;
}
.right-arrow {
justify-content: flex-end;
align-items: center;
margin-right: -40px;
margin-right: 0;
padding-right: 40px;
display: flex;
}
.right-arrow:hover {
display: flex;
}
@ -2465,7 +2483,7 @@ body {
.delivery-time-search {
font-size: var(--_fonts---font-size--core);
width: 160px;
width: 120px;
max-height: 40px;
overflow: hidden;
}
@ -2478,7 +2496,7 @@ body {
}
.price.opencard {
width: 170px;
width: 70px;
}
.add-to-cart-block {
@ -2619,7 +2637,7 @@ body {
color: var(--_fonts---color--black);
font-size: var(--_fonts---font-size--core);
text-align: left;
width: 200px;
width: 60px;
max-height: 40px;
overflow: hidden;
}
@ -2848,7 +2866,6 @@ body {
flex-flow: column;
flex: 1;
display: flex;
}
.text-field-copy {
@ -2867,7 +2884,7 @@ body {
color: var(--_fonts---color--black);
font-size: var(--_fonts---font-size--bigger);
text-align: right;
width: 100px;
margin-top: 0;
margin-bottom: 0;
font-weight: 700;
@ -3115,7 +3132,6 @@ body {
}
.block-name {
max-width: 300px;
flex-flow: column;
flex: 1;
display: flex;
@ -3149,7 +3165,7 @@ body {
.sort-item-brand {
color: var(--_fonts---color--light-blue-grey);
font-size: var(--_fonts---font-size--small-font-size);
width: 120px;
width: 100px;
}
.sort-item-brand.first {
@ -3201,7 +3217,7 @@ body {
align-items: center;
margin-bottom: 20px;
padding-left: 10px;
padding-right: 15px;
padding-right: 10px;
}
.flex-block-62 {
@ -3609,7 +3625,7 @@ body {
}
.code-embed-5 {
width: 30px;
width: 26px;
height: 20px;
}
@ -3914,7 +3930,6 @@ body {
font-size: var(--_fonts---font-size--small-font-size);
height: 20px;
margin-top: 0;
max-width: 100%;
margin-bottom: 0;
font-weight: 700;
}
@ -3997,7 +4012,7 @@ body {
}
.mobile-menu-buttom-section {
z-index: 1900;
z-index: 9999999;
background-color: var(--white);
display: none;
position: fixed;
@ -4031,7 +4046,6 @@ body {
position: relative;
}
.button-for-mobile-menu-block:hover {
background-color: var(--_button---hover-dark_blue);
}
@ -4108,7 +4122,7 @@ body {
margin-top: 60px;
padding-bottom: 60px;
padding-left: 60px;
position: relative;
position: absolute;
bottom: auto;
left: 0%;
right: 0%;
@ -4222,12 +4236,12 @@ body {
}
.nav-menu-3 {
z-index: 1900;
z-index: 99999999;
background-color: #0000;
width: 100%;
height: auto;
display: none;
position: relative;
position: absolute;
left: auto;
}
@ -4337,7 +4351,7 @@ body {
color: var(--_fonts---color--black);
font-size: var(--_fonts---font-size--bigger);
text-align: right;
max-width: 200px;
max-width: 100px;
margin-top: 0;
margin-bottom: 0;
font-weight: 700;
@ -4587,7 +4601,6 @@ body {
justify-content: flex-start;
align-self: auto;
align-items: flex-start;
margin-bottom: 80px;
display: flex;
}
@ -4875,9 +4888,10 @@ body {
flex: 0 auto;
justify-content: space-between;
align-self: stretch;
align-items: flex-start;
align-items: center;
margin: -20px;
padding: 20px 20px 40px;
padding: 20px;
overflow: hidden;
}
.mask {
@ -4887,14 +4901,25 @@ body {
.div-block-34 {
border: 1px solid var(--light-blue);
background-color: var(--white);
opacity: 0;
color: var(--back);
border-radius: 100px;
width: 60px;
height: 60px;
position: absolute;
flex: none;
justify-content: center;
align-items: center;
width: 40px;
height: 40px;
display: flex;
}
.div-block-34:hover {
background-color: var(--_button---primary);
color: var(--white);
border-style: none;
}
.div-block-34.right {
transform: rotate(180deg);
}
.heading-17 {
@ -5015,9 +5040,10 @@ body {
flex: 1;
justify-content: flex-start;
align-items: flex-start;
min-width: 480px;
height: 260px;
min-width: 240px;
height: 140px;
display: flex;
overflow: hidden;
}
.div-block-12-copy.small {
@ -5030,8 +5056,9 @@ body {
flex: 1;
justify-content: flex-start;
align-items: flex-start;
height: 260px;
height: 140px;
display: flex;
overflow: hidden;
}
.div-block-123.small {
@ -5041,7 +5068,7 @@ body {
.heading-7-white {
z-index: 999;
color: var(--_fonts---color--white);
font-size: var(--_fonts---font-size--heading-3);
font-size: var(--_fonts---font-size--bigger);
width: 200px;
margin-top: 30px;
margin-bottom: 0;
@ -5070,18 +5097,28 @@ body {
background-image: none;
justify-content: flex-start;
align-items: flex-start;
min-width: 340px;
min-width: 240px;
height: 140px;
padding-top: 0;
padding-left: 0;
display: flex;
overflow: hidden;
}
.image-22 {
box-sizing: border-box;
object-fit: contain;
object-position: 100% 100%;
max-width: 80%;
height: 100%;
margin-left: auto;
margin-right: 0;
display: block;
position: relative;
top: auto;
bottom: 0;
right: 0;
overflow: clip;
}
.section-5 {
@ -5206,11 +5243,12 @@ body {
}
.news-index-block {
grid-column-gap: 40px;
grid-row-gap: 40px;
grid-column-gap: 20px;
grid-row-gap: 20px;
flex: 1;
max-width: 100%;
margin-bottom: 100px;
margin-top: 20px;
margin-bottom: 60px;
}
.section-6 {
@ -5286,6 +5324,7 @@ body {
}
.div-block-127 {
border: 1px solid var(--_icon---light-blue-grey);
color: var(--_icon---light-blue-grey);
border-radius: 50px;
flex: none;
@ -5299,7 +5338,7 @@ body {
}
.div-block-127:hover {
border-color: var(--_button---primary);
color: var(--_button---primary);
}
@ -5364,8 +5403,9 @@ body {
}
.favcardcat {
border: 1px none var(--_icon---light-blue-grey);
background-color: var(--white);
color: var(--_icon---light-blue-grey);
color: var(--_fonts---color--white);
border-radius: 50px;
flex: none;
justify-content: center;
@ -5380,6 +5420,7 @@ body {
}
.favcardcat:hover {
border-color: var(--_button---primary);
color: var(--_button---primary);
}
@ -5387,6 +5428,1118 @@ body {
flex: none;
}
.tabson {
grid-column-gap: 20px;
grid-row-gap: 20px;
display: none;
}
.code-embed-14 {
width: 28px;
height: 28px;
margin: auto;
}
.code-embed-15 {
margin-top: 20px;
position: absolute;
}
.topnav {
background-color: #0000;
flex-flow: column;
margin-left: 220px;
margin-right: 0;
display: block;
position: static;
}
.searcj {
border-radius: var(--_round---small-8);
flex: 1;
align-self: stretch;
height: 44px;
margin-bottom: 0;
padding: 0;
}
.searcj.big {
padding-top: 5px;
padding-bottom: 5px;
}
.topmenub {
flex-flow: column;
justify-content: center;
align-items: flex-start;
width: 100%;
height: auto;
margin-top: 0;
padding-left: 60px;
padding-right: 60px;
display: flex;
}
.tb {
justify-content: space-between;
align-items: center;
width: 100%;
min-width: auto;
max-width: 1580px;
margin-left: auto;
margin-right: auto;
padding-top: 40px;
display: block;
}
.tb.nav {
height: auto;
padding-top: 15px;
padding-bottom: 15px;
}
.tb.info {
width: 100%;
padding-top: 30px;
padding-bottom: 30px;
}
.tb.subscribe {
padding-top: 40px;
padding-bottom: 40px;
}
.tb.footer {
background-color: var(--back);
padding-top: 50px;
padding-bottom: 50px;
}
.link-block-8 {
border-radius: var(--_round---supersmall-4);
background-color: var(--white);
color: #000;
font-size: var(--_fonts---font-size--core);
flex: none;
padding: 4px 8px;
text-decoration: none;
}
.link-block-8.green {
background-color: var(--green);
color: var(--_fonts---color--white);
}
.link-block-8.orange {
color: var(--_fonts---color--white);
background-color: #ff5f00;
}
.flex-block-107 {
grid-column-gap: 10px;
grid-row-gap: 10px;
overflow: hidden;
}
.batd {
justify-content: space-between;
align-items: center;
width: 100%;
min-width: auto;
max-width: 1580px;
margin-left: auto;
margin-right: auto;
display: block;
}
.batd.nav {
height: auto;
padding-top: 0;
}
.batd.info {
width: 100%;
padding-top: 30px;
padding-bottom: 30px;
}
.batd.subscribe {
padding-top: 40px;
padding-bottom: 40px;
}
.batd.footer {
background-color: var(--back);
padding-top: 50px;
padding-bottom: 50px;
}
.div-block-128 {
background-image: url('/images/bannertop.jpg');
background-position: 0%;
background-repeat: no-repeat;
background-size: cover;
width: 100%;
height: 100%;
}
.div-block-129 {
border-radius: var(--_round---big-20);
background-color: var(--white);
flex-flow: column;
flex: none;
justify-content: flex-start;
align-items: flex-start;
width: 330px;
height: 220px;
padding: 30px;
display: flex;
}
.flex-block-108 {
grid-column-gap: 18px;
grid-row-gap: 18px;
justify-content: space-between;
align-items: flex-start;
overflow: scroll;
}
.heading-18 {
font-size: var(--_fonts---font-size--core);
margin-top: 0;
margin-bottom: 0;
font-weight: 900;
}
.flex-block-109 {
grid-column-gap: 16px;
grid-row-gap: 16px;
flex: 0 auto;
grid-template-rows: auto auto;
grid-template-columns: 1fr 1fr;
grid-auto-columns: 1fr;
justify-content: space-between;
align-self: stretch;
align-items: center;
height: 30px;
padding-top: 0;
padding-bottom: 0;
display: flex;
}
.saletag {
border-radius: var(--_round---small-8);
background-color: var(--green);
color: var(--_fonts---color--white);
padding: 4px 5px;
font-size: 12px;
font-weight: 600;
}
.flex-block-110 {
justify-content: flex-start;
align-self: stretch;
align-items: center;
}
.flex-block-111 {
grid-column-gap: 6px;
grid-row-gap: 6px;
}
.arbd {
border: 1px solid var(--light-blue);
background-color: var(--white);
opacity: 0;
color: var(--back);
border-radius: 100px;
flex: none;
justify-content: center;
align-items: center;
width: 40px;
height: 40px;
display: flex;
}
.arbd:hover {
background-color: var(--_button---primary);
color: var(--white);
border-style: none;
}
.arbd.right {
transform: rotate(180deg);
}
.catnav {
flex-flow: column;
justify-content: flex-start;
align-items: center;
width: 100%;
padding-top: 40px;
padding-left: 60px;
padding-right: 60px;
display: flex;
}
.ci1 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.text-block-54 {
color: var(--_fonts---color--black);
flex: 1;
padding-top: 20px;
padding-left: 20px;
padding-right: 20px;
font-weight: 700;
line-height: 18px;
}
.image-25 {
margin: auto 0 0 auto;
display: block;
position: relative;
bottom: 0;
right: 36px;
}
.text-block-55 {
color: var(--_fonts---color--light-blue-grey);
}
.flex-block-112 {
grid-column-gap: 10px;
grid-row-gap: 10px;
color: var(--red);
margin-top: 10px;
}
.flex-block-113 {
border-radius: var(--_round---big-20);
background-color: var(--white);
flex: 0 auto;
align-self: stretch;
padding: 20px;
}
.button-3 {
border-radius: var(--_button---round-12px);
background-color: var(--_button---primary);
flex: none;
justify-content: center;
align-items: center;
padding: 10px 15px;
display: flex;
}
.button-3:hover {
background-color: var(--_button---hover-red);
}
.button-23 {
border-radius: var(--_button---round-12px);
background-color: var(--_button---light-blue);
color: var(--_fonts---color--black);
flex: none;
justify-content: center;
align-items: center;
padding: 10px 25px;
display: flex;
}
.button-23:hover {
background-color: var(--_button---primary);
color: var(--_fonts---color--white);
}
.flex-block-114 {
grid-column-gap: 10px;
grid-row-gap: 10px;
align-self: stretch;
margin-bottom: 30px;
}
.dropdown-4 {
flex-flow: column;
justify-content: space-between;
align-self: stretch;
align-items: center;
margin-left: 0;
margin-right: 0;
display: flex;
}
.dropdown-toggle-3 {
border-top-right-radius: var(--_round---normal);
border-bottom-right-radius: var(--_round---normal);
border-left: 2px solid #0000;
flex: 1;
align-self: stretch;
margin-bottom: 5px;
margin-left: 0;
margin-right: 0;
padding: 6px 15px;
}
.dropdown-toggle-3:hover {
border-left: 2px solid var(--red);
}
.dropdown-toggle-3:active {
background-color: var(--background);
}
.dropdown-list-4 {
background-color: #0000;
flex: 1;
align-self: stretch;
margin-top: 5px;
margin-bottom: 10px;
padding-left: 25px;
display: none;
position: static;
top: 40px;
}
.dropdown-link-3 {
color: var(--_fonts---color--black);
padding: 5px 0;
}
.dropdown-link-3:hover {
color: var(--red);
}
.text-block-56 {
color: var(--_fonts---color--black);
}
.div-block-131 {
border-radius: var(--_round---big-20);
background-color: var(--white);
color: var(--red);
flex-flow: column;
flex: 1;
justify-content: space-between;
align-items: flex-start;
min-width: 230px;
min-height: 180px;
padding: 20px;
display: flex;
}
.div-block-131:hover {
background-color: var(--light-blue);
color: var(--_button---hover-red);
}
.text-block-57 {
color: var(--_fonts---color--black);
font-size: var(--_fonts---font-size--core);
word-break: break-all;
-webkit-hyphens: auto;
hyphens: auto;
font-weight: 600;
}
.vinleftbar {
grid-column-gap: 20px;
grid-row-gap: 20px;
flex: none;
width: 320px;
}
.container-vin {
justify-content: space-between;
align-items: center;
width: 100%;
min-width: auto;
max-width: 1580px;
margin-bottom: 60px;
margin-left: auto;
margin-right: auto;
padding-top: 40px;
display: block;
}
.container-vin.nav {
height: auto;
padding-top: 0;
}
.container-vin.info {
width: 100%;
padding-top: 30px;
padding-bottom: 30px;
}
.container-vin.subscribe {
padding-top: 40px;
padding-bottom: 40px;
}
.container-vin.footer {
background-color: var(--back);
padding-top: 50px;
padding-bottom: 50px;
}
.knot-img {
grid-column-gap: 20px;
grid-row-gap: 20px;
border-radius: var(--_round---big-20);
background-color: var(--white);
color: var(--black);
flex-flow: column;
flex: 1;
justify-content: flex-start;
align-items: flex-start;
min-width: 320px;
min-height: 180px;
padding: 40px;
display: flex;
}
.knotinfo {
border-radius: var(--_round---big-20);
background-color: var(--white);
color: var(--red);
flex-flow: column;
justify-content: space-between;
align-items: flex-start;
max-width: 240px;
padding: 20px;
display: flex;
}
.heading-19 {
color: var(--_fonts---color--black);
margin-top: 0;
margin-bottom: 0;
font-size: 24px;
font-weight: 600;
line-height: 36px;
}
.partsname {
flex: 1;
max-width: 240px;
max-height: 40px;
overflow: hidden;
}
.oemnuber {
width: 100px;
}
.flex-block-115 {
grid-column-gap: 15px;
grid-row-gap: 15px;
justify-content: space-between;
align-self: stretch;
align-items: flex-start;
margin-left: -20px;
margin-right: -20px;
padding: 5px 20px;
}
.showallparts {
border-radius: var(--_button---round-12px);
background-color: var(--_button---light-blue);
color: var(--_fonts---color--black);
flex: none;
justify-content: center;
align-self: stretch;
align-items: center;
padding: 10px 25px;
display: flex;
}
.showallparts:hover {
background-color: var(--_button---primary);
color: var(--_fonts---color--white);
}
.image-26 {
object-fit: contain;
flex: 0 auto;
align-self: auto;
min-width: 200px;
}
.knotin {
border-radius: var(--_round---big-20);
background-color: var(--white);
color: var(--red);
flex-flow: column;
justify-content: space-between;
align-items: flex-start;
max-width: 480px;
padding: 20px;
display: flex;
}
.knot-parts {
grid-column-gap: 5px;
grid-row-gap: 5px;
border-radius: var(--_round---big-20);
background-color: var(--white);
color: var(--black);
flex-flow: column;
flex: 1;
justify-content: flex-start;
align-items: flex-start;
min-width: 320px;
min-height: 180px;
padding: 40px;
display: flex;
}
.nuberlist {
justify-content: center;
align-items: center;
width: 20px;
display: flex;
}
.knotlistitem {
grid-column-gap: 15px;
grid-row-gap: 15px;
justify-content: space-between;
align-self: stretch;
align-items: center;
margin-left: -20px;
margin-right: -20px;
padding: 5px 20px;
}
.code-embed-16 {
color: var(--_fonts---color--light-blue-grey);
justify-content: center;
align-items: center;
display: flex;
}
.code-embed-16:hover {
color: var(--_button---primary);
}
.flex-block-116 {
grid-column-gap: 15px;
grid-row-gap: 15px;
}
.flex-block-117 {
grid-column-gap: 15px;
grid-row-gap: 15px;
justify-content: flex-start;
align-items: center;
}
.brandsort {
grid-column-gap: 20px;
grid-row-gap: 20px;
flex-flow: wrap;
align-self: stretch;
height: 148px;
overflow: hidden;
}
.brandsortb {
grid-column-gap: 30px;
grid-row-gap: 30px;
border-radius: var(--_round---big-20);
background-color: var(--white);
flex-flow: column;
flex: 1;
padding: 40px;
}
.flex-block-118 {
grid-column-gap: 40px;
grid-row-gap: 40px;
border-radius: var(--_round---big-20);
background-image: url('/images/Group-601.png'), linear-gradient(13deg, #0d336c, #182334);
background-position: 100px, 0 0;
background-repeat: no-repeat, repeat;
background-size: cover, auto;
justify-content: flex-start;
align-items: center;
padding: 30px;
}
.heading-20 {
color: var(--_fonts---color--white);
font-size: var(--_fonts---h1);
margin-top: 0;
margin-bottom: 0;
font-weight: 900;
}
.text-block-58 {
color: var(--_fonts---color--white);
font-size: var(--_fonts---font-size--core);
margin-bottom: 10px;
}
.button-24 {
border-radius: var(--_round---normal);
background-color: var(--_button---color);
color: var(--_fonts---color--black);
padding: 14px 30px;
}
.button-24:hover {
background-color: var(--_button---primary);
color: var(--_fonts---color--white);
}
.flex-block-119 {
grid-column-gap: 20px;
grid-row-gap: 20px;
width: 560px;
}
.bestpriceitem {
grid-column-gap: 10px;
grid-row-gap: 10px;
border-radius: var(--_round---normal);
background-color: var(--white);
flex: 1;
justify-content: flex-start;
align-items: center;
min-width: 196px;
max-width: 196px;
padding: 15px;
}
.bestpriceitem:hover {
box-shadow: 0 0 15px #0000004d;
}
.bestpriceitem.end {
display: none;
}
.pricecartbp {
grid-column-gap: 10px;
grid-row-gap: 10px;
}
.actualprice {
font-size: var(--_fonts---font-size--bigger);
font-weight: 800;
}
.oldpricebp {
color: var(--_fonts---color--light-blue-grey);
font-size: var(--_fonts---font-size--supersmall);
text-decoration: line-through;
}
.flex-block-120 {
justify-content: flex-start;
align-items: flex-end;
}
.nameitembp {
flex: 0 auto;
align-self: auto;
max-height: 60px;
overflow: hidden;
}
.saletagbp {
border-radius: var(--_round---small-8);
background-color: var(--green);
color: var(--_fonts---color--white);
font-size: var(--_fonts---font-size--supersmall);
padding: 3px 5px;
font-weight: 600;
position: relative;
top: -30px;
}
.imgitembp {
flex-flow: column;
justify-content: flex-start;
align-items: flex-start;
width: 100%;
max-height: 160px;
padding: 0;
display: flex;
}
.flex-block-121 {
grid-column-gap: 20px;
grid-row-gap: 20px;
overflow: scroll;
}
.flex-block-122 {
justify-content: flex-start;
align-items: flex-end;
}
.inbt {
grid-column-gap: 20px;
grid-row-gap: 20px;
flex: 1;
max-width: 100%;
margin-top: 0;
}
.div-block-132 {
border-radius: var(--_round---big-20);
flex: 1;
}
.flex-block-123 {
grid-column-gap: 40px;
grid-row-gap: 40px;
}
.submit-button-copy {
border-radius: var(--_round---normal);
background-color: var(--_button---primary);
font-size: var(--_fonts---font-size--bigger);
padding: 16px 30px;
}
.submit-button-copy.fill {
font-size: var(--_fonts---font-size--core);
justify-content: center;
align-self: stretch;
align-items: center;
padding-top: 15px;
padding-bottom: 15px;
display: flex;
}
.supportheading {
color: var(--_fonts---color--white);
font-size: var(--_fonts---h1);
margin-top: 0;
margin-bottom: 0;
line-height: 120%;
}
.div-block-133 {
box-sizing: content-box;
object-fit: contain;
position: relative;
}
.text-block-54-copy {
color: var(--_fonts---color--black);
flex: 1;
padding-top: 20px;
padding-left: 20px;
padding-right: 20px;
font-weight: 700;
}
.ci2 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item2.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.ci3 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item3.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.ci4 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item4.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.ci5 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item5.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.ci6 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item6.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.ci7 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item7.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.ci8 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item8.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.ci9 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item9.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.image-5-copy {
box-sizing: content-box;
object-fit: contain;
width: 100%;
overflow: hidden;
}
.flex-block-124 {
grid-column-gap: 30px;
grid-row-gap: 30px;
border-radius: var(--_round---big-20);
background-image: url('/images/carvin.png'), linear-gradient(45deg, #1b283b, #0d336c);
background-position: 150px, 0 0;
background-repeat: no-repeat, repeat;
background-size: auto, auto;
justify-content: center;
align-self: stretch;
align-items: flex-start;
width: 440px;
padding: 30px;
}
.heading-21 {
color: var(--_fonts---color--white);
flex: 0 auto;
align-self: stretch;
margin-top: 0;
margin-bottom: 0;
font-size: 24px;
line-height: 34px;
}
.button-3-copy {
border-radius: var(--_button---round-12px);
background-color: var(--_button---primary);
flex: none;
justify-content: center;
align-items: center;
padding: 12px 25px;
display: flex;
}
.button-3-copy:hover {
background-color: var(--_button---hover-red);
}
.select-copy {
border: 1px solid var(--grey);
border-radius: var(--_round---supersmall-4);
background-color: var(--white);
color: var(--_fonts---color--grey);
width: 180px;
height: 46px;
margin-bottom: 0;
padding: 12px 24px;
}
.div-block-10-copy {
justify-content: space-between;
align-items: center;
margin-top: 20px;
display: flex;
}
.image-27 {
width: 160px;
margin-bottom: -232px;
margin-left: 600px;
}
.news-index-block-copy {
grid-column-gap: 20px;
grid-row-gap: 20px;
flex: 1;
max-width: 100%;
margin-top: 0;
margin-bottom: 60px;
}
.container-copy {
justify-content: space-between;
align-items: center;
width: 100%;
min-width: auto;
max-width: 1580px;
margin-left: auto;
margin-right: auto;
padding-top: 20px;
display: block;
}
.container-copy.nav {
height: auto;
padding-top: 0;
}
.container-copy.info {
width: 100%;
padding-top: 30px;
padding-bottom: 30px;
}
.container-copy.subscribe {
padding-top: 40px;
padding-bottom: 40px;
}
.container-copy.footer {
background-color: var(--back);
padding-top: 50px;
padding-bottom: 50px;
}
.div-block-134 {
border: 1px solid var(--_fonts---color--light-blue);
color: var(--_fonts---color--black);
border-radius: 40px;
justify-content: center;
align-items: center;
width: 36px;
height: 36px;
display: flex;
transform: rotate(0);
}
.div-block-134:hover {
background-color: var(--red);
color: var(--white);
border-style: none;
}
.code-embed-17 {
width: 20px;
height: 20px;
}
.div-block-134-copy {
border: 1px solid var(--_fonts---color--light-blue);
color: var(--_fonts---color--black);
border-radius: 40px;
justify-content: center;
align-items: center;
width: 36px;
height: 36px;
display: flex;
transform: rotate(180deg);
}
.div-block-134-copy:hover {
background-color: var(--red);
color: var(--white);
border-style: none;
}
.flex-block-125 {
grid-column-gap: 10px;
grid-row-gap: 10px;
}
.div-block-135 {
background-color: var(--light-blue);
border-radius: 40px;
width: 8px;
height: 8px;
}
.div-block-135:hover {
background-color: var(--red);
}
.flex-block-126 {
grid-column-gap: 4px;
grid-row-gap: 4px;
justify-content: flex-start;
align-self: stretch;
align-items: center;
margin-left: 30px;
}
.flex-block-108-copy {
grid-column-gap: 18px;
grid-row-gap: 18px;
justify-content: space-between;
align-items: flex-start;
overflow: scroll;
}
@media screen and (min-width: 1440px) {
.body {
--_fonts---font-family: Onest, sans-serif;
@ -5434,10 +6587,10 @@ body {
margin-left: 0;
margin-right: 0;
}
/*
.bottom_head {
.topmenuh {
margin-top: 0;
} */
}
.flex-block-4 {
grid-column-gap: 40px;
@ -5527,7 +6680,7 @@ body {
}
.flex-block-39-copy {
width: 150px;
width: 200px;
}
.cart-ditail {
@ -5587,8 +6740,6 @@ body {
background-color: var(--white);
}
.button-for-mobile-menu-block {
padding-left: 20px;
padding-right: 20px;
@ -5690,9 +6841,13 @@ body {
margin-top: 12px;
}
/* .bottom_head {
.topmenub {
margin-top: 0;
} */
}
.ci1:hover {
background-color: var(--light-blue);
}
.vinleftbar {
width: 320px;
@ -5711,18 +6866,32 @@ body {
max-width: none;
}
.flex-block-118 {
grid-column-gap: 0px;
grid-row-gap: 0px;
}
.heading-20 {
font-size: 48px;
}
.flex-block-119 {
width: 520px;
width: 480px;
}
.bestpriceitem.end {
display: flex;
}
.flex-block-121 {
grid-column-gap: 15px;
grid-row-gap: 15px;
}
.ci2:hover, .ci3:hover, .ci4:hover, .ci5:hover, .ci6:hover, .ci7:hover, .ci8:hover, .ci9:hover {
background-color: var(--light-blue);
}
.flex-block-124 {
width: 540px;
}
@ -6092,7 +7261,7 @@ body {
padding-bottom: 40px;
}
.top_head, .bottom_head {
.top_head, .topmenuh {
padding-left: 30px;
padding-right: 30px;
}
@ -6107,6 +7276,7 @@ body {
}
.slider {
align-self: stretch;
height: auto;
display: flex;
}
@ -6204,6 +7374,8 @@ body {
flex-flow: column;
justify-content: space-between;
align-items: flex-start;
padding-top: 40px;
padding-bottom: 40px;
}
.div-block-12, .div-block-12.small {
@ -6888,11 +8060,15 @@ body {
margin-top: 0;
}
.topnav {
margin-left: 0;
.code-embed-15 {
width: 160px;
}
.bottom_head {
.topnav {
margin-left: 190px;
}
.topmenub {
padding-left: 30px;
padding-right: 30px;
}
@ -6917,6 +8093,10 @@ body {
padding-bottom: 40px;
}
.div-block-128 {
background-position: 0%;
}
.catnav {
padding-left: 30px;
padding-right: 30px;
@ -6945,10 +8125,19 @@ body {
flex-flow: row;
}
.supportheading {
font-size: 30px;
}
.image-5-copy {
object-fit: contain;
}
.image-27 {
margin-bottom: -280px;
margin-left: 530px;
}
.container-copy, .container-copy.nav, .container-copy.info {
padding-left: 0;
padding-right: 0;
@ -7180,6 +8369,10 @@ body {
align-items: center;
}
.flex-block-26 {
min-width: 120px;
}
.container2 {
padding: 20px 30px;
}
@ -7339,7 +8532,7 @@ body {
}
.flex-block-39-copy {
width: 150px;
width: 200px;
}
.heading-9-copy-copy {
@ -7468,43 +8661,31 @@ body {
}
.flex-block-78 {
justify-content: space-between;
align-items: center;
}
.flex-block-81 {
grid-column-gap: 5px;
grid-row-gap: 5px;
flex-flow: row;
justify-content: space-between;
align-items: center;
}
.core-product-copy {
flex-flow: column;
justify-content: flex-start;
align-items: flex-start;
}
.core-product-search-copy {
flex-flow: row;
align-self: stretch;
max-width: 100%;
height: 340px;
display: flex;
overflow: scroll;
}
.raiting-copy, .pcs-copy {
display: none;
}
.item-recommend-copy {
display: block;
.flex-block-80 {
display: none;
}
.flex-block-83 {
flex-flow: column;
.flex-block-81 {
justify-content: space-between;
align-self: stretch;
align-items: center;
}
.flex-block-82 {
grid-column-gap: 30px;
grid-row-gap: 30px;
justify-content: flex-start;
align-items: center;
}
.sort-item-brand-copy {
width: 50px;
}
.flex-block-84 {
@ -7518,38 +8699,23 @@ body {
.flex-block-85 {
grid-column-gap: 5px;
grid-row-gap: 5px;
border-radius: var(--_round---small-8);
border-radius: var(--_round---normal);
background-color: var(--white);
justify-content: flex-start;
align-items: center;
padding: 8px 12px;
padding: 10px 20px;
display: flex;
}
.code-embed-9 {
color: var(--_button---primary);
width: 16px;
height: 16px;
width: 18px;
height: 18px;
}
.image-15 {
max-width: 200px;
}
.code-embed-10 {
color: var(--white);
width: 12px;
height: 16px;
}
.flex-block-86 {
grid-column-gap: 5px;
grid-row-gap: 5px;
border-radius: var(--_round---small-8);
background-color: var(--_button---hover-dark_blue);
.flex-block-77-copy {
justify-content: flex-start;
align-items: center;
padding: 10px 15px;
}
.flex-block-18-copy-copy {
@ -7558,16 +8724,15 @@ body {
flex-flow: column;
}
.link-block-4-copy {
flex: 0 auto;
}
.heading-8-copy {
color: var(--_fonts---color--light-blue-grey);
font-size: var(--_fonts---font-size--small-font-size);
margin-left: 0;
margin-right: 0;
align-self: stretch;
padding-left: 0;
padding-right: 0;
font-weight: 400;
line-height: 20px;
display: block;
overflow: hidden;
}
.dropdown-2 {
@ -7575,41 +8740,18 @@ body {
margin-right: 0;
}
.dropdown-list-2 {
background-color: var(--white);
box-shadow: 0 2px 5px #0003;
}
.dropdown-list-2.w--open {
border-radius: var(--_round---small-8);
}
.heading-9-copy {
margin-top: 0;
font-size: var(--_fonts---font-size--bigger);
}
.info-block-search-copy {
grid-column-gap: 10px;
grid-row-gap: 10px;
flex-flow: column;
justify-content: space-between;
align-self: stretch;
align-items: flex-start;
}
.heading-9-copy-copy {
font-size: var(--_fonts---font-size--small-font-size);
line-height: 18px;
}
.section-2 {
padding-left: 15px;
padding-right: 15px;
align-items: center;
}
.mobile-block {
flex: 0 auto;
width: auto;
display: flex;
}
.flex-block-87 {
@ -7619,23 +8761,24 @@ body {
}
.mobile-menu-bottom {
margin-left: 0;
margin-right: 0;
padding-left: 15px;
padding-right: 15px;
padding-top: 0;
padding-bottom: 0;
box-shadow: 0 0 5px #0003;
}
.mobile-menu-bottom.nav, .mobile-menu-bottom.info {
padding-left: 15px;
padding-right: 15px;
.mobile-menu-bottom.info {
padding-top: 20px;
padding-bottom: 20px;
}
.mobile-menu-bottom.subscribe, .mobile-menu-bottom.footer {
padding: 40px 15px;
.mobile-menu-buttom-section {
display: block;
}
.name-mobile-menu-item {
display: block;
color: var(--black);
font-size: var(--_fonts---font-size--small-font-size);
font-weight: 400;
}
.button-for-mobile-menu-block {
@ -7651,13 +8794,26 @@ body {
background-color: var(--_button---light-blue);
}
.section-3 {
padding-left: 15px;
padding-right: 15px;
.icon_favorite {
color: var(--_button---light-blue-grey);
}
.nav-menu-3 {
display: none;
.block-for-moble-menu-icon {
width: 30px;
height: 30px;
}
.div-block-25 {
width: 20px;
height: 20px;
display: block;
}
.info-satus {
background-color: var(--green);
color: var(--_fonts---color--white);
font-size: 10px;
font-weight: 400;
}
.flex-block-93 {
@ -7666,15 +8822,13 @@ body {
}
.sort-list-card {
grid-column-gap: 0px;
grid-row-gap: 0px;
padding-left: 18px;
padding-right: 18px;
padding-right: 30px;
display: none;
}
.flex-block-49-copy {
grid-column-gap: 28px;
grid-row-gap: 28px;
grid-column-gap: 30px;
grid-row-gap: 30px;
}
.price-in-cart-s1 {
@ -7871,6 +9025,18 @@ body {
padding-bottom: 90px;
}
.div-block-129 {
justify-content: flex-start;
align-self: stretch;
align-items: center;
}
.flex-block-108 {
flex-flow: column;
justify-content: space-between;
align-items: center;
}
.container-vin {
padding-top: 20px;
}
@ -7884,7 +9050,24 @@ body {
padding-bottom: 90px;
}
.inbt, .news-index-block-copy {
.inbt {
grid-column-gap: 20px;
grid-row-gap: 20px;
}
.flex-block-123 {
flex-flow: column;
}
.flex-block-124 {
flex: 1;
}
.image-27 {
margin-left: 330px;
}
.news-index-block-copy {
grid-column-gap: 20px;
grid-row-gap: 20px;
}
@ -7901,10 +9084,6 @@ body {
.container-copy.footer {
padding-bottom: 90px;
}
.mobile-menu-buttom-section {
display: block;
}
}
@media screen and (max-width: 479px) {
@ -7974,7 +9153,7 @@ body {
grid-row-gap: 15px;
}
.top_head, .bottom_head {
.top_head, .topmenuh {
padding-left: 15px;
padding-right: 15px;
}
@ -8248,7 +9427,7 @@ body {
}
.heading_news {
line-height: 28px;
line-height: 20px;
}
.text-block-20 {
@ -8780,6 +9959,10 @@ body {
padding-bottom: 5px;
}
.icon-setting {
border: 0 #000;
}
.section-3 {
padding-left: 15px;
padding-right: 15px;
@ -9145,17 +10328,22 @@ body {
}
.favcardcat {
border-style: none;
width: 30px;
height: 30px;
margin-top: 0;
}
.code-embed-15 {
display: none;
}
.topnav {
margin-left: 0;
top: 58px;
}
.bottom_head {
.topmenub {
padding-left: 15px;
padding-right: 15px;
}
@ -9218,6 +10406,17 @@ body {
padding: 40px 0 90px;
}
.div-block-129 {
justify-content: flex-start;
align-items: flex-start;
width: 100%;
height: auto;
}
.flex-block-109 {
margin-bottom: 10px;
}
.saletag {
padding-top: 3px;
padding-bottom: 3px;
@ -9225,6 +10424,15 @@ body {
top: -15px;
}
.flex-block-110 {
grid-column-gap: 10px;
grid-row-gap: 10px;
flex-flow: column-reverse;
justify-content: flex-start;
align-items: flex-start;
margin-bottom: 20px;
}
.catnav {
padding-left: 15px;
padding-right: 15px;
@ -9351,16 +10559,17 @@ body {
}
.submit-button-copy {
align-self: stretch;
padding: 15px 30px;
align-self: auto;
padding: 15px 25px;
}
.supportheading {
font-size: var(--_fonts---font-size--heading-2);
width: 220px;
}
.image-5-copy {
width: 100%;
width: 60%;
height: 100%;
min-height: auto;
}
@ -9369,6 +10578,10 @@ body {
margin-bottom: 10px;
}
.image-27 {
display: none;
}
.container-copy {
max-width: 100%;
margin-left: 0;
@ -9399,20 +10612,10 @@ body {
}
}
#w-node-bc394713-4b8e-44e3-8ddf-3edc1c31a743-3b3232bc {
#w-node-_5428604d-3026-96c9-8306-ab3c3dd9acb7-3b3232bc {
justify-self: stretch;
}
#w-node-_8908a890-8c8f-e12c-999f-08d5da3bcc01-3b3232bc {
grid-area: Area;
}
@media screen and (min-width: 1920px) {
#w-node-_8908a890-8c8f-e12c-999f-08d5da3bcc01-3b3232bc {
grid-area: Area;
}
}
@media screen and (max-width: 991px) {
#w-node-_2eb32dc9-d3cb-cbbb-db81-4205d4e11f12-659ca3b9 {
grid-area: span 1 / span 3 / span 1 / span 3;
@ -9423,818 +10626,6 @@ body {
#w-node-_35f55517-cbe0-9ee3-13bb-a3ed00029bba-00029ba8, #w-node-_35f55517-cbe0-9ee3-13bb-a3ed00029bc7-00029ba8 {
justify-self: stretch;
}
.button-for-mobile-menu-block {
grid-column-gap: 0px;
grid-row-gap: 0px;
width: 60px;
padding-bottom: 5px;
}
}
.flex-block-113 {
border-radius: var(--_round---big-20);
background-color: var(--white);
flex: 0 auto;
align-self: stretch;
padding: 20px;
}
.button-3 {
border-radius: var(--_button---round-12px);
background-color: var(--_button---primary);
flex: none;
justify-content: center;
align-items: center;
padding: 10px 15px;
display: flex;
}
.button-3:hover {
background-color: var(--_button---hover-red);
}
.button-23 {
border-radius: var(--_button---round-12px);
background-color: var(--_button---light-blue);
color: var(--_fonts---color--black);
flex: none;
justify-content: center;
align-items: center;
padding: 10px 25px;
display: flex;
}
.button-23:hover {
background-color: var(--_button---primary);
color: var(--_fonts---color--white);
}
.flex-block-114 {
grid-column-gap: 10px;
grid-row-gap: 10px;
align-self: stretch;
margin-bottom: 30px;
}
.dropdown-4 {
flex-flow: column;
justify-content: space-between;
align-self: stretch;
align-items: center;
margin-left: 0;
margin-right: 0;
display: flex;
}
.dropdown-toggle-3 {
border-top-right-radius: var(--_round---normal);
border-bottom-right-radius: var(--_round---normal);
border-left: 2px solid #0000;
flex: 1;
align-self: stretch;
margin-bottom: 5px;
margin-left: 0;
margin-right: 0;
padding: 6px 15px;
}
.dropdown-toggle-3:hover {
border-left: 2px solid var(--red);
}
.dropdown-toggle-3:active {
background-color: var(--background);
}
.dropdown-list-4 {
background-color: #0000;
flex: 1;
align-self: stretch;
margin-top: 5px;
margin-bottom: 10px;
padding-left: 25px;
display: none;
position: static;
top: 40px;
}
.dropdown-link-3 {
color: var(--_fonts---color--black);
padding: 5px 0;
}
.dropdown-link-3:hover {
color: var(--red);
}
.text-block-56 {
color: var(--_fonts---color--black);
}
.div-block-131 {
border-radius: var(--_round---big-20);
background-color: var(--white);
color: var(--red);
flex-flow: column;
flex: 1;
justify-content: space-between;
align-items: flex-start;
min-width: 230px;
min-height: 180px;
padding: 20px;
display: flex;
}
.div-block-131:hover {
background-color: var(--light-blue);
color: var(--_button---hover-red);
}
.text-block-57 {
color: var(--_fonts---color--black);
font-size: var(--_fonts---font-size--core);
word-break: break-all;
-webkit-hyphens: auto;
hyphens: auto;
font-weight: 600;
}
.vinleftbar {
grid-column-gap: 20px;
grid-row-gap: 20px;
flex: none;
width: 320px;
}
.container-vin {
justify-content: space-between;
align-items: center;
width: 100%;
min-width: auto;
max-width: 1580px;
margin-bottom: 60px;
margin-left: auto;
margin-right: auto;
padding-top: 40px;
display: block;
}
.container-vin.nav {
height: auto;
padding-top: 0;
}
.container-vin.info {
width: 100%;
padding-top: 30px;
padding-bottom: 30px;
}
.container-vin.subscribe {
padding-top: 40px;
padding-bottom: 40px;
}
.container-vin.footer {
background-color: var(--back);
padding-top: 50px;
padding-bottom: 50px;
}
.knot-img {
grid-column-gap: 20px;
grid-row-gap: 20px;
border-radius: var(--_round---big-20);
background-color: var(--white);
color: var(--black);
flex-flow: column;
flex: 1;
justify-content: flex-start;
align-items: flex-start;
min-width: 320px;
min-height: 180px;
padding: 40px;
display: flex;
}
.knotinfo {
border-radius: var(--_round---big-20);
background-color: var(--white);
color: var(--red);
flex-flow: column;
justify-content: space-between;
align-items: flex-start;
max-width: 240px;
padding: 20px;
display: flex;
}
.heading-19 {
color: var(--_fonts---color--black);
margin-top: 0;
margin-bottom: 0;
font-size: 24px;
font-weight: 600;
line-height: 36px;
}
.partsname {
flex: 1;
max-width: 240px;
max-height: 40px;
overflow: hidden;
}
.oemnuber {
width: 100px;
}
.flex-block-115 {
grid-column-gap: 15px;
grid-row-gap: 15px;
justify-content: space-between;
align-self: stretch;
align-items: flex-start;
margin-left: -20px;
margin-right: -20px;
padding: 5px 20px;
}
.showallparts {
border-radius: var(--_button---round-12px);
background-color: var(--_button---light-blue);
color: var(--_fonts---color--black);
flex: none;
justify-content: center;
align-self: stretch;
align-items: center;
padding: 10px 25px;
display: flex;
}
.showallparts:hover {
background-color: var(--_button---primary);
color: var(--_fonts---color--white);
}
.image-26 {
object-fit: contain;
flex: 0 auto;
align-self: auto;
min-width: 200px;
}
.knotin {
border-radius: var(--_round---big-20);
background-color: var(--white);
color: var(--red);
flex-flow: column;
justify-content: space-between;
align-items: flex-start;
max-width: 480px;
padding: 20px;
display: flex;
}
.knot-parts {
grid-column-gap: 5px;
grid-row-gap: 5px;
border-radius: var(--_round---big-20);
background-color: var(--white);
color: var(--black);
flex-flow: column;
flex: 1;
justify-content: flex-start;
align-items: flex-start;
min-width: 320px;
min-height: 180px;
padding: 40px;
display: flex;
}
.nuberlist {
justify-content: center;
align-items: center;
width: 20px;
display: flex;
}
.knotlistitem {
grid-column-gap: 15px;
grid-row-gap: 15px;
justify-content: space-between;
align-self: stretch;
align-items: center;
margin-left: -20px;
margin-right: -20px;
padding: 5px 20px;
}
.code-embed-16 {
color: var(--_fonts---color--light-blue-grey);
justify-content: center;
align-items: center;
display: flex;
}
.code-embed-16:hover {
color: var(--_button---primary);
}
.flex-block-116 {
grid-column-gap: 15px;
grid-row-gap: 15px;
}
.flex-block-117 {
grid-column-gap: 15px;
grid-row-gap: 15px;
justify-content: flex-start;
align-items: center;
}
.brandsort {
grid-column-gap: 20px;
grid-row-gap: 20px;
flex-flow: wrap;
align-self: stretch;
height: 148px;
overflow: hidden;
}
.brandsortb {
grid-column-gap: 30px;
grid-row-gap: 30px;
border-radius: var(--_round---big-20);
background-color: var(--white);
flex-flow: column;
flex: 1;
padding: 40px;
}
.flex-block-118 {
grid-column-gap: 40px;
grid-row-gap: 40px;
border-radius: var(--_round---big-20);
background-image: url('/images/Group-601.png'), linear-gradient(13deg, #0d336c, #182334);
background-position: 100px, 0 0;
background-repeat: no-repeat, repeat;
background-size: cover, auto;
justify-content: flex-start;
align-items: center;
padding: 30px;
}
.heading-20 {
color: var(--_fonts---color--white);
font-size: var(--_fonts---h1);
margin-top: 0;
margin-bottom: 0;
font-weight: 900;
}
.text-block-58 {
color: var(--_fonts---color--white);
font-size: var(--_fonts---font-size--core);
margin-bottom: 10px;
}
.button-24 {
border-radius: var(--_round---normal);
background-color: var(--_button---color);
color: var(--_fonts---color--black);
padding: 14px 30px;
}
.button-24:hover {
background-color: var(--_button---primary);
color: var(--_fonts---color--white);
}
.flex-block-119 {
grid-column-gap: 20px;
grid-row-gap: 20px;
width: 560px;
}
.bestpriceitem {
grid-column-gap: 10px;
grid-row-gap: 10px;
border-radius: var(--_round---normal);
background-color: var(--white);
flex: 1;
justify-content: flex-start;
align-items: center;
min-width: 196px;
max-width: 196px;
padding: 15px;
}
.bestpriceitem:hover {
box-shadow: 0 0 15px #0000004d;
}
.bestpriceitem.end {
display: none;
}
.pricecartbp {
grid-column-gap: 10px;
grid-row-gap: 10px;
}
.actualprice {
font-size: var(--_fonts---font-size--bigger);
font-weight: 800;
}
.oldpricebp {
color: var(--_fonts---color--light-blue-grey);
font-size: var(--_fonts---font-size--supersmall);
text-decoration: line-through;
}
.flex-block-120 {
justify-content: flex-start;
align-items: flex-end;
}
.nameitembp {
flex: 0 auto;
align-self: auto;
max-height: 60px;
overflow: hidden;
}
.saletagbp {
border-radius: var(--_round---small-8);
background-color: var(--green);
color: var(--_fonts---color--white);
font-size: var(--_fonts---font-size--supersmall);
padding: 3px 5px;
font-weight: 600;
position: relative;
top: -30px;
}
.imgitembp {
flex-flow: column;
justify-content: flex-start;
align-items: flex-start;
width: 100%;
max-height: 160px;
padding: 0;
display: flex;
}
.flex-block-121 {
grid-column-gap: 20px;
grid-row-gap: 20px;
overflow: scroll;
}
.flex-block-122 {
justify-content: flex-start;
align-items: flex-end;
}
.inbt {
grid-column-gap: 20px;
grid-row-gap: 20px;
flex: 1;
max-width: 100%;
margin-top: 0;
}
.div-block-132 {
border-radius: var(--_round---big-20);
flex: 1;
}
.flex-block-123 {
grid-column-gap: 40px;
grid-row-gap: 40px;
}
.submit-button-copy {
border-radius: var(--_round---normal);
background-color: var(--_button---primary);
font-size: var(--_fonts---font-size--bigger);
padding: 16px 30px;
}
.submit-button-copy.fill {
font-size: var(--_fonts---font-size--core);
justify-content: center;
align-self: stretch;
align-items: center;
padding-top: 15px;
padding-bottom: 15px;
display: flex;
}
.supportheading {
color: var(--_fonts---color--white);
font-size: var(--_fonts---h1);
margin-top: 0;
margin-bottom: 0;
line-height: 120%;
}
.div-block-133 {
box-sizing: content-box;
object-fit: contain;
position: relative;
}
.text-block-54-copy {
color: var(--_fonts---color--black);
flex: 1;
padding-top: 20px;
padding-left: 20px;
padding-right: 20px;
font-weight: 700;
}
.ci2 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item2.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.ci3 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item3.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.ci4 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item4.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.ci5 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item5.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.ci6 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item6.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.ci7 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item7.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.ci8 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item8.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.ci9 {
border-radius: var(--_round---big-20);
background-color: var(--white);
background-image: url('/images/catalog_item9.png');
background-position: 100% 100%;
background-repeat: no-repeat;
background-size: auto;
flex: 1;
min-width: 160px;
height: 180px;
display: flex;
}
.image-5-copy {
box-sizing: content-box;
object-fit: contain;
width: 100%;
overflow: hidden;
}
.flex-block-124 {
grid-column-gap: 30px;
grid-row-gap: 30px;
border-radius: var(--_round---big-20);
/* background-image: url('/images/carvin.png'), linear-gradient(45deg, #1b283b, #0d336c);
background-position: 150px, 0 0; */
background-repeat: no-repeat, repeat;
background-size: auto, auto;
justify-content: center;
align-self: stretch;
align-items: flex-start;
width: 440px;
padding: 30px;
}
.heading-21 {
color: var(--_fonts---color--white);
flex: 0 auto;
align-self: stretch;
margin-top: 0;
margin-bottom: 0;
font-size: 24px;
line-height: 34px;
}
.button-3-copy {
border-radius: var(--_button---round-12px);
background-color: var(--_button---primary);
flex: none;
justify-content: center;
align-items: center;
padding: 12px 25px;
display: flex;
}
.button-3-copy:hover {
background-color: var(--_button---hover-red);
}
.select-copy {
border: 1px solid var(--grey);
border-radius: var(--_round---supersmall-4);
background-color: var(--white);
color: var(--_fonts---color--grey);
width: 180px;
height: 46px;
margin-bottom: 0;
padding: 12px 24px;
}
.div-block-10-copy {
justify-content: space-between;
align-items: center;
margin-top: 20px;
display: flex;
}
.image-27 {
width: 160px;
margin-bottom: -232px;
margin-left: 600px;
}
.news-index-block-copy {
grid-column-gap: 20px;
grid-row-gap: 20px;
flex: 1;
max-width: 100%;
margin-top: 0;
margin-bottom: 60px;
}
.container-copy {
justify-content: space-between;
align-items: center;
width: 100%;
min-width: auto;
max-width: 1580px;
margin-left: auto;
margin-right: auto;
padding-top: 20px;
display: block;
}
.container-copy.nav {
height: auto;
padding-top: 0;
}
.container-copy.info {
width: 100%;
padding-top: 30px;
padding-bottom: 30px;
}
.container-copy.subscribe {
padding-top: 40px;
padding-bottom: 40px;
}
.container-copy.footer {
background-color: var(--back);
padding-top: 50px;
padding-bottom: 50px;
}
.div-block-134 {
border: 1px solid var(--_fonts---color--light-blue);
color: var(--_fonts---color--black);
border-radius: 40px;
justify-content: center;
align-items: center;
width: 36px;
height: 36px;
display: flex;
transform: rotate(0);
}
.div-block-134:hover {
background-color: var(--red);
color: var(--white);
border-style: none;
}
.code-embed-17 {
width: 20px;
height: 20px;
}
.div-block-134-copy {
border: 1px solid var(--_fonts---color--light-blue);
color: var(--_fonts---color--black);
border-radius: 40px;
justify-content: center;
align-items: center;
width: 36px;
height: 36px;
display: flex;
transform: rotate(180deg);
}
.div-block-134-copy:hover {
background-color: var(--red);
color: var(--white);
border-style: none;
}
.flex-block-125 {
grid-column-gap: 10px;
grid-row-gap: 10px;
}
.div-block-135 {
background-color: var(--light-blue);
border-radius: 40px;
width: 8px;
height: 8px;
}
.div-block-135:hover {
background-color: var(--red);
}
.flex-block-126 {
grid-column-gap: 4px;
grid-row-gap: 4px;
justify-content: flex-start;
align-self: stretch;
align-items: center;
margin-left: 30px;
}

View File

@ -88,7 +88,6 @@ export interface LaximoVehicleSearchResult {
// Дополнительные атрибуты из документации Laximo
grade?: string
transmission?: string
doors?: string
creationregion?: string
destinationregion?: string
date?: string
@ -97,12 +96,6 @@ export interface LaximoVehicleSearchResult {
trimcolor?: string
datefrom?: string
dateto?: string
frame?: string
frames?: string
framefrom?: string
frameto?: string
engine1?: string
engine2?: string
engine_info?: string
engineno?: string
options?: string
@ -112,8 +105,10 @@ export interface LaximoVehicleSearchResult {
market?: string
prodRange?: string
prodPeriod?: string
carpet_color?: string
seat_combination_code?: string
// Дополнительные атрибуты (могут приходить в виде массива attributes)
sales_code?: string
attributes: LaximoVehicleAttribute[]
}
export interface LaximoVehicleInfo {
@ -154,6 +149,7 @@ export interface LaximoUnit {
description?: string
imageurl?: string
largeimageurl?: string
ssd?: string // 🎯 ДОБАВЛЕНИЕ: SSD для узла
details?: LaximoDetail[]
attributes?: LaximoDetailAttribute[]
}
@ -279,6 +275,7 @@ export interface LaximoUnitInfo {
description?: string
imageurl?: string
largeimageurl?: string
ssd?: string // 🎯 ДОБАВЛЕНИЕ: SSD для узла
attributes?: LaximoDetailAttribute[]
}