Files
hermes-web-ui/packages/website/src/App.vue
ekko 9edb76ac64 feat: add landing page and docs website (#537)
* feat: add landing page and docs website package

Add packages/website — a Vue 3 + Naive UI static site with landing page
and documentation, sharing the Pure Ink monochrome design with the main
app. Features: particle network hero animation, screenshot carousel,
feature grid, install guide tabs, GitHub star history, scroll reveal
animations, and Chinese/English bilingual support.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* chore: add favicon to website package

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: use dynamic theme param for star history chart

Switch from CSS media query to JS-based dark mode detection so the
star-history SVG matches the current theme toggle state.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: resolve TypeScript strict mode errors in website components

- Remove unused isDark import in HeroSection
- Add null check for canvas parent element
- Rename unused img loop variable in ScreenshotsSection
- Remove unused NIcon import in SiteHeader

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: resolve TS narrowing errors in canvas resize closure

Use canvasRef.value directly inside resize() with local null check
instead of relying on outer closure narrowing.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-08 13:36:11 +08:00

39 lines
968 B
Vue

<script setup lang="ts">
import { darkTheme } from 'naive-ui'
import { NConfigProvider, NMessageProvider } from 'naive-ui'
import { useTheme } from '@/composables/useTheme'
import { getThemeOverrides } from '@client/styles/theme'
import SiteHeader from '@/components/layout/SiteHeader.vue'
import SiteFooter from '@/components/layout/SiteFooter.vue'
const { isDark } = useTheme()
</script>
<template>
<NConfigProvider :theme="isDark ? darkTheme : undefined" :theme-overrides="getThemeOverrides(isDark)">
<NMessageProvider>
<div class="website-app">
<SiteHeader />
<main class="website-main">
<router-view />
</main>
<SiteFooter />
</div>
</NMessageProvider>
</NConfigProvider>
</template>
<style scoped lang="scss">
.website-app {
min-height: 100vh;
display: flex;
flex-direction: column;
background: var(--bg-primary);
color: var(--text-primary);
}
.website-main {
flex: 1;
}
</style>