2026-03-26 14:17:10 +00:00

166 lines
6.4 KiB
TypeScript

import { withMermaid } from "vitepress-plugin-mermaid";
function customPathResolver(href: string, currentPath: string) {
const [link, fragment] = href.split("#", 2);
if (currentPath === "index.md") {
if (link.startsWith("./docs/")) {
return `../docs/${href.slice(7)}`;
} else if (link.startsWith("docs/")) {
return `../${href}`;
}
}
switch (link) {
case "../packages/shared-components/README.md":
return `../docs/readme-shared-components.md#${fragment}`;
case "../apps/web/README.md":
return `../docs/readme-element-web.md#${fragment}`;
case "../README.md":
return `../docs/index.md#${fragment}`;
default:
return `https://github.com/element-hq/element-web/blob/develop/${href.split("/").pop()}`;
}
}
// https://vitepress.dev/reference/site-config
export default withMermaid({
title: "Element Web & Desktop docs",
description: "Documentation",
srcExclude: ["changelogs"],
markdown: {
config: (md) => {
// Custom rule to fix links
const defaultRender =
md.renderer.rules.link_open ||
function (tokens, idx, options, env, self) {
return self.renderToken(tokens, idx, options);
};
md.renderer.rules.link_open = (tokens, idx, options, env, self) => {
const token = tokens[idx];
const hrefIndex = token.attrIndex("href");
if (hrefIndex >= 0) {
const href = token.attrs![hrefIndex][1];
if (!href.includes("://") && href.split("#", 2)[0].endsWith(".md")) {
token.attrs![hrefIndex][1] = customPathResolver(href, env.relativePath);
}
}
return defaultRender(tokens, idx, options, env, self);
};
},
},
themeConfig: {
nav: [
{ text: "Home", link: "/" },
{ text: "Website", link: "https://element.io/en" },
],
search: {
provider: "local",
},
sidebar: [
{
text: "README",
items: [
{ text: "Introduction", link: "/index" },
{ text: "Element Web", link: "/readme-element-web" },
{ text: "Element Desktop", link: "/readme-element-desktop" },
{ text: "Shared Components", link: "/readme-shared-components" },
],
},
{
text: "Usage",
items: [
{ text: "Betas", link: "/betas" },
{ text: "Labs", link: "/labs" },
],
},
{
text: "Setup",
items: [
{ text: "Install", link: "/install" },
{ text: "Config", link: "/config" },
{ text: "Custom home page", link: "/custom-home" },
{ text: "Kubernetes", link: "/kubernetes" },
{ text: "Jitsi", link: "/jitsi" },
{ text: "Encryption", link: "/e2ee" },
],
},
{
text: "Build",
items: [
{
text: "Web",
items: [
{ text: "Customisations", link: "/customisations" },
{ text: "Deprecated Modules", link: "/deprecated-modules" },
],
},
{
text: "Desktop",
items: [
{ text: "Native Node modules", link: "/native-node-modules" },
{ text: "Windows requirements", link: "/windows-requirements" },
{ text: "Debugging", link: "/debugging" },
{ text: "Using gdb", link: "/gdb" },
],
},
],
},
{
text: "Distribution",
items: [
{ text: "Updates", link: "/updates" },
{ text: "Packaging", link: "/packaging" },
],
},
{
text: "Contribution",
items: [
{ text: "Choosing an issue", link: "/choosing-an-issue" },
{ text: "Translation", link: "/translating" },
{ text: "Netlify builds", link: "/pr-previews" },
{ text: "Code review", link: "/review" },
],
},
{
text: "Development",
items: [
{ text: "App load order", link: "/app-load.md" },
{ text: "Translation", link: "/translating-dev.md" },
{ text: "Theming", link: "/theming.md" },
{ text: "Playwright end to end tests", link: "/playwright.md" },
{ text: "Memory profiling", link: "/memory-profiles-and-leaks.md" },
{ text: "Jitsi", link: "/jitsi-dev.md" },
{ text: "Feature flags", link: "/feature-flags.md" },
{ text: "OIDC and delegated authentication", link: "/oidc.md" },
{ text: "Release Process", link: "/release.md" },
{ text: "MVVM", link: "/MVVM.md" },
{ text: "Settings", link: "/settings.md" },
],
},
{
text: "Deep dive",
items: [
{ text: "Skinning", link: "/skinning" },
{ text: "Cider editor", link: "/ciderEditor" },
{ text: "Iconography", link: "/icons" },
{ text: "Local echo", link: "/local-echo-dev" },
{ text: "Media", link: "/media-handling" },
{ text: "Room List Store", link: "/room-list-store" },
{ text: "Scrolling", link: "/scrolling" },
{ text: "Usercontent", link: "/usercontent" },
{ text: "Widget layouts", link: "/widget-layouts" },
{ text: "Automations", link: "/generated/automations" },
],
},
],
socialLinks: [{ icon: "github", link: "https://github.com/element-hq/element-web" }],
},
});