@mdwrk/mdwrkcom-content-pack 0.1.5

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 (263) hide show
  1. package/README.md +39 -0
  2. package/content/pages/answers/does-mdwrk-require-a-server.md +27 -0
  3. package/content/pages/answers/how-do-mdwrk-theme-packs-work.md +27 -0
  4. package/content/pages/answers/how-does-mdwrk-store-markdown-locally.md +27 -0
  5. package/content/pages/answers/index.md +39 -0
  6. package/content/pages/answers/what-is-a-local-first-markdown-workspace.md +27 -0
  7. package/content/pages/answers/what-is-an-offline-markdown-editor.md +27 -0
  8. package/content/pages/blog/launch.md +42 -0
  9. package/content/pages/compare/index.md +39 -0
  10. package/content/pages/compare/local-first-markdown-editors.md +27 -0
  11. package/content/pages/compare/mdwrk-vs-obsidian.md +27 -0
  12. package/content/pages/compare/mdwrk-vs-typora.md +27 -0
  13. package/content/pages/compare/mdwrk-vs-vscode-markdown.md +27 -0
  14. package/content/pages/docs/extensions.md +34 -0
  15. package/content/pages/docs/quickstart.md +48 -0
  16. package/content/pages/docs/theme-packs.md +34 -0
  17. package/content/pages/es/docs/quickstart.md +50 -0
  18. package/content/pages/features/extension-runtime.md +25 -0
  19. package/content/pages/features/github-sync.md +25 -0
  20. package/content/pages/features/index.md +42 -0
  21. package/content/pages/features/indexeddb-markdown-storage.md +25 -0
  22. package/content/pages/features/live-preview.md +25 -0
  23. package/content/pages/features/pwa-markdown-editor.md +25 -0
  24. package/content/pages/index.md +45 -0
  25. package/content/pages/markdown/basic-markdown-syntax.md +29 -0
  26. package/content/pages/markdown/generated/local-first-markdown-workspace/benefits.md +31 -0
  27. package/content/pages/markdown/generated/local-first-markdown-workspace/best-practices.md +31 -0
  28. package/content/pages/markdown/generated/local-first-markdown-workspace/checklist.md +31 -0
  29. package/content/pages/markdown/generated/local-first-markdown-workspace/examples.md +31 -0
  30. package/content/pages/markdown/generated/local-first-markdown-workspace/for-developers.md +31 -0
  31. package/content/pages/markdown/generated/local-first-markdown-workspace/for-teams.md +31 -0
  32. package/content/pages/markdown/generated/local-first-markdown-workspace/use-cases.md +31 -0
  33. package/content/pages/markdown/generated/local-first-markdown-workspace/workflow.md +31 -0
  34. package/content/pages/markdown/generated/markdown-blogging/benefits.md +31 -0
  35. package/content/pages/markdown/generated/markdown-blogging/best-practices.md +31 -0
  36. package/content/pages/markdown/generated/markdown-blogging/checklist.md +31 -0
  37. package/content/pages/markdown/generated/markdown-blogging/examples.md +31 -0
  38. package/content/pages/markdown/generated/markdown-blogging/for-developers.md +31 -0
  39. package/content/pages/markdown/generated/markdown-blogging/for-teams.md +31 -0
  40. package/content/pages/markdown/generated/markdown-blogging/use-cases.md +31 -0
  41. package/content/pages/markdown/generated/markdown-blogging/workflow.md +31 -0
  42. package/content/pages/markdown/generated/markdown-documentation/benefits.md +31 -0
  43. package/content/pages/markdown/generated/markdown-documentation/best-practices.md +31 -0
  44. package/content/pages/markdown/generated/markdown-documentation/checklist.md +31 -0
  45. package/content/pages/markdown/generated/markdown-documentation/examples.md +31 -0
  46. package/content/pages/markdown/generated/markdown-documentation/for-developers.md +31 -0
  47. package/content/pages/markdown/generated/markdown-documentation/for-teams.md +31 -0
  48. package/content/pages/markdown/generated/markdown-documentation/use-cases.md +31 -0
  49. package/content/pages/markdown/generated/markdown-documentation/workflow.md +31 -0
  50. package/content/pages/markdown/generated/markdown-editor/benefits.md +31 -0
  51. package/content/pages/markdown/generated/markdown-editor/best-practices.md +31 -0
  52. package/content/pages/markdown/generated/markdown-editor/checklist.md +31 -0
  53. package/content/pages/markdown/generated/markdown-editor/examples.md +31 -0
  54. package/content/pages/markdown/generated/markdown-editor/for-developers.md +31 -0
  55. package/content/pages/markdown/generated/markdown-editor/for-teams.md +31 -0
  56. package/content/pages/markdown/generated/markdown-editor/use-cases.md +31 -0
  57. package/content/pages/markdown/generated/markdown-editor/workflow.md +31 -0
  58. package/content/pages/markdown/generated/markdown-extension-workflows/benefits.md +31 -0
  59. package/content/pages/markdown/generated/markdown-extension-workflows/best-practices.md +31 -0
  60. package/content/pages/markdown/generated/markdown-extension-workflows/checklist.md +31 -0
  61. package/content/pages/markdown/generated/markdown-extension-workflows/examples.md +31 -0
  62. package/content/pages/markdown/generated/markdown-extension-workflows/for-developers.md +31 -0
  63. package/content/pages/markdown/generated/markdown-extension-workflows/for-teams.md +31 -0
  64. package/content/pages/markdown/generated/markdown-extension-workflows/use-cases.md +31 -0
  65. package/content/pages/markdown/generated/markdown-extension-workflows/workflow.md +31 -0
  66. package/content/pages/markdown/generated/markdown-for-developers/benefits.md +31 -0
  67. package/content/pages/markdown/generated/markdown-for-developers/best-practices.md +31 -0
  68. package/content/pages/markdown/generated/markdown-for-developers/checklist.md +31 -0
  69. package/content/pages/markdown/generated/markdown-for-developers/examples.md +31 -0
  70. package/content/pages/markdown/generated/markdown-for-developers/for-developers.md +31 -0
  71. package/content/pages/markdown/generated/markdown-for-developers/for-teams.md +31 -0
  72. package/content/pages/markdown/generated/markdown-for-developers/use-cases.md +31 -0
  73. package/content/pages/markdown/generated/markdown-for-developers/workflow.md +31 -0
  74. package/content/pages/markdown/generated/markdown-for-teams/benefits.md +31 -0
  75. package/content/pages/markdown/generated/markdown-for-teams/best-practices.md +31 -0
  76. package/content/pages/markdown/generated/markdown-for-teams/checklist.md +31 -0
  77. package/content/pages/markdown/generated/markdown-for-teams/examples.md +31 -0
  78. package/content/pages/markdown/generated/markdown-for-teams/for-developers.md +31 -0
  79. package/content/pages/markdown/generated/markdown-for-teams/for-teams.md +31 -0
  80. package/content/pages/markdown/generated/markdown-for-teams/use-cases.md +31 -0
  81. package/content/pages/markdown/generated/markdown-for-teams/workflow.md +31 -0
  82. package/content/pages/markdown/generated/markdown-knowledge-base/benefits.md +31 -0
  83. package/content/pages/markdown/generated/markdown-knowledge-base/best-practices.md +31 -0
  84. package/content/pages/markdown/generated/markdown-knowledge-base/checklist.md +31 -0
  85. package/content/pages/markdown/generated/markdown-knowledge-base/examples.md +31 -0
  86. package/content/pages/markdown/generated/markdown-knowledge-base/for-developers.md +31 -0
  87. package/content/pages/markdown/generated/markdown-knowledge-base/for-teams.md +31 -0
  88. package/content/pages/markdown/generated/markdown-knowledge-base/use-cases.md +31 -0
  89. package/content/pages/markdown/generated/markdown-knowledge-base/workflow.md +31 -0
  90. package/content/pages/markdown/generated/markdown-notes/benefits.md +31 -0
  91. package/content/pages/markdown/generated/markdown-notes/best-practices.md +31 -0
  92. package/content/pages/markdown/generated/markdown-notes/checklist.md +31 -0
  93. package/content/pages/markdown/generated/markdown-notes/examples.md +31 -0
  94. package/content/pages/markdown/generated/markdown-notes/for-developers.md +31 -0
  95. package/content/pages/markdown/generated/markdown-notes/for-teams.md +31 -0
  96. package/content/pages/markdown/generated/markdown-notes/use-cases.md +31 -0
  97. package/content/pages/markdown/generated/markdown-notes/workflow.md +31 -0
  98. package/content/pages/markdown/generated/markdown-preview/benefits.md +31 -0
  99. package/content/pages/markdown/generated/markdown-preview/best-practices.md +31 -0
  100. package/content/pages/markdown/generated/markdown-preview/checklist.md +31 -0
  101. package/content/pages/markdown/generated/markdown-preview/examples.md +31 -0
  102. package/content/pages/markdown/generated/markdown-preview/for-developers.md +31 -0
  103. package/content/pages/markdown/generated/markdown-preview/for-teams.md +31 -0
  104. package/content/pages/markdown/generated/markdown-preview/use-cases.md +31 -0
  105. package/content/pages/markdown/generated/markdown-preview/workflow.md +31 -0
  106. package/content/pages/markdown/generated/markdown-project-docs/benefits.md +31 -0
  107. package/content/pages/markdown/generated/markdown-project-docs/best-practices.md +31 -0
  108. package/content/pages/markdown/generated/markdown-project-docs/checklist.md +31 -0
  109. package/content/pages/markdown/generated/markdown-project-docs/examples.md +31 -0
  110. package/content/pages/markdown/generated/markdown-project-docs/for-developers.md +31 -0
  111. package/content/pages/markdown/generated/markdown-project-docs/for-teams.md +31 -0
  112. package/content/pages/markdown/generated/markdown-project-docs/use-cases.md +31 -0
  113. package/content/pages/markdown/generated/markdown-project-docs/workflow.md +31 -0
  114. package/content/pages/markdown/generated/markdown-readme/benefits.md +31 -0
  115. package/content/pages/markdown/generated/markdown-readme/best-practices.md +31 -0
  116. package/content/pages/markdown/generated/markdown-readme/checklist.md +31 -0
  117. package/content/pages/markdown/generated/markdown-readme/examples.md +31 -0
  118. package/content/pages/markdown/generated/markdown-readme/for-developers.md +31 -0
  119. package/content/pages/markdown/generated/markdown-readme/for-teams.md +31 -0
  120. package/content/pages/markdown/generated/markdown-readme/use-cases.md +31 -0
  121. package/content/pages/markdown/generated/markdown-readme/workflow.md +31 -0
  122. package/content/pages/markdown/generated/markdown-theme-packs/benefits.md +31 -0
  123. package/content/pages/markdown/generated/markdown-theme-packs/best-practices.md +31 -0
  124. package/content/pages/markdown/generated/markdown-theme-packs/checklist.md +31 -0
  125. package/content/pages/markdown/generated/markdown-theme-packs/examples.md +31 -0
  126. package/content/pages/markdown/generated/markdown-theme-packs/for-developers.md +31 -0
  127. package/content/pages/markdown/generated/markdown-theme-packs/for-teams.md +31 -0
  128. package/content/pages/markdown/generated/markdown-theme-packs/use-cases.md +31 -0
  129. package/content/pages/markdown/generated/markdown-theme-packs/workflow.md +31 -0
  130. package/content/pages/markdown/generated/markdown-writing-workflow/benefits.md +31 -0
  131. package/content/pages/markdown/generated/markdown-writing-workflow/best-practices.md +31 -0
  132. package/content/pages/markdown/generated/markdown-writing-workflow/checklist.md +31 -0
  133. package/content/pages/markdown/generated/markdown-writing-workflow/examples.md +31 -0
  134. package/content/pages/markdown/generated/markdown-writing-workflow/for-developers.md +31 -0
  135. package/content/pages/markdown/generated/markdown-writing-workflow/for-teams.md +31 -0
  136. package/content/pages/markdown/generated/markdown-writing-workflow/use-cases.md +31 -0
  137. package/content/pages/markdown/generated/markdown-writing-workflow/workflow.md +31 -0
  138. package/content/pages/markdown/generated/offline-markdown-editor/benefits.md +31 -0
  139. package/content/pages/markdown/generated/offline-markdown-editor/best-practices.md +31 -0
  140. package/content/pages/markdown/generated/offline-markdown-editor/checklist.md +31 -0
  141. package/content/pages/markdown/generated/offline-markdown-editor/examples.md +31 -0
  142. package/content/pages/markdown/generated/offline-markdown-editor/for-developers.md +31 -0
  143. package/content/pages/markdown/generated/offline-markdown-editor/for-teams.md +31 -0
  144. package/content/pages/markdown/generated/offline-markdown-editor/use-cases.md +31 -0
  145. package/content/pages/markdown/generated/offline-markdown-editor/workflow.md +31 -0
  146. package/content/pages/markdown/how-to-write-markdown.md +29 -0
  147. package/content/pages/markdown/index.md +40 -0
  148. package/content/pages/markdown/markdown-vs-html.md +29 -0
  149. package/content/pages/markdown/what-is-a-markdown-editor.md +29 -0
  150. package/content/pages/markdown/what-is-markdown-used-for.md +29 -0
  151. package/content/pages/markdown/what-is-markdown.md +29 -0
  152. package/content/pages/packages/extension-runtime.md +33 -0
  153. package/content/pages/packages/index.md +42 -0
  154. package/content/pages/packages/markdown-editor-react.md +33 -0
  155. package/content/pages/packages/markdown-renderer-core.md +33 -0
  156. package/content/pages/packages/markdown-renderer-react.md +33 -0
  157. package/content/pages/packages/theme-contract.md +33 -0
  158. package/content/pages/privacy.md +41 -0
  159. package/content/pages/proof/browser-support.md +22 -0
  160. package/content/pages/proof/markdown-support.md +22 -0
  161. package/content/pages/proof/package-surfaces.md +22 -0
  162. package/content/pages/security.md +38 -0
  163. package/content/pages/trust/privacy-boundary.md +22 -0
  164. package/data/article-metadata.schema.json +111 -0
  165. package/data/content-sitemap.yaml +31 -0
  166. package/data/content.ts +55 -0
  167. package/data/docs.ts +111 -0
  168. package/data/markdown/AGENTS.md +10 -0
  169. package/data/markdown/blog/client-split-out-backstory.md +97 -0
  170. package/data/markdown/blog/desktop-release-and-android-verification.md +65 -0
  171. package/data/markdown/blog/docs-surface-realignment.md +70 -0
  172. package/data/markdown/blog/extension-compatibility-and-publish-gates.md +59 -0
  173. package/data/markdown/blog/extension-host-rollout.md +92 -0
  174. package/data/markdown/blog/governed-releases-and-package-docs.md +69 -0
  175. package/data/markdown/blog/markdown-workspace-launch.md +75 -0
  176. package/data/markdown/blog/pwa-install-and-zoom-controls.md +64 -0
  177. package/data/markdown/blog/responsive-authoring-and-export.md +64 -0
  178. package/data/markdown/blog/retained-client-versions-and-desktop-shell.md +59 -0
  179. package/data/markdown/blog/screenshot-matrix-and-browser-sidebars.md +57 -0
  180. package/data/markdown/blog/settings-simplification-for-daily-flow.md +54 -0
  181. package/data/markdown/blog/workspace-files-and-git-ops-packages.md +53 -0
  182. package/data/markdown/docs/authoring/authoring-overview.md +59 -0
  183. package/data/markdown/docs/authoring/extension-authoring-guide.md +69 -0
  184. package/data/markdown/docs/authoring/extensions.md +93 -0
  185. package/data/markdown/docs/authoring/language-packs.md +81 -0
  186. package/data/markdown/docs/authoring/theme-packs.md +81 -0
  187. package/data/markdown/docs/comparisons/mdwrk-vs-logseq.md +49 -0
  188. package/data/markdown/docs/comparisons/mdwrk-vs-marktext.md +49 -0
  189. package/data/markdown/docs/comparisons/mdwrk-vs-notion.md +49 -0
  190. package/data/markdown/docs/comparisons/mdwrk-vs-obsidian.md +49 -0
  191. package/data/markdown/docs/comparisons/mdwrk-vs-standard-markdown-editors.md +49 -0
  192. package/data/markdown/docs/comparisons/mdwrk-vs-typora.md +49 -0
  193. package/data/markdown/docs/comparisons/mdwrk-vs-vs-code.md +49 -0
  194. package/data/markdown/docs/comparisons/mdwrk-vs-zettlr.md +49 -0
  195. package/data/markdown/docs/extensions/extension-platform.md +64 -0
  196. package/data/markdown/docs/extensions/theme-studio-and-host-surfaces.md +54 -0
  197. package/data/markdown/docs/getting-started/browser-use.md +59 -0
  198. package/data/markdown/docs/getting-started/configuration.md +82 -0
  199. package/data/markdown/docs/getting-started/installation.md +74 -0
  200. package/data/markdown/docs/getting-started/local-setup.md +94 -0
  201. package/data/markdown/docs/getting-started/pwa-installation.md +62 -0
  202. package/data/markdown/docs/getting-started/standalone-modules.md +87 -0
  203. package/data/markdown/docs/github-sync.md +51 -0
  204. package/data/markdown/docs/product/desktop-app-boundary.md +57 -0
  205. package/data/markdown/docs/product/developer-documentation.md +52 -0
  206. package/data/markdown/docs/product/extension-host.md +52 -0
  207. package/data/markdown/docs/product/local-first-markdown-workspace.md +52 -0
  208. package/data/markdown/docs/product/markdown-file-manager.md +52 -0
  209. package/data/markdown/docs/product/markdown-preview-editor.md +52 -0
  210. package/data/markdown/docs/product/markdown-profile-architecture.md +51 -0
  211. package/data/markdown/docs/product/offline-markdown-editor.md +52 -0
  212. package/data/markdown/docs/product/privacy-first-markdown-editor.md +52 -0
  213. package/data/markdown/docs/product/theme-packs.md +52 -0
  214. package/data/markdown/docs/product/uix-responsive-contract.md +51 -0
  215. package/data/markdown/docs/usage/advanced-formatting.md +181 -0
  216. package/data/markdown/docs/usage/checkbox-autocomplete.md +51 -0
  217. package/data/markdown/docs/usage/editor-basics.md +138 -0
  218. package/data/markdown/docs/usage/rendering-and-preview.md +157 -0
  219. package/data/markdown/docs/usage/text-wrap-previewer.md +45 -0
  220. package/data/markdown/docs/usage/ui-refresh-1-3-28.md +43 -0
  221. package/data/markdown/docs/usage/ui-refresh-1-3-29.md +44 -0
  222. package/data/markdown/docs/usage/view-toolbar.md +47 -0
  223. package/data/markdown/legal/privacy.md +21 -0
  224. package/data/markdown/legal/terms.md +19 -0
  225. package/data/markdown-topic-matrix.json +169 -0
  226. package/dist/index.d.ts +26 -0
  227. package/dist/index.d.ts.map +1 -0
  228. package/dist/index.js +49 -0
  229. package/dist/index.js.map +1 -0
  230. package/dist/version.d.ts +2 -0
  231. package/dist/version.d.ts.map +1 -0
  232. package/dist/version.js +2 -0
  233. package/dist/version.js.map +1 -0
  234. package/generated/cache-header-manifest.json +6558 -0
  235. package/generated/content-index.json +3689 -0
  236. package/generated/content-registry.json +15203 -0
  237. package/generated/jsonld-graph.json +21815 -0
  238. package/generated/llms-full.txt +1769 -0
  239. package/generated/llms.txt +225 -0
  240. package/generated/robots.txt +28 -0
  241. package/generated/semantic-index.json +7595 -0
  242. package/generated/sitemap.xml +1114 -0
  243. package/generated/sitemap.xsl +59 -0
  244. package/package.json +57 -0
  245. package/public/blog/media/extension-manager-pane.jpg +0 -0
  246. package/public/blog/media/lander-blog-list.png +0 -0
  247. package/public/blog/media/lander-docs-dark.png +0 -0
  248. package/public/blog/media/lander-home-light.png +0 -0
  249. package/public/blog/media/language-pack-studio-pane.jpg +0 -0
  250. package/public/blog/media/mdwrk-git-pane.png +0 -0
  251. package/public/blog/media/mdwrk-settings-visual.png +0 -0
  252. package/public/blog/media/mdwrk-workspace-editor.png +0 -0
  253. package/public/blog/media/mdwrk-workspace-split.png +0 -0
  254. package/public/blog/media/settings-github-configurations.jpg +0 -0
  255. package/public/blog/media/theme-selector-modal.jpg +0 -0
  256. package/public/blog/media/theme-studio-pane.jpg +0 -0
  257. package/public/favicon.svg +10 -0
  258. package/public/llms.txt +85 -0
  259. package/public/og-image.png +0 -0
  260. package/public/og-image.svg +12 -0
  261. package/public/robots.txt +4 -0
  262. package/public/semantic-index.json +1627 -0
  263. package/public/sitemap.xml +342 -0
