Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 748f52241f | |||
| 21e1469b51 | |||
| 649102d1aa |
@@ -5,6 +5,8 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- "main"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
|
||||
@@ -20,7 +20,7 @@ bun run build
|
||||
- [x] build with github actions
|
||||
- [x] config in sub repo
|
||||
- [x] copyright
|
||||
- [ ] nav bar on top
|
||||
- [x] nav bar on top
|
||||
- [ ] date updated
|
||||
- [ ] archive page
|
||||
- [ ] about page
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"": {
|
||||
"name": "md-blog",
|
||||
"dependencies": {
|
||||
"@keithclark/shaderview": "git+https://github.com/keithclark/shaderview",
|
||||
"highlight.js": "^11.11.1",
|
||||
"katex": "^0.16.45",
|
||||
"lucide": "^1.11.0",
|
||||
@@ -210,6 +211,8 @@
|
||||
|
||||
"@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="],
|
||||
|
||||
"@keithclark/shaderview": ["@keithclark/shaderview@github:keithclark/shaderview#fee0cf0", {}, "keithclark-shaderview-fee0cf0"],
|
||||
|
||||
"@mermaid-js/parser": ["@mermaid-js/parser@1.1.0", "", { "dependencies": { "langium": "^4.0.0" } }, "sha512-gxK9ZX2+Fex5zu8LhRQoMeMPEHbc73UKZ0FQ54YrQtUxE1VVhMwzeNtKRPAu5aXks4FasbMe4xB4bWrmq6Jlxw=="],
|
||||
|
||||
"@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow=="],
|
||||
|
||||
+2
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "md-blog",
|
||||
"version": "1.3.0",
|
||||
"version": "1.5.0",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"repository": "https://github.com/klemek/md-blog",
|
||||
@@ -17,6 +17,7 @@
|
||||
"format": "prettier --write src/ *.ts *.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"@keithclark/shaderview": "git+https://github.com/keithclark/shaderview",
|
||||
"highlight.js": "^11.11.1",
|
||||
"katex": "^0.16.45",
|
||||
"lucide": "^1.11.0",
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
<script setup lang="ts">
|
||||
import { BASE_URL, TITLE, RSS_LINK } from '@/lib/meta'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<nav>
|
||||
<RouterLink to="/" class="nav-title"><span v-html="TITLE"></span></RouterLink>
|
||||
<span class="nav-items">
|
||||
<a :href="BASE_URL + 'atom.xml'" v-html="RSS_LINK"></a>
|
||||
</span>
|
||||
</nav>
|
||||
</template>
|
||||
@@ -1,16 +1,11 @@
|
||||
<script setup lang="ts">
|
||||
import { REPOSITORY, NAME, VERSION, BASE_URL, TITLE, COPYRIGHT } from '@/lib/meta'
|
||||
import { REPOSITORY, NAME, VERSION, TITLE, COPYRIGHT } from '@/lib/meta'
|
||||
import { stripHTML } from '@/lib/strings';
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<template v-if="$route.fullPath != '/'">
|
||||
<RouterLink to="/"><i icon="undo-2"></i> Back to home</RouterLink>
|
||||
</template>
|
||||
<hr />
|
||||
<footer>
|
||||
{{ stripHTML(TITLE) }} © {{ new Date().getFullYear() }}, <span v-html="COPYRIGHT"></span> | Made with
|
||||
<a :href="REPOSITORY">{{ NAME }} {{ VERSION }}</a> |
|
||||
<a :href="BASE_URL + 'atom.xml'"><i icon="rss"></i> RSS</a>
|
||||
<a :href="REPOSITORY">{{ NAME }} {{ VERSION }}</a>
|
||||
</footer>
|
||||
</template>
|
||||
|
||||
@@ -6,4 +6,6 @@ export const REPOSITORY = packageJson.repository
|
||||
export const TITLE = import.meta.env.VITE_APP_TITLE
|
||||
export const SIGNATURE = import.meta.env.VITE_APP_SIGNATURE
|
||||
export const COPYRIGHT = import.meta.env.VITE_APP_COPYRIGHT
|
||||
export const RSS_LINK = import.meta.env.VITE_APP_RSS_LINK
|
||||
export const BACK_LINK = import.meta.env.VITE_APP_BACK_LINK
|
||||
export const BASE_URL = import.meta.env.BASE_URL
|
||||
|
||||
@@ -2,6 +2,9 @@ import { createApp } from 'vue'
|
||||
import App from './App.vue'
|
||||
import router from './router'
|
||||
|
||||
import ShaderviewElement from '@keithclark/shaderview';
|
||||
customElements.define('kc-shaderview', ShaderviewElement);
|
||||
|
||||
const app = createApp(App)
|
||||
|
||||
app.use(router)
|
||||
|
||||
@@ -5,9 +5,10 @@ import { loadArticle } from '@lib/articles'
|
||||
import { useRoute, onBeforeRouteUpdate, type RouteLocation } from 'vue-router'
|
||||
import NotFoundView from './NotFoundView.vue'
|
||||
import { simpleDateFormat } from '@lib/dates'
|
||||
import { SIGNATURE, TITLE } from '@lib/meta'
|
||||
import { BACK_LINK, SIGNATURE, TITLE } from '@lib/meta'
|
||||
import PageFooter from '@components/PageFooter.vue'
|
||||
import { stripHTML } from '@/lib/strings'
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
|
||||
const article = ref<Article | null>(null)
|
||||
const loading = ref<boolean>(true)
|
||||
@@ -34,6 +35,7 @@ onBeforeRouteUpdate(loadPage)
|
||||
</template>
|
||||
<template v-else>
|
||||
<main class="article">
|
||||
<NavBar />
|
||||
<div class="article-header">
|
||||
<RouterLink class="link-home" to="/"><i icon="undo-2">↑</i></RouterLink>
|
||||
<h1 class="article-title" v-html="article.metadata.title"></h1>
|
||||
@@ -50,7 +52,9 @@ onBeforeRouteUpdate(loadPage)
|
||||
</div>
|
||||
<div class="article-text" v-html="article.html"></div>
|
||||
<div class="article-signature" v-html="SIGNATURE"></div>
|
||||
<br />
|
||||
<template v-if="$route.fullPath != '/'">
|
||||
<RouterLink class="link-back" to="/"><span v-html="BACK_LINK"></span></RouterLink>
|
||||
</template>
|
||||
<PageFooter />
|
||||
</main>
|
||||
</template>
|
||||
|
||||
@@ -6,6 +6,7 @@ import { simpleDateFormat } from '@lib/dates'
|
||||
import { TITLE } from '@lib/meta'
|
||||
import PageFooter from '@components/PageFooter.vue'
|
||||
import { stripHTML } from '@/lib/strings'
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
|
||||
const articles = ref<ArticleMetadata[]>([])
|
||||
|
||||
@@ -17,8 +18,8 @@ onBeforeMount(async () => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<main>
|
||||
<h1 class="title" v-html="TITLE"></h1>
|
||||
<main class="home">
|
||||
<NavBar />
|
||||
<template v-for="(metadata, index) in articles" v-bind:key="index">
|
||||
<div v-if="!metadata.draft && metadata.path" class="article-item">
|
||||
<RouterLink :to="metadata.path">
|
||||
|
||||
@@ -11,6 +11,7 @@ onBeforeMount(() => {
|
||||
|
||||
<template>
|
||||
<main>
|
||||
<NavBar />
|
||||
<h1>Page not found</h1>
|
||||
<PageFooter />
|
||||
</main>
|
||||
|
||||
@@ -17,6 +17,8 @@ export default ({ mode }: { mode: string }) => {
|
||||
process.env.VITE_APP_SIGNATURE = articlesConfig['signature']
|
||||
process.env.VITE_CUSTOM_HEAD = articlesConfig['custom_head']
|
||||
process.env.VITE_APP_COPYRIGHT = articlesConfig['copyright']
|
||||
process.env.VITE_APP_RSS_LINK = articlesConfig['rss_link']
|
||||
process.env.VITE_APP_BACK_LINK = articlesConfig['back_link']
|
||||
|
||||
return defineConfig({
|
||||
plugins: [vue(), vueDevTools(), mdPlugin({ mode: [Mode.HTML] })],
|
||||
|
||||
Reference in New Issue
Block a user