Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Markdoc preset and example #2249

Merged
merged 35 commits into from
Sep 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
db16126
feat: add markdoc example
HiDeoo Aug 20, 2024
060bb59
feat: add aside tag
HiDeoo Aug 20, 2024
c9bde16
test: add markdoc type tests
HiDeoo Aug 21, 2024
392391e
feat: add tabs & tabitem tags
HiDeoo Aug 21, 2024
c9ae25f
feat: add card & cardgrid tags
HiDeoo Aug 21, 2024
1ff2820
feat: add linkcard tag
HiDeoo Aug 21, 2024
06dff5a
refactor: preset type
HiDeoo Aug 21, 2024
ba5d13c
feat: add linkbutton tag
HiDeoo Aug 21, 2024
4e98e49
feat: add filetree tag
HiDeoo Aug 21, 2024
8a31915
feat: add steps tag
HiDeoo Aug 21, 2024
b301647
feat: add badge tag
HiDeoo Aug 21, 2024
683c2c3
feat: add icon tag
HiDeoo Aug 21, 2024
990cb70
feat: add fence node
HiDeoo Aug 21, 2024
82e4d07
feat: add code tag
HiDeoo Aug 21, 2024
46a3a98
test: unsupported props
HiDeoo Aug 21, 2024
6b24055
feat: convert example pages to Markdoc
HiDeoo Aug 21, 2024
af606ae
docs: update markdoc example readme
HiDeoo Aug 21, 2024
bef1995
refactor: move preset to dedicated package
HiDeoo Aug 27, 2024
2404ba5
feat: add support for common attributes to badges, link buttons, and …
HiDeoo Aug 27, 2024
5680c76
docs: add markdoc section
HiDeoo Aug 27, 2024
d66b13b
docs: update `@astrojs/starlight-markdoc` doc link
HiDeoo Aug 27, 2024
8c5cddf
doc: add link to markdoc guide
HiDeoo Aug 27, 2024
3da34b5
test: fix type/test errors related to renaming the authoring content …
HiDeoo Aug 27, 2024
9c2d47f
feat: use `extends` syntax
HiDeoo Aug 28, 2024
6993eb4
chore: update comment
HiDeoo Aug 28, 2024
acc1fd1
feat: add markdoc vsc extension to example recommendations
HiDeoo Sep 3, 2024
6641482
fix: comment typo
HiDeoo Sep 3, 2024
45f5669
docs: improve wording
HiDeoo Sep 3, 2024
0677e7c
ci: update labeler with markdoc tag
HiDeoo Sep 3, 2024
2c665a0
feat: add markdoc guide link to example config
HiDeoo Sep 3, 2024
d7e0a38
chore: add changeset
HiDeoo Sep 3, 2024
9f0c2dd
chore: remove demo pages
HiDeoo Sep 3, 2024
b48a5df
Merge branch 'main' into hd-feat-markdoc
delucis Sep 3, 2024
a8af62a
Merge branch 'main' into pr/2249
delucis Sep 6, 2024
4bae5e3
Update Markdoc example `astro` dependency
delucis Sep 6, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .changeset/selfish-chefs-tie.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astrojs/starlight-markdoc': minor
---

Adds Starlight Markdoc preset.

