feat(docs): implement parallax for cover and home page (#313)
--------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
gemini-code-assist[bot]
parent
6f5124b6d9
commit
935c0c5169
Binary file not shown.
|
Before Width: | Height: | Size: 282 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.3 MiB |
@@ -1,13 +1,75 @@
|
||||
<script setup lang="ts">
|
||||
import type { AnimatableObject } from 'animejs'
|
||||
|
||||
import { useLocalStorage } from '@vueuse/core'
|
||||
import { createAnimatable } from 'animejs'
|
||||
import { onMounted, shallowRef, useTemplateRef, watch, watchEffect } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
import homeCover from '../assets/home-cover-2025-07-15.avif'
|
||||
import ParallaxCover from './ParallaxCover.vue'
|
||||
|
||||
const heroRef = useTemplateRef<HTMLDivElement>('hero')
|
||||
|
||||
const shouldReduceMotion = useLocalStorage('docs:settings/reduce-motion', false)
|
||||
const { t } = useI18n()
|
||||
|
||||
function handleClickTryLive() {
|
||||
window.location.replace('https://airi.moeru.ai/')
|
||||
}
|
||||
|
||||
const DURATION = 1200
|
||||
const EASE = 'outSine'
|
||||
|
||||
const heroAnimatable = shallowRef<AnimatableObject>()
|
||||
|
||||
function animateHero(xOffsetRatio: number, yOffsetRatio: number) {
|
||||
const referenceSize = window.innerWidth
|
||||
|
||||
heroAnimatable.value?.x(-xOffsetRatio * 0.03 * referenceSize)
|
||||
heroAnimatable.value?.y(-yOffsetRatio * 0.03 * referenceSize)
|
||||
heroAnimatable.value?.z(0)
|
||||
}
|
||||
|
||||
function onMouseMove(event: MouseEvent) {
|
||||
const x = event.clientX
|
||||
const y = event.clientY
|
||||
|
||||
const xOffsetRatio = (x - window.innerWidth / 2) / window.innerWidth
|
||||
const yOffsetRatio = (y - window.innerHeight / 2) / window.innerHeight
|
||||
|
||||
animateHero(xOffsetRatio, yOffsetRatio)
|
||||
}
|
||||
|
||||
watch(shouldReduceMotion, (shouldReduceMotion) => {
|
||||
if (shouldReduceMotion) {
|
||||
window.removeEventListener('mousemove', onMouseMove)
|
||||
animateHero(0, 0)
|
||||
}
|
||||
else {
|
||||
window.addEventListener('mousemove', onMouseMove)
|
||||
}
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
heroAnimatable.value = createAnimatable(heroRef.value!, {
|
||||
x: DURATION,
|
||||
y: DURATION,
|
||||
z: 0,
|
||||
ease: EASE,
|
||||
})
|
||||
})
|
||||
|
||||
watchEffect((onCleanup) => {
|
||||
if (shouldReduceMotion.value) {
|
||||
animateHero(0, 0)
|
||||
}
|
||||
else {
|
||||
window.addEventListener('mousemove', onMouseMove)
|
||||
onCleanup(() => {
|
||||
window.removeEventListener('mousemove', onMouseMove)
|
||||
})
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -15,67 +77,61 @@ function handleClickTryLive() {
|
||||
<div relative h-full w-full flex flex-1 flex-col>
|
||||
<section class="mx-auto h-full max-w-[1440px] w-full flex flex-1 flex-col">
|
||||
<div class="z-10 h-full w-full flex flex-1 flex-col items-center justify-start gap-4 overflow-hidden px-16 pb-16 pt-20 md:pt-36">
|
||||
<div class="font-sans-rounded relative w-full justify-center text-center font-extrabold" text="4xl md:5xl">
|
||||
<div>
|
||||
Project AIRI
|
||||
<div ref="hero" flex="~ col items-center gap-4 justify-start">
|
||||
<div class="font-sans-rounded relative w-full justify-center text-center font-extrabold" text="4xl md:5xl">
|
||||
<div>
|
||||
Project AIRI
|
||||
</div>
|
||||
</div>
|
||||
<div class="relative max-w-prose text-center text-slate-900 dark:text-white">
|
||||
{{ t('docs.theme.home.subtitle') }}
|
||||
</div>
|
||||
<div class="relative z-10 w-full flex justify-center gap-4">
|
||||
<a
|
||||
:class="[
|
||||
'rounded-xl px-3 py-2 lg:px-5 lg:py-3 font-extrabold outline-none backdrop-blur-md active:scale-95 focus:outline-none text-nowrap text-sm md:text-base',
|
||||
'text-slate-700 dark:text-cyan-200',
|
||||
]"
|
||||
bg="primary/20 dark:primary/30 dark:hover:primary/40"
|
||||
transition="colors,transform duration-200 ease-in-out"
|
||||
cursor-pointer
|
||||
@click="() => handleClickTryLive()"
|
||||
>
|
||||
{{ t('docs.theme.home.try-live.title') }}
|
||||
</a>
|
||||
<a
|
||||
href="https://github.com/moeru-ai/airi/releases/latest"
|
||||
:class="[
|
||||
'rounded-xl px-3 py-2 lg:px-5 lg:py-3 font-extrabold outline-none backdrop-blur-md active:scale-95 focus:outline-none text-nowrap text-sm md:text-base',
|
||||
'text-slate-700 dark:text-slate-100',
|
||||
]"
|
||||
bg="black/4 dark:white/20 dark:hover:white/30"
|
||||
cursor-pointer
|
||||
transition="colors,transform duration-200 ease-in-out"
|
||||
>
|
||||
{{ t('docs.theme.home.download.title') }}
|
||||
</a>
|
||||
<a
|
||||
href="./docs/overview/"
|
||||
:class="[
|
||||
'rounded-xl px-3 py-2 lg:px-5 lg:py-3 font-extrabold outline-none backdrop-blur-md active:scale-95 focus:outline-none text-nowrap text-sm md:text-base',
|
||||
'text-slate-700 dark:text-slate-100',
|
||||
]"
|
||||
bg="black/4 dark:white/20 dark:hover:white/30"
|
||||
transition="colors,transform duration-200 ease-in-out"
|
||||
cursor-pointer
|
||||
>
|
||||
{{ t('docs.theme.home.get-started.title') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="relative max-w-prose text-center text-slate-900 dark:text-white">
|
||||
{{ t('docs.theme.home.subtitle') }}
|
||||
</div>
|
||||
<div class="relative z-10 w-full flex justify-center gap-4">
|
||||
<a
|
||||
:class="[
|
||||
'rounded-xl px-3 py-2 lg:px-5 lg:py-3 font-extrabold outline-none backdrop-blur-md active:scale-95 focus:outline-none text-nowrap text-sm md:text-base',
|
||||
'text-slate-700 dark:text-cyan-200',
|
||||
]"
|
||||
bg="primary/20 dark:primary/30 dark:hover:primary/40"
|
||||
transition="colors,transform duration-200 ease-in-out"
|
||||
@click="() => handleClickTryLive()"
|
||||
>
|
||||
{{ t('docs.theme.home.try-live.title') }}
|
||||
</a>
|
||||
<a
|
||||
href="https://github.com/moeru-ai/airi/releases/latest"
|
||||
:class="[
|
||||
'rounded-xl px-3 py-2 lg:px-5 lg:py-3 font-extrabold outline-none backdrop-blur-md active:scale-95 focus:outline-none text-nowrap text-sm md:text-base',
|
||||
'text-slate-700 dark:text-slate-100',
|
||||
]"
|
||||
bg="black/4 dark:white/20 dark:hover:white/30"
|
||||
transition="colors,transform duration-200 ease-in-out"
|
||||
>
|
||||
{{ t('docs.theme.home.download.title') }}
|
||||
</a>
|
||||
<a
|
||||
href="./docs/overview/"
|
||||
:class="[
|
||||
'rounded-xl px-3 py-2 lg:px-5 lg:py-3 font-extrabold outline-none backdrop-blur-md active:scale-95 focus:outline-none text-nowrap text-sm md:text-base',
|
||||
'text-slate-700 dark:text-slate-100',
|
||||
]"
|
||||
bg="black/4 dark:white/20 dark:hover:white/30"
|
||||
transition="colors,transform duration-200 ease-in-out"
|
||||
>
|
||||
{{ t('docs.theme.home.get-started.title') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="absolute inset-0 overflow-hidden -z-10">
|
||||
<!-- Flickering red (even within the color space range) if to top in oklch (UnoCSS or tailwind css default), have to force to use srgb color space to prevent this -->
|
||||
<div class="absolute bottom-0 left-0 right-0 top-10 z-2 h-full from-transparent to-white bg-gradient-to-t dark:to-[hsl(207_15%_5%)]" style="--un-gradient-shape: to top in srgb;" />
|
||||
<img
|
||||
:src="homeCover"
|
||||
alt="Project AIRI Cover Image"
|
||||
:class="[
|
||||
'absolute left-1/2 -translate-x-1/2 max-w-none object-cover z-1',
|
||||
'w-[160%] translate-y-[25%] -rotate-20 top-8rem',
|
||||
'md:w-[120%] md:translate-y-[20%] md:rotate-[-15deg] md:top-8dvh',
|
||||
'lg:w-[95%] lg:translate-y-[5%] lg:rotate-[-10deg] lg:top-32dvh',
|
||||
'xl:top-18dvh',
|
||||
'2xl:top-16dvh',
|
||||
]"
|
||||
>
|
||||
<div class="absolute bottom-0 left-0 right-0 top-0 z-2 h-80% from-transparent to-white bg-gradient-to-t dark:to-[hsl(207_15%_5%)]" style="--un-gradient-shape: to top in srgb;" />
|
||||
<ParallaxCover />
|
||||
</div>
|
||||
|
||||
<footer class="fixed bottom-3 left-1/2 z-40 flex justify-end -translate-x-1/2">
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
<script setup lang="ts">
|
||||
import { Icon } from '@iconify/vue'
|
||||
import { useLocalStorage } from '@vueuse/core'
|
||||
import { SwitchRoot, SwitchThumb } from 'reka-ui'
|
||||
import { ref, watchPostEffect } from 'vue'
|
||||
|
||||
const shouldReduceMotion = useLocalStorage('docs:settings/reduce-motion', false)
|
||||
|
||||
const switchTitle = ref('')
|
||||
|
||||
watchPostEffect(() => {
|
||||
switchTitle.value = shouldReduceMotion.value
|
||||
? 'Enable motion'
|
||||
: 'Reduce motion'
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<SwitchRoot
|
||||
id="motion-toggle"
|
||||
v-model="shouldReduceMotion"
|
||||
class="bg-muted border-muted-foreground/10 relative h-6 w-11 flex flex-shrink-0 border rounded-full"
|
||||
:aria-label="switchTitle"
|
||||
>
|
||||
<SwitchThumb
|
||||
class="text-muted-foreground bg-background border-muted my-auto h-5 w-5 flex translate-x-0.5 items-center justify-center border rounded-full text-xs will-change-transform data-[state=checked]:translate-x-5 !transition-transform"
|
||||
>
|
||||
<Icon v-if="shouldReduceMotion" icon="lucide:square-dashed-mouse-pointer" />
|
||||
<Icon v-else icon="lucide:square-mouse-pointer" />
|
||||
</SwitchThumb>
|
||||
</SwitchRoot>
|
||||
</template>
|
||||
@@ -7,6 +7,7 @@ import { ref, toRefs, watch } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
import DropdownMenu from './DropdownMenu.vue'
|
||||
import MotionToggle from './MotionToggle.vue'
|
||||
import NavbarLanguage from './NavbarLanguage.vue'
|
||||
import NavbarLanguageSubMenu from './NavbarLanguageSubMenu.vue'
|
||||
import ThemeToggle from './ThemeToggle.vue'
|
||||
@@ -61,7 +62,10 @@ function isNavLinkActive(link: string, path: string) {
|
||||
|
||||
<NavbarLanguage />
|
||||
|
||||
<ThemeToggle />
|
||||
<div flex="~ row items-center justify-between gap-3">
|
||||
<MotionToggle />
|
||||
<ThemeToggle />
|
||||
</div>
|
||||
|
||||
<Separator
|
||||
class="bg-muted mx-4 h-4 w-px"
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
<script setup lang="ts">
|
||||
import type { AnimatableObject } from 'animejs'
|
||||
|
||||
import { useLocalStorage } from '@vueuse/core'
|
||||
import { createAnimatable } from 'animejs'
|
||||
import { onMounted, shallowRef, useTemplateRef, watchEffect } from 'vue'
|
||||
|
||||
import homeCover from '../assets/home-cover-2025-07-23.avif'
|
||||
|
||||
const surfaceRef = useTemplateRef<HTMLImageElement>('surface')
|
||||
const silhouettePinkRef = useTemplateRef<HTMLDivElement>('silhouettePink')
|
||||
const silhouettePurpleRef = useTemplateRef<HTMLDivElement>('silhouettePurple')
|
||||
|
||||
const shouldReduceMotion = useLocalStorage('docs:settings/reduce-motion', false)
|
||||
|
||||
const DURATION = 1200
|
||||
const EASE = 'outSine'
|
||||
|
||||
const surfaceAnimatable = shallowRef<AnimatableObject>()
|
||||
const silhouettePinkAnimatable = shallowRef<AnimatableObject>()
|
||||
const silhouettePurpleAnimatable = shallowRef<AnimatableObject>()
|
||||
|
||||
function animateCover(xOffsetRatio: number, yOffsetRatio: number) {
|
||||
const referenceWidth = window.innerWidth
|
||||
|
||||
surfaceAnimatable.value?.x(-xOffsetRatio * 0.02 * referenceWidth)
|
||||
surfaceAnimatable.value?.y(-yOffsetRatio * 0.02 * referenceWidth)
|
||||
surfaceAnimatable.value?.z(0)
|
||||
|
||||
silhouettePinkAnimatable.value?.x(0.01 * referenceWidth - yOffsetRatio * 0.015 * referenceWidth)
|
||||
silhouettePinkAnimatable.value?.y(0.02 * referenceWidth + xOffsetRatio * 0.015 * referenceWidth)
|
||||
silhouettePinkAnimatable.value?.z(0)
|
||||
|
||||
silhouettePurpleAnimatable.value?.x(0.01 * referenceWidth + yOffsetRatio * 0.01 * referenceWidth)
|
||||
silhouettePurpleAnimatable.value?.y(-0.01 * referenceWidth - yOffsetRatio * 0.01 * referenceWidth)
|
||||
silhouettePurpleAnimatable.value?.z(0)
|
||||
}
|
||||
|
||||
function onMouseMove(event: MouseEvent) {
|
||||
const x = event.clientX
|
||||
const y = event.clientY
|
||||
|
||||
const xOffsetRatio = (x - window.innerWidth / 2) / window.innerWidth
|
||||
const yOffsetRatio = (y - window.innerHeight / 2) / window.innerHeight
|
||||
|
||||
animateCover(xOffsetRatio, yOffsetRatio)
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
const animatableConfig = {
|
||||
x: DURATION,
|
||||
y: DURATION,
|
||||
z: 0,
|
||||
ease: EASE,
|
||||
}
|
||||
|
||||
surfaceAnimatable.value = createAnimatable(surfaceRef.value!, animatableConfig)
|
||||
silhouettePinkAnimatable.value = createAnimatable(silhouettePinkRef.value!, animatableConfig)
|
||||
silhouettePurpleAnimatable.value = createAnimatable(silhouettePurpleRef.value!, animatableConfig)
|
||||
})
|
||||
|
||||
watchEffect((onCleanup) => {
|
||||
if (shouldReduceMotion.value) {
|
||||
animateCover(0, 0)
|
||||
}
|
||||
else {
|
||||
window.addEventListener('mousemove', onMouseMove)
|
||||
onCleanup(() => {
|
||||
window.removeEventListener('mousemove', onMouseMove)
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
const maskImageURL = `url(${homeCover})`
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
:class="[
|
||||
'relative left-1/2 -translate-x-1/2 max-w-none object-cover z-1',
|
||||
'w-[160%] translate-y-[25%] -rotate-20 top-8rem',
|
||||
'md:w-[120%] md:translate-y-[20%] md:rotate-[-15deg] md:top-8dvh',
|
||||
'lg:w-[95%] lg:translate-y-[5%] lg:rotate-[-10deg] lg:top-32dvh',
|
||||
'xl:top-18dvh',
|
||||
'2xl:top-16dvh',
|
||||
]"
|
||||
>
|
||||
<img ref="surface" :src="homeCover" alt="Project AIRI Cover Image">
|
||||
<div ref="silhouettePink" class="silhouette absolute left-0 top-0 z--1 h-full w-full bg-[oklch(0.8105_0.1267_350.84)]" />
|
||||
<div ref="silhouettePurple" class="silhouette absolute left-0 top-0 z--2 h-full w-full bg-[oklch(0.5712_0.2396_278.59)]" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.silhouette {
|
||||
-webkit-mask-image: v-bind(maskImageURL);
|
||||
mask-image: v-bind(maskImageURL);
|
||||
-webkit-mask-mode: alpha;
|
||||
mask-mode: alpha;
|
||||
-webkit-mask-size: contain;
|
||||
mask-size: contain;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
mask-repeat: no-repeat;
|
||||
-webkit-mask-position: center; /* Center the mask */
|
||||
mask-position: center;
|
||||
}
|
||||
</style>
|
||||
@@ -40,6 +40,7 @@
|
||||
"@types/markdown-it-anchor": "^7.0.0",
|
||||
"@unocss/reset": "^66.3.3",
|
||||
"@vue/tsconfig": "^0.7.0",
|
||||
"animejs": "^4.0.2",
|
||||
"fast-glob": "^3.3.3",
|
||||
"mark.js": "^8.11.1",
|
||||
"markdown-it": "^14.1.0",
|
||||
|
||||
Generated
+10
-108
@@ -1020,6 +1020,9 @@ importers:
|
||||
'@vue/tsconfig':
|
||||
specifier: ^0.7.0
|
||||
version: 0.7.0(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3))
|
||||
animejs:
|
||||
specifier: ^4.0.2
|
||||
version: 4.0.2
|
||||
fast-glob:
|
||||
specifier: ^3.3.3
|
||||
version: 3.3.3
|
||||
@@ -1052,7 +1055,7 @@ importers:
|
||||
version: 0.1.3
|
||||
unplugin-yaml:
|
||||
specifier: ^3.0.2
|
||||
version: 3.0.2(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(@nuxt/schema@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(astro@5.10.1(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(rollup@4.45.1)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0))(esbuild@0.25.5)(rolldown@1.0.0-beta.29)(rollup@4.45.1)(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))
|
||||
version: 3.0.2(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(@nuxt/schema@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(astro@5.10.1(@types/node@24.0.15)(encoding@0.1.13)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(rollup@4.45.1)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0))(esbuild@0.25.5)(rolldown@1.0.0-beta.29)(rollup@4.45.1)(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))
|
||||
vitepress:
|
||||
specifier: ^2.0.0-alpha.8
|
||||
version: 2.0.0-alpha.8(@algolia/client-search@5.32.0)(@types/node@24.0.15)(change-case@5.4.4)(fuse.js@7.1.0)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(nprogress@0.2.0)(postcss@8.5.6)(react@18.3.1)(search-insights@2.17.3)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0)
|
||||
@@ -1098,7 +1101,7 @@ importers:
|
||||
devDependencies:
|
||||
unplugin-yaml:
|
||||
specifier: ^3.0.2
|
||||
version: 3.0.2(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(@nuxt/schema@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(astro@5.10.1(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(rollup@4.45.1)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0))(esbuild@0.25.5)(rolldown@1.0.0-beta.29)(rollup@4.45.1)(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))
|
||||
version: 3.0.2(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(@nuxt/schema@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(astro@5.10.1(@types/node@24.0.15)(encoding@0.1.13)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(rollup@4.45.1)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0))(esbuild@0.25.5)(rolldown@1.0.0-beta.29)(rollup@4.45.1)(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))
|
||||
|
||||
packages/memory-pgvector:
|
||||
dependencies:
|
||||
@@ -1475,7 +1478,7 @@ importers:
|
||||
version: 1.2.2(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(@nuxt/schema@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(esbuild@0.25.5)(rollup@4.45.1)(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))
|
||||
unplugin-yaml:
|
||||
specifier: ^3.0.2
|
||||
version: 3.0.2(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(@nuxt/schema@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(astro@5.10.1(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(rollup@4.45.1)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0))(esbuild@0.25.5)(rolldown@1.0.0-beta.29)(rollup@4.45.1)(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))
|
||||
version: 3.0.2(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(@nuxt/schema@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(astro@5.10.1(@types/node@24.0.15)(encoding@0.1.13)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(rollup@4.45.1)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0))(esbuild@0.25.5)(rolldown@1.0.0-beta.29)(rollup@4.45.1)(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))
|
||||
vite:
|
||||
specifier: ^6.3.5
|
||||
version: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)
|
||||
@@ -18695,107 +18698,6 @@ snapshots:
|
||||
- yaml
|
||||
optional: true
|
||||
|
||||
astro@5.10.1(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(rollup@4.45.1)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0):
|
||||
dependencies:
|
||||
'@astrojs/compiler': 2.12.2
|
||||
'@astrojs/internal-helpers': 0.6.1
|
||||
'@astrojs/markdown-remark': 6.3.2
|
||||
'@astrojs/telemetry': 3.3.0
|
||||
'@capsizecss/unpack': 2.4.0(encoding@0.1.13)
|
||||
'@oslojs/encoding': 1.1.0
|
||||
'@rollup/pluginutils': 5.2.0(rollup@4.45.1)
|
||||
acorn: 8.15.0
|
||||
aria-query: 5.3.2
|
||||
axobject-query: 4.1.0
|
||||
boxen: 8.0.1
|
||||
ci-info: 4.2.0
|
||||
clsx: 2.1.1
|
||||
common-ancestor-path: 1.0.1
|
||||
cookie: 1.0.2
|
||||
cssesc: 3.0.0
|
||||
debug: 4.4.1
|
||||
deterministic-object-hash: 2.0.2
|
||||
devalue: 5.1.1
|
||||
diff: 5.2.0
|
||||
dlv: 1.1.3
|
||||
dset: 3.1.4
|
||||
es-module-lexer: 1.7.0
|
||||
esbuild: 0.25.5
|
||||
estree-walker: 3.0.3
|
||||
flattie: 1.1.1
|
||||
fontace: 0.3.0
|
||||
github-slugger: 2.0.0
|
||||
html-escaper: 3.0.3
|
||||
http-cache-semantics: 4.2.0
|
||||
import-meta-resolve: 4.1.0
|
||||
js-yaml: 4.1.0
|
||||
kleur: 4.1.5
|
||||
magic-string: 0.30.17
|
||||
magicast: 0.3.5
|
||||
mrmime: 2.0.1
|
||||
neotraverse: 0.6.18
|
||||
p-limit: 6.2.0
|
||||
p-queue: 8.1.0
|
||||
package-manager-detector: 1.3.0
|
||||
picomatch: 4.0.2
|
||||
prompts: 2.4.2
|
||||
rehype: 13.0.2
|
||||
semver: 7.7.2
|
||||
shiki: 3.8.1
|
||||
tinyexec: 0.3.2
|
||||
tinyglobby: 0.2.14
|
||||
tsconfck: 3.1.6(typescript@5.8.3)
|
||||
ultrahtml: 1.6.0
|
||||
unifont: 0.5.2
|
||||
unist-util-visit: 5.0.0
|
||||
unstorage: 1.16.0
|
||||
vfile: 6.0.3
|
||||
vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)
|
||||
vitefu: 1.0.7(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))
|
||||
xxhash-wasm: 1.1.0
|
||||
yargs-parser: 21.1.1
|
||||
yocto-spinner: 0.2.3
|
||||
zod: 3.25.76
|
||||
zod-to-json-schema: 3.24.6(zod@3.25.76)
|
||||
zod-to-ts: 1.2.0(typescript@5.8.3)(zod@3.25.76)
|
||||
optionalDependencies:
|
||||
sharp: 0.33.5
|
||||
transitivePeerDependencies:
|
||||
- '@azure/app-configuration'
|
||||
- '@azure/cosmos'
|
||||
- '@azure/data-tables'
|
||||
- '@azure/identity'
|
||||
- '@azure/keyvault-secrets'
|
||||
- '@azure/storage-blob'
|
||||
- '@capacitor/preferences'
|
||||
- '@deno/kv'
|
||||
- '@netlify/blobs'
|
||||
- '@planetscale/database'
|
||||
- '@types/node'
|
||||
- '@upstash/redis'
|
||||
- '@vercel/blob'
|
||||
- '@vercel/kv'
|
||||
- aws4fetch
|
||||
- db0
|
||||
- encoding
|
||||
- idb-keyval
|
||||
- ioredis
|
||||
- jiti
|
||||
- less
|
||||
- lightningcss
|
||||
- rollup
|
||||
- sass
|
||||
- sass-embedded
|
||||
- stylus
|
||||
- sugarss
|
||||
- supports-color
|
||||
- terser
|
||||
- tsx
|
||||
- typescript
|
||||
- uploadthing
|
||||
- yaml
|
||||
optional: true
|
||||
|
||||
async-mutex@0.3.2:
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
@@ -25681,7 +25583,7 @@ snapshots:
|
||||
rollup: 4.45.1
|
||||
vite: rolldown-vite@7.0.9(@types/node@24.0.15)(esbuild@0.25.5)(jiti@2.4.2)(less@4.4.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)
|
||||
|
||||
unplugin-yaml@3.0.2(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(@nuxt/schema@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(astro@5.10.1(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(rollup@4.45.1)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0))(esbuild@0.25.5)(rolldown@1.0.0-beta.29)(rollup@4.45.1)(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)):
|
||||
unplugin-yaml@3.0.2(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(@nuxt/schema@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(astro@5.10.1(@types/node@24.0.15)(encoding@0.1.13)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(rollup@4.45.1)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0))(esbuild@0.25.5)(rolldown@1.0.0-beta.29)(rollup@4.45.1)(vite@6.3.5(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)):
|
||||
dependencies:
|
||||
'@rollup/pluginutils': 5.2.0(rollup@4.45.1)
|
||||
unplugin: 2.3.5
|
||||
@@ -25689,13 +25591,13 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.45.1)
|
||||
'@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@4.45.1)
|
||||
astro: 5.10.1(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(rollup@4.45.1)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0)
|
||||
astro: 5.10.1(@types/node@24.0.15)(encoding@0.1.13)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(rollup@4.45.1)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0)
|
||||
esbuild: 0.25.5
|
||||
rolldown: 1.0.0-beta.29
|
||||
rollup: 4.45.1
|
||||
vite: 6.3.5(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)
|
||||
|
||||
unplugin-yaml@3.0.2(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(@nuxt/schema@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(astro@5.10.1(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(rollup@4.45.1)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0))(esbuild@0.25.5)(rolldown@1.0.0-beta.29)(rollup@4.45.1)(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)):
|
||||
unplugin-yaml@3.0.2(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(@nuxt/schema@3.14.1592(magicast@0.3.5)(rollup@4.45.1))(astro@5.10.1(@types/node@24.0.15)(encoding@0.1.13)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(rollup@4.45.1)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0))(esbuild@0.25.5)(rolldown@1.0.0-beta.29)(rollup@4.45.1)(vite@7.0.5(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)):
|
||||
dependencies:
|
||||
'@rollup/pluginutils': 5.2.0(rollup@4.45.1)
|
||||
unplugin: 2.3.5
|
||||
@@ -25703,7 +25605,7 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.45.1)
|
||||
'@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@4.45.1)
|
||||
astro: 5.10.1(@types/node@24.0.15)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(rollup@4.45.1)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0)
|
||||
astro: 5.10.1(@types/node@24.0.15)(encoding@0.1.13)(jiti@2.4.2)(less@4.4.0)(lightningcss@1.30.1)(rollup@4.45.1)(terser@5.43.1)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0)
|
||||
esbuild: 0.25.5
|
||||
rolldown: 1.0.0-beta.29
|
||||
rollup: 4.45.1
|
||||
|
||||
Reference in New Issue
Block a user