feat(stage-web): info action

This commit is contained in:
Neko Ayaka
2025-07-22 03:37:17 +08:00
parent 8d67d6941a
commit db99af7a59
17 changed files with 341 additions and 134 deletions
+1
View File
@@ -142,6 +142,7 @@
"clustr": "^0.0.3",
"histoire": "1.0.0-alpha.2",
"unocss": "^66.3.3",
"unplugin-info": "^1.2.2",
"unplugin-yaml": "^3.0.1",
"vite": "^6.3.5",
"vue": "^3.5.17"
@@ -0,0 +1,35 @@
<script setup lang="ts">
import { useMediaQuery, useResizeObserver, useScreenSafeArea } from '@vueuse/core'
import { DialogContent, DialogOverlay, DialogPortal, DialogRoot } from 'reka-ui'
import { DrawerContent, DrawerHandle, DrawerOverlay, DrawerPortal, DrawerRoot } from 'vaul-vue'
import { onMounted } from 'vue'
const showDialog = defineModel({ type: Boolean, default: false, required: false })
const isDesktop = useMediaQuery('(min-width: 768px)')
const screenSafeArea = useScreenSafeArea()
useResizeObserver(document.documentElement, () => screenSafeArea.update())
onMounted(() => screenSafeArea.update())
</script>
<template>
<DialogRoot v-if="isDesktop" :open="showDialog" @update:open="value => showDialog = value">
<slot name="trigger" />
<DialogPortal>
<DialogOverlay class="data-[state=open]:animate-fadeIn data-[state=closed]:animate-fadeOut fixed inset-0 z-[9999] bg-black/50 backdrop-blur-sm" />
<DialogContent class="data-[state=open]:animate-contentShow data-[state=closed]:animate-contentHide fixed left-1/2 top-1/2 z-[9999] max-h-full max-w-2xl w-[92dvw] transform overflow-y-scroll rounded-2xl bg-white p-6 shadow-xl outline-none backdrop-blur-md scrollbar-none -translate-x-1/2 -translate-y-1/2 dark:bg-neutral-900">
<slot />
</DialogContent>
</DialogPortal>
</DialogRoot>
<DrawerRoot v-else :open="showDialog" should-scale-background @update:open="value => showDialog = value">
<DrawerPortal>
<DrawerOverlay class="fixed inset-0" />
<DrawerContent class="fixed bottom-0 left-0 right-0 z-1000 mt-20 h-full max-h-[96%] flex flex-col rounded-t-2xl bg-neutral-50 px-4 pt-4 outline-none backdrop-blur-md dark:bg-neutral-900/95" :style="{ paddingBottom: `${Math.max(Number.parseFloat(screenSafeArea.bottom.value.replace('px', '')), 24)}px` }">
<DrawerHandle />
<slot />
</DrawerContent>
</DrawerPortal>
</DrawerRoot>
</template>
@@ -0,0 +1 @@
export { default as AboutDialog } from './Dialog.vue'
@@ -32,7 +32,7 @@ onMounted(() => screenSafeArea.update())
<DrawerRoot v-else :open="showDialog" should-scale-background @update:open="value => showDialog = value">
<DrawerPortal>
<DrawerOverlay class="fixed inset-0" />
<DrawerContent class="fixed bottom-0 left-0 right-0 z-1000 mt-20 h-full max-h-[96%] flex flex-col rounded-t-2xl bg-neutral-50 px-4 pt-4 outline-none backdrop-blur-md dark:bg-neutral-900/95" :style="{ paddingBottom: `${Math.max(Number.parseFloat(screenSafeArea.bottom.value.replace('px', '')), 12)}px` }">
<DrawerContent class="fixed bottom-0 left-0 right-0 z-1000 mt-20 h-full max-h-[96%] flex flex-col rounded-t-2xl bg-neutral-50 px-4 pt-4 outline-none backdrop-blur-md dark:bg-neutral-900/95" :style="{ paddingBottom: `${Math.max(Number.parseFloat(screenSafeArea.bottom.value.replace('px', '')), 24)}px` }">
<DrawerHandle />
<Onboarding @configured="emit('configured')" @skipped="emit('skipped')" />
</DrawerContent>
@@ -1 +1,2 @@
export * from './About'
export * from './Onboarding'
@@ -25,7 +25,7 @@
<Variant title="Quanlai Sans">
<div flex flex-col gap-1>
<div mb-3 text-4xl font-bold tracking-wide font-quanlai>
<div font-quanlai mb-3 text-4xl font-bold tracking-wide>
<span text="neutral-500 dark:neutral-400">Project</span> <span text-pink>AIRI</span>
</div>
<div flex flex-col gap-1>
@@ -44,7 +44,7 @@
<Variant title="Xiaolai Sans">
<div flex flex-col gap-1>
<div mb-3 text-4xl font-bold tracking-wide font-xiaolai>
<div font-xiaolai mb-3 text-4xl font-bold tracking-wide>
<span text="neutral-500 dark:neutral-400">Project</span> <span text-pink>AIRI</span>
</div>
<div flex flex-col gap-1>
@@ -63,17 +63,17 @@
<Variant title="Cute Sans">
<div flex flex-col gap-1>
<div mb-3 text-4xl font-bold tracking-wide font-cuteen>
<div font-cuteen mb-3 text-4xl font-bold tracking-wide>
<span text="neutral-500 dark:neutral-400">Project</span> <span text-pink>AIRI</span>
</div>
<div flex flex-col gap-1>
<div font-cuteen>
Hello, world!
</div>
<div font-cute>
<div font-cutejp>
こんにちは世界
</div>
<div font-cute>
<div font-cutejp>
你好世界
</div>
</div>
@@ -82,17 +82,17 @@
<Variant title="Jura Sans">
<div flex flex-col gap-1>
<div mb-3 text-4xl font-bold tracking-wide font-jura>
<div font-jura mb-3 text-4xl font-bold tracking-wide>
<span text="neutral-500 dark:neutral-400">Project</span> <span text-pink>AIRI</span>
</div>
<div flex flex-col gap-1>
<div font-jura>
Hello, world!
</div>
<div bg="red-100 dark:red-900" w-fit font-jura>
<div bg="red-100 dark:red-900" font-jura w-fit>
こんにちは世界
</div>
<div bg="red-100 dark:red-900" w-fit font-jura>
<div bg="red-100 dark:red-900" font-jura w-fit>
你好世界
</div>
</div>
@@ -101,17 +101,17 @@
<Variant title="Tech Sans">
<div flex flex-col gap-1>
<div mb-3 text-4xl font-bold tracking-wide font-quicksand>
<div font-quicksand mb-3 text-4xl font-bold tracking-wide>
<span text="neutral-500 dark:neutral-400">Project</span> <span text-pink>AIRI</span>
</div>
<div flex flex-col gap-1>
<div font-quicksand>
Hello, world!
</div>
<div bg="red-100 dark:red-900" w-fit font-quicksand>
<div bg="red-100 dark:red-900" font-quicksand w-fit>
こんにちは世界
</div>
<div bg="red-100 dark:red-900" w-fit font-quicksand>
<div bg="red-100 dark:red-900" font-quicksand w-fit>
你好世界
</div>
</div>
@@ -120,17 +120,17 @@
<Variant title="Urbanist">
<div flex flex-col gap-1>
<div mb-3 text-4xl font-bold tracking-wide font-urbanist>
<div font-urbanist mb-3 text-4xl font-bold tracking-wide>
<span text="neutral-500 dark:neutral-400">Project</span> <span text-pink>AIRI</span>
</div>
<div flex flex-col gap-1>
<div font-urbanist>
Hello, world!
</div>
<div bg="red-100 dark:red-900" w-fit font-quicksand>
<div bg="red-100 dark:red-900" font-quicksand w-fit>
こんにちは世界
</div>
<div bg="red-100 dark:red-900" w-fit font-quicksand>
<div bg="red-100 dark:red-900" font-quicksand w-fit>
你好世界
</div>
</div>
@@ -139,7 +139,7 @@
<Variant title="M PLUS Rounded 1c">
<div flex flex-col gap-1>
<div mb-3 text-4xl font-bold tracking-wide font-m-plus-rounded>
<div font-m-plus-rounded mb-3 text-4xl font-bold tracking-wide>
<span text="neutral-500 dark:neutral-400">Project</span> <span text-pink>AIRI</span>
</div>
<div flex flex-col gap-1>
+2 -1
View File
@@ -11,7 +11,8 @@
"resolveJsonModule": true,
"types": [
"vitest",
"vite/client"
"vite/client",
"unplugin-info/client"
],
"allowJs": true,
"strict": true,