-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
47 changed files
with
1,025 additions
and
75 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> | ||
фывфыв | ||
</sitemapindex> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,93 @@ | ||
import { BannerItem } from "@/components/Banner/BannerItem"; | ||
import { Call } from "@/components/Call/Call"; | ||
import { Portfolio } from "@/components/Portfolio/Portfolio"; | ||
import { Stages } from "@/components/Stages/Stages"; | ||
import { baseFetch } from "@/core/api/baseFetch"; | ||
import { getItemByFilter } from "@/core/api/getItemsByFilter"; | ||
import { API_URL } from "@/core/config/api.config"; | ||
import { parseObjToQuerytsts } from "@/core/utils/api/parseObjToQuery"; | ||
import { Metadata } from "next"; | ||
import { notFound } from "next/navigation"; | ||
|
||
interface ICategoryPage { | ||
|
||
export async function generateMetadata( | ||
{ params }: IServicePage | ||
): Promise<Metadata> { | ||
|
||
const service: IService = await getItemByFilter('services', ['href'], params.service, [ | ||
['populate', 'desktopExample'], | ||
['populate', 'mobileExample'] | ||
]) | ||
|
||
if (!service) { | ||
notFound(); | ||
} | ||
|
||
return { | ||
title: `${service.header} | Pixel Perfect`, | ||
description: service.description, | ||
openGraph: { | ||
title: `${service.header} | Pixel Perfect`, | ||
description: service.description, | ||
url: API_URL, | ||
siteName: 'Pixel Perfect', | ||
images: [ | ||
{ | ||
url: '/favicon.png', | ||
width: 500, | ||
height: 500, | ||
}, | ||
], | ||
locale: 'ru', | ||
type: 'website', | ||
}, | ||
} | ||
} | ||
|
||
|
||
interface IServicePage { | ||
params: { service: string } | ||
} | ||
|
||
|
||
export default async function Service({ params }: ICategoryPage) { | ||
export default async function Service({ params }: IServicePage) { | ||
|
||
|
||
const service: IService = await getItemByFilter('services', ['href'], params.service, [ | ||
['populate', 'desktopExample'], | ||
['populate', 'mobileExample'] | ||
]) | ||
|
||
const portfolioData: IPortfolio[] = await baseFetch('/api/portfolios?' + parseObjToQuerytsts([ | ||
['populate', 'exampleDesktop'], | ||
['populate', 'exampleMobile'] | ||
])) | ||
|
||
const stagesData = await baseFetch('/api/stages') | ||
|
||
if (!service) { | ||
notFound(); | ||
} | ||
|
||
|
||
const image = service.desktopExample.data ? service.desktopExample : service.mobileExample | ||
const imageType = service.desktopExample.data ? 'laptopLeft' : 'mobile' | ||
|
||
return ( | ||
<p>{params.service}</p> | ||
<> | ||
<div className="container"> | ||
<BannerItem header={service.header} headerType='h1' pos="first" image={image} description={service.description} type={imageType} /> | ||
</div> | ||
<hr className="hr" /> | ||
|
||
<div className="container content" dangerouslySetInnerHTML={{ __html: service.text }}></div> | ||
<hr className="hr" /> | ||
{portfolioData && <Portfolio data={portfolioData} />} | ||
<hr className="hr" /> | ||
<div className="container content" dangerouslySetInnerHTML={{ __html: service.textBottom }}></div> | ||
<hr className="hr" /> | ||
{stagesData && <Stages data={stagesData} header={'Как оформить заказ?'} />} | ||
<Call padding='none' /> | ||
</> | ||
); | ||
} |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,57 @@ | ||
import { Portfolio } from "@/components/Portfolio/Portfolio"; | ||
|
||
import { Call } from "@/components/Call/Call"; | ||
import { Stages } from "@/components/Stages/Stages"; | ||
import { baseFetch } from "@/core/api/baseFetch"; | ||
import { API_URL } from "@/core/config/api.config"; | ||
import { parseObjToQuerytsts } from "@/core/utils/api/parseObjToQuery"; | ||
import { Metadata } from "next"; | ||
|
||
export const metadata: Metadata = { | ||
title: "Обо мне | Pixel Perfect", | ||
description: "Моя цель - помочь вам в создании качественного и уникального сайта, который будет отвечать вашим потребностям и ожиданиям.", | ||
openGraph: { | ||
title: 'Обо мне | Pixel Perfect', | ||
description: 'Моя цель - помочь вам в создании качественного и уникального сайта, который будет отвечать вашим потребностям и ожиданиям.', | ||
url: API_URL, | ||
siteName: 'Pixel Perfect', | ||
images: [ | ||
{ | ||
url: '/favicon.png', | ||
width: 500, | ||
height: 500, | ||
}, | ||
], | ||
locale: 'ru', | ||
type: 'website', | ||
}, | ||
}; | ||
|
||
|
||
|
||
export default async function About() { | ||
|
||
const stagesData = await baseFetch('/api/stages') | ||
|
||
const portfolioData: IPortfolio[] = await baseFetch('/api/portfolios?' + parseObjToQuerytsts([ | ||
['populate', 'exampleDesktop'], | ||
['populate', 'exampleMobile'] | ||
])) | ||
return ( | ||
<p>asdasdas</p> | ||
<> | ||
<div className="content container"> | ||
<h1> | ||
Обо мне | ||
</h1> | ||
Здравствуйте! Меня зовут Владислав, я являюсь веб-разработчиком. <br /><br />Моя цель - помочь вам в создании качественного и уникального сайта, который будет отвечать вашим потребностям и ожиданиям.<br /><br /> | ||
Я верю в индивидуальный подход к каждому проекту. Каждый сайт, созданный мной, уникален и отражает уникальные потребности и желания заказчика. <br /><br />Моя цель - не просто создать сайт, а подарить вам инструмент, который поможет вам продвигать свой бизнес и достичь поставленных целей. | ||
<br /><br /> | ||
В каждом проекте я ценю партнерство и доверие моих клиентов. Сотрудничество со мной означает работу над вашим проектом в тесном контакте, прозрачность на всех этапах работы и стремление к идеальному результату. <br /><br />Вместе мы сможем достичь великолепных результатов!<br /><br /> | ||
Я готов воплотить в жизнь ваши идеи и помочь вам в создании превосходного сайта, который станет вашим эффективным инструментом в онлайн пространстве. <br /><br />Доверьте свой проект мне, и вместе мы создадем нечто по-настоящему впечатляющее! | ||
</div> | ||
{portfolioData && <Portfolio data={portfolioData} />} | ||
{stagesData && <Stages data={stagesData} header={'Как оформить заказ?'} />} | ||
<Call padding='none' /> | ||
</> | ||
); | ||
} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
.wrapper { | ||
display: flex; | ||
align-items: center; | ||
justify-content: space-between; | ||
|
||
@media (max-width: 767px) { | ||
flex-direction: column; | ||
gap: 30px; | ||
align-items: flex-start; | ||
|
||
} | ||
} | ||
|
||
.left { | ||
p { | ||
font-size: 25px; | ||
margin: 30px 0; | ||
|
||
@media (max-width: 767px) { | ||
font-size: 16px; | ||
margin: 10px 0; | ||
} | ||
} | ||
|
||
a { | ||
font-weight: 500; | ||
|
||
:hover { | ||
color: var(--color_sec-text); | ||
|
||
} | ||
} | ||
} | ||
|
||
.right { | ||
|
||
@media (max-width: 767px) { | ||
width: 100%; | ||
} | ||
|
||
img { | ||
min-width: 100%; | ||
min-width: 100%; | ||
|
||
@media (max-width: 1023px) { | ||
max-height: 200px; | ||
max-width: 200px; | ||
} | ||
|
||
@media (max-width: 767px) { | ||
margin: 0 auto; | ||
} | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,63 @@ | ||
import { Call } from "@/components/Call/Call"; | ||
import { API_URL } from "@/core/config/api.config"; | ||
import { INFO } from "@/core/config/info.config"; | ||
import { Metadata } from "next"; | ||
import Image from 'next/image'; | ||
import styles from './page.module.scss'; | ||
|
||
|
||
export const metadata: Metadata = { | ||
title: "Контакты | Pixel Perfect", | ||
description: "Разработка мобильных и веб приложений для вашей компании", | ||
openGraph: { | ||
title: 'Контакты | Pixel Perfect', | ||
description: 'Разработка мобильных и веб приложений для вашей компании', | ||
url: API_URL, | ||
siteName: 'Pixel Perfect', | ||
images: [ | ||
{ | ||
url: '/favicon.png', | ||
width: 500, | ||
height: 500, | ||
}, | ||
], | ||
locale: 'ru', | ||
type: 'website', | ||
}, | ||
|
||
}; | ||
|
||
|
||
export default async function Contacts() { | ||
|
||
return ( | ||
<p>CAtalog</p> | ||
<div className={styles.main}> | ||
<div className="content container"> | ||
|
||
<div className={styles.wrapper}> | ||
<div className={styles.left}> | ||
<h1> | ||
Контакты | ||
</h1> | ||
<address> | ||
<p>Комков Владислав Владимирович</p> | ||
<p><a href="mailto:[email protected]">[email protected]</a></p> | ||
<p><a href={`tel:${INFO.PHONE}`}>{INFO.PHONE}</a></p> | ||
<p>ИНН: 745108164223</p> | ||
</address> | ||
</div> | ||
<div className={styles.right}> | ||
<Image src={`/icon--black.svg`} alt={'Pixel Perfect'} | ||
priority | ||
width={450} | ||
height={450} | ||
sizes="100vw" | ||
style={{ width: '100%' }} | ||
/> | ||
</div> | ||
</div> | ||
</div> | ||
<Call padding='none' /> | ||
</div > | ||
); | ||
} |
Binary file not shown.
Oops, something went wrong.