Changelog - 2025-12-04 (#1)
Dark Matter Site: Theme Shell, Header/Footer, and Mode Switcher
Overview
Initial theming pass for the Dark Matter site:
- Introduced a minimal
BaseThemeLayoutwired to the new Matter theme tokens. - Added a branded header and footer that both participate in the theme/mode system.
- Implemented a three-mode toggle (
light,dark,vibrant) and wired it todata-modeon<html>. - Standardized Dark Matter trademarks across modes and exposed them via a reusable brand mark wrapper.
Changes by Area
1. Layout & Tailwind Wiring
- Added a
BaseThemeLayout.astrothat:- Imports
src/styles/global.cssandsrc/styles/themes/matter-theme.css. - Applies
class="theme-matter",data-theme="matter", anddata-mode={mode}on<html>. - Wraps the page in a semantic shell with
bg-background/text-foregroundsemantics.
- Imports
- Updated
astro.config.mjsto register Tailwind v4 via@tailwindcss/vite:- Follows the Hypernova pattern using a typed
vitePluginsarray. - Ensures Tailwind utilities and semantic classes are generated correctly for Dark Matter.
- Follows the Hypernova pattern using a typed
2. Header + Mode Toggle
- Created
src/components/basics/Header.astro:- Renders the Dark Matter brand mark on the left and placeholder nav links (
About,Modes,Tokens) on the right. - Hosts a
ModeTogglebutton that cycles throughlight → dark → vibrant. - Uses semantic tokens (
bg-background,border-border,text-foreground) so it tracks the active mode.
- Renders the Dark Matter brand mark on the left and placeholder nav links (
- Added
src/components/ui/ModeToggle.astro:- Three icons (sun, moon, star) controlled via
data-modeon the button. - Stores the current mode in
localStorageunderdark-matter-mode. - On click, updates both
document.documentElement.dataset.modeand the button’s owndata-mode.
- Three icons (sun, moon, star) controlled via
3. Footer
- Created
src/components/basics/Footer.astro:- Mirrors the header’s visual language with
bg-backgroundandborder-borderbut sits at the bottom of the page. - Reuses the Dark Matter brand mark for consistency.
- Displays a simple copyright line using the current year.
- Mirrors the header’s visual language with
- Wired the footer into
BaseThemeLayout.astroso every page gets a themed header, main, and footer stack.
4. Brand Assets & Brand Mark Wrapper
- Standardized Dark Matter trademarks in
public/trademarks/:- Updated
appIcon__Dark-Matter--Light-Mode.svgand removed an older unused variant. - Added new variants:
appIcon__Dark-Matter--Vibrant-Mode.svgandtrademark__Dark-Matter--Vibrant-Mode.svg.
- Updated
- Added
src/components/ui/SiteBrandMarkModeWrapper.astro:- Accepts optional
className,width, andheightprops. - Renders three trademark variants:
trademark__Dark-Matter--Light-Mode.svgas the light logo.trademark__Dark-Matter--Dark-Mode.svgas the dark logo.trademark__Dark-Matter--Vibrant-Mode.svgas the vibrant logo.
- Uses global CSS to show exactly one variant based on
html[data-mode]:- Default / light: light trademark.
data-mode="dark": dark trademark.data-mode="vibrant": vibrant trademark.
- Accepts optional
5. Git Submodule & Local Changelog Module
- Added a
.gitmodulesentry to track the Dark Matterchangelogmodule for this site. - Initialized
astro-knots/sites/dark-matter/changelog/with aREADME.mdthat describes this module as the canonical changelog for thematter-siteAstro project.
Files Changed Summary (Staged)
New
.gitmodules— registers the Dark Matter changelog module.changelog/README.md— describes the Dark Matter changelog module.public/trademarks/appIcon__Dark-Matter--Vibrant-Mode.svg— new app icon variant.public/trademarks/trademark__Dark-Matter--Vibrant-Mode.svg— new vibrant trademark.public/trademarks/trademark__Dark-Matter.afdesign~lock~— Affinity Designer lock file (tracked with Git LFS config).src/components/basics/Header.astro— themed header shell with brand mark and mode toggle.src/components/basics/Footer.astro— themed footer shell with brand mark and copyright.src/components/ui/ModeToggle.astro— three-mode toggle component.src/components/ui/SiteBrandMarkModeWrapper.astro— brand mark wrapper that swaps trademarks per mode.
Modified
astro.config.mjs— wired Tailwind v4 via@tailwindcss/viteusing a typedvitePluginsarray.public/trademarks/appIcon__Dark-Matter--Light-Mode.svg— updated primary app icon asset.public/trademarks/appIcon__Dark-Matter--Light-Mode2.svg— removed (no longer used).src/layouts/BaseThemeLayout.astro— new Matter-themed layout, now importing Header and Footer and settingdata-mode.
Notes / Follow-Ups
src/content/and PDF assets are currently untracked and not part of this changelog entry.- Future work may introduce additional content pages and a more structured hero section that uses the same theme tokens.