Theme customization
- Every component accepts a root
class, with named styling parameters for inner elements where applicable. Values remain scoped to the caller through Ghost’s nested helpers. - Featured blocks can be repeated without a fixed heading ID. Visual defaults live in component stylesheets so they don’t compete with utility overrides.
- Pricing text inherits the card’s foreground. Examples show how to pair custom background and text colors in light and dark modes.
Per-instance styling was first prepared as 1.3.0 in Git. There was no separate 1.3.0 npm release; those changes are included here.
Components
- Added related posts, previous/next post navigation, a public tag list, and a table of contents with unique anchors and keyboard focus handling.
- Added button, card, badge, input, and alert primitives, plus post grid, author list, tag grid, and archive header blocks.
- Missing dependencies install first; existing dependency edits are preserved. Native Ghost behavior and both styling systems are covered by regression tests.
CLI
- Batch
addaccepts multiple names. Reinstall prompts pause the spinner and let you keep one component without canceling the rest. Use--skip-existingto preserve files without prompts. - Registry requests have a deadline, including while reading their bodies.
ghostcn diffreports upstream and local changes without rewriting theme files.ghostcn playgroundpreviews installed partials with synthetic content and provides copyable Handlebars usage.
Updating a theme
An npm update does not change copied component files. Commit your theme and review with ghostcn diff. Merge the changes you want before deliberately replacing a partial or stylesheet. Keep .ghostcn/installed.json to retain baselines.