Compare commits
2 Commits
dev
...
00a352d364
| Author | SHA1 | Date | |
|---|---|---|---|
| 00a352d364 | |||
| daa2e6a426 |
@@ -1,24 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
name: Gitea Actions Demo
|
|
||||||
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
Build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
|
|
||||||
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
|
|
||||||
- run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
|
|
||||||
- name: Check out repository code
|
|
||||||
uses: actions/checkout@v5
|
|
||||||
- run: |
|
|
||||||
cd ${{ gitea.workspace }}
|
|
||||||
- run: npm i
|
|
||||||
- run: npm run build
|
|
||||||
- run: ls build
|
|
||||||
- run: echo "🍏 This job's status is ${{ job.status }}."
|
|
||||||
@@ -1,12 +1,9 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import favicon from '$lib/assets/favicon.svg';
|
import favicon from '$lib/assets/favicon.svg';
|
||||||
import '/node_modules/@rose-pine/palette/dist/css/rose-pine-hsl.css';
|
import '/node_modules/@rose-pine/palette/dist/css/rose-pine-hsl.css';
|
||||||
import '/node_modules/@rose-pine/palette/dist/css/rose-pine-hsl.css';
|
|
||||||
import 'prism-rose-pine/dist/prism-rose-pine-moon.css';
|
import 'prism-rose-pine/dist/prism-rose-pine-moon.css';
|
||||||
import './style.css';
|
import './style.css';
|
||||||
|
|
||||||
import './style.css';
|
|
||||||
|
|
||||||
let { children } = $props();
|
let { children } = $props();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -14,16 +11,11 @@
|
|||||||
<link rel="icon" href={favicon} />
|
<link rel="icon" href={favicon} />
|
||||||
</svelte:head>
|
</svelte:head>
|
||||||
|
|
||||||
<nav>
|
<div class="nav">
|
||||||
<a href="/">Home</a>
|
<a class="nav" href="/">Home</a>
|
||||||
<a href="/about">About</a>
|
<a class="nav" href="/about">About</a>
|
||||||
<a href="https://bsky.app/profile/amyt3a.bsky.social"
|
</div>
|
||||||
><svg fill="none" class="bsky" viewBox="0 0 64 57"
|
|
||||||
><path
|
<div class="main">
|
||||||
fill="var(--rp-moon-pine)"
|
|
||||||
d="M13.873 3.805C21.21 9.332 29.103 20.537 32 26.55v15.882c0-.338-.13.044-.41.867-1.512 4.456-7.418 21.847-20.923 7.944-7.111-7.32-3.819-14.64 9.125-16.85-7.405 1.264-15.73-.825-18.014-9.015C1.12 23.022 0 8.51 0 6.55 0-3.268 8.579-.182 13.873 3.805ZM50.127 3.805C42.79 9.332 34.897 20.537 32 26.55v15.882c0-.338.13.044.41.867 1.512 4.456 7.418 21.847 20.923 7.944 7.111-7.32 3.819-14.64-9.125-16.85 7.405 1.264 15.73-.825 18.014-9.015C62.88 23.022 64 8.51 64 6.55c0-9.818-8.578-6.732-13.873-2.745Z"
|
|
||||||
></path></svg
|
|
||||||
></a
|
|
||||||
>
|
|
||||||
</nav>
|
|
||||||
{@render children?.()}
|
{@render children?.()}
|
||||||
|
</div>
|
||||||
|
|||||||
@@ -3,36 +3,27 @@
|
|||||||
import type { SvelteComponent } from 'svelte';
|
import type { SvelteComponent } from 'svelte';
|
||||||
import './style-entries.css';
|
import './style-entries.css';
|
||||||
|
|
||||||
let blog_entries: [string, SvelteComponent][] = Object.entries(
|
const blog_entries: [string, SvelteComponent][] = Object.entries(
|
||||||
import.meta.glob('/src/routes/blogs/**/+page.svx', { eager: true })
|
import.meta.glob('/src/routes/blogs/**/+page.svx', { eager: true })
|
||||||
).map(([key, value]) => [
|
).map(([key, value]) => [
|
||||||
key.split('/src/routes').pop()?.split('/+page.svx').slice(0, -1).pop() as string,
|
key.split('/src/routes').pop()?.split('/+page.svx').slice(0, -1).pop() as string,
|
||||||
value as MDsveXComponent
|
value as MDsveXComponent
|
||||||
]).map(([link,val])=>
|
]);
|
||||||
typeof val.metadata?.src !== 'undefined' ? [val.metadata?.src, val] : [link,val]
|
|
||||||
).map(([link,val])=>{
|
|
||||||
if(val.metadata)
|
|
||||||
val.metadata.date = Date.parse(val.metadata?.date);
|
|
||||||
return [link,val];
|
|
||||||
}
|
|
||||||
).sort(([link1,a],[link2,b])=>b.metadata?.date-a.metadata?.date);
|
|
||||||
console.log(blog_entries);
|
console.log(blog_entries);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<main>
|
<main>
|
||||||
<div class="start">
|
|
||||||
<h1>Welcome to SvelteKit</h1>
|
<h1>Welcome to SvelteKit</h1>
|
||||||
<p>
|
<p>
|
||||||
Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation
|
Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation
|
||||||
</p>
|
</p>
|
||||||
</div>
|
|
||||||
{#each blog_entries as [href, page]}
|
{#each blog_entries as [href, page]}
|
||||||
<a {href}>
|
<a {href}>
|
||||||
<div class="blog-entry">
|
<div class="blog-entry" {href}>
|
||||||
<div>
|
<div>
|
||||||
<h4>{page.metadata?.title}</h4>
|
<h4>{page.metadata?.title}</h4>
|
||||||
<p>{page.metadata?.desc}</p>
|
<p>{page.metadata?.desc}</p>
|
||||||
<p class="date">{new Date(page.metadata?.date).toDateString()}</p>
|
<p class="date">{new Date(Date.parse(page.metadata?.date)).toDateString()}</p>
|
||||||
</div>
|
</div>
|
||||||
<img src="blog-1.png" class="blog-image" />
|
<img src="blog-1.png" class="blog-image" />
|
||||||
</div>
|
</div>
|
||||||
@@ -41,55 +32,3 @@
|
|||||||
<!-- svelte:component this={page.default} /-->
|
<!-- svelte:component this={page.default} /-->
|
||||||
{/each}
|
{/each}
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<style>
|
|
||||||
|
|
||||||
.start {
|
|
||||||
padding: var(--d2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.blog-entry {
|
|
||||||
background: var(--rp-moon-surface);
|
|
||||||
border-radius: var(--border-round);
|
|
||||||
width: 100%;
|
|
||||||
color: var(--rp-moon-text);
|
|
||||||
display: flex;
|
|
||||||
flex-flow: row wrap;
|
|
||||||
box-shadow: 0px 0px 1rem 0px hsl(from var(--rp-moon-base) h s calc(l * 0.75));
|
|
||||||
transition: 0.2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.blog-entry:hover {
|
|
||||||
box-shadow: 0px 0px 1rem 0px hsl(from var(--rp-moon-base) h s calc(l * 0.55));
|
|
||||||
background: var(--rp-moon-overlay);
|
|
||||||
transition: 0.2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.blog-entry div {
|
|
||||||
width: calc(100% - 15rem - var(--d2) * 2);
|
|
||||||
padding: var(--d2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.blog-entry img {
|
|
||||||
width: 15rem;
|
|
||||||
object-fit: cover;
|
|
||||||
border-radius: 0 var(--border-round) var(--border-round) 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (max-width: 700px) {
|
|
||||||
.blog-entry div {
|
|
||||||
width: calc(100% - var(--d2) * 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.blog-entry img {
|
|
||||||
width: 100%;
|
|
||||||
max-height: 14rem;
|
|
||||||
border-radius: 0 0rem var(--border-round) var(--border-round) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.blog-entry h4 {
|
|
||||||
margin-top: 0.5rem;
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
title: "64k Demo"
|
|
||||||
date: 2025-09-15
|
|
||||||
desc: "Dev Diary of the Demo"
|
|
||||||
---
|
|
||||||
|
|
||||||
asd
|
|
||||||
@@ -1,138 +0,0 @@
|
|||||||
---
|
|
||||||
title: Setup up Gitea Runner with Podman in LXC
|
|
||||||
desc: "For some time now I already host a gitea instace and now with this blog I finally have some real usage for CI, but setting up gitea actions in an LXC and using Podman instead of Docker Engine was not as straight forward as expected."
|
|
||||||
date: 2025-09-17
|
|
||||||
---
|
|
||||||
|
|
||||||
# Setup PVE
|
|
||||||
|
|
||||||
|
|
||||||
Setup Proxmox, so podman can run in unpreviliged container.
|
|
||||||
Podman uses high user ids for it's containers, so we need to extend the range that is usable by LXCs.
|
|
||||||
|
|
||||||
|
|
||||||
It is also required to change the limit explictly in the containers config, and we need to add a kernel module.
|
|
||||||
Those ranges are defined in `/etc/subuid` for user ids and `/etc/subgid` for group ids,
|
|
||||||
in the from of `<usr>:<start_uid>:<count>`.
|
|
||||||
You could change them manually or change them with
|
|
||||||
|
|
||||||
(the first number defines the start and the secound the end of ids)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
usermod --add-subuids 100000-300000 --add-subgids 100000-300000 root
|
|
||||||
```
|
|
||||||
|
|
||||||
So `/etc/subuid` should contains `root:100000:200000`.
|
|
||||||
|
|
||||||
We also need to edit the LXC config `/etc/pve/lxc/<VMID>.conf`.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# <container_uid> <host_uid> <count>
|
|
||||||
lxc.idmap: u 0 100000 165536 # uids 0..165536 (container) -> 100000..265536 (host)
|
|
||||||
lxc.idmap: g 0 100000 165536 # gids
|
|
||||||
lxc.cgroup2.devices.allow: c 10:200 rwm # cgroup2 for PVE >= 7.0
|
|
||||||
lxc.mount.entry: /dev/net dev/net none bind,create=dir
|
|
||||||
```
|
|
||||||
|
|
||||||
I got the information from [here](https://forum.proxmox.com/threads/podman-in-rootless-mode-on-lxc-container.141790/)
|
|
||||||
together with infos from the [official docu](https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md#etcsubuid-and-etcsubgid-configuration).
|
|
||||||
|
|
||||||
|
|
||||||
# Setup LXC
|
|
||||||
|
|
||||||
As we want to run podman as an unpreviliged user, lets create on:
|
|
||||||
```bash
|
|
||||||
useradd -U <USER_NAME>
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
apt install podman
|
|
||||||
systemctl --user -M act@ enable podman.socket
|
|
||||||
```
|
|
||||||
|
|
||||||
First, since we wanna run this rootless, we need a new unpreviliged user.
|
|
||||||
|
|
||||||
The binary is [here available](https://dl.gitea.com/act_runner/).
|
|
||||||
I placed it there `/usr/local/bin/act_runner` and made it executable by the new created user.
|
|
||||||
```bash
|
|
||||||
cd /usr/local/bin
|
|
||||||
curl https://dl.gitea.com/act_runner/0.2.13/act_runner-0.2.13-linux-amd64 > act_runner
|
|
||||||
chmod +x act_runner
|
|
||||||
chown act:act act_runner
|
|
||||||
```
|
|
||||||
|
|
||||||
A config that references the regrister file and the podman socket is needed, I placed it in
|
|
||||||
`/etc/act_runner/config.yaml`
|
|
||||||
|
|
||||||
``` bash
|
|
||||||
mkdir /etc/act_runner
|
|
||||||
chown -R act:act /etc/act_runner
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# config.yaml
|
|
||||||
runner:
|
|
||||||
file: /etc/act_runner/.runner
|
|
||||||
envs:
|
|
||||||
XDG_RUNTIME_DIR directory: "/run/user/1000"
|
|
||||||
|
|
||||||
container:
|
|
||||||
docker_host: "unix:///run/user/<USER_ID>/podman/docker.sock"
|
|
||||||
|
|
||||||
cache:
|
|
||||||
# Enable cache server to use actions/cache.
|
|
||||||
enabled: true
|
|
||||||
# The directory to store the cache data.
|
|
||||||
# If it's empty, the cache data will be stored in $HOME/.cache/actcache.
|
|
||||||
dir: "/etc/act_runner/cache"
|
|
||||||
```
|
|
||||||
|
|
||||||
And last but not least, we need to regristrate the runner, wich will create the runner file:
|
|
||||||
The token is accsasible through `Settings -> Actions -> Runners -> Create new Runner`.
|
|
||||||
|
|
||||||
(I'd recommend running the regristration as the unpreviliged user.)
|
|
||||||
```bash
|
|
||||||
/usr/local/bin/act_runner register -c /etc/act_runner/config.yaml \
|
|
||||||
--instance <GITEA ADRESS> --token <TOKEN>
|
|
||||||
--no-interactive
|
|
||||||
```
|
|
||||||
|
|
||||||
### Create Act Runner User Service
|
|
||||||
Create a user service in in the following file: `/usr/lib/systemd/user/act_runner.servic`
|
|
||||||
```ini
|
|
||||||
Description=Gitea Actions runner
|
|
||||||
Documentation=https://gitea.com/gitea/act_runner
|
|
||||||
After=podman.socket
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=/usr/local/bin/act_runner daemon -c /etc/act_runner/config.yaml
|
|
||||||
Delegate=true
|
|
||||||
Type=simple
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target
|
|
||||||
```
|
|
||||||
|
|
||||||
## Auto start user Services
|
|
||||||
|
|
||||||
To start the user services, you can add a drop-in and add the Install, by running:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
systemctl edit user@1001 --drop-in=start_act_runner
|
|
||||||
```
|
|
||||||
|
|
||||||
and inserting
|
|
||||||
|
|
||||||
```ini
|
|
||||||
[Unit]
|
|
||||||
After=gitea.service
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
```
|
|
||||||
|
|
||||||
In the end, all left to do is, enable the user:
|
|
||||||
```bash
|
|
||||||
systemctl status user@1001
|
|
||||||
```
|
|
||||||
@@ -1,9 +1,6 @@
|
|||||||
<script context="module">
|
<script context="module">
|
||||||
import img from './img.svelte';
|
import img from './img.svelte';
|
||||||
import h1 from './h1.svelte';
|
export { img };
|
||||||
import h2 from './h2.svelte';
|
|
||||||
import h3 from './h3.svelte';
|
|
||||||
export { img, h1, h2, h3 };
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -12,13 +9,14 @@
|
|||||||
export let desc;
|
export let desc;
|
||||||
|
|
||||||
let ddate = new Date(Date.parse(date));
|
let ddate = new Date(Date.parse(date));
|
||||||
|
import './style-blog.css';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
export let alt;
|
||||||
|
|
||||||
|
<h1>{title}</h1>
|
||||||
<main>
|
<main>
|
||||||
<div class="title">
|
<p class="date">Last updated {ddate.toDateString()}</p>
|
||||||
<!-- prettier-ignore -->
|
|
||||||
<h1>{title}</h1><p class="date">Last updated {ddate.toDateString()}</p>
|
|
||||||
</div>
|
|
||||||
<div class="blog-text">
|
<div class="blog-text">
|
||||||
<p>{desc}</p>
|
<p>{desc}</p>
|
||||||
<slot>
|
<slot>
|
||||||
@@ -29,53 +27,6 @@
|
|||||||
|
|
||||||
<style>
|
<style>
|
||||||
main {
|
main {
|
||||||
padding: 0;
|
background-color: var(--rp-moon-surface);
|
||||||
border-radius: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
padding: 0 var(--d3) 0;
|
|
||||||
#display: table;
|
|
||||||
flex-wrap: row;
|
|
||||||
#height: 5rem;
|
|
||||||
margin-bottom: -12px;
|
|
||||||
#white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title h1 {
|
|
||||||
width: calc(100% - 15rem);
|
|
||||||
margin: 0;
|
|
||||||
vertical-align: baseline;
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title p {
|
|
||||||
width: 15rem;
|
|
||||||
display: inline-block;
|
|
||||||
text-align: right;
|
|
||||||
margin: 0;
|
|
||||||
#float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (max-width: 700px) {
|
|
||||||
.title {
|
|
||||||
margin-bottom: -5.3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title h1 {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title p {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.blog-text {
|
|
||||||
border-radius: var(--border-round);
|
|
||||||
background: var(--rp-moon-surface);
|
|
||||||
box-shadow: 0px 0px 0.5rem 0px hsl(from var(--rp-moon-pine) h calc(s * 0.5) calc(l * 0.25));
|
|
||||||
padding: var(--d2) var(--d3) var(--d4);
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Flame Demo"
|
|
||||||
date: 2024-11-26
|
|
||||||
src: "https://madeio.net/fox"
|
|
||||||
desc: "A WebGL Project wich shows that deffered rendering and volumetric fog is very possible in Three.js"
|
|
||||||
---
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
<h2><slot /></h2>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
<h3><slot /></h3>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
<h4><slot /></h4>
|
|
||||||
@@ -1,12 +1,13 @@
|
|||||||
---
|
---
|
||||||
title: "The creation of this Blog"
|
title: "The creation of this Blog"
|
||||||
|
layout: blog
|
||||||
date: 2025-09-12
|
date: 2025-09-12
|
||||||
desc: "The goal was to create an easy to maintain blog with while the main focus relays on keeping the effort
|
desc: "The goal was to create an easy to maintain blog with while the main focus relays on keeping the effort
|
||||||
to write new posts minimal. This is more a ressource summery with tips, than an full tutorial."
|
to write new posts minimal. This is more a ressource summery with tips, than an full tutorial."
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
# Static side generation
|
## Static side generation
|
||||||
The stack consists of:
|
The stack consists of:
|
||||||
- [svelte + svelte-kit](https://svelte.dev/docs/kit/introduction)
|
- [svelte + svelte-kit](https://svelte.dev/docs/kit/introduction)
|
||||||
- [mdsvex](https://mdsvex.pngwn.io/)
|
- [mdsvex](https://mdsvex.pngwn.io/)
|
||||||
@@ -16,7 +17,7 @@ The core functionallity provides which allow you to combine svelte and markdown.
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
# Image sizing
|
## Image sizing
|
||||||
|
|
||||||
I want to be able to rezise an image in markdown without using HTML,
|
I want to be able to rezise an image in markdown without using HTML,
|
||||||
just like in obsidian, by declaring the width after the alt text ``.
|
just like in obsidian, by declaring the width after the alt text ``.
|
||||||
@@ -46,7 +47,7 @@ And then needs to be imported in the mdsvex layout:
|
|||||||
This is desctibed in furhter details by the [mdsvex docs](https://mdsvex.pngwn.io/docs#custom-components)
|
This is desctibed in furhter details by the [mdsvex docs](https://mdsvex.pngwn.io/docs#custom-components)
|
||||||
and this [issue](https://github.com/pngwn/MDsveX/discussions/292).
|
and this [issue](https://github.com/pngwn/MDsveX/discussions/292).
|
||||||
|
|
||||||
# Colors
|
## Colors
|
||||||
|
|
||||||
I love the [rose pine](https://rosepinetheme.com/) color palette. I use it privatly for some applications,
|
I love the [rose pine](https://rosepinetheme.com/) color palette. I use it privatly for some applications,
|
||||||
and think it improves this blog too.
|
and think it improves this blog too.
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: "FemDev GameJam - Catastrophe"
|
title: "FemDev GameJam - Catrastrophe"
|
||||||
date: 2024-11-10
|
date: 2024-11-10
|
||||||
src: "https://elkortes.itch.io/catastrophe"
|
src: "https://elkortes.itch.io/catastrophe"
|
||||||
desc: "I took part in the amazing FemDev Game and helped to creathe this little game.
|
desc: "I took part in the amazing FemDev Game and helped to creathe this little game.
|
||||||
@@ -1,58 +1,12 @@
|
|||||||
@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,100..900;1,9..144,100..900&display=swap');
|
@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,100..900;1,9..144,100..900&display=swap');
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'fira';
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 500;
|
|
||||||
src: url('/fonts/FiraCode-Regular.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Fraunces';
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 100 900;
|
|
||||||
src: url('/fonts/Fraunces.woff2') format('woff2');
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Inter';
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 400;
|
|
||||||
src: url('/fonts/Inter.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
:root{
|
|
||||||
--d1:1.0rem;
|
|
||||||
--d2:1.5rem;
|
|
||||||
--d3:2.25rem;
|
|
||||||
--d4:3.375rem;
|
|
||||||
--d5:5.0625rem;
|
|
||||||
--d6:7.59375rem;
|
|
||||||
--d7:11.390625rem;
|
|
||||||
--d8:17.0859375rem;
|
|
||||||
--d9:25.62890625rem;
|
|
||||||
--d10:38.443359375rem;
|
|
||||||
|
|
||||||
--border-round:var(--d2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
body {
|
body {
|
||||||
color: var(--rp-moon-text);
|
color: var(--rp-moon-text);
|
||||||
background: var(--rp-moon-base);
|
background: var(--rp-moon-base);
|
||||||
padding: 0;
|
padding: 0;
|
||||||
max-width: 60rem;
|
margin: 0;
|
||||||
width:100%;
|
|
||||||
margin: auto;
|
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
font-family: Inter;
|
|
||||||
}
|
|
||||||
|
|
||||||
code {
|
|
||||||
background: var(--rp-moon-base);
|
|
||||||
padding: 3px;
|
|
||||||
border-radius: 0.5rem;
|
|
||||||
font-family: fira;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pre {
|
pre {
|
||||||
@@ -60,28 +14,23 @@ pre {
|
|||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
pre code{
|
|
||||||
padding:0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: var(--rp-moon-iris);
|
color: var(--rp-moon-iris);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
&:visited {
|
a:visited {
|
||||||
color: hsl(from var(--rp-moon-iris) h s calc(l * 0.85))
|
color: hsl(from var(--rp-moon-iris) h s calc(l * 0.85))
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
h1,h2,h3,h4,p:first-child {
|
|
||||||
#margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nav {
|
.nav {
|
||||||
|
margin: auto;
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
|
|
||||||
padding: 0 var(--d3) 0;
|
padding: 1rem;
|
||||||
|
max-width: 60rem;
|
||||||
|
width: calc(100% - 2rem);
|
||||||
|
|
||||||
font-family: "Fraunces", serif;
|
font-family: "Fraunces", serif;
|
||||||
font-optical-sizing: auto;
|
font-optical-sizing: auto;
|
||||||
@@ -93,39 +42,32 @@ nav {
|
|||||||
font-size:1.728rem;
|
font-size:1.728rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
nav a{
|
a.nav{
|
||||||
margin: 1rem;
|
margin: 1rem;
|
||||||
margin-left: 0rem;
|
margin-left: 0rem;
|
||||||
padding-left: 0rem;
|
padding-left: 0rem;
|
||||||
color: var(--rp-moon-foam);
|
color: var(--rp-moon-foam);
|
||||||
#text-decoration: underline;
|
#text-decoration: underline;
|
||||||
&:visited {
|
|
||||||
color: var(--rp-moon-foam);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
main {
|
main {
|
||||||
#padding: 0 2rem 2rem;
|
padding: 1rem;
|
||||||
margin-top: var(--d3);
|
margin: auto;
|
||||||
width: 100%;
|
#margin-top: 1rem;
|
||||||
|
max-width: 60rem;
|
||||||
|
width: calc(100% - 2rem);
|
||||||
#box-shadow: 0px 0px 1rem 0px hsl(from var(--rp-moon-base) h s calc(l * 0.85));
|
#box-shadow: 0px 0px 1rem 0px hsl(from var(--rp-moon-base) h s calc(l * 0.85));
|
||||||
}
|
}
|
||||||
|
|
||||||
.date{
|
.date{
|
||||||
text-align: right;
|
text-align: right;
|
||||||
color: var(--rp-moon-subtle);
|
color: var(--rp-moon-subtle)
|
||||||
font-family: Fraunces;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
hr {
|
hr {
|
||||||
color: var(--rp-moon-muted);
|
color: var(--rp-moon-muted);
|
||||||
}
|
}
|
||||||
|
|
||||||
.bsky{
|
|
||||||
display:block;
|
|
||||||
height: 2rem;
|
|
||||||
float:right;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1{font-size: 2.986rem}
|
h1{font-size: 2.986rem}
|
||||||
h2{font-size: 2.488rem}
|
h2{font-size: 2.488rem}
|
||||||
@@ -144,7 +86,7 @@ h4{font-size: 1.728rem}
|
|||||||
}
|
}
|
||||||
|
|
||||||
h4{
|
h4{
|
||||||
color: var(--rp-moon-foam);
|
color: var(--rp-moon-rose);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -10,15 +10,13 @@ const __dirname = dirname(__filename);
|
|||||||
|
|
||||||
const path_to_layout = join(__dirname, './src/routes/blogs/blog.svelte');
|
const path_to_layout = join(__dirname, './src/routes/blogs/blog.svelte');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** @type {import('@sveltejs/kit').Config} */
|
/** @type {import('@sveltejs/kit').Config} */
|
||||||
const config = {
|
const config = {
|
||||||
// Consult https://svelte.dev/docs/kit/integrations
|
// Consult https://svelte.dev/docs/kit/integrations
|
||||||
// for more information about preprocessors
|
// for more information about preprocessors
|
||||||
preprocess: [vitePreprocess(), mdsvex({
|
preprocess: [vitePreprocess(), mdsvex({
|
||||||
layout: {
|
layout: {
|
||||||
_: path_to_layout
|
blog: path_to_layout
|
||||||
}
|
}
|
||||||
})],
|
})],
|
||||||
kit: {
|
kit: {
|
||||||
|
|||||||
Reference in New Issue
Block a user