@lobehub/chat 0.83.8 → 0.83.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +62 -0
- package/package.json +2 -2
- package/src/app/chat/(desktop)/features/{ChatHeader/Desktop.tsx → ChatHeader.tsx} +2 -2
- package/src/app/chat/(desktop)/features/{ChatInput/Desktop.tsx → ChatInput.tsx} +5 -7
- package/src/app/chat/(desktop)/features/{SessionHeader/Desktop.tsx → SessionHeader.tsx} +1 -1
- package/src/app/chat/(desktop)/features/{SessionList/Desktop.tsx → SessionList.tsx} +5 -4
- package/src/app/chat/(desktop)/features/{SideBar/Desktop.tsx → SideBar.tsx} +5 -4
- package/src/app/chat/(desktop)/index.tsx +14 -8
- package/src/app/chat/(desktop)/{layout/Desktop.tsx → layout.desktop.tsx} +7 -8
- package/src/app/chat/(desktop)/layout.responsive.tsx +12 -0
- package/src/app/chat/(mobile)/features/ChatHeader.tsx +54 -1
- package/src/app/chat/(mobile)/features/ChatInput.tsx +28 -8
- package/src/app/chat/(mobile)/features/SessionList.tsx +13 -8
- package/src/app/chat/{components/Inspector/Mobile.tsx → (mobile)/features/TopicList.tsx} +6 -4
- package/src/app/chat/(mobile)/index.tsx +3 -5
- package/src/app/chat/(mobile)/layout.mobile.tsx +17 -0
- package/src/app/chat/(mobile)/mobile/index.tsx +19 -0
- package/src/app/chat/(mobile)/mobile/layout.mobile.tsx +11 -0
- package/src/app/chat/(mobile)/mobile/page.tsx +2 -20
- package/src/app/chat/{components → features}/ChatHeader/ShareButton/Preview.tsx +25 -9
- package/src/app/chat/{components → features}/ChatHeader/ShareButton/style.ts +7 -7
- package/src/app/chat/{components/ChatInput → features/ChatInputContent}/index.tsx +3 -1
- package/src/app/chat/{components/SessionList → features/SessionListContent}/Inbox/index.tsx +7 -5
- package/src/app/chat/{components/SessionList → features/SessionListContent}/index.tsx +3 -1
- package/src/app/chat/{components/Inspector → features/TopicListContent}/index.tsx +3 -1
- package/src/app/chat/page.tsx +3 -1
- package/src/app/chat/settings/(desktop)/index.tsx +14 -0
- package/src/app/chat/settings/(desktop)/layout.desktop.tsx +10 -15
- package/src/app/chat/settings/(desktop)/layout.responsive.tsx +12 -0
- package/src/app/chat/settings/(mobile)/index.tsx +14 -0
- package/src/app/chat/settings/(mobile)/layout.mobile.tsx +4 -8
- package/src/app/chat/settings/features/EditPage.tsx +38 -0
- package/src/app/chat/settings/page.tsx +9 -33
- package/src/app/market/{features/SideBar/Desktop.tsx → (desktop)/features/AgentDetail.tsx} +5 -3
- package/src/app/market/(desktop)/index.tsx +12 -0
- package/src/app/market/{layout.desktop/Desktop.tsx → (desktop)/layout.desktop.tsx} +5 -5
- package/src/app/market/(desktop)/layout.responsive.tsx +16 -0
- package/src/app/market/{features/SideBar/Mobile.tsx → (mobile)/features/AgentDetail.tsx} +6 -4
- package/src/app/market/(mobile)/index.tsx +12 -0
- package/src/app/market/{layout.mobile.tsx → (mobile)/layout.mobile.tsx} +5 -5
- package/src/app/market/features/{SideBar → AgentDetailContent}/AgentInfo/Header.tsx +1 -0
- package/src/app/market/features/{SideBar → AgentDetailContent}/AgentInfo/index.tsx +1 -1
- package/src/app/market/features/AgentDetailContent/index.tsx +12 -0
- package/src/app/market/features/TagList/index.tsx +2 -1
- package/src/app/market/page.tsx +8 -5
- package/src/app/settings/{features/Header/Desktop.tsx → (desktop)/features/Header.tsx} +2 -2
- package/src/app/settings/(desktop)/index.tsx +17 -0
- package/src/app/settings/{layout.desktop/Desktop.tsx → (desktop)/layout.desktop.tsx} +10 -9
- package/src/app/settings/(desktop)/layout.responsive.tsx +14 -0
- package/src/app/settings/{mobile → (mobile)/features}/ExtraList.tsx +1 -1
- package/src/app/settings/(mobile)/features/Header/Home.tsx +8 -0
- package/src/app/settings/{features/Header/Mobile.tsx → (mobile)/features/Header/index.tsx} +1 -0
- package/src/app/settings/(mobile)/index.tsx +3 -0
- package/src/app/settings/(mobile)/layout.mobile.tsx +19 -0
- package/src/app/settings/{mobile → (mobile)/mobile}/index.tsx +7 -7
- package/src/app/settings/(mobile)/mobile/layout.mobile.tsx +14 -0
- package/src/app/settings/agent/Agent.tsx +30 -0
- package/src/app/settings/agent/index.tsx +23 -0
- package/src/app/settings/agent/layout.tsx +1 -0
- package/src/app/settings/agent/page.tsx +2 -31
- package/src/app/settings/common/index.tsx +23 -0
- package/src/app/settings/common/layout.tsx +1 -0
- package/src/app/settings/common/page.tsx +2 -14
- package/src/app/settings/layout.server.tsx +12 -0
- package/src/app/settings/llm/index.tsx +23 -0
- package/src/app/settings/llm/layout.tsx +1 -0
- package/src/app/settings/llm/page.tsx +2 -14
- package/src/app/settings/page.tsx +14 -1
- package/src/app/welcome/(desktop)/features/Showcase.tsx +23 -0
- package/src/app/welcome/(desktop)/index.tsx +19 -0
- package/src/app/welcome/{DesktopLayout/Desktop.tsx → (desktop)/layout.desktop.tsx} +4 -4
- package/src/app/welcome/(desktop)/layout.responsive.tsx +14 -0
- package/src/app/welcome/(mobile)/features/Header.tsx +6 -0
- package/src/app/welcome/(mobile)/features/Showcase.tsx +16 -0
- package/src/app/welcome/(mobile)/index.tsx +10 -0
- package/src/app/welcome/(mobile)/layout.mobile.tsx +20 -0
- package/src/app/welcome/features/Banner/Hero.tsx +2 -3
- package/src/app/welcome/features/Banner/index.tsx +34 -31
- package/src/app/welcome/features/Banner/style.ts +10 -1
- package/src/app/welcome/page.tsx +9 -7
- package/src/components/ResponsiveIndex.tsx +17 -0
- package/src/features/MobileTabBar/index.tsx +1 -1
- package/src/features/SideBar/BottomActions.tsx +1 -1
- package/src/layout/{AppLayout.tsx → AppLayout.desktop.tsx} +2 -2
- package/src/layout/{AppMobileLayout.tsx → AppLayout.mobile.tsx} +2 -2
- package/src/layout/GlobalLayout/StoreHydration.tsx +15 -1
- package/src/layout/ResponsiveLayout.client.tsx +18 -0
- package/src/{components/ResponsiveLayout.tsx → layout/ResponsiveLayout.server.tsx} +5 -4
- package/src/store/session/slices/session/initialState.ts +2 -2
- package/src/app/chat/(desktop)/features/ChatHeader/index.tsx +0 -14
- package/src/app/chat/(desktop)/features/ChatInput/index.tsx +0 -22
- package/src/app/chat/(desktop)/features/SessionHeader/index.tsx +0 -14
- package/src/app/chat/(desktop)/features/SessionList/index.tsx +0 -20
- package/src/app/chat/(desktop)/features/SideBar/index.tsx +0 -20
- package/src/app/chat/(desktop)/layout/index.tsx +0 -25
- package/src/app/chat/(mobile)/features/Topics.tsx +0 -12
- package/src/app/chat/(mobile)/layout.tsx +0 -15
- package/src/app/chat/components/ChatHeader/Mobile.tsx +0 -54
- package/src/app/chat/components/ChatInput/Mobile.tsx +0 -35
- package/src/app/chat/components/SessionList/Mobile.tsx +0 -16
- package/src/app/chat/layout.tsx +0 -15
- package/src/app/chat/settings/layout.tsx +0 -14
- package/src/app/market/features/Header/index.tsx +0 -13
- package/src/app/market/features/SideBar/index.tsx +0 -23
- package/src/app/market/layout.desktop/index.tsx +0 -17
- package/src/app/market/layout.tsx +0 -13
- package/src/app/settings/features/Header/index.tsx +0 -14
- package/src/app/settings/layout.desktop/index.tsx +0 -32
- package/src/app/settings/layout.mobile.tsx +0 -16
- package/src/app/settings/layout.tsx +0 -15
- package/src/app/settings/mobile/page.tsx +0 -7
- package/src/app/welcome/DesktopLayout/index.tsx +0 -15
- package/src/app/welcome/MobileLayout.tsx +0 -23
- package/src/app/welcome/layout.tsx +0 -22
- /package/src/app/chat/{components → features}/ChatHeader/PluginTag/PluginStatus.tsx +0 -0
- /package/src/app/chat/{components → features}/ChatHeader/PluginTag/index.tsx +0 -0
- /package/src/app/chat/{components → features}/ChatHeader/ShareButton/Inner.tsx +0 -0
- /package/src/app/chat/{components → features}/ChatHeader/ShareButton/index.tsx +0 -0
- /package/src/app/chat/{components/ChatInput → features/ChatInputContent}/ActionBar/ActionLeft.tsx +0 -0
- /package/src/app/chat/{components/ChatInput → features/ChatInputContent}/ActionBar/ActionRight.tsx +0 -0
- /package/src/app/chat/{components/ChatInput → features/ChatInputContent}/ActionBar/Token.tsx +0 -0
- /package/src/app/chat/{components/ChatInput → features/ChatInputContent}/Footer/SaveTopic.tsx +0 -0
- /package/src/app/chat/{components/ChatInput → features/ChatInputContent}/Footer/index.tsx +0 -0
- /package/src/app/chat/features/{PageTitle.tsx → PageTitle/index.tsx} +0 -0
- /package/src/app/chat/{components/SessionList → features/SessionListContent}/CollapseGroup/index.tsx +0 -0
- /package/src/app/chat/{components/SessionList → features/SessionListContent}/List/AddButton.tsx +0 -0
- /package/src/app/chat/{components/SessionList → features/SessionListContent}/List/Item/Actions.tsx +0 -0
- /package/src/app/chat/{components/SessionList → features/SessionListContent}/List/Item/index.tsx +0 -0
- /package/src/app/chat/{components/SessionList → features/SessionListContent}/List/SkeletonList.tsx +0 -0
- /package/src/app/chat/{components/SessionList → features/SessionListContent}/List/index.tsx +0 -0
- /package/src/app/chat/{components/Inspector → features/TopicListContent}/SystemRole/Header.tsx +0 -0
- /package/src/app/chat/{components/Inspector → features/TopicListContent}/SystemRole/index.tsx +0 -0
- /package/src/app/chat/{components/Inspector → features/TopicListContent}/SystemRole/style.ts +0 -0
- /package/src/app/chat/{components/Inspector → features/TopicListContent}/Topic/DefaultContent.tsx +0 -0
- /package/src/app/chat/{components/Inspector → features/TopicListContent}/Topic/SkeletonList.tsx +0 -0
- /package/src/app/chat/{components/Inspector → features/TopicListContent}/Topic/TopicContent.tsx +0 -0
- /package/src/app/chat/{components/Inspector → features/TopicListContent}/Topic/TopicItem.tsx +0 -0
- /package/src/app/chat/{components/Inspector → features/TopicListContent}/Topic/index.tsx +0 -0
- /package/src/app/chat/{components/Inspector → features/TopicListContent}/TopicSearchBar/index.tsx +0 -0
- /package/src/app/market/{features/Header/Desktop.tsx → (desktop)/features/Header.tsx} +0 -0
- /package/src/app/market/{features/Header/Mobile.tsx → (mobile)/features/Header.tsx} +0 -0
- /package/src/app/market/features/{SideBar → AgentDetailContent}/AgentInfo/Comment.tsx +0 -0
- /package/src/app/market/features/{SideBar → AgentDetailContent}/AgentInfo/Loading.tsx +0 -0
- /package/src/app/market/features/{SideBar → AgentDetailContent}/AgentInfo/TokenTag.tsx +0 -0
- /package/src/app/market/features/{SideBar → AgentDetailContent}/AgentInfo/style.ts +0 -0
- /package/src/app/welcome/{features/Footer/index.tsx → (desktop)/features/Footer.tsx} +0 -0
|
@@ -19,7 +19,7 @@ interface ChatContentProps {
|
|
|
19
19
|
onExpandChange?: (expand: boolean) => void;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
const ChatInputContent = memo<ChatContentProps>(
|
|
23
23
|
({ expand, onExpandChange, mobile: defaultMobile }) => {
|
|
24
24
|
const { t } = useTranslation('common');
|
|
25
25
|
|
|
@@ -63,3 +63,5 @@ export const ChatInputContent = memo<ChatContentProps>(
|
|
|
63
63
|
);
|
|
64
64
|
},
|
|
65
65
|
);
|
|
66
|
+
|
|
67
|
+
export default ChatInputContent;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Avatar, List } from '@lobehub/ui';
|
|
2
2
|
import { useHover } from 'ahooks';
|
|
3
|
+
import { useResponsive } from 'antd-style';
|
|
3
4
|
import Link from 'next/link';
|
|
4
5
|
import { memo, useMemo, useRef } from 'react';
|
|
5
6
|
import { useTranslation } from 'react-i18next';
|
|
@@ -15,10 +16,10 @@ const Inbox = memo(() => {
|
|
|
15
16
|
const ref = useRef(null);
|
|
16
17
|
const isHovering = useHover(ref);
|
|
17
18
|
const { t } = useTranslation('common');
|
|
18
|
-
|
|
19
|
-
const [
|
|
20
|
-
s.isMobile,
|
|
19
|
+
const { mobile } = useResponsive();
|
|
20
|
+
const [activeId, activeSession, switchSession] = useSessionStore((s) => [
|
|
21
21
|
s.activeId,
|
|
22
|
+
s.activeSession,
|
|
22
23
|
s.switchSession,
|
|
23
24
|
]);
|
|
24
25
|
|
|
@@ -39,11 +40,12 @@ const Inbox = memo(() => {
|
|
|
39
40
|
href={SESSION_CHAT_URL(INBOX_SESSION_ID, mobile)}
|
|
40
41
|
onClick={(e) => {
|
|
41
42
|
e.preventDefault();
|
|
42
|
-
switchSession(INBOX_SESSION_ID);
|
|
43
|
+
if (mobile) switchSession(INBOX_SESSION_ID);
|
|
44
|
+
else activeSession(INBOX_SESSION_ID);
|
|
43
45
|
}}
|
|
44
46
|
>
|
|
45
47
|
<Item
|
|
46
|
-
active={activeId === INBOX_SESSION_ID}
|
|
48
|
+
active={mobile ? false : activeId === INBOX_SESSION_ID}
|
|
47
49
|
avatar={avatarRender}
|
|
48
50
|
ref={ref}
|
|
49
51
|
style={{ alignItems: 'center' }}
|
|
@@ -6,7 +6,7 @@ import CollapseGroup from './CollapseGroup';
|
|
|
6
6
|
import Inbox from './Inbox';
|
|
7
7
|
import SessionList from './List';
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
const SessionListContent = memo(() => {
|
|
10
10
|
const { t } = useTranslation('common');
|
|
11
11
|
const items: CollapseProps['items'] = useMemo(
|
|
12
12
|
() => [
|
|
@@ -26,3 +26,5 @@ export const SessionListContent = memo(() => {
|
|
|
26
26
|
</>
|
|
27
27
|
);
|
|
28
28
|
});
|
|
29
|
+
|
|
30
|
+
export default SessionListContent;
|
|
@@ -3,7 +3,7 @@ import { Flexbox } from 'react-layout-kit';
|
|
|
3
3
|
import { Topic } from './Topic';
|
|
4
4
|
import TopicSearchBar from './TopicSearchBar';
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
const TopicListContent = () => {
|
|
7
7
|
return (
|
|
8
8
|
<Flexbox height={'100%'} style={{ overflow: 'hidden' }}>
|
|
9
9
|
<Flexbox padding={16}>
|
|
@@ -15,3 +15,5 @@ export const InspectorContent = () => {
|
|
|
15
15
|
</Flexbox>
|
|
16
16
|
);
|
|
17
17
|
};
|
|
18
|
+
|
|
19
|
+
export default TopicListContent;
|
package/src/app/chat/page.tsx
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
|
|
5
|
+
import EditPage from '../features/EditPage';
|
|
6
|
+
import Layout from './layout.responsive';
|
|
7
|
+
|
|
8
|
+
const ChatSettings = memo(() => (
|
|
9
|
+
<Layout>
|
|
10
|
+
<EditPage />
|
|
11
|
+
</Layout>
|
|
12
|
+
));
|
|
13
|
+
|
|
14
|
+
export default ChatSettings;
|
|
@@ -1,23 +1,18 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
1
|
import { PropsWithChildren, memo } from 'react';
|
|
4
2
|
import { Flexbox } from 'react-layout-kit';
|
|
5
3
|
|
|
6
4
|
import SafeSpacing from '@/components/SafeSpacing';
|
|
7
5
|
import { HEADER_HEIGHT } from '@/const/layoutTokens';
|
|
8
6
|
|
|
7
|
+
import Layout from '../../(desktop)/layout.desktop';
|
|
9
8
|
import Header from './Header';
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
export default DesktopLayout;
|
|
10
|
+
export default memo(({ children }: PropsWithChildren) => (
|
|
11
|
+
<Layout>
|
|
12
|
+
<Header />
|
|
13
|
+
<Flexbox align={'center'} flex={1} gap={16} padding={24} style={{ overflow: 'auto' }}>
|
|
14
|
+
<SafeSpacing height={HEADER_HEIGHT - 16} />
|
|
15
|
+
{children}
|
|
16
|
+
</Flexbox>
|
|
17
|
+
</Layout>
|
|
18
|
+
));
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PropsWithChildren, memo } from 'react';
|
|
2
|
+
|
|
3
|
+
import ResponsiveLayout from '@/layout/ResponsiveLayout.client';
|
|
4
|
+
|
|
5
|
+
import Mobile from '../(mobile)/layout.mobile';
|
|
6
|
+
import Desktop from './layout.desktop';
|
|
7
|
+
|
|
8
|
+
export default memo(({ children }: PropsWithChildren) => (
|
|
9
|
+
<ResponsiveLayout Desktop={Desktop} Mobile={Mobile}>
|
|
10
|
+
{children}
|
|
11
|
+
</ResponsiveLayout>
|
|
12
|
+
));
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
|
|
5
|
+
import EditPage from '../features/EditPage';
|
|
6
|
+
import Layout from './layout.mobile';
|
|
7
|
+
|
|
8
|
+
const ChatSettings = memo(() => (
|
|
9
|
+
<Layout>
|
|
10
|
+
<EditPage />
|
|
11
|
+
</Layout>
|
|
12
|
+
));
|
|
13
|
+
|
|
14
|
+
export default ChatSettings;
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
1
|
import { PropsWithChildren, memo } from 'react';
|
|
4
2
|
|
|
5
|
-
import
|
|
3
|
+
import AppLayoutMobile from '@/layout/AppLayout.mobile';
|
|
6
4
|
|
|
7
5
|
import Header from './Header';
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
export default MobileLayout;
|
|
7
|
+
export default memo(({ children }: PropsWithChildren) => (
|
|
8
|
+
<AppLayoutMobile navBar={<Header />}>{children}</AppLayoutMobile>
|
|
9
|
+
));
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import isEqual from 'fast-deep-equal';
|
|
4
|
+
import { memo } from 'react';
|
|
5
|
+
import { useTranslation } from 'react-i18next';
|
|
6
|
+
|
|
7
|
+
import PageTitle from '@/components/PageTitle';
|
|
8
|
+
import AgentSetting from '@/features/AgentSetting';
|
|
9
|
+
import { useSessionStore } from '@/store/session';
|
|
10
|
+
import { agentSelectors } from '@/store/session/selectors';
|
|
11
|
+
import { genSiteHeadTitle } from '@/utils/genSiteHeadTitle';
|
|
12
|
+
|
|
13
|
+
const EditPage = memo(() => {
|
|
14
|
+
const { t } = useTranslation('setting');
|
|
15
|
+
const config = useSessionStore(agentSelectors.currentAgentConfig, isEqual);
|
|
16
|
+
const meta = useSessionStore(agentSelectors.currentAgentMeta, isEqual);
|
|
17
|
+
const [updateAgentConfig, updateAgentMeta, title] = useSessionStore((s) => [
|
|
18
|
+
s.updateAgentConfig,
|
|
19
|
+
s.updateAgentMeta,
|
|
20
|
+
agentSelectors.currentAgentTitle(s),
|
|
21
|
+
]);
|
|
22
|
+
|
|
23
|
+
const pageTitle = genSiteHeadTitle(t('header.sessionWithName', { name: title }));
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<>
|
|
27
|
+
<PageTitle title={pageTitle} />
|
|
28
|
+
<AgentSetting
|
|
29
|
+
config={config}
|
|
30
|
+
meta={meta}
|
|
31
|
+
onConfigChange={updateAgentConfig}
|
|
32
|
+
onMetaChange={updateAgentMeta}
|
|
33
|
+
/>
|
|
34
|
+
</>
|
|
35
|
+
);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
export default EditPage;
|
|
@@ -1,38 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
import { isMobileDevice } from '@/utils/responsive';
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import DesktopPage from './(desktop)';
|
|
4
|
+
import MobilePage from './(mobile)';
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import { useSessionStore } from '@/store/session';
|
|
10
|
-
import { agentSelectors } from '@/store/session/selectors';
|
|
11
|
-
import { genSiteHeadTitle } from '@/utils/genSiteHeadTitle';
|
|
6
|
+
const Page = () => {
|
|
7
|
+
const mobile = isMobileDevice();
|
|
12
8
|
|
|
13
|
-
const
|
|
14
|
-
const { t } = useTranslation('setting');
|
|
15
|
-
const config = useSessionStore(agentSelectors.currentAgentConfig, isEqual);
|
|
16
|
-
const meta = useSessionStore(agentSelectors.currentAgentMeta, isEqual);
|
|
17
|
-
const [updateAgentConfig, updateAgentMeta, title] = useSessionStore((s) => [
|
|
18
|
-
s.updateAgentConfig,
|
|
19
|
-
s.updateAgentMeta,
|
|
20
|
-
agentSelectors.currentAgentTitle(s),
|
|
21
|
-
]);
|
|
9
|
+
const Page = mobile ? MobilePage : DesktopPage;
|
|
22
10
|
|
|
23
|
-
|
|
11
|
+
return <Page />;
|
|
12
|
+
};
|
|
24
13
|
|
|
25
|
-
|
|
26
|
-
<>
|
|
27
|
-
<PageTitle title={pageTitle} />
|
|
28
|
-
<AgentSetting
|
|
29
|
-
config={config}
|
|
30
|
-
meta={meta}
|
|
31
|
-
onConfigChange={updateAgentConfig}
|
|
32
|
-
onMetaChange={updateAgentMeta}
|
|
33
|
-
/>
|
|
34
|
-
</>
|
|
35
|
-
);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
export default EditPage;
|
|
14
|
+
export default Page;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { DraggablePanel, DraggablePanelBody, DraggablePanelContainer } from '@lobehub/ui';
|
|
2
2
|
import { createStyles } from 'antd-style';
|
|
3
|
-
import {
|
|
3
|
+
import { memo, useState } from 'react';
|
|
4
4
|
|
|
5
5
|
import SafeSpacing from '@/components/SafeSpacing';
|
|
6
6
|
import { MARKET_SIDEBAR_WIDTH } from '@/const/layoutTokens';
|
|
7
7
|
import { agentMarketSelectors, useMarketStore } from '@/store/market';
|
|
8
8
|
|
|
9
|
+
import AgentDetailContent from '../../features/AgentDetailContent';
|
|
10
|
+
|
|
9
11
|
const useStyles = createStyles(({ css, token, stylish }) => ({
|
|
10
12
|
content: css`
|
|
11
13
|
display: flex;
|
|
@@ -20,7 +22,7 @@ const useStyles = createStyles(({ css, token, stylish }) => ({
|
|
|
20
22
|
noScrollbar: stylish.noScrollbar,
|
|
21
23
|
}));
|
|
22
24
|
|
|
23
|
-
const SideBar = memo
|
|
25
|
+
const SideBar = memo(() => {
|
|
24
26
|
const { styles } = useStyles();
|
|
25
27
|
const [tempId, setTempId] = useState<string>('');
|
|
26
28
|
const [showAgentSidebar, deactivateAgent, activateAgent] = useMarketStore((s) => [
|
|
@@ -60,7 +62,7 @@ const SideBar = memo<{ children: ReactNode }>(({ children }) => {
|
|
|
60
62
|
className={styles.noScrollbar}
|
|
61
63
|
style={{ padding: 0, position: 'relative' }}
|
|
62
64
|
>
|
|
63
|
-
|
|
65
|
+
<AgentDetailContent />
|
|
64
66
|
</DraggablePanelBody>
|
|
65
67
|
</DraggablePanelContainer>
|
|
66
68
|
</DraggablePanel>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { memo } from 'react';
|
|
2
|
+
|
|
3
|
+
import { AgentCardProps } from '@/app/market/features/AgentCard';
|
|
4
|
+
|
|
5
|
+
import Index from '../index';
|
|
6
|
+
import Layout from './layout.responsive';
|
|
7
|
+
|
|
8
|
+
export default memo<AgentCardProps>((props) => (
|
|
9
|
+
<Layout>
|
|
10
|
+
<Index {...props} />
|
|
11
|
+
</Layout>
|
|
12
|
+
));
|
|
@@ -5,12 +5,12 @@ import { Center, Flexbox } from 'react-layout-kit';
|
|
|
5
5
|
|
|
6
6
|
import SafeSpacing from '@/components/SafeSpacing';
|
|
7
7
|
import { MAX_WIDTH } from '@/const/layoutTokens';
|
|
8
|
+
import AppLayoutDesktop from '@/layout/AppLayout.desktop';
|
|
8
9
|
import { useSwitchSideBarOnInit } from '@/store/global';
|
|
9
10
|
import { SidebarTabKey } from '@/store/global/initialState';
|
|
10
11
|
|
|
11
|
-
import
|
|
12
|
-
import Header from '
|
|
13
|
-
import SideBar from '../features/SideBar';
|
|
12
|
+
import SideBar from './features/AgentDetail';
|
|
13
|
+
import Header from './features/Header';
|
|
14
14
|
|
|
15
15
|
const useStyles = createStyles(({ css }) => ({
|
|
16
16
|
background: css`
|
|
@@ -31,7 +31,7 @@ const MarketLayout = memo<PropsWithChildren>(({ children }) => {
|
|
|
31
31
|
useSwitchSideBarOnInit(SidebarTabKey.Market);
|
|
32
32
|
|
|
33
33
|
return (
|
|
34
|
-
<
|
|
34
|
+
<AppLayoutDesktop>
|
|
35
35
|
<Flexbox
|
|
36
36
|
flex={1}
|
|
37
37
|
height={'100vh'}
|
|
@@ -59,7 +59,7 @@ const MarketLayout = memo<PropsWithChildren>(({ children }) => {
|
|
|
59
59
|
<SideBar />
|
|
60
60
|
</Flexbox>
|
|
61
61
|
</Flexbox>
|
|
62
|
-
</
|
|
62
|
+
</AppLayoutDesktop>
|
|
63
63
|
);
|
|
64
64
|
});
|
|
65
65
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { PropsWithChildren } from 'react';
|
|
4
|
+
|
|
5
|
+
import ResponsiveLayout from '@/layout/ResponsiveLayout.client';
|
|
6
|
+
|
|
7
|
+
import Mobile from '../(mobile)/layout.mobile';
|
|
8
|
+
import Desktop from './layout.desktop';
|
|
9
|
+
|
|
10
|
+
const Market = ({ children }: PropsWithChildren) => (
|
|
11
|
+
<ResponsiveLayout Desktop={Desktop} Mobile={Mobile}>
|
|
12
|
+
{children}
|
|
13
|
+
</ResponsiveLayout>
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
export default Market;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { Modal } from '@lobehub/ui';
|
|
2
|
-
import {
|
|
2
|
+
import { memo } from 'react';
|
|
3
3
|
import { useTranslation } from 'react-i18next';
|
|
4
4
|
|
|
5
5
|
import { agentMarketSelectors, useMarketStore } from '@/store/market';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import AgentDetailContent from '../../features/AgentDetailContent';
|
|
8
|
+
|
|
9
|
+
const AgentDetail = memo(() => {
|
|
8
10
|
const [showAgentSidebar, deactivateAgent] = useMarketStore((s) => [
|
|
9
11
|
agentMarketSelectors.showSideBar(s),
|
|
10
12
|
s.deactivateAgent,
|
|
@@ -14,9 +16,9 @@ const Mobile = memo<PropsWithChildren>(({ children }) => {
|
|
|
14
16
|
|
|
15
17
|
return (
|
|
16
18
|
<Modal onCancel={deactivateAgent} open={showAgentSidebar} title={t('sidebar.title')}>
|
|
17
|
-
|
|
19
|
+
<AgentDetailContent />
|
|
18
20
|
</Modal>
|
|
19
21
|
);
|
|
20
22
|
});
|
|
21
23
|
|
|
22
|
-
export default
|
|
24
|
+
export default AgentDetail;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { memo } from 'react';
|
|
2
|
+
|
|
3
|
+
import { AgentCardProps } from '@/app/market/features/AgentCard';
|
|
4
|
+
|
|
5
|
+
import Index from '../index';
|
|
6
|
+
import Layout from './layout.mobile';
|
|
7
|
+
|
|
8
|
+
export default memo<AgentCardProps>((props) => (
|
|
9
|
+
<Layout>
|
|
10
|
+
<Index {...props} />
|
|
11
|
+
</Layout>
|
|
12
|
+
));
|
|
@@ -3,23 +3,23 @@
|
|
|
3
3
|
import { PropsWithChildren } from 'react';
|
|
4
4
|
import { Flexbox } from 'react-layout-kit';
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import AppLayoutMobile from '@/layout/AppLayout.mobile';
|
|
7
7
|
import { useSwitchSideBarOnInit } from '@/store/global';
|
|
8
8
|
import { SidebarTabKey } from '@/store/global/initialState';
|
|
9
9
|
|
|
10
|
+
import DetailModal from './features/AgentDetail';
|
|
10
11
|
import Header from './features/Header';
|
|
11
|
-
import SideBar from './features/SideBar';
|
|
12
12
|
|
|
13
13
|
const MarketLayout = ({ children }: PropsWithChildren) => {
|
|
14
14
|
useSwitchSideBarOnInit(SidebarTabKey.Market);
|
|
15
15
|
|
|
16
16
|
return (
|
|
17
|
-
<
|
|
17
|
+
<AppLayoutMobile navBar={<Header />} showTabBar>
|
|
18
18
|
<Flexbox flex={1} gap={16} style={{ padding: 16 }}>
|
|
19
19
|
{children}
|
|
20
20
|
</Flexbox>
|
|
21
|
-
<
|
|
22
|
-
</
|
|
21
|
+
<DetailModal />
|
|
22
|
+
</AppLayoutMobile>
|
|
23
23
|
);
|
|
24
24
|
};
|
|
25
25
|
|
|
@@ -6,7 +6,7 @@ import { Flexbox } from 'react-layout-kit';
|
|
|
6
6
|
|
|
7
7
|
import { useMarketStore } from '@/store/market';
|
|
8
8
|
|
|
9
|
-
import AgentCardBanner from '
|
|
9
|
+
import AgentCardBanner from '../../../features/AgentCard/AgentCardBanner';
|
|
10
10
|
import Comment from './Comment';
|
|
11
11
|
import Header from './Header';
|
|
12
12
|
import Loading from './Loading';
|
|
@@ -11,12 +11,13 @@ const TagList = memo(() => {
|
|
|
11
11
|
const keywords = useMarketStore((s) => s.searchKeywords);
|
|
12
12
|
|
|
13
13
|
return (
|
|
14
|
-
<Flexbox gap={
|
|
14
|
+
<Flexbox gap={6} horizontal style={{ flexWrap: 'wrap' }}>
|
|
15
15
|
{agentTagList.map((item) => (
|
|
16
16
|
<Button
|
|
17
17
|
key={item}
|
|
18
18
|
onClick={() => useMarketStore.setState({ searchKeywords: item })}
|
|
19
19
|
shape={'round'}
|
|
20
|
+
size={'small'}
|
|
20
21
|
type={keywords === item ? 'primary' : 'default'}
|
|
21
22
|
>
|
|
22
23
|
{startCase(item)}
|
package/src/app/market/page.tsx
CHANGED
|
@@ -4,8 +4,10 @@ import { LOBE_LOCALE_COOKIE } from '@/const/locale';
|
|
|
4
4
|
import { getAgentIndexJSON } from '@/const/url';
|
|
5
5
|
import { Locales } from '@/locales/resources';
|
|
6
6
|
import { LobeChatAgentsMarketIndex } from '@/types/market';
|
|
7
|
+
import { isMobileDevice } from '@/utils/responsive';
|
|
7
8
|
|
|
8
|
-
import
|
|
9
|
+
import DesktopPage from './(desktop)';
|
|
10
|
+
import MobilePage from './(mobile)';
|
|
9
11
|
|
|
10
12
|
const getAgentList = async (): Promise<LobeChatAgentsMarketIndex> => {
|
|
11
13
|
const cookieStore = cookies();
|
|
@@ -20,10 +22,11 @@ const getAgentList = async (): Promise<LobeChatAgentsMarketIndex> => {
|
|
|
20
22
|
}
|
|
21
23
|
};
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
export default async () => {
|
|
24
26
|
const data = await getAgentList();
|
|
27
|
+
const mobile = isMobileDevice();
|
|
25
28
|
|
|
26
|
-
|
|
27
|
-
};
|
|
29
|
+
const Page = mobile ? MobilePage : DesktopPage;
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
return <Page defaultAgents={data.agents} />;
|
|
32
|
+
};
|
|
@@ -4,7 +4,7 @@ import { useTranslation } from 'react-i18next';
|
|
|
4
4
|
|
|
5
5
|
import { useGlobalStore } from '@/store/global';
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const Header = memo(() => {
|
|
8
8
|
const { t } = useTranslation('setting');
|
|
9
9
|
const tab = useGlobalStore((s) => s.settingsTab);
|
|
10
10
|
|
|
@@ -19,4 +19,4 @@ const Index = memo(() => {
|
|
|
19
19
|
);
|
|
20
20
|
});
|
|
21
21
|
|
|
22
|
-
export default
|
|
22
|
+
export default Header;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
|
|
5
|
+
import ResponsiveIndex from '@/components/ResponsiveIndex';
|
|
6
|
+
|
|
7
|
+
import Mobile from '../(mobile)';
|
|
8
|
+
import Common from '../common';
|
|
9
|
+
import Layout from './layout.responsive';
|
|
10
|
+
|
|
11
|
+
export default memo(() => (
|
|
12
|
+
<ResponsiveIndex Mobile={Mobile}>
|
|
13
|
+
<Layout>
|
|
14
|
+
<Common />
|
|
15
|
+
</Layout>
|
|
16
|
+
</ResponsiveIndex>
|
|
17
|
+
));
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import { PropsWithChildren } from 'react';
|
|
1
|
+
import { PropsWithChildren, memo } from 'react';
|
|
2
2
|
import { Center, Flexbox } from 'react-layout-kit';
|
|
3
3
|
|
|
4
4
|
import SafeSpacing from '@/components/SafeSpacing';
|
|
5
|
-
import
|
|
5
|
+
import AppLayoutDesktop from '@/layout/AppLayout.desktop';
|
|
6
|
+
import { useSwitchSideBarOnInit } from '@/store/global';
|
|
7
|
+
import { SidebarTabKey } from '@/store/global/initialState';
|
|
6
8
|
|
|
7
|
-
import Header from '../features/Header';
|
|
8
9
|
import SideBar from '../features/SideBar';
|
|
10
|
+
import Header from './features/Header';
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
export default memo(({ children }: PropsWithChildren) => {
|
|
13
|
+
useSwitchSideBarOnInit(SidebarTabKey.Setting);
|
|
11
14
|
return (
|
|
12
|
-
<
|
|
15
|
+
<AppLayoutDesktop>
|
|
13
16
|
<SideBar />
|
|
14
17
|
<Flexbox flex={1} height={'100vh'} style={{ position: 'relative' }}>
|
|
15
18
|
<Header />
|
|
@@ -20,8 +23,6 @@ const SettingLayout = ({ children }: PropsWithChildren) => {
|
|
|
20
23
|
</Center>
|
|
21
24
|
</Flexbox>
|
|
22
25
|
</Flexbox>
|
|
23
|
-
</
|
|
26
|
+
</AppLayoutDesktop>
|
|
24
27
|
);
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
export default SettingLayout;
|
|
28
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { PropsWithChildren, memo } from 'react';
|
|
4
|
+
|
|
5
|
+
import ResponsiveLayout from '@/layout/ResponsiveLayout.client';
|
|
6
|
+
|
|
7
|
+
import MobileLayout from '../(mobile)/layout.mobile';
|
|
8
|
+
import DesktopLayout from './layout.desktop';
|
|
9
|
+
|
|
10
|
+
export default memo(({ children }: PropsWithChildren) => (
|
|
11
|
+
<ResponsiveLayout Desktop={DesktopLayout} Mobile={MobileLayout}>
|
|
12
|
+
{children}
|
|
13
|
+
</ResponsiveLayout>
|
|
14
|
+
));
|
|
@@ -9,7 +9,7 @@ import { useExportConfig } from '@/hooks/useExportConfig';
|
|
|
9
9
|
import { useImportConfig } from '@/hooks/useImportConfig';
|
|
10
10
|
import { useGlobalStore } from '@/store/global';
|
|
11
11
|
|
|
12
|
-
import Item from '
|
|
12
|
+
import Item from '../../features/SideBar/Item';
|
|
13
13
|
|
|
14
14
|
const ExtraList = memo(() => {
|
|
15
15
|
const { t } = useTranslation('common');
|