web fixes
This commit is contained in:
@@ -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]"
|
||||
|
||||
@@ -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: "Всегда на связи в случае непредвиденных ситуаций",
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user