mirror of
https://github.com/fmhy/edit.git
synced 2025-10-12 15:51:07 +11:00
Halloween FMHY Theme (#4121)
* halloween thingers * halloween thingers 2 * make halloween theme the preffered theme and change FMHY name gradient * background change for halloween * again * make background change on home page too * please let this work unc * change colors on home page button * let this work unc * fix some more issues * semi-final update (hopefully) * uhhuh * fixes for other themes besides halloween * light mode fixes (PLEASE let this work) * how did i not catch this omg * light mode fixes * add Halloween logo * Update image source from test.png to hall.png * add uwu logo * Change image for uwu
This commit is contained in:
parent
707e3d3d5d
commit
f77eaf90b4
6 changed files with 293 additions and 17 deletions
|
@ -1,7 +1,28 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { colors } from '@fmhy/colors'
|
import { colors } from '@fmhy/colors'
|
||||||
import { useStorage, useStyleTag } from '@vueuse/core'
|
import { useStorage, useStyleTag } from '@vueuse/core'
|
||||||
import { watch } from 'vue'
|
import { watch, onMounted } from 'vue'
|
||||||
|
|
||||||
|
// Add Halloween colors locally
|
||||||
|
const halloweenColors = {
|
||||||
|
50: '#fff7ed',
|
||||||
|
100: '#ffedd5',
|
||||||
|
200: '#fed7aa',
|
||||||
|
300: '#fdba74',
|
||||||
|
400: '#fb923c',
|
||||||
|
500: '#FF6A00',
|
||||||
|
600: '#ea580c',
|
||||||
|
700: '#c2410c',
|
||||||
|
800: '#9a3412',
|
||||||
|
900: '#7c2d12',
|
||||||
|
950: '#431407'
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extend colors with Halloween theme
|
||||||
|
const extendedColors = {
|
||||||
|
...colors,
|
||||||
|
halloween: halloweenColors
|
||||||
|
}
|
||||||
|
|
||||||
const colorScales = [
|
const colorScales = [
|
||||||
'50',
|
'50',
|
||||||
|
@ -17,22 +38,70 @@ const colorScales = [
|
||||||
'950'
|
'950'
|
||||||
] as const
|
] as const
|
||||||
|
|
||||||
type ColorNames = keyof typeof colors
|
type ColorNames = keyof typeof extendedColors
|
||||||
const selectedColor = useStorage<ColorNames>('preferred-color', 'swarm')
|
const selectedColor = useStorage<ColorNames>('preferred-color', 'halloween')
|
||||||
|
|
||||||
const colorOptions = Object.keys(colors).filter(
|
const colorOptions = Object.keys(extendedColors).filter(
|
||||||
(key) => typeof colors[key as keyof typeof colors] === 'object'
|
(key) => typeof extendedColors[key as keyof typeof extendedColors] === 'object'
|
||||||
) as Array<ColorNames>
|
) as Array<ColorNames>
|
||||||
|
|
||||||
const { css } = useStyleTag('', { id: 'brand-color' })
|
const { css } = useStyleTag('', { id: 'brand-color' })
|
||||||
|
|
||||||
const updateThemeColor = (colorName: ColorNames) => {
|
const updateThemeColor = (colorName: ColorNames) => {
|
||||||
const colorSet = colors[colorName]
|
const colorSet = extendedColors[colorName]
|
||||||
|
|
||||||
const cssVars = colorScales
|
const cssVars = colorScales
|
||||||
.map((scale) => `--vp-c-brand-${scale}: ${colorSet[scale]};`)
|
.map((scale) => `--vp-c-brand-${scale}: ${colorSet[scale]};`)
|
||||||
.join('\n ')
|
.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 = `
|
css.value = `
|
||||||
:root {
|
:root {
|
||||||
${cssVars}
|
${cssVars}
|
||||||
|
@ -40,6 +109,7 @@ const updateThemeColor = (colorName: ColorNames) => {
|
||||||
--vp-c-brand-2: ${colorSet[600]};
|
--vp-c-brand-2: ${colorSet[600]};
|
||||||
--vp-c-brand-3: ${colorSet[800]};
|
--vp-c-brand-3: ${colorSet[800]};
|
||||||
--vp-c-brand-soft: ${colorSet[400]};
|
--vp-c-brand-soft: ${colorSet[400]};
|
||||||
|
${nonHalloweenOverride}
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark {
|
.dark {
|
||||||
|
@ -48,13 +118,39 @@ const updateThemeColor = (colorName: ColorNames) => {
|
||||||
--vp-c-brand-2: ${colorSet[500]};
|
--vp-c-brand-2: ${colorSet[500]};
|
||||||
--vp-c-brand-3: ${colorSet[700]};
|
--vp-c-brand-3: ${colorSet[700]};
|
||||||
--vp-c-brand-soft: ${colorSet[300]};
|
--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')
|
||||||
|
} else {
|
||||||
|
htmlElement.removeAttribute('data-halloween-theme')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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')
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize theme color
|
// Initialize theme color
|
||||||
updateThemeColor(selectedColor.value)
|
updateThemeColor(selectedColor.value)
|
||||||
|
|
||||||
|
// halloween stuff
|
||||||
|
onMounted(() => {
|
||||||
|
if (selectedColor.value === 'halloween') {
|
||||||
|
document.documentElement.setAttribute('data-halloween-theme', 'true')
|
||||||
|
}
|
||||||
|
// Re-apply the theme to ensure everything is initialized
|
||||||
|
updateThemeColor(selectedColor.value)
|
||||||
|
})
|
||||||
|
|
||||||
watch(selectedColor, updateThemeColor)
|
watch(selectedColor, updateThemeColor)
|
||||||
|
|
||||||
const normalizeColorName = (colorName: string) =>
|
const normalizeColorName = (colorName: string) =>
|
||||||
|
@ -75,7 +171,7 @@ const normalizeColorName = (colorName: string) =>
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="inline-block w-6 h-6 rounded-full"
|
class="inline-block w-6 h-6 rounded-full"
|
||||||
:style="{ backgroundColor: colors[color][500] }"
|
:style="{ backgroundColor: extendedColors[color][500] }"
|
||||||
/>
|
/>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -23,6 +23,19 @@
|
||||||
--vp-c-bg-elv: rgba(255, 255, 255, 0.7);
|
--vp-c-bg-elv: rgba(255, 255, 255, 0.7);
|
||||||
--vp-c-bg-mark: rgb(232, 232, 232);
|
--vp-c-bg-mark: rgb(232, 232, 232);
|
||||||
|
|
||||||
|
/* Colors: Halloween Theme */
|
||||||
|
--halloween-50: #fff7ed;
|
||||||
|
--halloween-100: #ffedd5;
|
||||||
|
--halloween-200: #fed7aa;
|
||||||
|
--halloween-300: #fdba74;
|
||||||
|
--halloween-400: #fb923c;
|
||||||
|
--halloween-500: #FF6A00;
|
||||||
|
--halloween-600: #ea580c;
|
||||||
|
--halloween-700: #c2410c;
|
||||||
|
--halloween-800: #9a3412;
|
||||||
|
--halloween-900: #7c2d12;
|
||||||
|
--halloween-950: #431407;
|
||||||
|
|
||||||
/* Colors: Custom Block */
|
/* Colors: Custom Block */
|
||||||
/** Info */
|
/** Info */
|
||||||
--vp-custom-block-info-bg: theme('colors.swarm.100');
|
--vp-custom-block-info-bg: theme('colors.swarm.100');
|
||||||
|
@ -44,6 +57,63 @@
|
||||||
--vp-custom-block-danger-border: theme('colors.carnation.800');
|
--vp-custom-block-danger-border: theme('colors.carnation.800');
|
||||||
--vp-custom-block-danger-text: theme('colors.carnation.800');
|
--vp-custom-block-danger-text: theme('colors.carnation.800');
|
||||||
--vp-custom-block-danger-text-deep: theme('colors.carnation.900');
|
--vp-custom-block-danger-text-deep: theme('colors.carnation.900');
|
||||||
|
/** Halloween */
|
||||||
|
--vp-custom-block-halloween-bg: var(--halloween-100);
|
||||||
|
--vp-custom-block-halloween-border: var(--halloween-800);
|
||||||
|
--vp-custom-block-halloween-text: var(--halloween-800);
|
||||||
|
--vp-custom-block-halloween-text-deep: var(--halloween-900);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Apply Halloween theme by default (for light mode)*/
|
||||||
|
:root {
|
||||||
|
--vp-c-bg: #fef3e8 !important;
|
||||||
|
--vp-c-bg-alt: #fef0e7 !important;
|
||||||
|
--vp-c-bg-elv: rgba(254, 240, 231, 0.8) !important;
|
||||||
|
--vp-c-bg-soft: #fef0e7 !important;
|
||||||
|
--vp-button-alt-bg: #a855f7 !important;
|
||||||
|
--vp-button-alt-text: #fff !important;
|
||||||
|
--vp-button-alt-hover-bg: #9333ea !important;
|
||||||
|
--vp-button-alt-hover-text: #fff !important;
|
||||||
|
--vp-button-brand-bg: #FF6A00 !important;
|
||||||
|
--vp-button-brand-border: #FF6A00 !important;
|
||||||
|
--vp-button-brand-text: #fff !important;
|
||||||
|
--vp-button-brand-hover-bg: #ea580c !important;
|
||||||
|
--vp-button-brand-hover-border: #ea580c !important;
|
||||||
|
--vp-button-brand-hover-text: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: #fef3e8 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.VPApp, .Layout, .VPContent, .VPHome, .VPHero, #app {
|
||||||
|
background-color: #fef3e8 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Apply Halloween theme by default - (for dark mode) */
|
||||||
|
.dark {
|
||||||
|
--vp-c-bg: rgb(15, 15, 15) !important;
|
||||||
|
--vp-c-bg-alt: rgb(12, 12, 12) !important;
|
||||||
|
--vp-c-bg-elv: rgba(12, 12, 12, 0.8) !important;
|
||||||
|
--vp-c-bg-soft: rgb(12, 12, 12) !important;
|
||||||
|
--vp-button-alt-bg: #8b5cf6 !important;
|
||||||
|
--vp-button-alt-text: #e9d5ff !important;
|
||||||
|
--vp-button-alt-hover-bg: #a855f7 !important;
|
||||||
|
--vp-button-alt-hover-text: #fff !important;
|
||||||
|
--vp-button-brand-bg: #FF6A00 !important;
|
||||||
|
--vp-button-brand-border: #FF6A00 !important;
|
||||||
|
--vp-button-brand-text: #fff !important;
|
||||||
|
--vp-button-brand-hover-bg: #ea580c !important;
|
||||||
|
--vp-button-brand-hover-border: #ea580c !important;
|
||||||
|
--vp-button-brand-hover-text: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark body {
|
||||||
|
background-color: rgb(15, 15, 15) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark .VPApp, .dark .Layout, .dark .VPContent, .dark .VPHome, .dark .VPHero, .dark #app {
|
||||||
|
background-color: rgb(15, 15, 15) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark {
|
.dark {
|
||||||
|
@ -79,6 +149,78 @@
|
||||||
--vp-custom-block-danger-border: theme('colors.carnation.800');
|
--vp-custom-block-danger-border: theme('colors.carnation.800');
|
||||||
--vp-custom-block-danger-text: theme('colors.carnation.200');
|
--vp-custom-block-danger-text: theme('colors.carnation.200');
|
||||||
--vp-custom-block-danger-text-deep: theme('colors.carnation.200');
|
--vp-custom-block-danger-text-deep: theme('colors.carnation.200');
|
||||||
|
/** Halloween */
|
||||||
|
--vp-custom-block-halloween-bg: var(--halloween-950);
|
||||||
|
--vp-custom-block-halloween-border: var(--halloween-800);
|
||||||
|
--vp-custom-block-halloween-text: var(--halloween-200);
|
||||||
|
--vp-custom-block-halloween-text-deep: var(--halloween-200);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Halloween theme overrides */
|
||||||
|
/* Halloween theme overrides - (for light mode) */
|
||||||
|
html[data-halloween-theme]:not(.dark) {
|
||||||
|
--vp-c-bg: #fef3e8 !important;
|
||||||
|
--vp-c-bg-alt: #fef0e7 !important;
|
||||||
|
--vp-c-bg-elv: rgba(254, 240, 231, 0.8) !important;
|
||||||
|
--vp-c-bg-soft: #fef0e7 !important;
|
||||||
|
--vp-button-alt-bg: #a855f7 !important;
|
||||||
|
--vp-button-alt-text: #fff !important;
|
||||||
|
--vp-button-alt-hover-bg: #9333ea !important;
|
||||||
|
--vp-button-alt-hover-text: #fff !important;
|
||||||
|
--vp-button-brand-bg: #FF6A00 !important;
|
||||||
|
--vp-button-brand-border: #FF6A00 !important;
|
||||||
|
--vp-button-brand-text: #fff !important;
|
||||||
|
--vp-button-brand-hover-bg: #ea580c !important;
|
||||||
|
--vp-button-brand-hover-border: #ea580c !important;
|
||||||
|
--vp-button-brand-hover-text: #fff !important;
|
||||||
|
|
||||||
|
background-color: #fef3e8 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html[data-halloween-theme]:not(.dark) body {
|
||||||
|
background-color: #fef3e8 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html[data-halloween-theme]:not(.dark) .VPApp,
|
||||||
|
html[data-halloween-theme]:not(.dark) .Layout,
|
||||||
|
html[data-halloween-theme]:not(.dark) .VPContent,
|
||||||
|
html[data-halloween-theme]:not(.dark) .VPHome,
|
||||||
|
html[data-halloween-theme]:not(.dark) .VPHero,
|
||||||
|
html[data-halloween-theme]:not(.dark) #app {
|
||||||
|
background-color: #fef3e8 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Halloween theme overrides - (for dark mode) */
|
||||||
|
html[data-halloween-theme].dark {
|
||||||
|
--vp-c-bg: rgb(15, 15, 15) !important;
|
||||||
|
--vp-c-bg-alt: rgb(12, 12, 12) !important;
|
||||||
|
--vp-c-bg-elv: rgba(12, 12, 12, 0.8) !important;
|
||||||
|
--vp-c-bg-soft: rgb(12, 12, 12) !important;
|
||||||
|
--vp-button-alt-bg: #8b5cf6 !important;
|
||||||
|
--vp-button-alt-text: #e9d5ff !important;
|
||||||
|
--vp-button-alt-hover-bg: #a855f7 !important;
|
||||||
|
--vp-button-alt-hover-text: #fff !important;
|
||||||
|
--vp-button-brand-bg: #FF6A00 !important;
|
||||||
|
--vp-button-brand-border: #FF6A00 !important;
|
||||||
|
--vp-button-brand-text: #fff !important;
|
||||||
|
--vp-button-brand-hover-bg: #ea580c !important;
|
||||||
|
--vp-button-brand-hover-border: #ea580c !important;
|
||||||
|
--vp-button-brand-hover-text: #fff !important;
|
||||||
|
|
||||||
|
background-color: rgb(15, 15, 15) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html[data-halloween-theme].dark body {
|
||||||
|
background-color: rgb(15, 15, 15) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html[data-halloween-theme].dark .VPApp,
|
||||||
|
html[data-halloween-theme].dark .Layout,
|
||||||
|
html[data-halloween-theme].dark .VPContent,
|
||||||
|
html[data-halloween-theme].dark .VPHome,
|
||||||
|
html[data-halloween-theme].dark .VPHero,
|
||||||
|
html[data-halloween-theme].dark #app {
|
||||||
|
background-color: rgb(15, 15, 15) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.vp-doc a {
|
.vp-doc a {
|
||||||
|
@ -140,14 +282,14 @@
|
||||||
--vp-home-hero-name-color: transparent;
|
--vp-home-hero-name-color: transparent;
|
||||||
--vp-home-hero-name-background: -webkit-linear-gradient(
|
--vp-home-hero-name-background: -webkit-linear-gradient(
|
||||||
120deg,
|
120deg,
|
||||||
#c4b5fd 30%,
|
#ff8c3a 30%,
|
||||||
#7bc5e4
|
#FF6A00
|
||||||
);
|
);
|
||||||
|
|
||||||
--vp-home-hero-image-background-image: linear-gradient(
|
--vp-home-hero-image-background-image: linear-gradient(
|
||||||
-45deg,
|
-45deg,
|
||||||
#c4b5fd 50%,
|
#ff8c3a 50%,
|
||||||
#47caff 50%
|
#ea580c 50%
|
||||||
);
|
);
|
||||||
--vp-home-hero-image-filter: blur(44px);
|
--vp-home-hero-image-filter: blur(44px);
|
||||||
}
|
}
|
||||||
|
@ -322,6 +464,19 @@
|
||||||
color: var(--vp-custom-block-danger-text-deep);
|
color: var(--vp-custom-block-danger-text-deep);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.halloween.custom-block a {
|
||||||
|
color: var(--vp-custom-block-halloween-text);
|
||||||
|
font-weight: 500;
|
||||||
|
text-decoration: underline;
|
||||||
|
text-underline-offset: 2px;
|
||||||
|
transition: opacity 0.25s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.halloween.custom-block a:hover {
|
||||||
|
opacity: 0.7;
|
||||||
|
color: var(--vp-custom-block-halloween-text-deep);
|
||||||
|
}
|
||||||
|
|
||||||
.info.custom-block {
|
.info.custom-block {
|
||||||
--icon: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWluZm8iPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIi8+PHBhdGggZD0iTTEyIDE2di00Ii8+PHBhdGggZD0iTTEyIDhoLjAxIi8+PC9zdmc+');
|
--icon: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWluZm8iPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIi8+PHBhdGggZD0iTTEyIDE2di00Ii8+PHBhdGggZD0iTTEyIDhoLjAxIi8+PC9zdmc+');
|
||||||
}
|
}
|
||||||
|
@ -342,6 +497,10 @@
|
||||||
--icon: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLXNrdWxsIj48Y2lyY2xlIGN4PSI5IiBjeT0iMTIiIHI9IjEiLz48Y2lyY2xlIGN4PSIxNSIgY3k9IjEyIiByPSIxIi8+PHBhdGggZD0iTTggMjB2Mmg4di0yIi8+PHBhdGggZD0ibTEyLjUgMTctLjUtMS0uNSAxaDF6Ii8+PHBhdGggZD0iTTE2IDIwYTIgMiAwIDAgMCAxLjU2LTMuMjUgOCA4IDAgMSAwLTExLjEyIDBBMiAyIDAgMCAwIDggMjAiLz48L3N2Zz4=');
|
--icon: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLXNrdWxsIj48Y2lyY2xlIGN4PSI5IiBjeT0iMTIiIHI9IjEiLz48Y2lyY2xlIGN4PSIxNSIgY3k9IjEyIiByPSIxIi8+PHBhdGggZD0iTTggMjB2Mmg4di0yIi8+PHBhdGggZD0ibTEyLjUgMTctLjUtMS0uNSAxaDF6Ii8+PHBhdGggZD0iTTE2IDIwYTIgMiAwIDAgMCAxLjU2LTMuMjUgOCA4IDAgMSAwLTExLjEyIDBBMiAyIDAgMCAwIDggMjAiLz48L3N2Zz4=');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.halloween.custom-block {
|
||||||
|
--icon: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0xMiAyYzMgMCA1IDIgNSA1djZjMCA0LTMgNy04IDdoLTJjLTUtMS04LTMtOC03VjdjMC0zIDItNSA1LTVoOHoiLz48Y2lyY2xlIGN4PSI5IiBjeT0iOSIgcj0iMSIvPjxjaXJjbGUgY3g9IjE1IiBjeT0iOSIgcj0iMSIvPjxwYXRoIGQ9Im0xMCAxNCAyIDJoMGwyLTIiLz48L3N2Zz4=');
|
||||||
|
}
|
||||||
|
|
||||||
.custom-block-title {
|
.custom-block-title {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
|
@ -10,7 +10,7 @@ hero:
|
||||||
title: Oct 2025 Updates 🎃
|
title: Oct 2025 Updates 🎃
|
||||||
link: /posts/oct-2025
|
link: /posts/oct-2025
|
||||||
image:
|
image:
|
||||||
src: /test.png
|
src: /hall.png
|
||||||
alt: FMHY Icon
|
alt: FMHY Icon
|
||||||
actions:
|
actions:
|
||||||
- theme: brand
|
- theme: brand
|
||||||
|
@ -169,13 +169,13 @@ onMounted(() => {
|
||||||
const setKawaii = () => {
|
const setKawaii = () => {
|
||||||
const images = document.querySelectorAll('.VPImage.image-src')
|
const images = document.querySelectorAll('.VPImage.image-src')
|
||||||
images.forEach((img) => {
|
images.forEach((img) => {
|
||||||
img.src = '/logo-uwu.svg'
|
img.src = '/uwu-hall.png'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const resetKawaii = () => {
|
const resetKawaii = () => {
|
||||||
const images = document.querySelectorAll('.VPImage.image-src')
|
const images = document.querySelectorAll('.VPImage.image-src')
|
||||||
images.forEach((img) => {
|
images.forEach((img) => {
|
||||||
img.src = '/test.png'
|
img.src = '/hall.png'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if (kawaii === 'true') {
|
if (kawaii === 'true') {
|
||||||
|
|
BIN
docs/public/hall.png
Normal file
BIN
docs/public/hall.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 81 KiB |
BIN
docs/public/uwu-hall.png
Normal file
BIN
docs/public/uwu-hall.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 334 KiB |
|
@ -25,6 +25,27 @@ import {
|
||||||
transformerDirectives
|
transformerDirectives
|
||||||
} from 'unocss'
|
} from 'unocss'
|
||||||
|
|
||||||
|
// Add Halloween colors to extend the existing colors
|
||||||
|
const halloweenColors = {
|
||||||
|
50: '#fff7ed',
|
||||||
|
100: '#ffedd5',
|
||||||
|
200: '#fed7aa',
|
||||||
|
300: '#fdba74',
|
||||||
|
400: '#fb923c',
|
||||||
|
500: '#FF6A00',
|
||||||
|
600: '#ea580c',
|
||||||
|
700: '#c2410c',
|
||||||
|
800: '#9a3412',
|
||||||
|
900: '#7c2d12',
|
||||||
|
950: '#431407'
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extend colors with Halloween theme
|
||||||
|
const extendedColors = {
|
||||||
|
...colors,
|
||||||
|
halloween: halloweenColors
|
||||||
|
}
|
||||||
|
|
||||||
const colorScales = [
|
const colorScales = [
|
||||||
'50',
|
'50',
|
||||||
'100',
|
'100',
|
||||||
|
@ -39,7 +60,7 @@ const colorScales = [
|
||||||
'950'
|
'950'
|
||||||
] as const
|
] as const
|
||||||
|
|
||||||
const colorPattern = Object.keys(colors).join('|')
|
const colorPattern = Object.keys(extendedColors).join('|')
|
||||||
const createColorRules = (type: 'text' | 'bg' | 'border'): Rule[] => {
|
const createColorRules = (type: 'text' | 'bg' | 'border'): Rule[] => {
|
||||||
const property =
|
const property =
|
||||||
type === 'text'
|
type === 'text'
|
||||||
|
@ -52,7 +73,7 @@ const createColorRules = (type: 'text' | 'bg' | 'border'): Rule[] => {
|
||||||
(scale) =>
|
(scale) =>
|
||||||
[
|
[
|
||||||
new RegExp(`^${type}-(${colorPattern})-${scale}$`),
|
new RegExp(`^${type}-(${colorPattern})-${scale}$`),
|
||||||
([, color]) => ({ [property]: colors[color][scale] })
|
([, color]) => ({ [property]: extendedColors[color][scale] })
|
||||||
] as const
|
] as const
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -63,7 +84,7 @@ export default defineConfig({
|
||||||
},
|
},
|
||||||
theme: {
|
theme: {
|
||||||
colors: {
|
colors: {
|
||||||
...colors,
|
...extendedColors,
|
||||||
primary: 'var(--vp-c-brand-1)',
|
primary: 'var(--vp-c-brand-1)',
|
||||||
bg: 'var(--vp-c-bg)',
|
bg: 'var(--vp-c-bg)',
|
||||||
'bg-alt': 'var(--vp-c-bg-alt)',
|
'bg-alt': 'var(--vp-c-bg-alt)',
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue