analy
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
+4
-3
@@ -3,11 +3,11 @@
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
||||
<link rel="icon" href="#" type="image/png" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta name="description" content="Web site created using create-react-app" />
|
||||
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
|
||||
<link rel="apple-touch-icon" href="#" type="image/png" />
|
||||
<!--
|
||||
manifest.json provides metadata used when your web app is installed on a
|
||||
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
||||
@@ -22,7 +22,8 @@
|
||||
work correctly both with client-side routing and a non-root public URL.
|
||||
Learn how to configure a non-root public URL by running `npm run build`.
|
||||
-->
|
||||
<title>React App</title>
|
||||
<title>Graff.estate
|
||||
stream</title>
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
+24
-8
@@ -22,29 +22,41 @@ export type TObjct = {
|
||||
|
||||
|
||||
|
||||
export const App: React.FC = ({ }) => {
|
||||
export const App: React.FC = () => {
|
||||
const [language, setLanguage] = useState<any>("");
|
||||
const [text, setText] = useState(textRU);
|
||||
const [locale, setLocale] = useState('RU')
|
||||
const savedLanguage = localStorage.getItem('savedLang')
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
setInitialLanguage()
|
||||
if (savedLanguage !== null) {
|
||||
setSavedLanguage()
|
||||
} else {
|
||||
setInitialLanguage()
|
||||
}
|
||||
}, []);
|
||||
|
||||
function setSavedLanguage() {
|
||||
if (savedLanguage === 'RU') {
|
||||
setLanguage('RU')
|
||||
localStorage.setItem("lang", 'RU')
|
||||
setText(textRU)
|
||||
} else if (savedLanguage === 'EN') {
|
||||
setLanguage('EN')
|
||||
localStorage.setItem("lang", 'EN')
|
||||
setText(textEN)
|
||||
}
|
||||
}
|
||||
|
||||
function setInitialLanguage() {
|
||||
if (window.navigator.language === 'ru') {
|
||||
setLanguage('RU')
|
||||
setLocale('ru')
|
||||
localStorage.setItem("lang", 'RU')
|
||||
setText(textRU)
|
||||
|
||||
} else {
|
||||
setLanguage('EN')
|
||||
localStorage.setItem("lang", 'EN')
|
||||
setText(textEN)
|
||||
setLocale('en-gb')
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,15 +64,19 @@ export const App: React.FC = ({ }) => {
|
||||
if (language === 'RU') {
|
||||
setLanguage(language);
|
||||
setText(textRU)
|
||||
localStorage.setItem('savedLang', 'RU');
|
||||
localStorage.setItem("lang", 'RU')
|
||||
} else {
|
||||
setLanguage('EN')
|
||||
localStorage.setItem("lang", 'EN')
|
||||
localStorage.setItem("savedLang", 'EN')
|
||||
setText(textEN)
|
||||
}
|
||||
}
|
||||
|
||||
AOS.init();
|
||||
AOS.init({
|
||||
once: true,
|
||||
});
|
||||
return (
|
||||
<Switch>
|
||||
<Route path="/" exact>
|
||||
|
||||
@@ -6,7 +6,6 @@ import phone from '../footer/phone.svg'
|
||||
import iconButton from "../../styles/iconButton.svg"
|
||||
import { AnimatePresence, motion } from "framer-motion";
|
||||
import chevron from '../header/chevronIcon.svg'
|
||||
import { text } from 'stream/consumers'
|
||||
type THeader = {
|
||||
menuOpen?: boolean,
|
||||
language: string,
|
||||
@@ -83,7 +82,6 @@ export const Nav: React.FC<THeader> = ({ menuOpen, language, changeLanguage, tex
|
||||
name: 'EN'
|
||||
}]
|
||||
|
||||
console.log(language)
|
||||
|
||||
function langActive(lang: string, language: string) {
|
||||
if (lang === language) {
|
||||
@@ -122,7 +120,7 @@ export const Nav: React.FC<THeader> = ({ menuOpen, language, changeLanguage, tex
|
||||
</div>
|
||||
<div className='nav__title_container'>
|
||||
<h4 className='nav__title'>{text.captionContact}</h4>
|
||||
<img className='icon_chevron' src={chevron}></img>
|
||||
<img alt='icon' className='icon_chevron' src={chevron}></img>
|
||||
</div>
|
||||
<span className='nav__line'></span>
|
||||
</motion.div>
|
||||
@@ -132,11 +130,11 @@ export const Nav: React.FC<THeader> = ({ menuOpen, language, changeLanguage, tex
|
||||
className='footer__card_2'>
|
||||
<div className='ellipse__container'>
|
||||
<div className="main-block__icon_container">
|
||||
<img src={iconButton} className="main-block__icon"></img>
|
||||
<img alt='icon' src={iconButton} className="main-block__icon"></img>
|
||||
</div>
|
||||
</div>
|
||||
<div className={'card__write'}>
|
||||
<img src={write} className='card__icon'></img>
|
||||
<img alt='icon' src={write} className='card__icon'></img>
|
||||
<p className='card__caption'>{cardSmall.caption}</p>
|
||||
</div>
|
||||
</motion.div>
|
||||
@@ -145,11 +143,11 @@ export const Nav: React.FC<THeader> = ({ menuOpen, language, changeLanguage, tex
|
||||
className='footer__card_2'>
|
||||
<div className='ellipse__container'>
|
||||
<div className="main-block__icon_container">
|
||||
<img src={iconButton} className="main-block__icon"></img>
|
||||
<img alt='icon' src={iconButton} className="main-block__icon"></img>
|
||||
</div>
|
||||
</div>
|
||||
<div className='card__write'>
|
||||
<img src={phone} className='card__icon'></img>
|
||||
<img alt='icon' src={phone} className='card__icon'></img>
|
||||
<p className='card__caption'>{cardSmall1.caption}</p>
|
||||
</div>
|
||||
</motion.div>
|
||||
|
||||
@@ -41,9 +41,7 @@
|
||||
color: #EBEBEB;
|
||||
}
|
||||
|
||||
.graph__text {
|
||||
|
||||
}
|
||||
|
||||
|
||||
.graph__row_2 {
|
||||
@@ -144,6 +142,8 @@
|
||||
line-height: 130%;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
width: 25px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.graph__bar_2 {
|
||||
@@ -195,7 +195,7 @@
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
gap: 6px;
|
||||
height: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.legend__point {
|
||||
@@ -669,4 +669,4 @@
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,43 +1,18 @@
|
||||
import "../../styles/styles.css";
|
||||
import "./analytics.css";
|
||||
import iconButton from "../../styles/iconButton.svg"
|
||||
import "../multiplayer/multiplayer.css";
|
||||
import { Link } from "react-router-dom";
|
||||
import { PieChartComp } from "../piechart/piechart";
|
||||
import { Button } from "../buttonDemo/buttonDemo"
|
||||
import { Content } from "../content/content";
|
||||
|
||||
|
||||
|
||||
|
||||
export const Analytics: React.FC<any> = ({ text }) => {
|
||||
const { cardLarge } = text;
|
||||
const { cardLarge1 } = text;
|
||||
const { cardLarge2 } = text;
|
||||
|
||||
const { cardSmall } = text;
|
||||
const { cardSmall1 } = text;
|
||||
const { cardSmall2 } = text;
|
||||
const { cardSmall3 } = text;
|
||||
|
||||
|
||||
|
||||
const { cardLarge, cardLarge1, cardLarge2, cardSmall, cardSmall1, cardSmall2, cardSmall3 } = text;
|
||||
return (
|
||||
<div className="analytics__container">
|
||||
<div data-aos-duration="400"
|
||||
data-aos="fade-up"
|
||||
className="main-block__container">
|
||||
<div>
|
||||
<p className="main-block__title_small">
|
||||
Graff.estate stream{" "}
|
||||
</p>
|
||||
<p className="main-block__title_gardient_small">
|
||||
{text.mainBlockCaptionColor}
|
||||
</p>
|
||||
</div>
|
||||
<p className="main-block__caption multiplayer__caption">
|
||||
{text.mainBlockCaption}
|
||||
</p>
|
||||
</div>
|
||||
<Content text={text}></Content>
|
||||
<div data-aos="fade-up" data-aos-delay="100" className="graph__container">
|
||||
<div className="graph__row_1">
|
||||
<div className="graph__row_item">
|
||||
@@ -177,5 +152,6 @@ export const Analytics: React.FC<any> = ({ text }) => {
|
||||
<Button text={text}></Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
)
|
||||
}
|
||||
@@ -1,14 +1,13 @@
|
||||
.animation-container {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
height: 90vh;
|
||||
height: 100vh;
|
||||
|
||||
}
|
||||
|
||||
.test {
|
||||
z-index: -1;
|
||||
top: 2%;
|
||||
right: 0%;
|
||||
top: -118.2%;
|
||||
left: 22%;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
|
||||
@@ -24,6 +23,7 @@
|
||||
}
|
||||
|
||||
.title__container {
|
||||
padding-left: 80px;
|
||||
z-index: 99;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@@ -32,6 +32,7 @@
|
||||
}
|
||||
|
||||
.title__main {
|
||||
position: relative;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-size: 96px;
|
||||
@@ -53,6 +54,7 @@
|
||||
margin: 0;
|
||||
background-repeat: repeat;
|
||||
background-color: transparent;
|
||||
background-clip: text;
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
-moz-background-clip: text;
|
||||
@@ -107,37 +109,79 @@
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.animation__pos {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1600px) {
|
||||
|
||||
|
||||
.title {
|
||||
font-size: 6vw;
|
||||
font-size: 115.2px;
|
||||
}
|
||||
|
||||
.test {
|
||||
top: -87.2%;
|
||||
left: 17%;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.title__gardient {
|
||||
font-size: 6vw;
|
||||
font-size: 115.2px;
|
||||
|
||||
}
|
||||
|
||||
|
||||
.title__caption {
|
||||
font-size: 0.8vw;
|
||||
font-size: 17px;
|
||||
width: 424px;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1599px) {
|
||||
.title__caption {
|
||||
width: 354px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1279px) {
|
||||
.title__container {
|
||||
padding-left: 56px;
|
||||
}
|
||||
.title__caption {
|
||||
width: 354px;
|
||||
}
|
||||
|
||||
.test {
|
||||
top: -65.2%;
|
||||
left: 19%;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
.title__container {
|
||||
padding-top: 170px;
|
||||
margin-left: 20px;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.animation-container {
|
||||
box-sizing: border-box;
|
||||
|
||||
}
|
||||
|
||||
.test {
|
||||
top: 3%;
|
||||
left: 8%;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -150,6 +194,10 @@
|
||||
padding-top: 70px;
|
||||
}
|
||||
|
||||
.title__caption {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.test {
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
@@ -159,9 +207,8 @@
|
||||
background-image: url(./Map.svg);
|
||||
background-repeat: no-repeat;
|
||||
padding: 10px;
|
||||
background-position: 19%;
|
||||
|
||||
|
||||
background-position-x: 29%;
|
||||
background-position-y: -56%;
|
||||
}
|
||||
|
||||
.title {
|
||||
@@ -179,4 +226,5 @@
|
||||
.title__container {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,18 +2,20 @@ import { MapAnimation } from "../mapAnimation/mapAnimation"
|
||||
import "./animationComponent.css"
|
||||
import "../../styles/styles.css"
|
||||
import "./mapblock.css"
|
||||
import iconButton from "../../styles/iconButton.svg"
|
||||
import { Button } from "../buttonDemo/buttonDemo"
|
||||
|
||||
export const AnimationComponent: React.FC<any> = ({text}) => {
|
||||
console.log(text)
|
||||
export const AnimationComponent: React.FC<any> = ({ text }) => {
|
||||
return (
|
||||
<div>
|
||||
<div className="animation-container">
|
||||
<div className="title__container">
|
||||
<div>
|
||||
<div className="animation__pos">
|
||||
<p className="title">Graff.estate </p>
|
||||
<p className="title__gardient title__gardient_pos">stream</p>
|
||||
<div className="test">
|
||||
<MapAnimation></MapAnimation>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<span className="title__caption">
|
||||
{text.titleCaption}
|
||||
@@ -21,9 +23,6 @@ export const AnimationComponent: React.FC<any> = ({text}) => {
|
||||
<Button text={text}></Button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="test">
|
||||
<MapAnimation></MapAnimation>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -8,7 +8,7 @@ export const Button: React.FC<any> = ({text}) => {
|
||||
<button className="main-block__button">
|
||||
{text.button}
|
||||
<div className="main-block__icon_container">
|
||||
<img src={iconButton} className="main-block__icon"></img>
|
||||
<img alt="icon" src={iconButton} className="main-block__icon"></img>
|
||||
</div>
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 208 B After Width: | Height: | Size: 292 B |
Binary file not shown.
|
After Width: | Height: | Size: 292 B |
@@ -40,12 +40,11 @@ export const Calendar: React.FC<TProps> = ({ open, setOpen, time, onUpdate, isMo
|
||||
}
|
||||
setCalendar(a);
|
||||
}, [value]);
|
||||
console.log(value);
|
||||
|
||||
|
||||
function hide(day: object, i: number) {
|
||||
if (value.isSame(day, "month")) {
|
||||
if (currDate.isSameOrBefore(day, "day") && i != 5 && i != 6) {
|
||||
if (currDate.isSameOrBefore(day, "day") && i !== 5 && i !== 6) {
|
||||
const cellClass = "calendar__cell_active calendar__cell";
|
||||
return cellClass;
|
||||
}
|
||||
@@ -134,11 +133,11 @@ export const Calendar: React.FC<TProps> = ({ open, setOpen, time, onUpdate, isMo
|
||||
</div>
|
||||
<div className="appointment__block">
|
||||
<div>
|
||||
<img className="point" src={point1}></img>
|
||||
<img alt="point" className="point" src={point1}></img>
|
||||
<span className="appointment__caption_active">{text.appointmentTrue}</span>
|
||||
</div>
|
||||
<div>
|
||||
<img className="point" src={point0}></img>
|
||||
<img alt="point" className="point" src={point0}></img>
|
||||
<span className="appointment__caption" >{text.appointmentFalse}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
font-size: 40px;
|
||||
}
|
||||
|
||||
.calendar__padding {}
|
||||
|
||||
.button__arrow_l {
|
||||
cursor: pointer;
|
||||
@@ -26,11 +25,11 @@
|
||||
}
|
||||
|
||||
.button__arrow_r:hover {
|
||||
background-image: url(../calendar/arrow_active.svg);
|
||||
background-image: url(../calendar/arrow_active1.png);
|
||||
}
|
||||
|
||||
.button__arrow_l:hover {
|
||||
background-image: url(../calendar/arrow_active.svg);
|
||||
background-image: url(../calendar/arrow_active1.png);
|
||||
}
|
||||
|
||||
.button__arrow_back {
|
||||
@@ -346,6 +345,9 @@
|
||||
}
|
||||
|
||||
|
||||
.weekday__cell {
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
import React from "react";
|
||||
import "../sliderComponent/sliderComponent.css";
|
||||
import "./calendar.css";
|
||||
import moment, { Moment } from "moment";
|
||||
import { Moment } from "moment";
|
||||
import Timepicker from "../timepicker/timepicker";
|
||||
import Form from "../form/form";
|
||||
import { TObjct } from "../../App";
|
||||
import "../../styles/styles.css";
|
||||
import { Confirm } from "../confirm/confirm";
|
||||
import { Calendar } from "../calendar/calendar";
|
||||
import { Content } from '../content/content'
|
||||
|
||||
|
||||
export type TProps = {
|
||||
@@ -36,26 +37,9 @@ export const CalendarDesktop: React.FC<TProps> = ({
|
||||
locale
|
||||
}) => {
|
||||
|
||||
console.log(isMobile, 'mobile')
|
||||
|
||||
return (
|
||||
<div className="calendar__container">
|
||||
<div data-aos="fade-up" className="main-block__container">
|
||||
<div>
|
||||
<p className="main-block__title_small">
|
||||
Graff.estate stream{" "}
|
||||
</p>
|
||||
<p className="main-block__title_gardient_small ">
|
||||
{text.title}
|
||||
</p>
|
||||
</div>
|
||||
<p className=" main-block__caption_color">
|
||||
{text.mainBlockCaptionColor}
|
||||
</p>
|
||||
<p className="main-block__caption_l">
|
||||
{text.mainBlockCaption}
|
||||
</p>
|
||||
</div>
|
||||
<Content text={text}></Content>
|
||||
<div className="wrapper">
|
||||
<Calendar
|
||||
text={text}
|
||||
|
||||
@@ -10,34 +10,18 @@ import "swiper/css";
|
||||
import "swiper/css/pagination";
|
||||
import "swiper/css/navigation";
|
||||
import "./calendarMobile.css"
|
||||
import useScreenSize from 'use-screen-size'
|
||||
import { Content } from "../content/content";
|
||||
|
||||
|
||||
|
||||
|
||||
export const CalendarMobile: React.FC<TProps> = ({ setDisplayForm, displayForm, open, setOpen, onUpdate, time, onExit, isMobile, text, locale }) => {
|
||||
const size = useScreenSize()
|
||||
|
||||
|
||||
return (
|
||||
<div className="calendar__mobile">
|
||||
<div className="calendar__container">
|
||||
<div data-aos="fade-up" className="main-block__container calendar__padding">
|
||||
<div>
|
||||
<p className="main-block__title_small">
|
||||
Graff.estate stream{" "}
|
||||
</p>
|
||||
<p className="main-block__title_gardient_small">
|
||||
{text.title}
|
||||
</p>
|
||||
</div>
|
||||
<p className=" main-block__caption_color">
|
||||
{text.mainBlockCaptionColor}
|
||||
</p>
|
||||
<p className="main-block__caption_l">
|
||||
{text.mainBlockCaption}
|
||||
</p>
|
||||
</div>
|
||||
<Content text={text}></Content>
|
||||
<Swiper
|
||||
rewind={true}
|
||||
centeredSlides={true}
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
import './cloudSolution.css'
|
||||
import server from './Server.svg'
|
||||
import "../../styles/styles.css";
|
||||
import serverFrame from './serverFrame.png'
|
||||
import { TText } from '../main/main';
|
||||
|
||||
|
||||
export const CloudSolution: React.FC<any> = ({ text }) => {
|
||||
@@ -10,7 +8,7 @@ export const CloudSolution: React.FC<any> = ({ text }) => {
|
||||
<div data-aos="zoom-in" data-aos-duration="500" className="cloud__container">
|
||||
<div className='block__container'>
|
||||
<div className='image__container'>
|
||||
<img className='image' src={serverFrame}></img>
|
||||
<img alt='serverImage' className='image' src={serverFrame}></img>
|
||||
</div>
|
||||
<div data-aos="fade-up"
|
||||
data-aos-delay="400" className="main-block__container caption__block">
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
import "../../styles/styles.css";
|
||||
|
||||
export const Content: React.FC<any> = ({text}) => {
|
||||
return (
|
||||
<div data-aos="fade-up"
|
||||
data-aos-delay="400"
|
||||
className="main-block__container">
|
||||
<div>
|
||||
<p className="main-block__title_small">
|
||||
Graff.estate stream{" "}
|
||||
</p>
|
||||
<p className=" main-block__title_gardient_small">
|
||||
{text.mainBlockCaptionColor}
|
||||
</p>
|
||||
</div>
|
||||
<p className="main-block__caption multiplayer__caption">
|
||||
{text.mainBlockCaption}
|
||||
</p>
|
||||
</div>
|
||||
)
|
||||
|
||||
}
|
||||
@@ -7,15 +7,33 @@ import building2 from './building2.png'
|
||||
import iconButton from "./iconButton.svg"
|
||||
|
||||
|
||||
export const Demostration: React.FC = ({ }) => {
|
||||
export const Demostration: React.FC = () => {
|
||||
return (
|
||||
<div className="block">
|
||||
<div className='demos_container'>
|
||||
<div className="main-block__icon_container demo__icon">
|
||||
<img src={iconButton} className="main-block__icon"></img>
|
||||
<img alt="icon" src={iconButton} className="main-block__icon"></img>
|
||||
</div>
|
||||
<div className='demo'>
|
||||
<img src={building} className='demo_image'></img>
|
||||
<img alt="building" src={building} className='demo_image'></img>
|
||||
<div className='demo_info'>
|
||||
<div className='title__block'>
|
||||
<h4 className='title__demo'>ЖК «Тактика»</h4>
|
||||
<p className='caption'>Россия, Екатеринбург.</p>
|
||||
</div>
|
||||
<div className='body__block'>
|
||||
<p className='caption1'>Жилой квартал класса комфорт плюс на ВИЗе, в квадрате улиц Татищева-Венгерских Коммунаров-Викулова.</p>
|
||||
<p className='caption2'>Рядом Верх-Исетский пруд, по Татищева за 10 минут можно добраться до центра.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className='demos_container'>
|
||||
<div className="main-block__icon_container demo__icon">
|
||||
<img alt="building" src={iconButton} className="main-block__icon"></img>
|
||||
</div>
|
||||
<div className='demo'>
|
||||
<img alt="building" src={building1} className='demo_image'></img>
|
||||
<div className='demo_info'>
|
||||
<div className='title__block'>
|
||||
<h4 className='title__demo'>ЖК «Тактика»</h4>
|
||||
@@ -30,28 +48,10 @@ export const Demostration: React.FC = ({ }) => {
|
||||
</div>
|
||||
<div className='demos_container'>
|
||||
<div className="main-block__icon_container demo__icon">
|
||||
<img src={iconButton} className="main-block__icon"></img>
|
||||
<img alt="building" src={iconButton} className="main-block__icon"></img>
|
||||
</div>
|
||||
<div className='demo'>
|
||||
<img src={building1} className='demo_image'></img>
|
||||
<div className='demo_info'>
|
||||
<div className='title__block'>
|
||||
<h4 className='title__demo'>ЖК «Тактика»</h4>
|
||||
<p className='caption'>Россия, Екатеринбург.</p>
|
||||
</div>
|
||||
<div className='body__block'>
|
||||
<p className='caption1'>Жилой квартал класса комфорт плюс на ВИЗе, в квадрате улиц Татищева-Венгерских Коммунаров-Викулова.</p>
|
||||
<p className='caption2'>Рядом Верх-Исетский пруд, по Татищева за 10 минут можно добраться до центра.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className='demos_container'>
|
||||
<div className="main-block__icon_container demo__icon">
|
||||
<img src={iconButton} className="main-block__icon"></img>
|
||||
</div>
|
||||
<div className='demo'>
|
||||
<img src={building2} className='demo_image'></img>
|
||||
<img alt="building" src={building2} className='demo_image'></img>
|
||||
<div className='demo_info'>
|
||||
<div className='title__block'>
|
||||
<h4 className='title__demo'>ЖК «Тактика»</h4>
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
import './demos.css'
|
||||
import "../../styles/styles.css";
|
||||
import building from './building.png'
|
||||
import building1 from './building1.png'
|
||||
import building2 from './building2.png'
|
||||
import iconButton from "./iconButton.svg"
|
||||
|
||||
|
||||
export const Demos: React.FC<any> = ({ text }) => {
|
||||
const { card } = text;
|
||||
const { card1 } = text;
|
||||
const { card2 } = text;
|
||||
|
||||
return (<div className=" demo__container_mobile main-block__container width demo__container">
|
||||
<h3 className='demos__tittle'>
|
||||
@@ -18,10 +14,10 @@ export const Demos: React.FC<any> = ({ text }) => {
|
||||
<div data-aos="fade-up"
|
||||
data-aos-delay="100" className='demos_container'>
|
||||
<div className="main-block__icon_container demo__icon">
|
||||
<img src={iconButton} className="main-block__icon"></img>
|
||||
<img alt='icon' src={iconButton} className="main-block__icon"></img>
|
||||
</div>
|
||||
<div className='demo'>
|
||||
<img src={building1} className='demo_image'></img>
|
||||
<img alt='buildingImg' src={building1} className='demo_image'></img>
|
||||
<div className='demo_info'>
|
||||
<div className='title__block'>
|
||||
<h4 className='title__demo'>{card.title}</h4>
|
||||
@@ -34,46 +30,8 @@ export const Demos: React.FC<any> = ({ text }) => {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div data-aos="fade-up"
|
||||
data-aos-delay="300" className='demos_container'>
|
||||
<div className="main-block__icon_container demo__icon">
|
||||
<img src={iconButton} className="main-block__icon"></img>
|
||||
</div>
|
||||
<div className='demo'>
|
||||
<img src={building2} className='demo_image'></img>
|
||||
<div className='demo_info'>
|
||||
<div className='title__block'>
|
||||
<h4 className='title__demo'>{card1.title}</h4>
|
||||
<p className='caption'>{card1.subTitle}</p>
|
||||
</div>
|
||||
<div className='body__block'>
|
||||
<p className='caption1'>{card1.caption}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div data-aos="fade-up"
|
||||
data-aos-delay="500" className='demos_container'>
|
||||
<div className="main-block__icon_container demo__icon">
|
||||
<img src={iconButton} className="main-block__icon"></img>
|
||||
</div>
|
||||
<div className='demo'>
|
||||
<img src={building} className='demo_image'></img>
|
||||
<div className='demo_info'>
|
||||
<div className='title__block'>
|
||||
<h4 className='title__demo'>{card2.title}</h4>
|
||||
<p className='caption'>{card2.subTitle}</p>
|
||||
</div>
|
||||
<div className='body__block'>
|
||||
<p className='caption1'>{card2.caption}</p>
|
||||
<p className='caption2'>{card2.caption1}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
)
|
||||
|
||||
}
|
||||
@@ -46,7 +46,6 @@
|
||||
|
||||
}
|
||||
|
||||
.card__image_type {}
|
||||
|
||||
@media screen and (min-width: 1600px) {
|
||||
.card__image {
|
||||
@@ -94,7 +93,6 @@
|
||||
gap: 15px;
|
||||
}
|
||||
|
||||
.card__image_type1 {}
|
||||
}
|
||||
|
||||
|
||||
@@ -104,7 +102,9 @@
|
||||
margin-bottom: 120px;
|
||||
}
|
||||
|
||||
|
||||
.card__name {
|
||||
font-size: 21px;
|
||||
}
|
||||
|
||||
.card {
|
||||
box-sizing: border-box;
|
||||
|
||||
@@ -4,44 +4,27 @@ import "../multiplayer/multiplayer.css";
|
||||
import touchscreen from "./image.png";
|
||||
import imac from "./image1.png";
|
||||
import devicesFrame from './deviceFrame.png'
|
||||
import iconButton from "../../styles/iconButton.svg";
|
||||
import { Link } from 'react-router-dom';
|
||||
import { Button } from "../buttonDemo/buttonDemo"
|
||||
import { Content } from "../content/content";
|
||||
|
||||
|
||||
|
||||
export const Devices: React.FC<any> = ({text}) => {
|
||||
export const Devices: React.FC<any> = ({ text }) => {
|
||||
return (
|
||||
<div className="devices__container">
|
||||
<div
|
||||
data-aos-duration="400"
|
||||
data-aos="fade-up"
|
||||
className="main-block__container"
|
||||
>
|
||||
<div>
|
||||
<p className=" main-block__title_small">
|
||||
Graff.estate stream{" "}
|
||||
</p>
|
||||
<p className="main-block__title_gardient_small">
|
||||
{text.mainBlockCaptionColor}
|
||||
</p>
|
||||
</div>
|
||||
<p className="main-block__caption multiplayer__caption">
|
||||
{text.mainBlockCaption}
|
||||
</p>
|
||||
</div>
|
||||
<Content text={text}></Content>
|
||||
<div className="card__container">
|
||||
<div data-aos="fade-up" data-aos-delay="100" className="card">
|
||||
<p className="card__name">Interactive display</p>
|
||||
<img src={touchscreen} className="card__image"></img>
|
||||
<img alt="device" src={touchscreen} className="card__image"></img>
|
||||
</div>
|
||||
<div data-aos="fade-up" data-aos-delay="300" className="card">
|
||||
<p className="card__name">Desktop</p>
|
||||
<img src={imac} className="card__image"></img>
|
||||
<img alt="device" src={imac} className="card__image"></img>
|
||||
</div>
|
||||
<div data-aos="fade-up" data-aos-delay="500" className="card">
|
||||
<p className="card__name">Mobile</p>
|
||||
<img src={devicesFrame} className="card__image"></img>
|
||||
<img alt="device" src={devicesFrame} className="card__image"></img>
|
||||
</div>
|
||||
</div>
|
||||
<div className="main-block__subblock-container">
|
||||
|
||||
@@ -14,10 +14,6 @@
|
||||
padding: 120px 120px;
|
||||
gap: 186px;
|
||||
justify-content: space-between;
|
||||
box-sizing: border-box;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
.footer__block_copyright_mobile_margin {
|
||||
@@ -48,11 +44,12 @@
|
||||
font-size: 40px;
|
||||
line-height: 100%;
|
||||
margin: 0;
|
||||
background-image: linear-gradient(135deg, rgba(211, 117, 255, 1) 50%, rgba(121, 143, 255, 1) 100%);
|
||||
background-image: linear-gradient(to right, #D375FF 0%, #798FFF 45%);
|
||||
background-size: 100%;
|
||||
background-repeat: repeat;
|
||||
background-color: transparent;
|
||||
-webkit-background-clip: text;
|
||||
background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
|
||||
@@ -200,7 +197,6 @@
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.footer__card_2 {}
|
||||
|
||||
.card__icon {
|
||||
margin-bottom: 15px;
|
||||
@@ -374,7 +370,6 @@
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1060px) {
|
||||
.footer__container {}
|
||||
|
||||
.footer__main-block {
|
||||
display: flex;
|
||||
@@ -411,7 +406,6 @@
|
||||
|
||||
|
||||
@media screen and (max-width: 639px) {
|
||||
.footer__container {}
|
||||
|
||||
|
||||
.footer__main-block {
|
||||
|
||||
@@ -8,13 +8,7 @@ import "../../styles/styles.css"
|
||||
|
||||
export const Footer: React.FC<any> = ({ text }) => {
|
||||
|
||||
const { cardLarge } = text
|
||||
const { cardLarge1 } = text
|
||||
const { cardSmall } = text
|
||||
const { cardSmall1 } = text
|
||||
const { copyright } = text
|
||||
|
||||
|
||||
const { cardLarge, cardLarge1, cardSmall, cardSmall1, copyright } = text
|
||||
|
||||
return (
|
||||
<div className="footer__container">
|
||||
@@ -34,7 +28,7 @@ export const Footer: React.FC<any> = ({ text }) => {
|
||||
</div>
|
||||
</div>
|
||||
<div className='footer__block_copyright'>
|
||||
<img src={logo} className='footer__logo'></img>
|
||||
<img alt='logo' src={logo} className='footer__logo'></img>
|
||||
<div className='copyright__caption'>
|
||||
<p className='copyright'>{copyright.caption}</p>
|
||||
<p className='copyright'>
|
||||
@@ -59,12 +53,12 @@ export const Footer: React.FC<any> = ({ text }) => {
|
||||
<div className='footer__card_2'>
|
||||
<div className='ellipse__container'>
|
||||
<div className="main-block__icon_container">
|
||||
<img src={iconButton} className="main-block__icon"></img>
|
||||
<img alt='icon' src={iconButton} className="main-block__icon"></img>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className='card__write'>
|
||||
<img src={write} className='card__icon'></img>
|
||||
<img alt='icon' src={write} className='card__icon'></img>
|
||||
<p className='card__caption'>{cardSmall.caption}</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -83,11 +77,11 @@ export const Footer: React.FC<any> = ({ text }) => {
|
||||
<div className='footer__card_2'>
|
||||
<div className='ellipse__container'>
|
||||
<div className="main-block__icon_container">
|
||||
<img src={iconButton} className="main-block__icon"></img>
|
||||
<img alt='icon' src={iconButton} className="main-block__icon"></img>
|
||||
</div>
|
||||
</div>
|
||||
<div className='card__write'>
|
||||
<img src={phone} className='card__icon'></img>
|
||||
<img alt='icon' src={phone} className='card__icon'></img>
|
||||
<p className='card__caption'>{cardSmall1.caption}</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -96,23 +90,23 @@ export const Footer: React.FC<any> = ({ text }) => {
|
||||
<div className='footer__card_2'>
|
||||
<div className='ellipse__container'>
|
||||
<div className="main-block__icon_container">
|
||||
<img src={iconButton} className="main-block__icon"></img>
|
||||
<img alt='icon' src={iconButton} className="main-block__icon"></img>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className='card__write'>
|
||||
<img src={write} className='card__icon'></img>
|
||||
<img alt='icon' src={write} className='card__icon'></img>
|
||||
<p className='card__caption'>{cardSmall.caption}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className='footer__card_2'>
|
||||
<div className='ellipse__container'>
|
||||
<div className="main-block__icon_container">
|
||||
<img src={iconButton} className="main-block__icon"></img>
|
||||
<img alt='icon' src={iconButton} className="main-block__icon"></img>
|
||||
</div>
|
||||
</div>
|
||||
<div className='card__write'>
|
||||
<img src={phone} className='card__icon'></img>
|
||||
<img alt='icon' src={phone} className='card__icon'></img>
|
||||
<p className='card__caption'>{cardSmall1.caption}</p>
|
||||
</div>
|
||||
|
||||
@@ -142,7 +136,7 @@ export const Footer: React.FC<any> = ({ text }) => {
|
||||
|
||||
</div>
|
||||
<div className='footer__block_copyright_mobile'>
|
||||
<img src={logo} className='footer__logo'></img>
|
||||
<img alt='logo' src={logo} className='footer__logo'></img>
|
||||
<div className='copyright__caption'>
|
||||
<p className='copyright'>{copyright.caption}</p>
|
||||
<p className='copyright'>
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
import left from "../calendar/Arrow_Left.svg";
|
||||
import React, { useEffect, useState } from "react";
|
||||
import moment from "moment";
|
||||
import "./form.css";
|
||||
import "../timepicker/timepicker.css"
|
||||
import "../../index.css"
|
||||
@@ -8,7 +5,7 @@ import { TProps } from "../calendarDesktop/calendarDesktop";
|
||||
import { useSwiper } from 'swiper/react';
|
||||
|
||||
|
||||
export const Form: React.FC<TProps> = ({ time, open, setOpen, onExit, displayForm, setDisplayForm, isMobile, text }) => {
|
||||
export const Form: React.FC<TProps> = ({ time, open, setOpen, displayForm, setDisplayForm, isMobile, text }) => {
|
||||
const swiper = useSwiper();
|
||||
|
||||
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
.header {
|
||||
|
||||
}
|
||||
|
||||
.header-container {
|
||||
|
||||
display: flex;
|
||||
padding: 30px 40px;
|
||||
color: #ffffff;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.header__buttons_wrapper {
|
||||
display: flex;
|
||||
gap: 40px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.burger__button {
|
||||
@@ -18,11 +21,11 @@
|
||||
.header-logo {
|
||||
width: 31px;
|
||||
height: 50px;
|
||||
|
||||
}
|
||||
|
||||
.header-buttons {
|
||||
display: flex;
|
||||
gap: 40px;
|
||||
margin-right: 96px;
|
||||
}
|
||||
|
||||
.header-button {
|
||||
@@ -35,6 +38,7 @@
|
||||
border: none;
|
||||
color: #ffffff;
|
||||
cursor: pointer;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.header-lang-button-text:hover {
|
||||
@@ -49,11 +53,13 @@
|
||||
|
||||
|
||||
.header-lang-button {
|
||||
position: absolute;
|
||||
right: 40px;
|
||||
top: 40px;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
position: relative;
|
||||
width: 55px;
|
||||
padding: 6px 8px 5px 12px;
|
||||
box-sizing: border-box;
|
||||
@@ -74,7 +80,7 @@
|
||||
}
|
||||
|
||||
.header-lang-button_active {
|
||||
height: 100%;
|
||||
height: 51px;
|
||||
}
|
||||
|
||||
.header-lang-button_active {
|
||||
@@ -177,8 +183,7 @@
|
||||
.header-lang-button {
|
||||
width: 70px;
|
||||
padding: 7px 15px;
|
||||
|
||||
|
||||
top: 57px;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -188,12 +193,23 @@
|
||||
.header-container {
|
||||
padding: 30px 12px;
|
||||
}
|
||||
|
||||
.header-lang-button {
|
||||
top: 40px;
|
||||
right: 12px;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
.header-container {
|
||||
padding: 15px 12px;
|
||||
}
|
||||
|
||||
.header-lang-button {
|
||||
right: 12px;
|
||||
top: 26px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, {useState } from "react";
|
||||
import React, { CSSProperties, useState } from "react";
|
||||
import logo from "./logoIcon.svg";
|
||||
import chevron from "./chevronIcon.svg";
|
||||
import "./header.css";
|
||||
@@ -29,7 +29,6 @@ export const Header: React.FC<THeader> =
|
||||
}
|
||||
|
||||
function handleOpacity() {
|
||||
console.log(opacity)
|
||||
setOpacity(true)
|
||||
}
|
||||
|
||||
@@ -39,7 +38,7 @@ export const Header: React.FC<THeader> =
|
||||
|
||||
const iconTransform = {
|
||||
transform: 'rotate(-90deg)'
|
||||
} as any
|
||||
} as CSSProperties
|
||||
|
||||
const setBackground = opacity && !open as boolean;
|
||||
|
||||
@@ -47,15 +46,14 @@ export const Header: React.FC<THeader> =
|
||||
setMenuOpen(true)
|
||||
const targetElement = document.querySelector('body') as HTMLElement
|
||||
targetElement.style.overflow = 'hidden'
|
||||
}
|
||||
}
|
||||
|
||||
console.log(text)
|
||||
|
||||
function openMenu() {
|
||||
setMenuOpen(false)
|
||||
const targetElement = document.querySelector('body') as HTMLElement
|
||||
targetElement.style.overflow = 'visible'
|
||||
|
||||
|
||||
}
|
||||
|
||||
return (
|
||||
@@ -63,10 +61,12 @@ export const Header: React.FC<THeader> =
|
||||
<div className="header-container">
|
||||
<img className="header-logo" alt="company-logo" src={logo} />
|
||||
<div className="header-buttons">
|
||||
<button className="header-button">{text.captionContact}</button>
|
||||
<button className="header-button">{text.captionCompain}</button>
|
||||
<div className="header__buttons_wrapper">
|
||||
<button className="header-button">{text.captionContact}</button>
|
||||
<button className="header-button">{text.captionCompain}</button>
|
||||
</div>
|
||||
<div className={open ? "header-lang-button header-lang-button_active" : 'header-lang-button header-lang-button_disabled'} style={setBackground ? style : { background: 'transparent' }}>
|
||||
<img src={chevron} className="header-select__icon" style={open ? iconTransform : {
|
||||
<img alt="img" src={chevron} className="header-select__icon" style={open ? iconTransform : {
|
||||
transform: 'rotate(0deg)'
|
||||
}}></img>
|
||||
<div className="wrapper__button">
|
||||
@@ -76,7 +76,7 @@ export const Header: React.FC<THeader> =
|
||||
) : (<button onClick={(e: any) => handleUpdateLanguage(e.target.value)} value={'RU'} className="header-lang-button-text">RU</button>)}
|
||||
</div>
|
||||
</div>
|
||||
{menuOpen ? <img src={iconClose} onClick={openMenu} className='nav__close'></img>
|
||||
{menuOpen ? <img alt="iconClose" src={iconClose} onClick={openMenu} className='nav__close'></img>
|
||||
:
|
||||
<button onClick={setOpacityAndMenu} className="burger__button">
|
||||
<span className="line__burger"></span>
|
||||
|
||||
@@ -39,7 +39,6 @@ export const Main: React.FC<any> = ({ text, locale }) => {
|
||||
}, [locale])
|
||||
|
||||
|
||||
console.log(time)
|
||||
const [next, setNext] = useState({
|
||||
calendar: true,
|
||||
timePicker: false,
|
||||
|
||||
@@ -211,7 +211,6 @@ export const MapAnimation:React.FC = React.memo(() => {
|
||||
}
|
||||
|
||||
function removeCaption(target?: string) {
|
||||
console.log('remove')
|
||||
let a = anime({
|
||||
// width: 40,
|
||||
//сейчас анимация удаления подсказки работает как просто смена opacity, иначе если делать именно анимацией рисования удаление, есть множество багов
|
||||
@@ -240,7 +239,6 @@ export const MapAnimation:React.FC = React.memo(() => {
|
||||
randNumber = Math.floor(Math.random() * lineClasses.length);
|
||||
}
|
||||
lastNmber = randNumber;
|
||||
console.log(randNumber)
|
||||
showLines.current[lineClasses[randNumber]] = !showLines.current[lineClasses[randNumber]];
|
||||
if(showLines.current[lineClasses[randNumber]]) {
|
||||
animation(lineClasses[randNumber])
|
||||
|
||||
@@ -4,10 +4,8 @@ import photo from "./Photo.png";
|
||||
import photo1 from "./Photo1.png";
|
||||
import photo2 from "./Photo2.png";
|
||||
import photo3 from "./Photo3.png";
|
||||
import iconButton from "../../styles/iconButton.svg";
|
||||
import { Link } from 'react-router-dom';
|
||||
import { Button } from "../buttonDemo/buttonDemo"
|
||||
|
||||
import { Content } from "../content/content";
|
||||
|
||||
export const Multiplayer: React.FC<any> = ({text}) => {
|
||||
return (
|
||||
@@ -16,28 +14,12 @@ export const Multiplayer: React.FC<any> = ({text}) => {
|
||||
data-aos-duration="400"
|
||||
className="multiplayer__container"
|
||||
>
|
||||
<div
|
||||
data-aos="fade-up"
|
||||
data-aos-delay="400"
|
||||
className="main-block__container"
|
||||
>
|
||||
<div id="trigger">
|
||||
<p className=" main-block__title_small">
|
||||
Graff.estate stream
|
||||
</p>
|
||||
<p className="main-block__title_gardient_small">
|
||||
{text.mainBlockCaptionColor}
|
||||
</p>
|
||||
</div>
|
||||
<p className="main-block__caption multiplayer__caption">
|
||||
{text.mainBlockCaption}
|
||||
</p>
|
||||
</div>
|
||||
<Content text={text}></Content>
|
||||
<div className="multiplayer__photo-container">
|
||||
<img src={photo} className="multiplayer__image" />
|
||||
<img src={photo1} className="multiplayer__image" />
|
||||
<img src={photo2} className="multiplayer__image" />
|
||||
<img src={photo3} className="multiplayer__image" />
|
||||
<img alt="device" src={photo} className="multiplayer__image" />
|
||||
<img alt="device" src={photo1} className="multiplayer__image" />
|
||||
<img alt="device" src={photo2} className="multiplayer__image" />
|
||||
<img alt="device" src={photo3} className="multiplayer__image" />
|
||||
</div>
|
||||
<div className="main-block__subblock-container">
|
||||
<div className="main-block_subblock">
|
||||
|
||||
@@ -3,32 +3,17 @@ import '../player/player.css'
|
||||
import './photoComponent.css'
|
||||
import photo1 from './Photo1.png'
|
||||
import photo2 from './Photo2.png'
|
||||
import { Content } from '../content/content'
|
||||
|
||||
|
||||
|
||||
export const PhotoComponent: React.FC<any> = ({ text }) => {
|
||||
return (
|
||||
<div className="photo___container">
|
||||
<div
|
||||
data-aos-duration="400"
|
||||
data-aos="fade-up"
|
||||
className="main-block__container"
|
||||
>
|
||||
<div>
|
||||
<p className="main-block__title main-block__title_small">
|
||||
Graff.estate stream
|
||||
</p>
|
||||
<p className="main-block__title_gardient main-block__title_gardient_small">
|
||||
{text.mainBlockCaptionColor}
|
||||
</p>
|
||||
</div>
|
||||
<p className="main-block__caption photo-component__margin">
|
||||
{text.mainBlockCaption}
|
||||
</p>
|
||||
</div>
|
||||
<Content text={text}></Content>
|
||||
<div className='photo__container_grid'>
|
||||
<img data-aos="fade-up" data-aos-delay="100" src={photo1} className='photo__container_image'></img>
|
||||
<img data-aos="fade-up" data-aos-delay="200" src={photo2} className='photo__container_image'></img>
|
||||
<img alt='photoImg' data-aos="fade-up" data-aos-delay="100" src={photo1} className='photo__container_image'></img>
|
||||
<img alt='photoImg' data-aos="fade-up" data-aos-delay="200" src={photo2} className='photo__container_image'></img>
|
||||
|
||||
</div>
|
||||
<div className="main-block_subblock">
|
||||
|
||||
@@ -38,8 +38,14 @@
|
||||
|
||||
@media screen and (max-width: 690px) {
|
||||
.chart {
|
||||
width: 100%;
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@media screen and (max-width: 450px) {
|
||||
.chart {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,12 +1,11 @@
|
||||
import { PieChart } from 'react-minimal-pie-chart';
|
||||
import './chart.css'
|
||||
import "../../styles/styles.css";
|
||||
import useScreenSize from 'use-screen-size'
|
||||
|
||||
|
||||
|
||||
|
||||
export const PieChartComp: React.FC = ({ }) => {
|
||||
export const PieChartComp: React.FC = () => {
|
||||
const dataMock = [
|
||||
{ title: 'One', value: 36.27, color: '#7A31C4' },
|
||||
{ title: 'Two', value: 6.22, color: '#FB57F4' },
|
||||
@@ -25,11 +24,6 @@ export const PieChartComp: React.FC = ({ }) => {
|
||||
fill: '#EBEBEB',
|
||||
};
|
||||
|
||||
const size = useScreenSize()
|
||||
const style = size.width >= 900 ? false : true;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
@media screen and (max-width: 639px) {
|
||||
.player__container {
|
||||
padding: 80px 10px 40px;
|
||||
padding: 60px 10px 40px;
|
||||
margin-bottom: 40px;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,32 +1,17 @@
|
||||
import "../../styles/styles.css";
|
||||
import "../multiplayer/multiplayer.css";
|
||||
import "./player.css"
|
||||
import iconButton from "../../styles/iconButton.svg"
|
||||
import { Link } from "react-router-dom";
|
||||
import { Button } from "../buttonDemo/buttonDemo"
|
||||
import { Content } from "../content/content";
|
||||
|
||||
|
||||
import video from "./VideoPlayer.png"
|
||||
export const Player: React.FC<any> = ({ text }) => {
|
||||
return (
|
||||
<div data-aos="zoom-in" data-aos-duration="500" className="player__container">
|
||||
<div data-aos="fade-up"
|
||||
data-aos-delay="400"
|
||||
className="main-block__container">
|
||||
<div>
|
||||
<p className="main-block__title_small">
|
||||
Graff.estate stream{" "}
|
||||
</p>
|
||||
<p className=" main-block__title_gardient_small">
|
||||
{text.mainBlockCaptionColor}
|
||||
</p>
|
||||
</div>
|
||||
<p className="main-block__caption multiplayer__caption">
|
||||
{text.mainBlockCaption}
|
||||
</p>
|
||||
</div>
|
||||
<Content text={text}></Content>
|
||||
<div className="video__container">
|
||||
<img className="fake-player" src={video}></img>
|
||||
<img alt="player" className="fake-player" src={video}></img>
|
||||
</div>
|
||||
<div className="main-block__subblock-container">
|
||||
<div className="main-block_subblock">
|
||||
|
||||
@@ -2,7 +2,6 @@ import React from "react";
|
||||
import "./sliderComponent.css";
|
||||
import "../../styles/styles.css"
|
||||
import SwiperCentred from "../swiper/swiper";
|
||||
import { TText } from "../main/main";
|
||||
|
||||
export const SliderComponent: React.FC<any> = React.memo(({ text }) => {
|
||||
return (
|
||||
|
||||
@@ -16,7 +16,6 @@ import "swiper/css";
|
||||
import "swiper/css/pagination";
|
||||
import "swiper/css/navigation";
|
||||
import '../calendar/calendar'
|
||||
import { text } from "stream/consumers";
|
||||
|
||||
type propsTypes = {
|
||||
slidesPerView: string;
|
||||
@@ -85,6 +84,7 @@ export default function SwiperCentred(props: propsTypes) {
|
||||
data-caption={props.text.subtitle}
|
||||
className={isActive ? "image__slider_active" : "image__slider"}
|
||||
src={img1}
|
||||
alt='slide'
|
||||
/>
|
||||
)}
|
||||
</SwiperSlide>
|
||||
@@ -95,6 +95,8 @@ export default function SwiperCentred(props: propsTypes) {
|
||||
data-caption={props.text.subtitle1}
|
||||
className={isActive ? "image__slider_active" : "image__slider"}
|
||||
src={img}
|
||||
alt='slide'
|
||||
|
||||
/>
|
||||
)}
|
||||
</SwiperSlide>
|
||||
@@ -105,6 +107,7 @@ export default function SwiperCentred(props: propsTypes) {
|
||||
data-caption={props.text.subtitle2}
|
||||
className={isActive ? "image__slider_active" : "image__slider"}
|
||||
src={img2}
|
||||
alt='slide'
|
||||
/>
|
||||
)}
|
||||
</SwiperSlide>
|
||||
@@ -115,6 +118,8 @@ export default function SwiperCentred(props: propsTypes) {
|
||||
data-caption={props.text.subtitle3}
|
||||
className={isActive ? "image__slider_active" : "image__slider"}
|
||||
src={img3}
|
||||
alt='slide'
|
||||
|
||||
/>
|
||||
)}
|
||||
</SwiperSlide>
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
import left from "../calendar/Arrow_Left.svg";
|
||||
import { useEffect, useState } from "react";
|
||||
import moment, { Moment } from "moment";
|
||||
import { Moment } from "moment";
|
||||
import "moment/locale/ru";
|
||||
import "./timepicker.css";
|
||||
import "../calendarDesktop/calendar.css";
|
||||
import point0 from "../calendar/Ellipse0.svg";
|
||||
import point1 from "../calendar/Ellipse1.svg";
|
||||
import { TProps } from "../calendarDesktop/calendarDesktop";
|
||||
import useScreenSize from 'use-screen-size'
|
||||
import { useSwiper } from 'swiper/react';
|
||||
|
||||
|
||||
@@ -41,14 +39,24 @@ export const Timepicker: React.FC<TProps> = ({
|
||||
}, [time]);
|
||||
|
||||
function updateTime(time: Moment) {
|
||||
onUpdate(time);
|
||||
setOpen({
|
||||
calendar: false,
|
||||
timePicker: false,
|
||||
form: true,
|
||||
confirm: false,
|
||||
});
|
||||
swiper.slideNext()
|
||||
if (isMobile) {
|
||||
onUpdate(time);
|
||||
setOpen({
|
||||
calendar: false,
|
||||
timePicker: false,
|
||||
form: true,
|
||||
confirm: false,
|
||||
});
|
||||
swiper.slideNext()
|
||||
} else {
|
||||
setOpen({
|
||||
calendar: false,
|
||||
timePicker: false,
|
||||
form: true,
|
||||
confirm: false,
|
||||
});
|
||||
onUpdate(time);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -103,11 +111,11 @@ export const Timepicker: React.FC<TProps> = ({
|
||||
</div>
|
||||
<div className="appointment__block appointment__block_time">
|
||||
<div>
|
||||
<img className="point" src={point1}></img>
|
||||
<img alt="point" className="point" src={point1}></img>
|
||||
<span className="appointment__caption_active">{text.appointmentTrue}</span>
|
||||
</div>
|
||||
<div>
|
||||
<img className="point" src={point0}></img>
|
||||
<img alt="point" className="point" src={point0}></img>
|
||||
<span>{text.appointmentFalse}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+3
-3
@@ -28,13 +28,13 @@ body {
|
||||
|
||||
.main {
|
||||
margin: 0 auto;
|
||||
width: 1440px;
|
||||
width: 1200px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1919px) {
|
||||
@media screen and (min-width: 1600px) {
|
||||
.main {
|
||||
width: 1200px;
|
||||
width: 1440px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import React, {useState, useEffect} from 'react';
|
||||
import ReactDOM from 'react-dom/client';
|
||||
import './index.css';
|
||||
import App from './App';
|
||||
|
||||
+7
-7
@@ -44,7 +44,7 @@ const textEN = {
|
||||
button: 'Demoversion'
|
||||
},
|
||||
devices: {
|
||||
mainBlockCaptionColor: 'is available on every device.',
|
||||
mainBlockCaptionColor: 'is available on any device.',
|
||||
mainBlockCaption: "The application easily adapts to any screen size. Our solution looks good on both mobile or large touchscreen in a developer's sales department.",
|
||||
button: 'Demoversion'
|
||||
},
|
||||
@@ -52,7 +52,7 @@ const textEN = {
|
||||
photoComponent: {
|
||||
mainBlockCaptionColor: "already works in the sales departments of the developer",
|
||||
mainBlockCaption: 'To organize an interactive presentation of a residential complex, the developer does not need to buy expensive equipment and maintain its performance.',
|
||||
mainBlockSubblock: 'In the sales office, It is enough to place a touch table with Internet access .',
|
||||
mainBlockSubblock: 'In the sales office, It is enough to place a touch table with Internet access.',
|
||||
},
|
||||
player: {
|
||||
mainBlockCaptionColor: "allows you to transfer an impressive level of graphics to the user's device",
|
||||
@@ -62,7 +62,7 @@ const textEN = {
|
||||
},
|
||||
|
||||
analytics: {
|
||||
mainBlockCaptionColor: 'collects data about the user and their behavior.',
|
||||
mainBlockCaptionColor: 'collects data about the users and their behavior.',
|
||||
mainBlockCaption: "The program's internal analytics system collects information about the user's behavior and prepare an analytical report that contains necessary metrics about user's behavior and manager's efficiency",
|
||||
cardLarge: {
|
||||
title: 'Converting managers to bookings',
|
||||
@@ -111,10 +111,10 @@ const textEN = {
|
||||
demos: {
|
||||
title: 'Available demonstrations',
|
||||
card: {
|
||||
title: 'ЖК «Айвазовский»',
|
||||
subTitle: 'Россия, Тюмень.',
|
||||
caption: 'Новый жилой район располагающийся в живописном месте на берегу Туры в центральной части Тюмени. ',
|
||||
caption1: 'Лауреат престижной премии Urban Awards 2019 в номинации «Лучший строящийся региональный жилой комплекс бизнес-класса».',
|
||||
title: 'RC «Aivazovsky»',
|
||||
subTitle: 'Russia, Tyumen.',
|
||||
caption: 'A new residential area located in a picturesque place on the banks of the Tura in the central part of Tyumen.',
|
||||
caption1: 'Winner of the prestigious Urban Awards 2019 in the nomination "Best regional business class residential complex under construction".',
|
||||
},
|
||||
card1: {
|
||||
title: 'ЖК «Машаров»',
|
||||
|
||||
Reference in New Issue
Block a user