starlight-theme-rapide
Version:
Starlight theme inspired by the Visual Studio Code Vitesse theme.
52 lines (48 loc) • 2.18 kB
text/typescript
import type { StarlightPlugin } from '@astrojs/starlight/types'
import { overrideComponents } from './libs/starlight'
export default function starlightThemeRapidePlugin(): StarlightPlugin {
return {
name: 'starlight-theme-rapide',
hooks: {
'config:setup'({ config, logger, updateConfig }) {
const userExpressiveCodeConfig =
!config.expressiveCode || config.expressiveCode === true ? {} : config.expressiveCode
updateConfig({
components: overrideComponents(config, ['LanguageSelect', 'Pagination', 'ThemeSelect'], logger),
customCss: [
...(config.customCss ?? []),
'starlight-theme-rapide/styles/layers',
'starlight-theme-rapide/styles/theme',
'starlight-theme-rapide/styles/base',
...(config.markdown?.headingLinks === false ? [] : ['starlight-theme-rapide/styles/anchors']),
],
expressiveCode:
config.expressiveCode === false
? false
: {
themes: ['vitesse-dark', 'vitesse-light'],
...userExpressiveCodeConfig,
styleOverrides: {
borderColor: 'var(--sl-rapide-ui-border-color)',
borderRadius: '0.5rem',
...userExpressiveCodeConfig.styleOverrides,
frames: {
editorActiveTabIndicatorTopColor: 'unset',
editorActiveTabIndicatorBottomColor: 'var(--sl-color-gray-3)',
editorTabBarBorderBottomColor: 'var(--sl-rapide-ui-border-color)',
frameBoxShadowCssValue: 'unset',
...userExpressiveCodeConfig.styleOverrides?.frames,
},
textMarkers: {
backgroundOpacity: '40%',
markBackground: 'var(--sl-rapide-ec-marker-bg-color)',
markBorderColor: 'var(--sl-rapide-ec-marker-border-color)',
...userExpressiveCodeConfig.styleOverrides?.textMarkers,
},
},
},
})
},
},
}
}