refactor: moved pages to templates

This commit is contained in:
Sergey Yarkov 2022-08-03 18:30:20 +03:00
parent 381ff9f822
commit 37cb82ccd5
12 changed files with 124 additions and 94 deletions

View File

@ -1,10 +1,5 @@
--- ---
import PageLayout from '@layouts/default.astro' import NotFound from '@root/templates/NotFound.astro';
--- ---
<PageLayout title="404" showPageHeading={false}> <NotFound />
<div class="container">
<h1 style="font-size:var(--font-size-5xl);">404</h1>
<p>Страницу которую вы пытаетесь найти не существует.</p>
</div>
</PageLayout>

View File

@ -1,24 +1,5 @@
--- ---
import { SITE_METADATA } from '@root/config'; import About from '@root/templates/About.astro';
import PageLayout from '@layouts/default.astro';
import SkillsList from '@components/SkillsList';
import SkillsBlock from '@components/SkillsBlock';
// TODO: import content based on user ui language
import * as data from '../../content/about/ru/index.md';
import ArticleContent from '@components/ArticleContent';
const { skills } = SITE_METADATA;
const { Content } = data;
--- ---
<PageLayout title="Обо мне"> <About />
<section>
<ArticleContent>
<Content />
</ArticleContent>
<SkillsList>
{skills.map((block) => <SkillsBlock data={block} />)}
</SkillsList>
</section>
</PageLayout>

View File

@ -1,24 +1,5 @@
--- ---
import PageLayout from '@layouts/default.astro'; import Articles from '@root/templates/Articles.astro';
import ArticlesList from '@components/ArticlesList';
import { transformArticles, formatToArticleBlocks } from '@utils/articles';
const articles = await Astro.glob<ArticleType>('../../content/articles/**/*.md');
const tags = new Set(articles.map((article) => article.frontmatter.tags).flat());
--- ---
<PageLayout <Articles />
title='Статьи'
description='Технические статьи, туториалы и различные справочные материалы которые связаны с IT тематикой находятся здесь.'
>
<section>
<ArticlesList
client:load
data={{
articles: formatToArticleBlocks(transformArticles(articles)),
tags: [...tags],
}}
emptyPlaceholder='Не найдено ни одной статьи...'
/>
</section>
</PageLayout>

View File

@ -1,12 +1,5 @@
--- ---
import PageLayout from '@layouts/default.astro'; import Contacts from '@root/templates/Contacts.astro';
import ContactForm from '@components/ContactForm';
import ContactsList from '@components/ContactsList';
--- ---
<PageLayout title='Контакты' description='Воспользуйтесь формой обратной связи или напишите мне в социальные сети.'> <Contacts />
<section>
<ContactForm client:idle />
<ContactsList />
</section>
</PageLayout>

View File

@ -1,26 +1,5 @@
--- ---
import * as utils from '@utils/index'; import Home from '@root/templates/Home.astro';
import PageLayout from '@layouts/default.astro';
import RecentArticles from '@components/RecentArticles';
import { Splash, SplashHeading, SplashLinks, Link } from '@components/Splash';
const data = await Astro.glob<ArticleType>('../../content/articles/**/*.md');
const articles = utils.transformArticles(data);
--- ---
<PageLayout showPageHeading={false}> <Home />
<Splash>
<SplashHeading>
<hgroup>
<h1>Hello, I'am Sergey</h1>
<h2>Fullstack <b>web-developer</b> & <b>freelancer</b></h2>
</hgroup>
<p>Я занимаюсь разработкой веб-сайтов и веб-приложений разной сложности, а также публикую различные статьи и туториалы на разные IT темы.</p>
</SplashHeading>
<SplashLinks>
<Link icon="information" href="/about">обо мне</Link>
<Link icon="email_filled" href="/contacts">написать мне</Link>
</SplashLinks>
</Splash>
<RecentArticles articles={articles} length={4} />
</PageLayout>

View File

@ -1,16 +1,5 @@
--- ---
import { SITE_METADATA } from '@root/config'; import Projects from '@root/templates/Projects.astro';
import PageLayout from '@layouts/default.astro';
import ProjectsList from '@components/ProjectsList';
import ProjectItem from '@components/ProjectItem';
const { projects } = SITE_METADATA;
--- ---
<PageLayout title='Проекты' description='Несколько моих основных проектов которые были разработаны и выложены в открытый доступ.'> <Projects />
<section>
<ProjectsList>
{projects.map((project) => <ProjectItem data={project} />)}
</ProjectsList>
</section>
</PageLayout>

