diff --git a/package-lock.json b/package-lock.json index fb3554a..59440c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,8 @@ "dependencies": { "next": "15.3.2", "react": "^19.0.0", - "react-dom": "^19.0.0" + "react-dom": "^19.0.0", + "swiper": "^11.2.8" }, "devDependencies": { "@eslint/eslintrc": "^3", @@ -5517,6 +5518,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/swiper": { + "version": "11.2.8", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.2.8.tgz", + "integrity": "sha512-S5FVf6zWynPWooi7pJ7lZhSUe2snTzqLuUzbd5h5PHUOhzgvW0bLKBd2wv0ixn6/5o9vwc/IkQT74CRcLJQzeg==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "license": "MIT", + "engines": { + "node": ">= 4.7.0" + } + }, "node_modules/tinyglobby": { "version": "0.2.14", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", diff --git a/package.json b/package.json index 7b1b1da..b17420c 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "dependencies": { "next": "15.3.2", "react": "^19.0.0", - "react-dom": "^19.0.0" + "react-dom": "^19.0.0", + "swiper": "^11.2.8" }, "devDependencies": { "@eslint/eslintrc": "^3", diff --git a/public/images/empty-image.jpg b/public/images/empty-image.jpg new file mode 100644 index 0000000..7b2c271 Binary files /dev/null and b/public/images/empty-image.jpg differ diff --git a/public/svg/check.svg b/public/svg/check.svg new file mode 100644 index 0000000..9ea7b38 --- /dev/null +++ b/public/svg/check.svg @@ -0,0 +1,4 @@ + + + diff --git a/public/svg/empty-paper.svg b/public/svg/empty-paper.svg new file mode 100644 index 0000000..ef0828b --- /dev/null +++ b/public/svg/empty-paper.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/core/.gitkeep b/src/core/.gitkeep deleted file mode 100644 index c710e69..0000000 --- a/src/core/.gitkeep +++ /dev/null @@ -1 +0,0 @@ -reusable components \ No newline at end of file diff --git a/src/core/styles/index.scss b/src/core/styles/index.scss index e682ecd..2b78af2 100644 --- a/src/core/styles/index.scss +++ b/src/core/styles/index.scss @@ -1,2 +1,3 @@ @import './variables.scss'; -@import './mixins.scss'; \ No newline at end of file +@import './mixins.scss'; +@import './functions.scss'; \ No newline at end of file diff --git a/src/core/styles/variables.scss b/src/core/styles/variables.scss index 331471b..c518824 100644 --- a/src/core/styles/variables.scss +++ b/src/core/styles/variables.scss @@ -8,6 +8,8 @@ $desktop: 1440px; //fonts $font-open-sans: var(--open-sans), sans-serif; +$base-font-size: 16px; + $font-light: 300; $font-regular: 400; $font-medium: 500; diff --git a/src/shared/ui/advanced-phone-input/advancedPhoneInput.module.scss b/src/shared/ui/advanced-phone-input/advancedPhoneInput.module.scss index 01434a0..c5e6429 100644 --- a/src/shared/ui/advanced-phone-input/advancedPhoneInput.module.scss +++ b/src/shared/ui/advanced-phone-input/advancedPhoneInput.module.scss @@ -1,6 +1,5 @@ .Container { position: relative; - //width: 100%; } .Phone { @@ -12,8 +11,8 @@ .Button { position: absolute; - right: 4px; - top: calc(50% - 25px); + right: rem(2px); + top: calc(50% - 1.6rem); z-index: 3; - min-height: calc(100% - 4px); + min-height: calc(100% - .25rem); } \ No newline at end of file diff --git a/src/shared/ui/button/button.module.scss b/src/shared/ui/button/button.module.scss index 1202bdd..84e8fec 100644 --- a/src/shared/ui/button/button.module.scss +++ b/src/shared/ui/button/button.module.scss @@ -2,13 +2,13 @@ display: flex; align-items: center; justify-content: center; - padding: 10px 32px; - border-radius: 28px; - min-height: 55px; + padding: rem(10px) rem(32px); + border-radius: rem(28px); + min-height: rem(54px); font-family: $font-open-sans; font-weight: $font-regular; - font-size: 24px; + font-size: rem(24px); line-height: 100%; transition: all 0.15s linear; @@ -20,11 +20,11 @@ } svg { - width: 18px; - height: 18px; + width: rem(18px); + height: rem(18px); //fill: var(--text-primary); - margin-right: 18px; + margin-right: rem(18px); } &:hover { diff --git a/src/shared/ui/input/input.module.scss b/src/shared/ui/input/input.module.scss index 7b7e2f8..62e14de 100644 --- a/src/shared/ui/input/input.module.scss +++ b/src/shared/ui/input/input.module.scss @@ -2,13 +2,13 @@ display: flex; background: $color-white; border: 1px solid $color-darkgray; - border-radius: 28px; - padding: 10px 24px; + border-radius: rem(28px); + padding: rem(10px) rem(24px); transition: border ease .5s; font-family: $font-open-sans; font-weight: $font-regular; - font-size: 24px; + font-size: rem(24px); line-height: 100%; color: $color-text; width: max-content; diff --git a/src/shared/ui/text-area/text-area.module.scss b/src/shared/ui/text-area/text-area.module.scss index e8ab19f..af84452 100644 --- a/src/shared/ui/text-area/text-area.module.scss +++ b/src/shared/ui/text-area/text-area.module.scss @@ -14,13 +14,13 @@ .Area { background: $color-white; border: 1px solid $color-darkgray; - border-radius: 20px; - padding: 10px 24px; + border-radius: rem(20px); + padding: rem(10px) rem(24px); transition: border ease .5s; font-family: $font-open-sans; font-weight: $font-regular; - font-size: 24px; + font-size: rem(24px); line-height: 100%; color: $color-text; @@ -35,14 +35,14 @@ cursor: auto; } &::-webkit-scrollbar { - width: 12px; - height: 12px; + width: rem(12px); + height: rem(12px); } &::-webkit-scrollbar-track, &::-webkit-scrollbar-thumb { background-clip: content-box; - border: 4px solid transparent; - border-radius: 12px; + border: rem(4px) solid transparent; + border-radius: rem(12px); } &::-webkit-scrollbar-track { background-color: #333; // цвет дорожки diff --git a/src/views/home/ui/contacts/contacts.module.scss b/src/views/home/ui/contacts/contacts.module.scss index 27bf5c3..1e1a901 100644 --- a/src/views/home/ui/contacts/contacts.module.scss +++ b/src/views/home/ui/contacts/contacts.module.scss @@ -1,166 +1,170 @@ .Contacts { background: $color-lightgray; - border-radius: 28px; - padding: 160px; + border-radius: rem(28px); + padding: rem(160px) 0; +} - .Header { - font-family: $font-open-sans; - font-weight: $font-semi-bold; - font-size: 60px; - line-height: 100%; - color: $color-text; - margin-bottom: 80px; - } +.InnerContainer { + margin: 0 auto; + width: rem(1340px); +} - .Clients { - margin: 0 auto; - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: space-around; - align-items: center; - gap: 40px; - max-width: 1200px; - margin-bottom: 160px; +.Header { + font-family: $font-open-sans; + font-weight: $font-semi-bold; + font-size: rem(60px); + line-height: 100%; + color: $color-text; + margin-bottom: rem(80px); +} - .Client { +.Clients { + margin: 0 auto; + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-around; + align-items: center; + gap: rem(40px); + max-width: rem(1200px); + margin-bottom: rem(160px); - img { - width: 300px; - height: auto; - } + .Client { + + img { + width: rem(300px); + height: auto; } } +} - .Form { - position: relative; - background: #292E3D; +.Form { + position: relative; + background: #292E3D; + display: flex; + flex-direction: row; + padding: rem(60px) rem(50px); + border-radius: rem(28px); + overflow: hidden; + + margin-bottom: rem(80px); + + &:after { + content: ''; + display: block; + width: 100%; + height: 100%; + position: absolute; + z-index: 1; + left: 0; + top: 0; + background-color: rgba(#163055, .6); + transition: 250ms background-color; + } + + .Background { + position: absolute; + object-fit: cover; + z-index: 1; + } + + .Offer { + flex: 2; display: flex; - flex-direction: row; - padding: 60px 50px; - border-radius: 28px; - overflow: hidden; + flex-direction: column; - margin-bottom: 80px; - - &:after { - content: ''; - display: block; - width: 100%; - height: 100%; - position: absolute; - z-index: 1; - left: 0; - top: 0; - background-color: rgba(#163055, .6); - transition: 250ms background-color; - } - - .Background { - position: absolute; - object-fit: cover; - z-index: 1; - } - - .Offer { - flex: 2; - display: flex; - flex-direction: column; - - .Title { - position: relative; - z-index: 2; - font-family: $font-open-sans; - font-weight: $font-semi-bold; - font-size: 48px; - line-height: 100%; - color: $color-white; - margin-bottom: 80px; - } - - .SubTitle { - position: relative; - z-index: 2; - font-family: $font-open-sans; - font-weight: $font-light; - font-size: 32px; - line-height: 100%; - color: $color-white; - max-width: 720px; - } - } - - .Inputs { + .Title { position: relative; z-index: 2; - flex: 1; - display: flex; - flex-direction: column; - justify-content: center; - gap: 20px; - } - } - - .Map { - position: relative; - - iframe { - border-radius: 28px; + font-family: $font-open-sans; + font-weight: $font-semi-bold; + font-size: rem(48px); + line-height: 100%; + color: $color-white; + margin-bottom: rem(80px); } - .Contacts { - position: absolute; + .SubTitle { + position: relative; z-index: 2; - top: -40px; - right: 180px; - border-radius: 28px; - background: $color-white; - width: 440px; - //height: 540px; - padding: 40px 35px 20px; + font-family: $font-open-sans; + font-weight: $font-light; + font-size: rem(32px); + line-height: 100%; + color: $color-white; + max-width: rem(720px); + } + } - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: flex-start; + .Inputs { + position: relative; + z-index: 2; + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; + gap: rem(20px); + } +} - .Title { - position: relative; - font-family: $font-open-sans; - font-weight: $font-semi-bold; - font-size: 48px; - line-height: 100%; - color: $color-text; - text-align: right; - margin-bottom: 32px; - align-self: center; +.Map { + position: relative; - .LedOn { - position: absolute; - bottom: 6px; - left: 6px; - } + iframe { + border-radius: rem(28px); + } + + .Contacts { + position: absolute; + z-index: 2; + top: rem(-40px); + right: rem(180px); + border-radius: rem(28px); + background: $color-white; + width: rem(440px); + padding: rem(40px) rem(35px) rem(20px); + + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + + .Title { + position: relative; + font-family: $font-open-sans; + font-weight: $font-semi-bold; + font-size: rem(48px); + line-height: 100%; + color: $color-text; + text-align: right; + margin-bottom: rem(32px); + align-self: center; + + .LedOn { + position: absolute; + bottom: rem(6px); + left: rem(6px); } + } - .Address { - position: relative; - font-family: $font-open-sans; - font-weight: $font-regular; - font-size: 32px; - line-height: 130%; - color: $color-text; - margin-bottom: 20px; - margin-left: 32px; + .Address { + position: relative; + font-family: $font-open-sans; + font-weight: $font-regular; + font-size: rem(32px); + line-height: 130%; + color: $color-text; + margin-bottom: rem(20px); + margin-left: rem(32px); - .Icon { - position: absolute; - left: -48px; - top: 8px; - width: 32px; - height: 32px; - stroke: #E96526; - } + .Icon { + position: absolute; + left: rem(-48px); + top: rem(8px); + width: rem(32px); + height: rem(32px); + stroke: #E96526; } } } -} \ No newline at end of file +} diff --git a/src/views/home/ui/contacts/contacts.tsx b/src/views/home/ui/contacts/contacts.tsx index e628d5f..b6dd9ed 100644 --- a/src/views/home/ui/contacts/contacts.tsx +++ b/src/views/home/ui/contacts/contacts.tsx @@ -16,72 +16,74 @@ import email from '@public/svg/email.svg'; export default function Contacts() { return (
-

- Клиенты, которые нам доверяют -

-
- {clientsLogos.map(({ logo }, idx) => ( -
- +
+

+ Клиенты, которые нам доверяют +

+
+ {clientsLogos.map(({ logo }, idx) => ( +
+ +
+ ))} +
+ +
+ {''} +
+

Остались вопросы?

+

+ Наш эксперт свяжется с вами для уточнения подробностей и + определения точной стоимости работ +

+
+
+ + +
- ))} -
- -
- {''} -
-

Остались вопросы?

-

- Наш эксперт свяжется с вами для уточнения подробностей и определения - точной стоимости работ -

-
- - - -
-
-
- +
+ -
-

- {''} - Мы всегда
на связи -

-

- - Краснодарский край
- г.Сочи
- ТЦ «Атриум»
- ул. Навагинская д.9«Д»
- этаж 3, офис 35 -

-

- - +7 (988) 400 93 93 -

-

- - office@firecheck.ru -

+
+

+ {''} + Мы всегда
на связи +

+

+ + Краснодарский край
+ г.Сочи
+ ТЦ «Атриум»
+ ул. Навагинская д.9«Д»
+ этаж 3, офис 35 +

+

+ + +7 (988) 400 93 93 +

+

+ + office@firecheck.ru +

+
diff --git a/src/views/home/ui/footer/footer.module.scss b/src/views/home/ui/footer/footer.module.scss index 163bdaa..6ffdb27 100644 --- a/src/views/home/ui/footer/footer.module.scss +++ b/src/views/home/ui/footer/footer.module.scss @@ -1,49 +1,57 @@ .Footer { + position: relative; background-color: #1B1B25; - padding: 80px 160px; + padding: rem(120px) 0 rem(40px); + margin-top: rem(-24px); + z-index: -1; +} + +.InnerContainer { + margin: 0 auto; + width: rem(1340px); display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-start; - gap: 20px; + gap: rem(20px); +} - .Block{ - display: flex; - flex-direction: column; - gap: 20px; - max-width: 40vw; - } +.Block { + display: flex; + flex-direction: column; + gap: rem(20px); + max-width: 40vw; +} - .SendBtn { - align-self: flex-end; - max-width: 33%; - } +.SendBtn { + align-self: flex-end; + max-width: 33%; +} - .Header { +.Header { + font-family: $font-open-sans; + font-weight: $font-semi-bold; + font-size: rem(60px); + line-height: 100%; + color: $color-white; + margin-bottom: rem(40px); +} + +.Bottom { + width: 100%; + height: rem(80px); + border-top: 1px solid $color-white; + display: flex; + flex-direction: row; + align-items: center; + gap: rem(20px); + + .Policy { font-family: $font-open-sans; - font-weight: $font-semi-bold; - font-size: 60px; + font-weight: $font-regular; + font-size: rem(16px); line-height: 100%; color: $color-white; - margin-bottom: 40px; + margin-left: auto; } - - .Bottom { - width: 100%; - height: 80px; - border-top: 1px solid $color-white; - display: flex; - flex-direction: row; - align-items: center; - gap: 20px; - - .Policy { - font-family: $font-open-sans; - font-weight: $font-regular; - font-size: 16px; - line-height: 100%; - color: $color-white; - margin-left: auto; - } - } -} \ No newline at end of file +} diff --git a/src/views/home/ui/footer/footer.tsx b/src/views/home/ui/footer/footer.tsx index ef81551..7da55a2 100644 --- a/src/views/home/ui/footer/footer.tsx +++ b/src/views/home/ui/footer/footer.tsx @@ -5,31 +5,33 @@ import Link from 'next/link'; export default function Footer() { return (
-
-

- Давайте обсудим ваши задачи -

- - -