|
|
|
@ -1,25 +1,29 @@
|
|
|
|
|
import { ActionIcon } from '@lobehub/ui';
|
|
|
|
|
import { Compass, FolderClosed, MessageSquare } from 'lucide-react';
|
|
|
|
|
// import { ActionIcon } from '@lobehub/ui';
|
|
|
|
|
// import { Compass, FolderClosed, MessageSquare } from 'lucide-react';
|
|
|
|
|
import Link from 'next/link';
|
|
|
|
|
import {memo, useEffect, useState} from 'react';
|
|
|
|
|
import {memo, useState} from 'react';
|
|
|
|
|
import { useTranslation } from 'react-i18next';
|
|
|
|
|
|
|
|
|
|
import { useGlobalStore } from '@/store/global';
|
|
|
|
|
import { SidebarTabKey } from '@/store/global/initialState';
|
|
|
|
|
import { featureFlagsSelectors, useServerConfigStore } from '@/store/serverConfig';
|
|
|
|
|
import { useSessionStore } from '@/store/session';
|
|
|
|
|
import { useUserStore } from '@/store/user';
|
|
|
|
|
import { createStyles } from 'antd-style';
|
|
|
|
|
import {Button, Image} from "antd";
|
|
|
|
|
import { Image } from "antd";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const useStyles = createStyles(({ css, token }) => ({
|
|
|
|
|
const useStyles = createStyles(({ css }) => ({
|
|
|
|
|
iconImg: css`
|
|
|
|
|
width: 48px;
|
|
|
|
|
height: 48px;
|
|
|
|
|
`,
|
|
|
|
|
iconText: css`
|
|
|
|
|
text-align: center;
|
|
|
|
|
color: #fff;
|
|
|
|
|
`,
|
|
|
|
|
iconImg: css`
|
|
|
|
|
width: 48px;
|
|
|
|
|
height: 48px;
|
|
|
|
|
iconSelectText: css`
|
|
|
|
|
color: #0044FF;
|
|
|
|
|
`,
|
|
|
|
|
linkUrl: css`
|
|
|
|
|
width: 100%;
|
|
|
|
@ -28,28 +32,26 @@ const useStyles = createStyles(({ css, token }) => ({
|
|
|
|
|
linkclic: css`
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
`,
|
|
|
|
|
iconSelectText: css`
|
|
|
|
|
color: #0044FF;
|
|
|
|
|
`,
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
export interface TopActionProps {
|
|
|
|
|
tab?: SidebarTabKey;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const TopActions = memo<TopActionProps>(({ tab }) => {
|
|
|
|
|
const getUserId = (s) => s.user?.id
|
|
|
|
|
const TopActions = memo<TopActionProps>(() => {
|
|
|
|
|
const { t } = useTranslation('common');
|
|
|
|
|
const switchBackToChat = useGlobalStore((s) => s.switchBackToChat);
|
|
|
|
|
const { showMarket, enableKnowledgeBase } = useServerConfigStore(featureFlagsSelectors);
|
|
|
|
|
const { styles, cx } = useStyles()
|
|
|
|
|
const [value, setValue] = useState("chat")
|
|
|
|
|
|
|
|
|
|
const userId = getUserId(useUserStore.getState())
|
|
|
|
|
console.log(userId,'3837373266262266')
|
|
|
|
|
return (
|
|
|
|
|
<div style={{ width: '100%', textAlign: 'center'}}>
|
|
|
|
|
<div style={{ textAlign: 'center', width: '100%'}}>
|
|
|
|
|
<Link
|
|
|
|
|
aria-label={t('tab.chat')}
|
|
|
|
|
className={value === '/chat' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)}
|
|
|
|
|
href={'/chat'}
|
|
|
|
|
className={value == '/chat' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)}
|
|
|
|
|
onClick={(e) => {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
setValue("/chat")
|
|
|
|
@ -58,48 +60,48 @@ const TopActions = memo<TopActionProps>(({ tab }) => {
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
<Image alt={"chat"} className={cx(styles.iconImg)} preview={false} src="/images/hh.png" />
|
|
|
|
|
<div className={value == '/chat' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>会话</div>
|
|
|
|
|
<div className={value === '/chat' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>会话</div>
|
|
|
|
|
</Link>
|
|
|
|
|
{enableKnowledgeBase && (
|
|
|
|
|
<Link className={value == '/discover/assistants' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)} aria-label={t('tab.files')} href={`/discover/assistants?userid=${localStorage.getItem('userId')}`} onClick={() => {setValue("/discover/assistants"); window.localStorage.setItem("nowChat", "")}}>
|
|
|
|
|
<Link aria-label={t('tab.files')} className={value === '/discover/assistants' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)} href={`/discover/assistants?userid=${userId}`} onClick={() => {setValue("/discover/assistants"); window.localStorage.setItem("nowChat", "")}}>
|
|
|
|
|
<Image alt={"files"} className={cx(styles.iconImg)} preview={false} src="/images/zs.png" />
|
|
|
|
|
<div className={value == '/discover/assistants' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>助手</div>
|
|
|
|
|
<div className={value === '/discover/assistants' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>助手</div>
|
|
|
|
|
</Link>
|
|
|
|
|
)}
|
|
|
|
|
{showMarket && (
|
|
|
|
|
<Link className={value == '/files' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)} aria-label={t('tab.discover')} href={'/files'} onClick={() => {setValue("/files"); window.localStorage.setItem("nowChat", "")}}>
|
|
|
|
|
<Link aria-label={t('tab.discover')} className={value === '/files' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)} href={'/files'} onClick={() => {setValue("/files"); window.localStorage.setItem("nowChat", "")}}>
|
|
|
|
|
<Image alt={"discover"} className={cx(styles.iconImg)} preview={false} src="/images/gj.png" />
|
|
|
|
|
<div className={value == '/files' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>工具</div>
|
|
|
|
|
<div className={value === '/files' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>工具</div>
|
|
|
|
|
</Link>
|
|
|
|
|
)}
|
|
|
|
|
{showMarket && (
|
|
|
|
|
<Link className={value == '/model' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)} aria-label={t('tab.Model')} href={'/model'} onClick={() => {setValue("/model"); window.localStorage.setItem("nowChat", "")}}>
|
|
|
|
|
<Link aria-label={t('tab.Model')} className={value === '/model' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)} href={`/discover/models?userid=${userId}`} onClick={() => {setValue("/model"); window.localStorage.setItem("nowChat", "")}}>
|
|
|
|
|
<Image alt={"model"} className={cx(styles.iconImg)} preview={false} src="/images/mx.png" />
|
|
|
|
|
<div className={value == '/model' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>模型</div>
|
|
|
|
|
<div className={value === '/model' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>模型</div>
|
|
|
|
|
</Link>
|
|
|
|
|
)}
|
|
|
|
|
{showMarket && (
|
|
|
|
|
<Link className={value == '/robot' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)} aria-label={t('tab.robot')} href={'/robot'} onClick={() => {setValue("/robot"); window.localStorage.setItem("nowChat", "")}}>
|
|
|
|
|
<Link aria-label={t('tab.robot')} className={value === '/robot' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)} href={'/robot'} onClick={() => {setValue("/robot"); window.localStorage.setItem("nowChat", "")}}>
|
|
|
|
|
<Image alt={"robot"} className={cx(styles.iconImg)} preview={false} src="/images/szr.png" />
|
|
|
|
|
<div className={value == '/robot' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>数字人</div>
|
|
|
|
|
<div className={value === '/robot' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>数字人</div>
|
|
|
|
|
</Link>
|
|
|
|
|
)}
|
|
|
|
|
{showMarket && (
|
|
|
|
|
<Link className={value == '/plugins' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)} aria-label={t('tab.Plugins')} href={'/discover/plugins'} onClick={() => {setValue("/plugins"); window.localStorage.setItem("nowChat", "")}}>
|
|
|
|
|
<Link aria-label={t('tab.Plugins')} className={value === '/plugins' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)} href={`/discover/plugins?userid=${userId}`} onClick={() => {setValue("/plugins"); window.localStorage.setItem("nowChat", "")}}>
|
|
|
|
|
<Image alt={"plugins"} className={cx(styles.iconImg)} preview={false} src="/images/cj.png" />
|
|
|
|
|
<div className={value == '/plugins' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>插件</div>
|
|
|
|
|
<div className={value === '/plugins' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>插件</div>
|
|
|
|
|
</Link>
|
|
|
|
|
)}
|
|
|
|
|
{showMarket && (
|
|
|
|
|
<Link className={value == '/power' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)} aria-label={t('tab.Power')} href={'/power'} onClick={() => {setValue("/power"); window.localStorage.setItem("nowChat", "")}}>
|
|
|
|
|
<Link aria-label={t('tab.Power')} className={value === '/power' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)} href={'/power'} onClick={() => {setValue("/power"); window.localStorage.setItem("nowChat", "")}}>
|
|
|
|
|
<Image alt={"power"} className={cx(styles.iconImg)} preview={false} src="/images/sl.png" />
|
|
|
|
|
<div className={value == '/power' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>算力</div>
|
|
|
|
|
<div className={value === '/power' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>算力</div>
|
|
|
|
|
</Link>
|
|
|
|
|
)}
|
|
|
|
|
{showMarket && (
|
|
|
|
|
<Link className={value == '/knowledge' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)} aria-label={t('tab.knowledge')} href={'/knowledge'} onClick={() => {setValue("/knowledge")}}>
|
|
|
|
|
<Link aria-label={t('tab.knowledge')} className={value === '/knowledge' ? cx(styles.linkUrl, styles.linkclic) : cx(styles.linkUrl)} href={'/knowledge'} onClick={() => {setValue("/knowledge")}}>
|
|
|
|
|
<Image className={cx(styles.iconImg)} preview={false} src="/images/zsk.png" />
|
|
|
|
|
<div className={value == '/knowledge' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>知识库</div>
|
|
|
|
|
<div className={value === '/knowledge' ? cx(styles.iconText, styles.iconSelectText) : cx(styles.iconText) }>知识库</div>
|
|
|
|
|
</Link>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|