Compare commits

..

No commits in common. "7fc0dac9156093394ee71b300d15d97f9d0eeaba" and "79b7687b096249f44ece92145f653e0e06e5c36c" have entirely different histories.

5 changed files with 30 additions and 43 deletions

View File

@ -68,9 +68,6 @@
"onWatcherCleanup": true, "onWatcherCleanup": true,
"useId": true, "useId": true,
"useModel": true, "useModel": true,
"useTemplateRef": true, "useTemplateRef": true
"DirectiveBinding": true,
"MaybeRef": true,
"MaybeRefOrGetter": true
} }
} }

View File

@ -3,7 +3,6 @@
// @ts-nocheck // @ts-nocheck
// noinspection JSUnusedGlobalSymbols // noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import // Generated by unplugin-auto-import
// biome-ignore lint: disable
export {} export {}
declare global { declare global {
const EffectScope: typeof import('vue')['EffectScope'] const EffectScope: typeof import('vue')['EffectScope']
@ -68,7 +67,7 @@ declare global {
// for type re-export // for type re-export
declare global { declare global {
// @ts-ignore // @ts-ignore
export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
import('vue') import('vue')
} }
// for vue template auto import // for vue template auto import
@ -106,7 +105,6 @@ declare module 'vue' {
readonly onServerPrefetch: UnwrapRef<typeof import('vue')['onServerPrefetch']> readonly onServerPrefetch: UnwrapRef<typeof import('vue')['onServerPrefetch']>
readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']> readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']>
readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']> readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']>
readonly onWatcherCleanup: UnwrapRef<typeof import('vue')['onWatcherCleanup']>
readonly provide: UnwrapRef<typeof import('vue')['provide']> readonly provide: UnwrapRef<typeof import('vue')['provide']>
readonly reactive: UnwrapRef<typeof import('vue')['reactive']> readonly reactive: UnwrapRef<typeof import('vue')['reactive']>
readonly readonly: UnwrapRef<typeof import('vue')['readonly']> readonly readonly: UnwrapRef<typeof import('vue')['readonly']>
@ -124,12 +122,9 @@ declare module 'vue' {
readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']> readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']>
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']> readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']> readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
readonly useId: UnwrapRef<typeof import('vue')['useId']>
readonly useModel: UnwrapRef<typeof import('vue')['useModel']>
readonly useRoute: UnwrapRef<typeof import('vue-router/auto')['useRoute']> readonly useRoute: UnwrapRef<typeof import('vue-router/auto')['useRoute']>
readonly useRouter: UnwrapRef<typeof import('vue-router/auto')['useRouter']> readonly useRouter: UnwrapRef<typeof import('vue-router/auto')['useRouter']>
readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']> readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']>
readonly useTemplateRef: UnwrapRef<typeof import('vue')['useTemplateRef']>
readonly watch: UnwrapRef<typeof import('vue')['watch']> readonly watch: UnwrapRef<typeof import('vue')['watch']>
readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']> readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']>
readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']> readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>

1
src/components.d.ts vendored
View File

