Merge branch 'develop' of https://github.com/sergeyyarkov/yarkov.tech into develop

This commit is contained in:
Sergey Yarkov 2022-08-28 14:31:15 +03:00
commit 946d52fd7c
5 changed files with 57 additions and 30 deletions

View File

@ -14,10 +14,19 @@ export const SITE_METADATA: SiteMetadataType = {
telegramUrl: "https://t.me/sergeyyarkov",
},
nav: [
{ key: "navigation.articles", url: "/articles/" },
{ key: "navigation.projects", url: "/projects/" },
{
key: "navigation.articles",
url: "/articles/",
},
{
key: "navigation.projects",
url: "/projects/",
},
{ key: "navigation.about", url: "/about/" },
{ key: "navigation.contacts", url: "/contacts/" },
{
key: "navigation.contacts",
url: "/contacts/",
},
],
projects: [
{
@ -112,11 +121,20 @@ export const SITE_METADATA: SiteMetadataType = {
en: "Programming",
},
list: [
{ icon: "nodejs", name: "Javascript/Typescript" },
{ icon: "language-c", name: "C Language" },
{
icon: "nodejs",
name: "Javascript/Typescript",
},
{
icon: "language-c",
name: "C Language",
},
{ icon: "mysql", name: "SQL" },
{ icon: "graphql", name: "GraphQL" },
{ icon: "avr", name: "AVR instruction set" },
{
icon: "avr",
name: "AVR instruction set",
},
],
},
{
@ -141,7 +159,10 @@ export const SITE_METADATA: SiteMetadataType = {
list: [
{ icon: "nodejs", name: "Node.js" },
{ icon: "docker", name: "Docker" },
{ icon: "git-branch", name: "Git/gitflow" },
{
icon: "git-branch",
name: "Git/gitflow",
},
{ icon: "sass", name: "SASS" },
{ icon: "webpack", name: "Webpack" },
{ icon: "vite", name: "Vite.js" },
@ -153,7 +174,10 @@ export const SITE_METADATA: SiteMetadataType = {
en: "Databases",
},
list: [
{ icon: "postgresql", name: "PostgreSQL" },
{
icon: "postgresql",
name: "PostgreSQL",
},
{ icon: "mongodb", name: "MongoDB" },
{ icon: "redis", name: "Redis" },
],

View File

@ -17,7 +17,9 @@ export interface Props {
}
export async function getStaticPaths() {
const modules = import.meta.glob<MDXInstance<ArticleType>>("../../content/articles/**/*.mdx", { eager: true });
const modules = import.meta.glob<MDXInstance<ArticleType>>("../../content/articles/**/*.mdx", {
eager: true,
});
const entries = Object.keys(modules).map((key) => [key, key.split("/").slice(6)[0]]);
const formatted = formatArticlesByLangs(modules);
@ -26,9 +28,14 @@ export async function getStaticPaths() {
const article = modules[key];
const dirName = key.split("/").at(-3);
const published_at = new Date(article.frontmatter.published_at).toLocaleDateString("en-CA");
const slug = `${lang !== DEFAULT_LANGUAGE ? `${lang}/` : ""}blog/${published_at}/${article.frontmatter.slug}`;
const slug = `${lang !== DEFAULT_LANGUAGE ? `${lang}/` : ""}blog/${published_at}/${
article.frontmatter.slug
}`;
return { params: { slug }, props: { article, alternateLangs: Object.keys(formatted[dirName]) } };
return {
params: { slug },
props: { article, alternateLangs: Object.keys(formatted[dirName]) },
};
})
.filter(({ props: { article } }) => !article.frontmatter.draft);
}
@ -42,20 +49,6 @@ const { pathname } = Astro.url;
---
<ArticleLayout lang={siteLang} content={frontmatter} canonicalUrl={canonicalUrl.href}>
{
alternateLangs.length > 1 && (
<div class="languages-available">
{t("article.availableOn")}:
{alternateLangs
.filter((lang) => lang !== siteLang)
.map((lang) => (
<a href={DEFAULT_LANGUAGE === lang ? `/${pathname.split("/").slice(2).join("/")}` : `/${lang}${pathname}`}>
{languages[lang]}
</a>
))
.reduce((prev, curr) => [prev, ", ", curr])}
</div>
)
}
<Content />
</ArticleLayout>

View File

@ -4,7 +4,9 @@ import rss from "@astrojs/rss";
import { DEFAULT_LANGUAGE, SITE_METADATA } from "@root/config";
import * as utils from "@i18n/utils";
const data = import.meta.glob<MDXInstance<ArticleType>>("../../content/articles/**/*.mdx", { eager: true });
const data = import.meta.glob<MDXInstance<ArticleType>>("../../content/articles/**/*.mdx", {
eager: true,
});
const articles = Object.values(utils.formatArticlesByLangs(data));
const items = [];

View File

@ -4,7 +4,9 @@ import { getLanguageFromURL } from "@utils/url";
class ArticleService {
public getTranslatedArticles(Astro: Readonly<AstroGlobal>): MDXInstance<ArticleType>[] {
const data = import.meta.glob<MDXInstance<ArticleType>>("../../content/articles/**/*.mdx", { eager: true });
const data = import.meta.glob<MDXInstance<ArticleType>>("../../content/articles/**/*.mdx", {
eager: true,
});
const modules = formatArticlesByLangs(data);
const siteLang = getLanguageFromURL(Astro.url.pathname);
const articles: MDXInstance<ArticleType>[] = [];

10
src/types/main.d.ts vendored
View File

@ -28,7 +28,10 @@ declare global {
githubUrl: string;
telegramUrl: string;
};
nav: Array<{ key: UIDictionaryKeys; url: string }>;
nav: Array<{
key: UIDictionaryKeys;
url: string;
}>;
projects: Array<ProjectType>;
skills: Array<SkillsType>;
};
@ -57,7 +60,10 @@ declare global {
type SkillsType = {
title: Record<LanguageKeys, string>;
list: Array<{ icon?: string | undefined; name: string }>;
list: Array<{
icon?: string | undefined;
name: string;
}>;
};
type ContactFieldsType = {