From 781e2b96a64fc26d037bd9c3521739d3c4ec0a3e Mon Sep 17 00:00:00 2001 From: Srinivas Pendem Date: Thu, 23 Apr 2026 16:07:31 +0530 Subject: [PATCH 1/8] Updating theme --- .vscode/settings.json | 5 + docs/.vitepress/config.ts | 9 +- docs/.vitepress/theme/Layout.vue | 16 + docs/.vitepress/theme/components/Card.vue | 27 +- .../.vitepress/theme/components/CardGroup.vue | 17 +- docs/.vitepress/theme/index.ts | 72 +++- docs/.vitepress/theme/style.css | 310 ++++++++++++---- docs/.vitepress/types/modules.d.ts | 10 + docs/index.md | 121 +++--- package.json | 2 + pnpm-lock.yaml | 350 +++++++++++++++++- tsconfig.json | 5 +- 12 files changed, 769 insertions(+), 175 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 docs/.vitepress/theme/Layout.vue create mode 100644 docs/.vitepress/types/modules.d.ts diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..1540bfb2 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "css.lint.unknownAtRules": "ignore", + "scss.lint.unknownAtRules": "ignore", + "less.lint.unknownAtRules": "ignore" +} diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index bc6340d4..97450bfa 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -1,6 +1,7 @@ import { copyFileSync, mkdirSync, readFileSync, readdirSync, statSync } from "fs"; import { dirname, join, relative, resolve } from "path"; import { defineConfig, type HeadConfig } from "vitepress"; +import { extendConfig } from "@voidzero-dev/vitepress-theme/config"; import { tabsMarkdownPlugin } from "vitepress-plugin-tabs"; function loadEnvVar(key: string): string | undefined { @@ -45,7 +46,7 @@ const searchConfig = } : { provider: "local" as const }; -export default defineConfig({ +const config = defineConfig({ title: "Plane", description: "Modern project management software", cleanUrls: true, @@ -195,11 +196,12 @@ export default defineConfig({ ], themeConfig: { + variant: "voidzero", logo: { light: "https://media.docs.plane.so/logo/new-logo-white.png", dark: "https://media.docs.plane.so/logo/new-logo-dark.png", }, - siteTitle: "", + siteTitle: "Plane", outline: { level: [2, 3], @@ -224,6 +226,7 @@ export default defineConfig({ { text: "Sign in", link: "https://app.plane.so/sign-in", + noIcon: true, }, ], @@ -682,3 +685,5 @@ export default defineConfig({ }, }, }); + +export default extendConfig(config); diff --git a/docs/.vitepress/theme/Layout.vue b/docs/.vitepress/theme/Layout.vue new file mode 100644 index 00000000..b34b700f --- /dev/null +++ b/docs/.vitepress/theme/Layout.vue @@ -0,0 +1,16 @@ + + + diff --git a/docs/.vitepress/theme/components/Card.vue b/docs/.vitepress/theme/components/Card.vue index 6aa23298..726e2919 100644 --- a/docs/.vitepress/theme/components/Card.vue +++ b/docs/.vitepress/theme/components/Card.vue @@ -5,9 +5,18 @@ import * as LucideIcons from "lucide-vue-next"; const props = defineProps({ title: String, icon: String, + /** Doc path or full URL */ href: String, + /** Alias for `href` (common in markdown) */ + link: String, + /** When set, used instead of the default slot for body text */ + description: String, + /** Bottom link label (shown with →). Home feature cards only. */ + cta: String, }); +const resolvedHref = computed(() => props.link || props.href || "#"); + // Custom SVG icons for brands const customSvgIcons = { asana: ``, @@ -44,18 +53,24 @@ const IconComponent = computed(() => { diff --git a/docs/.vitepress/theme/components/CardGroup.vue b/docs/.vitepress/theme/components/CardGroup.vue index 260208e4..335095f6 100644 --- a/docs/.vitepress/theme/components/CardGroup.vue +++ b/docs/.vitepress/theme/components/CardGroup.vue @@ -1,19 +1,28 @@