Text Formatting
Bold Text
To make text bold, use ** or __ around the word or phrase:
Example: This text is bold or This text is bold
Italic Text
To italicize text, use * or _ around the word or phrase:
Example: This text is italic or This text is italic
Underline Text
To underline text, use HTML <u> tags:
Example:
<u>This text is underlined</u>
Result:
This text is underlinedStrikethrough
To strike through text, use ~~ around the word or phrase:
Example: This text is struck through
Button
// This button has creative-fill hover animation
<Button
hoverEffect="creative-fill"
class="effect-color-accent"
label="Creative Fill"
url="/"
/>
// This button has magnetic hover animation
<Button hoverEffect="magnetic" label="Magnetic" url="/" />
// This button has text-flip hover animation
<Button hoverEffect="text-flip" label="Text Flip" url="/" />
// This button combines the magnetic and text-flip hover animations
<Button
hoverEffect="magnetic-text-flip"
label="Magnetic With Text Flip"
url="/"
/>
<Button
variant="circle"
hoverEffect="magnetic-text-flip"
label="Magnetic With Text Flip"
url="/"
/>
This button has creative-fill hover animation
Creative FillThis button has magnetic hover animation
MagneticThis button has text-flip hover animation
Text FlipThis button combines the magnetic and text-flip hover animations
Magnetic With Text FlipButton Variants
Customize each button color by adding class=“btn-accent” or class=“btn-light”
<Button variant="circle" label="Example Button" url="/" />
<Button label="Example Button" url="/" />
<Button class="btn-accent" label="Example Button" url="/" />
<Button
variant="outline"
label="With External Link"
url="https://astro.build"
/>
<Button variant="text" label="Example Button" url="/" />Accordion
<Accordion label="Example Accordion Label 01" group="accordion-01" expanded="true">
Every service gets its own build pipeline, environment variables, and scaling rules. Pick the plan that fits your traffic.
- **Starter**: Deploy from Git with a preview environment for every pull request.
- **Team**: A shared workspace with role-based access and audit logs.
- **Enterprise**: Dedicated regions, SSO, and a support SLA.
</Accordion>
<Accordion label="Example Accordion Label 02" group="accordion-01" expanded="false">
Every service gets its own build pipeline, environment variables, and scaling rules. Pick the plan that fits your traffic.
- **Starter**: Deploy from Git with a preview environment for every pull request.
- **Team**: A shared workspace with role-based access and audit logs.
- **Enterprise**: Dedicated regions, SSO, and a support SLA.
</Accordion>
---
<Accordion label="Example Accordion Label 03" group="accordion-01" expanded="false">
Every service gets its own build pipeline, environment variables, and scaling rules. Pick the plan that fits your traffic.
- **Starter**: Deploy from Git with a preview environment for every pull request.
- **Team**: A shared workspace with role-based access and audit logs.
- **Enterprise**: Dedicated regions, SSO, and a support SLA.
</Accordion>Every service gets its own build pipeline, environment variables, and scaling rules. Pick the plan that fits your traffic.
- Starter: Deploy from Git with a preview environment for every pull request.
- Team: A shared workspace with role-based access and audit logs.
- Enterprise: Dedicated regions, SSO, and a support SLA.
Tab
<Tabs>
<Tab name="Overview">
**What can you run?** Web services, workers, cron jobs, and databases from
one dashboard. Pick a tab to see how each part works. - Deploys -
Autoscaling - Observability
</Tab>
<Tab name="Deploy">
**Deploys: Ship on every push** Connect a repository and every push to main
starts a build. You get: - Automatic builds - Preview environments -
Zero-downtime deploys
</Tab>
</Tabs>What can you run?
Web services, workers, cron jobs, and databases from one dashboard. Pick a tab to see how each part works.
- Deploys
- Autoscaling
- Observability
YouTube Video
<VideoInline src="rFVpSwgCkCo" provider="youtube" />Custom Video
<VideoInline
src="/videos/test-video.mp4"
provider="html5"
poster="/images/video-thumbnail.jpg"
/>Callout
Use a callout to pull a note, tip, warning, or danger out of the text. type is note (default), tip, warning, or danger. Without a title, the type name is shown.
<Callout type="note">
Preview environments use the `preview` environment variables, not production ones.
</Callout>
<Callout type="tip" title="Pin the CLI version">
Install the CLI as a dev dependency so CI and every teammate run the same version.
</Callout>
<Callout type="warning">
Deleting a project also deletes its preview environments and database branches.
</Callout>
<Callout type="danger" title="Rotating the root key">
Every token signed with the old key stops working at once. Plan a maintenance window.
</Callout>Note
Preview environments use the preview environment variables, not production ones.
Pin the CLI version
Install the CLI as a dev dependency so CI and every teammate run the same version.
Warning
Deleting a project also deletes its preview environments and database branches.
Rotating the root key
Every token signed with the old key stops working at once. Plan a maintenance window.
<Notice> still works and renders the same callout: info → note, success → tip, warning → warning, error → danger.
Steps
Wrap headings in <Steps> to number them. Each ## or ### heading starts a step, and everything below it belongs to that step.
<Steps>
### Install the CLI
```bash
npm install -g @cloud/cli
```
### Link the project
Run `cloud link` in the root of your repository.
### Deploy
Push to `main`, or run `cloud deploy` to ship from your machine.
</Steps>Install the CLI
npm install -g @cloud/cliLink the project
Run cloud link in the root of your repository.
Deploy
Push to main, or run cloud deploy to ship from your machine.
File Tree
Write a nested list inside <FileTree>. A name that ends in / (or has children) is a folder, bold highlights an entry, and text after the name is a comment.
<FileTree>
- src/
- pages/
- **index.astro** the home page
- content/
- cloud.config.ts
- package.json
</FileTree>- src/
- pages/
- index.astrothe home page
- content/
- pages/
- cloud.config.ts
- package.json
Keyboard Keys
Press <Kbd>⌘</Kbd> <Kbd>K</Kbd> to open search, or <Kbd keys={["Ctrl", "Shift", "P"]} /> for the command palette.Press ⌘ K to open search, or CtrlShiftP for the command palette.
Blockquote
To create a blockquote, start the line with a >:
Example:
This is a blockquote.
It spans multiple lines.Author
Code
To format inline code, use backticks (`):
Example: This is inline code
For multi-line code blocks, use triple backticks (```):
Example:
---
import type { z } from "astro/zod";
import config from ".astro/config.generated.json";
import SectionIntro from "@/components/widgets/SectionIntro.astro";
import SubscriptionForm from "@/components/widgets/SubscriptionForm.astro";
import { getEntryCTM } from "@/lib/contentParser.astro";
import overrideObjects from "@/lib/utils/overrideObjects.ts";
import type { newsletterSectionSchema } from "@/sections.schema";
export type NewsletterSection = z.infer<typeof newsletterSectionSchema>;
type Props = {
content?: Partial<NewsletterSection>;
};
const defaultContent = (
await getEntryCTM("sections", "newsletter-section", Astro.currentLocale)
)?.data as NewsletterSection;
const {
enable = true,
eyebrow,
title,
description,
note,
} = overrideObjects(
{ ...defaultContent },
Astro.props.content,
) as NewsletterSection;
// The form posts to `[settings.subscription]` in config.toml
const { subscription } = config.settings;
if (!enable || !subscription?.enable) return;
---
<section class="newsletter-section">
<div class="container">
<div
class="flex flex-col gap-8 lg:flex-row lg:items-end lg:justify-between">
<SectionIntro eyebrow={eyebrow} title={title} description={description} />
<div class="w-full lg:max-w-md" data-scroll-reveal="fade-up">
<SubscriptionForm
id="newsletter"
enable={true}
layout="inline"
formAction={subscription.formAction}
mailchimpTagValue={subscription.mailchimpTagValue}
note={note}
/>
</div>
</div>
</div>
</section>Add a title to the fence to label the block:
import { defineConfig } from "@cloud/cli";
export default defineConfig({
service: "web-frontend",
region: "eu-west",
instances: { min: 2, max: 10 },
});Code Tabs
Wrap fences in <CodeTabs> to show alternatives, such as package managers. The selected tab is remembered across blocks and pages.
<CodeTabs>
```bash title="npm"
npm install @cloud/sdk
```
```bash title="pnpm"
pnpm add @cloud/sdk
```
</CodeTabs>npm install @cloud/sdkpnpm add @cloud/sdkyarn add @cloud/sdkbun add @cloud/sdknpx cloud deploy --env productionpnpm dlx cloud deploy --env productionyarn dlx cloud deploy --env productionbunx cloud deploy --env productionHorizontal Rule
To create a horizontal rule, use three or more dashes (---), asterisks (***), or underscores (___) on a new line:
Example:
Headings
Create headings by adding # symbols before your text. Add custom classes in brackets [.class-name].
Example:
# Heading 1 [.custom-class .mt-0! .another-class]
## Heading 2 [.custom-class .mt-0! .another-class4]
### Heading 3 [.custom-class .mt-0! .another-class]
#### Heading 4 [.custom-class .mt-0! .another-class]
##### Heading 5 [.custom-class .mt-0! .another-class]
###### Heading 6 [.custom-class .mt-0! .another-class]Table
Create tables using pipes (|) and dashes (-):
Example:
| Column 1 | Column 2 | Column 3 |
|---|---|---|
| Data 1 | Data 2 | Data 3 |
| Data 4 | Data 5 | Data 6 |
Images
Local Image 
Components
Styled List
<ListCheck>
- **Slow releases**: Manual deploy steps turned every release into a half-day task.
- **Late reviews**: Changes reached staging only after merge, so reviewers missed real issues.
- **Scattered signals**: Logs and metrics lived in separate tools, so incidents took longer to trace.
</ListCheck>- Slow releases: Manual deploy steps turned every release into a half-day task.
- Late reviews: Changes reached staging only after merge, so reviewers missed real issues.
- Scattered signals: Logs and metrics lived in separate tools, so incidents took longer to trace.
Information Block Card
<CardWrapper>
<Card
title="Managed databases"
description="Postgres and Redis with automated backups and point-in-time recovery."
icon="/images/icons/services/web.svg"
buttonLabel="Contact us"
buttonUrl="/contact/"
/>
<Card
title="Private networking"
description="Services talk over an internal network that is never exposed to the internet."
icon="/images/icons/services/web.svg"
buttonLabel="Contact us"
buttonUrl="/contact/"
/>
</CardWrapper>Private networking
Services talk over an internal network that is never exposed to the internet.
Image List With Video
<ImageList>
<ImageItem
imageSrc="/images/gallery/1.jpg"
imageAlt="Team reviewing a digital product roadmap"
videoSrc="rFVpSwgCkCo"
/>
<ImageItem
imageSrc="/images/gallery/2.jpg"
imageAlt="Engineer working on a secure application release"
videoSrc="/videos/test-video.mp4"
videoProvider="html5"
/>
<ImageItem
width="1/2"
imageSrc="/images/gallery/3.jpg"
imageAlt="Analytics dashboard displayed during a strategy review"
/>
<ImageItem
width="1/2"
imageSrc="/images/gallery/4.jpg"
imageAlt="Modern workspace for product collaboration"
/>
</ImageList>



Testimonial
The following code generates the testimonial shown below.
<Testimonial
customerImage="/images/customers/avatar/1.jpg"
customerName="Sarah Jones"
customerRole="CEO, Founder"
customerCompanyLogo="/images/customers/company-logo/acme.png"
customerCompanyName="Acme Inc."
>
We moved our services over in a week. Deploys that used to need a release
manager now run on every merge, and rolling back takes one click.
</Testimonial>We moved our services over in a week. Deploys that used to need a release manager now run on every merge, and rolling back takes one click.
CEO, Founder