Introduction
What Blasdoc is, what it is not, and the idea it is built on.
Blasdoc renders Markdown as real Angular components. Not HTML that looks like components, and not a string of markup injected into the page: a tag in your content becomes a component instance, with its inputs, its outputs and its projected children intact.
The idea
Content arrives as a string — from a file, an HTTP response, a CMS, a textarea. Blasdoc parses it into a typed intermediate representation, and hands that to Angular:
Markdown + Angular template syntax
|
Blasdoc IR
/ \
Angular Source
Runtime RendererOne representation drives both sides. That is the whole design, and it is why a live preview and the code beside it can never disagree: they are the same nodes, rendered twice.
A live example
<app-button variant="primary">Comprar</app-button>Switch to Code and you see the source that produced the button — read out of the document's own text, not serialised back from the DOM.
What you get
| Capability | What it means |
|---|---|
| Components | <app-button> is an Angular instance, not a string |
| Bindings | [disabled], (clicked), [(value)] all apply at runtime |
| Interpolation | {{ count }} reads your component's own fields |
| Control flow | @if, @for and @switch, the Angular spelling |
| Code blocks | Shiki highlighting, tabs, live previews, per-block themes |
| Pages | A .md file is a component's template |
| Safety | No eval, no new Function, no innerHTML |
What Blasdoc is not
It is not a Markdown-to-HTML library, not a React MDX clone, not JSX, and not a transpiler. There is no build step that turns your content into components: the content stays content, and it is read at runtime.
It is also not a documentation theme you must adopt. The default theme is optional and every value in it is a CSS custom property; the behaviour lives in headless primitives you can apply to your own markup.
Where to go next
Installation — packages, providers and the build.
Quick start — a page rendering components, in three files.
Components — how a tag becomes an instance.