Перенёс текст с главной страницы в файл Markdown

This commit is contained in:
Иван Кузьменко 2025-10-22 07:44:57 +03:00
parent 2024fa9f4b
commit 0643f48189
5 changed files with 95 additions and 83 deletions

View file

@ -28,6 +28,13 @@ export async function fetchPostsSorted(postComparer?: PostComparer) {
return sortedPosts;
};
// rndtrash: пришлось заменить `path.parse`, так как на стороне клиента его больше не реализуют
function getFilenameFromPath(path: string) {
const file = path.split("/").pop();
const dot = file?.lastIndexOf('.') ?? -1;
return dot === -1 ? file : file?.substring(0, file.lastIndexOf('.'));
}
export async function fetchPosts() {
const allPostFiles = import.meta.glob('/src/blogs/*.md');
const iterablePostFiles = Object.entries(allPostFiles);
@ -35,7 +42,7 @@ export async function fetchPosts() {
const allPosts: App.BlogPost[] = await Promise.all(
iterablePostFiles.map(async ([filePath, resolver]) => {
const { metadata }: any = await resolver();
const { name } = path.parse(filePath);
const name = getFilenameFromPath(filePath);
return {
slug: name,

39
src/pages/index.md Normal file
View file

@ -0,0 +1,39 @@
# Кто мы?
__Tea Sanctuary__ — это в первую очередь коллектив друзей, разрабатывающих
проекты для души, для всеобщего пользования и даже на заказ. С
__8 июля 2017 года__ мы ведём публичную деятельность в сфере разработки ПО и развлечений.
__Tea Sanctuary__ — это также и сообщество единомышленников. Любовь к добротным
видеоиграм и пассивная агрессия к вычислительной технике у нас в крови. Когда-то сообщество
было закрытым и насчитывало около 50 участников, но впоследствии мы решили его расширить.
Станьте частью коллектива!
# Что делаем?
Наша главная страсть — это, конечно, видеоигры. Мы часто участвуем в так
называемых "гейм джемах" — конкурсах на разработку игр. Наши игры вы можете
оценить здесь: [RandomTrash](https://randomtrash.itch.io)
[FriendlyWithMeat](https://friendlywithmeat.itch.io).
Также мы ведём работу над нашим первым полноценным игровым проектом.
Следите за новостями в нашем [сообществе](https://teasanctuary.ru/discord)!
Отдельные участники нашего коллектива занимаются модификацией существующих игр,
добавляя в них новый контент. Например, __MegaZerg__ создаёт оригинальные карты
для такой бессмертной классики, как __Counter-Strike 1.6__ и __Half-Life Deathmatch__,
и выкладывает их на ресурс GameBanana: [kemist](https://gamebanana.com/members/2971042)
Мы размещаем игровые сервера, как постоянные, так и временные для различных событий.
Например, у нас есть сервер [Tea Sanctuary HLDM](https://hl.teasanctuary.ru),
где вы можете ознакомиться с новыми картами от всего сообщества Half-Life.
Не одними играми едины, за нашими плечами есть несколько прикладных программ,
созданных под заказ. Про них ничего особо рассказать не можем, но если вам надо
что-нибудь сделать — пишите нам!
# Как с вами связаться?
Общие вопросы можно задавать в [сообществе Tea Sanctuary](https://teasanctuary.ru/discord).
Там же можете написать личное сообщение администраторам.
Наши соцсети и почту для более важных обращений можно найти на странице [Контакты](/contact).

View file

@ -1,7 +0,0 @@
import { fetchPostsSorted, sortPostsByPostAndUpdateDate } from "$src/lib/util/Blogs";
const LATEST_POSTS_COUNT = 3;
export async function load() {
return { posts: (await fetchPostsSorted(sortPostsByPostAndUpdateDate)).slice(0, LATEST_POSTS_COUNT) };
}

View file

@ -1,9 +1,11 @@
<script lang="ts">
import SocialButton from '$lib/components/SocialButton.svelte';
import SocialHyperlink from '$lib/components/SocialHyperlink.svelte';
import { PUBLIC_TS_DISCORD } from '$env/static/public';
import BlogCard, { BlogCardSize } from '$src/lib/components/BlogCard.svelte';
import { page } from '$app/state';
import type { PageData } from './$types';
export let data: PageData;
</script>
<svelte:head>
@ -93,80 +95,34 @@
</div>
</section>
<section class="flex justify-center bg-slate-50 text-slate-950">
<div
class="flex w-5xl max-w-screen flex-col flex-nowrap gap-12 p-2 px-2 pt-12 pb-12 text-base sm:text-xl"
>
<section id="who-are-we">
<h1>Кто мы?</h1>
<div class="text-justify">
<b>Tea Sanctuary</b> &mdash; это в первую очередь коллектив друзей, разрабатывающих
проекты для души, для всеобщего пользования и даже на заказ. С
<b>8 июля 2017 года</b> мы ведём публичную деятельность в сфере разработки ПО и развлечений.
</div>
<br />
<div class="text-justify">
<b>Tea Sanctuary</b> &mdash; это также и сообщество единомышленников. Любовь к добротным
видеоиграм и пассивная агрессия к вычислительной технике у нас в крови. Когда-то сообщество
было закрытым и насчитывало около 50 участников, но впоследствии мы решили его расширить.
Станьте частью коллектива!
</div>
</section>
<section id="what-are-we-doing">
<h1>Что делаем?</h1>
<div class="text-justify">
Наша главная страсть &mdash; это, конечно, видеоигры. Мы часто участвуем в так
называемых "гейм джемах" &mdash; конкурсах на разработку игр. Наши игры вы можете
оценить здесь:
<SocialHyperlink href="https://randomtrash.itch.io">RandomTrash</SocialHyperlink>
<SocialHyperlink href="https://friendlywithmeat.itch.io/">
FriendlyWithMeat
</SocialHyperlink>. Также мы ведём работу над нашим первым полноценным игровым
проектом. Следите за новостями в нашем
<SocialHyperlink href={PUBLIC_TS_DISCORD}>сообществе</SocialHyperlink>!
</div>
<br />
<div class="text-justify">
Отдельные участники нашего коллектива занимаются модификацией существующих игр,
добавляя в них новый контент. Например, <b>MegaZerg</b> создаёт оригинальные карты
для такой бессмертной классики, как Counter-Strike 1.6, и выкладывает их на ресурс
GameBanana:
<SocialHyperlink href="https://gamebanana.com/members/2971042">
kemist
</SocialHyperlink>
</div>
<br />
<div class="text-justify">
Мы размещаем игровые сервера, как постоянные, так и временные для различных событий.
Например, у нас есть сервер
<SocialHyperlink href="https://hl.teasanctuary.ru">
Tea Sanctuary HLDM
</SocialHyperlink>, где вы можете ознакомиться с новыми картами от всего сообщества
Half-Life.
</div>
<br />
<div class="text-justify">
Не одними играми едины, за нашими плечами есть несколько прикладных программ,
созданных под заказ. Про них ничего особо рассказать не можем, но если вам надо
что-нибудь сделать &mdash; пишите нам!
</div>
</section>
<section id="how-can-you-contact-us">
<h1>Как с вами связаться?</h1>
<div class="text-justify">
Общие вопросы можно задавать в
<SocialHyperlink href={PUBLIC_TS_DISCORD}>
сообществе Tea Sanctuary
</SocialHyperlink>. Там же можете написать личное сообщение администраторам.
</div>
<br />
<div class="text-justify">
Наши соцсети и почту для более важных обращений можно найти на странице
<SocialHyperlink href="/contact">Контакты</SocialHyperlink>.
</div>
</section>
</div>
</section>
<article
class="prose
sm:prose-xl
prose-slate
prose-code:break-words
prose-pre:drop-shadow-md
prose-headings:font-disket
prose-headings:my-4
prose-headings:font-bold
prose-headings:text-slate-950
prose-h1:text-2xl
prose-h1:sm:text-4xl
prose-h2:text-xl
prose-h2:sm:text-3xl
prose-p:text-justify
prose-p:mt-0
prose-p:mb-8
bg-slate-50
pt-8
pb-4
text-base
text-slate-950
px-2 sm:px-4 sm:text-xl"
>
<section class="flex max-w-5xl flex-col flex-nowrap mx-auto">
<svelte:component this={data.content} />
</section>
</article>
<style>
@import '$src/app.css';

17
src/routes/+page.ts Normal file
View file

@ -0,0 +1,17 @@
import { fetchPostsSorted, sortPostsByPostAndUpdateDate } from "$src/lib/util/Blogs";
const LATEST_POSTS_COUNT = 3;
export async function load() {
let md: any
try {
md = await import("$src/pages/index.md");
} catch (ex) {
throw "Не удалось найти текст для главной страницы";
}
console.log("TEST", md.default);
return {
content: md.default,
posts: (await fetchPostsSorted(sortPostsByPostAndUpdateDate)).slice(0, LATEST_POSTS_COUNT)
};
}