From 7a3eaca067b6e9e0f42380ef5a1e7b88f4524fe3 Mon Sep 17 00:00:00 2001 From: Midou36O Date: Fri, 29 Dec 2023 16:14:25 +0100 Subject: [PATCH] Restore the blog. Now fully working. --- .gitmodules | 3 + package.json | 11 +- src/lib/blog/+post.svelte | 106 +++++++++++++++ src/lib/blog/codeblock.css | 122 +++++++++++++++++ src/lib/blog/components.svelte | 3 + src/lib/navi.svelte | 2 - src/lib/types.ts | 10 ++ src/lib/utils.js | 19 +++ src/routes/+layout.server.ts | 1 + src/routes/+page.svelte | 181 ++++++++++++++++--------- src/routes/about/+page.svelte | 134 +++++++++--------- src/routes/api/posts/+server.ts | 30 ++++ src/routes/blog/+page.svelte | 120 ++++++++++++---- src/routes/blog/+page.ts | 7 + src/routes/blog/[slug]/+page.svelte | 88 ++++++++++++ src/routes/blog/[slug]/+page.ts | 15 ++ src/routes/blog/posts/mds/firstblog.md | 35 +++++ src/routes/projects/+page.svelte | 152 +++++++++++---------- src/routes/rss.xml/+server.ts | 35 +++++ svelte.config.js | 29 +++- vite.config.ts | 18 +-- 21 files changed, 886 insertions(+), 235 deletions(-) create mode 100644 .gitmodules create mode 100644 src/lib/blog/+post.svelte create mode 100644 src/lib/blog/codeblock.css create mode 100644 src/lib/blog/components.svelte create mode 100644 src/lib/types.ts create mode 100644 src/lib/utils.js create mode 100644 src/routes/+layout.server.ts create mode 100644 src/routes/api/posts/+server.ts create mode 100644 src/routes/blog/+page.ts create mode 100644 src/routes/blog/[slug]/+page.svelte create mode 100644 src/routes/blog/[slug]/+page.ts create mode 100644 src/routes/blog/posts/mds/firstblog.md create mode 100644 src/routes/rss.xml/+server.ts diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..d68a3eb --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "blog/themes/ananke"] + path = blog/themes/ananke + url = https://github.com/theNewDynamic/gohugo-theme-ananke.git diff --git a/package.json b/package.json index 0fc72ef..d4dbbcb 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,15 @@ "type": "module", "dependencies": { "@unocss/reset": "^0.48.5", - "dayjs": "^1.11.9" + "dayjs": "^1.11.9", + "github-markdown-css": "^5.5.0", + "katex": "^0.16.9", + "mathjax": "^3.2.2", + "mdsvex": "^0.11.0", + "rehype-katex": "^7.0.0", + "rehype-mathjax": "^6.0.0", + "remark-math": "^6.0.0", + "remark-rehype": "^11.0.0", + "shiki": "^0.14.7" } } diff --git a/src/lib/blog/+post.svelte b/src/lib/blog/+post.svelte new file mode 100644 index 0000000..f8abb6b --- /dev/null +++ b/src/lib/blog/+post.svelte @@ -0,0 +1,106 @@ + + +
+ +
+ + diff --git a/src/lib/blog/codeblock.css b/src/lib/blog/codeblock.css new file mode 100644 index 0000000..ec98eb3 --- /dev/null +++ b/src/lib/blog/codeblock.css @@ -0,0 +1,122 @@ +/** + * Dracula Theme originally by Zeno Rocha [@zenorocha] + * https://draculatheme.com/ + * + * Ported for PrismJS by Albert Vallverdu [@byverdu] + */ + +code[class*='language-'], +pre[class*='language-'] { + color: #f8f8f2; + background: none; + text-shadow: 0 1px rgba(0, 0, 0, 0.3); + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +/* Code blocks */ +pre[class*='language-'] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; + border-radius: 0.3em; +} + +:not(pre) > code[class*='language-'], +pre[class*='language-'] { + background: #282a36; +} + +/* Inline code */ +:not(pre) > code[class*='language-'] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #6272a4; +} + +.token.punctuation { + color: #f8f8f2; +} + +.namespace { + opacity: 0.7; +} + +.token.property, +.token.tag, +.token.constant, +.token.symbol, +.token.deleted { + color: #ff79c6; +} + +.token.boolean, +.token.number { + color: #bd93f9; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #50fa7b; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string, +.token.variable { + color: #f8f8f2; +} + +.token.atrule, +.token.attr-value, +.token.function, +.token.class-name { + color: #f1fa8c; +} + +.token.keyword { + color: #8be9fd; +} + +.token.regex, +.token.important { + color: #ffb86c; +} + +.token.important, +.token.bold { + font-weight: bold; +} + +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} diff --git a/src/lib/blog/components.svelte b/src/lib/blog/components.svelte new file mode 100644 index 0000000..81b4bb0 --- /dev/null +++ b/src/lib/blog/components.svelte @@ -0,0 +1,3 @@ +

+ +

diff --git a/src/lib/navi.svelte b/src/lib/navi.svelte index 1af1df3..09faa24 100644 --- a/src/lib/navi.svelte +++ b/src/lib/navi.svelte @@ -1,5 +1,4 @@ + import data from '$lib/data.json'; + import { fly } from 'svelte/transition'; + import { quintOut } from 'svelte/easing'; + - -
- -
-
-
-

{data.name}

-

{@html data.description}

-
-
-
- -
-
-
-
- - - - - -
-
- -
- - - - - - -
- + +
+ +
+
+
+

{data.name}

+

{@html data.description}

+
+
+
+ +
+ +
+
+
+ + + +