From d121bd616a6ad1c7f6b5bb2d870d7a73a8deee30 Mon Sep 17 00:00:00 2001 From: Kieron Lanning Date: Fri, 18 Sep 2026 09:36:10 +0100 Subject: [PATCH 1/4] feat: updated styles and filtering --- src/astro.config.ts | 15 ++ src/src/components/SiteFooter.astro | 36 ++- src/src/components/islands/InstallPanel.tsx | 56 +++-- .../components/islands/PackageVersions.tsx | 197 ++++++++++++---- src/src/components/islands/ProjectFilter.tsx | 27 ++- src/src/components/starlight/Sidebar.astro | 9 + .../components/starlight/TopicSelect.astro | 67 ++++++ src/src/data/projects.yml | 2 +- src/src/lib/site.ts | 2 +- src/src/pages/index.astro | 98 ++++---- src/src/pages/projects/[project].astro | 213 ++++++++---------- src/src/pages/projects/index.astro | 52 ++--- src/src/styles/global.css | 165 ++++++++++++++ 13 files changed, 661 insertions(+), 278 deletions(-) create mode 100644 src/src/components/starlight/Sidebar.astro create mode 100644 src/src/components/starlight/TopicSelect.astro diff --git a/src/astro.config.ts b/src/astro.config.ts index 76ac6eb..9b62644 100644 --- a/src/astro.config.ts +++ b/src/astro.config.ts @@ -110,6 +110,20 @@ export default defineConfig({ customCss: ['./src/styles/global.css'], expressiveCode: { themes: ['starlight-light', 'starlight-dark'], + styleOverrides: { + borderRadius: '0.75rem', + codeFontFamily: 'var(--font-mono)', + uiFontFamily: 'var(--font-sans)', + frames: { + // Literal hex, not `var(--color-brand)`: Expressive Code parses these + // as colors (e.g. for opacity/contrast math), which breaks on CSS + // custom properties. #8b3dff is the brand purple in both themes. + editorActiveTabIndicatorTopColor: '#8b3dff', + editorActiveTabIndicatorBottomColor: '#8b3dff', + terminalTitlebarDotsForeground: '#8b3dff', + terminalTitlebarDotsOpacity: '0.6', + }, + }, }, components: { Header: './src/components/starlight/Header.astro', @@ -117,6 +131,7 @@ export default defineConfig({ EditLink: './src/components/starlight/EditLink.astro', PageTitle: './src/components/starlight/PageTitle.astro', Search: './src/components/starlight/Search.astro', + Sidebar: './src/components/starlight/Sidebar.astro', }, plugins: [ starlightSidebarTopics(sidebarTopics), diff --git a/src/src/components/SiteFooter.astro b/src/src/components/SiteFooter.astro index d661e88..d6ccbec 100644 --- a/src/src/components/SiteFooter.astro +++ b/src/src/components/SiteFooter.astro @@ -1,13 +1,20 @@ --- import SiteBrand from '~/components/SiteBrand.astro'; import { NAV_ITEMS } from '~/components/SiteNav.astro'; +import { loadProjects } from '~/lib/manifest/load'; import { SITE } from '~/lib/site'; import { withBase } from '~/lib/urls'; + +// Shuffled at build time so the footer doesn't always spotlight the same projects. +const footerProjects = loadProjects() + .filter((project) => project.status !== 'archived') + .toSorted(() => Math.random() - 0.5) + .slice(0, 3); ---