Port to TypeScript/Elysia

This commit is contained in:
sepia 2025-07-28 13:39:01 -05:00
parent 29739d243f
commit 513335c485
17 changed files with 413 additions and 2603 deletions

View file

@ -1,11 +1,43 @@
<article>
<h2>About</h2>
<p>I program sometimes. I can't decide on a language.</p>
<p>Lately I'm focused on processing e-sports statistics in rust for degenerate betting purposes, and writing games in zig with raylib.</p>
<p>This blog was made with htmx and rust. I will not post the code unless you bother me about it, because I am lazy.</p>
<p><b>bio:</b> mechanist, worldbuilder, hierophant</p>
<h3>Current Interests/Projects</h3>
<ul>
<li>
building <a href="https://civ.plus">civ+</a>, a game, a social experiment,
and living world
</li>
<li>building Pantalaimon, an AI agent system (coming soon)</li>
<li>
finishing up a little
<a href="https://gomoku.sepiatones.xyz">gomoku!</a> webapp
</li>
</ul>
<h3>Dormant Interests/Projects</h3>
<ul>
<li>
esports data analysis, especially for professional League of Legends
</li>
<li>game engine development</li>
<li>programming language design</li>
<li>fiction writing</li>
</ul>
<h3>Favorite Languages/Tools</h3>
<ul>
<li>Rust</li>
<li>TypeScript</li>
<li>Kotlin</li>
<li>Scala</li>
<li>HTMX</li>
</ul>
<h3>Socials</h3>
<ul>
<li><a href="https://x.com/sepiatonal">x</a></li>
<li><a href="https://discord.com/users/105121538805669888">discord</a></li>
</ul>
<br />
<p>
This website was made with htmx and rust. I will not post the code unless
you bother me about it, because I am lazy.
</p>
</article>

View file

@ -1,6 +1,6 @@
<head>
<meta name="title" content="Other Post">
<meta name="date" content="2024-09-24T00:00:00Z">
<meta name="title" content="Other Post" />
<meta name="date" content="2024-09-24T00:00:00Z" />
</head>
<article>
<h1>Welcome to another post!</h1>

View file

