Theming
The plugins follow shadcn/ui. On a site that uses its variables they match with no setup; elsewhere, eight tokens theme them all at once.
shadcn/ui
The styles follow shadcn/ui. On a site that already uses its CSS variables, every plugin matches it with no setup, and a .dark class anywhere above a block switches the theme. Elsewhere they use shadcn's neutral theme and follow the system's light or dark mode.
shadcn/ui before Tailwind 4 stores colors as bare HSL numbers, so map those through the tokens below: --comark-border: hsl(var(--border)).
Tokens
Set the --comark-* tokens to theme annotate, carousel, charts, chips, code, diff, embed, github, tabs, and zoom at once. Each one wins over its shadcn variable, and works on :root or on any ancestor:
| Token | Falls back to | Used for |
|---|---|---|
--comark-background |
--background |
Button faces, the zoom backdrop, the ring around stamps, cards |
--comark-foreground |
--foreground |
Text, icons, the current thumbnail, slide panels |
--comark-muted |
--muted-foreground |
Counters, hosts under players, diff line numbers |
--comark-border |
--border |
Button, thumbnail, screenshot, player, callout, and diff borders |
--comark-accent |
--accent |
Hovered buttons, the diff header |
--comark-ring |
--ring |
Focus rings, the edge of a highlighted diff line |
--comark-radius |
--radius |
Corners, a little smaller on buttons and images |
--comark-font |
--font-sans |
The zoomed view's header, callouts, and the links under players |
:root {
--comark-accent: oklch(0.95 0.03 250);
--comark-radius: 0.25rem;
}Try them in the playground's Theme pane: it shows them in light and dark and copies the CSS for what you change.
To theme one part only, set the tokens on its root instead: .ca for annotate, .cc for a carousel, .cch for charts, .cp for chips, .ck for code headers, .cd for diffs, .ce and .ce-card for embeds, .cgc for callouts, .ct for tabs, and .cz-dialog for the zoomed view.
Your own rules
The rules sit in a comark CSS layer, so any plain rule of your own wins without !important, such as .cc-step { border-radius: 0 }.
Nuxt UI
Nuxt UI names its variables differently. Map them once:
:root {
--comark-background: var(--ui-bg);
--comark-foreground: var(--ui-text-highlighted);
--comark-muted: var(--ui-text-muted);
--comark-border: var(--ui-border);
--comark-accent: var(--ui-bg-elevated);
--comark-ring: var(--ui-primary);
--comark-radius: calc(var(--ui-radius) * 2);
}Each plugin's own
Each package's own variables and class names are on its Theming page: annotate, carousel, charts, chips, code, diff, embed, github, icon, tabs, and zoom.