Cela

Cela is a simple, lightweight Zola theme, inspired by Hugo PaperMod.

The style sheet is adapted from Catppuccin. If you like it, please give it a 🌟 on GitHub. Thanks!

screenshot


Theme Features

Tags, Categories, and Taxonomies

Cela provides Hexo/Hugo-like tags and categories, compatible with Zola taxonomies. In front matter:

[taxonomies]
tags = ["Rust", "Zola"]
categories = ["Programming"]

or in YAML style:

taxonomies:
  tags: ["Rust", "Zola"]
  categories: ["Programming"]

Zola taxonomies as recommended are more powerful for structuring your contents. See zola taxonomies for more information.

Quick Start

If you only need installation of the theme, skip to Theme Installation.

Zola Installation

Cela is developed and validated against Zola 0.22.1.

For syntax highlighting on Zola 0.22.x, use the nested [markdown.highlighting] table instead of the older flat highlight_code setting. See the official configuration docs: https://www.getzola.org/documentation/getting-started/configuration/

# macOS
brew install zola
# Alpine Linux
apk add zola
# Arch Linux
pacman -S zola
# Docker
docker pull ghcr.io/getzola/zola:v0.22.1

Create a Zola site

Creates your first Zola site.

If myblog already exists but only contains hidden files (like .git), Zola will alswo populate the site.

zola init myblog
# or
# populate the current directory
zola init

Any choices you make during the initialization can be changed later in the config.toml file.

Theme Installation

By Git submodule

git submodule add https://github.com/edwardzcn-decade/cela themes/cela
git submodule update --init --force --recursive
git submodule sync

Then set the theme in your config.toml file.

theme = "cela"

By Download Releases

  1. Download the latest release archive from the Cela releases.
  2. Unzip to themes/cela in your Zola project.
  3. Set theme in config.toml.
  4. (Optional) Delete unused example content under content/ if you start fresh.

👐 Development

[!NOTE]

If you find this project helpful and would like to support its development, see our CONTRIBUTING and CODE_OF_CONDUCT guidelines.

Static Runtime Model

Cela stays a pure static Zola theme:

Node.js is used only for theme development to generate static CSS.

CSS Layers

The final CSS stack is split into two layers:

  1. static/css/theme-runtime.css: a thin runtime theme layer for light/dark semantic color variables
  2. styles/tailwind.css -> static/css/theme.css: the generated Tailwind-controlled main stylesheet

The generated CSS file is committed so downstream theme users still only need Zola. Legacy files are no longer part of the runtime load path.

Local Theme Development

Install the development dependencies:

npm install

Build the generated CSS once:

npm run build:css

Watch CSS changes during theme development:

npm run watch:css

Validate and build the site:

npm run build:css
zola check
zola build

Smoke Checklist

See docs/smoke-checklist.md for the baseline routes and interactions to verify after template or CSS changes.

Homepage motion is intentionally scoped to the landing page hero, social icons, year or section headers, and home post lists. It uses CSS animation plus IntersectionObserver, and degrades cleanly when JavaScript is disabled or prefers-reduced-motion is enabled.

CSS Class Reference

Mapping between semantic template class names and their Tailwind token equivalents.

ClassFileRoleKey Tailwind tokens used
.post-singlepage.htmlArticle page containermax-w-main, px-gap
.search-pagesearch.htmlSearch page containermax-w-main, px-gap
.search-boxsearch.htmlSearch input wrapper
.post-entrypost_card.htmlPost cardbg-surface, border, shadow-card
.post-headerpage.html, search.htmlPage/post header block
.post-titlemultiplePage <h1> title
.entry-headerpost_card.htmlCard title area
.entry-contentpost_card.htmlCard summary areatext-content
.entry-footerpost_card.htmlCard meta areatext-muted
.entry-linkpost_card.htmlFull-card click overlay
.breadcrumbspage.html, search.html, robot.html, section_post.html<nav> breadcrumb trailtext-muted
.paginationsection_post.htmlPrev/next page nav
.pagination .previoussection_post.htmlPrevious page linkbg-text, text-theme
.pagination .nextsection_post.htmlNext page linkbg-text, text-theme
.footer-creditshome_footer.htmlCopyright + powered-by rowtext-muted
.footer-schemehome_footer.htmlColor scheme selector rowtext-muted
#scheme-selecthome_footer.htmlColor scheme <select>border, text-muted

Tailwind token names correspond to keys in tailwind.config.jstheme.extend.

TODO

LICENSE

MIT