Merge branch 'develop'
This commit is contained in:
commit
e5ac03d11a
@ -22,7 +22,17 @@ export default defineConfig({
|
|||||||
syntaxHighlight: false,
|
syntaxHighlight: false,
|
||||||
rehypePlugins: [rehypeSlug, [rehypePrettyCode, { theme: "github-dark" }]],
|
rehypePlugins: [rehypeSlug, [rehypePrettyCode, { theme: "github-dark" }]],
|
||||||
}),
|
}),
|
||||||
sitemap(),
|
sitemap({
|
||||||
|
i18n: {
|
||||||
|
defaultLocale: "en",
|
||||||
|
locales: {
|
||||||
|
en: "en-US",
|
||||||
|
de: "de-DE",
|
||||||
|
cs: "cs-CZ",
|
||||||
|
fr: "fr-FR"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}),
|
||||||
react(),
|
react(),
|
||||||
],
|
],
|
||||||
i18n: {
|
i18n: {
|
||||||
|
@ -25,9 +25,11 @@
|
|||||||
"@radix-ui/react-slot": "^1.0.2",
|
"@radix-ui/react-slot": "^1.0.2",
|
||||||
"@radix-ui/react-tabs": "^1.0.4",
|
"@radix-ui/react-tabs": "^1.0.4",
|
||||||
"@radix-ui/react-tooltip": "^1.1.2",
|
"@radix-ui/react-tooltip": "^1.1.2",
|
||||||
|
"@tailwindcss/typography": "^0.5.13",
|
||||||
"@types/react": "^18.2.74",
|
"@types/react": "^18.2.74",
|
||||||
"@types/react-dom": "^18.2.24",
|
"@types/react-dom": "^18.2.24",
|
||||||
"astro": "^4.11.5",
|
"astro": "^4.11.5",
|
||||||
|
"astro-seo": "^0.8.4",
|
||||||
"class-variance-authority": "^0.7.0",
|
"class-variance-authority": "^0.7.0",
|
||||||
"clsx": "^2.1.0",
|
"clsx": "^2.1.0",
|
||||||
"cmdk": "^1.0.0",
|
"cmdk": "^1.0.0",
|
||||||
@ -41,7 +43,6 @@
|
|||||||
"tailwindcss": "^3.4.1",
|
"tailwindcss": "^3.4.1",
|
||||||
"tailwindcss-animate": "^1.0.7",
|
"tailwindcss-animate": "^1.0.7",
|
||||||
"vaul": "^0.9.0",
|
"vaul": "^0.9.0",
|
||||||
"zod": "^3.23.8",
|
"zod": "^3.23.8"
|
||||||
"@tailwindcss/typography": "^0.5.13"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
536
pnpm-lock.yaml
536
pnpm-lock.yaml
File diff suppressed because it is too large
Load Diff
4
public/robots.txt
Normal file
4
public/robots.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
User-agent: *
|
||||||
|
Allow: /
|
||||||
|
|
||||||
|
Sitemap: https://cyrilsebek.cz/sitemap-index.xml
|
@ -1,6 +1,6 @@
|
|||||||
export const cs = {
|
export const cs = {
|
||||||
title: "Cyril Šebek", // Title of the main page in browser's handlebard
|
title: "Cyril Šebek", // Title of the main page in browser's handlebard
|
||||||
description: "Personal website of one weird student", // HTML page description
|
escription: "Hi there, I am Cyril, one weird student from Czechia, also a programmer and a musician.",
|
||||||
favicon: "/favicon.svg",
|
favicon: "/favicon.svg",
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -106,6 +106,7 @@ export const cs = {
|
|||||||
pageTitle: "Moje skladby @ Cyril Šebek",
|
pageTitle: "Moje skladby @ Cyril Šebek",
|
||||||
title: "Moje skladby",
|
title: "Moje skladby",
|
||||||
description: "Seznam mých skladeb.",
|
description: "Seznam mých skladeb.",
|
||||||
|
ogDescription: "This page lists all published compositions by Cyril Šebek",
|
||||||
downloadPDF: "Stáhnout PDF",
|
downloadPDF: "Stáhnout PDF",
|
||||||
downloadMP3: "Stáhnout MP3",
|
downloadMP3: "Stáhnout MP3",
|
||||||
downloadFLAC: "Stáhnout FLAC"
|
downloadFLAC: "Stáhnout FLAC"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
export const de = {
|
export const de = {
|
||||||
title: "Cyril Šebek", // Title of the main page in browser's handlebard
|
title: "Cyril Šebek", // Title of the main page in browser's handlebard
|
||||||
description: "Personal website of one weird student", // HTML page description
|
description: "Hi there, I am Cyril, one weird student from Czechia, also a programmer and a musician.",
|
||||||
favicon: "/favicon.svg",
|
favicon: "/favicon.svg",
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -106,6 +106,7 @@ export const de = {
|
|||||||
pageTitle: "Music @ Cyril Šebek",
|
pageTitle: "Music @ Cyril Šebek",
|
||||||
title: "My compositions",
|
title: "My compositions",
|
||||||
description: "This is page is listing all my published musical compositions.",
|
description: "This is page is listing all my published musical compositions.",
|
||||||
|
ogDescription: "This page lists all published compositions by Cyril Šebek",
|
||||||
downloadPDF: "Download PDF",
|
downloadPDF: "Download PDF",
|
||||||
downloadMP3: "Download MP3",
|
downloadMP3: "Download MP3",
|
||||||
downloadFLAC: "Download FLAC"
|
downloadFLAC: "Download FLAC"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
export const en = {
|
export const en = {
|
||||||
title: "Cyril Šebek", // Title of the main page in browser's handlebard
|
title: "Cyril Šebek", // Title of the main page in browser's handlebard
|
||||||
description: "Personal website of one weird student", // HTML page description
|
description: "Hi there, I am Cyril, one weird student from Czechia, also a programmer and a musician.",
|
||||||
favicon: "/favicon.svg",
|
favicon: "/favicon.svg",
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -106,6 +106,7 @@ export const en = {
|
|||||||
pageTitle: "Music @ Cyril Šebek",
|
pageTitle: "Music @ Cyril Šebek",
|
||||||
title: "My compositions",
|
title: "My compositions",
|
||||||
description: "This is page is listing all my published musical compositions.",
|
description: "This is page is listing all my published musical compositions.",
|
||||||
|
ogDescription: "This page lists all published compositions by Cyril Šebek",
|
||||||
downloadPDF: "Download PDF",
|
downloadPDF: "Download PDF",
|
||||||
downloadMP3: "Download MP3",
|
downloadMP3: "Download MP3",
|
||||||
downloadFLAC: "Download FLAC"
|
downloadFLAC: "Download FLAC"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
export const fr = {
|
export const fr = {
|
||||||
title: "Cyril Šebek", // Title of the main page in browser's handlebard
|
title: "Cyril Šebek", // Title of the main page in browser's handlebard
|
||||||
description: "Personal website of one weird student", // HTML page description
|
description: "Hi there, I am Cyril, one weird student from Czechia, also a programmer and a musician.",
|
||||||
favicon: "/favicon.svg",
|
favicon: "/favicon.svg",
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -106,6 +106,7 @@ export const fr = {
|
|||||||
pageTitle: "Music @ Cyril Šebek",
|
pageTitle: "Music @ Cyril Šebek",
|
||||||
title: "My compositions",
|
title: "My compositions",
|
||||||
description: "This is page is listing all my published musical compositions.",
|
description: "This is page is listing all my published musical compositions.",
|
||||||
|
ogDescription: "This page lists all published compositions by Cyril Šebek",
|
||||||
downloadPDF: "Download PDF",
|
downloadPDF: "Download PDF",
|
||||||
downloadMP3: "Download MP3",
|
downloadMP3: "Download MP3",
|
||||||
downloadFLAC: "Download FLAC"
|
downloadFLAC: "Download FLAC"
|
||||||
|
@ -1,17 +1,15 @@
|
|||||||
---
|
---
|
||||||
import type { CollectionEntry } from "astro:content";
|
|
||||||
import SinglePageBlogMode from "./SinglePageBlogMode.astro";
|
import SinglePageBlogMode from "./SinglePageBlogMode.astro";
|
||||||
import MainLayout from "./MainLayout.astro";
|
import MainLayout from "./MainLayout.astro";
|
||||||
|
|
||||||
type Props = CollectionEntry<"blog">["data"];
|
const { title, description, language, openGraph } = Astro.props;
|
||||||
|
|
||||||
const { title, description, language } = Astro.props;
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<MainLayout
|
<MainLayout
|
||||||
title=`${title} @ Cyril Šebek`
|
title=`${title} @ Cyril Šebek`
|
||||||
description={description}
|
description={description}
|
||||||
lang={language}
|
lang={language}
|
||||||
|
openGraph={openGraph}
|
||||||
>
|
>
|
||||||
<SinglePageBlogMode>
|
<SinglePageBlogMode>
|
||||||
<slot />
|
<slot />
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
---
|
---
|
||||||
const { title, description, lang, themeOverride } = Astro.props;
|
const { title, description, lang, themeOverride, openGraph } = Astro.props;
|
||||||
import { ViewTransitions } from 'astro:transitions';
|
import { ViewTransitions } from 'astro:transitions';
|
||||||
import Navbar from "../components/Navbar.astro";
|
import Navbar from "../components/Navbar.astro";
|
||||||
import "../style/index.css";
|
import "../style/index.css";
|
||||||
import { useTranslations } from '../i18n/utils';
|
import { useTranslations } from '../i18n/utils';
|
||||||
|
import { SEO } from "astro-seo";
|
||||||
|
|
||||||
const t = useTranslations(lang)
|
const t = useTranslations(lang)
|
||||||
---
|
---
|
||||||
@ -13,12 +14,18 @@ const t = useTranslations(lang)
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<link rel="sitemap" href="/sitemap-index.xml" />
|
||||||
<meta name="description" content={description} />
|
<meta name="description" content={description} />
|
||||||
<meta name="author" content="Cyril Šebek" />
|
<meta name="author" content="Cyril Šebek" />
|
||||||
<meta name="generator" content={Astro.generator} />
|
<meta name="generator" content={Astro.generator} />
|
||||||
<link rel="shortcut icon" href={t("favicon")}>
|
<link rel="shortcut icon" href={t("favicon")}>
|
||||||
<link rel="shortcut icon" href={t("favicon")} type="image/x-icon">
|
<link rel="shortcut icon" href={t("favicon")} type="image/x-icon">
|
||||||
<title>{title}</title>
|
<title>{title}</title>
|
||||||
|
<SEO
|
||||||
|
title={title}
|
||||||
|
description={description}
|
||||||
|
openGraph={openGraph}
|
||||||
|
/>
|
||||||
<ViewTransitions />
|
<ViewTransitions />
|
||||||
</head>
|
</head>
|
||||||
<body class="bg-bkg" >
|
<body class="bg-bkg" >
|
||||||
|
@ -25,9 +25,22 @@ const page = Astro.props;
|
|||||||
const formattedDate = page.data.publishDate?.toLocaleString(lang);
|
const formattedDate = page.data.publishDate?.toLocaleString(lang);
|
||||||
|
|
||||||
const { Content } = await page.render();
|
const { Content } = await page.render();
|
||||||
|
|
||||||
|
const og = {
|
||||||
|
basic: {
|
||||||
|
title: page.data.title,
|
||||||
|
type: "article",
|
||||||
|
image: page.data.image.url
|
||||||
|
},
|
||||||
|
article: {
|
||||||
|
publishedTime: page.data.publishDate,
|
||||||
|
authors: [page.data.author],
|
||||||
|
tags: page.data.tags
|
||||||
|
}
|
||||||
|
}
|
||||||
---
|
---
|
||||||
|
|
||||||
<BlogPost {...page.data} language={lang}>
|
<BlogPost {...page.data} language={lang} openGraph={og}>
|
||||||
<article
|
<article
|
||||||
class="prose prose-moi m-[auto] sm:prose-sm md:prose-md lg:prose-lg text-justify"
|
class="prose prose-moi m-[auto] sm:prose-sm md:prose-md lg:prose-lg text-justify"
|
||||||
>
|
>
|
||||||
|
@ -19,12 +19,26 @@ var posts = await getBlogPosts();
|
|||||||
var filtered_posts = posts.filter(
|
var filtered_posts = posts.filter(
|
||||||
(post) => post.data.language == Astro.currentLocale,
|
(post) => post.data.language == Astro.currentLocale,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const og = {
|
||||||
|
basic: {
|
||||||
|
title: t("blog")["title"],
|
||||||
|
type: "website",
|
||||||
|
image: t("favicon")
|
||||||
|
},
|
||||||
|
optional: {
|
||||||
|
description: t("blog")["ogDescription"],
|
||||||
|
locale: getLangFromUrl(Astro.url),
|
||||||
|
siteName: "Cyril Šebek"
|
||||||
|
}
|
||||||
|
};
|
||||||
---
|
---
|
||||||
|
|
||||||
<MainLayout
|
<MainLayout
|
||||||
title={t("blog")["title"]}
|
title={t("blog")["title"]}
|
||||||
description={t("blog")["description"]}
|
description={t("blog")["ogDescription"]}
|
||||||
lang={Astro.currentLocale}
|
lang={Astro.currentLocale}
|
||||||
|
openGraph={og}
|
||||||
>
|
>
|
||||||
<SinglePageBlogMode>
|
<SinglePageBlogMode>
|
||||||
<div class="p-4">
|
<div class="p-4">
|
||||||
@ -35,7 +49,7 @@ var filtered_posts = posts.filter(
|
|||||||
{t("blog")["description"]}
|
{t("blog")["description"]}
|
||||||
</p>
|
</p>
|
||||||
<Separator className="my-4" />
|
<Separator className="my-4" />
|
||||||
<PostsList filteredPosts={filtered_posts} lang={Astro.currentLocale} />
|
<PostsList filteredPosts={filtered_posts.reverse()} lang={Astro.currentLocale} />
|
||||||
</div>
|
</div>
|
||||||
</SinglePageBlogMode>
|
</SinglePageBlogMode>
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
|
@ -33,9 +33,22 @@ const { lang, tag } = Astro.params;
|
|||||||
const { posts } = Astro.props;
|
const { posts } = Astro.props;
|
||||||
|
|
||||||
const filteredPosts = posts.filter((post) => post.data.tags?.includes(tag) && post.data.language == Astro.currentLocale);
|
const filteredPosts = posts.filter((post) => post.data.tags?.includes(tag) && post.data.language == Astro.currentLocale);
|
||||||
|
|
||||||
|
const og = {
|
||||||
|
basic: {
|
||||||
|
title: `${t("postsTagged")} "${tag}"}`,
|
||||||
|
image: t("favicon"),
|
||||||
|
type: "website"
|
||||||
|
},
|
||||||
|
optional: {
|
||||||
|
description: t("blog")["ogDescription"],
|
||||||
|
locale: getLangFromUrl(Astro.url),
|
||||||
|
siteName: "Cyril Šebek"
|
||||||
|
}
|
||||||
|
}
|
||||||
---
|
---
|
||||||
|
|
||||||
<MainLayout title=`${tag} @ Cyril Šebek` description={"desc"} lang={lang}>
|
<MainLayout title=`${tag} @ Cyril Šebek` description={"desc"} lang={lang} openGraph={og}>
|
||||||
<SinglePageBlogMode>
|
<SinglePageBlogMode>
|
||||||
<h1 class="text-2xl text-center font-bold text-content mb-10 mt-5">{t("postsTagged")} "{tag}"</h1>
|
<h1 class="text-2xl text-center font-bold text-content mb-10 mt-5">{t("postsTagged")} "{tag}"</h1>
|
||||||
<PostsList filteredPosts={filteredPosts} lang={Astro.currentLocale} />
|
<PostsList filteredPosts={filteredPosts} lang={Astro.currentLocale} />
|
||||||
|
@ -17,8 +17,22 @@ export async function getStaticPaths() {
|
|||||||
return { params: { lang } };
|
return { params: { lang } };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const og = {
|
||||||
|
basic: {
|
||||||
|
title: t("title"),
|
||||||
|
type: "website",
|
||||||
|
image: t("favicon")
|
||||||
|
},
|
||||||
|
optional: {
|
||||||
|
description: t("description"),
|
||||||
|
locale: getLangFromUrl(Astro.url),
|
||||||
|
siteName: "Cyril Šebek"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
---
|
---
|
||||||
<MainLayout title={t("title")} description={t("description")} lang={Astro.currentLocale} themeOverride="theme_auto">
|
<MainLayout title={t("title")} description={t("description")} openGraph={og} lang={Astro.currentLocale} themeOverride="theme_auto">
|
||||||
<FloatingLinks />
|
<FloatingLinks />
|
||||||
<Hero />
|
<Hero />
|
||||||
<About />
|
<About />
|
||||||
|
@ -17,12 +17,26 @@ export async function getStaticPaths() {
|
|||||||
|
|
||||||
var songs = await getCompositions()
|
var songs = await getCompositions()
|
||||||
songs = songs.reverse()
|
songs = songs.reverse()
|
||||||
|
|
||||||
|
const og = {
|
||||||
|
basic: {
|
||||||
|
title: t("music")["title"],
|
||||||
|
type: "website",
|
||||||
|
image: t("favicon")
|
||||||
|
},
|
||||||
|
optional: {
|
||||||
|
description: t("music")["ogDescription"],
|
||||||
|
locale: getLangFromUrl(Astro.url),
|
||||||
|
siteName: "Cyril Šebek"
|
||||||
|
}
|
||||||
|
};
|
||||||
---
|
---
|
||||||
|
|
||||||
<MainLayout
|
<MainLayout
|
||||||
title={t("music")["pageTitle"]}
|
title={t("music")["pageTitle"]}
|
||||||
description={t("music")["description"]}
|
description={t("music")["ogDescription"]}
|
||||||
lang={Astro.currentLocale}
|
lang={Astro.currentLocale}
|
||||||
|
openGraph={og}
|
||||||
>
|
>
|
||||||
<SinglePageBlogMode>
|
<SinglePageBlogMode>
|
||||||
<div class="p-4">
|
<div class="p-4">
|
||||||
|
@ -8,7 +8,7 @@ import Showcase from "../components/Showcase.astro";
|
|||||||
import FloatingLinks from "../components/FloatingLinks.astro";
|
import FloatingLinks from "../components/FloatingLinks.astro";
|
||||||
|
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
import { getLangFromUrl, useTranslations } from "../i18n/utils";
|
import { getLangFromUrl, useTranslations } from "../../i18n/utils";
|
||||||
|
|
||||||
const t = useTranslations(getLangFromUrl(Astro.url));
|
const t = useTranslations(getLangFromUrl(Astro.url));
|
||||||
|
|
||||||
@ -17,8 +17,22 @@ export async function getStaticPaths() {
|
|||||||
return { params: { lang } };
|
return { params: { lang } };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const og = {
|
||||||
|
basic: {
|
||||||
|
title: t("title"),
|
||||||
|
type: "website",
|
||||||
|
image: t("favicon")
|
||||||
|
},
|
||||||
|
optional: {
|
||||||
|
description: t("description"),
|
||||||
|
locale: getLangFromUrl(Astro.url),
|
||||||
|
siteName: "Cyril Šebek"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
---
|
---
|
||||||
<MainLayout title={t("title")} description={t("description")} lang={Astro.currentLocale} themeOverride="theme_auto">
|
<MainLayout title={t("title")} description={t("description")} openGraph={og} lang={Astro.currentLocale} themeOverride="theme_auto">
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="refresh" content="0; url=https://cyrilsebek.cz/en">
|
<meta http-equiv="refresh" content="0; url=https://cyrilsebek.cz/en">
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
Loading…
Reference in New Issue
Block a user