starlight-auto-sidebar
Version:
Starlight plugin to tweak autogenerated sidebar groups.
28 lines (21 loc) • 1.35 kB
text/typescript
import type { HookParameters } from '@astrojs/starlight/types'
export function isSidebarSlugItemConfig(itemConfig: SidebarItemConfig): itemConfig is SidebarSlugItemConfig {
return typeof itemConfig === 'string' || 'slug' in itemConfig
}
export function isSidebarLinkItemConfig(itemConfig: SidebarItemConfig): itemConfig is SidebarLinkItemConfig {
return typeof itemConfig === 'object' && 'link' in itemConfig
}
export function isSidebarManualGroupConfig(itemConfig: SidebarItemConfig): itemConfig is SidebarManualGroupConfig {
return typeof itemConfig === 'object' && 'items' in itemConfig
}
export function isSidebarAutogeneratedGroupConfig(
itemConfig: SidebarItemConfig,
): itemConfig is SidebarAutogeneratedGroupConfig {
return typeof itemConfig === 'object' && 'autogenerate' in itemConfig
}
export type SidebarUserConfig = NonNullable<HookParameters<'config:setup'>['config']['sidebar']>
export type SidebarItemConfig = SidebarUserConfig[number]
export type SidebarSlugItemConfig = Extract<SidebarItemConfig, string | { slug: string }>
export type SidebarLinkItemConfig = Extract<SidebarItemConfig, { link: string }>
export type SidebarManualGroupConfig = Extract<SidebarItemConfig, { items: SidebarItemConfig[] }>
export type SidebarAutogeneratedGroupConfig = Extract<SidebarItemConfig, { autogenerate: { directory: string } }>