ST site-theme
Open source

Landing pages, zero fuss.

Four templates — landing page, docs, product, and SaaS app — each scaffolded by one CLI command. Dark theme, Tailwind CSS v4, and GitHub Pages workflow included.

Scaffold

npx @mcptoolshop/site-theme init --template app

Edit

site/src/config/site.config.ts

Deploy

git push # GitHub Actions handles the rest

What you get

Everything a project landing page needs, pre-wired.

Four templates

Landing page, docs, product marketing, and multi-tenant SaaS app. Pick one, scaffold, build — done.

Dark by default

Semantic design tokens (bg-surface, text-heading, border-edge) ready to use. Override any token to reskin the whole theme.

GitHub Pages ready

The init CLI writes .github/workflows/pages.yml automatically. Push and set the source — done.

SaaS architecture

App template ships with RBAC, feature flags, workspace routing, and 31 static pages — credible SaaS foundation out of the box.

Zero surprise setup

CSS imports, @source paths, base paths, and CI workflows are all pre-wired by the CLI. No manual config hunting.

Fully customizable

Every color, radius, and spacing value is a CSS custom property. Override in @theme — no config file needed.

Templates

Pick a starting point. Every template is CI-tested and builds clean.

TemplateDescriptionPages
defaultProject landing page with hero, features, and code examples1
docsDocumentation site with sidebar navigation and content sections1
productMarketing page with pricing, testimonials, and CTAs1
appMulti-tenant SaaS dashboard with RBAC, feature flags, and workspace routing31

Quick start

From zero to deployed in minutes.

Scaffold

npx @mcptoolshop/site-theme init
cd site && npm install
npm run dev

Edit your content

// site/src/site-config.ts
export const config: SiteConfig = {
  title: '@mcptoolshop/my-tool',
  description: 'What my tool does.',
  logoBadge: 'MT',
  brandName: 'my-tool',
  hero: { /* ... */ },
  sections: [ /* ... */ ],
};

Override design tokens

/* site/src/styles/global.css */
@import "tailwindcss";
@import "@mcptoolshop/site-theme/styles/theme.css";
@source "../../node_modules/@mcptoolshop/site-theme";

@theme {
  --color-accent: #60a5fa;      /* blue accent  */
  --color-surface: #0a0a1a;     /* dark navy    */
  --color-action: #60a5fa;
}

Deploy to GitHub Pages

# 1. Push to GitHub
git push

# 2. Repo → Settings → Pages → Source → "GitHub Actions"
# 3. Push any change to site/ to trigger a deploy

Components

Import individually from the package.

BaseLayout(title, description, logoBadge, brandName, nav, repoUrl, npmUrl?, footerText)

Full page shell with sticky header (logo badge, nav links, GitHub/npm buttons) and footer. Wrap all your sections in this.

Hero(badge, headline, headlineAccent, description, primaryCta, secondaryCta, previews?)

Gradient hero with status badge, large headline, CTA buttons, and optional code preview cards.

Section(id, title, subtitle?)

Anchor section with heading and optional subtitle. Wraps any content as a slot.

FeatureGrid(features: { title, desc }[])

3-column responsive card grid. Each card has a bold title and a short description.

DataTable(columns: string[], rows: string[][])

Grid-based bordered table. First cell in each row is styled as a header.

CodeCardGrid(cards: { title, code }[])

2-column grid of dark code block cards. Ideal for install/usage examples.

ApiList(apis: { signature, description }[])

Full-width stacked API reference cards. Signature in monospace, description below.

Design tokens

Override any token in global.css via @theme.

TokenDefaultUsed for
--color-surface#09090bPage background
--color-surface-raised#18181bElevated elements, code blocks
--color-edge#27272aPrimary borders
--color-heading#fafafaHeadings, primary text
--color-body#e4e4e7Body / secondary text
--color-dim#a1a1aaLabels, captions
--color-accent#34d399Status indicator dot
--color-action#fafafaPrimary button background
--color-action-text#09090bPrimary button text