From e5f765dc04cb1f85272cf64d32b7f75b6cf8f839 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Sun, 13 Sep 2026 16:27:17 -0700 Subject: [PATCH 1/4] Add a community section to the nav with live GitHub and Discord counts GitHub and Discord move below a divider in the sidebar, each with a live count underneath: stars from the GitHub API and members from the Discord invite API, fetched in the browser and cached in localStorage for an hour. The personal social links from the sign-off join them as a row of small icons, sharing one list in src/socials.ts. The repeated nav markup is now a NavLink component, and pro.svg is renamed pro-word.svg to match the other word images. Use Cases on the home page become a Feature list with an icon each. The four use-case icons are placeholders, same as the social icons, until hand-drawn versions replace them. Co-Authored-By: Claude Opus 5 --- public/home/use-case/conferencing.svg | 1 + public/home/use-case/contribution.svg | 1 + public/home/use-case/distribution.svg | 1 + public/home/use-case/robotics.svg | 1 + public/layout/{pro.svg => pro-word.svg} | 0 src/components/author.astro | 10 +--- src/components/feature.astro | 30 ++++++---- src/components/nav-link.astro | 22 ++++++++ src/layouts/global.astro | 73 ++++++++++++------------ src/pages/index.mdx | 11 ++-- src/socials.ts | 11 ++++ src/stats.ts | 75 +++++++++++++++++++++++++ 12 files changed, 177 insertions(+), 59 deletions(-) create mode 100644 public/home/use-case/conferencing.svg create mode 100644 public/home/use-case/contribution.svg create mode 100644 public/home/use-case/distribution.svg create mode 100644 public/home/use-case/robotics.svg rename public/layout/{pro.svg => pro-word.svg} (100%) create mode 100644 src/components/nav-link.astro create mode 100644 src/socials.ts create mode 100644 src/stats.ts diff --git a/public/home/use-case/conferencing.svg b/public/home/use-case/conferencing.svg new file mode 100644 index 0000000..0fd3bbe --- /dev/null +++ b/public/home/use-case/conferencing.svg @@ -0,0 +1 @@ + diff --git a/public/home/use-case/contribution.svg b/public/home/use-case/contribution.svg new file mode 100644 index 0000000..e7886c8 --- /dev/null +++ b/public/home/use-case/contribution.svg @@ -0,0 +1 @@ + diff --git a/public/home/use-case/distribution.svg b/public/home/use-case/distribution.svg new file mode 100644 index 0000000..2766e03 --- /dev/null +++ b/public/home/use-case/distribution.svg @@ -0,0 +1 @@ + diff --git a/public/home/use-case/robotics.svg b/public/home/use-case/robotics.svg new file mode 100644 index 0000000..0873276 --- /dev/null +++ b/public/home/use-case/robotics.svg @@ -0,0 +1 @@ + diff --git a/public/layout/pro.svg b/public/layout/pro-word.svg similarity index 100% rename from public/layout/pro.svg rename to public/layout/pro-word.svg diff --git a/src/components/author.astro b/src/components/author.astro index 60f95ad..1a02733 100644 --- a/src/components/author.astro +++ b/src/components/author.astro @@ -1,14 +1,6 @@ --- // The sign-off at the bottom of every post: avatar plus wherever you can find me. -// The icons in public/social/ are placeholders waiting on hand-drawn versions, -// same as the ones in public/layout/. -const socials = [ - { name: "Email", icon: "email", href: "mailto:me@kixel.me" }, - { name: "X", icon: "x", href: "https://x.com/kixelated" }, - { name: "Bluesky", icon: "bluesky", href: "https://bsky.app/profile/kixel.me" }, - { name: "LinkedIn", icon: "linkedin", href: "https://www.linkedin.com/in/luke-curley-635a457/" }, - { name: "Discord", icon: "discord", href: "https://discord.moq.dev" }, -]; +import { socials } from "@/socials"; ---