# Starlight → Blume Starlight is an Astro integration configured via `starlight({…})` in `astro.config.*`, with content in `src/content/docs`. Both are Astro, so this is a natural fit — content can mostly stay in place, with one big caveat: **most Starlight content is `.md`, and Blume's `:::` directives are MDX-only** (see Asides below). ## Detect - `astro.config.{mjs,mts,ts,js,cjs}` importing and calling **`starlight({…})`** (`import starlight from "@astrojs/starlight"`). - Content under **`src/content/docs/`**; a `src/content.config.ts` (current) or `src/content/config.ts` (pre-Astro-5). - `@astrojs/starlight` dep. Keep content where it is — set `content.root: "src/content/docs"`. ## Config: `starlight({…})` → `blume.config.ts` **Harvest the surrounding `astro.config.*` too, not just the `starlight()` call:** top-level Astro `redirects` → Blume `redirects`; `site` → leave unset (Blume auto-detects); other integrations → report. | Starlight option | Blume | | --- | --- | | `title` | `title` (if per-locale/computed, set manually) | | `description` | `description` | | `logo` (`{ src }` or `{ light, dark, alt }`) | `logo` — move the referenced file into `public/` | | `logo.replacesTitle` | `logo: { text: "" }` (renders the mark alone) | | `favicon` | copy the file into `public/` (drop the config field — Blume auto-detects) | | `social` (array of `{ label, icon, href }`; pre-0.33 legacy: `{ github: url }` object) | derive **`github: { owner, repo }`** from the GitHub entry; other socials drop (report) | | `editLink.baseUrl` (`…/edit//`) | `github: { owner, repo, branch }` — **and any repo sub-path after the branch → `github.dir`** (a docs-in-subfolder repo breaks every edit link without it) | | `sidebar` (array) | filesystem nav / `navigation.sidebar` (see below) | | `tableOfContents` (`false` or `{ minHeadingLevel, maxHeadingLevel }`) | `toc` — identical shape, 1:1 | | `markdown.headingLinks: false` | `markdown.headingAnchors: false` | | `expressiveCode.themes` | `markdown.codeBlocks.theme: { light, dark }` — EC assigns by theme _type_, so match each theme by its darkness, not by array position | | `expressiveCode.styleOverrides` | drop → restyle via a root `theme.css` file | | `head` | **drop and report** (there is no `seo.metatags`); analytics `