diff --git a/docs/.vitepress/theme/components/ColorPicker.vue b/docs/.vitepress/theme/components/ColorPicker.vue
index 915924de2..e4be89abf 100644
--- a/docs/.vitepress/theme/components/ColorPicker.vue
+++ b/docs/.vitepress/theme/components/ColorPicker.vue
@@ -3,7 +3,7 @@ import { colors } from '@fmhy/colors'
import { useStorage, useStyleTag } from '@vueuse/core'
import { watch, onMounted } from 'vue'
-// Add Halloween colors locally
+// Add Halloween colors
const halloweenColors = {
50: '#fff7ed',
100: '#ffedd5',
@@ -18,7 +18,7 @@ const halloweenColors = {
950: '#431407'
}
-// Extend colors with Halloween theme
+// hall extend or something
const extendedColors = {
...colors,
halloween: halloweenColors
@@ -54,89 +54,97 @@ const updateThemeColor = (colorName: ColorNames) => {
.map((scale) => `--vp-c-brand-${scale}: ${colorSet[scale]};`)
.join('\n ')
- // if user isnt using halloween theme switch it
- const nonHalloweenOverride = colorName !== 'halloween' ? `
- --vp-c-bg: #ffffff !important;
- --vp-c-bg-alt: #f9f9f9 !important;
- --vp-c-bg-elv: rgba(255, 255, 255, 0.7) !important;
- --vp-button-alt-bg: #484848 !important;
- --vp-button-alt-text: #f0eeee !important;
- --vp-button-alt-hover-bg: #484848 !important;
- --vp-button-alt-hover-text: #f0eeee !important;
- --vp-button-brand-bg: var(--vp-c-brand-1) !important;
- --vp-button-brand-border: var(--vp-c-brand-soft) !important;
- --vp-button-brand-text: rgba(42, 40, 47) !important;
- --vp-button-brand-hover-bg: var(--vp-c-brand-soft) !important;
- --vp-button-brand-hover-border: var(--vp-c-brand-soft) !important;
- --vp-button-brand-hover-text: rgba(42, 40, 47) !important;
- ` : ''
-
- const nonHalloweenDarkOverride = colorName !== 'halloween' ? `
- --vp-c-bg: rgb(26, 26, 26) !important;
- --vp-c-bg-alt: rgb(23, 23, 23) !important;
- --vp-c-bg-elv: rgba(23, 23, 23, 0.8) !important;
- --vp-button-alt-bg: #484848 !important;
- --vp-button-alt-text: #f0eeee !important;
- --vp-button-alt-hover-bg: #484848 !important;
- --vp-button-alt-hover-text: #f0eeee !important;
- --vp-button-brand-bg: var(--vp-c-brand-1) !important;
- --vp-button-brand-border: var(--vp-c-brand-soft) !important;
- --vp-button-brand-text: rgba(42, 40, 47) !important;
- --vp-button-brand-hover-bg: var(--vp-c-brand-soft) !important;
- --vp-button-brand-hover-border: var(--vp-c-brand-soft) !important;
- --vp-button-brand-hover-text: rgba(42, 40, 47) !important;
- ` : ''
-
- const nonHalloweenBodyOverride = colorName !== 'halloween' ? `
- body {
- background-color: #ffffff !important;
- }
- .VPApp, .Layout, .VPContent, .VPHome, .VPHero, #app {
- background-color: #ffffff !important;
- }
- .dark body {
- background-color: rgb(26, 26, 26) !important;
- }
- .dark .VPApp, .dark .Layout, .dark .VPContent, .dark .VPHome, .dark .VPHero, .dark #app {
- background-color: rgb(26, 26, 26) !important;
- }
- ` : ''
-
- css.value = `
- :root {
- ${cssVars}
- --vp-c-brand-1: ${colorSet[500]};
- --vp-c-brand-2: ${colorSet[600]};
- --vp-c-brand-3: ${colorSet[800]};
- --vp-c-brand-soft: ${colorSet[400]};
- ${nonHalloweenOverride}
- }
-
- .dark {
- ${cssVars}
- --vp-c-brand-1: ${colorSet[400]};
- --vp-c-brand-2: ${colorSet[500]};
- --vp-c-brand-3: ${colorSet[700]};
- --vp-c-brand-soft: ${colorSet[300]};
- ${nonHalloweenDarkOverride}
- }
-
- ${nonHalloweenBodyOverride}
- `
-
- // Add/remove Halloween theme indicator
const htmlElement = document.documentElement
+
if (colorName === 'halloween') {
- htmlElement.setAttribute('data-halloween-theme', 'true')
+ // Apply Halloween theme
+ htmlElement.classList.add('theme-halloween')
+
+ css.value = `
+ :root {
+ ${cssVars}
+ --vp-c-brand-1: ${colorSet[500]};
+ --vp-c-brand-2: ${colorSet[600]};
+ --vp-c-brand-3: ${colorSet[800]};
+ --vp-c-brand-soft: ${colorSet[400]};
+ }
+
+ .dark {
+ ${cssVars}
+ --vp-c-brand-1: ${colorSet[400]};
+ --vp-c-brand-2: ${colorSet[500]};
+ --vp-c-brand-3: ${colorSet[700]};
+ --vp-c-brand-soft: ${colorSet[300]};
+ }
+ `
} else {
- htmlElement.removeAttribute('data-halloween-theme')
+ // Remove Halloween theme and apply other theme with normal backgrounds
+ htmlElement.classList.remove('theme-halloween')
+
+ css.value = `
+ :root {
+ ${cssVars}
+ --vp-c-brand-1: ${colorSet[500]};
+ --vp-c-brand-2: ${colorSet[600]};
+ --vp-c-brand-3: ${colorSet[800]};
+ --vp-c-brand-soft: ${colorSet[400]};
+ --vp-c-bg: #ffffff !important;
+ --vp-c-bg-alt: #f9f9f9 !important;
+ --vp-c-bg-elv: rgba(255, 255, 255, 0.7) !important;
+ --vp-c-bg-soft: #f9f9f9 !important;
+ }
+
+ .dark {
+ ${cssVars}
+ --vp-c-brand-1: ${colorSet[400]};
+ --vp-c-brand-2: ${colorSet[500]};
+ --vp-c-brand-3: ${colorSet[700]};
+ --vp-c-brand-soft: ${colorSet[300]};
+ --vp-c-bg: rgb(26, 26, 26) !important;
+ --vp-c-bg-alt: rgb(23, 23, 23) !important;
+ --vp-c-bg-elv: rgba(23, 23, 23, 0.8) !important;
+ --vp-c-bg-soft: rgb(23, 23, 23) !important;
+ }
+
+ html, body {
+ background-color: #ffffff !important;
+ }
+
+ .VPApp, .Layout, .VPContent, .VPHome, .VPHero, #app, .vp-doc {
+ background-color: #ffffff !important;
+ }
+
+ .VPHome {
+ background-color: #ffffff !important;
+ }
+
+ .VPHome .VPHero {
+ background-color: #ffffff !important;
+ }
+
+ .dark html, .dark body {
+ background-color: rgb(26, 26, 26) !important;
+ }
+
+ .dark .VPApp, .dark .Layout, .dark .VPContent, .dark .VPHome, .dark .VPHero, .dark #app, .dark .vp-doc {
+ background-color: rgb(26, 26, 26) !important;
+ }
+
+ .dark .VPHome {
+ background-color: rgb(26, 26, 26) !important;
+ }
+
+ .dark .VPHome .VPHero {
+ background-color: rgb(26, 26, 26) !important;
+ }
+ `
}
}
// Set Halloween theme ASAP if its the pref
const storedTheme = localStorage.getItem('preferred-color')
if (!storedTheme || storedTheme === '"halloween"') {
- document.documentElement.setAttribute('data-halloween-theme', 'true')
+ document.documentElement.classList.add('theme-halloween')
}
// Initialize theme color
@@ -145,7 +153,7 @@ updateThemeColor(selectedColor.value)
// halloween stuff
onMounted(() => {
if (selectedColor.value === 'halloween') {
- document.documentElement.setAttribute('data-halloween-theme', 'true')
+ document.documentElement.classList.add('theme-halloween')
}
// Re-apply the theme to ensure everything is initialized
updateThemeColor(selectedColor.value)
@@ -170,6 +178,13 @@ const normalizeColorName = (colorName: string) =>
:title="normalizeColorName(color)"
>
+ 🎃
+
+