From a673cdc60fa3dbc61b4a1a721c2d38cdd27d451e Mon Sep 17 00:00:00 2001 From: Joel Date: Sat, 9 May 2026 17:38:17 +0800 Subject: [PATCH] chore: split icon to new file and enchance data struct --- .../components/explore/continue-work/data.ts | 37 +++++++++----- .../explore/continue-work/index.tsx | 34 +------------ .../components/explore/continue-work/item.tsx | 50 +++++++++++++++++++ 3 files changed, 77 insertions(+), 44 deletions(-) create mode 100644 web/app/components/explore/continue-work/item.tsx diff --git a/web/app/components/explore/continue-work/data.ts b/web/app/components/explore/continue-work/data.ts index e6bb4ab959..93eb12ca6d 100644 --- a/web/app/components/explore/continue-work/data.ts +++ b/web/app/components/explore/continue-work/data.ts @@ -1,3 +1,4 @@ +import type { AppIconType } from '@/types/app' import { AppModeEnum } from '@/types/app' export type ContinueWorkItem = { @@ -5,8 +6,10 @@ export type ContinueWorkItem = { title: string author: string updatedAt: number - emoji: string - avatarClassName: string + icon_type: AppIconType | null + icon: string + icon_background: string | null + icon_url: string | null mode: AppModeEnum } @@ -18,8 +21,10 @@ export const continueWorkItems: ContinueWorkItem[] = [ title: 'Automated Email Reply', author: 'Evan', updatedAt: currentTime - 30 * 1000, - emoji: '๐Ÿ•น๏ธ', - avatarClassName: 'bg-components-icon-bg-pink-soft', + icon_type: 'emoji', + icon: '๐Ÿ•น๏ธ', + icon_background: '#FDF2FA', + icon_url: null, mode: AppModeEnum.CHAT, }, { @@ -27,8 +32,10 @@ export const continueWorkItems: ContinueWorkItem[] = [ title: 'Dify Feature Request Copilot', author: 'Evan', updatedAt: currentTime - 3 * 60 * 1000, - emoji: '๐Ÿชผ', - avatarClassName: 'bg-components-icon-bg-blue-soft', + icon_type: 'emoji', + icon: '๐Ÿชผ', + icon_background: '#EFF4FF', + icon_url: null, mode: AppModeEnum.CHAT, }, { @@ -36,8 +43,10 @@ export const continueWorkItems: ContinueWorkItem[] = [ title: 'Book Translation', author: 'Evan', updatedAt: currentTime - 2 * 60 * 60 * 1000, - emoji: '๐Ÿ“™', - avatarClassName: 'bg-components-icon-bg-orange-dark-soft', + icon_type: 'emoji', + icon: '๐Ÿ“™', + icon_background: '#FFF4ED', + icon_url: null, mode: AppModeEnum.WORKFLOW, }, { @@ -45,8 +54,10 @@ export const continueWorkItems: ContinueWorkItem[] = [ title: 'SVG Logo Design', author: 'Evan', updatedAt: currentTime - 24 * 60 * 60 * 1000, - emoji: '๐Ÿ–Œ๏ธ', - avatarClassName: 'bg-components-icon-bg-indigo-soft', + icon_type: 'emoji', + icon: '๐Ÿ–Œ๏ธ', + icon_background: '#EEF4FF', + icon_url: null, mode: AppModeEnum.AGENT_CHAT, }, { @@ -54,8 +65,10 @@ export const continueWorkItems: ContinueWorkItem[] = [ title: 'Customer Feedback Summary', author: 'Evan', updatedAt: currentTime - 5 * 24 * 60 * 60 * 1000, - emoji: '๐Ÿ“Š', - avatarClassName: 'bg-components-icon-bg-teal-soft', + icon_type: 'emoji', + icon: '๐Ÿ“Š', + icon_background: '#F0FDF9', + icon_url: null, mode: AppModeEnum.COMPLETION, }, ] diff --git a/web/app/components/explore/continue-work/index.tsx b/web/app/components/explore/continue-work/index.tsx index d31c23a38f..7d9253cd2a 100644 --- a/web/app/components/explore/continue-work/index.tsx +++ b/web/app/components/explore/continue-work/index.tsx @@ -3,10 +3,9 @@ import { cn } from '@langgenius/dify-ui/cn' import * as React from 'react' import { useTranslation } from 'react-i18next' -import { AppTypeIcon } from '@/app/components/app/type-selector' -import { useFormatTimeFromNow } from '@/hooks/use-format-time-from-now' import Link from '@/next/link' import { continueWorkItems } from './data' +import ContinueWorkItem from './item' type ContinueWorkProps = { className?: string @@ -16,7 +15,6 @@ const ContinueWork = ({ className, }: ContinueWorkProps) => { const { t } = useTranslation() - const { formatTimeFromNow } = useFormatTimeFromNow() return (
@@ -33,35 +31,7 @@ const ContinueWork = ({
{continueWorkItems.map(item => ( -
-
-
- {item.emoji} -
- -
-
-

- {item.title} -

-
- {item.author} - ยท - {t('continueWork.editedAt', { ns: 'explore', time: formatTimeFromNow(item.updatedAt) })} -
-
-
+ ))}
diff --git a/web/app/components/explore/continue-work/item.tsx b/web/app/components/explore/continue-work/item.tsx new file mode 100644 index 0000000000..542da825d0 --- /dev/null +++ b/web/app/components/explore/continue-work/item.tsx @@ -0,0 +1,50 @@ +'use client' + +import type { ContinueWorkItem as ContinueWorkItemData } from './data' +import * as React from 'react' +import { useTranslation } from 'react-i18next' +import { AppTypeIcon } from '@/app/components/app/type-selector' +import AppIcon from '@/app/components/base/app-icon' +import { useFormatTimeFromNow } from '@/hooks/use-format-time-from-now' + +type ContinueWorkItemProps = { + item: ContinueWorkItemData +} + +const ContinueWorkItem = ({ + item, +}: ContinueWorkItemProps) => { + const { t } = useTranslation() + const { formatTimeFromNow } = useFormatTimeFromNow() + + return ( +
+
+ + +
+
+

+ {item.title} +

+
+ {item.author} + ยท + {t('continueWork.editedAt', { ns: 'explore', time: formatTimeFromNow(item.updatedAt) })} +
+
+
+ ) +} + +export default React.memo(ContinueWorkItem)