waveterm/docs/docusaurus.config.ts
Evan Simkowitz 4a330a4842
Fix copyfiles step so storybook serves correctly (#1299)
confirmed this still works on Windows
2024-11-15 13:19:20 -08:00

181 lines
6.2 KiB
TypeScript

import type { Config } from "@docusaurus/types";
import { docOgRenderer } from "./src/renderer/image-renderers";
const baseUrl = process.env.EMBEDDED ? "/docsite/" : "/";
const config: Config = {
title: "Wave Terminal Documentation",
tagline: "Level Up Your Terminal With Graphical Widgets",
favicon: "img/logo/wave-logo_appicon.svg",
// Set the production url of your site here
url: "https://docs.waveterm.dev/",
// Set the /<baseUrl>/ pathname under which your site is served
// For GitHub pages deployment, it is often '/<projectName>/'
baseUrl,
// GitHub pages deployment config.
// If you aren't using GitHub pages, you don't need these.
organizationName: "wavetermdev", // Usually your GitHub org/user name.
projectName: "waveterm-docs", // Usually your repo name.
deploymentBranch: "main",
onBrokenLinks: "throw",
onBrokenMarkdownLinks: "warn",
trailingSlash: false,
// Even if you don't use internationalization, you can use this field to set
// useful metadata like html lang. For example, if your site is Chinese, you
// may want to replace "en" with "zh-Hans".
i18n: {
defaultLocale: "en",
locales: ["en"],
},
plugins: [
[
"content-docs",
{
path: "docs",
routeBasePath: "/",
exclude: ["features/**"],
editUrl: !process.env.EMBEDDED ? "https://github.com/wavetermdev/waveterm/edit/main/docs/" : undefined,
} as import("@docusaurus/plugin-content-docs").Options,
],
"ideal-image",
[
"@docusaurus/plugin-sitemap",
{
changefreq: "daily",
filename: "sitemap.xml",
},
],
!process.env.EMBEDDED && [
"@waveterm/docusaurus-og",
{
path: "./preview-images", // relative to the build directory
imageRenderers: {
"docusaurus-plugin-content-docs": docOgRenderer,
},
},
],
].filter((v) => v),
themes: [
["classic", { customCss: "src/css/custom.css" }],
!process.env.EMBEDDED && "@docusaurus/theme-search-algolia",
].filter((v) => v),
themeConfig: {
docs: {
sidebar: {
hideable: false,
autoCollapseCategories: false,
},
},
colorMode: {
defaultMode: "light",
disableSwitch: false,
respectPrefersColorScheme: true,
},
navbar: {
logo: {
src: "img/logo/wave-light.png",
srcDark: "img/logo/wave-dark.png",
href: "https://www.waveterm.dev/",
},
hideOnScroll: true,
items: [
{
type: "doc",
position: "left",
docId: "index",
label: "Docs",
},
!process.env.EMBEDDED
? [
{
position: "left",
href: "https://docs.waveterm.dev/storybook",
label: "Storybook",
},
{
href: "https://discord.gg/zUeP2aAjaP",
position: "right",
className: "header-link-custom custom-icon-discord",
"aria-label": "Discord invite",
},
{
href: "https://github.com/wavetermdev/waveterm",
position: "right",
className: "header-link-custom custom-icon-github",
"aria-label": "GitHub repository",
},
]
: [],
].flat(),
},
metadata: [
{
name: "keywords",
content:
"terminal, developer, development, command, line, wave, linux, macos, windows, connection, ssh, cli, waveterm, documentation, docs, ai, graphical, widgets, remote, open, source, open-source, go, golang, react, typescript, javascript",
},
{
name: "og:type",
content: "website",
},
{
name: "og:site_name",
content: "Wave Terminal Documentation",
},
{
name: "application-name",
content: "Wave Terminal Documentation",
},
{
name: "apple-mobile-web-app-title",
content: "Wave Terminal Documentation",
},
],
footer: {
copyright: `Copyright © ${new Date().getFullYear()} Command Line Inc. Built with Docusaurus.`,
},
algolia: {
appId: "B6A8512SN4",
apiKey: "e879cd8663f109b2822cd004d9cd468c",
indexName: "waveterm",
},
},
headTags: [
{
tagName: "link",
attributes: {
rel: "preload",
as: "font",
type: "font/woff2",
"data-next-font": "size-adjust",
href: `${baseUrl}fontawesome/webfonts/fa-sharp-regular-400.woff2`,
},
},
{
tagName: "link",
attributes: {
rel: "sitemap",
type: "application/xml",
title: "Sitemap",
href: `${baseUrl}sitemap.xml`,
},
},
!process.env.EMBEDDED && {
tagName: "script",
attributes: {
defer: "true",
"data-domain": "docs.waveterm.dev",
src: "https://plausible.io/js/script.file-downloads.outbound-links.tagged-events.js",
},
},
].filter((v) => v),
stylesheets: [`${baseUrl}fontawesome/css/fontawesome.min.css`, `${baseUrl}fontawesome/css/sharp-regular.min.css`],
staticDirectories: ["static", "storybook"],
};
export default config;