idk
This commit is contained in:
parent
862b11b9ef
commit
9c6da082a0
31 changed files with 441 additions and 263 deletions
|
|
@ -16,14 +16,27 @@
|
|||
}
|
||||
|
||||
.inline-code {
|
||||
border-radius: var(--radius-md);
|
||||
border-radius: var(--space-2);
|
||||
border: 1px solid var(--theme-separator);
|
||||
background-color: var(--theme-background-alt);
|
||||
color: var(--theme-foreground);
|
||||
padding: 0.1em 0.5em;
|
||||
color: var(--text-foreground-alt);
|
||||
padding: 0em 0.75em;
|
||||
text-align: center;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
line-height: 2;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
#logo-home > img {
|
||||
height: 2.4rem;
|
||||
}
|
||||
|
||||
nav {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: var(--spacing-2xl);
|
||||
}
|
||||
|
||||
|
|
@ -31,20 +44,32 @@ nav ul {
|
|||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
gap: var(--spacing-md);
|
||||
padding: var(--space-1);
|
||||
gap: var(--space-1);
|
||||
|
||||
font-family: monospace;
|
||||
font-size: var(--font-size-md);
|
||||
font-weight: 500;
|
||||
|
||||
background-color: var(--theme-surface);
|
||||
border: 1px solid var(--theme-surface-border);
|
||||
border-radius: 1000px;
|
||||
|
||||
width: fit-content;
|
||||
}
|
||||
|
||||
nav li a {
|
||||
padding: 0.35em 1.5em;
|
||||
color: var(--theme-foreground-alt);
|
||||
padding: var(--space-pad-surface) var(--space-4);
|
||||
line-height: 1rem;
|
||||
display: block;
|
||||
}
|
||||
|
||||
nav li.selected a {
|
||||
background-color: var(--theme-primary);
|
||||
color: var(--theme-background);
|
||||
border-radius: var(--radius-lg);
|
||||
font-weight: 600;
|
||||
border-radius: 1000px;
|
||||
}
|
||||
|
||||
nav a {
|
||||
|
|
@ -106,27 +131,17 @@ section::before {
|
|||
}
|
||||
}
|
||||
|
||||
.typewriting a::after,
|
||||
#donation a::after,
|
||||
#links a::after,
|
||||
#about a::after,
|
||||
article a::after {
|
||||
#contact a::after,
|
||||
:is(.typewriting, article) a:not([href^="#"])::after {
|
||||
display: inline-block;
|
||||
width: 0.9em;
|
||||
height: 0.9em;
|
||||
margin-left: var(--space-1);
|
||||
vertical-align: -0.1em;
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23a7a0ff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6' /%3E%3Cpath d='M11 13l9 -9' /%3E%3Cpath d='M15 4h5v5' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: light) {
|
||||
.typewriting a::after,
|
||||
#donation a::after,
|
||||
#links a::after,
|
||||
#about a::after,
|
||||
article a::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236f65f2' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6' /%3E%3Cpath d='M11 13l9 -9' /%3E%3Cpath d='M15 4h5v5' /%3E%3C/svg%3E");
|
||||
}
|
||||
vertical-align: -0.2em;
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23f5e0dc' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6' /%3E%3Cpath d='M11 13l9 -9' /%3E%3Cpath d='M15 4h5v5' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
section.typewriting a,
|
||||
|
|
|
|||
105
assets/home.css
105
assets/home.css
|
|
@ -8,6 +8,9 @@
|
|||
#projects ul {
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2,minmax(0,1fr));
|
||||
gap: var(--space-2);
|
||||
}
|
||||
|
||||
.project-card {
|
||||
|
|
@ -17,11 +20,11 @@
|
|||
background-color: var(--theme-background-alt);
|
||||
border: 1px solid var(--theme-separator);
|
||||
padding: var(--space-3) var(--space-4);
|
||||
margin-bottom: var(--space-2);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
border-radius: var(--radius-lg);
|
||||
transition: all var(--transition-fast);
|
||||
line-height: 1.75;
|
||||
}
|
||||
|
||||
.project-card::before {
|
||||
|
|
@ -34,12 +37,12 @@
|
|||
color: transparent;
|
||||
font-size: 32rem;
|
||||
letter-spacing: -0.075em;
|
||||
line-height: 1;
|
||||
line-height: 0.95;
|
||||
text-align: center;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
-webkit-text-stroke: 2px var(--theme-separator);
|
||||
opacity: 0.16;
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
.project-card:hover {
|
||||
|
|
@ -52,6 +55,7 @@
|
|||
position: absolute;
|
||||
color: var(--theme-foreground-alt);
|
||||
bottom: var(--space-3);
|
||||
line-height: 1;
|
||||
right: var(--space-3);
|
||||
opacity: 50%;
|
||||
}
|
||||
|
|
@ -90,7 +94,7 @@
|
|||
.project-card .description {
|
||||
font-size: var(--font-size-sm);
|
||||
color: var(--theme-foreground-alt);
|
||||
margin-bottom: var(--space-2);
|
||||
margin-bottom: var(--space-3);
|
||||
}
|
||||
|
||||
.project-card .info {
|
||||
|
|
@ -131,10 +135,6 @@
|
|||
line-height: 1;
|
||||
}
|
||||
|
||||
#donation .silly-table a::after {
|
||||
vertical-align: -0.2em;
|
||||
}
|
||||
|
||||
.row:last-of-type .key,
|
||||
.row:last-of-type .value {
|
||||
border-bottom: none;
|
||||
|
|
@ -320,29 +320,30 @@ u #friends::before {
|
|||
|
||||
#about h2::before,
|
||||
#languages h2::before,
|
||||
#trivia h2::before {
|
||||
background-color: #9f99f0;
|
||||
#trivia h2::before,
|
||||
#contact h2::before {
|
||||
background-color: #f5e0dc;
|
||||
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
|
||||
}
|
||||
|
||||
#links h2::before {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='%239f99f0' %3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M10 2a3 3 0 0 1 2.995 2.824l.005 .176v1h3a2 2 0 0 1 1.995 1.85l.005 .15v3h1a3 3 0 0 1 .176 5.995l-.176 .005h-1v3a2 2 0 0 1 -1.85 1.995l-.15 .005h-3a2 2 0 0 1 -1.995 -1.85l-.005 -.15v-1a1 1 0 0 0 -1.993 -.117l-.007 .117v1a2 2 0 0 1 -1.85 1.995l-.15 .005h-3a2 2 0 0 1 -1.995 -1.85l-.005 -.15v-3a2 2 0 0 1 1.85 -1.995l.15 -.005h1a1 1 0 0 0 .117 -1.993l-.117 -.007h-1a2 2 0 0 1 -1.995 -1.85l-.005 -.15v-3a2 2 0 0 1 1.85 -1.995l.15 -.005h3v-1a3 3 0 0 1 3 -3z' /%3E%3C/svg%3E");
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='%23f5e0dc' %3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M10 2a3 3 0 0 1 2.995 2.824l.005 .176v1h3a2 2 0 0 1 1.995 1.85l.005 .15v3h1a3 3 0 0 1 .176 5.995l-.176 .005h-1v3a2 2 0 0 1 -1.85 1.995l-.15 .005h-3a2 2 0 0 1 -1.995 -1.85l-.005 -.15v-1a1 1 0 0 0 -1.993 -.117l-.007 .117v1a2 2 0 0 1 -1.85 1.995l-.15 .005h-3a2 2 0 0 1 -1.995 -1.85l-.005 -.15v-3a2 2 0 0 1 1.85 -1.995l.15 -.005h1a1 1 0 0 0 .117 -1.993l-.117 -.007h-1a2 2 0 0 1 -1.995 -1.85l-.005 -.15v-3a2 2 0 0 1 1.85 -1.995l.15 -.005h3v-1a3 3 0 0 1 3 -3z' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
#donation h2::before {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='%239f99f0'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M15.999 2a1 1 0 0 1 1.001 1v3.255l.026 .018a7 7 0 0 1 2.204 2.537l.092 .19h.676a2 2 0 0 1 1.995 1.85l.005 .15v2a2 2 0 0 1 -2 2h-.676l-.104 .213a7 7 0 0 1 -1.097 1.558l-.123 .125v1.604a2.5 2.5 0 0 1 -2.336 2.495l-.162 .005c-1.16 0 -2.135 -.79 -2.418 -1.86l-.032 -.141l-4.05 .001l-.05 -.002l-.032 .141a2.5 2.5 0 0 1 -2.254 1.856l-.164 .005a2.5 2.5 0 0 1 -2.5 -2.5v-1.602l-.056 -.055a7 7 0 0 1 -1.576 -7.085l.092 -.256a7 7 0 0 1 6.539 -4.502h2.196l4.25 -2.832a1 1 0 0 1 .436 -.161zm-.999 8a1 1 0 0 0 -.993 .883l-.007 .127a1 1 0 0 0 1.993 .117l.007 -.127a1 1 0 0 0 -1 -1'/%3E%3C/svg%3E");
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='%23f5e0dc'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M15.999 2a1 1 0 0 1 1.001 1v3.255l.026 .018a7 7 0 0 1 2.204 2.537l.092 .19h.676a2 2 0 0 1 1.995 1.85l.005 .15v2a2 2 0 0 1 -2 2h-.676l-.104 .213a7 7 0 0 1 -1.097 1.558l-.123 .125v1.604a2.5 2.5 0 0 1 -2.336 2.495l-.162 .005c-1.16 0 -2.135 -.79 -2.418 -1.86l-.032 -.141l-4.05 .001l-.05 -.002l-.032 .141a2.5 2.5 0 0 1 -2.254 1.856l-.164 .005a2.5 2.5 0 0 1 -2.5 -2.5v-1.602l-.056 -.055a7 7 0 0 1 -1.576 -7.085l.092 -.256a7 7 0 0 1 6.539 -4.502h2.196l4.25 -2.832a1 1 0 0 1 .436 -.161zm-.999 8a1 1 0 0 0 -.993 .883l-.007 .127a1 1 0 0 0 1.993 .117l.007 -.127a1 1 0 0 0 -1 -1'/%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
#projects h2::before {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='%239f99f0'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M17.108 22.085c-1.266 -.068 -2.924 -.859 -5.071 -2.355l-.04 -.027l-.037 .027c-2.147 1.497 -3.804 2.288 -5.072 2.356l-.178 .005c-2.747 0 -3.097 -2.64 -1.718 -7.244l.054 -.178l-.1 -.075c-6.056 -4.638 -5.046 -7.848 2.554 -8.066l.202 -.005l.115 -.326c1.184 -3.33 2.426 -5.085 4.027 -5.192l.156 -.005c1.674 0 2.957 1.76 4.182 5.197l.114 .326l.204 .005c7.6 .218 8.61 3.428 2.553 8.065l-.102 .075l.055 .178c1.35 4.512 1.04 7.137 -1.556 7.24l-.163 .003z' /%3E%3C/svg%3E");
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='%23f5e0dc'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M17.108 22.085c-1.266 -.068 -2.924 -.859 -5.071 -2.355l-.04 -.027l-.037 .027c-2.147 1.497 -3.804 2.288 -5.072 2.356l-.178 .005c-2.747 0 -3.097 -2.64 -1.718 -7.244l.054 -.178l-.1 -.075c-6.056 -4.638 -5.046 -7.848 2.554 -8.066l.202 -.005l.115 -.326c1.184 -3.33 2.426 -5.085 4.027 -5.192l.156 -.005c1.674 0 2.957 1.76 4.182 5.197l.114 .326l.204 .005c7.6 .218 8.61 3.428 2.553 8.065l-.102 .075l.055 .178c1.35 4.512 1.04 7.137 -1.556 7.24l-.163 .003z' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
#friends h2::before {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%239f99f0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M9 7m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0' /%3E%3Cpath d='M3 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2' /%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75' /%3E%3Cpath d='M21 21v-2a4 4 0 0 0 -3 -3.85' /%3E%3C/svg%3E");
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23f5e0dc' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M9 7m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0' /%3E%3Cpath d='M3 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2' /%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75' /%3E%3Cpath d='M21 21v-2a4 4 0 0 0 -3 -3.85' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
#media h2::before {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%239f99f0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 10v3'/%3E%3Cpath d='M6 6v11'/%3E%3Cpath d='M10 3v18'/%3E%3Cpath d='M14 8v7'/%3E%3Cpath d='M18 5v13'/%3E%3Cpath d='M22 10v3'/%3E%3C/svg%3E");
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23f5e0dc' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 10v3'/%3E%3Cpath d='M6 6v11'/%3E%3Cpath d='M10 3v18'/%3E%3Cpath d='M14 8v7'/%3E%3Cpath d='M18 5v13'/%3E%3Cpath d='M22 10v3'/%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
.typecycle {
|
||||
|
|
@ -382,7 +383,7 @@ u #friends::before {
|
|||
}
|
||||
8.33%,
|
||||
16.66% {
|
||||
width: 4ch;
|
||||
width: 4.1ch;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -395,7 +396,7 @@ u #friends::before {
|
|||
}
|
||||
41.66%,
|
||||
50% {
|
||||
width: 5ch;
|
||||
width: 4.1ch;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -408,7 +409,7 @@ u #friends::before {
|
|||
}
|
||||
75%,
|
||||
83.33% {
|
||||
width: 5ch;
|
||||
width: 4.1ch;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -434,6 +435,12 @@ u #friends::before {
|
|||
}
|
||||
}
|
||||
|
||||
@media (max-width: 920px) {
|
||||
#projects ul {
|
||||
grid-template-columns: repeat(1, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 370px) {
|
||||
.griddy {
|
||||
grid-template-columns: repeat(1, 1fr);
|
||||
|
|
@ -455,7 +462,7 @@ u #friends::before {
|
|||
}
|
||||
|
||||
.griddy .column li {
|
||||
font-style: italic;
|
||||
font-family: monospace;
|
||||
font-size: 0.9em;
|
||||
color: var(--theme-foreground-alt);
|
||||
}
|
||||
|
|
@ -520,11 +527,67 @@ footer a,
|
|||
#trivia ul {
|
||||
color: var(--theme-foreground-alt);
|
||||
font-size: 0.9em;
|
||||
list-style-type: square;
|
||||
padding-left: 2ch;
|
||||
}
|
||||
|
||||
#languages li::marker,
|
||||
#trivia li::marker {
|
||||
color: var(--theme-foreground);
|
||||
content: "# ";
|
||||
color: var(--theme-primary);
|
||||
content: "↳ ";
|
||||
}
|
||||
|
||||
.dats-me {
|
||||
background-clip: text !important;
|
||||
-webkit-background-clip: text !important;
|
||||
-webkit-text-fill-color: transparent;
|
||||
animation: dats-lowkey-me 60s linear infinite;
|
||||
background-size: 1000% 100% !important;
|
||||
|
||||
background: repeating-linear-gradient(
|
||||
-90deg,
|
||||
#a6e3a1,
|
||||
#a6e3a1,
|
||||
#e5c76b,
|
||||
#e5c76b,
|
||||
#1e66f5,
|
||||
#1e66f5,
|
||||
#89b4fa,
|
||||
#89b4fa,
|
||||
#f5c2e7,
|
||||
#f5c2e7,
|
||||
#cdd6f4,
|
||||
#cdd6f4,
|
||||
#f5c2e7,
|
||||
#f5c2e7,
|
||||
#89b4fa,
|
||||
#89b4fa,
|
||||
#d97742,
|
||||
#d97742,
|
||||
#fab387,
|
||||
#fab387,
|
||||
#f2e9e1,
|
||||
#f2e9e1,
|
||||
#f5bde6,
|
||||
#f5bde6,
|
||||
#b4637a,
|
||||
#b4637a
|
||||
);
|
||||
}
|
||||
|
||||
@keyframes dats-lowkey-me {
|
||||
0% {
|
||||
background-position: 0% 50%;
|
||||
}
|
||||
100% {
|
||||
background-position: -900% 50%;
|
||||
}
|
||||
}
|
||||
|
||||
#languages img {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
image-rendering: pixelated;
|
||||
margin-right: var(--space-1);
|
||||
height: 16px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@
|
|||
background-color: var(--theme-background);
|
||||
border: 1px solid var(--theme-separator);
|
||||
border-radius: var(--radius-lg);
|
||||
line-height: 1.75;
|
||||
color: var(--theme-foreground-alt);
|
||||
}
|
||||
|
||||
|
|
@ -112,15 +113,15 @@ article header {
|
|||
margin-bottom: var(--space-7);
|
||||
padding-bottom: var(--space-7);
|
||||
border-bottom: 1px solid var(--theme-separator);
|
||||
color: var(--theme-foreground-bruh);
|
||||
}
|
||||
|
||||
article header .meta {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: var(--font-size-md);
|
||||
color: var(--theme-foreground-bruh);
|
||||
margin-bottom: var(--space-2);
|
||||
gap: var(--space-4);
|
||||
gap: var(--space-1);
|
||||
}
|
||||
|
||||
body > a[href="/reports"] {
|
||||
|
|
@ -131,14 +132,18 @@ body > a[href="/reports"] {
|
|||
|
||||
article header h1 {
|
||||
font-size: var(--font-size-xl);
|
||||
margin-top: var(--space-5);
|
||||
margin-bottom: var(--space-3);
|
||||
margin-top: var(--space-6);
|
||||
color: var(--theme-foreground);
|
||||
}
|
||||
|
||||
article header p {
|
||||
margin-bottom: var(--space-4);
|
||||
}
|
||||
|
||||
article header .tags {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-top: var(--space-2);
|
||||
gap: var(--space-2);
|
||||
}
|
||||
|
||||
|
|
@ -149,6 +154,7 @@ article header .tag {
|
|||
border: 1px solid var(--theme-separator);
|
||||
border-radius: var(--radius-lg);
|
||||
color: var(--theme-foreground-alt);
|
||||
line-height: 1.75;
|
||||
}
|
||||
|
||||
article .content {
|
||||
|
|
@ -186,13 +192,8 @@ article .content h3::before {
|
|||
margin-right: 0.5ch;
|
||||
}
|
||||
|
||||
article footer {
|
||||
margin-top: var(--space-10);
|
||||
padding-top: var(--space-7);
|
||||
border-top: 1px solid var(--theme-separator);
|
||||
text-align: center;
|
||||
color: var(--theme-foreground-alt);
|
||||
font-size: var(--font-size-md);
|
||||
article + footer {
|
||||
margin-top: var(--space-7);
|
||||
}
|
||||
|
||||
#reports-header {
|
||||
|
|
@ -210,3 +211,28 @@ article footer {
|
|||
#reports-header > a > svg {
|
||||
margin-left: var(--space-1);
|
||||
}
|
||||
|
||||
hr {
|
||||
border: none;
|
||||
height: 1px;
|
||||
width: 100%;
|
||||
background-color: var(--theme-separator);
|
||||
margin: var(--space-7) 0;
|
||||
}
|
||||
|
||||
article a[href^="#"] {
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 1px;
|
||||
}
|
||||
|
||||
article blockquote {
|
||||
padding-left: 1em;
|
||||
border-left: 3px solid var(--theme-primary);
|
||||
border-radius: 2px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
article .expanded > span {
|
||||
display: block;
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,52 @@
|
|||
@import url(/fonts/iosevka-custom/import.css);
|
||||
@font-face {
|
||||
font-family: "Iosevka Custom Web";
|
||||
font-display: swap;
|
||||
font-weight: 400;
|
||||
font-stretch: normal;
|
||||
font-style: normal;
|
||||
src:
|
||||
url("/fonts/iosevka-custom/WOFF2/IosevkaCustom-Regular.woff2")
|
||||
format("woff2"),
|
||||
url("/fonts/iosevka-custom/TTF/IosevkaCustom-Regular.ttf")
|
||||
format("truetype");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Iosevka Custom Web";
|
||||
font-display: swap;
|
||||
font-weight: 400;
|
||||
font-stretch: normal;
|
||||
font-style: italic;
|
||||
src:
|
||||
url("/fonts/iosevka-custom/WOFF2/IosevkaCustom-Italic.woff2")
|
||||
format("woff2"),
|
||||
url("/fonts/iosevka-custom/TTF/IosevkaCustom-Italic.ttf")
|
||||
format("truetype");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Iosevka Custom Web";
|
||||
font-display: swap;
|
||||
font-weight: 700;
|
||||
font-stretch: normal;
|
||||
font-style: normal;
|
||||
src:
|
||||
url("/fonts/iosevka-custom/WOFF2/IosevkaCustom-Bold.woff2") format("woff2"),
|
||||
url("/fonts/iosevka-custom/TTF/IosevkaCustom-Bold.ttf") format("truetype");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Iosevka Custom Web";
|
||||
font-display: swap;
|
||||
font-weight: 700;
|
||||
font-stretch: normal;
|
||||
font-style: italic;
|
||||
src:
|
||||
url("/fonts/iosevka-custom/WOFF2/IosevkaCustom-BoldItalic.woff2")
|
||||
format("woff2"),
|
||||
url("/fonts/iosevka-custom/TTF/IosevkaCustom-BoldItalic.ttf")
|
||||
format("truetype");
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
|
|
@ -70,6 +118,7 @@ pre,
|
|||
code,
|
||||
button {
|
||||
font-family:
|
||||
"Iosevka Custom Web", "Iosevka Custom", "Iosevka", monospace, sans-serif;
|
||||
line-height: 1.7;
|
||||
"Iosevka Custom Web", "Iosevka Custom", Iosevka, monospace, sans-serif;
|
||||
text-rendering: optimizeLegibility;
|
||||
line-height: 1.75rem;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,17 +4,20 @@
|
|||
*/
|
||||
|
||||
:root {
|
||||
--theme-background: #121317;
|
||||
--theme-background-alt: #090a0d;
|
||||
--theme-foreground: #cac7ee;
|
||||
--theme-primary: #9f99f0;
|
||||
--theme-foreground-alt: #9593b9;
|
||||
--theme-foreground-bruh: #7d7d86;
|
||||
--theme-separator: #232833;
|
||||
--theme-background: #181825;
|
||||
--theme-background-alt: #11111b;
|
||||
--theme-surface: #1e1e2e;
|
||||
--theme-surface-border: #313244;
|
||||
--theme-foreground: #cdd6f4;
|
||||
--theme-primary: #f5e0dc;
|
||||
--theme-foreground-alt: #a6adc8;
|
||||
--theme-foreground-bruh: #7f849c;
|
||||
--theme-separator: #313244;
|
||||
|
||||
--space-0: 0.16rem;
|
||||
--space-1: 0.25rem;
|
||||
--space-2: 0.5rem;
|
||||
--space-pad-surface: 0.625rem;
|
||||
--space-3: 0.75rem;
|
||||
--space-4: 1rem;
|
||||
--space-5: 1.25rem;
|
||||
|
|
@ -64,15 +67,3 @@
|
|||
--z-base: 0;
|
||||
--z-elevated: 10;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: light) {
|
||||
:root {
|
||||
--theme-background: #f5f5f7;
|
||||
--theme-background-alt: #ffffff;
|
||||
--theme-foreground: #1d1d1f;
|
||||
--theme-foreground-alt: #515154;
|
||||
--theme-foreground-bruh: #86868b;
|
||||
--theme-separator: #b9b9bf;
|
||||
--theme-primary: #6f65f2;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import { tracks } from "../utils/fm.ts";
|
||||
import { FM_USER, tracks } from "../utils/fm.ts";
|
||||
|
||||
export function Fm() {
|
||||
if (!tracks) return;
|
||||
|
|
@ -45,7 +45,7 @@ export function Fm() {
|
|||
</a>
|
||||
</li>
|
||||
))}
|
||||
<a class="fm-more" href="https://last.fm/user/favewa">
|
||||
<a class="fm-more" href={`https://last.fm/user/${FM_USER}`}>
|
||||
Check out more on Last.fm
|
||||
</a>
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ export default function Footer() {
|
|||
return (
|
||||
<footer class="section typewriting">
|
||||
<p class="alt alt-font">
|
||||
© 2025 <span class="highlight">miwa</span>{" · "}
|
||||
Made with <span class="highlight">❤</span> · Source code available at
|
||||
{" "}
|
||||
<a href="https://kyu.re/~web">git.acpi.at</a> under the{" "}
|
||||
|
|
@ -20,10 +21,6 @@ export default function Footer() {
|
|||
.
|
||||
</p>
|
||||
<br />
|
||||
<p class="alt alt-font">
|
||||
© 2025 <span class="highlight">miwa</span>{" "}
|
||||
• Powered by FreeBSD and autism
|
||||
</p>
|
||||
</footer>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@ export function Header(props: any) {
|
|||
return (
|
||||
<header {...props}>
|
||||
<h1 class="typecycle">
|
||||
~<span>miwa</span>
|
||||
~<span>lívia</span>
|
||||
<span>lívia</span>
|
||||
<span>lívia</span>
|
||||
<span>clara</span>
|
||||
</h1>
|
||||
<h2>
|
||||
she/her ∘ free software advocate ∘ linguistics enthusiast ૮ ˶ᵔ ᵕ ᵔ˶ sა
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
*/
|
||||
|
||||
export default function Links(props: {
|
||||
selected: "home" | "about" | "reports" | "misc";
|
||||
selected: "home" | "contact" | "reports";
|
||||
}) {
|
||||
return (
|
||||
<nav>
|
||||
|
|
@ -12,15 +12,12 @@ export default function Links(props: {
|
|||
<li class={props.selected === "home" ? "selected" : ""}>
|
||||
<a href="/">home</a>
|
||||
</li>{" "}
|
||||
<li class={props.selected === "about" ? "selected" : ""}>
|
||||
<a href="/about">about</a>
|
||||
<li class={props.selected === "contact" ? "selected" : ""}>
|
||||
<a href="/contact">contact</a>
|
||||
</li>
|
||||
<li class={props.selected === "reports" ? "selected" : ""}>
|
||||
<a href="/reports">reports</a>
|
||||
</li>
|
||||
{/* <li class={props.selected === "misc" ? "selected" : ""}> */}
|
||||
{/* <a href="/misc">misc</a> */}
|
||||
{/* </li> */}
|
||||
</ul>
|
||||
</nav>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,77 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2025 miwa
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import { Fm } from "@/components/Fm.tsx";
|
||||
import { Header } from "@/components/Header.tsx";
|
||||
import Links from "@/components/Links.tsx";
|
||||
import ProjectCard from "@/components/ProjectCard.tsx";
|
||||
import Code from "@/islands/Code.tsx";
|
||||
import Meow from "@/islands/Meow.tsx";
|
||||
import "@/assets/home.css";
|
||||
import Footer from "../components/Footer.tsx";
|
||||
|
||||
export default function About() {
|
||||
return (
|
||||
<>
|
||||
<Links selected="about" />
|
||||
<section id="about">
|
||||
<h2>About</h2>
|
||||
<p>
|
||||
I'm an aspiring electrical engineer with a keen interest in open
|
||||
access to information and knowledge. My technical work centers on
|
||||
functional programming, C99, and writing quirky TypeScript code that
|
||||
explores its more obscure corners and unconventional patterns. I'm
|
||||
drawn to atypical low-level technologies and have a particular
|
||||
interest in the x86 and RISC-V ISAs.
|
||||
</p>
|
||||
<p>
|
||||
<i>In a more personal tone...</i>{" "}
|
||||
Hewwo! I'm Lívia, a 18-year-old girl from Brazil passionate about open
|
||||
access to information, technology, linguistics, functional
|
||||
programming, and pretty much anything that involves understanding
|
||||
technology, human language, or philosophical frameworks. I hope you
|
||||
find something interesting here, and don't hesitate to reach out if
|
||||
you feel like it. <span class="highlight">:3</span>
|
||||
</p>
|
||||
<p>
|
||||
When I'm not studying circuits or coding, it's likely that I'm either
|
||||
exploring linguistics or listening to music. My tastes shift
|
||||
constantly with my hyperfocus, ranging from indie, shoegaze, and J-Pop
|
||||
to speedcore and various metal derivatives. I run a FreeBSD server
|
||||
that hosts this site and various services, serving as my hands-on lab
|
||||
for systems administration. <span class="highlight">^-^</span>
|
||||
</p>
|
||||
<p>
|
||||
Beyond quirky technology, I <i>really</i>{" "}
|
||||
like linguistics and philosophy enthusiast. I'm also autistic n' ADHD,
|
||||
so I might struggle with humour once in a while. I really like
|
||||
befriending new people and growing as a person every single day!!! If
|
||||
you've read this far, thanks for stopping by!{" "}
|
||||
</p>
|
||||
</section>
|
||||
<section id="languages">
|
||||
<h2>languages</h2>
|
||||
<ul style="text-align-last: left">
|
||||
<li>
|
||||
brazilian portuguese <span class="highlight">(native)</span>
|
||||
</li>
|
||||
<li>
|
||||
«all over the place» english <span class="highlight">(C1)</span>
|
||||
</li>
|
||||
<li>
|
||||
latin american spanish <span class="highlight">(A2)</span>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="trivia">
|
||||
<h2>trivia</h2>
|
||||
<ul>
|
||||
<li>there are no easter eggs up here. go away</li>
|
||||
</ul>
|
||||
</section>
|
||||
<Footer />
|
||||
</>
|
||||
);
|
||||
}
|
||||
125
routes/contact.tsx
Normal file
125
routes/contact.tsx
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
/**
|
||||
* Copyright (c) 2025 miwa
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import { Fm } from "@/components/Fm.tsx";
|
||||
import { Header } from "@/components/Header.tsx";
|
||||
import Links from "@/components/Links.tsx";
|
||||
import ProjectCard from "@/components/ProjectCard.tsx";
|
||||
import Code from "@/islands/Code.tsx";
|
||||
import Meow from "@/islands/Meow.tsx";
|
||||
import "@/assets/home.css";
|
||||
import Footer from "../components/Footer.tsx";
|
||||
|
||||
export default function About() {
|
||||
return (
|
||||
<>
|
||||
<Links selected="contact" />
|
||||
<section id="about">
|
||||
<h2>About</h2>
|
||||
<p>
|
||||
<i>In a more personal tone...</i> Haiiii! I'm{" "}
|
||||
<span class="dats-me">Lívia</span>, an 18-year-old girl from Brazil,
|
||||
and if anything is obscure and nerdy, I'm probably already obsessed
|
||||
with it, just like I am with open information, technology,
|
||||
linguistics, functional programming, philosophy... if it involves
|
||||
understanding how systems work (whether they're made of silicon,
|
||||
syntax, or abstract concepts), it's quite likely that I'm already down
|
||||
a rabbit hole learning about it. I hope you find something here that
|
||||
sparks your interest, and seriously, don't hesitate; reach out if you
|
||||
want to chat about anything! <span class="highlight">:3</span>
|
||||
</p>
|
||||
<p>
|
||||
When I'm not elbow-deep circuit diagrams or debugging some cursed code
|
||||
shenanigans, it's likely that I'm either exploring the world of
|
||||
linguistics or completely lost in music My tastes shift with whatever
|
||||
my brain is{" "}
|
||||
<ruby>
|
||||
hyperfixating on at the moment<rt>
|
||||
<i>genuinely, it's aaaaaalllll over the place. i'm sorry</i>
|
||||
</rt>
|
||||
</ruby>. One week it's dreamy shoegaze and indie, the next it's
|
||||
aggressive speedcore or some niche metal subgenre, with Bossa Nova,
|
||||
Shibuya-kei, J-Pop, and J-Rock thrown in for good measure. I also run
|
||||
a{" "}
|
||||
<ruby>
|
||||
FreeBSD<rt>yes, really</rt>
|
||||
</ruby>{" "}
|
||||
server that hosts this site and a bunch of other services, serving as
|
||||
my hands-on lab for systems administration experiments.{" "}
|
||||
<span class="highlight">^-^</span>
|
||||
</p>
|
||||
<p>
|
||||
I'm autistic and have ADHD, which means I sometimes miss jokes or
|
||||
social cues, but it also means I can hyper-focus on topics I love with
|
||||
an intensity that's honestly kinda wild. I'm genuinely passionate
|
||||
about linguistics and philosophy, and I love meeting new people and
|
||||
learning from different perspectives!! Every day is an opportunity to
|
||||
grow, understand something new, or challenge my own thinking. If
|
||||
you've made it this far, thanks for stopping by and getting to know me
|
||||
a bit! Beyond quirky technology, I <i>really</i>{" "}
|
||||
like linguistics and philosophy enthusiast. I'm also autistic n' ADHD,
|
||||
so I might struggle with humour once in a while. I really like
|
||||
befriending new people and growing as a person every single day!!! If
|
||||
you've read this far, thanks for stopping by!{" "}
|
||||
</p>
|
||||
</section>
|
||||
<section id="languages">
|
||||
<h2>languages</h2>
|
||||
<ul style="text-align-last: left">
|
||||
<li>
|
||||
<a href="https://rmocci.itch.io/pixel-special"><img src="/icons/brazil.png" /></a>
|
||||
<ruby>
|
||||
brazilian portuguese<rt>português brasileiro</rt>
|
||||
</ruby>{" "}
|
||||
<span class="highlight">(native)</span>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://rmocci.itch.io/pixel-europe"><img src="/icons/uk.png" /></a>
|
||||
english <span class="highlight">(C1)</span>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://rmocci.itch.io/pixel-europe"><img src="/icons/spain.png" /></a>
|
||||
<ruby>
|
||||
spanish<rt>español</rt>
|
||||
</ruby>{" "}
|
||||
<span class="highlight">(A2)</span>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="trivia">
|
||||
<h2>trivia</h2>
|
||||
<ul>
|
||||
<li>emacs is the best operating operating system</li>
|
||||
<li>there are no easter eggs up here. go away</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="contact">
|
||||
<h2>contact</h2>
|
||||
<p>ummm i'm always happy to meet new people and talk about anything!!1!!1 don't hesitate to contact me if you feel like it,,</p>
|
||||
<div class="silly-table">
|
||||
<div class="row">
|
||||
<span class="key">Signal</span>
|
||||
<code class="value">
|
||||
<a href="https://signal.me/#eu/97M35SwAf4D2j0ywFoNQOMC5iBSLY3X600-EAfF1bYtGRSh4BulO8rz9WN8P1WF-">@miwa.31</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span class="key">Telegram</span>
|
||||
<code class="value">
|
||||
<a href="https://t.me/deathgaze">@deathgaze</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span class="key">Discord</span>
|
||||
<code class="value">
|
||||
<a href="https://discord.com/users/797566974024351745">@rimiwa</a>
|
||||
</code>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<Footer />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
|
@ -20,12 +20,15 @@ export default function Home() {
|
|||
<section id="about">
|
||||
<h2>Summary</h2>
|
||||
<p>
|
||||
I'm an aspiring electrical engineer with a keen interest in open
|
||||
access to information and knowledge. My technical work centers on
|
||||
functional programming, C99, and writing quirky TypeScript code that
|
||||
explores its more obscure corners and unconventional patterns. I'm
|
||||
drawn to atypical low-level technologies and have a particular
|
||||
interest in the x86 and RISC-V ISAs. <a href="/about">Read more</a>
|
||||
I'm an aspiring electrical engineer with a deep appreciation with open
|
||||
access and the elegance of well-enginereed software. My technical work
|
||||
centers on functional programming paradigms, C99/C23, and writing
|
||||
quirky TypeScript code that explores its more obscure corners and
|
||||
unconventional patterns. I'm especially interested in atypical
|
||||
low-level systems and the intersection of hardware and software, with
|
||||
a particular fascination for the x86 and RISC-V ISAs, and I love
|
||||
finding elegant solutions in places most people don't bother to look
|
||||
at. <a href="/contact">Read more</a>
|
||||
</p>
|
||||
</section>
|
||||
<section id="links">
|
||||
|
|
@ -51,27 +54,14 @@ export default function Home() {
|
|||
at://acpi.at
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
title="Discord"
|
||||
href="https://discord.com/users/797566974024351745"
|
||||
>
|
||||
@rumiwa on Discord
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="Telegram" href="https://t.me/lauwawa">
|
||||
@lauwawa on Telegram
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="column">
|
||||
<h3>Code</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<a title="GitHub" href="https://github.com/fukkai">
|
||||
fukkai on GitHub
|
||||
<a title="GitHub" href="https://github.com/rcxe">
|
||||
rcxe on GitHub
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
|
|
@ -87,7 +77,7 @@ export default function Home() {
|
|||
</ul>
|
||||
</div>
|
||||
<div class="column">
|
||||
<h3>Services</h3>
|
||||
<h3>Public Services</h3>
|
||||
<ul>
|
||||
<li>sowwy, none for now~ :<</li>
|
||||
</ul>
|
||||
|
|
@ -99,10 +89,10 @@ export default function Home() {
|
|||
<ul>
|
||||
<li>
|
||||
<ProjectCard
|
||||
author="fukkai"
|
||||
author="rcxe"
|
||||
name="cobweb"
|
||||
description="a lightweight, tiny web framework for deno tailored for dynamic no-js applications"
|
||||
url="http://github.com/fukkai/cobweb"
|
||||
url="https://github.com/rcxe/cobweb"
|
||||
languageColor="#3178c6"
|
||||
languageName="TypeScript"
|
||||
license="BSD-3-Clause"
|
||||
|
|
@ -110,10 +100,10 @@ export default function Home() {
|
|||
</li>
|
||||
<li>
|
||||
<ProjectCard
|
||||
author="fukkai"
|
||||
author="rcxe"
|
||||
name="ratazana"
|
||||
description="minimal implementation of logitech and razer mouse firmware, repurposing their onboard memory as a covert channel for arbitrary data"
|
||||
url="http://github.com/fukkai/ratazana"
|
||||
url="https://github.com/rcxe/ratazana"
|
||||
languageColor="#555"
|
||||
languageName="C"
|
||||
license="BSD-3-Clause"
|
||||
|
|
@ -124,7 +114,7 @@ export default function Home() {
|
|||
author="w"
|
||||
name="wildcat"
|
||||
description="lightweight, minimal, crossplatform, and straightforward opengl-based rendering and windowing libraries"
|
||||
url="http://kyu.re/~wildcat"
|
||||
url="https://kyu.re/~wildcat"
|
||||
languageColor="#555"
|
||||
languageName="C"
|
||||
license="BSD-3-Clause"
|
||||
|
|
@ -146,7 +136,7 @@ export default function Home() {
|
|||
<span class="key">WEB</span>
|
||||
<code class="value">
|
||||
<a href="https://ko-fi.com/west">west@ko-fi</a>
|
||||
<a href="https://github.com/sponsors/fukkai">fukkai@github</a>
|
||||
<a href="https://github.com/sponsors/rcxe">rcxe@github</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
|
@ -195,20 +185,23 @@ export default function Home() {
|
|||
</p>
|
||||
<div class="buttons">
|
||||
<Meow />
|
||||
<a href="https://worf.win">
|
||||
<a href="https://worf.win" rel="noopener nofollow">
|
||||
<img src="https://worf.win/images/worfwin.gif" alt="worf" />
|
||||
</a>
|
||||
<a href="https://codeberg.org/paige">
|
||||
<a href="https://codeberg.org/paige" rel="noopener nofollow">
|
||||
<img src="/88x31/paige.gif" alt="paige" />
|
||||
</a>
|
||||
<a href="https://mugman.tech">
|
||||
<a href="https://urwq.moe" rel="noopener nofollow">
|
||||
<img src="https://urwq.moe/88x31.png" alt="urwq" />
|
||||
</a>
|
||||
<a href="https://mugman.tech" rel="noopener nofollow">
|
||||
<img src="https://mugman.tech/88x31/me.gif" alt="mugman" />
|
||||
</a>
|
||||
<a href="https://f.dog">
|
||||
<img src="https://x86.pet/~strawberry/june_88x31.png" alt="june" />
|
||||
<a href="https://nin0.dev" rel="noopener nofollow">
|
||||
<img src="https://files.nin0.dev/88x31/nin0.png" alt="nin0" />
|
||||
</a>
|
||||
<a
|
||||
rel="noopener"
|
||||
rel="noopener nofollow"
|
||||
referrerpolicy="strict-origin"
|
||||
href="https://rushii.dev"
|
||||
>
|
||||
|
|
@ -217,16 +210,22 @@ export default function Home() {
|
|||
alt="rushii's site"
|
||||
/>
|
||||
</a>
|
||||
<a href="https://www.juwuba.xyz">
|
||||
<a href="https://www.juwuba.xyz" rel="noopener nofollow">
|
||||
<img src="https://www.juwuba.xyz/88x31.gif" alt="Júlia" />
|
||||
</a>
|
||||
<a href="https://katelyn.moe/">
|
||||
<a href="https://katelyn.moe/" rel="noopener nofollow">
|
||||
<img src="https://katelyn.moe/8831.png" alt="katelyn" />
|
||||
</a>
|
||||
<a href="https://meow-d.github.io">
|
||||
<a href="https://circulars.dev" rel="noopener nofollow">
|
||||
<img
|
||||
src="https://circulars.dev/circular-88x31.gif"
|
||||
alt="circulars.dev"
|
||||
/>
|
||||
</a>
|
||||
<a href="https://meow-d.github.io" rel="noopener nofollow">
|
||||
<img src="/88x31/meow_d.webp" alt="meow_d" />
|
||||
</a>
|
||||
<a href="https://caitlyn.moe">
|
||||
<a href="https://caitlyn.moe" rel="noopener nofollow">
|
||||
<img src="https://caitlyn.moe/88x31.png" alt="caitlyn" />
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
|||
1
routes/reports/.gitignore
vendored
Normal file
1
routes/reports/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
meow.tsx
|
||||
|
|
@ -62,9 +62,19 @@ export default function PostPage(props: PageProps) {
|
|||
<article>
|
||||
<header>
|
||||
<h1>{post.title}</h1>
|
||||
<p>
|
||||
{post.excerpt &&
|
||||
(post.excerpt.length > 120
|
||||
? post.excerpt.slice(0, 120) + "…"
|
||||
: post.excerpt)}
|
||||
</p>
|
||||
<div class="meta">
|
||||
<time datetime={post.createdAt}>{post.createdAt}</time> ·{" "}
|
||||
{formatReadingTime(post.readingTime)}
|
||||
<div class="label">
|
||||
{post.visibility === "url"
|
||||
? "DRAFT"
|
||||
: <time datetime={post.createdAt}>{post.createdAt}</time>}
|
||||
</div>{" "}
|
||||
· {formatReadingTime(post.readingTime)}
|
||||
</div>
|
||||
{post.tags && (
|
||||
<div class="tags">
|
||||
|
|
|
|||
|
|
@ -53,7 +53,9 @@ export default function Page() {
|
|||
/>
|
||||
</Head>
|
||||
<Links selected="reports" />
|
||||
<Reports reports={getCachedReports()} />
|
||||
<Reports
|
||||
reports={getCachedReports().filter((r) => r.visibility === "author")}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ for await (
|
|||
const entry of walk(dir, {
|
||||
exts: [".ts", ".tsx"],
|
||||
includeDirs: false,
|
||||
skip: [/node_modules/, /_fresh/, /copyright\.ts$/],
|
||||
skip: [/node_modules/, /_fresh/, /copyright\.ts$/, /generate-rss\.ts$/],
|
||||
})
|
||||
) {
|
||||
const filePath = entry.path;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,3 @@
|
|||
/**
|
||||
* Copyright (c) 2025 miwa
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
#!/usr/bin/env -S deno run --allow-net --allow-write
|
||||
/**
|
||||
* Copyright (c) 2025 miwa
|
||||
|
|
|
|||
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.
BIN
static/icons/brazil.png
Normal file
BIN
static/icons/brazil.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 341 B |
BIN
static/icons/spain.png
Normal file
BIN
static/icons/spain.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 435 B |
BIN
static/icons/uk.png
Normal file
BIN
static/icons/uk.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 493 B |
|
|
@ -9,21 +9,25 @@
|
|||
<link>https://acpi.at/reports/3m4yhdcgqr425</link>
|
||||
<guid>https://acpi.at/reports/3m4yhdcgqr425</guid>
|
||||
<pubDate>Thu, 06 Nov 2025 23:54:23 GMT</pubDate>
|
||||
<description>The worst days of my life happen to be the ones where I am overly aware about my surroundings and problems.</description>
|
||||
<description
|
||||
>The worst days of my life happen to be the ones where I am overly aware about my surroundings and problems.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Why Brazilian Portuguese speakers struggle to understand European Portuguese</title>
|
||||
<title
|
||||
>Why Brazilian Portuguese speakers struggle to understand European Portuguese</title>
|
||||
<link>https://acpi.at/reports/3m4yszxlivv25</link>
|
||||
<guid>https://acpi.at/reports/3m4yszxlivv25</guid>
|
||||
<pubDate>Sat, 16 Aug 2025 00:38:02 GMT</pubDate>
|
||||
<description>EP speakers lowkey be like: 'ixtou a apnhr murangjs pah'</description>
|
||||
<description
|
||||
>EP speakers lowkey be like: 'ixtou a apnhr murangjs pah'</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Echoes of thought in a world wired to produce</title>
|
||||
<link>https://acpi.at/reports/3m4yrn7md2k25</link>
|
||||
<guid>https://acpi.at/reports/3m4yrn7md2k25</guid>
|
||||
<pubDate>Tue, 20 May 2025 00:02:53 GMT</pubDate>
|
||||
<description>For the first time in a few months, I had some time alone to process my thoughts.</description>
|
||||
<description
|
||||
>For the first time in a few months, I had some time alone to process my thoughts.</description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
@ -67,28 +67,7 @@ export async function getPosts(cursor?: string): Promise<Report[]> {
|
|||
".",
|
||||
),
|
||||
cid,
|
||||
} as Report)).filter((r) => r.visibility === "author").sort((a, b) =>
|
||||
b.date as any - (a.date as any)
|
||||
);
|
||||
} as Report)).sort((a, b) => b.date as any - (a.date as any));
|
||||
|
||||
return reports;
|
||||
}
|
||||
|
||||
export async function retrieveReport(rkey: string): Promise<Report | null> {
|
||||
const response = await xrpc("com.atproto.repo.getRecord", {
|
||||
collection: "com.whtwnd.blog.entry",
|
||||
repo: "acpi.at",
|
||||
rkey,
|
||||
});
|
||||
|
||||
if (!response) return null;
|
||||
|
||||
return {
|
||||
...response.value,
|
||||
readingTime: response.value.content
|
||||
? calculateReadingTime(response.value.content)
|
||||
: 1,
|
||||
cid: response.cid,
|
||||
rkey,
|
||||
} as Report;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ interface Track {
|
|||
url: string;
|
||||
}
|
||||
|
||||
export const FM_USER = "satisfeita";
|
||||
|
||||
const secret = Deno.env.get("FM_SECRET");
|
||||
export let tracks: (() => Track[]) | undefined;
|
||||
|
||||
|
|
@ -22,7 +24,7 @@ if (secret) {
|
|||
const client = new LastClient(secret);
|
||||
|
||||
tracks = await withInterval(async () => {
|
||||
const { tracks: raw } = await client.user.getRecentTracks("favewa", {
|
||||
const { tracks: raw } = await client.user.getRecentTracks(FM_USER, {
|
||||
limit: 5,
|
||||
extended: true,
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue