diff --git a/DigitalHumanWeb/next.config.ts b/DigitalHumanWeb/next.config.ts index 4d51c19..20eb041 100644 --- a/DigitalHumanWeb/next.config.ts +++ b/DigitalHumanWeb/next.config.ts @@ -28,6 +28,9 @@ const nextConfig: NextConfig = { webVitalsAttribution: ['CLS', 'LCP'], webpackMemoryOptimizations: true, }, + typescript: { + ignoreBuildErrors: true + }, async headers() { return [ { diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/_layout/Desktop/SideBar/TopActions.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/_layout/Desktop/SideBar/TopActions.tsx index 4d49a78..f00fc24 100644 --- a/DigitalHumanWeb/src/app/[variants]/(main)/_layout/Desktop/SideBar/TopActions.tsx +++ b/DigitalHumanWeb/src/app/[variants]/(main)/_layout/Desktop/SideBar/TopActions.tsx @@ -25,7 +25,8 @@ const useStyles = createStyles(({ css }) => ({ color: #fff; `, linkUrl: css` - width: 100%; + width: 100px; + text-align: center; display: inline-block; `, linkclic: css` @@ -79,24 +80,24 @@ const TopActions = memo(({ tab, isPinned }) => {
模型
)} - {showMarket && ( - {setValue("/robot")}}> - {"robot"} -
数字人
- - )} + {/*{showMarket && (*/} + {/* {setValue("/robot")}}>*/} + {/* {"robot"}*/} + {/*
数字人
*/} + {/* */} + {/*)}*/} {showMarket && ( {setValue("/plugins")}}> {"plugins"}
插件
)} - {showMarket && ( - {setValue("/knowledge")}}> - -
知识库
- - )} + {/*{showMarket && (*/} + {/* {setValue("/knowledge")}}>*/} + {/* */} + {/*
知识库
*/} + {/* */} + {/*)}*/} ); }); diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/_layout/Desktop/index.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/_layout/Desktop/index.tsx index a53b80f..52809fa 100644 --- a/DigitalHumanWeb/src/app/[variants]/(main)/_layout/Desktop/index.tsx +++ b/DigitalHumanWeb/src/app/[variants]/(main)/_layout/Desktop/index.tsx @@ -77,8 +77,8 @@ const Layout = memo(({ children }) => { const theme = useTheme(); const { styles, cx } = useStyles() const { showCloudPromotion } = useServerConfigStore(featureFlagsSelectors); - // const pathName = window?.location?.pathname ?? '/welcome' - const pathName = '/welcome' + const pathName = window?.location?.pathname ?? '/welcome' + // const pathName = '/welcome' return ( <> @@ -94,18 +94,18 @@ const Layout = memo(({ children }) => { >
-
-
-
- 集智AI - - {title[pathName]} -
-
- -
-
-
+ {/*
*/} + {/*
*/} + {/*
*/} + {/* 集智AI*/} + {/* */} + {/* {title[pathName]}*/} + {/*
*/} + {/*
*/} + {/* */} + {/*
*/} + {/*
*/} + {/*
*/} {children}
diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/applicationset/applicationset.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/applicationset/applicationset.tsx index b2ba222..d1d730e 100644 --- a/DigitalHumanWeb/src/app/[variants]/(main)/applicationset/applicationset.tsx +++ b/DigitalHumanWeb/src/app/[variants]/(main)/applicationset/applicationset.tsx @@ -1,6 +1,6 @@ 'use client'; -import {memo, useEffect, useState} from 'react'; +import {PropsWithChildren, memo, useEffect, useState} from 'react'; import {createStyles} from "antd-style"; import {Anchor, Button, Card, Image} from "antd"; import {RightCircleOutlined, LikeFilled, WechatFilled, HomeFilled, DribbbleSquareFilled, CopyFilled, MedicineBoxFilled, IeCircleFilled, IdcardFilled, HourglassFilled, InsuranceFilled} from "@ant-design/icons"; @@ -8,522 +8,6 @@ import {RightCircleOutlined, LikeFilled, WechatFilled, HomeFilled, DribbbleSquar import request from '@/app/request'; import Title from "@/app/(main)/discover/components/Title"; -// const stData = { -// "rmtj": [ -// { -// id: '061', -// name: "Kimi智能助手", -// sessiontype: 2, -// remark: "Kimi 智能助手,你的私人助理", -// iconurl: "/images/applicationSets/kimi.png", -// website: "https://kimi.moonshot.cn/kimiplus-square" -// }, -// { -// id: '062', -// name: "通义千问", -// sessiontype: 2, -// remark: "通义千问是阿里云的大模型,类似ChatGPT,专注响应人类指令,提高生活效率与体验", -// iconurl: "/images/applicationSets/tyqw.png", -// website: "https://tongyi.aliyun.com" -// }, -// { -// id: '063', -// name: "文心一言", -// sessiontype: 2, -// remark: "文心一言是百度推出的基于文心大模型的AI对话互动工具", -// iconurl: "/images/applicationSets/wxyy.png", -// website: "https://yiyan.baidu.com" -// }, -// { -// id: '064', -// name: "讯飞写作", -// sessiontype: 2, -// remark: "讯飞写作基于讯飞星火认知大模型能力,支持多场景写作,提供会议纪要,求职简历,心得体会,入党申请,论文大纲,品宣文案,PPT 大纲等各类写作模板", -// iconurl: "/images/applicationSets/xfxz.png", -// website: "https://huixie.iflyrec.com/" -// }, -// { -// id: '065', -// name: "即梦", -// sessiontype: 2, -// remark: "即梦Dreamina是一款结合了AI技术的在线创作平台,它通过图片生成、智能画布和视频生成等功能,帮助用户将创意转化为视觉作品。", -// iconurl: "/images/applicationSets/jm.png", -// website: "https://jimeng.jianying.com/" -// }, -// { -// id: '066', -// name: "可灵大模型", -// sessiontype: 2, -// remark: "可灵大模型是一款具备强大视频生成能力的自研大模型,采用先进的技术实现长达 2 分钟视频生成、模拟物理世界特性、概念组合能力等,可生成电影级画面。", -// iconurl: "/images/applicationSets/kldmx.png", -// website: "https://kling.kuaishou.com/" -// }, -// { -// id: '067', -// name: "飞书智能伙伴", -// sessiontype: 2, -// remark: "飞书智能伙伴是一款智能助手产品,可以为用户选择自己喜欢的形象、设置姓名,并记忆用户在飞书上的行为,支持部署在飞书上的业务应用,实现跨系统任务完成和统一使用体验。", -// iconurl: "/images/applicationSets/fsznhb.png", -// website: "https://www.feishu.cn/product/ai_companion" -// }, -// { -// id: '068', -// name: "硅基智能", -// sessiontype: 2, -// remark: "硅基智能是一款数字化虚拟人与 AI 技术相结合的产品,主要应用于智能交互领域。", -// iconurl: "/images/applicationSets/gjzn.png", -// website: "https://www.guiji.ai/" -// }, -// ], -// "chat": [ -// { -// id: '071', -// name: "Kimi智能助手", -// sessiontype: 2, -// remark: "Kimi 智能助手,你的私人助理", -// iconurl: "/images/applicationSets/kimi.png", -// website: "https://kimi.moonshot.cn/kimiplus-square" -// }, -// { -// id: '072', -// name: "通义千问", -// sessiontype: 2, -// remark: "通义千问是阿里云的大模型,类似ChatGPT,专注响应人类指令,提高生活效率与体验", -// iconurl: "/images/applicationSets/tyqw.png", -// website: "https://tongyi.aliyun.com" -// }, -// { -// id: '073', -// name: "文心一言", -// sessiontype: 2, -// remark: "文心一言是百度推出的基于文心大模型的AI对话互动工具", -// iconurl: "/images/applicationSets/wxyy.png", -// website: "https://yiyan.baidu.com" -// }, -// { -// id: '074', -// name: "豆包", -// sessiontype: 2, -// remark: "豆包是一款智能聊天机器人,能够与用户进行自然语言交互,提供各种聊天话题,包括天气、新闻、笑话、音乐等。", -// iconurl: "/images/applicationSets/db.png", -// website: "https://www.doubao.com/chat" -// }, -// { -// id: '075', -// name: "讯飞星火认知大模型", -// sessiontype: 2, -// remark: "科大讯飞推出的类ChatGPT的讯飞星火认知大模型", -// iconurl: "/images/applicationSets/xfxhrz.png", -// website: "https://xinghuo.xfyun.cn" -// }, -// { -// id: '076', -// name: "商量SenseChat", -// sessiontype: 2, -// remark: "商量SenseChat是商汤科技的大语言模型,具备语言理解与生成能力,像ChatGPT可解复杂问题,定制化建议,辅助一流文本创作,并不断进化", -// iconurl: "/images/applicationSets/senseChat.png", -// website: "https://chat.sensetime.com/wb/chat" -// }, -// { -// id: '077', -// name: "智谱清言", -// sessiontype: 2, -// remark: "智谱清言是一款基于ChatGLM2模型开发的人工智能应用,具备内容创作、信息归纳总结等能力", -// iconurl: "/images/applicationSets/zpqy.png", -// website: "https://chatglm.cn" -// }, -// { -// id: '078', -// name: "360智脑", -// sessiontype: 2, -// remark: "360智脑是360公司推出的中文版本ChatGPT,它采用先进的机器学习和自然语言处理技术,可以进行高度准确和流畅的中文对话", -// iconurl: "/images/applicationSets/360zn.png", -// website: "https://www.so.com/zt/invite.html" -// }, -// { -// id: '079', -// name: "Chatbox", -// sessiontype: 2, -// remark: "Chatbox是一个易于使用的人工智能解决方案,支持多平台,帮助提升工作和学习效率", -// iconurl: "/images/applicationSets/chatBox.png", -// website: "https://chatboxai.app/zh" -// }, -// ], -// "writing": [ -// { -// id: '101', -// name: "讯飞写作", -// sessiontype: 2, -// remark: "讯飞写作基于讯飞星火认知大模型能力,支持多场景写作,提供会议纪要,求职简历,心得体会,入党申请,论文大纲,品宣文案,PPT 大纲等各类写作模板", -// iconurl: "/images/applicationSets/xfxz.png", -// website: "https://huixie.iflyrec.com/" -// }, -// { -// id: '102', -// name: "秘塔写作猫", -// sessiontype: 2, -// remark: "秘塔写作猫是一款集AI写作、多人协作、文本校对、改写润色、自动配图等功能为一体的AI Native内容创作平台。", -// iconurl: "/images/applicationSets/mtxzm.png", -// website: "https://xiezuocat.com/" -// }, -// { -// id: '103', -// name: "智学AI写作", -// sessiontype: 2, -// remark: "智学AI是款一键生成原创论文的一站式论文服务网站。致力于解决论文写作过程中的各种问题", -// iconurl: "/images/applicationSets/zxAIxz.png", -// website: "https://www.chackai.cn/" -// }, -// { -// id: '104', -// name: "YOO必优科技-AI写作", -// sessiontype: 2, -// remark: "AI写作,原创内容,写作神器-必优科技官网", -// iconurl: "/images/applicationSets/YOO.png", -// website: "https://www.yoo-ai.com/" -// }, -// { -// id: '105', -// name: "晓语台", -// sessiontype: 2, -// remark: "晓语台官网,助力高效文本创作的AI平台", -// iconurl: "/images/applicationSets/xyt.png", -// website: "https://www.xiaoyutai.com/" -// }, -// { -// id: '106', -// name: "行止AI", -// sessiontype: 2, -// remark: "行止AI官网,多功能的人工智能生成内容平台", -// iconurl: "/images/applicationSets/xzAI.png", -// website: "https://ai.168096.com/web/" -// }, -// { -// id: '107', -// name: "红薯通AI", -// sessiontype: 2, -// remark: "红薯通AI,小红书内容创作神器", -// iconurl: "/images/applicationSets/hst.png", -// website: "https://www.hongshutong.com/" -// }, -// ], -// "conversation": [ -// { -// id: '131', -// name: "文心一格", -// sessiontype: 2, -// remark: "文心一格,AI艺术和创意辅助平台,依托飞桨、文心大模型的技术创新推出的“AI作画”产品,可轻松驾驭多种风格,人人皆可“一语成画”", -// iconurl: "/images/applicationSets/wxyy.png", -// website: "https://yige.baidu.com/" -// }, -// { -// id: '132', -// name: "无界AI", -// sessiontype: 2, -// remark: "无界 AI 是一款集 prompt 搜索、AI 图库、AI 创作、AI 广场、词 / 图等功能于一体的 AI 创作平台。", -// iconurl: "/images/applicationSets/wjAI.png", -// website: "https://www.wujieai.com/" -// }, -// { -// id: '133', -// name: "即梦", -// sessiontype: 2, -// remark: "即梦Dreamina是一款结合了AI技术的在线创作平台,它通过图片生成、智能画布和视频生成等功能,帮助用户将创意转化为视觉作品。", -// iconurl: "/images/applicationSets/jm.png", -// website: "https://jimeng.jianying.com/" -// }, -// { -// id: '134', -// name: "LiblibAI", -// sessiontype: 2, -// remark: "LiblibAI是一个中国领先的AI创作平台,提供强大的AI创作能力,帮助创作者实现创意。", -// iconurl: "/images/applicationSets/LiblibAI.png", -// website: "https://www.liblib.art/" -// }, -// { -// id: '135', -// name: "触手AI", -// remark: "触手 AI 绘画专业版是一款面向插画师、漫画师、设计师等专业用户的国产 AI 绘图平台。", -// iconurl: "/images/applicationSets/csAI.png", -// website: "https://www.acgnai.art/home" -// }, -// ], -// "video": [ -// { -// id: '161', -// name: "可灵大模型", -// sessiontype: 2, -// remark: "可灵大模型是一款具备强大视频生成能力的自研大模型,采用先进的技术实现长达 2 分钟视频生成、模拟物理世界特性、概念组合能力等,可生成电影级画面。", -// iconurl: "/images/applicationSets/kldmx.png", -// website: "https://kling.kuaishou.com/" -// }, -// { -// id: '162', -// name: "即梦", -// sessiontype: 2, -// remark: "即梦Dreamina是一款结合了AI技术的在线创作平台,它通过图片生成、智能画布和视频生成等功能,帮助用户将创意转化为视觉作品。", -// iconurl: "/images/applicationSets/jm.png", -// website: "https://jimeng.jianying.com/" -// }, -// { -// id: '163', -// name: "Moki", -// sessiontype: 2, -// remark: "Moki是美图公司推出的AI短片创作工具,专注于辅助视频创作者打造动画短片、网文短剧、故事绘本和音乐视频(MV)。", -// iconurl: "/images/applicationSets/moki.png", -// website: "https://www.moki.cn/home" -// }, -// { -// id: '164', -// name: "一帧秒创", -// sessiontype: 2, -// remark: "一帧秒创是基于秒创AIGC引擎的智能AI内容生成平台,包含AI图文转视频、AI作画创作平台AI帮写", -// iconurl: "/images/applicationSets/yzmc.png", -// website: "https://aigc.yizhentv.com/" -// }, -// { -// id: '165', -// name: "万彩AI", -// remark: "一款强大的AI内容创作工具合集,除了提供AI智能写作支持之外,还集成了AI换脸、照片数字人制作和AI短视频制作等强大的AI生成内容功能。", -// iconurl: "/images/applicationSets/wcAI.png", -// website: "https://ai.kezhan365.com/" -// }, -// { -// id: '166', -// name: "闪剪智能", -// remark: "闪剪智能是全球超2亿用户都在用的AI视频创作平台,旗下有闪剪、逗拍、趣推、字说、Vinkle等软件", -// iconurl: "/images/applicationSets/sjzn.png", -// website: "https://corp.shanjian.tv/" -// }, -// ], -// "office": [ -// { -// id: '171', -// name: "通义听悟", -// sessiontype: 2, -// remark: "阿里云通义听悟是聚焦音视频内容的工作学习 AI 助手,依托大模型,帮助用户记录、整理和分析音视频内容。通过实时语音转文字、多语言同步翻译,提供高效学习体验。", -// iconurl: "/images/applicationSets/tytw.png", -// website: "https://tingwu.aliyun.com/" -// }, -// { -// id: '172', -// name: "WPS AI", -// sessiontype: 2, -// remark: "WPS AI是一款智能办公助手,能够帮助用户完成文本改写、续写、生成PPT、数据处理、语音交互等多项功能。", -// iconurl: "/images/applicationSets/WPS.png", -// website: "https://ai.wps.cn/" -// }, -// { -// id: '173', -// name: "星火文档问答", -// sessiontype: 2, -// remark: "讯飞星火知识库文档问答是科大讯飞基于讯飞星火大模型和星火知识库搭建的文档问答服务,能够高效检索文档信息,准确回答专业问题。", -// iconurl: "/images/applicationSets/xhwdwd.png", -// website: "https://chatdoc.xfyun.cn/" -// }, -// { -// id: '174', -// name: "飞书智能伙伴", -// sessiontype: 2, -// remark: "飞书智能伙伴是一款智能助手产品,可以为用户选择自己喜欢的形象、设置姓名,并记忆用户在飞书上的行为,支持部署在飞书上的业务应用,实现跨系统任务完成和统一使用体验。", -// iconurl: "/images/applicationSets/fsznhb.png", -// website: "https://www.feishu.cn/product/ai_companion" -// }, -// { -// id: '175', -// name: "TreeMind 树图", -// sessiontype: 2, -// remark: "TreeMind 树图是新一代思维导图软件,提供便捷的在线思维导图制作工具。", -// iconurl: "/images/applicationSets/treeMind.png", -// website: "https://shutu.cn/" -// }, -// { -// id: '176', -// name: "亿图脑图", -// sessiontype: 2, -// remark: "亿图脑图是一款多平台思维导图软件,可用于 Windows,Mac 和 Linux 等桌面环境,也可以在线使用或在苹果,安卓等移动端上使用。", -// iconurl: "/images/applicationSets/ytnt.png", -// website: "https://www.edrawsoft.cn/mindmaster/ad-mindmaster6-1.html" -// }, -// ], -// "digitalPeople": [ -// { -// id: '181', -// name: "硅基智能", -// sessiontype: 2, -// remark: "硅基智能是一款数字化虚拟人与 AI 技术相结合的产品,主要应用于智能交互领域。", -// iconurl: "/images/applicationSets/gjzn.png", -// website: "https://www.guiji.ai/" -// }, -// { -// id: '182', -// name: "怪兽ai数字人", -// sessiontype: 2, -// remark: "怪兽AI数字人提供2D数字人和3D数字人的商业应用,同时提供共享、定制和克隆数字人形象,以及真人声音克隆等身份制作服务。", -// iconurl: "/images/applicationSets/ksAIszr.png", -// website: "https://www.guaishouai.com/" -// }, -// { -// id: '183', -// name: "奇妙问", -// sessiontype: 2, -// remark: "奇妙问官网:开启数字人3.0时代。", -// iconurl: "/images/applicationSets/qmw.png", -// website: "https://ai.weta365.com/" -// }, -// { -// id: '184', -// name: "工作数字人", -// sessiontype: 2, -// remark: "工作数字人官网,开启高效工作办公之旅", -// iconurl: "/images/applicationSets/gzszr.png", -// website: "https://workbrain.cn/" -// }, -// ], -// "education": [ -// { -// id: '191', -// name: "星火语伴", -// sessiontype: 2, -// remark: "星火语伴APP,一款专为英语学习者打造的学习伙伴", -// iconurl: "/images/applicationSets/xhyb.png", -// website: "https://www.xfxuexi.com/#/aiTalk" -// }, -// { -// id: '192', -// name: "Masterly ai", -// sessiontype: 2, -// remark: "Masterlyai是一个雅思备考助手,口语写作练习", -// iconurl: "/images/applicationSets/MasterlyAI.png", -// website: "https://www.masterlyai.com/" -// }, -// { -// id: '193', -// name: "TalkAI", -// sessiontype: 2, -// remark: "TalkAI是一款专为想要学习语言的人打造的学习助手,AI练口语,支持超过60种语言。", -// iconurl: "/images/applicationSets/TalkAI.png", -// website: "https://ttalkai.com/" -// }, -// { -// id: '194', -// name: "FeelRead 飞阅", -// sessiontype: 2, -// remark: "一款微信生态内的AI Reading Copilot 小程序,互动式阅读助手,可与文对话。AI自动分析&阅读在线文章,与文档PDF/Word。", -// iconurl: "/images/applicationSets/FeelRead.png", -// website: "https://app.jiajiaqun.cn/" -// }, -// ], -// "programming": [ -// { -// id: '121', -// name: "文心快码", -// sessiontype: 2, -// remark: "码随心动,快人一步,更懂你的智能代码助手", -// iconurl: "/images/applicationSets/wxyy.png", -// website: "https://comate.baidu.com/zh" -// }, -// { -// id: '122', -// name: "通义灵码", -// sessiontype: 2, -// remark: "灵动指间,快码加编,你的智能编码助手。基于通义大模型,提供代码智能生成、研发智能问答能力", -// iconurl: "/images/applicationSets/tylm.png", -// website: "https://tongyi.aliyun.com/lingma/" -// }, -// { -// id: '123', -// name: "codeFuse", -// sessiontype: 2, -// remark: "codeFuse 是一个能够辅助开发者进行代码补全、添加注释、解释代码等功能的插件。", -// iconurl: "/images/applicationSets/codeFuse.png", -// website: "https://codefuse.alipay.com/welcome/product" -// }, -// { -// id: '124', -// name: "星火飞码 iFlyCode", -// sessiontype: 2, -// remark: "iFlyCode智能编程助手是一款基于讯飞星火认知大模型的智能编程工具。它能够智能生成代码、解释代码、纠错代码、进行单元测试以及提供智能问答功能。", -// iconurl: "/images/applicationSets/iFlyCode.png", -// website: "https://iflycode.xfyun.cn/index" -// }, -// { -// id: '125', -// name: "天工智码 SkyCode", -// sessiontype: 2, -// remark: "天工智码 SkyCode 是一款 AI 代码生成工具,支持各种主流编程语言,助力开发人员更快更好的编码。", -// iconurl: "/images/applicationSets/SkyCode.png", -// website: "https://sky-code.singularity-ai.com/index.html" -// }, -// { -// id: '126', -// name: "CodeArts Snap", -// sessiontype: 2, -// remark: "CodeArts Snap是华为云自研的基于盘古研发大模型的智能开发助手。", -// iconurl: "/images/applicationSets/CodeArtsSnap.png", -// website: "https://www.huaweicloud.com/product/codeartside/snap.html" -// }, -// { -// id: '127', -// name: "Fitten Code", -// sessiontype: 2, -// remark: "Fitten Code是一个GPT驱动的代码生成和完成工具,支持多种语言:Python、Javascript、Typescript、Java等。", -// iconurl: "/images/applicationSets/FittenCode.png", -// website: "https://code.fittentech.com/" -// }, -// ], -// "audio": [ -// { -// id: '151', -// name: "魔音工坊", -// sessiontype: 2, -// remark: "魔音工坊是一款功能强大的在线智能配音工具,能够快速高效地实现文字到语音的转换。它拥有强大的语音合成技术,提供真人录音质量的配音效果。", -// iconurl: "/images/applicationSets/mygf.png", -// website: "https://www.moyin.com/" -// }, -// { -// id: '152', -// name: "天工SkyMusic", -// sessiontype: 2, -// remark: "基于昆仑万维「天工3.0」超级大模型打造的AI音乐生成大模型「天工SkyMusic」,支持高质量AI音乐生成、人声合成、歌词段落控制、多种音乐风格和音乐智能表达等功能。", -// iconurl: "/images/applicationSets/SkyMusic.png", -// website: "https://home.tiangong.cn/downloadGuide" -// }, -// { -// id: '153', -// name: "讯飞开放平台", -// sessiontype: 2, -// remark: "科大讯飞推出的移动互联网智能交互平台,为开发者免费提供:涵盖语音能力增强型SDK,一站式人机智能语音交互解决方案,专业全面的移动应用分析", -// iconurl: "/images/applicationSets/xfkfpt.png", -// website: "https://www.xfyun.cn/" -// }, -// { -// id: '154', -// name: "依图语音开放平台", -// sessiontype: 2, -// remark: "依图语音开放平台", -// iconurl: "/images/applicationSets/ytyykfpt.png", -// website: "https://speech.yitutech.com/" -// }, -// { -// id: '155', -// name: "REECHO 睿声", -// sessiontype: 2, -// remark: "REECHO.AI 睿声是一个超拟真的人工智能语音克隆平台。用户可以上传语音样本,系统利用深度学习技术进行语音克隆,生成质量极高的 AI 语音,可以实现不同人物的语音风格转换。", -// iconurl: "/images/applicationSets/REECHO.png", -// website: "https://www.reecho.cn/" -// }, -// { -// id: '156', -// name: "NovaMSS", -// sessiontype: 2, -// remark: "NovaMSS是一款基于最顶级的AI模型调优后的新一代音乐源分离工具,可以一键提取伴奏、人声、贝斯、鼓点、分离音轨等。", -// iconurl: "/images/applicationSets/NovaMSS.png", -// website: "https://novamss.com/" -// }, -// ] -// } - const stList = [ { date: '2024-02-03', @@ -716,7 +200,7 @@ const onClickAncho = (e) => { // block: 'start' // }) } -const ApplicationSet = memo(() => { +const ApplicationSet = memo(( ) => { const { styles, cx } = useStyles() const [val, setVal] = useState("AI") const [achVal, setAchVal] = useState("#rmtj") diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/applicationset/page.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/applicationset/page.tsx index b831be6..6d2973c 100644 --- a/DigitalHumanWeb/src/app/[variants]/(main)/applicationset/page.tsx +++ b/DigitalHumanWeb/src/app/[variants]/(main)/applicationset/page.tsx @@ -1,50 +1,31 @@ -// import StructuredData from '@/components/StructuredData'; -import { Locales } from '@/locales/resources'; -// import { ldModule } from '@/server/ld'; +import { redirect } from 'next/navigation'; + import { metadataModule } from '@/server/metadata'; -// import { DiscoverService } from '@/server/services/discover'; import { translation } from '@/server/translation'; -// import { isMobileDevice } from '@/utils/responsive'; -import ApplicationSet from "./applicationset"; +import { DynamicLayoutProps } from '@/types/next'; +import { RouteVariants } from '@/utils/server/routeVariants'; +import ApplicationSet from "./applicationset"; // import {Button} from "antd"; -type Props = { searchParams: { hl?: Locales } }; - -export const generateMetadata = async ({ searchParams }: Props) => { - const { t, locale } = await translation('metadata', searchParams?.hl); +export const generateMetadata = async (props: DynamicLayoutProps) => { + const locale = await RouteVariants.getLocale(props); + const { t } = await translation('setting', locale); return metadataModule.generate({ - alternate: true, description: t('files.description'), - locale, title: t('files.title'), - url: '/files', + url: '/applicationset', }); }; -const Page = async () => { - // const { t, locale } = await translation('metadata', searchParams?.hl); - // const mobile = isMobileDevice(); - - // const discoverService = new DiscoverService(); - // const items = await discoverService.getAssistantList(locale); - - // const ld = ldModule.generate({ - // description: t('files.description'), - // title: t('files.title'), - // url: '/files', - // webpage: { - // enable: true, - // search: '/files/search', - // }, - // }); +const Page = async (props: DynamicLayoutProps) => { return ( ); }; -Page.DisplayName = 'DiscoverAssistants'; +Page.DisplayName = 'ApplicationSet'; export default Page; diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/assistants/features/Card.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/assistants/features/Card.tsx index bb052f2..46b1294 100644 --- a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/assistants/features/Card.tsx +++ b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/assistants/features/Card.tsx @@ -50,8 +50,8 @@ const useStyles = createStyles(({ css, token, isDarkMode }) => ({ border-radius: ${token.borderRadiusLG}px; background: ${token.colorBgContainer}; - box-shadow: 0 0 1px 1px ${isDarkMode ? token.colorFillQuaternary : token.colorFillSecondary} - inset; + + box-shadow: 1px 0px 12px 0px rgba(42, 77, 255, 0.19); transition: box-shadow 0.2s ${token.motionEaseInOut}; diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/assistants/features/List.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/assistants/features/List.tsx index cbc59be..0f86636 100644 --- a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/assistants/features/List.tsx +++ b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/assistants/features/List.tsx @@ -38,46 +38,46 @@ const List = memo(({ category, mobile, searchKeywords, items = [] }) }; }, [stData, mobile]); - useEffect(() => { - const fetchData = async() => { - if(category === "collect") { - const res = await request({ - method: "get", - params: { - userid: userId - }, - url: "/flxai/api/robot/appaiassistant/getAllAiAssistant" - }) - setStData(res?.data.map((item)=> { - item.classify = 'collect'; - return item - })) - } else { - const res = await request({ - method: "get", - params: { - userid: userId - }, - url: "/flxai/api/robot/appaiassistant/getAllAiAssistant" - }) - const array2Object = {}; - res?.data?.forEach((item) => { - array2Object[item.identifier] = item; - }); - setStData(stData?.map((item)=> { - const matchingItem = array2Object[item.identifier]; - if (matchingItem) { - matchingItem.status = '1'; - return matchingItem - } else { - item.status = '0'; - return item - } - })) - } - }; - fetchData(); - }, []); // 空数组[]意味着仅在组件挂载时调用一次 + // useEffect(() => { + // const fetchData = async() => { + // if(category === "collect") { + // const res = await request({ + // method: "get", + // params: { + // userid: userId + // }, + // url: "/flxai/api/robot/appaiassistant/getAllAiAssistant" + // }) + // setStData(res?.data.map((item)=> { + // item.classify = 'collect'; + // return item + // })) + // } else { + // const res = await request({ + // method: "get", + // params: { + // userid: userId + // }, + // url: "/flxai/api/robot/appaiassistant/getAllAiAssistant" + // }) + // const array2Object = {}; + // res?.data?.forEach((item) => { + // array2Object[item.identifier] = item; + // }); + // setStData(stData?.map((item)=> { + // const matchingItem = array2Object[item.identifier]; + // if (matchingItem) { + // matchingItem.status = '1'; + // return matchingItem + // } else { + // item.status = '0'; + // return item + // } + // })) + // } + // }; + // fetchData(); + // }, []); // 空数组[]意味着仅在组件挂载时调用一次 const handleClickCard = (item) => { console.log(item) @@ -110,7 +110,7 @@ const List = memo(({ category, mobile, searchKeywords, items = [] }) } return ( -
+
{category === "collect"?( <> 收藏列表 diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/assistants/page.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/assistants/page.tsx index bcac85b..41131cd 100644 --- a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/assistants/page.tsx +++ b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/assistants/page.tsx @@ -54,7 +54,7 @@ const Page = async (props: DiscoverPageProps) => { return ( <> - + ); }; diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/models/features/Card.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/models/features/Card.tsx index 16fb361..2668e16 100644 --- a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/models/features/Card.tsx +++ b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/models/features/Card.tsx @@ -39,8 +39,8 @@ const useStyles = createStyles(({ css, token, isDarkMode }) => ({ background: ${token.colorBgContainer}; border-radius: ${token.borderRadiusLG}px; - box-shadow: 0 0 1px 1px ${isDarkMode ? token.colorFillQuaternary : token.colorFillSecondary} - inset; + + box-shadow: 1px 0px 12px 0px rgba(42, 77, 255, 0.19); transition: box-shadow 0.2s ${token.motionEaseInOut}; @@ -144,7 +144,7 @@ const ModelCard = memo(({ className,socialData, meta, identifier } }; return ( - + (({ data }) => { const { t } = useTranslation('discover'); const items: MenuProps['items'] = [ { - icon: , + icon: , key: 'all', label: t('category.plugin.all'), }, + { + icon: , + key: 'collect', + label: t('category.plugin.collect'), + }, ...data.map((item) => ({ icon: ( ), diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/models/features/List.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/models/features/List.tsx index 65edb90..6682588 100644 --- a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/models/features/List.tsx +++ b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/models/features/List.tsx @@ -1,16 +1,18 @@ 'use client'; import { Empty } from 'antd'; -import { memo, useState } from 'react'; +import { memo, useState, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import urlJoin from 'url-join'; - +import { useRouter } from 'next/navigation'; import { DiscoverModelItem } from '@/types/discover'; - +import { Grid } from '@lobehub/ui'; import SearchResultCount from '../../../components/SearchResultCount'; import Title from '../../../components/Title'; import VirtuosoGridList from '../../../components/VirtuosoGridList'; import Card from './Card'; +import request from '@/app/request'; +import { useUserStore } from '@/store/user'; export interface ListProps { category?: string; @@ -18,26 +20,74 @@ export interface ListProps { mobile?: boolean; searchKeywords?: string; } +const getUserId = (s: { user?: { id?: any } }) => s.user?.id const List = memo(({ category, searchKeywords, items = [] }) => { const { t } = useTranslation('discover'); + const router = useRouter() + const userId = getUserId(useUserStore.getState()) const [stData, setStData] = useState(items) + // useEffect(() => { + // const fetchData = async() => { + // if(category === "collect") { + // const res = await request({ + // method: "get", + // params: { + // userid: userId + // }, + // url: "/flxai/api/robot/appaimodel/getAllAiModel", + // }) + // setStData(res?.data.map((item)=> { + // item.classify = 'collect'; + // return item + // })) + // // items = res.data; + // // items = items.map((item)=> { + // // item.classify = 'collect'; + // // return item + // // }) + // } else { + // const res = await request({ + // method: "get", + // params: { + // userid: userId + // }, + // url: "/flxai/api/robot/appaimodel/getAllAiModel", + // }) + // const array2Object = {}; + // res?.data?.forEach(item => { + // array2Object[item.identifier] = item; + // }); + // setStData(stData.map((item)=> { + // const matchingItem = array2Object[item.identifier]; + // if (matchingItem) { + // matchingItem.status = '1'; + // return matchingItem + // } else { + // item.status = '0'; + // return item + // } + // })) + // } + // }; + // fetchData(); + // }, []); // 空数组[]意味着仅在组件挂载时调用一次 + + const handleClickCard = (item) => { + console.log(item) + router.push(urlJoin('/discover/model/', item.identifier)) + } if (searchKeywords) { - if (!items || items?.length === 0) return ; + if (!stData || stData?.length === 0) return ; return ( <> - + ( - + handleClickCard(item)} showCategory {...item} /> )} style={{ minHeight: '75vh', @@ -48,24 +98,36 @@ const List = memo(({ category, searchKeywords, items = [] }) => { } return ( - <> - {t('models.list')} - ( - + {category === "collect"?( + <> + 收藏列表 + + {stData.map((item) => ( + // + handleClickCard(item)} showCategory={!category} {...item} /> + // + ))} + + + ):( + <> + {t('models.list')} + ( + // + handleClickCard(item)} showCategory={!category} {...item} /> + // + )} + style={{ + minHeight: '75vh', + }} /> - )} - style={{ - minHeight: '75vh', - }} - /> - + + )} +
); }); diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/_layout/Desktop.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/_layout/Desktop.tsx index b904acd..db5249b 100644 --- a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/_layout/Desktop.tsx +++ b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/_layout/Desktop.tsx @@ -8,7 +8,7 @@ const Layout = ({ children }: PropsWithChildren) => { return ( - + {children} diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/features/Card.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/features/Card.tsx index 3b6cb5d..cbbb02d 100644 --- a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/features/Card.tsx +++ b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/features/Card.tsx @@ -46,8 +46,8 @@ const useStyles = createStyles(({ css, token, isDarkMode }) => ({ background: ${token.colorBgContainer}; border-radius: ${token.borderRadiusLG}px; - box-shadow: 0 0 1px 1px ${isDarkMode ? token.colorFillQuaternary : token.colorFillSecondary} - inset; + + box-shadow: 1px 0px 12px 0px rgba(42, 77, 255, 0.19); transition: box-shadow 0.2s ${token.motionEaseInOut}; @@ -140,7 +140,7 @@ const PluginCard = memo( } }; return ( - + {!isCompact && } diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/features/List.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/features/List.tsx index 7544a07..7fdd09f 100644 --- a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/features/List.tsx +++ b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/features/List.tsx @@ -35,47 +35,47 @@ const List = memo(({ category, mobile, searchKeywords, items = [] }) }; }, [stData, mobile]); - useEffect(() => { - const fetchData = async() => { - if(category === "collect") { - const res = await request({ - method: "get", - params: { - userid: userId - }, - url: "/flxai/api/robot/appaiplugin/getAllAiPlugin", - }) - setStData(res?.data.map((item)=> { - item.classify = 'collect'; - return item - })) - } else { - const res = await request({ - method: "get", - params: { - userid: userId - }, - url: "/flxai/api/robot/appaiplugin/getAllAiPlugin", - }) - const array2Object = {}; - res?.data?.forEach((item) => { - array2Object[item.identifier] = item; - }); - // console.log('chajian22222222222222222222222222222--------------') - setStData(stData.map((item)=> { - const matchingItem = array2Object[item.identifier]; - if (matchingItem) { - matchingItem.status = '1'; - return matchingItem - } else { - item.status = '0'; - return item - } - })) - } - }; - fetchData(); - }, []); // 空数组[]意味着仅在组件挂载时调用一次 + // useEffect(() => { + // const fetchData = async() => { + // if(category === "collect") { + // const res = await request({ + // method: "get", + // params: { + // userid: userId + // }, + // url: "/flxai/api/robot/appaiplugin/getAllAiPlugin", + // }) + // setStData(res?.data.map((item)=> { + // item.classify = 'collect'; + // return item + // })) + // } else { + // const res = await request({ + // method: "get", + // params: { + // userid: userId + // }, + // url: "/flxai/api/robot/appaiplugin/getAllAiPlugin", + // }) + // const array2Object = {}; + // res?.data?.forEach((item) => { + // array2Object[item.identifier] = item; + // }); + // // console.log('chajian22222222222222222222222222222--------------') + // setStData(stData.map((item)=> { + // const matchingItem = array2Object[item.identifier]; + // if (matchingItem) { + // matchingItem.status = '1'; + // return matchingItem + // } else { + // item.status = '0'; + // return item + // } + // })) + // } + // }; + // fetchData(); + // }, []); // 空数组[]意味着仅在组件挂载时调用一次 // console.log('chajian999999999999999--------------',stData) @@ -109,7 +109,7 @@ const List = memo(({ category, mobile, searchKeywords, items = [] }) } return ( -
+
{category === "collect"?( <> 收藏列表 diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/features/useCategory.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/features/useCategory.tsx index 991b1a3..b9d3547 100644 --- a/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/features/useCategory.tsx +++ b/DigitalHumanWeb/src/app/[variants]/(main)/discover/(list)/plugins/features/useCategory.tsx @@ -10,6 +10,7 @@ import { ScanSearch, TwitterIcon, Umbrella, + Star } from 'lucide-react'; import { useTranslation } from 'react-i18next'; @@ -26,47 +27,52 @@ export const useCategory = (fontsize?: number) => { return [ { - icon: , + icon: , key: PluginCategory.All, label: t('category.plugin.all'), }, { - icon: , + icon: , + key: PluginCategory.Collect, + label: t('category.plugin.collect'), + }, + { + icon: , key: PluginCategory.MediaGenerate, label: t('category.plugin.media-generate'), }, { - icon: , + icon: , key: PluginCategory.WebSearch, label: t('category.plugin.web-search'), }, { - icon: , + icon: , key: PluginCategory.StocksFinance, label: t('category.plugin.stocks-finance'), }, { - icon: , + icon: , key: PluginCategory.Tools, label: t('category.plugin.tools'), }, { - icon: , + icon: , key: PluginCategory.LifeStyle, label: t('category.plugin.life-style'), }, { - icon: , + icon: , key: PluginCategory.ScienceEducation, label: t('category.plugin.science-education'), }, { - icon: , + icon: , key: PluginCategory.Social, label: t('category.plugin.social'), }, { - icon: , + icon: , key: PluginCategory.GamingEntertainment, label: t('category.plugin.gaming-entertainment'), }, diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/discover/_layout/Desktop/Header.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/discover/_layout/Desktop/Header.tsx index b63ce10..664491f 100644 --- a/DigitalHumanWeb/src/app/[variants]/(main)/discover/_layout/Desktop/Header.tsx +++ b/DigitalHumanWeb/src/app/[variants]/(main)/discover/_layout/Desktop/Header.tsx @@ -73,14 +73,14 @@ const Header = memo(() => { - 集智AI - - 111111 + {/*集智AI*/} + {/**/} + {/*{title[window.location.pathname]}*/}
} right={<> - } style={{ backgroundColor: '#90ACFF' }}/> - 张末末 + {/*} style={{ backgroundColor: '#90ACFF' }}/>*/} + {/*张末末*/} } style={{ background: '#fff', diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/discover/components/CategoryContainer.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/discover/components/CategoryContainer.tsx index 1bcf476..752cf65 100644 --- a/DigitalHumanWeb/src/app/[variants]/(main)/discover/components/CategoryContainer.tsx +++ b/DigitalHumanWeb/src/app/[variants]/(main)/discover/components/CategoryContainer.tsx @@ -7,7 +7,7 @@ const CategoryContainer = memo>(({ children, as={'aside'} flex={'none'} height={`calc(100vh - ${top * 2 + 4}px)`} - style={{ overflowX: 'hidden', overflowY: 'hidden', position: 'sticky', top }} + style={{ overflowX: 'hidden', overflowY: 'hidden', position: 'fixed', width: '180px', height: '100vh', backgroundColor: '#fff', borderBottom: "2px solid #ddd" }} width={220} > {children} diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/welcome/_layout/Desktop.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/welcome/_layout/Desktop.tsx deleted file mode 100644 index 8c1c479..0000000 --- a/DigitalHumanWeb/src/app/[variants]/(main)/welcome/_layout/Desktop.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { GridShowcase } from '@lobehub/ui'; -import { PropsWithChildren } from 'react'; -import { Flexbox } from 'react-layout-kit'; - -import { ORG_NAME } from '@/const/branding'; -import { isCustomORG } from '@/const/version'; -import Follow from '@/features/Follow'; - -const COPYRIGHT = `© ${new Date().getFullYear()} ${ORG_NAME}`; - -const DesktopLayout = ({ children }: PropsWithChildren) => { - return ( - <> - -
- - {children} - - - {COPYRIGHT} - {isCustomORG ?
: } - - - {/* ↓ cloud slot ↓ */} - - {/* ↑ cloud slot ↑ */} - - ); -}; - -export default DesktopLayout; diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/welcome/_layout/Mobile.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/welcome/_layout/Mobile.tsx deleted file mode 100644 index 065caac..0000000 --- a/DigitalHumanWeb/src/app/[variants]/(main)/welcome/_layout/Mobile.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { PropsWithChildren } from 'react'; -import { Center } from 'react-layout-kit'; - -const MobileLayout = ({ children }: PropsWithChildren) => { - return ( -
- {children} -
- ); -}; - -export default MobileLayout; diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/welcome/features/Actions.test.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/welcome/features/Actions.test.tsx deleted file mode 100644 index d15a8aa..0000000 --- a/DigitalHumanWeb/src/app/[variants]/(main)/welcome/features/Actions.test.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import { act, cleanup, fireEvent, render, renderHook, screen } from '@testing-library/react'; -import { afterEach, beforeAll, describe, expect, it, vi } from 'vitest'; - -import { - Provider, - createServerConfigStore, - initServerConfigStore, -} from '@/store/serverConfig/store'; - -import Actions from './Actions'; - -beforeAll(() => { - initServerConfigStore({ featureFlags: { market: true } }); -}); - -beforeEach(() => { - vi.clearAllMocks(); -}); - -afterEach(() => { - createServerConfigStore().setState({ featureFlags: { market: true } }); - cleanup(); -}); - -vi.mock('next/link', () => ({ - default: vi.fn(({ children }: { children: React.ReactNode }) =>
{children}
), -})); - -vi.mock('react-i18next', () => ({ - useTranslation: vi.fn(() => ({ - t: vi.fn((key) => key), - })), -})); - -const push = vi.fn(); - -vi.mock('next/navigation', () => ({ - useRouter: vi.fn(() => ({ - push, - })), -})); - -const renderActions = (props: { mobile?: boolean }) => { - render( - - - , - ); -}; - -describe('Welcome Actions', () => { - it('should render Start and Market button', () => { - renderActions({}); - - expect(screen.getByText('button.start')).toBeInTheDocument(); - expect(screen.getByText('button.market')).toBeInTheDocument(); - }); - - it('should render Start when `-market` is set', () => { - act(() => { - createServerConfigStore().setState({ featureFlags: { market: false } }); - }); - - renderActions({}); - - expect(screen.getByText('button.start')).toBeInTheDocument(); - expect(screen.queryByText('button.market')).not.toBeInTheDocument(); - }); - - it('Clicking start button should push to `/chat`', () => { - renderActions({}); - - fireEvent.click(screen.getByText('button.start')); - - expect(push).toHaveBeenCalledWith('/chat'); - }); -}); diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/welcome/features/Actions.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/welcome/features/Actions.tsx deleted file mode 100644 index 40bbd70..0000000 --- a/DigitalHumanWeb/src/app/[variants]/(main)/welcome/features/Actions.tsx +++ /dev/null @@ -1,37 +0,0 @@ -'use client'; - -import { Icon } from '@lobehub/ui'; -import { Button } from 'antd'; -import { SendHorizonal } from 'lucide-react'; -// import Link from 'next/link'; -import { useRouter } from 'next/navigation'; -import { memo } from 'react'; -import { useTranslation } from 'react-i18next'; -import { Flexbox } from 'react-layout-kit'; - -// import { featureFlagsSelectors, useServerConfigStore } from '@/store/serverConfig'; - -const Actions = memo<{ mobile?: boolean }>(({ mobile }) => { - const { t } = useTranslation('welcome'); - const router = useRouter(); - // const { showMarket } = useServerConfigStore(featureFlagsSelectors); - - return ( - - - - ); -}); - -export default Actions; diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/welcome/features/Hero.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/welcome/features/Hero.tsx deleted file mode 100644 index a8478ae..0000000 --- a/DigitalHumanWeb/src/app/[variants]/(main)/welcome/features/Hero.tsx +++ /dev/null @@ -1,65 +0,0 @@ -'use client'; - -import { createStyles } from 'antd-style'; -import { rgba } from 'polished'; -import { memo } from 'react'; -import { useTranslation } from 'react-i18next'; -import { Flexbox } from 'react-layout-kit'; - -import { BRANDING_NAME } from '@/const/branding'; - -const useStyles = createStyles(({ css, token }) => { - return { - desc: css` - font-size: min(24px, 4vw); - font-weight: 400; - color: ${rgba(token.colorText, 0.8)}; - text-align: center; - text-wrap: balance; - `, - title: css` - margin-block-end: 0; - - font-size: min(56px, 7vw); - font-weight: 800; - line-height: 1; - text-align: center; - text-wrap: balance; - `, - }; -}); - -const Hero = memo(() => { - const { styles } = useStyles(); - - const { t } = useTranslation('welcome'); - - return ( - <> - - {BRANDING_NAME} - {t('slogan.title')} - - - {t('slogan.desc1')} - - - ); -}); - -export default Hero; diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/welcome/layout.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/welcome/layout.tsx deleted file mode 100644 index e0f499d..0000000 --- a/DigitalHumanWeb/src/app/[variants]/(main)/welcome/layout.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import ServerLayout from '@/components/server/ServerLayout'; - -import Desktop from './_layout/Desktop'; -import Mobile from './_layout/Mobile'; - -const WelcomeLayout = ServerLayout({ Desktop, Mobile }); - -WelcomeLayout.displayName = 'WelcomeLayout'; - -export default WelcomeLayout; diff --git a/DigitalHumanWeb/src/app/[variants]/(main)/welcome/page.tsx b/DigitalHumanWeb/src/app/[variants]/(main)/welcome/page.tsx deleted file mode 100644 index cd73e57..0000000 --- a/DigitalHumanWeb/src/app/[variants]/(main)/welcome/page.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { WelcomeLogo } from '@/components/Branding'; -import StructuredData from '@/components/StructuredData'; -import { BRANDING_NAME } from '@/const/branding'; -import { ldModule } from '@/server/ld'; -import { metadataModule } from '@/server/metadata'; -import { translation } from '@/server/translation'; -import { isMobileDevice } from '@/utils/responsive'; - -import Actions from './features/Actions'; -import Hero from './features/Hero'; -import { DynamicLayoutProps } from "@/types/next" -import {RouteVariants} from "@/utils/server/routeVariants"; - -export const generateMetadata = async (props: DynamicLayoutProps) => { - const locale = await RouteVariants.getLocale(props) - const { t } = await translation('setting', 'locale'); - return metadataModule.generate({ - description: t('welcome.description' ), - title: t('welcome.title' ), - url: '/welcome', - }); -}; - -const Page = async () => { - const mobile = isMobileDevice(); - const { t } = await translation('metadata'); - const ld = ldModule.generate({ - description: t('welcome.description', { appName: BRANDING_NAME }), - title: t('welcome.title', { appName: BRANDING_NAME }), - url: '/welcome', - }); - - return ( - <> - - - - - - ); -}; - -Page.displayName = 'Welcome'; - -export default Page; diff --git a/DigitalHumanWeb/src/features/User/UserPanel/index.tsx b/DigitalHumanWeb/src/features/User/UserPanel/index.tsx index 489316c..b3f14d6 100644 --- a/DigitalHumanWeb/src/features/User/UserPanel/index.tsx +++ b/DigitalHumanWeb/src/features/User/UserPanel/index.tsx @@ -30,7 +30,7 @@ const UserPanel = memo(({ children }) => { placement={'topRight'} rootClassName={styles.popover} styles={{ - body: { padding: 0 }, + body: { padding: 0, position: "absolute", top: "50px", right: "-100vw" }, }} trigger={['click']} > diff --git a/DigitalHumanWeb/src/types/discover.ts b/DigitalHumanWeb/src/types/discover.ts index 696587e..4b93521 100644 --- a/DigitalHumanWeb/src/types/discover.ts +++ b/DigitalHumanWeb/src/types/discover.ts @@ -33,6 +33,7 @@ export enum AssistantCategory { export enum PluginCategory { All = 'all', + Collect = 'collect', GamingEntertainment = 'gaming-entertainment', LifeStyle = 'lifestyle', MediaGenerate = 'media-generate', diff --git a/DigitalHumanWeb/tsconfig.json b/DigitalHumanWeb/tsconfig.json index 3ba5398..e140d47 100644 --- a/DigitalHumanWeb/tsconfig.json +++ b/DigitalHumanWeb/tsconfig.json @@ -5,7 +5,7 @@ "lib": ["dom", "dom.iterable", "esnext", "webworker"], "allowJs": true, "skipLibCheck": true, - "strict": true, + "strict": false, "forceConsistentCasingInFileNames": true, "noEmit": true, "esModuleInterop": true,