UNPKG

starlight-auto-sidebar

Version:

Starlight plugin to tweak autogenerated sidebar groups.

28 lines (21 loc) 1.35 kB
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 } }>