Components
Markdown
Rendered agent markdown (GFM) whose code fences compose Code, and diff fences compose CodeDiff.
Composition
Rendered markdown
Pass the source in content. MarkdownRoot supplies tokens; MarkdownFlow owns block spacing.
- <Markdown>
- <MarkdownRoot>
- <MarkdownFlow>
- rendered prose and code fences
- <MarkdownFlow>
- <MarkdownRoot>
Custom prose
Compose MDX or Markdown parts inside MarkdownFlow. Re-value --cui-markdown-flow-gap and --cui-markdown-heading-gap on MarkdownRoot.
- <MarkdownRoot>
- <MarkdownFlow>
- consumer-rendered prose
- <MarkdownFlow>
Installation
The Control UI source installs this primitive from src/registry/sources/control-ui/ui/markdown.tsx.
Dependencies
Markdown elements
src/registry/sources/control-ui/ui/markdown-elements.tsxSupportDiff engine
src/registry/lib/diff.tsSupportShiki tokenizer
src/registry/lib/code-tokens.tsSupportCode + diff tokens
Checkboxsrc/registry/sources/control-ui/code.cssSupportcheckboxPrimitiveCodecodePrimitiveCode Diffcode-diffPrimitiveScroll areascroll-areaPrimitiveTypographytypographyPrimitiveRaw code
Primary installed source
Knobs
Typed custom properties the recipe paints with. Set one on the root — style, a utility class, or a skin — and every slot inherits it.
--cui-markdown-* · 14 knobsHow the cascade resolves--cui-markdown-foreground<color>oklch(from var(--foreground) l c h / 0.9)--cui-markdown-blockquote-border-color<color>var(--border)--cui-markdown-blockquote-foreground<color>var(--muted-foreground)--cui-markdown-inline-code-background<color>color-mix(in oklab, var(--foreground) 8%, transparent)--cui-markdown-inline-code-foreground<color>var(--foreground)--cui-markdown-inline-code-radius<length-percentage>+0.25rem--cui-markdown-link-foreground<color>var(--primary-text)--cui-markdown-image-outline-color<color>var(--image-outline)--cui-markdown-table-cell-border-color<color>var(--border)--cui-markdown-table-header-background<color>var(--muted)--cui-markdown-font-size<length-percentage>var(--text-body)--cui-markdown-line-height<number>var(--leading-relaxed)--cui-markdown-flow-gap<length-percentage>calc(var(--spacing) * 4)--cui-markdown-heading-gap<length-percentage>calc(var(--spacing) * 6)