import { unified } from '@astrojs/markdown-remark' import starlight from '@astrojs/starlight' import { defineConfig } from 'astro/config' import { remarkLinks, remarkMermaid } from './plugins.mjs' import { remarkReference } from './reference.mjs' /** Where the site is served: under the pages' own origin, beside the app. */ const base = '/docs' // The sidebar follows docs/README.md: guides, then reference, then design. const page = (label, slug) => ({ label, slug }) export default defineConfig({ site: 'https://knotless.dev', base, markdown: { processor: unified({ remarkPlugins: [[remarkLinks, { base }], remarkMermaid, remarkReference] }) }, integrations: [ starlight({ title: 'knotless docs', description: 'Git repositories stored in atproto accounts: guides, reference and design.', customCss: ['./src/theme.css'], components: { SiteTitle: './src/SiteTitle.astro', ThemeSelect: './src/ThemeSelect.astro' }, social: [{ icon: 'seti:git', label: 'The repository', href: 'https://knotless.dev/chadtmiller.com/knotless' }], lastUpdated: false, // Code as the pages show it: a plain block, GitHub's colours. expressiveCode: { themes: ['github-dark', 'github-light'], defaultProps: { frame: 'none' }, styleOverrides: { borderRadius: 'var(--radius-md)', borderColor: 'var(--line)', codeBackground: 'var(--soft)', codeFontFamily: 'var(--font-mono)', codeFontSize: 'var(--text-sm)', uiFontFamily: 'var(--font-sans)', frames: { frameBoxShadowCssValue: 'none' }, }, }, pagination: true, sidebar: [ page('Overview', ''), { label: 'Guides', items: [ page('Getting started', 'guide/getting-started'), page('Collaborating', 'guide/collaborating'), page('Private repositories', 'guide/private'), page('Agents', 'guide/agents'), page('Review agents', 'guide/reviews'), page('Running knotless-serve', 'guide/server'), page('Workflows', 'guide/workflows'), ], }, { label: 'Reference', items: [ page('Actions', 'reference/actions'), page('Commands', 'reference/cli'), page('MCP tools', 'reference/mcp'), page('HTTP and XRPC API', 'reference/api'), page('Workflow files', 'reference/workflows'), page('knotless-run internals', 'reference/runner-internals'), page('Performance', 'reference/performance'), page('Observability', 'observability'), ], }, { label: 'Design', items: [ page('Overview', 'design'), page('Storage', 'design/storage'), page('Naming and identity', 'design/identity'), page('Access', 'design/access'), page('Gateway', 'design/gateway'), page('Pulls, issues and moderation', 'design/collaboration'), page('knotless-serve', 'design/serve'), page('knotless-run', 'design/runner'), page('Shared steps', 'design/reusable-workflows'), page('The merge queue', 'design/merge-queue'), page('Releases', 'design/packages'), page('Integrity and trust', 'design/security'), page('Prior art', 'design/prior-art'), ], }, { label: 'Contributing', items: [page('Development', 'development')] }, ], }), ], })