Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
upgrade @astrojs/starlight to 0.32.3
Fixed breaking API changes
  • Loading branch information
HuakunShen committed Mar 20, 2025
commit d19db6f24b89d53125ddcbce34e4310fe9f36455
Binary file modified bun.lockb
100644 → 100755
Binary file not shown.
2 changes: 1 addition & 1 deletion docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
},
"dependencies": {
"@astrojs/check": "^0.9.4",
"@astrojs/starlight": "0.31.1",
"@astrojs/starlight": "0.32.3",
"astro": "5.1.8",
"astro-og-canvas": "^0.5.4",
"starlight-links-validator": "^0.12.3",
Expand Down
103 changes: 53 additions & 50 deletions packages/starlight-theme-obsidian/index.ts
Original file line number Diff line number Diff line change
@@ -1,59 +1,62 @@
import type { StarlightPlugin } from '@astrojs/starlight/types';
import starlightSiteGraph from 'starlight-site-graph';
import {type StarlightThemeObsidianConfig, validateConfig} from 'starlight-theme-obsidian/config';
import { type StarlightThemeObsidianConfig, validateConfig } from 'starlight-theme-obsidian/config';

export default function plugin(userConfig?: StarlightThemeObsidianConfig): StarlightPlugin {
const parsedConfig = validateConfig(userConfig);
return {
name: 'starlight-theme-obsidian',
hooks: {
setup: async (args) => {
const { config, logger, updateConfig } = args;
// TODO: Temporary implementation of graph/backlinks exclusion from theme
// Eventually, starlight-site-graph should be an optional dependency
if (!parsedConfig.graph) {
parsedConfig.graphConfig.visibilityRules = [];
}
if (!parsedConfig.backlinks) {
parsedConfig.backlinksConfig.visibilityRules = [];
}
if (!(parsedConfig.graph || parsedConfig.backlinks)) {
// This bypasses the sitemap generation, so page contents don't have to be parsed
parsedConfig.sitemapConfig.pageInclusionRules = [];
}
const parsedConfig = validateConfig(userConfig);
return {
name: 'starlight-theme-obsidian',
hooks: {
'config:setup': async args => {
const { config, logger, updateConfig } = args;
// TODO: Temporary implementation of graph/backlinks exclusion from theme
// Eventually, starlight-site-graph should be an optional dependency
if (!parsedConfig.graph) {
parsedConfig.graphConfig.visibilityRules = [];
}
if (!parsedConfig.backlinks) {
parsedConfig.backlinksConfig.visibilityRules = [];
}
if (!(parsedConfig.graph || parsedConfig.backlinks)) {
// This bypasses the sitemap generation, so page contents don't have to be parsed
parsedConfig.sitemapConfig.pageInclusionRules = [];
}

// TODO: This is a temporary bodge until `addPlugin` PR is created
if (config.plugins?.some(plugin => plugin.name === 'starlight-site-graph')) {
logger.warn("`starlight-site-graph` is already included in the `astro.config.mjs`. Skipping integration.");
} else {
await (starlightSiteGraph(parsedConfig).hooks).setup(args);
}
const customCss: typeof config.customCss = ['starlight-theme-obsidian/styles/common.css',
'starlight-site-graph/styles/common.css',
];
// TODO: This is a temporary bodge until `addPlugin` PR is created
if (config.plugins?.some(plugin => plugin.name === 'starlight-site-graph')) {
logger.warn(
'`starlight-site-graph` is already included in the `astro.config.mjs`. Skipping integration.',
);
} else {
await starlightSiteGraph(parsedConfig).hooks['config:setup'](args);
}
const customCss: typeof config.customCss = [
'starlight-theme-obsidian/styles/common.css',
'starlight-site-graph/styles/common.css',
];

const componentOverrides: typeof config.components = {};

const componentOverrides: typeof config.components = {};
const overridableComponents = ['Sidebar', 'PageFrame', 'Pagination', 'ThemeSelect', 'PageSidebar'];
for (const component of overridableComponents) {
if (config.components?.[component]) {
logger.warn(
`It looks like you already have a \`${component}\` component override in your Starlight configuration.`,
);
} else {
componentOverrides[component] = `starlight-theme-obsidian/overrides/${component}.astro`;
}
}

const overridableComponents = ['Sidebar', 'PageFrame', 'Pagination', 'ThemeSelect', 'PageSidebar'];
for (const component of overridableComponents) {
if (config.components?.[component]) {
logger.warn(
`It looks like you already have a \`${component}\` component override in your Starlight configuration.`,
);
} else {
componentOverrides[component] = `starlight-theme-obsidian/overrides/${component}.astro`;
}
}

updateConfig({
components: {
...componentOverrides,
...config.components,
},
customCss: [...customCss, ...(config.customCss ?? [])],
});
},
},
};
updateConfig({
components: {
...componentOverrides,
...config.components,
},
customCss: [...customCss, ...(config.customCss ?? [])],
});
},
},
};
}

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import SiteTitle from 'virtual:starlight/components/SiteTitle';

import type { Props } from '../props';

const { hasSidebar } = Astro.props;
const { hasSidebar } = Astro.locals.starlightRoute;
---

{/* (STARLIGHT-THEME-OBSIDIAN): Do not show header component if page has no sidebar, create a separate mobile-header component */}
Expand Down
4 changes: 2 additions & 2 deletions packages/starlight-theme-obsidian/overrides/Pagination.astro
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
import { Icon } from '@astrojs/starlight/components'
import type { Props } from '@astrojs/starlight/props'

const { dir, pagination } = Astro.props
const { prev, next } = pagination
const { dir, pagination } = Astro.locals.starlightRoute;
const { prev, next } = pagination;
const isRtl = dir === 'rtl'

---
Expand Down
2 changes: 1 addition & 1 deletion packages/starlight-theme-obsidian/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
},
"bugs": "https://github.com/Fevol/starlight-theme-obsidian/issues",
"peerDependencies": {
"@astrojs/starlight": "^0.31.0",
"@astrojs/starlight": "^0.32.3",
"astro": "^5.1.5",
"starlight-site-graph": "^0.2.0"
}
Expand Down