@ -9,6 +9,7 @@ declare module 'vue' {
export interface GlobalComponents { export interface GlobalComponents {
AccountSettings: typeof import('./components/settings/AccountSettings.vue')['default'] AccountSettings: typeof import('./components/settings/AccountSettings.vue')['default']
AssistantMenu: typeof import('./components/AssistantMenu.vue')['default'] AssistantMenu: typeof import('./components/AssistantMenu.vue')['default']
AssistantPublistSettings: typeof import('./components/settings/AssistantPublistSettings.vue')['default']
AssistantSettings: typeof import('./components/settings/AssistantSettings.vue')['default'] AssistantSettings: typeof import('./components/settings/AssistantSettings.vue')['default']
Chat: typeof import('./components/chat/Chat.vue')['default'] Chat: typeof import('./components/chat/Chat.vue')['default']
ChatMenu: typeof import('./components/ChatMenu.vue')['default'] ChatMenu: typeof import('./components/ChatMenu.vue')['default']

View File

@ -5,23 +5,21 @@ document.head.appendChild(meta);
import "./styles/style.css"; import "./styles/style.css";
import "./styles/color.less"; import "./styles/color.less";
import "animate.css"; import "animate.css";
import { createApp } from 'vue'
import App from './App.vue'
import naive from 'naive-ui'
import router from "./router";
import { registerPlugins } from "./plugins"; import { registerPlugins } from "./plugins";
import router from "./router";
const app = createApp(App)
app.use(naive) import App from "./App.vue";
import { createApp } from "vue";
const app = createApp(App);
registerPlugins(app); registerPlugins(app);
app.use(router); app.use(router);
// @ts-ignore ...
if (process.env.NODE_ENV === "production") { if (process.env.NODE_ENV === "production") {
setTimeout(() => { setTimeout(() => {
const appContainer = document.getElementById("app"); const appContainer = document.getElementById("app");
@ -30,6 +28,7 @@ if (process.env.NODE_ENV === "production") {
} }
setTimeout(() => { setTimeout(() => {
const defaultLoader = document.getElementById("default-loader"); const defaultLoader = document.getElementById("default-loader");
// remove
defaultLoader?.remove(); defaultLoader?.remove();
}, 300); }, 300);
@ -37,9 +36,7 @@ if (process.env.NODE_ENV === "production") {
app.mount("#app"); app.mount("#app");
}, 300); }, 300);
setTimeout(() => { setTimeout(() => {
if (appContainer) { appContainer!.style.opacity = "1";
appContainer.style.opacity = "1";
}
}, 300); }, 300);
}, 200); }, 200);
} else { } else {

View File

@ -4,16 +4,16 @@
<div class="container"> <div class="container">
<!-- Spotlight 区域 --> <!-- Spotlight 区域 -->
<n-card class="spotlight" :bordered="false"> <n-card class="spotlight" :bordered="false">
<div class="background-pattern"></div>
<div class="background-text">
Leaflow <span class="background-amber">Amber</span>
</div>
<div class="spotlight-content"> <div class="spotlight-content">
<h1 class="title break-normal"> <h1 class="title">Leaflow <span class="amber-text">Amber</span></h1>
Leaflow <span class="amber-text">Amber</span>
</h1>
<p class="subtitle"> <p class="subtitle">
下一代智能体平台为您的数字生活带来革命性变化 下一代智能体平台为您的数字生活带来革命性变化
<br class="mobile-break" /> <br class="mobile-break" />
<a @click="gotoLogin" class="cta-link cursor-pointer" <a href="#" class="cta-link">立即体验 🚀</a>
>立即体验 🚀</a
>
</p> </p>
<div <div
class="stats" class="stats"
@ -85,18 +85,17 @@
<!-- 功能特点展示 --> <!-- 功能特点展示 -->
<div class="features-section"> <div class="features-section">
<h2 class="section-title">Amber 核心特性</h2> <h2 class="section-title">Amber 核心特性</h2>
<n-grid <n-grid :cols="3" :x-gap="24" :y-gap="24" responsive="screen">
cols="1 m:2 l:3 xl:3 2xl:3" <n-gi
:x-gap="24" span="3 m:1"
:y-gap="24" v-for="(feature, index) in features"
responsive="screen" :key="index"
> >
<n-gi v-for="(feature, index) in features" :key="index">
<div <div
class="feature-card" class="feature-card"
@click="toggleFeatureDescription(feature)" @click="toggleFeatureDescription(feature)"
> >
<div> <div class="feature-content">
<div class="feature-icon">{{ feature.icon }}</div> <div class="feature-icon">{{ feature.icon }}</div>
<div class="feature-title">{{ feature.title }}</div> <div class="feature-title">{{ feature.title }}</div>
<transition name="fade-height" mode="out-in"> <transition name="fade-height" mode="out-in">
@ -157,17 +156,13 @@ import {
} from "naive-ui"; } from "naive-ui";
import { SchemaSiteUsageResponse } from "@/api"; import { SchemaSiteUsageResponse } from "@/api";
import getApi from "@/plugins/api"; import getApi from "@/plugins/api";
import router from "@/router"; import grouppng from "@/assets/images/group.png";
const osTheme = useOsTheme(); const osTheme = useOsTheme();
const theme = computed(() => (osTheme.value === "dark" ? darkTheme : null)); const theme = computed(() => (osTheme.value === "dark" ? darkTheme : null));
const siteUsage = ref<SchemaSiteUsageResponse>({}); const siteUsage = ref<SchemaSiteUsageResponse>({});
const gotoLogin = () => {
router.push("/auth/login");
};
const features = ref([ const features = ref([
{ {
icon: "💬", icon: "💬",
@ -224,7 +219,8 @@ const partners = ref([
name: "HiMCBBS 我的世界中文论坛", name: "HiMCBBS 我的世界中文论坛",
logo: "https://www.himcbbs.com/data/assets/logo/wxmc_logo_text_blue.svg", logo: "https://www.himcbbs.com/data/assets/logo/wxmc_logo_text_blue.svg",
link: "https://www.himcbbs.com/", link: "https://www.himcbbs.com/",
description: "中国我的世界玩家社区,提供游戏资讯、模组下载和创意分享。", description:
"中国最大的我的世界玩家社区,提供游戏资讯、模组下载和创意分享。",
}, },
// //
]); ]);
@ -270,6 +266,7 @@ body {
'theme ? "rgba(0, 0, 0, 0.5)" : "rgba(78, 187, 192, 0.1)"' 'theme ? "rgba(0, 0, 0, 0.5)" : "rgba(78, 187, 192, 0.1)"'
); );
backdrop-filter: blur(10px); backdrop-filter: blur(10px);
height: 70vh;
min-height: 500px; min-height: 500px;
display: flex; display: flex;
align-items: center; align-items: center;