@openlaboratory/open-doc 0.1.0 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/app/src/integrations/open-doc-config.mjs +62 -12
  2. package/package.json +5 -2
  3. package/app/.astro/collections/docs.schema.json +0 -24
  4. package/app/.astro/content-assets.mjs +0 -1
  5. package/app/.astro/content-modules.mjs +0 -4
  6. package/app/.astro/content.d.ts +0 -218
  7. package/app/.astro/data-store.json +0 -1
  8. package/app/.astro/settings.json +0 -5
  9. package/app/.astro/types.d.ts +0 -2
  10. package/app/node_modules/.astro/data-store.json +0 -1
  11. package/app/node_modules/.vite/deps/@astrojs_react_client__js.js +0 -163
  12. package/app/node_modules/.vite/deps/@astrojs_react_client__js.js.map +0 -7
  13. package/app/node_modules/.vite/deps/_metadata.json +0 -67
  14. package/app/node_modules/.vite/deps/astro___aria-query.js +0 -6776
  15. package/app/node_modules/.vite/deps/astro___aria-query.js.map +0 -7
  16. package/app/node_modules/.vite/deps/astro___axobject-query.js +0 -3754
  17. package/app/node_modules/.vite/deps/astro___axobject-query.js.map +0 -7
  18. package/app/node_modules/.vite/deps/astro___cssesc.js +0 -99
  19. package/app/node_modules/.vite/deps/astro___cssesc.js.map +0 -7
  20. package/app/node_modules/.vite/deps/chunk-55ZOATU5.js +0 -305
  21. package/app/node_modules/.vite/deps/chunk-55ZOATU5.js.map +0 -7
  22. package/app/node_modules/.vite/deps/chunk-5WRI5ZAA.js +0 -30
  23. package/app/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map +0 -7
  24. package/app/node_modules/.vite/deps/chunk-FEZZJEG2.js +0 -6935
  25. package/app/node_modules/.vite/deps/chunk-FEZZJEG2.js.map +0 -7
  26. package/app/node_modules/.vite/deps/package.json +0 -3
  27. package/app/node_modules/.vite/deps/react-dom.js +0 -6
  28. package/app/node_modules/.vite/deps/react-dom.js.map +0 -7
  29. package/app/node_modules/.vite/deps/react.js +0 -5
  30. package/app/node_modules/.vite/deps/react.js.map +0 -7
  31. package/app/node_modules/.vite/deps/react_jsx-dev-runtime.js +0 -39
  32. package/app/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +0 -7
  33. package/app/node_modules/.vite/deps/react_jsx-runtime.js +0 -57
  34. package/app/node_modules/.vite/deps/react_jsx-runtime.js.map +0 -7
