This commit is contained in:
uwap 2026-01-20 15:43:05 +01:00
commit f5d9aece1e
13 changed files with 313 additions and 0 deletions

4
.envrc Normal file
View file

@ -0,0 +1,4 @@
if command -v nix-shell &> /dev/null
then
use flake
fi

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
_site
_cache
.env
.direnv

5
_cms.ts Normal file
View file

@ -0,0 +1,5 @@
import lumeCMS from "lume/cms/mod.ts";
const cms = lumeCMS();
export default cms;

78
_components/aboutme.vto Normal file
View file

@ -0,0 +1,78 @@
---
css: |
.aboutme {
display: flex;
margin: 3em auto;
background: rgba(0, 0, 0, 0.5);
width: 48rem;
min-width: 524px;
border: 3px ridge #8C2;
}
.aboutme h1 {
font-size: 4em;
}
.aboutme a {
color: #FFF;
text-decoration: none;
}
.aboutme > .text > p.intro {
font-size: 2em;
color: #9C8;
}
.aboutme > div.ava > img {
border-radius: 160px;
margin: 1.5ex;
margin-bottom: .5ex;
}
.aboutme > .text {
flex: 1;
padding-left: 2em;
}
.aboutme > .text > h1 {
margin: 1.5ex;
color: #9F4;
}
.aboutme > * > .socials > a.pronouns {
color: #fff;
font-size: 2em;
baseline: bottom;
display: block;
margin-bottom: 1em;
}
.aboutme > * > .socials > a.pronouns > img {
vertical-align: middle;
filter: invert(81%) sepia(55%) saturate(634%) hue-rotate(39deg) brightness(91%) contrast(89%);
}
.aboutme > * > .socials {
margin: 1em;
margin-top: 0;
}
.aboutme > * > .socials img {
filter: invert(81%) sepia(55%) saturate(634%) hue-rotate(39deg) brightness(91%) contrast(89%);
}
.aboutme > * > .socials a {
margin-right: .75ex;
}
---
<div class="aboutme">
<div class="ava">
<img src="img/ava.jpeg" width="256" height="256" />
<div class="socials">
<a href="{{ pronounsDB }}" target="_blank" class="pronouns">
<img src="{{ "transgender:solid" |> icon("fontawesome") }}" width="48" height="48" />
{{ pronouns }}
</a>
<a href="{{ mastodon }}" target="_blank">
<img src="{{ "mastodon:brands" |> icon("fontawesome") }}" width="48" height="48" />
</a>
<a href="{{ git }}" target="_blank">
<img src="{{ "git:brands" |> icon("fontawesome") }}" width="48" height="48" />
</a>
</div>
</div>
<div class="text">
<h1>{{ h1 }}</h1>
<p class="intro">{{ intro }}</p>
<p></p>
</div>
</div>

11
_config.ts Normal file
View file

@ -0,0 +1,11 @@
import lume from "lume/mod.ts";
import sass from "lume/plugins/sass.ts";
import icons from "lume/plugins/icons.ts";
const site = lume();
site.use(sass());
site.use(icons());
site.add("styles.scss");
site.add("img");
export default site;

15
_includes/layout.vto Normal file
View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>My first page</title>
<link rel="stylesheet" href="/styles.css" />
<link rel="stylesheet" href="/style.css" />
</head>
<body>
<div id="appbar">
<a href="/">Home</a>
</div>
{{ content }}
</body>
</html>

View file

@ -0,0 +1,32 @@
html {
min-width: 100%;
min-height: 100%;
margin: 0;
padding: 0;
body {
margin: 0;
padding: 0;
background: #1980a8;
background: linear-gradient(164deg,rgba(25, 128, 168, 1) 0%, rgba(87, 199, 133, 1) 50%, rgba(203, 207, 153, 1) 100%);
#appbar {
height: 6em;
background: #196089;
border-bottom: 1px solid #444;
box-shadow: 0 0 2px 0 #000;
line-height: 6em;
padding: 0 1em;
& > a {
color: #fff;
font-size: 3em;
text-align: center;
weight: bold;
}
}
}
a {
cursor: pointer;
text-decoration: none;
}
}

70
deno.json Normal file
View file

@ -0,0 +1,70 @@
{
"imports": {
"lume/": "https://cdn.jsdelivr.net/gh/lumeland/lume@3.1.4/",
"lume/jsx-runtime": "https://cdn.jsdelivr.net/gh/oscarotero/ssx@0.1.14/jsx-runtime.ts",
"lume/cms/": "https://cdn.jsdelivr.net/gh/lumeland/cms@0.14.11/"
},
"permissions": {
"lume": {
"read": true,
"write": [
"./"
],
"import": [
"cdn.jsdelivr.net:443",
"jsr.io:443",
"deno.land:443",
"esm.sh:443"
],
"net": [
"0.0.0.0",
"cdn.jsdelivr.net:443",
"data.jsdelivr.com:443",
"jsr.io:443",
"deno.land:443",
"esm.sh:443",
"registry.npmjs.org:443"
],
"env": true,
"run": true,
"ffi": true,
"sys": true
}
},
"tasks": {
"lume": {
"description": "Run Lume command",
"command": "deno run -P=lume lume/cli.ts"
},
"build": {
"description": "Build the site for production",
"command": "deno task lume"
},
"serve": {
"description": "Run and serve the site for development",
"command": "deno task lume -s"
}
},
"compilerOptions": {
"types": [
"lume/types.ts"
],
"jsx": "react-jsx",
"jsxImportSource": "lume"
},
"unstable": [
"temporal",
"fmt-component"
],
"lint": {
"plugins": [
"https://cdn.jsdelivr.net/gh/lumeland/lume@3.1.4/lint.ts"
],
"rules": {
"exclude": [
"no-import-prefix"
]
}
},
"lock": false
}

61
flake.lock generated Normal file
View file

@ -0,0 +1,61 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1768874166,
"narHash": "sha256-oocBqE1/0hqog1iUNLHtz6OLclTY0QjIC+GsCe+gcFI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "6bbe2a9fadf324fb98714ee19d60632c094a0b32",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

21
flake.nix Normal file
View file

@ -0,0 +1,21 @@
{
description = "A prisma test project";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/master";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = nixpkgs.legacyPackages.${system};
in {
devShells.default = pkgs.mkShell {
nativeBuildInputs = [ pkgs.bashInteractive ];
buildInputs = with pkgs; [
deno
];
shellHook = with pkgs; ''
alias build="deno bundle --platform=browser index.html --outdir dist"
alias serve="deno run -ENR jsr:@std/http/file-server dist/"
'';
};
});
}

BIN
img/ava.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

11
index.vto Normal file
View file

@ -0,0 +1,11 @@
---
layout: layout.vto
---
{{ await comp.aboutme({
h1: "👋🏻 Hi!",
intro: "I'm uwap and I like to:<br/>&nbsp; 🍲 cook<br/>&nbsp; 🧑🏼‍💻 code<br/><br/>I post about both these things here in my blog.",
mastodon: "https://queerchen.de/@uwap",
git: "https://git.uwap.name/uwap",
pronouns: "they/them",
pronounsDB: "https://en.pronouns.page/@uwap",
}) }}

1
styles.scss Normal file
View file

@ -0,0 +1 @@
@use "sass/layout";