From 361e48f86230b81a1ccffa01ae55ee6100fd4201 Mon Sep 17 00:00:00 2001 From: Zenith Rifle <84105075+eli32-vlc@users.noreply.github.com> Date: Mon, 5 Jan 2026 10:43:34 +0800 Subject: [PATCH] Added Toggle Indexes (#4544) * Add monochrome theme with grayscale filter * Add indexes toggle and disable starred * Keep filters mutually exclusive --- docs/.vitepress/markdown/toggleStarred.ts | 26 +++++++------ .../theme/components/SidebarCard.vue | 6 +++ docs/.vitepress/theme/components/Switch.vue | 7 ++++ .../theme/components/ToggleIndexes.vue | 23 +++++++++++ .../theme/components/ToggleStarred.vue | 38 ++++++++++++++++++- 5 files changed, 87 insertions(+), 13 deletions(-) create mode 100644 docs/.vitepress/theme/components/ToggleIndexes.vue diff --git a/docs/.vitepress/markdown/toggleStarred.ts b/docs/.vitepress/markdown/toggleStarred.ts index 4047de36c..567348003 100644 --- a/docs/.vitepress/markdown/toggleStarred.ts +++ b/docs/.vitepress/markdown/toggleStarred.ts @@ -17,23 +17,27 @@ import type { MarkdownRenderer } from 'vitepress' const excluded = ['Beginners Guide'] +const starredMarkers = [':star:', ':glowing-star:', '⭐', '🌟'] +const indexMarkers = ['🌐', ':globe_with_meridians:', ':globe-with-meridians:'] export function toggleStarredPlugin(md: MarkdownRenderer) { md.renderer.rules.list_item_open = (tokens, index, options, env, self) => { const contentToken = tokens[index + 2] - // Ensure the token exists - if (contentToken) { - const content = contentToken.content + if (!contentToken) return self.renderToken(tokens, index, options) - if ( - !excluded.includes(env.frontmatter.title) && - (content.includes(':star:') || content.includes(':glowing-star:')) - ) { - return `
  • ` - } - } + const content = contentToken.content + const isStarred = + !excluded.includes(env.frontmatter.title) && + starredMarkers.some((marker) => content.includes(marker)) + const isIndex = indexMarkers.some((marker) => content.includes(marker)) - return self.renderToken(tokens, index, options) + if (!isStarred && !isIndex) return self.renderToken(tokens, index, options) + + const classes = [] + if (isStarred) classes.push('starred') + if (isIndex) classes.push('index') + + return `
  • ` } } diff --git a/docs/.vitepress/theme/components/SidebarCard.vue b/docs/.vitepress/theme/components/SidebarCard.vue index 9d860772a..71121e70d 100644 --- a/docs/.vitepress/theme/components/SidebarCard.vue +++ b/docs/.vitepress/theme/components/SidebarCard.vue @@ -4,6 +4,7 @@ import ColorPicker from './ColorPicker.vue' import ThemeSelector from './ThemeSelector.vue' import InputField from './InputField.vue' import ToggleStarred from './ToggleStarred.vue' +import ToggleIndexes from './ToggleIndexes.vue' + + +
    diff --git a/docs/.vitepress/theme/components/Switch.vue b/docs/.vitepress/theme/components/Switch.vue index f72ba9620..266224013 100644 --- a/docs/.vitepress/theme/components/Switch.vue +++ b/docs/.vitepress/theme/components/Switch.vue @@ -29,6 +29,13 @@ const enabled = ref(false) .switch.enabled { background-color: var(--vp-c-brand); } + +.switch.disabled { + opacity: 0.5; + pointer-events: none; + background-color: var(--vp-c-bg-soft); + border-color: var(--vp-c-divider); +} diff --git a/docs/.vitepress/theme/components/ToggleStarred.vue b/docs/.vitepress/theme/components/ToggleStarred.vue index 9b3675d47..ae5812912 100644 --- a/docs/.vitepress/theme/components/ToggleStarred.vue +++ b/docs/.vitepress/theme/components/ToggleStarred.vue @@ -1,12 +1,46 @@