# Inline component tags > Write a component tag straight into the page. It renders as the real component, and its body is markdown. Source: https://shelldocs.shellui.dev/docs/authoring/component-tags A component tag written in the page, outside any fence, renders as the real Blazor component. This is how you put a `Callout` between two paragraphs, a `CardGrid` at the end of a page, or `Steps` inside a section. ## The pattern ```markdown Some prose. Body text with `inline code` and **emphasis**. More prose. ``` Some prose. > **Something worth knowing** > > Body text with `inline code` and **emphasis**. More prose. ## The body is markdown An inline tag's body goes through the markdown pipeline: inline code, emphasis, links, lists, fenced code and further component tags all work. Leave a blank line between a tag and a fenced block. ````markdown ```bash dotnet tool install -g ShellDocs.CLI --prerelease ``` `shelldocs init MyDocs` creates a working site. ```` This is the opposite of a [`razor:preview`](https://shelldocs.shellui.dev/docs/authoring/razor-preview.md) fence, whose body is Razor. The rule of thumb: a tag in the page is content, a fence is an example of code. ## Self-closing tags A tag with no body closes itself with `/>`. ```markdown ``` - [Quick start](https://shelldocs.shellui.dev/docs/getting-started/quick-start.md): Scaffold a fresh site. ## Naming rules - A tag name starts with an **uppercase letter**. That is how the parser tells a component from HTML: `` stays HTML, `` is looked up as a component. - Attribute values are **double-quoted**. - Attribute names match the component's parameters without regard to case. ## Attribute values Values are converted to each parameter's type, the same way a fence converts them: `Columns="3"` becomes an `int`, `External="true"` a `bool`, `Variant="warning"` an enum member. A quoted value can hold anything except its own quote character. Angle brackets, another tag, and text that looks like an attribute all stay inside the value: ```markdown ``` Three things to know: | Name | Type | Default | Description | |------|------|---------|-------------| | `Quotes` | `choose` | | There is no escape for a quote inside a value. Wrap the value in single quotes when it contains double quotes, and the other way round. | | `Markdown` | `literal` | | Attribute text is not markdown. Backticks and asterisks show up as typed. Put formatted text in the tag body. | | `HTML entities` | `literal` | | Entities are not decoded. Write the character itself. | A tag whose quote is never closed, or that runs across a blank line, is treated as plain text rather than a component. ## Code spans stay code A tag inside backticks is left alone. Writing `` `` `` in a sentence produces inline code, not a component. The same goes for anything inside a fenced block. ## Nested tags and named slots Tags nest to any depth. ```markdown A callout inside a card. ``` A direct child tag whose name matches one of the parent's `RenderFragment` parameters fills that slot instead of the default child content. See [named slots](https://shelldocs.shellui.dev/docs/authoring/razor-preview.md). ## Unknown tags An uppercase tag that isn't a registered component is passed through as raw markup, and a warning is logged. Register the component: ```csharp builder.Services.AddShellDocs(o => { o.RegisterComponentsFromAssembly(); }); ``` ## When your library has the same name If your component library registers a `Card`, `` renders yours. ShellDocs' own primitive stays reachable under a `Docs` prefix: ``, ``, ``. See [Documenting a component library](https://shelldocs.shellui.dev/docs/guides/component-libraries.md). ## Inline tag or fence | Name | Type | Default | Description | |------|------|---------|-------------| | `Inline tag` | `content` | | Renders the component only. Markdown body. Use for callouts, cards, steps, tables that are part of the page. | | `razor:preview` | `example` | | Renders the component with Preview and Code tabs. Razor body. Use when the reader is learning the tag. | ## See also - [razor:preview](https://shelldocs.shellui.dev/docs/authoring/razor-preview.md): The live example fence. - [Components reference](https://shelldocs.shellui.dev/docs/components/callout.md): Every primitive you can write into a page. - [Documenting a component library](https://shelldocs.shellui.dev/docs/guides/component-libraries.md): Registering your own components as tags.