Everything Komono ships with.
A tour of the theme — and, behind each feature, exactly how to configure it. This page lives in your copy of the theme too, so the docs are always where your code is.
01
Every setting in one file
Colors, fonts, logo, meta tags, social links and navigation all live in theme.config.ts — typed, validated, and impossible to typo silently. Change a value, save, and the whole site follows.
Setup & config
Open theme.config.ts in the project root. The grey ramp drives text, backgrounds and borders; the three accents are yours to brand. Utilities like bg-accent-1 andtext-grey-700 update automatically.
colors: { grey: { '50': '#fafaf9', /* … */ '950': '#0d0c0a' }, accent1: '#ff5c1f', accent2: '#2424d6', accent3: '#ffd23f', }Invalid values fail the build with a readable error pointing at the exact field.
Light, dark and system color schemes are built in: the grey ramp inverts automatically in dark mode, colors.dark overrides any accent, and the toggle in the nav cycles auto → light → dark (persisted, no flash on load). Set dark: false to ship light-only.
02
Fast — measured, not promised
Every Komono release is audited with Lighthouse before it ships, on a throttled mobile connection and on desktop. These are the real numbers from v1.0.0, and they ship with the theme so you can re-run them yourself.
Mobile
98
Performance
95
Accessibility
100
Best practices
100
SEO
Desktop
100
Performance
95
Accessibility
100
Best practices
100
SEO
mobile: FCP 1.5 s · LCP 2.3 s · TBT 0 ms · CLS 0 — Lighthouse 13.4.0, median of 3 runs, 2026-06-10
Setup & config
Why it's fast: static HTML (no client framework), build-time image optimization to responsive WebP, self-hosted fonts with preloading and generated fallbacks (zero layout shift), and one small JS bundle for the animations. Verify it on your own machine:
npm run build && npm run preview npx lighthouse http://localhost:4321 --viewThe scores above are stored insrc/data/lighthouse.json and refreshed with every theme release.
03
Google Fonts, Adobe Fonts, local files, or system stacks
Fonts are declared in the same config file and self-hosted at build time by Astro's Fonts API — no third-party requests in production, no layout shift thanks to auto-generated fallbacks.
Setup & config
fonts: { heading: { provider: 'google', family: 'Bricolage Grotesque', weights: [400, 600, 800] }, body: { provider: 'google', family: 'Inter', weights: [400, 500] }, }heading: { provider: 'adobe', family: 'Futura PT' }For Adobe, copy .env.example to.env and setADOBE_FONTS_KIT_ID (from fonts.adobe.com → Web Projects). Add the same variable in your deploy platform's settings. Local files useprovider: 'local' withvariants; system stacks need no files at all.
04
Typography that scales itself
A fluid type and spacing scale, tuned for two sizes per device class. Text grows smoothly between 360px and 1440px viewports — no breakpoint jumps, and user font-size zoom keeps working.
step −1 · The quick brown fox
step 0 · The quick brown fox
step 1 · The quick brown fox
step 2 · The quick brown fox
step 3 · Quick brown
step 4 · Quick
Setup & config
Use text-step--1 throughtext-step-5 for font sizes andp-space-xs …m-space-3xl for fluid spacing — they're regular Tailwind utilities. The scale lives insrc/_core/styles/tokens.css; override any step insrc/styles/custom.css by redefining its variable.
05
The image-trail hero
Komono's signature moment: on the home page, images from your featured projects trail the visitor's pointer. Touch devices and reduced-motion users get a clean typographic hero instead — automatically.
Try it on the home page — move your cursor across the hero.
Setup & config
The hero pulls images from projects markedfeatured: true that definetrailImages:
featured: true trailImages: - ../../assets/your-project/trail-1.jpg - ../../assets/your-project/trail-2.jpgTwo to four images per featured project works best. The headline and subline are props on the <ImageTrailHero> component insrc/pages/index.astro.
06
Scroll reveals — you're watching them now
Headings and cards ease in as they enter the viewport, powered by GSAP. Honors prefers-reduced-motion, cleans up after itself on every page transition.
Setup & config
Add the attribute to any element:
<h2 data-reveal>Eases up</h2> <div data-reveal="left" data-reveal-delay="0.15">From the left, delayed</div>Directions: up (default),down, left,right, fade.
One rule keeps the Lighthouse scores intact: for above-the-fold content (hero headlines, page titles) use the CSS-onlyclass="ko-rise" (stagger withstyle="--ko-rise-delay: 0.1s") — it animates without waiting for JavaScript, so it never delays LCP.data-reveal is for everything below the fold.
07
Projects as plain markdown
Each project is one markdown file with typed frontmatter — title, year, category, images, credits. Astro validates every field and optimizes every image at build time.
Setup & config
--- title: Aurora tagline: Identity for a Nordic lighting house description: Used for meta tags and social cards. client: Aurora Lys AS # optional year: 2024 category: branding # branding | web | motion | print | photography tags: [Identity, Packaging] cover: ../../assets/aurora/cover.jpg hero: ../../assets/aurora/hero.jpg # optional, falls back to cover order: 1 # sort position on /work featured: true # show on home + feed the hero draft: false # true = hidden everywhere --- Your case study text, with ## headings.Drop images next to your content in src/assets/; they're converted to responsive WebP automatically.
08
SEO without a plugin
Canonical URLs, Open Graph and Twitter cards, per-page titles and descriptions, sitemap and robots.txt — wired in, fed by your config and your content.
Setup & config
Site-wide defaults come from meta in theme.config.ts. Any page can override them:
<PageLayout title="Page title" description="Page description" ogImage="/og-custom.png" >The sitemap is generated at /sitemap-index.xml; update the domain in public/robots.txt when you deploy.
09
Demo content — keep it or strip it
The theme arrives with twelve example projects so every page has something to show. One command removes all of it, cleanly, the moment you're ready for your own work.
Setup & config
npm run freshRemoves the demo projects, demo images, and placeholder copy on the about/contact pages. Keeps all structure, your config, and your styles — the site builds immediately after.
10
Updates that respect your changes
Theme updates arrive as git pulls. Your config, content, styles and overrides live in designated safe zones the updates never touch — customize freely and stay current.
Setup & config
Safe zones — yours forever:
theme.config.ts # settings src/styles/custom.css # your CSS, loads last src/content/ # your projects & pages src/components/overrides/ # your component versions public/ # favicons, OG images, filesDon't edit src/_core/ — to change a core component, copy it intosrc/components/overrides/ and update its import where it's used. npm run build warns if _core has local edits. Updating:
git remote add upstream <theme-repo-url> # once git fetch upstream git merge upstream/main npm install