@@ -0,0 +1,33 @@
1
+ ---
2
+ schema: "mdwrk.page.v1"
3
+ slug: "/packages/extension-runtime/"
4
+ title: "Extension Runtime Package | MdWrk"
5
+ description: "The @mdwrk/extension-runtime package provides portable runtime utilities for governed MdWrk extension behavior."
6
+ h1: "@mdwrk/extension-runtime"
7
+ entity: "MdWrk"
8
+ intent: "extension runtime package"
9
+ contentType: "package"
10
+ updatedAt: "2026-05-05"
11
+ author: CobyCloud
12
+ subtitle: "Use the extension runtime package when building governed commands, panes, settings, and integration surfaces."
13
+ parent: "/packages/"
14
+ related:
15
+ - "/packages/"
16
+ - "/packages/theme-contract/"
17
+ - "/proof/package-surfaces/"
18
+ faqs:
19
+ - question: "What is @mdwrk/extension-runtime?"
20
+ answer: "It is the portable package for MdWrk extension runtime behavior, lifecycle, and host-facing contracts."
21
+ ---
22
+
23
+ `@mdwrk/extension-runtime` provides portable runtime utilities for governed MdWrk extension behavior. It supports the package-level extension model behind commands, panes, settings, and integrations.
24
+
25
+ Install:
26
+
27
+ ```bash
28
+ npm install @mdwrk/extension-runtime
29
+ ```
30
+
31
+ Use this package when extension behavior needs to stay explicit, inspectable, and compatible with MdWrk host surfaces.
32
+
33
+ The runtime package keeps extension behavior out of undocumented client patches. A package author can reason about lifecycle, host context, compatibility, and trust policy as stable surfaces that can be documented, validated, and reused across delivery targets.
@@ -0,0 +1,42 @@
1
+ ---
2
+ schema: "mdwrk.page.v1"
3
+ slug: "/packages/"
4
+ title: "MdWrk Packages | Reusable Markdown Editor And Renderer Packages"
5
+ description: "Explore MdWrk packages for Markdown rendering, React integration, editor components, theme contracts, and extension runtime behavior."
6
+ h1: "Packages"
7
+ entity: "MdWrk"
8
+ intent: "mdwrk packages"
9
+ contentType: "docs"
10
+ updatedAt: "2026-05-12"
11
+ author: CobyCloud
12
+ displayAuthor: false
13
+ subtitle: "Use the packages hub to find the reusable MdWrk modules behind rendering, editing, theme contracts, and extension behavior."
14
+ parent: "/"
15
+ related:
16
+ - "/features/"
17
+ - "/answers/"
18
+ - "/proof/package-surfaces/"
19
+ faqs:
20
+ - question: "What are MdWrk packages?"
21
+ answer: "MdWrk packages are reusable modules for Markdown rendering, editor behavior, theme contracts, extension runtime behavior, and related adoption paths."
22
+ - question: "Why does MdWrk separate packages from the product site?"
23
+ answer: "The package section makes reusable module boundaries explicit so teams can evaluate adoption without treating every capability as an app-only feature."
24
+ ---
25
+
26
+ MdWrk packages are the reusable module surfaces behind the broader MdWrk product story. They help teams adopt rendering, editing, theming, and extension behavior without pulling in the full MdWrk application shell.
27
+
28
+ ## Current public package pages
29
+
30
+ - [@mdwrk/markdown-renderer-core](/packages/markdown-renderer-core/) is the self-contained Markdown parsing and rendering surface for HTML output and preview pipelines.
31
+ - [@mdwrk/markdown-renderer-react](/packages/markdown-renderer-react/) provides React bindings for MdWrk-aligned Markdown rendering.
32
+ - [@mdwrk/markdown-editor-react](/packages/markdown-editor-react/) exposes React editor components for embedding MdWrk-style authoring surfaces.
33
+ - [@mdwrk/theme-contract](/packages/theme-contract/) documents the governed token and compatibility contract for editor, preview, extension, and lander styling.
34
+ - [@mdwrk/extension-runtime](/packages/extension-runtime/) covers the reusable runtime boundary for extension lifecycle and host-facing behavior.
35
+
36
+ ## Broader package families in the repo
37
+
38
+ The public package pages cover only part of the current workspace package surface. The broader repo also includes the packaged workspace app, editor and renderer families, extension packages, shared utilities, lander packages, and the MdWrk content pack.
39
+
40
+ ## How to use this section
41
+
42
+ Start here if you are evaluating MdWrk as a package platform rather than only as an end-user application. The package pages clarify install surfaces, public APIs, and how each reusable module fits into the broader Markdown workflow.
@@ -0,0 +1,33 @@
1
+ ---
2
+ schema: "mdwrk.page.v1"
3
+ slug: "/packages/markdown-editor-react/"
4
+ title: "Markdown Editor React Package | MdWrk"
5
+ description: "The @mdwrk/markdown-editor-react package provides React Markdown editor components for embedding MdWrk-style authoring surfaces."
6
+ h1: "@mdwrk/markdown-editor-react"
7
+ entity: "MdWrk"
8
+ intent: "markdown editor react package"
9
+ contentType: "package"
10
+ updatedAt: "2026-05-05"
11
+ author: CobyCloud
12
+ subtitle: "Use the React editor package when another product needs a reusable Markdown authoring surface."
13
+ parent: "/packages/"
14
+ related:
15
+ - "/packages/"
16
+ - "/packages/markdown-renderer-react/"
17
+ - "/packages/theme-contract/"
18
+ faqs:
19
+ - question: "What is @mdwrk/markdown-editor-react?"
20
+ answer: "It is the React editor package for embedding MdWrk-style Markdown authoring surfaces."
21
+ ---
22
+
23
+ `@mdwrk/markdown-editor-react` provides React components for Markdown authoring. It is part of the package family that lets MdWrk behavior travel outside the main workspace client.
24
+
25
+ Install:
26
+
27
+ ```bash
28
+ npm install @mdwrk/markdown-editor-react
29
+ ```
30
+
31
+ Use this package when a product needs editor behavior directly and does not need to adopt the entire MdWrk application shell.
32
+
33
+ The editor package is part of the split package story. A consuming product can pair it with renderer packages, theme contracts, and its own content model while MdWrk continues to use the same family inside the flagship workspace.
@@ -0,0 +1,33 @@
1
+ ---
2
+ schema: "mdwrk.page.v1"
3
+ slug: "/packages/markdown-renderer-core/"
4
+ title: "Markdown Renderer Core Package | MdWrk"
5
+ description: "The @mdwrk/markdown-renderer-core package provides self-contained Markdown parsing and rendering utilities for package-level preview and HTML output."
6
+ h1: "@mdwrk/markdown-renderer-core"
7
+ entity: "MdWrk"
8
+ intent: "markdown renderer core package"
9
+ contentType: "package"
10
+ updatedAt: "2026-05-05"
11
+ author: CobyCloud
12
+ subtitle: "Use the renderer core package when a product needs Markdown parsing and HTML rendering without adopting the full MdWrk client."
13
+ parent: "/packages/"
14
+ related:
15
+ - "/packages/"
16
+ - "/packages/markdown-renderer-react/"
17
+ - "/proof/package-surfaces/"
18
+ faqs:
19
+ - question: "What is @mdwrk/markdown-renderer-core?"
20
+ answer: "It is the package-level Markdown parsing and rendering surface used by MdWrk renderer workflows."
21
+ ---
22
+
23
+ `@mdwrk/markdown-renderer-core` provides Markdown parsing and rendering utilities for package-level preview and HTML output. It is useful when a product needs MdWrk-aligned Markdown behavior without adopting the full workspace client.
24
+
25
+ Install:
26
+
27
+ ```bash
28
+ npm install @mdwrk/markdown-renderer-core
29
+ ```
30
+
31
+ The package belongs to the reusable renderer family. The lander presents it as part of MdWrk product truth, while the portable lander packages only render the package-page shape, metadata, FAQ, and schema.
32
+
33
+ Use this surface when the implementation needs Markdown behavior that can be tested, documented, and reused without importing the full client. The package keeps renderer adoption explicit, which helps product teams separate content parsing, HTML output, and application-specific presentation.
@@ -0,0 +1,33 @@
1
+ ---
2
+ schema: "mdwrk.page.v1"
3
+ slug: "/packages/markdown-renderer-react/"
4
+ title: "Markdown Renderer React Package | MdWrk"
5
+ description: "The @mdwrk/markdown-renderer-react package provides React bindings for rendering Markdown through the same package family used by MdWrk."
6
+ h1: "@mdwrk/markdown-renderer-react"
7
+ entity: "MdWrk"
8
+ intent: "markdown renderer react package"
9
+ contentType: "package"
10
+ updatedAt: "2026-05-05"
11
+ author: CobyCloud
12
+ subtitle: "Use the React renderer package when a product needs MdWrk-aligned Markdown rendering inside React."
13
+ parent: "/packages/"
14
+ related:
15
+ - "/packages/"
16
+ - "/packages/markdown-renderer-core/"
17
+ - "/packages/markdown-editor-react/"
18
+ faqs:
19
+ - question: "What is @mdwrk/markdown-renderer-react?"
20
+ answer: "It is the React binding package for rendering Markdown through MdWrk's renderer family."
21
+ ---
22
+
23
+ `@mdwrk/markdown-renderer-react` gives React applications a package-level route into MdWrk-aligned Markdown rendering. It pairs with the renderer core package and keeps rendering behavior reusable outside the full workspace client.
24
+
25
+ Install:
26
+
27
+ ```bash
28
+ npm install @mdwrk/markdown-renderer-react
29
+ ```
30
+
31
+ Use this package when a product needs a React Markdown preview surface that can stay aligned with MdWrk examples, docs, and client behavior.
32
+
33
+ The React package is intentionally described as a reusable surface instead of a hidden implementation detail. That makes package adoption clear for teams that need preview behavior inside another application while keeping MdWrk-specific product positioning in the content pack.
@@ -0,0 +1,33 @@
1
+ ---
2
+ schema: "mdwrk.page.v1"
3
+ slug: "/packages/theme-contract/"
4
+ title: "Theme Contract Package | MdWrk"
5
+ description: "The @mdwrk/theme-contract package defines theme token and compatibility contracts for MdWrk editor, preview, extension, and lander surfaces."
6
+ h1: "@mdwrk/theme-contract"
7
+ entity: "MdWrk"
8
+ intent: "theme contract package"
9
+ contentType: "package"
10
+ updatedAt: "2026-05-05"
11
+ author: CobyCloud
12
+ subtitle: "Use the theme contract package when styling needs to target governed tokens instead of private UI internals."
13
+ parent: "/packages/"
14
+ related:
15
+ - "/packages/"
16
+ - "/answers/how-do-mdwrk-theme-packs-work/"
17
+ - "/packages/extension-runtime/"
18
+ faqs:
19
+ - question: "What is @mdwrk/theme-contract?"
20
+ answer: "It is the package that defines governed theme tokens and compatibility surfaces for MdWrk packages and apps."
21
+ ---
22
+
23
+ `@mdwrk/theme-contract` defines theme token and compatibility contracts for MdWrk surfaces. It helps themes travel across editor, preview, extension, and lander experiences without patching private implementation details.
24
+
25
+ Install:
26
+
27
+ ```bash
28
+ npm install @mdwrk/theme-contract
29
+ ```
30
+
31
+ This package anchors the difference between reusable visual shape and MdWrk-specific styling truth. Product theme packs can supply identity while generic packages keep stable token names.
32
+
33
+ The contract matters for portability because themes should not depend on private app selectors. A product-specific theme can express its own visual system while editor, preview, extension, and lander packages continue to consume documented tokens.
@@ -0,0 +1,41 @@
1
+ ---
2
+ schema: "mdwrk.page.v1"
3
+ slug: "/privacy/"
4
+ title: "MdWrk privacy policy for local-first Markdown workflows"
5
+ description: "MdWrk privacy documentation explains the local-first storage model, explicit sharing boundaries, GitHub integration expectations, and extension trust policy."
6
+ h1: "Privacy policy"
7
+ entity: "MdWrk"
8
+ intent: "MdWrk privacy policy"
9
+ contentType: "privacy"
10
+ updatedAt: "2026-05-04"
11
+ author: CobyCloud
12
+ subtitle: "MdWrk is documented as a privacy-first Markdown workspace that keeps authoring local by default and treats sync, export, integrations, and extensions as explicit user choices."
13
+ faqs:
14
+ - question: "Does MdWrk upload documents by default?"
15
+ answer: "The public documentation should not imply default uploads. It should describe local storage and identify workflows that intentionally use networked services."
16
+ parent: "/"
17
+ related:
18
+ - "/security/"
19
+ tags:
20
+ - privacy
21
+ - local-first
22
+ - policy
23
+ ---
24
+
25
+ MdWrk's privacy policy is written around the local-first Markdown model. Public documentation should make clear that writing and previewing Markdown do not require a hosted document account as the default assumption.
26
+
27
+ ## Local Content Boundary
28
+
29
+ Markdown documents, workspace state, and editor preferences should be described in terms of local control. If a workflow stores data in browser-managed storage, IndexedDB, filesystem-backed surfaces, or another local mechanism, the docs should say so plainly.
30
+
31
+ ## Explicit Sharing
32
+
33
+ Export, GitHub sync, package installation, and extension workflows are deliberate actions. The privacy documentation should explain that these actions may cross the local boundary and should describe which external service or package is involved.
34
+
35
+ ## Extension Trust
36
+
37
+ Extensions can add useful capabilities, but they also need trust and compatibility rules. MdWrk documents extension manifests, package identity, runtime expectations, and the idea that extension behavior should not be treated as automatically trusted.
38
+
39
+ ## Public Documentation
40
+
41
+ The public privacy page is statically generated, indexable when policy allows, and mirrored into machine-readable artifacts. That makes the privacy posture inspectable before deployment.
@@ -0,0 +1,22 @@
1
+ ---
2
+ schema: "mdwrk.page.v1"
3
+ slug: "/proof/browser-support/"
4
+ title: "Browser Support Proof | MdWrk"
5
+ description: "MdWrk documents browser and PWA behavior as governed public product surfaces with static lander evidence."
6
+ h1: "Browser support proof"
7
+ entity: "MdWrk"
8
+ intent: "mdwrk browser support proof"
9
+ contentType: "docs"
10
+ updatedAt: "2026-05-05"
11
+ author: CobyCloud
12
+ subtitle: "Browser support proof connects product claims to static pages, package surfaces, and verification artifacts."
13
+ faqs:
14
+ - question: "How does MdWrk present browser support?"
15
+ answer: "MdWrk presents browser and PWA behavior through static pages, package documentation, and governed verification artifacts."
16
+ ---
17
+
18
+ Browser support proof connects MdWrk's public product claims to static pages, package surfaces, and verification artifacts. The lander is expected to produce crawlable HTML, Markdown mirrors, sitemap entries, robots policy, LLM files, content indexes, and JSON-LD graph data.
19
+
20
+ This page is intentionally a proof page rather than a marketing claim alone. It points readers toward the artifacts that make browser and PWA support inspectable.
21
+
22
+ The reusable lander package owns proof-page rendering shape. MdWrk owns the browser support facts and the evidence language.
@@ -0,0 +1,22 @@
1
+ ---
2
+ schema: "mdwrk.page.v1"
3
+ slug: "/proof/markdown-support/"
4
+ title: "Markdown Support Proof | MdWrk"
5
+ description: "MdWrk aligns Markdown editing and preview behavior with reusable renderer and editor package surfaces."
6
+ h1: "Markdown support proof"
7
+ entity: "MdWrk"
8
+ intent: "mdwrk markdown support proof"
9
+ contentType: "docs"
10
+ updatedAt: "2026-05-05"
11
+ author: CobyCloud
12
+ subtitle: "Markdown support proof keeps the product page, renderer package, editor package, and static examples aligned."
13
+ faqs:
14
+ - question: "How does MdWrk prove Markdown support?"
15
+ answer: "MdWrk links Markdown support claims to renderer and editor packages, examples, documentation, and generated public artifacts."
16
+ ---
17
+
18
+ Markdown support proof keeps MdWrk's product page, renderer package, editor package, and static examples aligned. The public site should not make Markdown claims that are disconnected from package behavior.
19
+
20
+ The renderer and editor package families are the most important reusable surfaces for Markdown behavior. They let the product, docs, examples, and future integrations rely on a common implementation story.
21
+
22
+ This proof page is product-specific. The portable lander package only supplies the proof matrix and page rendering shape.
@@ -0,0 +1,22 @@
1
+ ---
2
+ schema: "mdwrk.page.v1"
3
+ slug: "/proof/package-surfaces/"
4
+ title: "Package Surfaces Proof | MdWrk"
5
+ description: "MdWrk exposes reusable package surfaces separately from the MdWrk-specific marketing and documentation content pack."
6
+ h1: "Package surfaces proof"
7
+ entity: "MdWrk"
8
+ intent: "mdwrk package surfaces proof"
9
+ contentType: "docs"
10
+ updatedAt: "2026-05-05"
11
+ author: CobyCloud
12
+ subtitle: "Package surface proof explains the split between generic lander packages and MdWrk-specific content truth."
13
+ faqs:
14
+ - question: "What does package surface proof show?"
15
+ answer: "It shows that reusable packages own shape and behavior while MdWrk content owns product claims, positioning, pages, and proof language."
16
+ ---
17
+
18
+ Package surfaces proof explains the split between generic lander packages and MdWrk-specific content truth. The reusable package family owns contracts, compiler behavior, React sections, schema builders, SEO utilities, theme tokens, and Markdown/frontmatter bridging.
19
+
20
+ MdWrk owns product name, positioning, claims, features, FAQs, comparison facts, package descriptions, proof language, screenshots, CTAs, and docs links. That separation makes the lander package reusable across other product websites.
21
+
22
+ This proof page is also a guardrail. Future product packs should be able to reuse the lander engine without inheriting MdWrk-specific prose or package claims.
@@ -0,0 +1,38 @@
1
+ ---
2
+ schema: "mdwrk.page.v1"
3
+ slug: "/security/"
4
+ title: "MdWrk security notes for packages, extensions, and static docs"
5
+ description: "MdWrk security notes explain package boundaries, extension trust, static content verification, robots policy, and deployable artifact checks."
6
+ h1: "Security notes"
7
+ entity: "MdWrk"
8
+ intent: "MdWrk security documentation"
9
+ contentType: "security"
10
+ updatedAt: "2026-05-04"
11
+ author: CobyCloud
12
+ subtitle: "MdWrk security documentation focuses on package boundaries, extension trust, static build verification, link integrity, and public artifacts that can be inspected before deployment."
13
+ parent: "/"
14
+ related:
15
+ - "/privacy/"
16
+ tags:
17
+ - security
18
+ - verification
19
+ - extensions
20
+ ---
21
+
22
+ MdWrk security documentation explains how the public lander and product surfaces should be reviewed. The static compiler is part of that posture because it verifies source content and generated artifacts before deployment.
23
+
24
+ ## Package Boundaries
25
+
26
+ Reusable packages should have clear responsibilities. Editor, renderer, extension host, theme contract, and static lander surfaces should not blur into one unreviewable runtime.
27
+
28
+ ## Extension Trust
29
+
30
+ Extensions need explicit trust policy. The documentation should describe manifest metadata, compatibility expectations, package identity, and how users can reason about what an extension is allowed to do.
31
+
32
+ ## Static Artifact Verification
33
+
34
+ The public lander build verifies HTML, links, JSON-LD, sitemap output, robots policy, LLM index files, Markdown mirrors, and the content registry. These checks help prevent empty app shells or hidden primary content from being treated as deployable.
35
+
36
+ ## Deployment Smoke Checks
37
+
38
+ Production URL checks are post-deploy smoke checks. They should verify that the deployed response contains expected content, but they should not be required to create a valid deployable artifact.
@@ -0,0 +1,22 @@
1
+ ---
2
+ schema: "mdwrk.page.v1"
3
+ slug: "/trust/privacy-boundary/"
4
+ title: "Privacy Boundary | MdWrk"
5
+ description: "MdWrk keeps normal authoring local-first and makes sync, export, repository movement, and hosted integrations explicit boundaries."
6
+ h1: "Privacy boundary"
7
+ entity: "MdWrk"
8
+ intent: "mdwrk privacy boundary"
9
+ contentType: "privacy"
10
+ updatedAt: "2026-05-05"
11
+ author: CobyCloud
12
+ subtitle: "The privacy boundary explains what stays local by default and when content intentionally crosses into an integration."
13
+ faqs:
14
+ - question: "What is MdWrk's privacy boundary?"
15
+ answer: "MdWrk keeps normal Markdown authoring local-first and treats sync, export, repository movement, and hosted integrations as explicit boundaries."
16
+ ---
17
+
18
+ MdWrk's privacy boundary starts with local-first authoring. Normal Markdown writing, preview, and workspace organization should be understandable without requiring a hosted authoring backend.
19
+
20
+ That does not mean every workflow is offline-only. Sync, export, repository movement, package discovery, and deployment can cross a network boundary, but those paths should be visible choices rather than hidden defaults.
21
+
22
+ This trust page belongs to the MdWrk content pack. The reusable lander engine renders trust and proof pages without knowing this specific privacy position.
@@ -0,0 +1,111 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://mdwrk.com/schemas/article-metadata.schema.json",
4
+ "title": "MdWrk Article Metadata Header",
5
+ "description": "Frontmatter metadata schema for MdWrk documentation and product update articles.",
6
+ "type": "object",
7
+ "oneOf": [
8
+ {
9
+ "title": "Documentation article metadata",
10
+ "type": "object",
11
+ "required": [
12
+ "title",
13
+ "slug",
14
+ "section",
15
+ "sectionOrder",
16
+ "order",
17
+ "toc",
18
+ "date",
19
+ "status",
20
+ "excerpt"
21
+ ],
22
+ "properties": {
23
+ "title": { "$ref": "#/$defs/nonEmptyString" },
24
+ "subtitle": { "$ref": "#/$defs/subtitle" },
25
+ "slug": {
26
+ "type": "string",
27
+ "pattern": "^[a-z0-9][a-z0-9/-]*$"
28
+ },
29
+ "section": { "$ref": "#/$defs/nonEmptyString" },
30
+ "sectionOrder": { "$ref": "#/$defs/numericString" },
31
+ "order": { "$ref": "#/$defs/integerString" },
32
+ "toc": {
33
+ "type": "string",
34
+ "enum": ["true", "false"]
35
+ },
36
+ "date": { "$ref": "#/$defs/isoDate" },
37
+ "status": { "$ref": "#/$defs/articleStatus" },
38
+ "excerpt": { "$ref": "#/$defs/excerpt" },
39
+ "author": { "$ref": "#/$defs/nonEmptyString" },
40
+ "displayAuthor": { "type": "boolean" },
41
+ "featuredImage": { "$ref": "#/$defs/imagePath" },
42
+ "featuredImageAlt": { "$ref": "#/$defs/nonEmptyString" },
43
+ "relatedApis": { "$ref": "#/$defs/commaList" }
44
+ },
45
+ "additionalProperties": false
46
+ },
47
+ {
48
+ "title": "Product update article metadata",
49
+ "type": "object",
50
+ "required": [
51
+ "title",
52
+ "date",
53
+ "status",
54
+ "author",
55
+ "excerpt"
56
+ ],
57
+ "properties": {
58
+ "title": { "$ref": "#/$defs/nonEmptyString" },
59
+ "subtitle": { "$ref": "#/$defs/subtitle" },
60
+ "date": { "$ref": "#/$defs/isoDate" },
61
+ "status": { "$ref": "#/$defs/articleStatus" },
62
+ "author": { "$ref": "#/$defs/nonEmptyString" },
63
+ "excerpt": { "$ref": "#/$defs/excerpt" },
64
+ "featuredImage": { "$ref": "#/$defs/imagePath" },
65
+ "featuredImageAlt": { "$ref": "#/$defs/nonEmptyString" }
66
+ },
67
+ "additionalProperties": false
68
+ }
69
+ ],
70
+ "$defs": {
71
+ "nonEmptyString": {
72
+ "type": "string",
73
+ "minLength": 1
74
+ },
75
+ "excerpt": {
76
+ "type": "string",
77
+ "minLength": 40,
78
+ "maxLength": 280
79
+ },
80
+ "subtitle": {
81
+ "type": "string",
82
+ "minLength": 20,
83
+ "maxLength": 280
84
+ },
85
+ "isoDate": {
86
+ "type": "string",
87
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
88
+ },
89
+ "integerString": {
90
+ "type": "string",
91
+ "pattern": "^\\d+$"
92
+ },
93
+ "numericString": {
94
+ "type": "string",
95
+ "pattern": "^\\d+(?:\\.\\d+)?$"
96
+ },
97
+ "articleStatus": {
98
+ "type": "string",
99
+ "enum": ["draft", "published"]
100
+ },
101
+ "commaList": {
102
+ "type": "string",
103
+ "minLength": 1
104
+ },
105
+ "imagePath": {
106
+ "type": "string",
107
+ "minLength": 1,
108
+ "pattern": "^(https?://|/)[^\\s]+$"
109
+ }
110
+ }
111
+ }
@@ -0,0 +1,31 @@
1
+ content:
2
+ - id: legal/privacy
3
+ file: ./markdown/legal/privacy.md
4
+ - id: legal/terms
5
+ file: ./markdown/legal/terms.md
6
+ - id: blog/client-split-out-backstory
7
+ file: ./markdown/blog/client-split-out-backstory.md
8
+ - id: blog/markdown-workspace-launch
9
+ file: ./markdown/blog/markdown-workspace-launch.md
10
+ - id: blog/responsive-authoring-and-export
11
+ file: ./markdown/blog/responsive-authoring-and-export.md
12
+ - id: blog/pwa-install-and-zoom-controls
13
+ file: ./markdown/blog/pwa-install-and-zoom-controls.md
14
+ - id: blog/governed-releases-and-package-docs
15
+ file: ./markdown/blog/governed-releases-and-package-docs.md
16
+ - id: blog/extension-compatibility-and-publish-gates
17
+ file: ./markdown/blog/extension-compatibility-and-publish-gates.md
18
+ - id: blog/screenshot-matrix-and-browser-sidebars
19
+ file: ./markdown/blog/screenshot-matrix-and-browser-sidebars.md
20
+ - id: blog/retained-client-versions-and-desktop-shell
21
+ file: ./markdown/blog/retained-client-versions-and-desktop-shell.md
22
+ - id: blog/desktop-release-and-android-verification
23
+ file: ./markdown/blog/desktop-release-and-android-verification.md
24
+ - id: blog/workspace-files-and-git-ops-packages
25
+ file: ./markdown/blog/workspace-files-and-git-ops-packages.md
26
+ - id: blog/extension-host-rollout
27
+ file: ./markdown/blog/extension-host-rollout.md
28
+ - id: blog/docs-surface-realignment
29
+ file: ./markdown/blog/docs-surface-realignment.md
30
+ - id: blog/settings-simplification-for-daily-flow
31
+ file: ./markdown/blog/settings-simplification-for-daily-flow.md
@@ -0,0 +1,55 @@
1
+ import { parseMarkdown } from '../utils/markdownParser';
2
+ import { isPublishedMetadata } from '../utils/publication';
3
+ import sitemapRaw from './content-sitemap.yaml?raw';
4
+
5
+ interface ContentSitemapEntry {
6
+ id: string;
7
+ file: string;
8
+ }
9
+
10
+ const parseContentSitemap = (raw: string): ContentSitemapEntry[] => {
11
+ const entries: ContentSitemapEntry[] = [];
12
+ const lines = raw.split('\n').map(line => line.trim()).filter(Boolean);
13
+
14
+ let current: Partial<ContentSitemapEntry> = {};
15
+
16
+ for (const line of lines) {
17
+ if (line.startsWith('- id:')) {
18
+ if (current.id && current.file) {
19
+ entries.push({ id: current.id, file: current.file });
20
+ }
21
+ current = { id: line.replace('- id:', '').trim() };
22
+ continue;
23
+ }
24
+
25
+ if (line.startsWith('file:')) {
26
+ current.file = line.replace('file:', '').trim();
27
+ }
28
+ }
29
+
30
+ if (current.id && current.file) {
31
+ entries.push({ id: current.id, file: current.file });
32
+ }
33
+
34
+ return entries;
35
+ };
36
+
37
+ const rawContentFiles = import.meta.glob('./markdown/**/*.md', {
38
+ eager: true,
39
+ query: '?raw',
40
+ import: 'default'
41
+ }) as Record<string, string>;
42
+
43
+ const sitemapEntries = parseContentSitemap(sitemapRaw);
44
+
45
+ export const contentFiles = sitemapEntries.reduce<Record<string, string>>((acc, entry) => {
46
+ const content = rawContentFiles[entry.file];
47
+ if (content) {
48
+ const { metadata } = parseMarkdown(content);
49
+ if (!isPublishedMetadata(metadata)) {
50
+ return acc;
51
+ }
52
+ acc[entry.id] = content;
53
+ }
54
+ return acc;
55
+ }, {});