@@ -1 +0,0 @@
1
- [["Map",1,2,9,10],"meta::meta",["Map",3,4,5,6,7,8],"astro-version","5.18.2","content-config-digest","dfe7a3bbcb228414","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"site\":\"https://open-doc.dev\",\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[],\"responsiveStyles\":false},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":{\"type\":\"shiki\",\"excludeLangs\":[\"math\"]},\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{\"light\":\"github-light\",\"dark\":\"github-dark\"},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true,\"allowedDomains\":[],\"actionBodySizeLimit\":1048576},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"headingIdCompat\":false,\"preserveScriptOrder\":false,\"liveContentCollections\":false,\"csp\":false,\"staticImportMetaEnv\":false,\"chromeDevtoolsWorkspace\":false,\"failOnPrerenderConflict\":false,\"svgo\":false},\"legacy\":{\"collections\":false}}","docs",["Map",11,12,20,21,61,62,88,89,118,119,158,159,188,189],"guides/custom-components",{"id":11,"data":13,"body":16,"filePath":17,"digest":18,"deferredRender":19},{"title":14,"description":15},"Custom Components","Use your own React components inside Markdown with MDX.","import { Callout } from '../_components/Callout'\n\n# Custom Components\n\nRename a page from `.md` to `.mdx` and you can import and use React components right\ninside your content.\n\n\u003CCallout type=\"tip\" title=\"Try it\">\n This box is a React component imported at the top of this very page.\n\u003C/Callout>\n\n## Where components live\n\nPut components anywhere under your content directory. Folders that start with an\nunderscore (like `_components`) are ignored as pages, so they're the natural home\nfor shared partials:\n\n```\ncontent/\n├─ _components/\n│ └─ Callout.tsx\n└─ guides/\n └─ custom-components.mdx\n```\n\n## Importing them\n\nUse a relative import:\n\n```mdx\nimport { Callout } from '../_components/Callout'\n\n\u003CCallout type=\"warning\" title=\"Heads up\">\n Underscore-prefixed files never become their own pages.\n\u003C/Callout>\n```\n\n…or the built-in `@docs` alias, which always points at your content directory:\n\n```mdx\nimport { Callout } from '@docs/_components/Callout'\n```\n\n\u003CCallout type=\"warning\" title=\"One requirement\">\n MDX and React components need `react` and `react-dom` installed in your project.\n Plain Markdown does not.\n\u003C/Callout>\n\n## A few of each type\n\n\u003CCallout type=\"note\">A neutral note, for context and details.\u003C/Callout>\n\u003CCallout type=\"tip\">A tip, for the happy path.\u003C/Callout>\n\u003CCallout type=\"warning\">A warning, for the sharp edges.\u003C/Callout>\n\nComponents compose with all the normal Markdown around them, so you can mix prose,\ncode, and your own UI however you like.","../../../example/content/guides/custom-components.mdx","6a1c034b5af01859",true,"reference/faq",{"id":20,"data":22,"body":25,"filePath":26,"digest":27,"rendered":28},{"title":23,"description":24},"FAQ","Common questions about open-doc.","# FAQ\n\n## Do I need to know Astro?\n\nNo. Astro, Tailwind, MDX, and the search index are all bundled and configured inside\nthe `open-doc` package. You only write content and a config file.\n\n## Can I use plain Markdown without React?\n\nYes. `.md` files need nothing beyond `open-doc`. You only need `react` and\n`react-dom` if you write `.mdx` pages or import React components.\n\n## How does search work?\n\n`open-doc build` runs [Pagefind](https://pagefind.app) over the generated HTML and\nproduces a static search index. The \u003Ckbd>⌘K\u003C/kbd> dialog queries it entirely in the\nbrowser — no server or third-party service. In `dev`, search falls back to matching\npage titles until you run a build.\n\n## Can I customise the colors?\n\nYes — override any theme token per mode via the `theme` option. See\n[Configuration](/getting-started/configuration#theming).\n\n## How do I add a page?\n\n1. Create the Markdown file in your content directory.\n2. Add its slug to the relevant section's `pages` array in `open-doc.config.ts`.\n\nThe title comes from the file's frontmatter.\n\n## Where do I deploy the output?\n\nAnywhere that serves static files. `open-doc build` writes everything to `./dist`.\n\n## Is light mode supported?\n\nYes. open-doc defaults to dark but includes a polished light theme and a header\ntoggle. Set `defaultTheme: 'auto'` to follow the visitor's system preference.","../../../example/content/reference/faq.md","5215c27998f1d6f0",{"html":29,"metadata":30},"\u003Ch1 id=\"faq\">FAQ\u003C/h1>\n\u003Ch2 id=\"do-i-need-to-know-astro\">Do I need to know Astro?\u003C/h2>\n\u003Cp>No. Astro, Tailwind, MDX, and the search index are all bundled and configured inside\nthe \u003Ccode>open-doc\u003C/code> package. You only write content and a config file.\u003C/p>\n\u003Ch2 id=\"can-i-use-plain-markdown-without-react\">Can I use plain Markdown without React?\u003C/h2>\n\u003Cp>Yes. \u003Ccode>.md\u003C/code> files need nothing beyond \u003Ccode>open-doc\u003C/code>. You only need \u003Ccode>react\u003C/code> and\n\u003Ccode>react-dom\u003C/code> if you write \u003Ccode>.mdx\u003C/code> pages or import React components.\u003C/p>\n\u003Ch2 id=\"how-does-search-work\">How does search work?\u003C/h2>\n\u003Cp>\u003Ccode>open-doc build\u003C/code> runs \u003Ca href=\"https://pagefind.app\">Pagefind\u003C/a> over the generated HTML and\nproduces a static search index. The \u003Ckbd>⌘K\u003C/kbd> dialog queries it entirely in the\nbrowser — no server or third-party service. In \u003Ccode>dev\u003C/code>, search falls back to matching\npage titles until you run a build.\u003C/p>\n\u003Ch2 id=\"can-i-customise-the-colors\">Can I customise the colors?\u003C/h2>\n\u003Cp>Yes — override any theme token per mode via the \u003Ccode>theme\u003C/code> option. See\n\u003Ca href=\"/getting-started/configuration#theming\">Configuration\u003C/a>.\u003C/p>\n\u003Ch2 id=\"how-do-i-add-a-page\">How do I add a page?\u003C/h2>\n\u003Col>\n\u003Cli>Create the Markdown file in your content directory.\u003C/li>\n\u003Cli>Add its slug to the relevant section’s \u003Ccode>pages\u003C/code> array in \u003Ccode>open-doc.config.ts\u003C/code>.\u003C/li>\n\u003C/ol>\n\u003Cp>The title comes from the file’s frontmatter.\u003C/p>\n\u003Ch2 id=\"where-do-i-deploy-the-output\">Where do I deploy the output?\u003C/h2>\n\u003Cp>Anywhere that serves static files. \u003Ccode>open-doc build\u003C/code> writes everything to \u003Ccode>./dist\u003C/code>.\u003C/p>\n\u003Ch2 id=\"is-light-mode-supported\">Is light mode supported?\u003C/h2>\n\u003Cp>Yes. open-doc defaults to dark but includes a polished light theme and a header\ntoggle. Set \u003Ccode>defaultTheme: 'auto'\u003C/code> to follow the visitor’s system preference.\u003C/p>",{"headings":31,"localImagePaths":57,"remoteImagePaths":58,"frontmatter":59,"imagePaths":60},[32,35,39,42,45,48,51,54],{"depth":33,"slug":34,"text":23},1,"faq",{"depth":36,"slug":37,"text":38},2,"do-i-need-to-know-astro","Do I need to know Astro?",{"depth":36,"slug":40,"text":41},"can-i-use-plain-markdown-without-react","Can I use plain Markdown without React?",{"depth":36,"slug":43,"text":44},"how-does-search-work","How does search work?",{"depth":36,"slug":46,"text":47},"can-i-customise-the-colors","Can I customise the colors?",{"depth":36,"slug":49,"text":50},"how-do-i-add-a-page","How do I add a page?",{"depth":36,"slug":52,"text":53},"where-do-i-deploy-the-output","Where do I deploy the output?",{"depth":36,"slug":55,"text":56},"is-light-mode-supported","Is light mode supported?",[],[],{"title":23,"description":24},[],"getting-started/introduction",{"id":61,"data":63,"body":66,"filePath":67,"digest":68,"rendered":69},{"title":64,"description":65},"Introduction","open-doc turns a folder of Markdown into a polished documentation site.","# Introduction\n\n**open-doc** is a documentation-site framework. You write Markdown and MDX, point a\nsmall config file at it, and run one command to get a fast, beautiful static site —\nno build setup, no boilerplate.\n\nIt is built on [Astro](https://astro.build), React, Tailwind CSS, and MDX, and ships\nwith the polish you'd expect from GitBook or Mintlify out of the box.\n\n## What you get\n\n- **Three-column layout** — sidebar navigation, content, and an auto-generated \"on this page\" table of contents.\n- **Full-text search** — press \u003Ckbd>⌘K\u003C/kbd> anywhere. Powered by [Pagefind](https://pagefind.app), indexed at build time.\n- **Light & dark themes** — with a header toggle and system-preference detection.\n- **Great typography** — tuned prose styles, code blocks with copy buttons, and heading anchor links.\n- **MDX components** — drop your own React components straight into the page.\n- **One dependency** — everything is bundled. Your repo stays tiny.\n\n## How it works\n\nYour project only ever contains two things: a config file and a content directory.\n\n```\nmy-docs/\n├─ open-doc.config.ts # title, navigation, theme\n└─ content/ # your .md and .mdx files\n ├─ getting-started/\n │ └─ introduction.md\n └─ reference/\n └─ faq.md\n```\n\nRunning `open-doc dev` (or `build`) hands that content to a fully-configured Astro\napp bundled inside the `open-doc` package. You never manage Astro, Tailwind, or any\nof the moving parts yourself.\n\n## Next steps\n\n- [Installation](/getting-started/installation) — add open-doc to a project in two minutes.\n- [Configuration](/getting-started/configuration) — every option explained.","../../../example/content/getting-started/introduction.md","3190be6db1a720f0",{"html":70,"metadata":71},"\u003Ch1 id=\"introduction\">Introduction\u003C/h1>\n\u003Cp>\u003Cstrong>open-doc\u003C/strong> is a documentation-site framework. You write Markdown and MDX, point a\nsmall config file at it, and run one command to get a fast, beautiful static site —\nno build setup, no boilerplate.\u003C/p>\n\u003Cp>It is built on \u003Ca href=\"https://astro.build\">Astro\u003C/a>, React, Tailwind CSS, and MDX, and ships\nwith the polish you’d expect from GitBook or Mintlify out of the box.\u003C/p>\n\u003Ch2 id=\"what-you-get\">What you get\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Three-column layout\u003C/strong> — sidebar navigation, content, and an auto-generated “on this page” table of contents.\u003C/li>\n\u003Cli>\u003Cstrong>Full-text search\u003C/strong> — press \u003Ckbd>⌘K\u003C/kbd> anywhere. Powered by \u003Ca href=\"https://pagefind.app\">Pagefind\u003C/a>, indexed at build time.\u003C/li>\n\u003Cli>\u003Cstrong>Light & dark themes\u003C/strong> — with a header toggle and system-preference detection.\u003C/li>\n\u003Cli>\u003Cstrong>Great typography\u003C/strong> — tuned prose styles, code blocks with copy buttons, and heading anchor links.\u003C/li>\n\u003Cli>\u003Cstrong>MDX components\u003C/strong> — drop your own React components straight into the page.\u003C/li>\n\u003Cli>\u003Cstrong>One dependency\u003C/strong> — everything is bundled. Your repo stays tiny.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"how-it-works\">How it works\u003C/h2>\n\u003Cp>Your project only ever contains two things: a config file and a content directory.\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>my-docs/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>├─ open-doc.config.ts # title, navigation, theme\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>└─ content/ # your .md and .mdx files\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> ├─ getting-started/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> │ └─ introduction.md\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> └─ reference/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> └─ faq.md\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Running \u003Ccode>open-doc dev\u003C/code> (or \u003Ccode>build\u003C/code>) hands that content to a fully-configured Astro\napp bundled inside the \u003Ccode>open-doc\u003C/code> package. You never manage Astro, Tailwind, or any\nof the moving parts yourself.\u003C/p>\n\u003Ch2 id=\"next-steps\">Next steps\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"/getting-started/installation\">Installation\u003C/a> — add open-doc to a project in two minutes.\u003C/li>\n\u003Cli>\u003Ca href=\"/getting-started/configuration\">Configuration\u003C/a> — every option explained.\u003C/li>\n\u003C/ul>",{"headings":72,"localImagePaths":84,"remoteImagePaths":85,"frontmatter":86,"imagePaths":87},[73,75,78,81],{"depth":33,"slug":74,"text":64},"introduction",{"depth":36,"slug":76,"text":77},"what-you-get","What you get",{"depth":36,"slug":79,"text":80},"how-it-works","How it works",{"depth":36,"slug":82,"text":83},"next-steps","Next steps",[],[],{"title":64,"description":65},[],"getting-started/configuration",{"id":88,"data":90,"body":93,"filePath":94,"digest":95,"rendered":96},{"title":91,"description":92},"Configuration","Every option in open-doc.config.ts, explained.","# Configuration\n\nAll configuration lives in `open-doc.config.ts` (`.js` and `.mjs` work too). Wrap it\nin `defineConfig` for full type-checking and autocomplete.\n\n## Full example\n\n```ts\nimport { defineConfig } from '@openlaboratory/open-doc'\n\nexport default defineConfig({\n title: 'My Docs',\n description: 'Everything you need to know.',\n contentDir: './content',\n base: '/',\n site: 'https://docs.example.com',\n logo: { text: 'My Docs', src: '/logo.svg', href: '/' },\n social: [{ icon: 'github', href: 'https://github.com/me/repo' }],\n defaultTheme: 'dark',\n themeToggle: true,\n editLinkBase: 'https://github.com/me/repo/edit/main/content',\n nav: [\n { label: 'Getting Started', dir: 'getting-started', pages: ['introduction'] },\n { label: 'Reference', dir: 'reference', pages: ['faq'] },\n ],\n})\n```\n\n## Options\n\n| Option | Type | Description |\n|---|---|---|\n| `title` | `string` | **Required.** Used in the `\u003Ctitle>` tag and as the default logo text. |\n| `description` | `string` | Tagline shown on the home page. |\n| `contentDir` | `string` | Folder of your `.md`/`.mdx` files. Default `./content`. |\n| `publicDir` | `string` | Static assets served at the site root. Default `./public` if present. |\n| `base` | `string` | Base path for sub-path hosting, e.g. `/docs`. Default `/`. |\n| `site` | `string` | Canonical site URL, used for SEO meta. |\n| `logo` | `object` | `{ text, src, href }`. `src` points to an image in your public dir. |\n| `social` | `array` | `{ icon, label, href }` links shown in the header. |\n| `defaultTheme` | `'dark' \\| 'light' \\| 'auto'` | Initial theme. `auto` follows the OS. Default `dark`. |\n| `themeToggle` | `boolean` | Show the light/dark toggle. Default `true`. |\n| `theme` | `object` | Per-mode color overrides (see below). |\n| `editLinkBase` | `string` | Base URL for an \"Edit this page\" link. |\n| `nav` | `array` | **Required.** The sidebar — see [Writing Content](/guides/writing-content). |\n\n## Built-in social icons\n\n`github`, `x`, `twitter`, `discord`, `slack`, `linkedin`, `youtube`, `mastodon`,\n`bluesky`. Anything else falls back to a generic link icon.\n\n## Theming\n\nopen-doc is dark-first but fully themeable. Override any color token per mode with\nHSL triplets (no `hsl()` wrapper):\n\n```ts\ntheme: {\n dark: {\n link: '160 84% 55%',\n 'surface-sidebar': '0 0% 4%',\n },\n light: {\n link: '160 84% 35%',\n },\n}\n```\n\nRecognised tokens include `background`, `foreground`, `surface`,\n`surface-sidebar`, `surface-content`, `surface-raised`, `border`, `muted`, `link`,\n`link-hover`, `code-bg`, and `code-border`.","../../../example/content/getting-started/configuration.md","0444a3e729757545",{"html":97,"metadata":98},"\u003Ch1 id=\"configuration\">Configuration\u003C/h1>\n\u003Cp>All configuration lives in \u003Ccode>open-doc.config.ts\u003C/code> (\u003Ccode>.js\u003C/code> and \u003Ccode>.mjs\u003C/code> work too). Wrap it\nin \u003Ccode>defineConfig\u003C/code> for full type-checking and autocomplete.\u003C/p>\n\u003Ch2 id=\"full-example\">Full example\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"ts\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\">import\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> { defineConfig } \u003C/span>\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\">from\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> '@openlaboratory/open-doc'\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\">export\u003C/span>\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\"> default\u003C/span>\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\"> defineConfig\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">({\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> title: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'My Docs'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> description: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'Everything you need to know.'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> contentDir: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'./content'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> base: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'/'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> site: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'https://docs.example.com'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> logo: { text: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'My Docs'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, src: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'/logo.svg'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, href: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'/'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> social: [{ icon: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'github'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, href: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'https://github.com/me/repo'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> }],\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> defaultTheme: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'dark'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> themeToggle: \u003C/span>\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">true\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> editLinkBase: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'https://github.com/me/repo/edit/main/content'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> nav: [\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> { label: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'Getting Started'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, dir: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'getting-started'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, pages: [\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'introduction'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">] },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> { label: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'Reference'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, dir: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'reference'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, pages: [\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'faq'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">] },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> ],\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">})\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"options\">Options\u003C/h2>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Option\u003C/th>\u003Cth>Type\u003C/th>\u003Cth>Description\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>title\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>string\u003C/code>\u003C/td>\u003Ctd>\u003Cstrong>Required.\u003C/strong> Used in the \u003Ccode><title>\u003C/code> tag and as the default logo text.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>description\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>string\u003C/code>\u003C/td>\u003Ctd>Tagline shown on the home page.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>contentDir\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>string\u003C/code>\u003C/td>\u003Ctd>Folder of your \u003Ccode>.md\u003C/code>/\u003Ccode>.mdx\u003C/code> files. Default \u003Ccode>./content\u003C/code>.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>publicDir\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>string\u003C/code>\u003C/td>\u003Ctd>Static assets served at the site root. Default \u003Ccode>./public\u003C/code> if present.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>base\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>string\u003C/code>\u003C/td>\u003Ctd>Base path for sub-path hosting, e.g. \u003Ccode>/docs\u003C/code>. Default \u003Ccode>/\u003C/code>.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>site\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>string\u003C/code>\u003C/td>\u003Ctd>Canonical site URL, used for SEO meta.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>logo\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>object\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>{ text, src, href }\u003C/code>. \u003Ccode>src\u003C/code> points to an image in your public dir.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>social\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>array\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>{ icon, label, href }\u003C/code> links shown in the header.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>defaultTheme\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>'dark' | 'light' | 'auto'\u003C/code>\u003C/td>\u003Ctd>Initial theme. \u003Ccode>auto\u003C/code> follows the OS. Default \u003Ccode>dark\u003C/code>.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>themeToggle\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>boolean\u003C/code>\u003C/td>\u003Ctd>Show the light/dark toggle. Default \u003Ccode>true\u003C/code>.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>theme\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>object\u003C/code>\u003C/td>\u003Ctd>Per-mode color overrides (see below).\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>editLinkBase\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>string\u003C/code>\u003C/td>\u003Ctd>Base URL for an “Edit this page” link.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>nav\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>array\u003C/code>\u003C/td>\u003Ctd>\u003Cstrong>Required.\u003C/strong> The sidebar — see \u003Ca href=\"/guides/writing-content\">Writing Content\u003C/a>.\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Ch2 id=\"built-in-social-icons\">Built-in social icons\u003C/h2>\n\u003Cp>\u003Ccode>github\u003C/code>, \u003Ccode>x\u003C/code>, \u003Ccode>twitter\u003C/code>, \u003Ccode>discord\u003C/code>, \u003Ccode>slack\u003C/code>, \u003Ccode>linkedin\u003C/code>, \u003Ccode>youtube\u003C/code>, \u003Ccode>mastodon\u003C/code>,\n\u003Ccode>bluesky\u003C/code>. Anything else falls back to a generic link icon.\u003C/p>\n\u003Ch2 id=\"theming\">Theming\u003C/h2>\n\u003Cp>open-doc is dark-first but fully themeable. Override any color token per mode with\nHSL triplets (no \u003Ccode>hsl()\u003C/code> wrapper):\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"ts\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">theme\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\"> dark\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\"> link\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'160 84% 55%'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> 'surface-sidebar'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'0 0% 4%'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\"> light\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\"> link\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'160 84% 35%'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">}\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Recognised tokens include \u003Ccode>background\u003C/code>, \u003Ccode>foreground\u003C/code>, \u003Ccode>surface\u003C/code>,\n\u003Ccode>surface-sidebar\u003C/code>, \u003Ccode>surface-content\u003C/code>, \u003Ccode>surface-raised\u003C/code>, \u003Ccode>border\u003C/code>, \u003Ccode>muted\u003C/code>, \u003Ccode>link\u003C/code>,\n\u003Ccode>link-hover\u003C/code>, \u003Ccode>code-bg\u003C/code>, and \u003Ccode>code-border\u003C/code>.\u003C/p>",{"headings":99,"localImagePaths":114,"remoteImagePaths":115,"frontmatter":116,"imagePaths":117},[100,102,105,108,111],{"depth":33,"slug":101,"text":91},"configuration",{"depth":36,"slug":103,"text":104},"full-example","Full example",{"depth":36,"slug":106,"text":107},"options","Options",{"depth":36,"slug":109,"text":110},"built-in-social-icons","Built-in social icons",{"depth":36,"slug":112,"text":113},"theming","Theming",[],[],{"title":91,"description":92},[],"guides/writing-content",{"id":118,"data":120,"body":123,"filePath":124,"digest":125,"rendered":126},{"title":121,"description":122},"Writing Content","Frontmatter, the navigation model, and the Markdown features you can use.","# Writing Content\n\n## Frontmatter\n\nEvery page starts with a small frontmatter block:\n\n```md\n---\ntitle: Quick Start\ndescription: Get up and running in five minutes.\n---\n```\n\n| Field | Required | Used for |\n|---|---|---|\n| `title` | Yes | The page heading in the sidebar, search, and `\u003Ctitle>`. |\n| `description` | No | Sub-text in search results and the home page. |\n\n## The navigation model\n\nThe sidebar is **explicit** — you control exactly what appears and in what order\nvia the `nav` array in your config. Page titles are pulled from each file's\nfrontmatter automatically.\n\n```ts\nnav: [\n {\n label: 'Getting Started',\n dir: 'getting-started', // folder under your content dir\n pages: ['introduction', 'installation'],\n },\n]\n```\n\nThis maps to `content/getting-started/introduction.md` and\n`content/getting-started/installation.md`, rendered at `/getting-started/introduction`\nand so on. Order in the array is the order in the sidebar.\n\nA page that exists on disk but isn't listed in `nav` simply won't appear in the\nsidebar — handy for drafts.\n\n## Markdown features\n\nEverything you'd expect, styled to match:\n\n### Code blocks\n\nFenced code is syntax-highlighted (light & dark) and gets a copy button on hover.\n\n```ts\nexport function greet(name: string) {\n return `Hello, ${name}!`\n}\n```\n\n### Tables\n\n| Command | What it does |\n|---|---|\n| `open-doc dev` | Starts the dev server |\n| `open-doc build` | Builds to `./dist` |\n\n### Blockquotes\n\n> Use blockquotes for asides and tips. Lead with a **bold** word to give it a label.\n\n### Lists and links\n\n1. Ordered lists work.\n2. So do [internal links](/reference/faq) and [external ones](https://astro.build).\n\n- Bullets too\n- With `inline code`\n\nHeadings automatically get anchor links and feed the \"on this page\" outline on the\nright.","../../../example/content/guides/writing-content.md","3a3d6124b05233c7",{"html":127,"metadata":128},"\u003Ch1 id=\"writing-content\">Writing Content\u003C/h1>\n\u003Ch2 id=\"frontmatter\">Frontmatter\u003C/h2>\n\u003Cp>Every page starts with a small frontmatter block:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"md\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\">---\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">title: Quick Start\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">description: Get up and running in five minutes.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\">---\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Field\u003C/th>\u003Cth>Required\u003C/th>\u003Cth>Used for\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>title\u003C/code>\u003C/td>\u003Ctd>Yes\u003C/td>\u003Ctd>The page heading in the sidebar, search, and \u003Ccode><title>\u003C/code>.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>description\u003C/code>\u003C/td>\u003Ctd>No\u003C/td>\u003Ctd>Sub-text in search results and the home page.\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Ch2 id=\"the-navigation-model\">The navigation model\u003C/h2>\n\u003Cp>The sidebar is \u003Cstrong>explicit\u003C/strong> — you control exactly what appears and in what order\nvia the \u003Ccode>nav\u003C/code> array in your config. Page titles are pulled from each file’s\nfrontmatter automatically.\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"ts\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">nav\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: [\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> label: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'Getting Started'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> dir: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'getting-started'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#6A737D;--shiki-dark:#6A737D\">// folder under your content dir\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> pages: [\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'introduction'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'installation'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">],\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">]\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>This maps to \u003Ccode>content/getting-started/introduction.md\u003C/code> and\n\u003Ccode>content/getting-started/installation.md\u003C/code>, rendered at \u003Ccode>/getting-started/introduction\u003C/code>\nand so on. Order in the array is the order in the sidebar.\u003C/p>\n\u003Cp>A page that exists on disk but isn’t listed in \u003Ccode>nav\u003C/code> simply won’t appear in the\nsidebar — handy for drafts.\u003C/p>\n\u003Ch2 id=\"markdown-features\">Markdown features\u003C/h2>\n\u003Cp>Everything you’d expect, styled to match:\u003C/p>\n\u003Ch3 id=\"code-blocks\">Code blocks\u003C/h3>\n\u003Cp>Fenced code is syntax-highlighted (light & dark) and gets a copy button on hover.\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"ts\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\">export\u003C/span>\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\"> function\u003C/span>\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\"> greet\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#E36209;--shiki-dark:#FFAB70\">name\u003C/span>\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\">:\u003C/span>\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\"> return\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> `Hello, ${\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">name\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">}!`\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">}\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch3 id=\"tables\">Tables\u003C/h3>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Command\u003C/th>\u003Cth>What it does\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>open-doc dev\u003C/code>\u003C/td>\u003Ctd>Starts the dev server\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>open-doc build\u003C/code>\u003C/td>\u003Ctd>Builds to \u003Ccode>./dist\u003C/code>\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Ch3 id=\"blockquotes\">Blockquotes\u003C/h3>\n\u003Cblockquote>\n\u003Cp>Use blockquotes for asides and tips. Lead with a \u003Cstrong>bold\u003C/strong> word to give it a label.\u003C/p>\n\u003C/blockquote>\n\u003Ch3 id=\"lists-and-links\">Lists and links\u003C/h3>\n\u003Col>\n\u003Cli>Ordered lists work.\u003C/li>\n\u003Cli>So do \u003Ca href=\"/reference/faq\">internal links\u003C/a> and \u003Ca href=\"https://astro.build\">external ones\u003C/a>.\u003C/li>\n\u003C/ol>\n\u003Cul>\n\u003Cli>Bullets too\u003C/li>\n\u003Cli>With \u003Ccode>inline code\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Cp>Headings automatically get anchor links and feed the “on this page” outline on the\nright.\u003C/p>",{"headings":129,"localImagePaths":154,"remoteImagePaths":155,"frontmatter":156,"imagePaths":157},[130,132,135,138,141,145,148,151],{"depth":33,"slug":131,"text":121},"writing-content",{"depth":36,"slug":133,"text":134},"frontmatter","Frontmatter",{"depth":36,"slug":136,"text":137},"the-navigation-model","The navigation model",{"depth":36,"slug":139,"text":140},"markdown-features","Markdown features",{"depth":142,"slug":143,"text":144},3,"code-blocks","Code blocks",{"depth":142,"slug":146,"text":147},"tables","Tables",{"depth":142,"slug":149,"text":150},"blockquotes","Blockquotes",{"depth":142,"slug":152,"text":153},"lists-and-links","Lists and links",[],[],{"title":121,"description":122},[],"reference/cli",{"id":158,"data":160,"body":163,"filePath":164,"digest":165,"rendered":166},{"title":161,"description":162},"CLI","The open-doc command-line interface.","# CLI\n\nopen-doc ships a single command with three subcommands. Run them via npm scripts or\ndirectly with your package runner.\n\n## `open-doc dev`\n\nStart the local development server with hot-reloading.\n\n```bash\nopen-doc dev\n```\n\n| Flag | Default | Description |\n|---|---|---|\n| `--port \u003Cport>` | `4321` | Port to listen on. |\n| `--host` | off | Expose the server on your local network. |\n\n> Search uses a lightweight title-only mode in `dev`. Run a build once to enable\n> full-text search locally.\n\n## `open-doc build`\n\nBuild the static site into `./dist`, including the full-text search index.\n\n```bash\nopen-doc build\n```\n\nThe output is plain static files — deploy `./dist` to Netlify, Vercel, GitHub\nPages, Cloudflare Pages, or any static host.\n\n## `open-doc preview`\n\nServe the contents of `./dist` locally, exactly as it will be in production.\n\n```bash\nopen-doc preview\n```\n\nAccepts the same `--port` and `--host` flags as `dev`.\n\n## Deploying under a sub-path\n\nHosting at `example.com/docs` instead of the root? Set `base` in your config and\nevery link adjusts automatically:\n\n```ts\nexport default defineConfig({\n base: '/docs',\n // …\n})\n```","../../../example/content/reference/cli.md","6f93064c92a5e09c",{"html":167,"metadata":168},"\u003Ch1 id=\"cli\">CLI\u003C/h1>\n\u003Cp>open-doc ships a single command with three subcommands. Run them via npm scripts or\ndirectly with your package runner.\u003C/p>\n\u003Ch2 id=\"open-doc-dev\">\u003Ccode>open-doc dev\u003C/code>\u003C/h2>\n\u003Cp>Start the local development server with hot-reloading.\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">open-doc\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> dev\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Flag\u003C/th>\u003Cth>Default\u003C/th>\u003Cth>Description\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>--port <port>\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>4321\u003C/code>\u003C/td>\u003Ctd>Port to listen on.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>--host\u003C/code>\u003C/td>\u003Ctd>off\u003C/td>\u003Ctd>Expose the server on your local network.\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Cblockquote>\n\u003Cp>Search uses a lightweight title-only mode in \u003Ccode>dev\u003C/code>. Run a build once to enable\nfull-text search locally.\u003C/p>\n\u003C/blockquote>\n\u003Ch2 id=\"open-doc-build\">\u003Ccode>open-doc build\u003C/code>\u003C/h2>\n\u003Cp>Build the static site into \u003Ccode>./dist\u003C/code>, including the full-text search index.\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">open-doc\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> build\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>The output is plain static files — deploy \u003Ccode>./dist\u003C/code> to Netlify, Vercel, GitHub\nPages, Cloudflare Pages, or any static host.\u003C/p>\n\u003Ch2 id=\"open-doc-preview\">\u003Ccode>open-doc preview\u003C/code>\u003C/h2>\n\u003Cp>Serve the contents of \u003Ccode>./dist\u003C/code> locally, exactly as it will be in production.\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">open-doc\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> preview\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Accepts the same \u003Ccode>--port\u003C/code> and \u003Ccode>--host\u003C/code> flags as \u003Ccode>dev\u003C/code>.\u003C/p>\n\u003Ch2 id=\"deploying-under-a-sub-path\">Deploying under a sub-path\u003C/h2>\n\u003Cp>Hosting at \u003Ccode>example.com/docs\u003C/code> instead of the root? Set \u003Ccode>base\u003C/code> in your config and\nevery link adjusts automatically:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"ts\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\">export\u003C/span>\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\"> default\u003C/span>\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\"> defineConfig\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">({\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> base: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'/docs'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D;--shiki-dark:#6A737D\"> // …\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">})\u003C/span>\u003C/span>\u003C/code>\u003C/pre>",{"headings":169,"localImagePaths":184,"remoteImagePaths":185,"frontmatter":186,"imagePaths":187},[170,172,175,178,181],{"depth":33,"slug":171,"text":161},"cli",{"depth":36,"slug":173,"text":174},"open-doc-dev","open-doc dev",{"depth":36,"slug":176,"text":177},"open-doc-build","open-doc build",{"depth":36,"slug":179,"text":180},"open-doc-preview","open-doc preview",{"depth":36,"slug":182,"text":183},"deploying-under-a-sub-path","Deploying under a sub-path",[],[],{"title":161,"description":162},[],"getting-started/installation",{"id":188,"data":190,"body":193,"filePath":194,"digest":195,"rendered":196},{"title":191,"description":192},"Installation","Add open-doc to a project and run your first build.","# Installation\n\n## 1. Install the package\n\n```bash\nnpm install -D @openlaboratory/open-doc\n```\n\n> **Using MDX?** If you author MDX pages or custom React components, also install\n> `react` and `react-dom` as dependencies. Plain Markdown needs nothing else.\n\n## 2. Add a config file\n\nCreate `open-doc.config.ts` in your project root:\n\n```ts\nimport { defineConfig } from '@openlaboratory/open-doc'\n\nexport default defineConfig({\n title: 'My Docs',\n nav: [\n { label: 'Getting Started', dir: 'getting-started', pages: ['introduction'] },\n ],\n})\n```\n\n## 3. Write some content\n\n```md\n---\ntitle: Introduction\ndescription: Welcome to my project.\n---\n\n# Introduction\n\nHello, world!\n```\n\nSave it as `content/getting-started/introduction.md`.\n\n## 4. Add scripts\n\n```json\n{\n \"scripts\": {\n \"dev\": \"open-doc dev\",\n \"build\": \"open-doc build\",\n \"preview\": \"open-doc preview\"\n }\n}\n```\n\n## 5. Run it\n\n```bash\nnpm run dev\n```\n\nYour site is live at `http://localhost:4321`. Run `npm run build` when you're ready\nto ship — the static site is written to `./dist`, deployable to any static host.","../../../example/content/getting-started/installation.md","35c0d80117ab3866",{"html":197,"metadata":198},"\u003Ch1 id=\"installation\">Installation\u003C/h1>\n\u003Ch2 id=\"1-install-the-package\">1. Install the package\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">npm\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> install\u003C/span>\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> -D\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> @openlaboratory/open-doc\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>Using MDX?\u003C/strong> If you author MDX pages or custom React components, also install\n\u003Ccode>react\u003C/code> and \u003Ccode>react-dom\u003C/code> as dependencies. Plain Markdown needs nothing else.\u003C/p>\n\u003C/blockquote>\n\u003Ch2 id=\"2-add-a-config-file\">2. Add a config file\u003C/h2>\n\u003Cp>Create \u003Ccode>open-doc.config.ts\u003C/code> in your project root:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"ts\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\">import\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> { defineConfig } \u003C/span>\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\">from\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> '@openlaboratory/open-doc'\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\">export\u003C/span>\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\"> default\u003C/span>\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\"> defineConfig\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">({\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> title: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'My Docs'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> nav: [\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> { label: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'Getting Started'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, dir: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'getting-started'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, pages: [\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">'introduction'\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">] },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> ],\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">})\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"3-write-some-content\">3. Write some content\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"md\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\">---\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">title: Introduction\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">description: Welcome to my project.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\">---\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\"># Introduction\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">Hello, world!\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Save it as \u003Ccode>content/getting-started/introduction.md\u003C/code>.\u003C/p>\n\u003Ch2 id=\"4-add-scripts\">4. Add scripts\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"json\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">{\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"scripts\"\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"dev\"\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"open-doc dev\"\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"build\"\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"open-doc build\"\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"preview\"\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"open-doc preview\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">}\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"5-run-it\">5. Run it\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">npm\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> run\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> dev\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Your site is live at \u003Ccode>http://localhost:4321\u003C/code>. Run \u003Ccode>npm run build\u003C/code> when you’re ready\nto ship — the static site is written to \u003Ccode>./dist\u003C/code>, deployable to any static host.\u003C/p>",{"headings":199,"localImagePaths":217,"remoteImagePaths":218,"frontmatter":219,"imagePaths":220},[200,202,205,208,211,214],{"depth":33,"slug":201,"text":191},"installation",{"depth":36,"slug":203,"text":204},"1-install-the-package","1. Install the package",{"depth":36,"slug":206,"text":207},"2-add-a-config-file","2. Add a config file",{"depth":36,"slug":209,"text":210},"3-write-some-content","3. Write some content",{"depth":36,"slug":212,"text":213},"4-add-scripts","4. Add scripts",{"depth":36,"slug":215,"text":216},"5-run-it","5. Run it",[],[],{"title":191,"description":192},[]]
@@ -1,163 +0,0 @@
1
- import {
2
- require_react_dom
3
- } from "./chunk-FEZZJEG2.js";
4
- import {
5
- require_react
6
- } from "./chunk-55ZOATU5.js";
7
- import {
8
- __commonJS,
9
- __toESM
10
- } from "./chunk-5WRI5ZAA.js";
11
-
12
- // ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/client.js
13
- var require_client = __commonJS({
14
- "../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/client.js"(exports) {
15
- "use strict";
16
- var m = require_react_dom();
17
- if (true) {
18
- exports.createRoot = m.createRoot;
19
- exports.hydrateRoot = m.hydrateRoot;
20
- } else {
21
- i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
22
- exports.createRoot = function(c, o) {
23
- i.usingClientEntryPoint = true;
24
- try {
25
- return m.createRoot(c, o);
26
- } finally {
27
- i.usingClientEntryPoint = false;
28
- }
29
- };
30
- exports.hydrateRoot = function(c, h2, o) {
31
- i.usingClientEntryPoint = true;
32
- try {
33
- return m.hydrateRoot(c, h2, o);
34
- } finally {
35
- i.usingClientEntryPoint = false;
36
- }
37
- };
38
- }
39
- var i;
40
- }
41
- });
42
-
43
- // ../node_modules/.pnpm/@astrojs+react@4.4.2_@types+node@22.19.21_@types+react-dom@18.3.7_@types+react@18.3.31__01536e40e6578023e0fba1049b7e4f43/node_modules/@astrojs/react/dist/client.js
44
- var import_react2 = __toESM(require_react());
45
- var import_client = __toESM(require_client());
46
-
47
- // ../node_modules/.pnpm/@astrojs+react@4.4.2_@types+node@22.19.21_@types+react-dom@18.3.7_@types+react@18.3.31__01536e40e6578023e0fba1049b7e4f43/node_modules/@astrojs/react/dist/static-html.js
48
- var import_react = __toESM(require_react(), 1);
49
- var StaticHtml = ({
50
- value,
51
- name,
52
- hydrate = true
53
- }) => {
54
- if (!value) return null;
55
- const tagName = hydrate ? "astro-slot" : "astro-static-slot";
56
- return (0, import_react.createElement)(tagName, {
57
- name,
58
- suppressHydrationWarning: true,
59
- dangerouslySetInnerHTML: { __html: value }
60
- });
61
- };
62
- StaticHtml.shouldComponentUpdate = () => false;
63
- var static_html_default = StaticHtml;
64
-
65
- // ../node_modules/.pnpm/@astrojs+react@4.4.2_@types+node@22.19.21_@types+react-dom@18.3.7_@types+react@18.3.31__01536e40e6578023e0fba1049b7e4f43/node_modules/@astrojs/react/dist/client.js
66
- function isAlreadyHydrated(element) {
67
- for (const key in element) {
68
- if (key.startsWith("__reactContainer")) {
69
- return key;
70
- }
71
- }
72
- }
73
- function createReactElementFromDOMElement(element) {
74
- let attrs = {};
75
- for (const attr of element.attributes) {
76
- attrs[attr.name] = attr.value;
77
- }
78
- if (element.firstChild === null) {
79
- return (0, import_react2.createElement)(element.localName, attrs);
80
- }
81
- return (0, import_react2.createElement)(
82
- element.localName,
83
- attrs,
84
- Array.from(element.childNodes).map((c) => {
85
- if (c.nodeType === Node.TEXT_NODE) {
86
- return c.data;
87
- } else if (c.nodeType === Node.ELEMENT_NODE) {
88
- return createReactElementFromDOMElement(c);
89
- } else {
90
- return void 0;
91
- }
92
- }).filter((a) => !!a)
93
- );
94
- }
95
- function getChildren(childString, experimentalReactChildren) {
96
- if (experimentalReactChildren && childString) {
97
- let children = [];
98
- let template = document.createElement("template");
99
- template.innerHTML = childString;
100
- for (let child of template.content.children) {
101
- children.push(createReactElementFromDOMElement(child));
102
- }
103
- return children;
104
- } else if (childString) {
105
- return (0, import_react2.createElement)(static_html_default, { value: childString });
106
- } else {
107
- return void 0;
108
- }
109
- }
110
- var rootMap = /* @__PURE__ */ new WeakMap();
111
- var getOrCreateRoot = (element, creator) => {
112
- let root = rootMap.get(element);
113
- if (!root) {
114
- root = creator();
115
- rootMap.set(element, root);
116
- }
117
- return root;
118
- };
119
- var client_default = (element) => (Component, props, { default: children, ...slotted }, { client }) => {
120
- if (!element.hasAttribute("ssr")) return;
121
- const actionKey = element.getAttribute("data-action-key");
122
- const actionName = element.getAttribute("data-action-name");
123
- const stringifiedActionResult = element.getAttribute("data-action-result");
124
- const formState = actionKey && actionName && stringifiedActionResult ? [JSON.parse(stringifiedActionResult), actionKey, actionName] : void 0;
125
- const renderOptions = {
126
- identifierPrefix: element.getAttribute("prefix"),
127
- formState
128
- };
129
- for (const [key, value] of Object.entries(slotted)) {
130
- props[key] = (0, import_react2.createElement)(static_html_default, { value, name: key });
131
- }
132
- const componentEl = (0, import_react2.createElement)(
133
- Component,
134
- props,
135
- getChildren(children, element.hasAttribute("data-react-children"))
136
- );
137
- const rootKey = isAlreadyHydrated(element);
138
- if (rootKey) {
139
- delete element[rootKey];
140
- }
141
- if (client === "only") {
142
- return (0, import_react2.startTransition)(() => {
143
- const root = getOrCreateRoot(element, () => {
144
- const r = (0, import_client.createRoot)(element);
145
- element.addEventListener("astro:unmount", () => r.unmount(), { once: true });
146
- return r;
147
- });
148
- root.render(componentEl);
149
- });
150
- }
151
- (0, import_react2.startTransition)(() => {
152
- const root = getOrCreateRoot(element, () => {
153
- const r = (0, import_client.hydrateRoot)(element, componentEl, renderOptions);
154
- element.addEventListener("astro:unmount", () => r.unmount(), { once: true });
155
- return r;
156
- });
157
- root.render(componentEl);
158
- });
159
- };
160
- export {
161
- client_default as default
162
- };
163
- //# sourceMappingURL=@astrojs_react_client__js.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/client.js", "../../../../../../node_modules/.pnpm/@astrojs+react@4.4.2_@types+node@22.19.21_@types+react-dom@18.3.7_@types+react@18.3.31__01536e40e6578023e0fba1049b7e4f43/node_modules/@astrojs/react/dist/client.js", "../../../../../../node_modules/.pnpm/@astrojs+react@4.4.2_@types+node@22.19.21_@types+react-dom@18.3.7_@types+react@18.3.31__01536e40e6578023e0fba1049b7e4f43/node_modules/@astrojs/react/dist/static-html.js"],
4
- "sourcesContent": ["'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n", "import { createElement, startTransition } from \"react\";\nimport { createRoot, hydrateRoot } from \"react-dom/client\";\nimport StaticHtml from \"./static-html.js\";\nfunction isAlreadyHydrated(element) {\n for (const key in element) {\n if (key.startsWith(\"__reactContainer\")) {\n return key;\n }\n }\n}\nfunction createReactElementFromDOMElement(element) {\n let attrs = {};\n for (const attr of element.attributes) {\n attrs[attr.name] = attr.value;\n }\n if (element.firstChild === null) {\n return createElement(element.localName, attrs);\n }\n return createElement(\n element.localName,\n attrs,\n Array.from(element.childNodes).map((c) => {\n if (c.nodeType === Node.TEXT_NODE) {\n return c.data;\n } else if (c.nodeType === Node.ELEMENT_NODE) {\n return createReactElementFromDOMElement(c);\n } else {\n return void 0;\n }\n }).filter((a) => !!a)\n );\n}\nfunction getChildren(childString, experimentalReactChildren) {\n if (experimentalReactChildren && childString) {\n let children = [];\n let template = document.createElement(\"template\");\n template.innerHTML = childString;\n for (let child of template.content.children) {\n children.push(createReactElementFromDOMElement(child));\n }\n return children;\n } else if (childString) {\n return createElement(StaticHtml, { value: childString });\n } else {\n return void 0;\n }\n}\nlet rootMap = /* @__PURE__ */ new WeakMap();\nconst getOrCreateRoot = (element, creator) => {\n let root = rootMap.get(element);\n if (!root) {\n root = creator();\n rootMap.set(element, root);\n }\n return root;\n};\nvar client_default = (element) => (Component, props, { default: children, ...slotted }, { client }) => {\n if (!element.hasAttribute(\"ssr\")) return;\n const actionKey = element.getAttribute(\"data-action-key\");\n const actionName = element.getAttribute(\"data-action-name\");\n const stringifiedActionResult = element.getAttribute(\"data-action-result\");\n const formState = actionKey && actionName && stringifiedActionResult ? [JSON.parse(stringifiedActionResult), actionKey, actionName] : void 0;\n const renderOptions = {\n identifierPrefix: element.getAttribute(\"prefix\"),\n formState\n };\n for (const [key, value] of Object.entries(slotted)) {\n props[key] = createElement(StaticHtml, { value, name: key });\n }\n const componentEl = createElement(\n Component,\n props,\n getChildren(children, element.hasAttribute(\"data-react-children\"))\n );\n const rootKey = isAlreadyHydrated(element);\n if (rootKey) {\n delete element[rootKey];\n }\n if (client === \"only\") {\n return startTransition(() => {\n const root = getOrCreateRoot(element, () => {\n const r = createRoot(element);\n element.addEventListener(\"astro:unmount\", () => r.unmount(), { once: true });\n return r;\n });\n root.render(componentEl);\n });\n }\n startTransition(() => {\n const root = getOrCreateRoot(element, () => {\n const r = hydrateRoot(element, componentEl, renderOptions);\n element.addEventListener(\"astro:unmount\", () => r.unmount(), { once: true });\n return r;\n });\n root.render(componentEl);\n });\n};\nexport {\n client_default as default\n};\n", "import { createElement as h } from \"react\";\nconst StaticHtml = ({\n value,\n name,\n hydrate = true\n}) => {\n if (!value) return null;\n const tagName = hydrate ? \"astro-slot\" : \"astro-static-slot\";\n return h(tagName, {\n name,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: { __html: value }\n });\n};\nStaticHtml.shouldComponentUpdate = () => false;\nvar static_html_default = StaticHtml;\nexport {\n static_html_default as default\n};\n"],
5
- "mappings": ";;;;;;;;;;;;AAAA;AAAA;AAAA;AAEA,QAAI,IAAI;AACR,QAAI,MAAuC;AACzC,cAAQ,aAAa,EAAE;AACvB,cAAQ,cAAc,EAAE;AAAA,IAC1B,OAAO;AACD,UAAI,EAAE;AACV,cAAQ,aAAa,SAAS,GAAG,GAAG;AAClC,UAAE,wBAAwB;AAC1B,YAAI;AACF,iBAAO,EAAE,WAAW,GAAG,CAAC;AAAA,QAC1B,UAAE;AACA,YAAE,wBAAwB;AAAA,QAC5B;AAAA,MACF;AACA,cAAQ,cAAc,SAAS,GAAGA,IAAG,GAAG;AACtC,UAAE,wBAAwB;AAC1B,YAAI;AACF,iBAAO,EAAE,YAAY,GAAGA,IAAG,CAAC;AAAA,QAC9B,UAAE;AACA,YAAE,wBAAwB;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAjBM;AAAA;AAAA;;;ACPN,IAAAC,gBAA+C;AAC/C,oBAAwC;;;ACDxC,mBAAmC;AACnC,IAAM,aAAa,CAAC;AAAA,EAClB;AAAA,EACA;AAAA,EACA,UAAU;AACZ,MAAM;AACJ,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,UAAU,UAAU,eAAe;AACzC,aAAO,aAAAC,eAAE,SAAS;AAAA,IAChB;AAAA,IACA,0BAA0B;AAAA,IAC1B,yBAAyB,EAAE,QAAQ,MAAM;AAAA,EAC3C,CAAC;AACH;AACA,WAAW,wBAAwB,MAAM;AACzC,IAAI,sBAAsB;;;ADZ1B,SAAS,kBAAkB,SAAS;AAClC,aAAW,OAAO,SAAS;AACzB,QAAI,IAAI,WAAW,kBAAkB,GAAG;AACtC,aAAO;AAAA,IACT;AAAA,EACF;AACF;AACA,SAAS,iCAAiC,SAAS;AACjD,MAAI,QAAQ,CAAC;AACb,aAAW,QAAQ,QAAQ,YAAY;AACrC,UAAM,KAAK,IAAI,IAAI,KAAK;AAAA,EAC1B;AACA,MAAI,QAAQ,eAAe,MAAM;AAC/B,eAAO,6BAAc,QAAQ,WAAW,KAAK;AAAA,EAC/C;AACA,aAAO;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA,MAAM,KAAK,QAAQ,UAAU,EAAE,IAAI,CAAC,MAAM;AACxC,UAAI,EAAE,aAAa,KAAK,WAAW;AACjC,eAAO,EAAE;AAAA,MACX,WAAW,EAAE,aAAa,KAAK,cAAc;AAC3C,eAAO,iCAAiC,CAAC;AAAA,MAC3C,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAAA,EACtB;AACF;AACA,SAAS,YAAY,aAAa,2BAA2B;AAC3D,MAAI,6BAA6B,aAAa;AAC5C,QAAI,WAAW,CAAC;AAChB,QAAI,WAAW,SAAS,cAAc,UAAU;AAChD,aAAS,YAAY;AACrB,aAAS,SAAS,SAAS,QAAQ,UAAU;AAC3C,eAAS,KAAK,iCAAiC,KAAK,CAAC;AAAA,IACvD;AACA,WAAO;AAAA,EACT,WAAW,aAAa;AACtB,eAAO,6BAAc,qBAAY,EAAE,OAAO,YAAY,CAAC;AAAA,EACzD,OAAO;AACL,WAAO;AAAA,EACT;AACF;AACA,IAAI,UAA0B,oBAAI,QAAQ;AAC1C,IAAM,kBAAkB,CAAC,SAAS,YAAY;AAC5C,MAAI,OAAO,QAAQ,IAAI,OAAO;AAC9B,MAAI,CAAC,MAAM;AACT,WAAO,QAAQ;AACf,YAAQ,IAAI,SAAS,IAAI;AAAA,EAC3B;AACA,SAAO;AACT;AACA,IAAI,iBAAiB,CAAC,YAAY,CAAC,WAAW,OAAO,EAAE,SAAS,UAAU,GAAG,QAAQ,GAAG,EAAE,OAAO,MAAM;AACrG,MAAI,CAAC,QAAQ,aAAa,KAAK,EAAG;AAClC,QAAM,YAAY,QAAQ,aAAa,iBAAiB;AACxD,QAAM,aAAa,QAAQ,aAAa,kBAAkB;AAC1D,QAAM,0BAA0B,QAAQ,aAAa,oBAAoB;AACzE,QAAM,YAAY,aAAa,cAAc,0BAA0B,CAAC,KAAK,MAAM,uBAAuB,GAAG,WAAW,UAAU,IAAI;AACtI,QAAM,gBAAgB;AAAA,IACpB,kBAAkB,QAAQ,aAAa,QAAQ;AAAA,IAC/C;AAAA,EACF;AACA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAClD,UAAM,GAAG,QAAI,6BAAc,qBAAY,EAAE,OAAO,MAAM,IAAI,CAAC;AAAA,EAC7D;AACA,QAAM,kBAAc;AAAA,IAClB;AAAA,IACA;AAAA,IACA,YAAY,UAAU,QAAQ,aAAa,qBAAqB,CAAC;AAAA,EACnE;AACA,QAAM,UAAU,kBAAkB,OAAO;AACzC,MAAI,SAAS;AACX,WAAO,QAAQ,OAAO;AAAA,EACxB;AACA,MAAI,WAAW,QAAQ;AACrB,eAAO,+BAAgB,MAAM;AAC3B,YAAM,OAAO,gBAAgB,SAAS,MAAM;AAC1C,cAAM,QAAI,0BAAW,OAAO;AAC5B,gBAAQ,iBAAiB,iBAAiB,MAAM,EAAE,QAAQ,GAAG,EAAE,MAAM,KAAK,CAAC;AAC3E,eAAO;AAAA,MACT,CAAC;AACD,WAAK,OAAO,WAAW;AAAA,IACzB,CAAC;AAAA,EACH;AACA,qCAAgB,MAAM;AACpB,UAAM,OAAO,gBAAgB,SAAS,MAAM;AAC1C,YAAM,QAAI,2BAAY,SAAS,aAAa,aAAa;AACzD,cAAQ,iBAAiB,iBAAiB,MAAM,EAAE,QAAQ,GAAG,EAAE,MAAM,KAAK,CAAC;AAC3E,aAAO;AAAA,IACT,CAAC;AACD,SAAK,OAAO,WAAW;AAAA,EACzB,CAAC;AACH;",
6
- "names": ["h", "import_react", "h"]
7
- }
@@ -1,67 +0,0 @@
1
- {
2
- "hash": "86a72993",
3
- "configHash": "e8cd3f90",
4
- "lockfileHash": "ba3d65d5",
5
- "browserHash": "e28ba7f5",
6
- "optimized": {
7
- "@astrojs/react/client.js": {
8
- "src": "../../../../../../node_modules/.pnpm/@astrojs+react@4.4.2_@types+node@22.19.21_@types+react-dom@18.3.7_@types+react@18.3.31__01536e40e6578023e0fba1049b7e4f43/node_modules/@astrojs/react/dist/client.js",
9
- "file": "@astrojs_react_client__js.js",
10
- "fileHash": "25b6fdf5",
11
- "needsInterop": false
12
- },
13
- "react": {
14
- "src": "../../../../../../node_modules/.pnpm/react@18.3.1/node_modules/react/index.js",
15
- "file": "react.js",
16
- "fileHash": "33387ac3",
17
- "needsInterop": true
18
- },
19
- "react-dom": {
20
- "src": "../../../../../../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/index.js",
21
- "file": "react-dom.js",
22
- "fileHash": "e6ce156c",
23
- "needsInterop": true
24
- },
25
- "react/jsx-dev-runtime": {
26
- "src": "../../../../../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-dev-runtime.js",
27
- "file": "react_jsx-dev-runtime.js",
28
- "fileHash": "238aa6f2",
29
- "needsInterop": true
30
- },
31
- "react/jsx-runtime": {
32
- "src": "../../../../../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js",
33
- "file": "react_jsx-runtime.js",
34
- "fileHash": "3aabfd33",
35
- "needsInterop": true
36
- },
37
- "astro > cssesc": {
38
- "src": "../../../../../../node_modules/.pnpm/cssesc@3.0.0/node_modules/cssesc/cssesc.js",
39
- "file": "astro___cssesc.js",
40
- "fileHash": "6e313fdd",
41
- "needsInterop": true
42
- },
43
- "astro > aria-query": {
44
- "src": "../../../../../../node_modules/.pnpm/aria-query@5.3.2/node_modules/aria-query/lib/index.js",
45
- "file": "astro___aria-query.js",
46
- "fileHash": "27fd4bdd",
47
- "needsInterop": true
48
- },
49
- "astro > axobject-query": {
50
- "src": "../../../../../../node_modules/.pnpm/axobject-query@4.1.0/node_modules/axobject-query/lib/index.js",
51
- "file": "astro___axobject-query.js",
52
- "fileHash": "b5750dc6",
53
- "needsInterop": true
54
- }
55
- },
56
- "chunks": {
57
- "chunk-FEZZJEG2": {
58
- "file": "chunk-FEZZJEG2.js"
59
- },
60
- "chunk-55ZOATU5": {
61
- "file": "chunk-55ZOATU5.js"
62
- },
63
- "chunk-5WRI5ZAA": {
64
- "file": "chunk-5WRI5ZAA.js"
65
- }
66
- }
67
- }