From c6f8e7764d23b3210117558e2fbe496c2ec6868e Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 16 Dec 2024 19:52:22 +0000
Subject: [PATCH] Sync from a44cfb874a6f066214e851c98a410d89c6866992
---
.codesandbox/Dockerfile | 1 +
.gitignore | 24 ++++++++
.vscode/extensions.json | 4 ++
.vscode/launch.json | 11 ++++
README.md | 56 +++++++++++++++++
astro.config.mjs | 8 +++
markdoc.config.mjs | 13 ++++
package.json | 16 +++++
public/favicon.svg | 9 +++
src/components/Aside.astro | 116 ++++++++++++++++++++++++++++++++++++
src/content.config.ts | 5 ++
src/content/docs/intro.mdoc | 39 ++++++++++++
src/layouts/Layout.astro | 42 +++++++++++++
src/pages/index.astro | 28 +++++++++
tsconfig.json | 8 +++
15 files changed, 380 insertions(+)
create mode 100644 .codesandbox/Dockerfile
create mode 100644 .gitignore
create mode 100644 .vscode/extensions.json
create mode 100644 .vscode/launch.json
create mode 100644 README.md
create mode 100644 astro.config.mjs
create mode 100644 markdoc.config.mjs
create mode 100644 package.json
create mode 100644 public/favicon.svg
create mode 100644 src/components/Aside.astro
create mode 100644 src/content.config.ts
create mode 100644 src/content/docs/intro.mdoc
create mode 100644 src/layouts/Layout.astro
create mode 100644 src/pages/index.astro
create mode 100644 tsconfig.json
diff --git a/.codesandbox/Dockerfile b/.codesandbox/Dockerfile
new file mode 100644
index 0000000000..c3b5c81a12
--- /dev/null
+++ b/.codesandbox/Dockerfile
@@ -0,0 +1 @@
+FROM node:18-bullseye
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000..16d54bb13c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,24 @@
+# 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
+
+# jetbrains setting folder
+.idea/
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000000..22a15055d6
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,4 @@
+{
+ "recommendations": ["astro-build.astro-vscode"],
+ "unwantedRecommendations": []
+}
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000000..d642209762
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,11 @@
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "command": "./node_modules/.bin/astro dev",
+ "name": "Development server",
+ "request": "launch",
+ "type": "node-terminal"
+ }
+ ]
+}
diff --git a/README.md b/README.md
new file mode 100644
index 0000000000..35afb0f3f1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,56 @@
+# Astro Example: Markdoc (experimental)
+
+This starter showcases the experimental Markdoc integration.
+
+```sh
+npm create astro@latest -- --template with-markdoc
+```
+
+[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/astro/tree/latest/examples/with-markdoc)
+[![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/p/sandbox/github/withastro/astro/tree/latest/examples/with-markdoc)
+
+> 🧑🚀 **Seasoned astronaut?** Delete this file. Have fun!
+
+## 🚀 Project Structure
+
+Inside of your Astro project, you'll see the following folders and files:
+
+```text
+/
+├── public/
+├── src/
+│ └── content/
+ └── docs/
+│ └── intro.mdoc
+| └── config.ts
+│ └── components/Aside.astro
+│ └── layouts/Layout.astro
+│ └── pages/index.astro
+| └── env.d.ts
+├── astro.config.mjs
+├── markdoc.config.mjs
+├── README.md
+├── package.json
+└── tsconfig.json
+```
+
+Markdoc (`.mdoc`) files can be used in content collections. See `src/content/docs/` for an example file.
+
+You can also render Astro components from your Markdoc files using [tags](https://markdoc.dev/docs/tags). See the `markdoc.config.mjs` file for an example configuration.
+
+## 🧞 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?
+
+Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
diff --git a/astro.config.mjs b/astro.config.mjs
new file mode 100644
index 0000000000..517f5a62e8
--- /dev/null
+++ b/astro.config.mjs
@@ -0,0 +1,8 @@
+// @ts-check
+import { defineConfig } from 'astro/config';
+import markdoc from '@astrojs/markdoc';
+
+// https://astro.build/config
+export default defineConfig({
+ integrations: [markdoc()],
+});
diff --git a/markdoc.config.mjs b/markdoc.config.mjs
new file mode 100644
index 0000000000..90608d5640
--- /dev/null
+++ b/markdoc.config.mjs
@@ -0,0 +1,13 @@
+import { defineMarkdocConfig, component } from '@astrojs/markdoc/config';
+
+export default defineMarkdocConfig({
+ tags: {
+ aside: {
+ render: component('./src/components/Aside.astro'),
+ attributes: {
+ type: { type: String },
+ title: { type: String },
+ },
+ },
+ },
+});
diff --git a/package.json b/package.json
new file mode 100644
index 0000000000..ba3392fe3e
--- /dev/null
+++ b/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "@example/with-markdoc",
+ "type": "module",
+ "version": "0.0.1",
+ "private": true,
+ "scripts": {
+ "dev": "astro dev",
+ "build": "astro build",
+ "preview": "astro preview",
+ "astro": "astro"
+ },
+ "dependencies": {
+ "@astrojs/markdoc": "^0.12.3",
+ "astro": "^5.0.8"
+ }
+}
diff --git a/public/favicon.svg b/public/favicon.svg
new file mode 100644
index 0000000000..f157bd1c5e
--- /dev/null
+++ b/public/favicon.svg
@@ -0,0 +1,9 @@
+
diff --git a/src/components/Aside.astro b/src/components/Aside.astro
new file mode 100644
index 0000000000..be15e8c0ae
--- /dev/null
+++ b/src/components/Aside.astro
@@ -0,0 +1,116 @@
+---
+// Inspired by the `Aside` component from docs.astro.build
+// https://github.com/withastro/starlight/blob/main/packages/starlight/integrations/asides.ts
+
+interface Props {
+ type?: 'note' | 'tip' | 'caution' | 'danger';
+ title?: string;
+}
+
+const labelByType = {
+ note: 'Note',
+ tip: 'Tip',
+ caution: 'Caution',
+ danger: 'Danger',
+};
+const { type = 'note' } = Astro.props as Props;
+const title = Astro.props.title ?? labelByType[type] ?? '';
+
+// SVG icon paths based on GitHub Octicons
+const icons: Record, { viewBox: string; d: string }> = {
+ note: {
+ viewBox: '0 0 18 18',
+ d: 'M0 3.75C0 2.784.784 2 1.75 2h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0114.25 14H1.75A1.75 1.75 0 010 12.25v-8.5zm1.75-.25a.25.25 0 00-.25.25v8.5c0 .138.112.25.25.25h12.5a.25.25 0 00.25-.25v-8.5a.25.25 0 00-.25-.25H1.75zM3.5 6.25a.75.75 0 01.75-.75h7a.75.75 0 010 1.5h-7a.75.75 0 01-.75-.75zm.75 2.25a.75.75 0 000 1.5h4a.75.75 0 000-1.5h-4z',
+ },
+ tip: {
+ viewBox: '0 0 18 18',
+ d: 'M14 0a8.8 8.8 0 0 0-6 2.6l-.5.4-.9 1H3.3a1.8 1.8 0 0 0-1.5.8L.1 7.6a.8.8 0 0 0 .4 1.1l3.1 1 .2.1 2.4 2.4.1.2 1 3a.8.8 0 0 0 1 .5l2.9-1.7a1.8 1.8 0 0 0 .8-1.5V9.5l1-1 .4-.4A8.8 8.8 0 0 0 16 2v-.1A1.8 1.8 0 0 0 14.2 0h-.1zm-3.5 10.6-.3.2L8 12.3l.5 1.8 2-1.2a.3.3 0 0 0 .1-.2v-2zM3.7 8.1l1.5-2.3.2-.3h-2a.3.3 0 0 0-.3.1l-1.2 2 1.8.5zm5.2-4.5a7.3 7.3 0 0 1 5.2-2.1h.1a.3.3 0 0 1 .3.3v.1a7.3 7.3 0 0 1-2.1 5.2l-.5.4a15.2 15.2 0 0 1-2.5 2L7.1 11 5 9l1.5-2.3a15.3 15.3 0 0 1 2-2.5l.4-.5zM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0zm-8.4 9.6a1.5 1.5 0 1 0-2.2-2.2 7 7 0 0 0-1.1 3 .2.2 0 0 0 .3.3c.6 0 2.2-.4 3-1.1z',
+ },
+ caution: {
+ viewBox: '-1 1 18 18',
+ d: 'M8.9 1.5C8.7 1.2 8.4 1 8 1s-.7.2-.9.5l-7 12a1 1 0 0 0 0 1c.2.3.6.5 1 .5H15c.4 0 .7-.2.9-.5a1 1 0 0 0 0-1l-7-12zM9 13H7v-2h2v2zm0-3H7V6h2v4z',
+ },
+ danger: {
+ viewBox: '0 1 14 17',
+ d: 'M5 .3c.9 2.2.5 3.4-.5 4.3C3.5 5.6 2 6.5 1 8c-1.5 2-1.7 6.5 3.5 7.7-2.2-1.2-2.6-4.5-.3-6.6-.6 2 .6 3.3 2 2.8 1.4-.4 2.3.6 2.2 1.7 0 .8-.3 1.4-1 1.8A5.6 5.6 0 0 0 12 10c0-2.9-2.5-3.3-1.3-5.7-1.5.2-2 1.2-1.8 2.8 0 1-1 1.8-2 1.3-.6-.4-.6-1.2 0-1.8C8.2 5.3 8.7 2.5 5 .3z',
+ },
+};
+const { viewBox, d } = icons[type];
+---
+
+
+
+
diff --git a/src/content.config.ts b/src/content.config.ts
new file mode 100644
index 0000000000..79743326ea
--- /dev/null
+++ b/src/content.config.ts
@@ -0,0 +1,5 @@
+import { defineCollection } from 'astro:content';
+
+export const collections = {
+ docs: defineCollection({})
+};
diff --git a/src/content/docs/intro.mdoc b/src/content/docs/intro.mdoc
new file mode 100644
index 0000000000..c8fcf5675d
--- /dev/null
+++ b/src/content/docs/intro.mdoc
@@ -0,0 +1,39 @@
+---
+title: Welcome to Markdoc 👋
+---
+
+This simple starter showcases Markdoc with Content Collections. All Markdoc features are supported, including this nifty built-in `{% table %}` tag:
+
+{% table %}
+* Feature
+* Supported
+---
+* `.mdoc` in Content Collections
+* ✅
+---
+* Markdoc transform configuration
+* ✅
+---
+* Astro components
+* ✅
+{% /table %}
+
+{% aside title="Code Challenge" type="tip" %}
+
+Reveal the secret message below by adding `revealSecret` to your list of Markdoc variables.
+
+_Hint: Try passing as a prop to the `` component in the `src/pages/index.astro` file._
+
+{% if $revealSecret %}
+
+Maybe the real secret was the Rick Rolls we shared along the way.
+
+![Rick Astley dancing](https://media.tenor.com/x8v1oNUOmg4AAAAM/rickroll-roll.gif)
+
+{% /if %}
+
+{% /aside %}
+
+Check out [the `@astrojs/markdoc` integration][astro-markdoc] for complete documentation and usage examples.
+
+[astro-markdoc]: https://docs.astro.build/en/guides/integrations-guide/markdoc/
diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro
new file mode 100644
index 0000000000..aaa6e0ce0a
--- /dev/null
+++ b/src/layouts/Layout.astro
@@ -0,0 +1,42 @@
+---
+interface Props {
+ title: string;
+}
+
+const { title } = Astro.props;
+---
+
+
+
+
+
+
+
+
+ {title}
+
+
+
+
+
+
diff --git a/src/pages/index.astro b/src/pages/index.astro
new file mode 100644
index 0000000000..891b344de8
--- /dev/null
+++ b/src/pages/index.astro
@@ -0,0 +1,28 @@
+---
+import { getEntry } from 'astro:content';
+import Layout from '../layouts/Layout.astro';
+
+const intro = await getEntry('docs', 'intro');
+if (!intro) {
+ return Astro.redirect('/404');
+}
+const { Content } = await intro.render();
+---
+
+
+
+ {intro.data.title}
+
+
+
+
+
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000000..0dc098dd7e
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "extends": "astro/tsconfigs/strict",
+ "include": [".astro/types.d.ts", "**/*"],
+ "exclude": ["dist"],
+ "compilerOptions": {
+ "strictNullChecks": true
+ }
+}