summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Zuniga Cuellar2023-09-29 13:32:05 -0400
committerGitHub2023-09-29 19:32:05 +0200
commitf94727e7d286a6910f913a572b27eb17c42f1729 (patch)
tree299a843ca0d70fb63268347f1f0c8b92a20b0f3f
parent8d5ae1ce9b4304f28bfa97afdef16afa31226b06 (diff)
downloadIT.starlight-f94727e7d286a6910f913a572b27eb17c42f1729.tar.gz
IT.starlight-f94727e7d286a6910f913a572b27eb17c42f1729.tar.bz2
IT.starlight-f94727e7d286a6910f913a572b27eb17c42f1729.zip
fix: add src path to gh edit link (#783)
-rw-r--r--.changeset/breezy-owls-roll.md5
-rw-r--r--packages/starlight/components/EditLink.astro4
-rw-r--r--packages/starlight/integrations/virtual-user-config.ts4
-rw-r--r--packages/starlight/virtual.d.ts2
4 files changed, 11 insertions, 4 deletions
diff --git a/.changeset/breezy-owls-roll.md b/.changeset/breezy-owls-roll.md
new file mode 100644
index 00000000..7380eca4
--- /dev/null
+++ b/.changeset/breezy-owls-roll.md
@@ -0,0 +1,5 @@
+---
+'@astrojs/starlight': patch
+---
+
+Fix GitHub edit link to include src path from project config
diff --git a/packages/starlight/components/EditLink.astro b/packages/starlight/components/EditLink.astro
index ce400867..4de01348 100644
--- a/packages/starlight/components/EditLink.astro
+++ b/packages/starlight/components/EditLink.astro
@@ -1,6 +1,7 @@
---
import type { CollectionEntry } from 'astro:content';
import config from 'virtual:starlight/user-config';
+import project from 'virtual:starlight/project-context';
import { useTranslations } from '../utils/translations';
import Icon from '../user-components/Icon.astro';
@@ -12,6 +13,7 @@ interface Props {
const t = useTranslations(Astro.props.locale);
const { editUrl } = Astro.props.data;
+const srcPath = project.srcDir.replace(project.root, '');
let { baseUrl } = config.editLink;
if (baseUrl && baseUrl.at(-1) !== '/') baseUrl += '/';
@@ -20,7 +22,7 @@ const url =
typeof editUrl === 'string'
? editUrl
: baseUrl
- ? baseUrl + 'src/content/docs/' + Astro.props.id
+ ? baseUrl + srcPath + 'content/docs/' + Astro.props.id
: undefined;
---
diff --git a/packages/starlight/integrations/virtual-user-config.ts b/packages/starlight/integrations/virtual-user-config.ts
index f965833d..86c2b2a4 100644
--- a/packages/starlight/integrations/virtual-user-config.ts
+++ b/packages/starlight/integrations/virtual-user-config.ts
@@ -10,7 +10,7 @@ function resolveVirtualModuleId<T extends string>(id: T): `\0${T}` {
/** Vite plugin that exposes Starlight user config and project context via virtual modules. */
export function vitePluginStarlightUserConfig(
opts: StarlightConfig,
- { root }: Pick<AstroConfig, 'root'>
+ { root, srcDir }: Pick<AstroConfig, 'root' | 'srcDir'>
): NonNullable<ViteUserConfig['plugins']>[number] {
const resolveId = (id: string) =>
JSON.stringify(id.startsWith('.') ? resolve(fileURLToPath(root), id) : id);
@@ -18,7 +18,7 @@ export function vitePluginStarlightUserConfig(
/** Map of virtual module names to their code contents as strings. */
const modules = {
'virtual:starlight/user-config': `export default ${JSON.stringify(opts)}`,
- 'virtual:starlight/project-context': `export default ${JSON.stringify({ root })}`,
+ 'virtual:starlight/project-context': `export default ${JSON.stringify({ root, srcDir })}`,
'virtual:starlight/user-css': opts.customCss.map((id) => `import ${resolveId(id)};`).join(''),
'virtual:starlight/user-images': opts.logo
? 'src' in opts.logo
diff --git a/packages/starlight/virtual.d.ts b/packages/starlight/virtual.d.ts
index 1e031828..1230c460 100644
--- a/packages/starlight/virtual.d.ts
+++ b/packages/starlight/virtual.d.ts
@@ -3,7 +3,7 @@ declare module 'virtual:starlight/user-config' {
export default Config;
}
declare module 'virtual:starlight/project-context' {
- export default { root: string };
+ export default { root: string, srcDir: string };
}
declare module 'virtual:starlight/user-css' {}