24
src/templates/About.astro Normal file
View File

@ -0,0 +1,24 @@
---
import { SITE_METADATA } from '@root/config';
import PageLayout from '@layouts/default.astro';
import SkillsList from '@components/SkillsList';
import SkillsBlock from '@components/SkillsBlock';
// TODO: import content based on user ui language
import * as data from '../../content/about/ru/index.md';
import ArticleContent from '@components/ArticleContent';
const { skills } = SITE_METADATA;
const { Content } = data;
---
<PageLayout title="Обо мне">
<section>
<ArticleContent>
<Content />
</ArticleContent>
<SkillsList>
{skills.map((block) => <SkillsBlock data={block} />)}
</SkillsList>
</section>
</PageLayout>

View File

@ -0,0 +1,24 @@
---
import PageLayout from '@layouts/default.astro';
import ArticlesList from '@components/ArticlesList';
import { transformArticles, formatToArticleBlocks } from '@utils/articles';
const articles = await Astro.glob<ArticleType>('../../content/articles/**/*.md');
const tags = new Set(articles.map((article) => article.frontmatter.tags).flat());
---
<PageLayout
title="Статьи"
description="Технические статьи, туториалы и различные справочные материалы которые связаны с IT тематикой находятся здесь."
>
<section>
<ArticlesList
client:load
data={{
articles: formatToArticleBlocks(transformArticles(articles)),
tags: [...tags],
}}
emptyPlaceholder="Не найдено ни одной статьи..."
/>
</section>
</PageLayout>

View File

@ -0,0 +1,12 @@
---
import PageLayout from '@layouts/default.astro';
import ContactForm from '@components/ContactForm';
import ContactsList from '@components/ContactsList';
---
<PageLayout title="Контакты" description="Воспользуйтесь формой обратной связи или напишите мне в социальные сети.">
<section>
<ContactForm client:idle />
<ContactsList />
</section>
</PageLayout>

26
src/templates/Home.astro Normal file
View File

@ -0,0 +1,26 @@
---
import * as utils from '@utils/index';
import PageLayout from '@layouts/default.astro';
import RecentArticles from '@components/RecentArticles';
import { Splash, SplashHeading, SplashLinks, Link } from '@components/Splash';
const data = await Astro.glob<ArticleType>('../../content/articles/**/*.md');
const articles = utils.transformArticles(data);
---
<PageLayout showPageHeading={false}>
<Splash>
<SplashHeading>
<hgroup>
<h1>Hello, I'am Sergey</h1>
<h2>Fullstack <b>web-developer</b> & <b>freelancer</b></h2>
</hgroup>
<p>Я занимаюсь разработкой веб-сайтов и веб-приложений разной сложности, а также публикую различные статьи и туториалы на разные IT темы.</p>
</SplashHeading>
<SplashLinks>
<Link icon="information" href="/about">обо мне</Link>
<Link icon="email_filled" href="/contacts">написать мне</Link>
</SplashLinks>
</Splash>
<RecentArticles articles={articles} length={4} />
</PageLayout>

View File

@ -0,0 +1,10 @@
---
import PageLayout from '@layouts/default.astro';
---
<PageLayout title="404" showPageHeading={false}>
<div class="container">
<h1 style="font-size:var(--font-size-5xl);">404</h1>
<p>Страницу которую вы пытаетесь найти не существует.</p>
</div>
</PageLayout>

View File

@ -0,0 +1,16 @@
---
import { SITE_METADATA } from '@root/config';
import PageLayout from '@layouts/default.astro';
import ProjectsList from '@components/ProjectsList';
import ProjectItem from '@components/ProjectItem';
const { projects } = SITE_METADATA;
---
<PageLayout title="Проекты" description="Несколько моих основных проектов которые были разработаны и выложены в открытый доступ.">
<section>
<ProjectsList>
{projects.map((project) => <ProjectItem data={project} />)}
</ProjectsList>
</section>
</PageLayout>