diff --git a/src/app/(main)/discover/(list)/(home)/features/AssistantList.tsx b/src/app/(main)/discover/(list)/(home)/features/AssistantList.tsx
index 2c47f8971454f..75e26811f5fa1 100644
--- a/src/app/(main)/discover/(list)/(home)/features/AssistantList.tsx
+++ b/src/app/(main)/discover/(list)/(home)/features/AssistantList.tsx
@@ -1,5 +1,4 @@
import { Grid } from '@lobehub/ui';
-import Link from 'next/link';
import { memo } from 'react';
import urlJoin from 'url-join';
@@ -11,14 +10,21 @@ const AssistantList = memo<{ data: DiscoverAssistantItem[] }>(({ data }) => {
return (
{data.slice(0, 8).map((item) => (
-
-
-
+
))}
{data.slice(8, 16).map((item) => (
-
-
-
+
))}
);
diff --git a/src/app/(main)/discover/(list)/(home)/features/ModelList.tsx b/src/app/(main)/discover/(list)/(home)/features/ModelList.tsx
index 272566e92b77e..40380be190755 100644
--- a/src/app/(main)/discover/(list)/(home)/features/ModelList.tsx
+++ b/src/app/(main)/discover/(list)/(home)/features/ModelList.tsx
@@ -1,5 +1,4 @@
import { Grid } from '@lobehub/ui';
-import Link from 'next/link';
import { memo } from 'react';
import urlJoin from 'url-join';
@@ -11,9 +10,7 @@ const ModelList = memo<{ data: DiscoverModelItem[] }>(({ data }) => {
return (
{data.map((item) => (
-
-
-
+
))}
);
diff --git a/src/app/(main)/discover/(list)/(home)/features/PluginList.tsx b/src/app/(main)/discover/(list)/(home)/features/PluginList.tsx
index 0dc7699b7f3cc..310d6ebdd25a2 100644
--- a/src/app/(main)/discover/(list)/(home)/features/PluginList.tsx
+++ b/src/app/(main)/discover/(list)/(home)/features/PluginList.tsx
@@ -1,5 +1,4 @@
import { Grid } from '@lobehub/ui';
-import Link from 'next/link';
import { memo } from 'react';
import urlJoin from 'url-join';
@@ -11,9 +10,13 @@ const PluginList = memo<{ data: DiscoverPlugintem[] }>(({ data }) => {
return (
{data.map((item) => (
-
-
-
+
))}
);
diff --git a/src/app/(main)/discover/(list)/assistants/features/Card.tsx b/src/app/(main)/discover/(list)/assistants/features/Card.tsx
index 4f5cdccfb4102..fb43ff1ccb48a 100644
--- a/src/app/(main)/discover/(list)/assistants/features/Card.tsx
+++ b/src/app/(main)/discover/(list)/assistants/features/Card.tsx
@@ -3,6 +3,7 @@ import { Skeleton, Typography } from 'antd';
import { createStyles } from 'antd-style';
import { startCase } from 'lodash-es';
import dynamic from 'next/dynamic';
+import { useRouter } from 'next/navigation';
import qs from 'query-string';
import { CSSProperties, memo } from 'react';
import { Center, Flexbox } from 'react-layout-kit';
@@ -26,8 +27,6 @@ const useStyles = createStyles(({ css, token, isDarkMode }) => ({
opacity: ${isDarkMode ? 0.9 : 0.4};
`,
container: css`
- cursor: pointer;
-
position: relative;
overflow: hidden;
@@ -64,18 +63,19 @@ const useStyles = createStyles(({ css, token, isDarkMode }) => ({
export interface AssistantCardProps
extends Omit {
className?: string;
+ href: string;
showCategory?: boolean;
style?: CSSProperties;
variant?: 'default' | 'compact';
}
const AssistantCard = memo(
- ({ showCategory, className, meta, createdAt, author, variant, style }) => {
+ ({ showCategory, className, meta, createdAt, author, variant, style, href }) => {
const { avatar, title, description, tags = [], category } = meta;
const { cx, styles, theme } = useStyles();
const categoryItem = useCategoryItem(category, 12);
const isCompact = variant === 'compact';
-
+ const router = useRouter();
const user = (
(
return (
- {!isCompact && }
-
- {
+ router.push(href);
+ }}
>
-
-
- {title}
-
- {isCompact && user}
-
- {isCompact ? (
-
- ) : (
-
+
+ )}
+
+
+
+
-
-
- )}
-
- {!isCompact && (
-
- {user}
-
+
+
+ {title}
+
+ {isCompact && user}
+
+
+ {isCompact ? (
+
+ ) : (
+
+
+
+ )}
+
+
+ {!isCompact && (
+
+ {user}
+
+
+ )}
+
+ {description}
+
- )}
-
- {description}
-
+
+
{showCategory && categoryItem ? (
diff --git a/src/app/(main)/discover/(list)/assistants/features/List.tsx b/src/app/(main)/discover/(list)/assistants/features/List.tsx
index 8bd1bfe997ab4..0c6496d410116 100644
--- a/src/app/(main)/discover/(list)/assistants/features/List.tsx
+++ b/src/app/(main)/discover/(list)/assistants/features/List.tsx
@@ -2,7 +2,6 @@
import { Grid } from '@lobehub/ui';
import { Empty } from 'antd';
-import Link from 'next/link';
import { memo, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import urlJoin from 'url-join';
@@ -42,9 +41,13 @@ const List = memo(({ category, mobile, searchKeywords, items = [] })
data={all}
initialItemCount={24}
itemContent={(_, item) => (
-
-
-
+
)}
style={{
minHeight: '75vh',
@@ -59,9 +62,12 @@ const List = memo(({ category, mobile, searchKeywords, items = [] })
{t('assistants.recentSubmits')}
{recent.map((item) => (
-
-
-
+
))}
{last && last?.length > 0 && (
@@ -71,9 +77,13 @@ const List = memo(({ category, mobile, searchKeywords, items = [] })
data={last}
initialItemCount={12}
itemContent={(_, item) => (
-
-
-
+
)}
style={{
minHeight: '75vh',
diff --git a/src/app/(main)/discover/(list)/models/features/Card.tsx b/src/app/(main)/discover/(list)/models/features/Card.tsx
index 9a4ec618fd951..b60cb67cdd24f 100644
--- a/src/app/(main)/discover/(list)/models/features/Card.tsx
+++ b/src/app/(main)/discover/(list)/models/features/Card.tsx
@@ -1,6 +1,7 @@
import { ModelIcon } from '@lobehub/icons';
import { Typography } from 'antd';
import { createStyles } from 'antd-style';
+import Link from 'next/link';
import { CSSProperties, memo } from 'react';
import { useTranslation } from 'react-i18next';
import { Flexbox } from 'react-layout-kit';
@@ -16,8 +17,6 @@ const useStyles = createStyles(({ css, token, isDarkMode }) => ({
opacity: ${isDarkMode ? 0.9 : 0.4};
`,
container: css`
- cursor: pointer;
-
position: relative;
overflow: hidden;
@@ -69,53 +68,56 @@ const useStyles = createStyles(({ css, token, isDarkMode }) => ({
export interface ModelCardProps extends DiscoverModelItem {
className?: string;
+ href: string;
showCategory?: boolean;
style?: CSSProperties;
}
-const ModelCard = memo(({ className, meta, identifier, style }) => {
+const ModelCard = memo(({ className, meta, identifier, style, href }) => {
const { description, title, functionCall, vision, contextWindowTokens } = meta;
const { t } = useTranslation('models');
const { cx, styles } = useStyles();
return (
-
-
+
+
-
-
-
- {title}
-
-
- {identifier}
-
+
+
+
+
+ {title}
+
+
+ {identifier}
+
+
-
- {description && (
-
- {t(`${identifier}.description`)}
-
- )}
+ {description && (
+
+ {t(`${identifier}.description`)}
+
+ )}
-
+
+
-
+
);
});
diff --git a/src/app/(main)/discover/(list)/models/features/List.tsx b/src/app/(main)/discover/(list)/models/features/List.tsx
index 544ca9f32b523..6ddc035377f1b 100644
--- a/src/app/(main)/discover/(list)/models/features/List.tsx
+++ b/src/app/(main)/discover/(list)/models/features/List.tsx
@@ -1,7 +1,6 @@
'use client';
import { Empty } from 'antd';
-import Link from 'next/link';
import { memo } from 'react';
import { useTranslation } from 'react-i18next';
import urlJoin from 'url-join';
@@ -32,9 +31,12 @@ const List = memo(({ category, searchKeywords, items = [] }) => {
data={items}
initialItemCount={24}
itemContent={(_, item) => (
-
-
-
+
)}
style={{
minHeight: '75vh',
@@ -51,9 +53,12 @@ const List = memo(({ category, searchKeywords, items = [] }) => {
data={items}
initialItemCount={24}
itemContent={(_, item) => (
-
-
-
+
)}
style={{
minHeight: '75vh',
diff --git a/src/app/(main)/discover/(list)/plugins/features/Card.tsx b/src/app/(main)/discover/(list)/plugins/features/Card.tsx
index 20faf1a6eb97d..15f5fd5b86b24 100644
--- a/src/app/(main)/discover/(list)/plugins/features/Card.tsx
+++ b/src/app/(main)/discover/(list)/plugins/features/Card.tsx
@@ -25,8 +25,6 @@ const useStyles = createStyles(({ css, token, isDarkMode }) => ({
opacity: ${isDarkMode ? 0.9 : 0.4};
`,
container: css`
- cursor: pointer;
-
position: relative;
overflow: hidden;
@@ -66,13 +64,14 @@ const useStyles = createStyles(({ css, token, isDarkMode }) => ({
interface PluginCardProps
extends Omit {
className?: string;
+ href: string;
showCategory?: boolean;
style?: CSSProperties;
variant?: 'default' | 'compact';
}
const PluginCard = memo(
- ({ className, showCategory, meta, createdAt, author, variant, style }) => {
+ ({ className, showCategory, meta, createdAt, author, variant, style, href }) => {
const { avatar, title, description, tags = [], category } = meta;
const categoryItem = useCategoryItem(category, 12);
const { cx, styles, theme } = useStyles();
@@ -81,47 +80,57 @@ const PluginCard = memo(
return (
{!isCompact && }
-
-
-
- {title}
-
- {isCompact ? (
-
- ) : (
-
+
+
+
-
-
- )}
-
-
- @{author}
- {!isCompact && (
-
- )}
-
-
- {description}
-
+
+ {title}
+
+ {isCompact ? (
+
+ ) : (
+
+
+
+ )}
+
+
+ @{author}
+ {!isCompact && (
+
+ )}
+
+
+ {description}
+
+
+
{showCategory && categoryItem ? (
diff --git a/src/app/(main)/discover/(list)/plugins/features/List.tsx b/src/app/(main)/discover/(list)/plugins/features/List.tsx
index 421e0358a13c5..7c21565702fe2 100644
--- a/src/app/(main)/discover/(list)/plugins/features/List.tsx
+++ b/src/app/(main)/discover/(list)/plugins/features/List.tsx
@@ -2,7 +2,6 @@
import { Grid } from '@lobehub/ui';
import { Empty } from 'antd';
-import Link from 'next/link';
import { memo, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import urlJoin from 'url-join';
@@ -41,9 +40,13 @@ const List = memo(({ category, mobile, searchKeywords, items = [] })
data={all}
initialItemCount={24}
itemContent={(_, item) => (
-
-
-
+
)}
style={{
minHeight: '75vh',
@@ -58,9 +61,12 @@ const List = memo(({ category, mobile, searchKeywords, items = [] })
{t('plugins.recentSubmits')}
{recent.map((item) => (
-
-
-
+
))}
{last && last?.length > 0 && (
@@ -70,9 +76,13 @@ const List = memo(({ category, mobile, searchKeywords, items = [] })
data={last}
initialItemCount={12}
itemContent={(_, item) => (
-
-
-
+
)}
style={{
minHeight: '75vh',
diff --git a/src/app/(main)/settings/_layout/Mobile/Header.tsx b/src/app/(main)/settings/_layout/Mobile/Header.tsx
index a3316d146fd2b..c96e5844ea933 100644
--- a/src/app/(main)/settings/_layout/Mobile/Header.tsx
+++ b/src/app/(main)/settings/_layout/Mobile/Header.tsx
@@ -2,13 +2,15 @@
import { MobileNavBar, MobileNavBarTitle } from '@lobehub/ui';
import { Tag } from 'antd';
-import { useRouter, useSearchParams } from 'next/navigation';
import { memo } from 'react';
import { useTranslation } from 'react-i18next';
import { Flexbox } from 'react-layout-kit';
import { useActiveSettingsKey } from '@/hooks/useActiveTabKey';
+import { useQueryRoute } from '@/hooks/useQueryRoute';
+import { useShowMobileWorkspace } from '@/hooks/useShowMobileWorkspace';
import { SettingsTabs } from '@/store/global/initialState';
+import { useSessionStore } from '@/store/session';
import { useUserStore } from '@/store/user';
import { authSelectors } from '@/store/user/selectors';
import { mobileHeaderSticky } from '@/styles/mobileHeader';
@@ -16,14 +18,15 @@ import { mobileHeaderSticky } from '@/styles/mobileHeader';
const Header = memo(() => {
const { t } = useTranslation('setting');
- const router = useRouter();
- const searchParams = useSearchParams();
+ const router = useQueryRoute();
+ const showMobileWorkspace = useShowMobileWorkspace();
const activeSettingsKey = useActiveSettingsKey();
-
+ const isSessionActive = useSessionStore((s) => !!s.activeId);
const enableAuth = useUserStore(authSelectors.enabledAuth);
+
const handleBackClick = () => {
- if (searchParams.has('session') && searchParams.has('showMobileWorkspace')) {
- router.push(`/chat?${searchParams.toString()}`);
+ if (isSessionActive && showMobileWorkspace) {
+ router.push('/chat');
} else {
router.push(enableAuth ? '/me/settings' : '/me');
}