Compare commits

..

31 Commits

Author SHA1 Message Date
64140cce6b release 1.1.0
Some checks failed
test-build / build (push) Successful in 41s
release-image / release (push) Successful in 1m50s
process-repository / process-repository (push) Failing after 10s
renovate / renovate (push) Successful in 59s
2025-07-30 18:06:07 -05:00
0733fe6a06 switch to ssr
All checks were successful
renovate / renovate (push) Successful in 18s
test-build / build (push) Successful in 33s
2025-07-30 18:05:29 -05:00
0f5c015932 Update astro monorepo
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
renovate / renovate (push) Successful in 32s
test-build / build (pull_request) Successful in 51s
test-build / build (push) Successful in 1m3s
2025-07-30 21:00:16 +00:00
dc17aeb3d5 Merge pull request 'Update react monorepo to v19.1.1' (#53) from renovate/react-monorepo into main
Some checks failed
test-build / build (push) Successful in 37s
renovate / renovate (push) Has been cancelled
Reviewed-on: #53
2025-07-30 20:59:11 +00:00
a852f22409 Update react monorepo to v19.1.1
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 31s
2025-07-30 00:03:21 +00:00
130a3866bc Merge pull request 'Update dependency framer-motion to v12.23.11' (#52) from renovate/framer-motion-12.x-lockfile into main
All checks were successful
test-build / build (push) Successful in 33s
renovate / renovate (push) Successful in 50s
2025-07-30 00:02:18 +00:00
2fb0542d36 Update dependency framer-motion to v12.23.11
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 1m40s
2025-07-30 00:02:09 +00:00
8a2be36f17 Merge pull request 'Update dependency astro to v5.12.4' (#51) from renovate/astro-monorepo into main
Some checks failed
test-build / build (push) Has been cancelled
renovate / renovate (push) Has been cancelled
2025-07-30 00:01:56 +00:00
266d25e0f2 Update dependency astro to v5.12.4
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 1m45s
2025-07-30 00:01:35 +00:00
34dbe6d809 Merge pull request 'Update dependency eslint to v9.32.0' (#50) from renovate/eslint-monorepo into main
Some checks failed
test-build / build (push) Successful in 1m28s
process-repository / process-repository (push) Failing after 35s
renovate / renovate (push) Successful in 2m46s
Reviewed-on: #50
2025-07-27 14:33:52 +00:00
3c654e19e1 Update dependency eslint to v9.32.0
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 34s
2025-07-27 00:01:17 +00:00
2a0142ee83 Update dependency framer-motion to v12.23.9
Some checks failed
process-repository / process-repository (push) Failing after 16s
renovate / renovate (push) Successful in 1m31s
renovate/stability-days Updates have met minimum release age requirement
test-build / build (push) Successful in 34s
test-build / build (pull_request) Successful in 41s
2025-07-26 00:01:11 +00:00
7836f49828 1.0.1 release
Some checks failed
test-build / build (push) Successful in 32s
release-image / release (push) Successful in 1m27s
process-repository / process-repository (push) Failing after 18s
renovate / renovate (push) Successful in 1m23s
2025-07-25 00:05:00 -05:00
25280a239c fix math
Some checks failed
test-build / build (push) Has been cancelled
renovate / renovate (push) Has been cancelled
2025-07-25 00:04:28 -05:00
c56dc99e72 disable descriptions using comments 2025-07-25 00:04:20 -05:00
48b7a13729 update colo
All checks were successful
renovate / renovate (push) Successful in 19s
test-build / build (push) Successful in 34s
2025-07-24 23:48:32 -05:00
ac026b0264 update workflow
All checks were successful
test-build / build (push) Successful in 31s
renovate / renovate (push) Successful in 34s
2025-07-24 21:24:50 -05:00
5332854856 1.0.0 release
All checks were successful
renovate / renovate (push) Successful in 24s
test-build / build (push) Successful in 38s
2025-07-24 20:51:35 -05:00
2e0c2f3de5 rewrite a few sections 2025-07-24 20:51:35 -05:00
88d510b06f update favicon 2025-07-24 20:51:35 -05:00
7843378503 Merge pull request 'Update typescript-eslint monorepo to v8.38.0' (#45) from renovate/typescript-eslint-monorepo into main
All checks were successful
renovate / renovate (push) Successful in 28s
test-build / build (push) Successful in 35s
Reviewed-on: #45
2025-07-25 00:47:24 +00:00
75016fdb4f Update typescript-eslint monorepo to v8.38.0
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 45s
2025-07-25 00:02:19 +00:00
4d74f74ab2 Merge pull request 'Update dependency framer-motion to v12.23.7' (#48) from renovate/framer-motion-12.x-lockfile into main
All checks were successful
renovate / renovate (push) Successful in 40s
test-build / build (push) Successful in 42s
2025-07-25 00:01:38 +00:00
2c1b7f577d Update dependency framer-motion to v12.23.7
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 45s
2025-07-25 00:01:27 +00:00
0e79b32012 Merge pull request 'Update dependency astro to v5.12.3' (#47) from renovate/astro-monorepo into main
Some checks failed
renovate / renovate (push) Has been cancelled
test-build / build (push) Has been cancelled
2025-07-25 00:01:22 +00:00
c1ef2d2ba2 Update dependency astro to v5.12.3
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 43s
2025-07-25 00:01:07 +00:00
020c709b43 0.12.0 release
Some checks failed
test-build / build (push) Successful in 48s
release-image / release (push) Successful in 1m37s
process-repository / process-repository (push) Failing after 26s
renovate / renovate (push) Successful in 1m43s
2025-07-23 20:32:04 -05:00
9f346ee156 add colors and logo 2025-07-23 20:30:55 -05:00
e820e4f163 add theme 2025-07-23 20:30:55 -05:00
796926316e Merge pull request 'Update dependency astro to v5.12.2' (#46) from renovate/astro-monorepo into main
All checks were successful
test-build / build (push) Successful in 34s
renovate / renovate (push) Successful in 41s
2025-07-24 00:01:08 +00:00
bf8578045e Update dependency astro to v5.12.2
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 30s
2025-07-24 00:00:57 +00:00
20 changed files with 271 additions and 262 deletions

View File

@@ -3,7 +3,7 @@ name: release-image
on: on:
push: push:
tags: tags:
- 0.* - 1.*
workflow_dispatch: workflow_dispatch:

View File

@@ -1,7 +1,7 @@
ARG REGISTRY=docker.io ARG REGISTRY=docker.io
FROM ${REGISTRY}/node:22.17.1-alpine3.22 AS base FROM ${REGISTRY}/node:22.17.1-alpine3.22 AS base
LABEL version="0.11.3" LABEL version="1.1.0"
LABEL description="Astro based personal website" LABEL description="Astro based personal website"
ENV PNPM_HOME="/pnpm" ENV PNPM_HOME="/pnpm"

View File

@@ -23,6 +23,8 @@ export default defineConfig({
plugins: [tailwindcss()], plugins: [tailwindcss()],
}, },
output: 'server',
adapter: node({ adapter: node({
mode: 'standalone', mode: 'standalone',
}), }),

View File

@@ -9,6 +9,7 @@ type Global = {
email: string; email: string;
portrait: string; portrait: string;
portrait_alt: string; portrait_alt: string;
logo: string;
about: string; about: string;
}; };

View File

@@ -1,7 +1,7 @@
{ {
"name": "site-profile", "name": "site-profile",
"type": "module", "type": "module",
"version": "0.11.3", "version": "1.1.0",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "astro dev", "dev": "astro dev",
@@ -32,7 +32,7 @@
"devDependencies": { "devDependencies": {
"@tailwindcss/typography": "^0.5.16", "@tailwindcss/typography": "^0.5.16",
"@typescript-eslint/parser": "8.38.0", "@typescript-eslint/parser": "8.38.0",
"eslint": "9.31.0", "eslint": "9.32.0",
"eslint-config-prettier": "10.1.8", "eslint-config-prettier": "10.1.8",
"eslint-plugin-astro": "1.3.1", "eslint-plugin-astro": "1.3.1",
"prettier": "^3.5.3", "prettier": "^3.5.3",

432
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

1
public/favicon.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

@@ -59,16 +59,15 @@ const socialLinks = [
<div class="col-span-1 md:col-span-3"> <div class="col-span-1 md:col-span-3">
<a href="/" class="group inline-block"> <a href="/" class="group inline-block">
<div class="flex items-center"> <div class="flex items-center">
<div <div class="mx-auto aspect-square overflow-hidden rounded-lg">
class="relative flex h-10 w-10 transform items-center justify-center overflow-hidden rounded-lg bg-gradient-to-br from-zinc-800 to-zinc-600 shadow-lg transition-transform dark:from-zinc-200 dark:to-zinc-400" <img
> src=`${process.env.DIRECTUS_URL ?? "https://directus.alexlebens.dev"}/assets/${global.logo}`
<span alt="logo"
class="theme-transition-all text-xl font-bold text-zinc-100 duration-300 dark:text-zinc-900" class="max-h-[40px] max-w-[40px] object-cover"
> loading="eager"
{global.initals} />
</span>
<div class="absolute inset-0"></div>
</div> </div>
<span <span
class="theme-transition-color ml-3 text-xl font-bold text-zinc-900 dark:text-zinc-100" class="theme-transition-color ml-3 text-xl font-bold text-zinc-900 dark:text-zinc-100"
> >
@@ -112,7 +111,7 @@ const socialLinks = [
<!-- Quick links --> <!-- Quick links -->
<div class="col-span-1 md:col-span-3"> <div class="col-span-1 md:col-span-3">
<h3 <h3
class="theme-transition-color relative inline-block pb-2 text-sm font-semibold tracking-wider text-zinc-900 uppercase after:absolute after:bottom-0 after:left-0 after:h-0.5 after:w-8 after:bg-zinc-300 after:content-[''] dark:text-zinc-100 dark:after:bg-zinc-700" class="theme-transition-color after:bg-turquoise dark:after:bg-turquoise relative inline-block pb-2 text-sm font-semibold tracking-wider text-zinc-900 uppercase after:absolute after:bottom-0 after:left-0 after:h-0.5 after:w-8 after:content-[''] dark:text-zinc-100"
> >
Navigation Navigation
</h3> </h3>

View File

@@ -25,7 +25,19 @@ const currentPath = pathname.slice(1);
> >
<div class="mx-auto flex max-w-3xl items-center justify-between px-4"> <div class="mx-auto flex max-w-3xl items-center justify-between px-4">
<!-- Logo --> <!-- Logo -->
<a href="/" class="text-xl font-bold text-zinc-900 dark:text-white">{global.initals}</a> <a
href="/"
class="from-midnight to-turquoise relative flex h-10 w-10 items-center justify-center overflow-hidden rounded-lg bg-gradient-to-br text-xl shadow-lg transition-transform"
>
<div class="mx-auto aspect-square overflow-hidden rounded-lg">
<img
src=`${process.env.DIRECTUS_URL ?? "https://directus.alexlebens.dev"}/assets/${global.logo}`
alt="logo"
class="max-h-[40px] max-w-[40px] object-cover"
loading="eager"
/>
</div>
</a>
<!-- Desktop navigation --> <!-- Desktop navigation -->
<nav class="hidden items-center space-x-6 sm:flex"> <nav class="hidden items-center space-x-6 sm:flex">

View File

@@ -20,7 +20,7 @@ const { tags = [], class: className = '' } = Astro.props;
))} ))}
{tags.length > 2 && ( {tags.length > 2 && (
<span class="inline-flex items-center rounded-full bg-zinc-50 px-2 py-0.5 text-xs text-zinc-500 dark:bg-zinc-900 dark:text-zinc-400"> <span class="inline-flex items-center rounded-full bg-zinc-50 px-2 py-0.5 text-xs text-zinc-500 dark:bg-zinc-900 dark:text-zinc-400">
+{tags.length - 3} +{tags.length - 2}
</span> </span>
)} )}
</div> </div>

View File

@@ -5,7 +5,7 @@
<button <button
id="theme-toggle" id="theme-toggle"
data-theme-toggle data-theme-toggle
class="group relative touch-manipulation overflow-hidden rounded-full p-1.5 transition-all duration-300 hover:bg-zinc-100 focus:ring-2 focus:ring-zinc-300 focus:outline-hidden sm:p-2 dark:hover:bg-zinc-800 dark:focus:ring-zinc-700" class="group hover:bg-desert/50 dark:hover:bg-midnight/50 relative touch-manipulation overflow-hidden rounded-full p-1.5 transition-all duration-300 focus:ring-2 focus:ring-zinc-300 focus:outline-hidden sm:p-2 dark:focus:ring-zinc-700"
aria-label="Toggle dark mode" aria-label="Toggle dark mode"
> >
<div class="relative z-10 flex h-5 w-5 items-center justify-center"> <div class="relative z-10 flex h-5 w-5 items-center justify-center">

View File

@@ -40,7 +40,7 @@ try {
<p <p
class="mb-2 line-clamp-2 text-center text-sm text-zinc-600 sm:mb-3 sm:line-clamp-3 sm:text-left sm:text-base dark:text-zinc-400" class="mb-2 line-clamp-2 text-center text-sm text-zinc-600 sm:mb-3 sm:line-clamp-3 sm:text-left sm:text-base dark:text-zinc-400"
> >
{post.description} <!-- {post.description} -->
</p> </p>
<div <div

View File

@@ -20,7 +20,7 @@ const { title, description } = Astro.props;
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/favicon.png" /> <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="generator" content={Astro.generator} /> <meta name="generator" content={Astro.generator} />
<meta name="description" content={description} /> <meta name="description" content={description} />
<title>{title}</title> <title>{title}</title>

View File

@@ -29,7 +29,7 @@ import Layout from '../layouts/Layout.astro';
<div class="mt-10 flex flex-col items-center justify-center gap-4 sm:flex-row"> <div class="mt-10 flex flex-col items-center justify-center gap-4 sm:flex-row">
<a <a
href="/" href="/"
class="relative inline-flex items-center gap-2 overflow-hidden rounded-lg bg-zinc-900 px-6 py-3 text-zinc-100 shadow-lg transition-all duration-300 hover:bg-cyan-600 hover:text-zinc-100 hover:shadow-xl dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-cyan-600" class="relative inline-flex items-center gap-2 overflow-hidden rounded-lg bg-zinc-900 px-6 py-3 text-zinc-100 shadow-lg transition-all duration-300 hover:bg-bg-turquoise hover:text-zinc-100 hover:shadow-xl dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-turquoise"
> >
<svg <svg
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"

View File

@@ -57,12 +57,10 @@ const skills = await directus.request(
<h2 <h2
class="theme-transition-color mb-6 flex items-center justify-center text-2xl font-bold text-zinc-900 sm:mb-8 sm:text-3xl md:justify-start dark:text-zinc-100" class="theme-transition-color mb-6 flex items-center justify-center text-2xl font-bold text-zinc-900 sm:mb-8 sm:text-3xl md:justify-start dark:text-zinc-100"
> >
<span <span class="theme-transition-bg bg-turquoise mr-4 hidden h-1 w-8 sm:inline-block sm:w-12"
class="theme-transition-bg mr-4 hidden h-1 w-8 bg-zinc-300 sm:inline-block sm:w-12 dark:bg-zinc-700"
></span> ></span>
About Me About Me
<span <span class="theme-transition-bg bg-turquoise ml-4 hidden h-1 w-8 sm:inline-block sm:w-12"
class="theme-transition-bg ml-4 hidden h-1 w-8 bg-zinc-300 sm:inline-block sm:w-12 dark:bg-zinc-700"
></span> ></span>
</h2> </h2>
@@ -119,7 +117,7 @@ const skills = await directus.request(
<div class="theme-transition-bg relative h-1.5 w-full overflow-hidden rounded-full bg-zinc-100 sm:h-2 dark:bg-zinc-700"> <div class="theme-transition-bg relative h-1.5 w-full overflow-hidden rounded-full bg-zinc-100 sm:h-2 dark:bg-zinc-700">
<div <div
class="progress-bar-animate theme-transition-bg absolute top-0 left-0 h-full rounded-full bg-gradient-to-r from-zinc-700 via-zinc-600 to-zinc-800 transition-all duration-1000 dark:from-zinc-300 dark:via-zinc-400 dark:to-zinc-200" class="progress-bar-animate theme-transition-bg from-turquoise via-bermuda to-turquoise absolute top-0 left-0 h-full rounded-full bg-gradient-to-r transition-all duration-1000"
style={`width: ${skill.level}%`} style={`width: ${skill.level}%`}
/> />
</div> </div>
@@ -162,7 +160,7 @@ const skills = await directus.request(
<div class="group"> <div class="group">
<a <a
href=`mailto:${global.email}` href=`mailto:${global.email}`
class="theme-transition-all inline-flex items-center justify-center rounded-lg bg-zinc-900 px-6 py-3 text-base font-medium text-zinc-100 transition-colors group-hover:bg-blue-600 group-hover:text-zinc-100 sm:px-8 sm:py-4 sm:text-lg dark:bg-zinc-100 dark:text-zinc-900 dark:group-hover:bg-blue-600 dark:group-hover:text-zinc-100" class="theme-transition-all group-hover:bg-turquoise inline-flex items-center justify-center rounded-lg bg-zinc-900 px-6 py-3 text-base font-medium text-zinc-100 transition-colors duration-300 group-hover:text-zinc-100 sm:px-8 sm:py-4 sm:text-lg dark:bg-zinc-100 dark:text-zinc-900 dark:group-hover:text-zinc-100"
> >
<svg <svg
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
@@ -179,10 +177,7 @@ const skills = await directus.request(
></path> ></path>
</svg> </svg>
<span class="relative inline-block overflow-hidden"> <span class="relative inline-block overflow-hidden">
<span class="relative z-10">Say Hello</span> <span class="relative z-10">Send Email</span>
<span
class="absolute bottom-0 left-0 h-0.5 w-0 bg-zinc-100 transition-all duration-300 group-hover:w-full"
></span>
</span> </span>
</a> </a>
</div> </div>

View File

@@ -37,7 +37,7 @@ const years = Object.keys(postsByYear).sort((a, b) => b - a);
<p <p
class="hero-text mx-auto mb-6 max-w-2xl text-sm text-zinc-600 sm:mb-10 sm:text-base dark:text-zinc-400" class="hero-text mx-auto mb-6 max-w-2xl text-sm text-zinc-600 sm:mb-10 sm:text-base dark:text-zinc-400"
> >
Thoughts, ideas, and explorations on technology and selfhosting. A couple thoughts, a few ideas, and some guides on technology, development, and selfhosting.
</p> </p>
</div> </div>
</div> </div>
@@ -73,7 +73,7 @@ const years = Object.keys(postsByYear).sort((a, b) => b - a);
</h2> </h2>
<p class="mb-2 line-clamp-2 text-center text-sm text-zinc-600 sm:mb-3 sm:line-clamp-3 sm:text-left sm:text-base dark:text-zinc-400"> <p class="mb-2 line-clamp-2 text-center text-sm text-zinc-600 sm:mb-3 sm:line-clamp-3 sm:text-left sm:text-base dark:text-zinc-400">
{sortedPosts[0].description} {/* {sortedPosts[0].description} */}
</p> </p>
<div class="mb-2 flex flex-wrap items-center justify-center gap-3 text-xs text-zinc-500 sm:mb-3 sm:justify-start sm:gap-4 sm:text-sm dark:text-zinc-400"> <div class="mb-2 flex flex-wrap items-center justify-center gap-3 text-xs text-zinc-500 sm:mb-3 sm:justify-start sm:gap-4 sm:text-sm dark:text-zinc-400">
@@ -92,7 +92,7 @@ const years = Object.keys(postsByYear).sort((a, b) => b - a);
> >
<span class="relative inline-block overflow-hidden"> <span class="relative inline-block overflow-hidden">
<span class="relative z-10">Read article</span> <span class="relative z-10">Read article</span>
<span class="absolute bottom-0 left-0 h-0.5 w-0 bg-zinc-800 transition-all duration-300 group-hover:w-full dark:bg-zinc-200" /> <span class="bg-turquoise absolute bottom-0 left-0 h-0.5 w-0 transition-all duration-300 group-hover:w-full" />
</span> </span>
<svg <svg
viewBox="0 0 16 16" viewBox="0 0 16 16"
@@ -195,7 +195,7 @@ const years = Object.keys(postsByYear).sort((a, b) => b - a);
</h3> </h3>
<p class="z-10 mb-4 line-clamp-2 grow text-center text-sm text-zinc-600 md:text-left dark:text-zinc-400"> <p class="z-10 mb-4 line-clamp-2 grow text-center text-sm text-zinc-600 md:text-left dark:text-zinc-400">
{post.description} {/* {post.description} */}
</p> </p>
<div class="mb-2 flex flex-wrap items-center justify-center gap-3 text-xs text-zinc-500 sm:mb-3 sm:justify-start sm:gap-4 sm:text-sm dark:text-zinc-400"> <div class="mb-2 flex flex-wrap items-center justify-center gap-3 text-xs text-zinc-500 sm:mb-3 sm:justify-start sm:gap-4 sm:text-sm dark:text-zinc-400">
@@ -212,7 +212,7 @@ const years = Object.keys(postsByYear).sort((a, b) => b - a);
> >
<span class="relative inline-block overflow-hidden"> <span class="relative inline-block overflow-hidden">
<span class="relative z-10">Read article</span> <span class="relative z-10">Read article</span>
<span class="absolute bottom-0 left-0 h-0.5 w-0 bg-zinc-800 transition-all duration-300 group-hover:w-full dark:bg-zinc-200" /> <span class="bg-turquoise absolute bottom-0 left-0 h-0.5 w-0 transition-all duration-300 group-hover:w-full" />
</span> </span>
<svg <svg
viewBox="0 0 16 16" viewBox="0 0 16 16"

View File

@@ -37,7 +37,7 @@ const allTags = [...new Set(posts.flatMap((post) => post.tags || []))].slice(0,
<span class="relative inline-block"> <span class="relative inline-block">
selfhosting. selfhosting.
<span <span
class="theme-transition-bg absolute -bottom-1 left-0 h-1 w-full origin-left transform bg-zinc-800 dark:bg-zinc-200" class="theme-transition-bg bg-turquoise absolute -bottom-1 left-0 h-1 w-full origin-left transform"
></span> ></span>
</span> </span>
</span> </span>
@@ -141,7 +141,7 @@ const allTags = [...new Set(posts.flatMap((post) => post.tags || []))].slice(0,
</h3> </h3>
<p class="z-10 mb-2 line-clamp-2 text-center text-sm text-zinc-600 sm:mb-3 sm:line-clamp-3 sm:text-left sm:text-base dark:text-zinc-400"> <p class="z-10 mb-2 line-clamp-2 text-center text-sm text-zinc-600 sm:mb-3 sm:line-clamp-3 sm:text-left sm:text-base dark:text-zinc-400">
{post.description} {/* {post.description} */}
</p> </p>
<div class="mb-2 flex flex-wrap items-center justify-center gap-3 text-xs text-zinc-500 sm:mb-3 sm:justify-start sm:gap-4 sm:text-sm dark:text-zinc-400"> <div class="mb-2 flex flex-wrap items-center justify-center gap-3 text-xs text-zinc-500 sm:mb-3 sm:justify-start sm:gap-4 sm:text-sm dark:text-zinc-400">
@@ -156,7 +156,7 @@ const allTags = [...new Set(posts.flatMap((post) => post.tags || []))].slice(0,
> >
<span class="relative inline-block overflow-hidden"> <span class="relative inline-block overflow-hidden">
<span class="relative z-10">Read article</span> <span class="relative z-10">Read article</span>
<span class="absolute bottom-0 left-0 h-0.5 w-0 bg-zinc-800 transition-all duration-300 group-hover:w-full dark:bg-zinc-200" /> <span class="bg-turquoise absolute bottom-0 left-0 h-0.5 w-0 transition-all duration-300 group-hover:w-full" />
</span> </span>
<svg <svg
viewBox="0 0 16 16" viewBox="0 0 16 16"

View File

@@ -5,8 +5,6 @@ import FormattedDate from '../../components/FormattedDate.astro';
import directus from '../../../lib/directus'; import directus from '../../../lib/directus';
import { readItems } from '@directus/sdk'; import { readItems } from '@directus/sdk';
export const prerender = true;
export async function getStaticPaths() { export async function getStaticPaths() {
const posts = await directus.request( const posts = await directus.request(
readItems('posts', { readItems('posts', {
@@ -103,7 +101,7 @@ const relatedTags = [
<span class="absolute -bottom-1 left-0 h-1 w-full bg-zinc-200 dark:bg-zinc-700" <span class="absolute -bottom-1 left-0 h-1 w-full bg-zinc-200 dark:bg-zinc-700"
></span> ></span>
<span <span
class="animate-expand absolute -bottom-1 left-0 h-1 w-full bg-zinc-900 opacity-70 dark:bg-zinc-100" class="animate-expand bg-turquoise absolute -bottom-1 left-0 h-1 w-full opacity-70"
></span> ></span>
</span> </span>
</h1> </h1>
@@ -214,7 +212,7 @@ const relatedTags = [
> >
<span class="relative inline-block overflow-hidden"> <span class="relative inline-block overflow-hidden">
<span class="relative z-10">Read article</span> <span class="relative z-10">Read article</span>
<span class="absolute bottom-0 left-0 h-0.5 w-0 bg-zinc-800 transition-all duration-300 group-hover:w-full dark:bg-zinc-200" /> <span class="bg-turquoise absolute bottom-0 left-0 h-0.5 w-0 transition-all duration-300 group-hover:w-full" />
</span> </span>
<svg <svg
viewBox="0 0 16 16" viewBox="0 0 16 16"

View File

@@ -4,6 +4,15 @@
/* https://tailwindcss.com/docs/dark-mode */ /* https://tailwindcss.com/docs/dark-mode */
@custom-variant dark (&:where(.dark, .dark *)); @custom-variant dark (&:where(.dark, .dark *));
/* Add custom color palette */
@theme {
--color-midnight: #0c354d;
--color-turquoise: #0da797;
--color-bermuda: #7fbab4;
--color-desert: #f9deb2;
--color-bronze: #9e7f5e;
}
@layer base { @layer base {
:root { :root {
font-family: 'Inter', sans-serif; font-family: 'Inter', sans-serif;