Theming
Themes are plain TypeScript objects. PDF engines do not consume DOM CSS variables, so tokens stay in TypeScript and resolve inside each component.
Theme shape
PdfcnTheme
export type PdfcnTheme = {
name: string;
primitives: PrimitiveTokens;
colors: ColorTokens;
typography: TypographyTokens;
spacing: SpacingTokens;
page: PageTokens;
};Token groups
Provide a theme
Wrap the document with PdfcnThemeProvider. Without a provider, components fall back to professionalTheme.
Theme provider
<script setup lang="ts">
import { Document } from '@formepdf/vue';
import PdfcnThemeProvider from '@/components/pdf/PdfcnThemeProvider.vue';
import { minimalTheme } from '@/lib/pdfcn/themes/minimal';
</script>
<template>
<PdfcnThemeProvider :theme="minimalTheme">
<Document>…</Document>
</PdfcnThemeProvider>
</template>