From e990cf666e87952fe64ad86fff7c8d7d0b9e29da Mon Sep 17 00:00:00 2001 From: Lanskikh Date: Fri, 26 Sep 2025 14:11:24 +0500 Subject: [PATCH] fixes --- .eslintrc.cjs | 3 +- src/components/Layouts/Footer.tsx | 6 +- src/components/Layouts/Header.tsx | 58 +++++++++---------- src/components/Main/Contacts.tsx | 50 ++++++++-------- src/components/Main/Decreasing.tsx | 12 ++-- src/components/Main/Distance.tsx | 16 ++--- src/components/Main/Efficiency.tsx | 14 ++--- src/components/Main/ModalWithForm.tsx | 14 +++-- src/components/Main/Motivation.tsx | 10 ++-- src/components/Main/MultiUser.tsx | 10 ++-- .../Main/Products/Tabs/ForTeachingTab.tsx | 28 ++++----- .../Main/Products/Tabs/IndustrialTab.tsx | 26 ++++----- .../Main/Products/Tabs/SimulatorsTab.tsx | 8 +-- src/components/Main/Teaching.tsx | 12 ++-- src/components/Main/Trainings.tsx | 27 +++++---- src/components/icons/BurgerIcon.tsx | 2 - src/consts/projects.ts | 2 +- src/ui/Button.tsx | 2 +- 18 files changed, 150 insertions(+), 150 deletions(-) diff --git a/.eslintrc.cjs b/.eslintrc.cjs index d6c9537..20fce69 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -14,5 +14,6 @@ module.exports = { 'warn', { allowConstantExport: true }, ], + 'no-irregular-whitespace': 'off', }, -} +}; diff --git a/src/components/Layouts/Footer.tsx b/src/components/Layouts/Footer.tsx index bc264a5..c2704ef 100644 --- a/src/components/Layouts/Footer.tsx +++ b/src/components/Layouts/Footer.tsx @@ -11,13 +11,13 @@ export function Footer() {
Политика конфиденциальности graff.tech -

- © 2024 GRAFF interactive. Все права защищены +

+ © 2025 GRAFF interactive. Все права защищены

diff --git a/src/components/Layouts/Header.tsx b/src/components/Layouts/Header.tsx index f58f9db..2eb4a08 100644 --- a/src/components/Layouts/Header.tsx +++ b/src/components/Layouts/Header.tsx @@ -2,17 +2,14 @@ import { motion } from 'framer-motion'; import { PropsWithChildren, useRef, useState } from 'react'; import { AnchorLink } from '../../ui/AnchorLink'; import { Link } from 'react-router-dom'; -import { useLanguageStore } from '../../store/languageStore'; import { useOnClickOutside } from 'usehooks-ts'; import { useModalStore } from '../../store/modalStore'; import { ModalWithForm } from '../Main/ModalWithForm'; import { Button } from '../../ui/Button'; import { LogoWithTextIcon } from '../icons/LogoWithTextIcon'; -import { LogoIcon } from '../icons/LogoIcon'; import { BurgerIcon } from '../icons/BurgerIcon'; import { CloseIcon } from '../icons/CloseIcon'; import { CubeIcon } from '../icons/CubeIcon'; -import { useWindowWidth } from '../../hooks/useWindowWidth'; export function Header() { const [menuOpen, setMenuOpen] = useState(false); @@ -25,14 +22,11 @@ export function Header() { () => setMenuOpen(false), ); - const width = useWindowWidth(); - return (
Типы тренажеров Проекты Варианты комплектации - -
- - +
+
+ {/* + */}
@@ -107,23 +103,23 @@ function BurgerAnchor({ ); } -function ChooseLang({ currentLang }: { currentLang: 'RU' | 'EN' }) { - const { setLang, lang } = useLanguageStore(); +// function ChooseLang({ currentLang }: { currentLang: 'RU' | 'EN' }) { +// const { setLang, lang } = useLanguageStore(); - return ( - - ); -} +// return ( +// +// ); +// } // function LangToggler({ lang }: { lang: Lang }) { // const [open, setOpen] = useState(false); @@ -139,7 +135,7 @@ function ChooseLang({ currentLang }: { currentLang: 'RU' | 'EN' }) { //

Свяжитесь с нами

- - + + + + + +

Социальные сети

-
+
{' '} сделать обучение сотрудников безопасней и эффективней -
-
+
+
{[ 'снижение количества несчастных случаев', 'уменьшение количества ошибок при ТО и ППР', 'меньше случаев внеплановой остановки оборудования', - 'снижение расходов на закупку реальной техники и оборудования для обучения', + 'снижение расходов на закупку реальной техники и оборудования для обучения', 'сокращение сроков обучения', ].map((text, index) => ( ))}
@@ -154,7 +156,7 @@ export function ModalWithForm() { value={phone} placeholder={placeholder} onChange={e => setPhone(e.target.value.replace(/ /g, ''))} - className="w-full transition-all bg-transparent rounded-none outline-none h4 placeholder:h4 placeholder:font-medium placeholder:select-none peer" + className="h4 placeholder:h4 placeholder:font-medium placeholder:select-none peer w-full bg-transparent rounded-none transition-all outline-none" />
@@ -237,7 +239,7 @@ export function ModalWithForm() { ) : (
-

Спасибо за отправку заявки!

+

Спасибо за отправку заявки!

Мы ценим ваш интерес к нашей компании и в ближайшее время свяжемся с вами для уточнения деталей проекта. diff --git a/src/components/Main/Motivation.tsx b/src/components/Main/Motivation.tsx index 9bcd07f..83cbe2e 100644 --- a/src/components/Main/Motivation.tsx +++ b/src/components/Main/Motivation.tsx @@ -1,15 +1,15 @@ export function Motivation() { return (

-
-

+
+

Создаем интерактивные тренажеры - для промышленности и образования + для промышленности и образования

-

+

Интерактивные тренажеры - для обучения сотрудников + для обучения сотрудников

Помогаем сократить затраты на обучение, повысить безопасность и diff --git a/src/components/Main/MultiUser.tsx b/src/components/Main/MultiUser.tsx index 2e4c01b..5036437 100644 --- a/src/components/Main/MultiUser.tsx +++ b/src/components/Main/MultiUser.tsx @@ -12,7 +12,7 @@ export function MultiUser() { itemType="http://schema.org/MultiUser" className="lg:py-[100px] py-14 sm:grid lg:grid-cols-12 sm:grid-cols-3" > - + <Title className="lg:mb-14 col-span-full row-start-1 mb-6"> <span className="text-gradient text-wrap">Многопользовательский </span> <br className="lg:hidden" /> режим обучения @@ -22,15 +22,15 @@ export function MultiUser() { itemProp="multiUserFeatures" itemScope itemType="http://schema.org/MultiUserFeatures" - className="grid max-lg:col-span-full sm:max-lg:row-start-2 lg:col-span-6 lg:row-span-2 lg:grid-cols-2 sm:grid-cols-3 lg:-mr-10 max-lg:-mx-6" + className="max-lg:col-span-full sm:max-lg:row-start-2 lg:col-span-6 lg:row-span-2 lg:grid-cols-2 sm:grid-cols-3 lg:-mr-10 max-lg:-mx-6 grid" > <MultiUserFeature type="processes" - text="отработка производственных процессов, в которых участвует группа людей" + text="отработка производственных процессов, в которых участвует группа людей" /> <MultiUserFeature type="plans" - text="командная отработка планов мероприятий по локализации и ликвидации последствий аварий" + text="командная отработка планов мероприятий по локализации и ликвидации последствий аварий" /> <MultiUserFeature type="teamwork" @@ -39,7 +39,7 @@ export function MultiUser() { </div> <div className="lg:hidden lg:col-span-6 col-start-1 lg:row-span-2 sm:col-span-3 lg:row-start-2 sm:row-start-3 sm:row-span-1 bg-[url(/images/availables/image.jpg)] bg-cover bg-no-repeat bg-center sm:aspect-[728/356] aspect-[3/2] max-sm:-mx-6" /> <AppearanceText - className="col-span-7 col-start-1 mt-8 lg:col-span-6 max-lg:mt-6" + className="lg:col-span-6 max-lg:mt-6 col-span-7 col-start-1 mt-8" splits={[ 'В одном ', 'цифровом ', diff --git a/src/components/Main/Products/Tabs/ForTeachingTab.tsx b/src/components/Main/Products/Tabs/ForTeachingTab.tsx index a61719c..22ceac3 100644 --- a/src/components/Main/Products/Tabs/ForTeachingTab.tsx +++ b/src/components/Main/Products/Tabs/ForTeachingTab.tsx @@ -29,23 +29,23 @@ export function ForTeachingTab() { transition={{ duration: 1.5, delay: 0.5 }} className="flex justify-between" > - <h2 className="font-medium h2"> - Интерактивные тренажеры для учебных заведений + <h2 className="h2 font-medium"> + Интерактивные тренажеры для учебных заведений </h2> <p className="h3 font-medium text-[#3D425C]">03</p> </motion.div> - <div className="flex justify-between max-sm:flex-col"> + <div className="max-sm:flex-col flex justify-between"> <div className="sm:max-w-[calc(500/768*100vw)] mt-6"> <div itemProp="creating" className="space-y-4 lg:max-w-[40vw] flex-1"> <ForTeachingOption title="cоздание обучающих VR систем" - description="Проведение виртуальных практических работ, создание учебных мастерских и стендов" + description="Проведение виртуальных практических работ, создание учебных мастерских и стендов" type="teaching" /> <ForTeachingOption title="cоздание VR лабораторий" - description="Тренажер для проведения лабораториных работ позволит избежать - поломки оборудования, а также экономить на расходных средствах" + description="Тренажер для проведения лабораториных работ позволит избежать + поломки оборудования, а также экономить на расходных средствах" type="labs" /> <motion.p @@ -53,10 +53,10 @@ export function ForTeachingTab() { initial={{ opacity: 0 }} animate={textInView ? { opacity: 1 } : {}} transition={{ duration: 1, delay: 1 }} - className="font-medium lg:text-2xl sm:text-xl" + className="lg:text-2xl sm:text-xl font-medium" > - Оснащение учебных классов и центров всем необходимым для - современного обучения под «ключ» + Оснащение учебных классов и центров всем необходимым + для современного обучения «под ключ» </motion.p> </div> </div> @@ -65,7 +65,7 @@ export function ForTeachingTab() { animate={imgInView ? { opacity: 1 } : {}} transition={{ duration: 1, delay: 1 }} ref={imgRef} - className="mt-5 -mr-4 lg:-mr-10 sm:-mr-6 max-sm:-mx-6 max-sm:-mb-4" + className="lg:-mr-10 sm:-mr-6 max-sm:-mx-6 max-sm:-mb-4 mt-5 -mr-4" > <img src="/images/products/teaching/teaching.png" @@ -74,7 +74,7 @@ export function ForTeachingTab() { /> <img src="/images/products/teaching/teaching_mobile.png" - className="w-full mt-5 -mx-6 sm:hidden" + className="sm:hidden -mx-6 mt-5 w-full" alt="обучение" /> </motion.div> @@ -105,11 +105,11 @@ function ForTeachingOption({ > {getIcon(type, true, 'max-sm:hidden min-w-11')} <div className="lg:pl-4 sm:pl-[13px] sm:border-l border-[#3D425C] w-[90%]"> - <div className="flex items-center mb-1 sm:items-start sm:max-lg:flex-col max-sm:gap-x-2"> + <div className="sm:items-start sm:max-lg:flex-col max-sm:gap-x-2 flex items-center mb-1"> {getIcon(type, inView, 'sm:hidden min-w-11')} - <h4 className="font-medium lg:text-2xl sm:text-xl">{title}</h4> + <h4 className="lg:text-2xl sm:text-xl font-medium">{title}</h4> </div> - <p className="opacity-60 l-text">{description}</p> + <p className="l-text opacity-60">{description}</p> </div> </motion.div> ); diff --git a/src/components/Main/Products/Tabs/IndustrialTab.tsx b/src/components/Main/Products/Tabs/IndustrialTab.tsx index cf33273..f95bf93 100644 --- a/src/components/Main/Products/Tabs/IndustrialTab.tsx +++ b/src/components/Main/Products/Tabs/IndustrialTab.tsx @@ -32,9 +32,9 @@ function TeachingItem({ > {getIcon(iconType, true, 'max-sm:hidden sm:max-lg:mb-[14px] min-w-11')} <div className="sm:border-l border-[#3D425C] sm:pl-4"> - <div className="flex items-center mb-2 max-sm:gap-x-2"> + <div className="max-sm:gap-x-2 flex items-center mb-2"> {getIcon(iconType, rootInView, 'sm:hidden min-w-11')} - <h4 className="font-medium lg:text-2xl sm:text-xl">{title}</h4> + <h4 className="lg:text-2xl sm:text-xl font-medium">{title}</h4> </div> <p className="l-text opacity-60">{text}</p> </div> @@ -63,12 +63,12 @@ export function IndustrialTab() { animate={{ opacity: titleInView ? 1 : 0 }} transition={{ duration: 1, delay: 0.5 }} ref={titleRef} - className="flex items-center justify-between" + className="flex justify-between items-center" > - <h2 className="w-full font-medium h2">Промышленные тренажеры</h2> + <h2 className="h2 w-full font-medium">Промышленные тренажеры</h2> <p className="h3 font-medium text-[#3D425C]">01</p> </motion.div> - <div className="flex justify-between max-sm:items-center max-sm:flex-col"> + <div className="max-sm:items-center max-sm:flex-col flex justify-between"> <div itemProp="education" itemScope @@ -77,20 +77,20 @@ export function IndustrialTab() { > <TeachingItem iconType="danger" - text="отработка проведения технологических операций: оказание первой помощи, работы на высоте, работа с доменной печью и т.п." - title="обучение навыкам работы на опасных производствах" + text="отработка проведения технологических операций: оказание первой помощи, работы на высоте, работа с доменной печью и т.п." + title="обучение навыкам работы на опасных производствах" index={0} /> <TeachingItem iconType="service" - text="отработка определения неисправностей оборудования и выполнения ремонтных работ на цифровом двойнике" - title="обучение обслуживанию и ремонту оборудования, систем, техники" + text="отработка определения неисправностей оборудования и выполнения ремонтных работ на цифровом двойнике" + title="обучение обслуживанию и ремонту оборудования, систем, техники" index={1} /> <TeachingItem iconType="safety" - text="отработка плана мероприятий по локализации и ликвидации последствий аварий. " - title="обучение правилам промышленной безопасности и охраны труда" + text="отработка плана мероприятий по локализации и ликвидации последствий аварий" + title="обучение правилам промышленной безопасности и охраны труда" index={2} /> </div> @@ -99,7 +99,7 @@ export function IndustrialTab() { initial={{ opacity: 0 }} animate={imgInView ? { opacity: 1 } : {}} transition={{ duration: 1, delay: 1 }} - className="relative bottom-0 lg:left-10 sm:left-6 left-4 lg:top-10 sm:top-6 top-4" + className="lg:left-10 sm:left-6 lg:top-10 sm:top-6 relative bottom-0 top-4 left-4" > <img src="/images/products/trainings/trainings_desktop.png" @@ -113,7 +113,7 @@ export function IndustrialTab() { /> <img src="/images/products/trainings/trainings_mobile.png" - className="object-cover object-center sm:hidden" + className="sm:hidden object-cover object-center" alt="тренажеры" /> </motion.div> diff --git a/src/components/Main/Products/Tabs/SimulatorsTab.tsx b/src/components/Main/Products/Tabs/SimulatorsTab.tsx index d491663..7d162a3 100644 --- a/src/components/Main/Products/Tabs/SimulatorsTab.tsx +++ b/src/components/Main/Products/Tabs/SimulatorsTab.tsx @@ -40,9 +40,9 @@ export function SimulatorsTab() { initial={{ opacity: 0 }} animate={titleInView ? { opacity: 1 } : {}} transition={{ duration: 1, delay: 0.5 }} - className="flex justify-between gap-x-2" + className="flex gap-x-2 justify-between" > - <h2 className="font-medium h2">Симуляторы управления техникой</h2> + <h2 className="h2 font-medium">Симуляторы управления техникой</h2> <p className="text-[#3D425C] h3 font-medium">02</p> </motion.div> <div @@ -94,8 +94,8 @@ export function SimulatorsTab() { /> <p className="l-text opacity-60"> Модель позволяет производить расчеты характеристик работы, - отслеживать безопасность работы устройств и симулировать внештатные - ситуации. + отслеживать безопасность работы устройств и симулировать внештатные + ситуации </p> </motion.div> </div> diff --git a/src/components/Main/Teaching.tsx b/src/components/Main/Teaching.tsx index fc9f888..f0a2340 100644 --- a/src/components/Main/Teaching.tsx +++ b/src/components/Main/Teaching.tsx @@ -15,8 +15,8 @@ export function Teaching() { координацию между всеми участниками процесса - <span className="text-gradient">Дистанционное обучение</span> на базе - платформы GRAFF TRANING + <span className="text-gradient">Дистанционное обучение</span> на базе + платформы GRAFF.training @@ -79,8 +79,8 @@ function TeachingFeaturesForDesktop() {
Видеозапись обучения - Фиксация и хранение сессий обучения, тренировки и тестирования. - Ретроспектива по пройденной сессии вместе с инструктором + Фиксация и хранение сессий обучения, тренировки и тестирования. + Ретроспектива по пройденной сессии вместе с инструктором
Видеозапись обучения - Фиксация и хранение сессий обучения, тренировки и тестирования. - Ретроспектива по пройденной сессии вместе с инструктором + Фиксация и хранение сессий обучения, тренировки и тестирования. + Ретроспектива по пройденной сессии вместе с инструктором

- Предлагаем различные{' '} - <span className="text-gradient">варианты комплектации тренажеров</span>, - основываясь на специфике вашего тренировочного процесса + Предлагаем различные + <span className="text-gradient"> + {' '} + варианты комплектации тренажеров,{' '} + </span> + основываясь на специфике вашего тренировочного процесса

@@ -66,7 +69,7 @@ function TrainingsFeature({ itemProp={title} itemScope itemType={`http://schema.org/${title}`} - className="lg:col-start-1 col-span-full group" + className="lg:col-start-1 group col-span-full" >

{title}

-

{text}

+

{text}

-
+

[0{order}]

{title} @@ -91,7 +94,7 @@ function TrainingsFeature({ transition={{ duration: 0.4, }} - className="lg:flex items-center justify-center hidden -my-10" + className="lg:flex hidden justify-center items-center -my-10" > -
+
[] = [ src: '/images/projects/plane.jpg', tags: ['Симулятор', 'VR-приложение'], title: 'L 410 NG Aircraft', - year: '2024', + year: '2019', media: Media.img, id: Math.random(), }, diff --git a/src/ui/Button.tsx b/src/ui/Button.tsx index 0281883..a619d02 100644 --- a/src/ui/Button.tsx +++ b/src/ui/Button.tsx @@ -34,7 +34,7 @@ export function Button({ icon ? 'pr-4' : '' } flex gap-1 items-center overflow-hidden w-${width} ${className} justify-between`} > -
+
{children}