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'); }