@ -1,8 +1,8 @@
@import url('https://fonts.cdnfonts.com/css/jetbrains-mono-2');
@import url("https://fonts.cdnfonts.com/css/jetbrains-mono-2");
:root {
--font-family: "JetBrains Mono", monospace;
--line-height: 1.20rem;
--line-height: 1.2rem;
--border-thickness: 2px;
--text-color: #000;
--text-color-alt: #666;
@ -64,17 +64,26 @@ body {
}
}
h1, h2, h3, h4, h5, h6 {
h1,
h2,
h3,
h4,
h5,
h6 {
font-weight: var(--font-weight-bold);
margin: 0 0;
line-height: var(--line-height);
}
h1, h2 {
h1,
h2 {
margin-bottom: var(--line-height);
}
h3, h4, h5, h6 {
h3,
h4,
h5,
h6 {
margin-bottom: 0;
}
@ -89,7 +98,7 @@ h2 {
}
h3 {
font-size: 1.0rem;
font-size: 1rem;
text-transform: uppercase;
}
@ -116,7 +125,8 @@ a {
text-decoration-thickness: var(--border-thickness);
}
a:link, a:visited {
a:link,
a:visited {
color: var(--text-color);
}
@ -138,7 +148,7 @@ sub {
vertical-align: sub;
line-height: 0;
width: calc(1ch / 0.75);
font-size: .75rem;
font-size: 0.75rem;
}
table {
@ -149,13 +159,12 @@ table {
margin: 0 0 calc(var(--line-height) * 2);
}
th, td {
th,
td {
border: var(--border-thickness) solid var(--text-color);
padding:
calc((var(--line-height) / 2))
padding: calc((var(--line-height) / 2))
calc(1ch - var(--border-thickness) / 2)
calc((var(--line-height) / 2) - (var(--border-thickness)))
;
calc((var(--line-height) / 2) - (var(--border-thickness)));
line-height: var(--line-height);
vertical-align: top;
text-align: left;
@ -164,7 +173,6 @@ table tbody tr:first-child > * {
padding-top: calc((var(--line-height) / 2) - var(--border-thickness));
}
th {
font-weight: 700;
}
@ -191,7 +199,8 @@ p {
hyphens: auto;
}
img, video {
img,
video {
display: block;
width: 100%;
object-fit: contain;
@ -218,11 +227,11 @@ details[open] summary {
details ::marker {
display: inline-block;
content: '▶';
content: "▶";
margin: 0;
}
details[open] ::marker {
content: '▼';
content: "▼";
}
details :last-child {
@ -239,7 +248,8 @@ figure pre {
margin: 0;
}
pre, code {
pre,
code {
font-family: var(--font-family);
}
@ -259,7 +269,8 @@ figcaption {
margin-top: var(--line-height);
}
ul, ol {
ul,
ol {
padding: 0;
margin: 0 0 var(--line-height);
}
@ -296,13 +307,14 @@ li::marker {
}
::-webkit-scrollbar {
height: var(--line-height);
height: var(--line-height);
}
input, button, textarea {
input,
button,
textarea {
border: var(--border-thickness) solid var(--text-color);
padding:
calc(var(--line-height) / 2 - var(--border-thickness))
padding: calc(var(--line-height) / 2 - var(--border-thickness))
calc(1ch - var(--border-thickness));
margin: 0;
font: inherit;
@ -318,7 +330,7 @@ input, button, textarea {
-webkit-appearance: none;
}
input[type=checkbox] {
input[type="checkbox"] {
display: inline-grid;
place-content: center;
vertical-align: top;
@ -326,14 +338,15 @@ input[type=checkbox] {
height: var(--line-height);
cursor: pointer;
}
input[type=checkbox]:checked:before {
input[type="checkbox"]:checked:before {
content: "";
width: 1ch;
height: calc(var(--line-height) / 2);
background: var(--text-color);
}
button:focus, input:focus {
button:focus,
input:focus {
--border-thickness: 3px;
outline: none;
}
@ -350,7 +363,7 @@ input {
}
button::-moz-focus-inner {
padding: 0;
border: 0
border: 0;
}
button {
@ -379,7 +392,8 @@ label input {
width: 100%;
}
.tree, .tree ul {
.tree,
.tree ul {
position: relative;
padding-left: 0;
list-style-type: none;
@ -420,28 +434,59 @@ label input {
--grid-cells: 0;
display: flex;
gap: 1ch;
width: calc(round(down, 100%, (1ch * var(--grid-cells)) - (1ch * var(--grid-cells) - 1)));
width: calc(
round(down, 100%, (1ch * var(--grid-cells)) - (1ch * var(--grid-cells) - 1))
);
margin-bottom: var(--line-height);
}
.grid > *,
.grid > input {
flex: 0 0 calc(round(down, (100% - (1ch * (var(--grid-cells) - 1))) / var(--grid-cells), 1ch));
flex: 0 0
calc(
round(
down,
(100% - (1ch * (var(--grid-cells) - 1))) / var(--grid-cells),
1ch
)
);
}
.grid:has(> :last-child:nth-child(1)) {
--grid-cells: 1;
}
.grid:has(> :last-child:nth-child(2)) {
--grid-cells: 2;
}
.grid:has(> :last-child:nth-child(3)) {
--grid-cells: 3;
}
.grid:has(> :last-child:nth-child(4)) {
--grid-cells: 4;
}
.grid:has(> :last-child:nth-child(5)) {
--grid-cells: 5;
}
.grid:has(> :last-child:nth-child(6)) {
--grid-cells: 6;
}
.grid:has(> :last-child:nth-child(7)) {
--grid-cells: 7;
}
.grid:has(> :last-child:nth-child(8)) {
--grid-cells: 8;
}
.grid:has(> :last-child:nth-child(9)) {
--grid-cells: 9;
}
.grid:has(> :last-child:nth-child(1)) { --grid-cells: 1; }
.grid:has(> :last-child:nth-child(2)) { --grid-cells: 2; }
.grid:has(> :last-child:nth-child(3)) { --grid-cells: 3; }
.grid:has(> :last-child:nth-child(4)) { --grid-cells: 4; }
.grid:has(> :last-child:nth-child(5)) { --grid-cells: 5; }
.grid:has(> :last-child:nth-child(6)) { --grid-cells: 6; }
.grid:has(> :last-child:nth-child(7)) { --grid-cells: 7; }
.grid:has(> :last-child:nth-child(8)) { --grid-cells: 8; }
.grid:has(> :last-child:nth-child(9)) { --grid-cells: 9; }
/* DEBUG UTILITIES */
.debug .debug-grid {
--color: color-mix(in srgb, var(--text-color) 10%, var(--background-color) 90%);
--color: color-mix(
in srgb,
var(--text-color) 10%,
var(--background-color) 90%
);
position: absolute;
top: 0;
left: 0;

View file

@ -6,18 +6,18 @@
--background-overlay: #f2e9e1;
}
a {
a:link {
color: #56949f;
text-decoration: underline;
cursor: pointer;
}
a:hover {
color: #286983;
color: #907aa9;
}
a:visited {
color: #907aa9;
color: #286983;
}
::selection {