engineering blog at https://blog.tangled.sh

style blog

+2
.gitignore
··· 1 1 .direnv/ 2 2 build/ 3 3 static/tw.css 4 + *.ttf 5 + !.gitignore
+17
flake.lock
··· 1 1 { 2 2 "nodes": { 3 + "ia-fonts-src": { 4 + "flake": false, 5 + "locked": { 6 + "lastModified": 1686932517, 7 + "narHash": "sha256-2T165nFfCzO65/PIHauJA//S+zug5nUwPcg8NUEydfc=", 8 + "owner": "iaolo", 9 + "repo": "iA-Fonts", 10 + "rev": "f32c04c3058a75d7ce28919ce70fe8800817491b", 11 + "type": "github" 12 + }, 13 + "original": { 14 + "owner": "iaolo", 15 + "repo": "iA-Fonts", 16 + "type": "github" 17 + } 18 + }, 3 19 "nixpkgs": { 4 20 "locked": { 5 21 "lastModified": 1740673841, ··· 32 48 }, 33 49 "root": { 34 50 "inputs": { 51 + "ia-fonts-src": "ia-fonts-src", 35 52 "nixpkgs": "nixpkgs", 36 53 "vite": "vite" 37 54 }
+13 -3
flake.nix
··· 1 1 { 2 2 description = "site"; 3 3 4 - inputs.nixpkgs.url = "github:nixos/nixpkgs"; 5 - inputs.vite.url = "github:icyphox/go-vite"; 4 + inputs = { 5 + nixpkgs.url = "github:nixos/nixpkgs"; 6 + vite.url = "github:icyphox/go-vite"; 7 + ia-fonts-src = { 8 + url = "github:iaolo/iA-Fonts"; 9 + flake = false; 10 + }; 11 + }; 6 12 7 13 outputs = 8 14 { self 9 15 , nixpkgs 10 16 , vite 11 - , 17 + , ia-fonts-src 12 18 }: 13 19 let 14 20 supportedSystems = [ ··· 35 41 pkgs.entr 36 42 pkgs.tailwindcss 37 43 ]; 44 + shellHook = '' 45 + cp -f ${ia-fonts-src}/"iA Writer Quattro"/Static/*.ttf static/fonts/ 46 + cp -f ${ia-fonts-src}/"iA Writer Mono"/Static/*.ttf static/fonts/ 47 + ''; 38 48 }; 39 49 } 40 50 );
+1 -1
input.css
··· 100 100 @apply text-2xl; 101 101 @apply font-sans; 102 102 @apply text-black; 103 - @apply py-4; 103 + @apply font-bold; 104 104 } 105 105 106 106 ::selection {
static/fonts/.gitignore

This is a binary file and will not be displayed.

+26 -20
tailwind.config.js
··· 1 1 /** @type {import('tailwindcss').Config} */ 2 2 module.exports = { 3 - content: ["./appview/pages/templates/**/*.html"], 4 - theme: { 5 - container: { 6 - padding: "2rem", 7 - center: true, 8 - screens: { 9 - sm: "540px", 10 - md: "650px", 11 - lg: "900px", 12 - xl: "1100px", 13 - "2xl": "1300x", 14 - }, 15 - }, 16 - extend: { 17 - fontFamily: { 18 - sans: ["iA Writer Quattro S", "Inter", "system-ui", "sans-serif", "ui-sans-serif"], 19 - mono: ["iA Writer Mono S", "ui-monospace", "SFMono-Regular", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", "monospace"], 20 - }, 21 - }, 22 - }, 3 + content: ["./templates/**/*.html"], 4 + theme: { 5 + container: { 6 + padding: "2rem", 7 + center: true, 8 + screens: { 9 + sm: "540px", 10 + md: "640px", 11 + lg: "768px", 12 + xl: "900px", 13 + "2xl": "1024px" 14 + }, 15 + }, 16 + extend: { 17 + fontFamily: { 18 + sans: ["iA Writer Quattro S", "Inter", "system-ui", "sans-serif", "ui-sans-serif"], 19 + mono: ["iA Writer Mono S", "ui-monospace", "SFMono-Regular", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", "monospace"], 20 + }, 21 + maxWidth: { 22 + 'prose': '65ch', 23 + }, 24 + }, 25 + }, 26 + plugins: [ 27 + require('@tailwindcss/typography'), 28 + ], 23 29 };
+2 -2
templates/index.html
··· 7 7 <title> 8 8 {{ .Meta.title }} 9 9 </title> 10 - <body> 11 - <main> 10 + <body class="bg-slate-100"> 11 + <main class="container mx-auto px-1 pt-4 min-h-screen flex flex-col"> 12 12 <div class="sidenav"> 13 13 {{ template "partials/nav.html" }} 14 14 </div>
+1 -3
templates/partials/footer.html
··· 1 - <hr> 2 - 3 - <div class="footer"> 1 + <div class="footer px-6"> 4 2 <p class="muted"> 5 3 Follow via <a href="/blog/feed.xml">RSS</a> and 6 4 <a href="https://bsky.app/profile/tangled.sh">Bluesky</a>.
+1 -1
templates/partials/head.html
··· 1 - <link rel="stylesheet" href="/static/style.css" type="text/css" /> 1 + <link rel="stylesheet" href="/static/tw.css" type="text/css" /> 2 2 <meta name="viewport" content="initial-scale=1,width" /> 3 3 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 4 4 <meta charset="UTF-8" />
+27 -23
templates/text.html
··· 7 7 <title> 8 8 {{ index .Meta "title" }} 9 9 </title> 10 - <body> 11 - <main> 12 - <div class="sidenav"> 13 - {{ template "partials/nav.html" }} 14 - </div> 15 - <article align="left"> 16 - <section class="post-date"> 17 - {{ $dateStr := index .Meta "date" }} 18 - {{ $date := parsedate $dateStr }} 19 - {{ $date.Format "02 Jan, 2006" }} 20 - </section> 10 + <body class="bg-slate-100"> 11 + <div class="prose mx-auto px-1 pt-4 min-h-screen flex flex-col"> 12 + <main> 13 + <div class="sidenav px-6"> 14 + {{ template "partials/nav.html" }} 15 + </div> 21 16 17 + <header> 18 + <p class="post-date px-6 mb-0 text-sm"> 19 + {{ $dateStr := index .Meta "date" }} 20 + {{ $date := parsedate $dateStr }} 21 + {{ $date.Format "02 Jan, 2006" }} 22 + </p> 22 23 23 - {{ if eq .Meta.draft "true" }} 24 - <h1 class="title">{{ index .Meta "title" }} <span class="draft">[draft]</span></h1> 25 - {{ else }} 26 - <h1 class="title">{{ index .Meta "title" }}</h1> 27 - {{ end }} 28 - <h2 class="subtitle">{{ index .Meta "subtitle" }}</h2> 29 - {{ .Body }} 24 + {{ if eq .Meta.draft "true" }} 25 + <h1 class="title px-6 mb-0">{{ index .Meta "title" }} <span class="draft">[draft]</span></h1> 26 + {{ else }} 27 + <h1 class="title px-6 mb-0">{{ index .Meta "title" }}</h1> 28 + {{ end }} 29 + <p class="italic px-6 mt-1 mb-0 text-lg">{{ index .Meta "subtitle" }}</p> 30 + </header> 30 31 31 - </article> 32 - </main> 33 - <footer> 34 - {{ template "partials/footer.html" }} 35 - </footer> 32 + <article class="mt-5 bg-white px-6 py-2 rounded drop-shadow-sm"> 33 + {{ .Body }} 34 + </article> 35 + </main> 36 + <footer> 37 + {{ template "partials/footer.html" }} 38 + </footer> 39 + </div> 36 40 </body> 37 41 38 42 </html>