{}OPF
DocsSchema referenceEdit on GitHub

Theme

Schema for theme records in the pptx.gallery library. Each theme is a small, named bundle that pairs a color scheme, a font scheme, a default theme-controlled background, and a slide size. Themes are reference…

Schema $id

https://openpresentation.org/schema/opf-theme/v1

Source

spec/schemas/theme.schema.json

Field index

FieldTypeReqDefaultDescription
$schemaconstyesIdentifies this record as a theme in the openpresentation.org catalog.
idstringyesStable slug used by OPF documents to reference this theme via design.theme. Lowercase kebab-case.
namestringyesHuman-readable theme name shown in pickers.
summarystringOne-sentence positioning of the theme — when to reach for it.
descriptionstringLonger prose describing what the theme looks and feels like and the kinds of decks it suits.
colorSchemestringCatalog reference to the theme's default color scheme — resolved against catalogs.colorSchemes the same way design.colorScheme or design.colorScheme.id is. Accepts a bare id, HTTPS URL, or 'pkg:' reference.
fontSchemestringCatalog reference to the theme's default font scheme — resolved against catalogs.fontSchemes the same way design.fontScheme or design.fontScheme.id is. Accepts a bare id, HTTPS URL, or 'pkg:' reference.
backgroundref:ThemeBackground
dimensionsenumDefault slide size for this theme. Accepts the same preset values as design.dimensions.preset.
tagsarray<string>Free-form labels for filtering and search.
previewobjectVisual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.

$schema

Type: const · Required · Default:

Identifies this record as a theme in the openpresentation.org catalog.

$schema.json
{
  "$schema": "https://openpresentation.org/schema/opf-theme/v1"
}

id

Type: string · Required · Default: · Pattern: ^[a-z][a-z0-9-]*$

Stable slug used by OPF documents to reference this theme via design.theme. Lowercase kebab-case.

id.json
{
  "id": "minimal"
}

name

Type: string · Required · Default:

Human-readable theme name shown in pickers.

name.json
{
  "name": "Minimal"
}

summary

Type: string · Optional · Default:

One-sentence positioning of the theme — when to reach for it.

summary.json
{
  "summary": "A clean, minimalist theme for professional, straightforward presentations."
}

description

Type: string · Optional · Default:

Longer prose describing what the theme looks and feels like and the kinds of decks it suits.

description.json
{
  "description": "A clean, minimalistic theme with a focus on simplicity and readability. Ideal for professional, straightforward presentations."
}

colorScheme

Type: string · Optional · Default:

Catalog reference to the theme's default color scheme — resolved against catalogs.colorSchemes the same way design.colorScheme or design.colorScheme.id is. Accepts a bare id, HTTPS URL, or 'pkg:' reference.

colorScheme.json
{
  "colorScheme": "cool-horizon"
}

fontScheme

Type: string · Optional · Default:

Catalog reference to the theme's default font scheme — resolved against catalogs.fontSchemes the same way design.fontScheme or design.fontScheme.id is. Accepts a bare id, HTTPS URL, or 'pkg:' reference.

fontScheme.json
{
  "fontScheme": "aptos"
}

background

Type: ref:ThemeBackground · Optional · Default:

background.json
{
  "background": "background-value"
}

dimensions

Type: enum · Optional · Default:

Default slide size for this theme. Accepts the same preset values as design.dimensions.preset.

dimensions.json
{
  "dimensions": "16:9"
}

tags

Type: array<string> · Optional · Default:

Free-form labels for filtering and search.

tags.json
{
  "tags": [
    "minimal",
    "professional"
  ]
}

preview

Type: object · Optional · Default:

Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.

preview.json
{
  "preview": {}
}