See the [“Markdoc”](https://starlight.astro.build/guides/authoring-content/#markdoc) guide to learn more on how to use this preset in a new or existing project.
3 changes: 3 additions & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,8 @@ i18n:
'🌟 tailwind':
- packages/tailwind/**

'🌟 markdoc':
- packages/markdoc/**

'📚 docs':
- docs/**
Original file line number Diff line number Diff line change
Expand Up @@ -203,17 +203,17 @@ A code block is indicated by a block with three backticks <code>```</code> at th
```js
// Javascript code with syntax highlighting.
var fun = function lang(l) {
dateformat.i18n = require('./lang/' + l);
return true;
dateformat.i18n = require('./lang/' + l);
return true;
};
```

````md
```js
// Javascript code with syntax highlighting.
var fun = function lang(l) {
dateformat.i18n = require('./lang/' + l);
return true;
dateformat.i18n = require('./lang/' + l);
return true;
};
```
````
Expand Down Expand Up @@ -241,16 +241,16 @@ Some of the most common examples are shown below:

```js {2-3}
function demo() {
// This line (#2) and the next one are highlighted
return 'This is line #3 of this snippet';
// This line (#2) and the next one are highlighted
return 'This is line #3 of this snippet';
}
```

````md
```js {2-3}
function demo() {
// This line (#2) and the next one are highlighted
return 'This is line #3 of this snippet';
// This line (#2) and the next one are highlighted
return 'This is line #3 of this snippet';
}
```
````
Expand All @@ -260,15 +260,15 @@ Some of the most common examples are shown below:
```js "Individual terms" /Even.*supported/
// Individual terms can be highlighted, too
function demo() {
return 'Even regular expressions are supported';
return 'Even regular expressions are supported';
}
```

````md
```js "Individual terms" /Even.*supported/
// Individual terms can be highlighted, too
function demo() {
return 'Even regular expressions are supported';
return 'Even regular expressions are supported';
}
```
````
Expand All @@ -277,18 +277,18 @@ Some of the most common examples are shown below:

```js "return true;" ins="inserted" del="deleted"
function demo() {
console.log('These are inserted and deleted marker types');
// The return statement uses the default marker type
return true;
console.log('These are inserted and deleted marker types');
// The return statement uses the default marker type
return true;
}
```

````md
```js "return true;" ins="inserted" del="deleted"
function demo() {
console.log('These are inserted and deleted marker types');
// The return statement uses the default marker type
return true;
console.log('These are inserted and deleted marker types');
// The return statement uses the default marker type
return true;
}
```
````
Expand Down Expand Up @@ -393,3 +393,118 @@ Starlight supports all other Markdown authoring syntax, such as lists and tables
## Advanced Markdown and MDX configuration

Starlight uses Astro’s Markdown and MDX renderer built on remark and rehype. You can add support for custom syntax and behavior by adding `remarkPlugins` or `rehypePlugins` in your Astro config file. See [“Configuring Markdown and MDX”](https://docs.astro.build/en/guides/markdown-content/#configuring-markdown-and-mdx) in the Astro docs to learn more.

## Markdoc

Starlight supports authoring content in Markdoc using the experimental [Astro Markdoc integration](https://docs.astro.build/en/guides/integrations-guide/markdoc/) and the Starlight Markdoc preset.

### Create a new project with Markdoc

Start a new Starlight project with Markdoc pre-configured using `create astro`:

import { Tabs, TabItem, Steps } from '@astrojs/starlight/components';

<Tabs syncKey="pkg">
<TabItem label="npm">

```sh
npm create astro@latest -- --template starlight/markdoc
```

</TabItem>
<TabItem label="pnpm">

```sh
pnpm create astro --template starlight/markdoc
```

</TabItem>
<TabItem label="Yarn">

```sh
yarn create astro --template starlight/markdoc
```

</TabItem>
</Tabs>

### Add Markdoc to an existing project

If you already have a Starlight site and want to add Markdoc, follow these steps.

<Steps>

1. Add Astro’s Markdoc integration:

<Tabs syncKey="pkg">

<TabItem label="npm">

```sh
npx astro add markdoc
```

</TabItem>

<TabItem label="pnpm">

```sh
pnpm astro add markdoc
```

</TabItem>

<TabItem label="Yarn">

```sh
yarn astro add markdoc
```

</TabItem>

</Tabs>

2. Install the Starlight Markdoc preset:

<Tabs syncKey="pkg">

<TabItem label="npm">

```sh
npm install @astrojs/starlight-markdoc
```

</TabItem>

<TabItem label="pnpm">

```sh
pnpm add @astrojs/starlight-markdoc
```

</TabItem>

<TabItem label="Yarn">

```sh
yarn add @astrojs/starlight-markdoc
```

</TabItem>

</Tabs>

3. Create a Markdoc configuration file at `markdoc.config.mjs` and use the Starlight Markdoc preset:

```js
import { defineMarkdocConfig } from '@astrojs/markdoc/config';
import starlightMarkdoc from '@astrojs/starlight-markdoc';

export default defineMarkdocConfig({
extends: [starlightMarkdoc()],
});
```

</Steps>

To learn more about the Markdoc syntax and features, see the [Markdoc documentation](https://markdoc.dev/docs/syntax) or the [Astro Markdoc integration guide](https://docs.astro.build/en/guides/integrations-guide/markdoc/).
2 changes: 1 addition & 1 deletion docs/src/content/docs/guides/pages.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ This guide shows how page generation works in Starlight.
### File formats

Starlight supports authoring content in Markdown and MDX with no configuration required.
You can add support for Markdoc by installing the experimental [Astro Markdoc integration](https://docs.astro.build/en/guides/integrations-guide/markdoc/).
You can add support for Markdoc by following the [“Markdoc” guide](/guides/authoring-content/#markdoc).

### Add pages

Expand Down
21 changes: 21 additions & 0 deletions examples/markdoc/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# build output
dist/
# generated types
.astro/

# dependencies
node_modules/

# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*


# environment variables
.env
.env.production

# macOS-specific files
.DS_Store
4 changes: 4 additions & 0 deletions examples/markdoc/.vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"recommendations": ["astro-build.astro-vscode", "stripe.markdoc-language-support"],
"unwantedRecommendations": []
}
11 changes: 11 additions & 0 deletions examples/markdoc/.vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}
56 changes: 56 additions & 0 deletions examples/markdoc/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Starlight Starter Kit: Markdoc

[![Built with Starlight](https://astro.badg.es/v2/built-with-starlight/tiny.svg)](https://starlight.astro.build)

```
npm create astro@latest -- --template starlight/markdoc
```

[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/starlight/tree/main/examples/markdoc)
[![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/p/sandbox/github/withastro/starlight/tree/main/examples/markdoc)
[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/withastro/starlight&create_from_path=examples/markdoc)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fwithastro%2Fstarlight%2Ftree%2Fmain%2Fexamples%2Fmarkdoc&project-name=my-starlight-docs&repository-name=my-starlight-docs)

> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun!

## 🚀 Project Structure

Inside of your Astro + Starlight project, you'll see the following folders and files:

```
.
├── public/
├── src/
│ ├── assets/
│ ├── content/
│ │ ├── docs/
│ │ └── config.ts
│ └── env.d.ts
├── astro.config.mjs
├── markdoc.config.mjs
├── package.json
└── tsconfig.json
```

Starlight looks for `.md`, `.mdx` or `.mdoc` files in the `src/content/docs/` directory. Each file is exposed as a route based on its file name.

Images can be added to `src/assets/` and embedded in Markdown with a relative link.

Static assets, like favicons, can be placed in the `public/` directory.

## 🧞 Commands

All commands are run from the root of the project, from a terminal:

| Command | Action |
| :------------------------ | :----------------------------------------------- |
| `npm install` | Installs dependencies |
| `npm run dev` | Starts local dev server at `localhost:4321` |
| `npm run build` | Build your production site to `./dist/` |
| `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
| `npm run astro -- --help` | Get help using the Astro CLI |

## 👀 Want to learn more?

Check out [Starlight’s docs](https://starlight.astro.build/), read [the Astro documentation](https://docs.astro.build), or jump into the [Astro Discord server](https://astro.build/chat).
29 changes: 29 additions & 0 deletions examples/markdoc/astro.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';
import markdoc from '@astrojs/markdoc';

// https://astro.build/config
export default defineConfig({
integrations: [
markdoc(),
starlight({
title: 'My Docs',
social: {
github: 'https://github.com/withastro/starlight',
},
sidebar: [
{
label: 'Guides',
items: [
// Each item here is one entry in the navigation menu.
{ label: 'Example Guide', slug: 'guides/example' },
],
},
{
label: 'Reference',
autogenerate: { directory: 'reference' },
},
],
}),
],
});
7 changes: 7 additions & 0 deletions examples/markdoc/markdoc.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { defineMarkdocConfig } from '@astrojs/markdoc/config';
import starlightMarkdoc from '@astrojs/starlight-markdoc';

// https://docs.astro.build/en/guides/integrations-guide/markdoc/
export default defineMarkdocConfig({
extends: [starlightMarkdoc()],
});
20 changes: 20 additions & 0 deletions examples/markdoc/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"name": "@example/starlight-markdoc",
"type": "module",
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "astro dev",
"start": "astro dev",
"build": "astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"@astrojs/markdoc": "^0.11.4",
"@astrojs/starlight": "^0.26.1",
"@astrojs/starlight-markdoc": "^0.0.1",
"astro": "^4.15.3",
"sharp": "^0.32.5"
}
}
1 change: 1 addition & 0 deletions examples/markdoc/public/favicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added examples/markdoc/src/assets/houston.webp
Binary file not shown.
6 changes: 6 additions & 0 deletions examples/markdoc/src/content/config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { defineCollection } from 'astro:content';
import { docsSchema } from '@astrojs/starlight/schema';

export const collections = {
docs: defineCollection({ schema: docsSchema() }),
};
Loading
Loading