import type { Options, ThemeConfig } from '@docusaurus/preset-classic'
import type { Config } from '@docusaurus/types'
import { join } from 'node:path'
import type { PresetOptions } from 'redocusaurus'
const title = 'Chronocat'
const tagline = '模块化的 Satori 框架'
const logo = {
alt: 'Chronocat Logo',
src: 'chronocat.svg',
href: '/',
}
const presetConfig: Options = {
docs: {
routeBasePath: '/',
sidebarPath: join(__dirname, 'sidebars.ts'),
editUrl:
'https://github.com/chrononeko/chronocat/tree/master/packages/docs',
},
blog: {
postsPerPage: 'ALL',
blogSidebarCount: 0,
},
theme: {
customCss: join(__dirname, 'src/css/custom.scss'),
},
}
const redocusaurusConfig: PresetOptions = {
specs: [
{
id: 'openapi',
spec: 'static/openapi.yaml',
url: 'https://chronocat.vercel.app/openapi.yaml',
route: '/develop/satori/reference/api',
layout: {
title: 'API 参考',
},
},
],
theme: {
primaryColor: '#2e8555',
primaryColorDark: '#25c2a0',
},
}
const themeConfig: ThemeConfig = {
colorMode: {
defaultMode: 'light',
respectPrefersColorScheme: true,
},
image: 'chronocat.svg',
metadata: [
{
name: 'description',
content: tagline,
},
{
name: 'keywords',
content:
'Chronocat, Crychiccat, Yukihana, Curinacat, Red, Chrononeko, RedProtocol, BetterQQNT, LiteLoaderQQNT, QQNTim, NoneBot, NoneBot2, Koishi, Koishi.js, Bot, Chatbot, 机器人, OneBot, QQ',
},
],
navbar: {
title,
logo,
items: [
{
label: '使用',
position: 'left',
to: 'guide/install/shell',
activeBasePath: 'guide',
},
{
label: '开发',
position: 'left',
to: 'develop',
},
{
label: '更多',
position: 'left',
type: 'dropdown',
items: [
{
label: 'FAQ',
to: 'faq/1',
},
{
label: '错误码',
to: 'code/all',
},
{
label: '博客',
to: 'blog',
},
{
label: '更多内容',
to: 'more',
},
],
},
{
label: 'v0.2',
position: 'right',
type: 'dropdown',
items: [
{
label: 'v0.1',
href: 'https://chronocat.vercel.app/v01',
},
],
},
{
href: 'https://github.com/chrononeko/chronocat',
html: '',
position: 'right',
},
],
},
footer: {
style: 'dark',
logo: {
...logo,
width: 80,
},
links: [
{
title: '使用',
items: [
{
label: '安装 Chronocat',
to: '/guide/install/shell',
},
{
label: '安装引擎',
to: '/guide/install/engine',
},
{
label: '接入',
to: '/guide/connect',
},
{
label: '配置',
to: '/guide/config',
},
],
},
{
title: '开发',
items: [
{
label: 'Satori',
to: '/develop/satori',
},
],
},
{
title: '更多',
items: [
{
label: 'FAQ',
to: '/faq/1',
},
{
label: '错误码',
to: '/code/all',
},
{
label: '博客',
to: '/blog',
},
{
label: '更多内容',
to: '/more',
},
{
label: '全站搜索',
to: '/search',
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} Team Chrononeko`,
},
docs: {
sidebar: {
autoCollapseCategories: true,
},
},
prism: {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
theme: require('prism-react-renderer/themes/github'),
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
darkTheme: require('prism-react-renderer/themes/palenight'),
},
// announcementBar: {
// id: 'do_not_promote',
// content:
// '为了避免此前的事件再次发生,请勿在任何公众平台分享或宣传 Chronocat。',
// textColor: 'var(--ifm-heading-color)',
// backgroundColor: 'var(--ifm-background-color)',
// isCloseable: false,
// },
}
export const config: Config = {
title,
tagline,
url: 'https://chronocat.vercel.app',
baseUrl: '/',
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
favicon: 'chronocat.ico',
organizationName: 'chrononeko',
projectName: 'chronocat',
i18n: {
defaultLocale: 'zh-Hans',
locales: ['zh-Hans'],
},
presets: [
['classic', presetConfig],
['redocusaurus', redocusaurusConfig],
],
plugins: ['docusaurus-plugin-sass'],
themes: [
[
require.resolve('@easyops-cn/docusaurus-search-local'),
{
hashed: true,
language: ['en', 'zh'],
docsRouteBasePath: '/',
},
],
],
themeConfig,
markdown: {
mdx1Compat: {
admonitions: false,
comments: false,
headingIds: false,
},
},
}