This commit is contained in:
2026-01-14 10:54:09 +05:00
10 changed files with 18 additions and 24 deletions
+3 -3
View File
@@ -86,7 +86,7 @@
"title": "Integration with the Developer's CRM System",
"description1": "The system provides real-time updates on lot availability, status and pricing.",
"description2": "The sales tool automatically creates a client profile in your CRM system and assigns a dedicated manager.",
"description3": "Graff.estate provides API integration with existing sales systems while capturing user analytics and behavioral data."
"description3": "GRAFF.estate provides API integration with existing sales systems while capturing user analytics and behavioral data."
},
"videos_title": {
"search": "Search",
@@ -148,7 +148,7 @@
"start_demo": "Start demo",
"info": "We'll explain and demonstrate how it works on a call",
"leave_request": "Leave request",
"demo_available": "Graff.estate stream is available on any device, for demonstration, you only need an internet connection",
"demo_available": "GRAFF.estate Stream is available on any device, for demonstration, you only need an internet connection",
"Казань": "Kazan",
"Москва": "Moscow",
"Владивосток": "Vladivostok",
@@ -205,7 +205,7 @@
"Интерактивная презентация": "Interactive presentation",
"Удаленная демонстрация": "Remote showcase",
"Архитектурная визуализация": "Architectural rendering",
"Создание сайтов": "Website development",
"Создание сайтов": "Development of websites and 360° Web Tours.",
"Web-тур по 360 сферам": "Immersive 360° Web Tour",
"Виртуальный тур по 360 сферам": "Virtual 360° Tour",
"Недвижимость": "Real estate",
+1 -1
View File
@@ -199,7 +199,7 @@
"Интерактивная презентация": "Интерактивная презентация",
"Удаленная демонстрация": "Удаленная демонстрация",
"Архитектурная визуализация": "Архитектурная визуализация",
"Создание сайтов": "Создание сайтов",
"Создание сайтов": "Создание сайтов и виртуальных туров по 360° сферам.",
"Недвижимость": "Недвижимость",
"Награды": "Награды",
"Выставки": "Выставки",
Binary file not shown.
Binary file not shown.
Binary file not shown.
+5 -5
View File
@@ -3,7 +3,7 @@ import { ProductItem } from "@/ui/ProductItem";
export function Products() {
return (
<div className="grid md:grid-cols-2 grid-cols-3 md:grid-rows-6 grid-rows-2 gap-1 lg:gap-2 rounded-2xl max-h-[calc(100dvh-100px)] lg:h-[38.889vw] md:max-lg:h-[72.917vw] h-full w-full">
<div className="grid max-md:grid-cols-2 max-md:grid-rows-2 md:grid-cols-2 grid-cols-3 md:grid-rows-6 grid-rows-2 gap-1 lg:gap-2 rounded-2xl max-h-[calc(100dvh-100px)] lg:h-[38.889vw] md:max-lg:h-[72.917vw] h-full w-full">
{products.map((product, index) => (
<ProductItem
href={"/" + product.title.toLowerCase()}
@@ -11,10 +11,10 @@ export function Products() {
{...product}
className={
index < 2
? "max-md:aspect-[100/114] md:col-start-1 md:row-span-3"
: index === 4
? "col-span-2 md:col-span-1 md:col-start-2 md:row-start-5 md:row-end-7"
: "max-md:aspect-[100/114] md:col-span-1 md:col-start-2 md:[&:nth-child(3)]:row-start-1 md:[&:nth-child(3)]:row-end-3 md:[&:nth-child(4)]:row-start-3 md:[&:nth-child(4)]:row-end-5"
? "md:col-start-1 md:row-span-3 "
: index === 3
? "col-span-2 md:col-span-1 md:col-start-2 md:row-start-4 md:row-end-7 max-md:col-start-2 max-md:col-end-2"
: "md:col-span-1 md:col-start-2 md:[&:nth-child(3)]:row-start-1 md:[&:nth-child(3)]:row-end-4 md:[&:nth-child(4)]:row-start-3 md:[&:nth-child(4)]:row-end-5"
}
/>
))}
@@ -44,7 +44,7 @@ function NewStreaming() {
<div className="max-lg:h-[400px] flex-1">
<VideoPlayer src={"/videos/pages/home/streaming.mp4"} showMutingBtn>
<p className="accent font-medium absolute top-6 left-6 w-[39.861vw] max-lg:w-[90vw] max-lg:text-[20px] ">
Graff.estate stream is available on any device all you need for
GRAFF.estate Stream is available on any device all you need for
a demo is an internet connection.
</p>
</VideoPlayer>
@@ -1,6 +1,6 @@
import { useModalStore } from '@/stores/useModalStore';
import { motion } from 'framer-motion';
import { PrimeModal } from '../modals/PrimeModal';
import { useModalStore } from "@/stores/useModalStore";
import { motion } from "framer-motion";
import { PrimeModal } from "../modals/PrimeModal";
export function SeasonsCard({ slide }: { slide: number }) {
const { setModal } = useModalStore();
@@ -9,7 +9,7 @@ export function SeasonsCard({ slide }: { slide: number }) {
<motion.div
animate={{
opacity: +(slide > 12),
bottom: slide > 12 ? '52.237vh' : '93.684vh',
bottom: slide > 12 ? "52.237vh" : "93.684vh",
}}
onClick={() =>
setModal(
@@ -17,7 +17,7 @@ export function SeasonsCard({ slide }: { slide: number }) {
categoryTitle="Сезонность"
title="Сезонность"
text="Сезонность даёт дополнительную глубину презентации: покупатель видит, как жилой комплекс выглядит осенью под золотыми листьями или зимой, украшенной гирляндами."
packages={['Комфорт+']}
packages={["Комфорт+"]}
src="/videos/pages/prime/seasons.mp4"
/>
)
-6
View File
@@ -22,11 +22,5 @@
"title": "Picture",
"text": "Архитектурная визуализация",
"image": "/img/components/products/picture.png"
},
{
"id": 5,
"title": "Walk",
"text": "Виртуальный тур по 360 сферам",
"image": "/img/components/products/360.png"
}
]
+3 -3
View File
@@ -44,14 +44,14 @@ export function ProductItem({
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
className="relative md:hidden min-w-16 min-h-16 content-center"
className="relative md:hidden min-w-16 min-h-16 content-center mx-auto"
>
<img
src={image}
alt={text}
className="rounded-lg !relative"
width={64}
height={64}
height={84}
width={84}
/>
</motion.div>
<motion.div