Themes provide Astro layout components for Deckup pages.
Select a fallback in deckup.config.*:
import { defineConfig } from "deckup";
export default defineConfig({
theme: "google-basic",
});Deck-level static metadata overrides the configured fallback.
If neither is present, Deckup uses default.
Built-in themes
Default
Open interactive deck →Serif headings, cool blue accents, and geometric details.
Minimal
Open interactive deck →Monochrome styling with a clear, document-like hierarchy.
Google Basic
Open interactive deck →Bright blue surfaces with a clear structural hierarchy.
Apple Basic
Open interactive deck →High-contrast composition led by large, confident typography.
Each interactive deck demonstrates the seven layouts shared by the built-in themes.
Installed package themes
Install a third-party package in the deck project and use its package specifier:
export default defineConfig({
theme: "@acme/deckup-theme",
});Registry themes
Use npm: to let Deckup resolve a package before Astro starts:
export default defineConfig({
theme: "npm:@acme/deckup-theme@1.2.3",
});Both npm:package and exact npm:package@version specs are supported.
Deckup caches downloaded packages; set DECKUP_THEME_CACHE_DIR to choose another cache directory.
An uncached download requires confirmation, and non-interactive runs stop with guidance instead of downloading automatically.
Deckup does not automatically replace an invalid cache entry. If a cached
theme fails validation (for example, edited or corrupted metadata or package
files), Deckup reports the error instead of deleting and re-downloading it.
To recover, verify no Deckup process is using that cache entry, remove only
the named entry under the cache directory’s packages/ folder, then rerun
Deckup interactively to re-download it. Avoid deleting the whole cache
directory; that removes every other theme you already have cached.
Deckup serializes concurrent downloads of the same theme with a per-package
cache lock. Acquiring that lock waits up to 60 seconds; if the wait times
out, Deckup reports a timeout error naming the theme, the wait duration, and
the lock directory instead of waiting indefinitely. A lock only remains past
that window if a Deckup process abandoned it (for example, a crash or a
killed process). To recover, confirm no Deckup process is using that theme,
then remove the named .lock directory under the cache directory’s locks/
folder before retrying. Do not remove a lock while a Deckup process still
holds it.
To create a reusable package, read Authoring Themes.