web fixes

This commit is contained in:
2025-09-11 14:14:28 +05:00
parent dc8fcbd114
commit 0a2e69ceb1
9 changed files with 60 additions and 60 deletions
+2 -2
View File
@@ -2,6 +2,6 @@ import { InProcess } from "@/components/pages/InProcess";
import WebMain from "@/components/pages/WebPage/WebMain";
export default function WebPage() {
return <InProcess />;
// return <WebMain />;
// return <InProcess />;
return <WebMain />;
}
@@ -1,6 +1,6 @@
"use client";
import { postTags } from "@/consts/postTags";
import { postTags } from "@/consts/PostTags";
import { projectsTags } from "@/consts/projectsTags";
import { usePathname, useRouter, useSearchParams } from "next/navigation";
import { useEffect, useMemo, useRef, useState } from "react";
@@ -68,7 +68,7 @@ export default function ContentSlideCards({
>
<span className="headline2 z-[3]">Для соцсетей:</span>
<p className="text2 text-[#FFFFFF60]">
Вертикальные изображения с идеально выстоенным кадром
Любой формат видео и изображений с идеально выставленным кадром
</p>
</motion.div>
@@ -80,7 +80,7 @@ export default function ContentSlideCards({
className="lg:w-[13.403vw] md:w-[18.229vw] w-[38.889vw] flex flex-col lg:gap-[0.694vw] gap-2 lg:p-[1.389vw] p-4 bg-[#37393B99] backdrop-blur-[5px] rounded-[1.111vw] absolute lg:right-[5.25vw] lg:top-[2.625vw] right-0 top-0
max-md:top-[15vw] max-md:right-[5vw] max-md:rounded-[4.444vw] md:max-lg:p-[2.083vw] md:max-lg:right-[2.083vw] md:max-lg:top-[2.083vw]"
>
<span className="headline2">Наружной рекламы:</span>
<span className="headline2">Для наружной рекламы:</span>
<p className="text2 text-[#FFFFFF60]">
Высокое разрешение для широкоформатной печати
</p>
@@ -83,7 +83,7 @@ export default function ContentSlideHall({
>
<span className="headline2 z-[3]">По двору:</span>
<p className="text2 text-[#FFFFFF60] ">
возможность ощутить ритм жизни Жилого комплекса и его атмосферу
Клиенты ощутят ритм жизни жилого комплекса и его атмосферу
</p>
</motion.div>
@@ -96,7 +96,7 @@ export default function ContentSlideHall({
>
<span className="headline2">По квартире:</span>
<p className="text2 text-[#FFFFFF60] ">
возможность оценить пространство в объеме и ощутить себя внутри
Клиенты оценят пространство в общеме и ощутят себя «внутри»
</p>
</motion.div>
</div>
@@ -53,8 +53,8 @@ export default function InfiniteSlider() {
});
return (
<div className="lg:-mx-[3vw] md:-mx-[2.083vw] -mx-[2.778vw]">
<div className="flex overflow-hidden relative w-full" {...handlers}>
<div className="lg:-mx-[3vw] md:-mx-[2.083vw] -mx-[2.778vw] border border-red-500">
<div className="flex overflow-hidden relative w-full " {...handlers}>
<div
onTransitionEnd={() => setIsAnimating(false)}
className="flex lg:gap-[2vw] md:gap-[2.083vw] gap-[2.778vw]"
+6 -6
View File
@@ -85,9 +85,9 @@ export default function WebDemo() {
md:max-lg:items-start "
>
<div className="flex flex-col gap-y-[1.667vw] text-center w-[68.333vw] md:max-lg:w-full md:max-lg:gap-y-[3.125vw] max-md:w-full max-md:gap-[6.667vw]">
{/* <p className="headline1 text-[#7A7A7A] md:max-lg:mb-[calc(4.557vw-3.125vw)] max-md:w-[94.444vw] md:max-lg:mt-[3.125vw]">
Вы ебанетесь
</p> */}
<p className="headline1 text-[#7A7A7A] md:max-lg:mb-[calc(4.557vw-3.125vw)] max-md:w-[94.444vw] md:max-lg:mt-[3.125vw]">
С помощью интерактивного сайта
</p>
<h2 className="line2 font-medium md:max-lg:text-[5.208vw] max-md:text-[8.889vw] max-md:mb-[calc(11.111vw-6.667vw)]">
Ваш жилой комплекс <br className="md:max-lg:hidden" /> становится{" "}
<br className="md:max-lg:block hidden" />
@@ -183,7 +183,7 @@ export default function WebDemo() {
</div>
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw]">
Осмотрите фасады со всех сторон
Фасады ЖК можно изучить со всех сторон
</p>
</DisplacementCard>
@@ -203,7 +203,7 @@ export default function WebDemo() {
"z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw]"
}
>
Изучите инфраструктуру
Вся инфраструктура будет отмечена на карте ближайшего окружения
</p>
</DisplacementCard>
@@ -223,7 +223,7 @@ export default function WebDemo() {
</div>
<p className="z-10 text-center btns md:max-lg:text-[1.563vw] max-md:text-[3.333vw]">
Гуляйте по квартире
Прогулка по квартирам доступна при помощи тапов
</p>
</DisplacementCard>
</DisplacementCardsWrapper>
@@ -23,14 +23,14 @@ export default function WebDevelopmentTimeline() {
setAreasState({ ...areasState, [area]: showImage });
}
function Badge() {
function Badge({ title }: { title: string }) {
return (
<div
className="self-center w-max mx-auto btn-m text-black bg-[#B5F54E] rounded-[1.111vw] px-[1.389vw] py-[0.764vw] text-[0.972vw] z-10
md:max-lg:text-[1.563vw] md:max-lg:px-[1.563vw] md:max-lg:py-[0.911vw] md:max-lg:rounded-[2.083vw]
max-md:text-[3.333vw] max-md:px-[3.333vw] max-md:py-[1.944vw] max-md:rounded-[4.444vw]"
>
3-6 недель
{title}
</div>
);
}
@@ -111,7 +111,7 @@ export default function WebDevelopmentTimeline() {
/>
)}
</AnimatePresence>
<Badge />
<Badge title={isNewClient ? "5-6 недель" : "3-4 недели"} />
</div>
<div
@@ -139,7 +139,7 @@ export default function WebDevelopmentTimeline() {
/>
)}
</AnimatePresence>
<Badge />
<Badge title={isNewClient ? "5-6 недель" : "3-4 недели"} />
</div>
<div
@@ -167,7 +167,7 @@ export default function WebDevelopmentTimeline() {
/>
)}
</AnimatePresence>
<Badge />
<Badge title={isNewClient ? "5-6 недель" : "3-4 недели"} />
</div>
<div
@@ -177,7 +177,7 @@ export default function WebDevelopmentTimeline() {
>
<AccordeonGroup
isNewClient={isNewClient}
titles={["Сдача проекта", "Поддержка (бессрочно)"]}
titles={["Сдача проекта", "Бессрочная поддержка"]}
content={WebTimelineData}
onOpenedChange={() => updateAreaState(4, false)}
onClosedChange={() => updateAreaState(4, true)}
@@ -195,7 +195,7 @@ export default function WebDevelopmentTimeline() {
/>
)}
</AnimatePresence>
<Badge />
<Badge title={"1-2 недели"} />
</div>
</div>
@@ -204,10 +204,10 @@ export default function WebDevelopmentTimeline() {
<div className="mb-[1.667vw]">
{" Если короче, то "}
<div
className="inline h-[2.5vw] w-[7.5vw] text-center btn-m text-[0.972vw] py-[0.764vw] px-[1.389vw] rounded-full bg-gradient
className="inline h-[2.5vw] w-[8.5vw] text-center btn-m text-[0.972vw] py-[0.764vw] px-[1.389vw] rounded-full bg-gradient
max-md:text-[3.333vw] max-md:w-[22.778vw] max-md:h-[7.778vw] max-md:px-[3.333vw] max-md:py-[1.944vw] max-md:leading-[150%]"
>
~3 месяца
{isNewClient ? "~4,5 месяца" : "~3 месяца"}
</div>
</div>
{" и все будет :)"}
@@ -217,10 +217,10 @@ export default function WebDevelopmentTimeline() {
<div className="text-center accent mt-[4.444vw] flex w-full items-center justify-center gap-[0.556vw] md:max-lg:mt-[4.948vw] md:max-lg:text-[3.125vw] max-md:hidden">
{" Если короче, то "}
<div
className="leading-[120%] w-[7.5vw] text-center btn-m text-[0.972vw] py-[0.764vw] px-[1.389vw] rounded-full bg-gradient mt-[0.356vw]
className="leading-[120%] w-[8.5vw] text-center btn-m text-[0.972vw] py-[0.764vw] px-[1.389vw] rounded-full bg-gradient mt-[0.356vw]
md:max-lg:text-[1.563vw] md:max-lg:w-[10.677vw] md:max-lg:h-[3.646vw] md:max-lg:px-[1.563vw] md:max-lg:py-[0.911vw] md:max-lg:leading-[120%]"
>
~3 месяца
{isNewClient ? "~4,5 месяца" : "~3 месяца"}
</div>
{" и все будет :)"}
</div>
@@ -18,7 +18,7 @@ export default function WebExperience() {
max-md:text-[8.889vw] max-md:mb-[6.667vw]"
>
<span className="text-transparent bg-clip-text">
Функционал на основе 15 лет опыта <br />
Добавим функционал на основе 15 лет опыта{" "}
</span>
работы с застройщиками
</h2>
@@ -109,7 +109,7 @@ export default function WebExperience() {
md:max-lg:p-[4.167vw] md:max-lg:text-[3.125vw]
max-md:rounded-[4.444vw] max-md:p-[8.889vw]"
>
<span className="headline1 z-[1]">Кладовые и паркинг</span>
<span className="headline1 z-[1]">Выбор кладовых и паркинга</span>
<img
src="/img/pages/web/experience/parking.png"
alt=""
@@ -5,68 +5,68 @@ export const WebTimelineData: { [key: string]: IAccordeonContent[] } = {
{
type: "general",
content:
"Обсуждение с заказчиком целей сайта (продажи, презентация, сервис)",
"Обсуждаем с заказчиком цели создания сайта: продажи/презентация/сервис/иные",
},
{
type: "general",
content: "Определение структуры сайта",
content: "Определяем структуру сайта",
},
{
type: "new",
content:
"Определяем список 3D-элементов для визуализации (фасады, планы этажей, квартиры, окружение ЖК) ",
"Определяем список 3D-элементов для визуализации: фасады, планы этажей, квартиры, окружение ЖК ",
},
{
type: "general",
content:
"Планирование интеграции с сайтом (отдельные страницы, всплывающие окна)",
"Планируем интеграции с сайтом: отдельные страницы, всплывающие окна",
},
{
type: "general",
content: "Составление ТЗ (функционал, CMS, интеграции",
content: "Составляем техническое задание: функционал, CMS, интеграции",
},
{
type: "new",
content:
"Получение исходных данных (чертежи, фотографии, сканы помещений)",
"Получаем исходные данные: чертежи, фотографии, сканы помещений",
},
{
type: "general",
content: "Оценка бюджета и сроков",
content: "Определяем бюджет и сроки",
},
],
"Прототипирование": [
{
type: "new",
content: "Моделирование в Blender, 3ds Max",
content: "Моделируем пространства в Blender и 3Ds Max",
},
{
type: "general",
content: "Оптимизация полигонов для веба (уменьшение нагрузки)",
content: "Оптимизируем полигоны для использования на сайте: уменьшаем нагрузку",
},
{
type: "new",
content: "Создание материалов и текстур (PBR-рендеринг для реализма) ",
content: "Создаем материалы и текстуры для реализма картинки с помощью PBR-рендеринга ",
},
{
type: "general",
content: "Предварительный рендер для согласования стиля",
content: "Создаем предварительный рендер и согласовываем общий стиль проекта",
},
],
"3D-моделирование": [
{
type: "general",
content: "Разработка wireframe (блочные схемы без дизайна)",
content: "Разрабатываем wireframe - блочные схемы без дизайна",
},
{
type: "new",
content: "Создание первичного UI-кита (стили, цвета, шрифты, кнопки",
content: "Создаем первичный UI-кит: стили, цвета, шрифты и кнопки",
},
{
type: "general",
content: "Отрисовка дизайн-макетов ключевых блоков ",
content: "Отрисовываем дизайн-макеты ключевых блоков",
},
{
type: "general",
@@ -77,19 +77,19 @@ export const WebTimelineData: { [key: string]: IAccordeonContent[] } = {
"Дизайн сайта": [
{
type: "general",
content: "Отрисовка всех дизайн-макетов ",
content: "Отрисовываем все дизайн-макеты  ",
},
{
type: "general",
content: "Обновлеие UI-кита ",
content: "Обновляем UI-кит",
},
{
type: "general",
content: "Адаптация под мобильные устройства ",
content: "Адаптируем сайт под мобильные устройства",
},
{
type: "general",
content: "Наполнение контентом",
content: "Наполняем страницы контентом",
},
{
type: "general",
@@ -100,50 +100,50 @@ export const WebTimelineData: { [key: string]: IAccordeonContent[] } = {
"Сборка сцен": [
{
type: "general",
content: "Компоновка сцен (расстановка мебели, освещение, камеры)",
content: "Компонуем виртуальные сцены: расставляем мебель, освещение и камеры",
},
{
type: "general",
content:
"Подготовка тестовых  интерактивных 360° панорам и экспорт в веб-формат",
"Готовим тестовые интерактивные 360° панорамы и экспортируем в веб-формат",
},
],
"Рендеринг": [
{
type: "general",
content: "Подготовка всех интерактивных 360° панорам ",
content: "Готовим финальные версии всех интерактивных 360° панорам ",
},
{
type: "general",
content: "Экспорт всех панорам в веб-формат",
content: "Экспортируем готовые панорамы в на сайт",
},
],
"Верстка сайта": [
{
type: "general",
content: "Верстка (HTML/CSS/JS) по макетам ",
content: "Верстаем (HTML/CSS/JS) по макетам  ",
},
{
type: "general",
content: "Настройка анимаций и интерактива",
content: "Настраиваем анимации и интерактив на сайте",
},
{
type: "general",
content: "Адаптация под мобильные устройства (жесты, touch-управление)",
content: "Адаптируем страницы под мобильные устройства: жесты, touch-управление",
},
],
"Оптимизация": [
{
type: "general",
content: "Тестирование на разных устройствах.",
content: "Тестируем готовый сайт на разных устройствах.",
},
{
type: "general",
content: "Тестирование загрузки и производительности",
content: "Тестируем загрузку и показатели производительности",
},
{
type: "general",
content: "Сжатие текстур и LOD (Level of Detail) для сложных моделей",
content: "Сжимаем текстуры и LOD (Level of Detail) для сложных моделей",
},
{
type: "general",
@@ -153,21 +153,21 @@ export const WebTimelineData: { [key: string]: IAccordeonContent[] } = {
"Сдача проекта": [
{
type: "general",
content: "Размещение на хостинге и настройка домена",
content: "Размещаем сайт на хостинге и настраиваем домен",
},
{
type: "general",
content: "Подключение аналитики (Google Analytics, Яндекс.Метрика)",
content: "Подключаем аналитику: Google Analytics, Яндекс.Метрика",
},
{
type: "general",
content: "Базовая SEO-оптимизация (метатеги, карта сайта)",
},
],
"Поддержка (бессрочно)": [
"Бессрочная поддержка": [
{
type: "general",
content: "Исправление багов",
content: "Всегда на связи в случае непредвиденных ситуаций",
},
],
};