{t(`dashboard.${item.key}`)}
diff --git a/web/src/views/Home/components/RecentActivity.tsx b/web/src/views/Home/components/RecentActivity.tsx
index dd71458b..b3fb5f51 100644
--- a/web/src/views/Home/components/RecentActivity.tsx
+++ b/web/src/views/Home/components/RecentActivity.tsx
@@ -15,10 +15,6 @@ import clsx from 'clsx'
import { useTranslation } from 'react-i18next'
import { Skeleton, Flex } from 'antd';
-import chunkCountIcon from '@/assets/images/home/chunk_count.svg';
-import statementsCountIcon from '@/assets/images/home/statements_count.svg';
-import tripletCountIcon from '@/assets/images/home/triplet_count.svg';
-import temporalCountIcon from '@/assets/images/home/temporal_count.svg';
import activityEmpty from '@/assets/images/home/ActivityEmpty.svg'
import Empty from '@/components/Empty';
import Card from './Card';
@@ -49,10 +45,10 @@ interface RecentActivities {
/** Activity list configuration */
const activityList = [
- { key: 'chunk_count', icon: chunkCountIcon },
- { key: 'statements_count', icon: statementsCountIcon },
- { key: 'triplet_count', icon: tripletCountIcon },
- { key: 'temporal_count', icon: temporalCountIcon },
+ { key: 'chunk_count', iconClass: "rb:bg-[url('@/assets/images/home/chunk_count.svg')]" },
+ { key: 'statements_count', iconClass: "rb:bg-[url('@/assets/images/home/statements_count.svg')]" },
+ { key: 'triplet_count', iconClass: "rb:bg-[url('@/assets/images/home/triplet_count.svg')]" },
+ { key: 'temporal_count', iconClass: "rb:bg-[url('@/assets/images/home/temporal_count.svg')]" },
]
const RecentActivity:FC = () => {
@@ -89,7 +85,7 @@ const RecentActivity:FC = () => {
{activityList.map((item) => (
-
+
{t(`dashboard.${item.key}`)}
diff --git a/web/src/views/Index/components/QuickActions.tsx b/web/src/views/Index/components/QuickActions.tsx
index e9f1f4f8..ceee204f 100644
--- a/web/src/views/Index/components/QuickActions.tsx
+++ b/web/src/views/Index/components/QuickActions.tsx
@@ -2,13 +2,9 @@ import { type FC } from 'react';
import { useTranslation } from 'react-i18next';
import { Flex } from 'antd'
-import modelIcon from '@/assets/images/index/model_mgt.svg'
-import spaceIcon from '@/assets/images/index/space_mgt.svg'
-import userIcon from '@/assets/images/index/user_mgt.svg'
-import helpCenterIcon from '@/assets/images/index/help_center.svg'
interface QuickAction {
key: string;
- icon: string;
+ iconClass: string;
title: string;
onClick?: () => void;
}
@@ -40,50 +36,25 @@ const QuickActions: FC
= ({ onNavigate }) => {
const quickActions: QuickAction[] = [
{
key: 'model-management',
- icon: modelIcon,
+ iconClass: "rb:bg-[url('@/assets/images/index/model_mgt.svg')]",
title: t('quickActions.modelManagement'),
onClick: () => onNavigate?.('/model')
},
{
key: 'space-management',
- icon: spaceIcon,
+ iconClass: "rb:bg-[url('@/assets/images/index/space_mgt.svg')]",
title: t('quickActions.spaceManagement'),
onClick: () => onNavigate?.('/space')
},
- // {
- // key: 'workflow-orchestration',
- // icon: workflowIcon,
- // title: t('quickActions.workflowOrchestration'),
- // onClick: () => onNavigate?.('/workflow')
- // },
{
key: 'user-management',
- icon: userIcon,
+ iconClass: "rb:bg-[url('@/assets/images/index/user_mgt.svg')]",
title: t('quickActions.userManagement'),
onClick: () => onNavigate?.('/user-management')
},
- // {
- // key: 'data-export',
- // icon: dataExportIcon,
- // title: t('quickActions.dataExport'),
- // onClick: () => onNavigate?.('/')
- // },
- // {
- // key: 'log-query',
- // icon: logIcon,
- // title: t('quickActions.logQuery'),
- // onClick: () => onNavigate?.('/log')
- // },
- // {
- // key: 'notification-reminder',
- // icon: noteIcon,
- // title: t('quickActions.notificationReminder'),
- // onClick: () => onNavigate?.('/notification-reminder')
- // },
-
{
key: 'help-center',
- icon: helpCenterIcon,
+ iconClass: "rb:bg-[url('@/assets/images/index/help_center.svg')]",
title: t('quickActions.helpCenter'),
onClick: openHelpCenter
}
@@ -105,7 +76,7 @@ const QuickActions: FC = ({ onNavigate }) => {
className="rb:cursor-pointer"
onClick={action.onClick}
>
-
+
{action.title}
diff --git a/web/src/views/Index/index.tsx b/web/src/views/Index/index.tsx
index e5a5494a..ee124c55 100644
--- a/web/src/views/Index/index.tsx
+++ b/web/src/views/Index/index.tsx
@@ -102,7 +102,7 @@ const Index = () => {
-
+
{t('index.spaceTitle')}
diff --git a/web/src/views/Ontology/components/PageHeader.tsx b/web/src/views/Ontology/components/PageHeader.tsx
index b46174b2..a4a75928 100644
--- a/web/src/views/Ontology/components/PageHeader.tsx
+++ b/web/src/views/Ontology/components/PageHeader.tsx
@@ -54,7 +54,7 @@ const PageHeader: FC
= ({
{extra}
diff --git a/web/src/views/UserMemoryDetail/Rag.tsx b/web/src/views/UserMemoryDetail/Rag.tsx
index a11d4295..ff9069c7 100644
--- a/web/src/views/UserMemoryDetail/Rag.tsx
+++ b/web/src/views/UserMemoryDetail/Rag.tsx
@@ -16,8 +16,6 @@ import { Row, Col, Skeleton, Spin, Flex, Tooltip } from 'antd'
import { LoadingOutlined } from '@ant-design/icons';
import { useParams } from 'react-router-dom'
-import aboutUs from '@/assets/images/userMemory/aboutUs.svg'
-import memoryInsight from '@/assets/images/userMemory/memoryInsight.svg'
import RbCard from '@/components/RbCard/Card'
import type { Data } from './types'
import {
@@ -34,12 +32,12 @@ import ConversationMemory from './components/ConversationMemory'
*/
interface TitleProps {
title: string
- icon: string
+ iconClassName: string
}
/** Collapsible section title */
-const Title: FC
= ({ title, icon }) => (
+const Title: FC = ({ title, iconClassName }) => (
-
+
{title}
)
@@ -143,7 +141,7 @@ const Rag: FC = () => {
<>
{loading.summary
@@ -160,7 +158,7 @@ const Rag: FC = () => {
<>
{loading.insight
diff --git a/web/src/views/UserMemoryDetail/components/PageHeader.tsx b/web/src/views/UserMemoryDetail/components/PageHeader.tsx
deleted file mode 100644
index 861bf0f5..00000000
--- a/web/src/views/UserMemoryDetail/components/PageHeader.tsx
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * @Author: ZhaoYing
- * @Date: 2026-02-03 18:32:30
- * @Last Modified by: ZhaoYing
- * @Last Modified time: 2026-02-03 18:32:30
- */
-/**
- * Page Header Component
- * Header with navigation and operation buttons
- */
-
-import { type FC, type ReactNode } from 'react';
-import { useNavigate } from 'react-router-dom';
-import { Layout, Button } from 'antd';
-import { useTranslation } from 'react-i18next';
-
-import logoutIcon from '@/assets/images/logout_hover.svg'
-
-const { Header } = Layout;
-
-/**
- * Component props
- */
-interface ConfigHeaderProps {
- name?: string;
- operation?: ReactNode;
- source?: 'detail' | 'node';
- extra?: ReactNode;
-}
-const PageHeader: FC
= ({
- name,
- operation,
- source = 'detail',
- extra
-}) => {
- const { t } = useTranslation();
- const navigate = useNavigate();
-
- /** Navigate back */
- const goBack = () => {
- if (source === 'detail') {
- navigate('/user-memory', { replace: true })
- } else {
- navigate(-1)
- }
- }
- return (
-
- );
-};
-
-export default PageHeader;
\ No newline at end of file
diff --git a/web/src/views/UserMemoryDetail/pages/GraphDetail.tsx b/web/src/views/UserMemoryDetail/pages/GraphDetail.tsx
index 19f49ff0..d2417e1c 100644
--- a/web/src/views/UserMemoryDetail/pages/GraphDetail.tsx
+++ b/web/src/views/UserMemoryDetail/pages/GraphDetail.tsx
@@ -104,7 +104,7 @@ const GraphDetail = forwardRef((_props, ref) => {
}
+ icon={
}
onClick={() => navigate(-1)}
>
{t('common.return')}
diff --git a/web/src/views/UserMemoryDetail/pages/index.tsx b/web/src/views/UserMemoryDetail/pages/index.tsx
index f8ce00c3..8cc62ec0 100644
--- a/web/src/views/UserMemoryDetail/pages/index.tsx
+++ b/web/src/views/UserMemoryDetail/pages/index.tsx
@@ -106,7 +106,7 @@ const Detail: FC = () => {
}
}
+ icon={}
onClick={handleGoBack}
>
{t('common.return')}
diff --git a/web/src/views/Workflow/components/Chat/Runtime.tsx b/web/src/views/Workflow/components/Chat/Runtime.tsx
index 142b7e1d..7da550e0 100644
--- a/web/src/views/Workflow/components/Chat/Runtime.tsx
+++ b/web/src/views/Workflow/components/Chat/Runtime.tsx
@@ -137,7 +137,7 @@ const Runtime: FC<{ item: ChatItem; index: number;}> = ({
key: vo.node_id,
label:
- {vo.icon &&

}
+ {vo.icon &&
}
{vo.node_name}
diff --git a/web/src/views/Workflow/components/Editor/nodes/VariableNode.tsx b/web/src/views/Workflow/components/Editor/nodes/VariableNode.tsx
index 6462e1ae..1a1a09c4 100644
--- a/web/src/views/Workflow/components/Editor/nodes/VariableNode.tsx
+++ b/web/src/views/Workflow/components/Editor/nodes/VariableNode.tsx
@@ -45,11 +45,7 @@ const VariableComponent: React.FC<{ nodeKey: NodeKey; data: Suggestion }> = ({
{data.isContext ? (
📄
) : data.group !== 'CONVERSATION' ? (
-
+
) : null}
{!data.isContext && data.group !== 'CONVERSATION' && (
<>
diff --git a/web/src/views/Workflow/components/Editor/plugin/AutocompletePlugin.tsx b/web/src/views/Workflow/components/Editor/plugin/AutocompletePlugin.tsx
index 863e5160..c78eac38 100644
--- a/web/src/views/Workflow/components/Editor/plugin/AutocompletePlugin.tsx
+++ b/web/src/views/Workflow/components/Editor/plugin/AutocompletePlugin.tsx
@@ -288,11 +288,7 @@ const AutocompletePlugin: FC<{ options: Suggestion[], enableJinja2?: boolean }>
return (
- {nodeIcon &&
}
+ {nodeIcon && }
{nodeName}
{nodeOptions.map((option) => {
diff --git a/web/src/views/Workflow/components/NodeLibrary.tsx b/web/src/views/Workflow/components/NodeLibrary.tsx
index a7b06fd1..e6190adb 100644
--- a/web/src/views/Workflow/components/NodeLibrary.tsx
+++ b/web/src/views/Workflow/components/NodeLibrary.tsx
@@ -49,7 +49,7 @@ const NodeLibrary: FC<{ collapsed: boolean; handleToggle: () => void }> = ({ col
e.dataTransfer.setData('application/json', JSON.stringify(node));
}}
>
-

+
))
@@ -77,7 +77,7 @@ const NodeLibrary: FC<{ collapsed: boolean; handleToggle: () => void }> = ({ col
e.dataTransfer.setData('application/json', JSON.stringify(node));
}}
>
-
+
{t(`workflow.${node.type}`)}
))}
diff --git a/web/src/views/Workflow/components/Nodes/AddNode.tsx b/web/src/views/Workflow/components/Nodes/AddNode.tsx
index dd0ab23d..5f1e7e65 100644
--- a/web/src/views/Workflow/components/Nodes/AddNode.tsx
+++ b/web/src/views/Workflow/components/Nodes/AddNode.tsx
@@ -151,7 +151,7 @@ const AddNode: ReactShapeConfig['component'] = ({ node, graph }) => {
e.currentTarget.style.background = 'white';
}}
>
-
+
{t(`workflow.${nodeType.type}`)}
))}
diff --git a/web/src/views/Workflow/components/Nodes/ConditionNode.tsx b/web/src/views/Workflow/components/Nodes/ConditionNode.tsx
index 516b5125..79e8352c 100644
--- a/web/src/views/Workflow/components/Nodes/ConditionNode.tsx
+++ b/web/src/views/Workflow/components/Nodes/ConditionNode.tsx
@@ -52,7 +52,7 @@ const ConditionNode: ReactShapeConfig['component'] = ({ node }) => {
})}>
-
+
{data.name ?? t(`workflow.${data.type}`)}
diff --git a/web/src/views/Workflow/components/Nodes/LoopNode.tsx b/web/src/views/Workflow/components/Nodes/LoopNode.tsx
index 29c683cc..4a803246 100644
--- a/web/src/views/Workflow/components/Nodes/LoopNode.tsx
+++ b/web/src/views/Workflow/components/Nodes/LoopNode.tsx
@@ -126,7 +126,7 @@ const LoopNode: ReactShapeConfig['component'] = ({ node, graph }) => {
})}>
-
+
{data.name ?? t(`workflow.${data.type}`)}
diff --git a/web/src/views/Workflow/components/Nodes/NormalNode.tsx b/web/src/views/Workflow/components/Nodes/NormalNode.tsx
index 12e89cca..f947d004 100644
--- a/web/src/views/Workflow/components/Nodes/NormalNode.tsx
+++ b/web/src/views/Workflow/components/Nodes/NormalNode.tsx
@@ -16,7 +16,7 @@ const NormalNode: ReactShapeConfig['component'] = ({ node }) => {
})}>
-
+
{data.name ?? t(`workflow.${data.type}`)}
diff --git a/web/src/views/Workflow/components/PortClickHandler.tsx b/web/src/views/Workflow/components/PortClickHandler.tsx
index 13ad6b98..31693722 100644
--- a/web/src/views/Workflow/components/PortClickHandler.tsx
+++ b/web/src/views/Workflow/components/PortClickHandler.tsx
@@ -5,7 +5,7 @@
* @Last Modified time: 2026-03-30 15:14:02
*/
import { useEffect, useState } from 'react';
-import { Popover } from 'antd';
+import { Flex, Popover } from 'antd';
import { useTranslation } from 'react-i18next';
import { nodeLibrary, graphNodeLibrary, edgeAttrs, nodeWidth } from '../constant';
@@ -286,21 +286,16 @@ const PortClickHandler: React.FC = ({ graph }) => {
};
const content = (
-
- {nodeLibrary.map((category, categoryIndex) => {
+
+ {nodeLibrary.map((category) => {
const sourceNodeData = sourceNode?.getData();
const isChildOfLoop = sourceNodeData?.cycle && graph?.getNodes().find((n: any) => n.getData()?.id === sourceNodeData.cycle && n.getData()?.type === 'loop');
const isChildOfIteration = sourceNodeData?.cycle && graph?.getNodes().find((n: any) => n.getData()?.id === sourceNodeData.cycle && n.getData()?.type === 'iteration');
let filteredNodes;
- if (isChildOfLoop) {
- // Use same filtering as AddNode for child nodes of loop, but allow break
- filteredNodes = category.nodes.filter(nodeType => !['start', 'end', 'loop', 'cycle-start', 'iteration'].includes(nodeType.type));
- } else if (isChildOfIteration) {
- // Filter out loop and iteration nodes for children of iteration nodes, but allow break
+ if (isChildOfLoop || isChildOfIteration) {
filteredNodes = category.nodes.filter(nodeType => !['start', 'end', 'loop', 'cycle-start', 'iteration'].includes(nodeType.type));
} else {
- // Original filtering for non-loop child nodes
filteredNodes = category.nodes.filter(nodeType =>
nodeType.type !== 'start' && nodeType.type !== 'cycle-start' && nodeType.type !== 'break'
);
@@ -310,36 +305,27 @@ const PortClickHandler: React.FC = ({ graph }) => {
return (
- {categoryIndex > 0 &&
}
-
+
{t(`workflow.${category.category}`)}
- {filteredNodes.map((nodeType) => (
-
handleNodeSelect(nodeType)}
- onMouseEnter={(e) => {
- e.currentTarget.style.background = '#f0f8ff';
- }}
- onMouseLeave={(e) => {
- e.currentTarget.style.background = 'white';
- }}
- >
-

-
{t(`workflow.${nodeType.type}`)}
-
- ))}
+
+ {filteredNodes.map((nodeType) => (
+ handleNodeSelect(nodeType)}
+ >
+
+ {t(`workflow.${nodeType.type}`)}
+
+ ))}
+
);
})}
-
+
);
if (!tempElement) return null;
diff --git a/web/src/views/Workflow/components/Properties/VariableSelect.tsx b/web/src/views/Workflow/components/Properties/VariableSelect.tsx
index 9170d065..51101736 100644
--- a/web/src/views/Workflow/components/Properties/VariableSelect.tsx
+++ b/web/src/views/Workflow/components/Properties/VariableSelect.tsx
@@ -73,11 +73,7 @@ const VariableSelect: FC
= ({
>
{filterOption.nodeData?.icon && filterOption.nodeData?.name && (
<>
-
+
{filterOption.nodeData.name}
/
>
@@ -111,11 +107,7 @@ const VariableSelect: FC = ({
*/
const groupedOptions = Object.entries(groupedSuggestions).map(([_nodeId, suggestions]) => ({
label:
- {suggestions[0].nodeData.icon &&
}
+ {suggestions[0].nodeData.icon && }
{suggestions[0].nodeData.name}
,
options: suggestions.map(s => ({
diff --git a/web/src/views/Workflow/components/Properties/index.tsx b/web/src/views/Workflow/components/Properties/index.tsx
index 66b59075..e38331db 100644
--- a/web/src/views/Workflow/components/Properties/index.tsx
+++ b/web/src/views/Workflow/components/Properties/index.tsx
@@ -474,7 +474,7 @@ const Properties: FC = ({
label: t(`workflow.${category.category}`),
options: category.nodes.filter(item => !['cycle-start', 'break'].includes(item.type)).map(node => ({
label:
-

+
{t(`workflow.${node.type}`)}
,
value: node.type
diff --git a/web/src/views/Workflow/constant.ts b/web/src/views/Workflow/constant.ts
index 92773191..2de35fbb 100644
--- a/web/src/views/Workflow/constant.ts
+++ b/web/src/views/Workflow/constant.ts
@@ -13,28 +13,6 @@ import NoteNode from './components/Nodes/NoteNode';
import type { PortMetadata, GroupMetadata } from '@antv/x6/lib/model/port';
import type { ReactShapeConfig } from '@antv/x6-react-shape';
-// Import workflow icons
-import startIcon from '@/assets/images/workflow/start.svg';
-import endIcon from '@/assets/images/workflow/end.svg';
-import llmIcon from '@/assets/images/workflow/llm.svg';
-import ragIcon from '@/assets/images/workflow/rag.svg';
-import parameterExtractionIcon from '@/assets/images/workflow/parameter_extraction.svg';
-import conditionIcon from '@/assets/images/workflow/condition.svg';
-import iterationIcon from '@/assets/images/workflow/iteration.svg';
-import loopIcon from '@/assets/images/workflow/loop.svg';
-import aggregatorIcon from '@/assets/images/workflow/aggregator.svg';
-import httpRequestIcon from '@/assets/images/workflow/http_request.svg';
-import toolsIcon from '@/assets/images/workflow/tools.svg';
-import codeExecutionIcon from '@/assets/images/workflow/code_execution.svg';
-import templateRenderingIcon from '@/assets/images/workflow/template_rendering.svg';
-import questionClassifierIcon from '@/assets/images/workflow/question-classifier.svg'
-import breakIcon from '@/assets/images/workflow/break.svg'
-import assignerIcon from '@/assets/images/workflow/assigner.svg'
-import memoryReadIcon from '@/assets/images/workflow/memory-read.svg'
-import memoryWriteIcon from '@/assets/images/workflow/memory-write.svg'
-import unknownIcon from '@/assets/images/workflow/unknown.svg'
-import documentExtractorIcon from '@/assets/images/workflow/document-extractor.svg'
-
import { memoryConfigListUrl } from '@/api/memory'
import type { NodeLibrary } from './types'
@@ -46,7 +24,7 @@ export const nodeLibrary: NodeLibrary[] = [
{
category: "coreNode",
nodes: [
- { type: "start", icon: startIcon,
+ { type: "start", icon: 'rb:bg-[url("@/assets/images/workflow/start.svg")]',
config: {
variables: {
type: 'define',
@@ -87,7 +65,7 @@ export const nodeLibrary: NodeLibrary[] = [
}
},
{
- type: "end", icon: endIcon,
+ type: "end", icon: 'rb:bg-[url("@/assets/images/workflow/end.svg")]',
config: {
output: {
type: 'editor'
@@ -100,7 +78,7 @@ export const nodeLibrary: NodeLibrary[] = [
{
category: "aiAndCognitiveProcessing",
nodes: [
- { type: "llm", icon: llmIcon,
+ { type: "llm", icon: 'rb:bg-[url("@/assets/images/workflow/llm.svg")]',
config: {
model_id: {
type: 'define',
@@ -154,7 +132,7 @@ export const nodeLibrary: NodeLibrary[] = [
}
}
},
- { type: "knowledge-retrieval", icon: ragIcon,
+ { type: "knowledge-retrieval", icon: 'rb:bg-[url("@/assets/images/workflow/rag.svg")]',
config: {
query: {
type: 'variableList',
@@ -164,7 +142,7 @@ export const nodeLibrary: NodeLibrary[] = [
}
}
},
- { type: "parameter-extractor", icon: parameterExtractionIcon,
+ { type: "parameter-extractor", icon: 'rb:bg-[url("@/assets/images/workflow/parameter_extraction.svg")]',
config: {
model_id: {
type: 'modelSelect',
@@ -191,7 +169,7 @@ export const nodeLibrary: NodeLibrary[] = [
{
category: "cognitiveUpgrading",
nodes: [
- { type: "memory-read", icon: memoryReadIcon,
+ { type: "memory-read", icon: 'rb:bg-[url("@/assets/images/workflow/memory-read.svg")]',
config: {
message: {
type: 'editor',
@@ -214,7 +192,7 @@ export const nodeLibrary: NodeLibrary[] = [
}
}
},
- { type: "memory-write", icon: memoryWriteIcon,
+ { type: "memory-write", icon: 'rb:bg-[url("@/assets/images/workflow/memory-write.svg")]',
config: {
message: {
type: 'editor',
@@ -240,7 +218,7 @@ export const nodeLibrary: NodeLibrary[] = [
{
category: "flowControl",
nodes: [
- { type: "if-else", icon: conditionIcon,
+ { type: "if-else", icon: 'rb:bg-[url("@/assets/images/workflow/condition.svg")]',
config: {
cases: {
type: 'caseList',
@@ -253,7 +231,7 @@ export const nodeLibrary: NodeLibrary[] = [
}
}
},
- { type: "question-classifier", icon: questionClassifierIcon,
+ { type: "question-classifier", icon: 'rb:bg-[url("@/assets/images/workflow/question-classifier.svg")]',
config: {
model_id: {
type: 'modelSelect',
@@ -277,7 +255,7 @@ export const nodeLibrary: NodeLibrary[] = [
}
}
},
- { type: "iteration", icon: iterationIcon,
+ { type: "iteration", icon: 'rb:bg-[url("@/assets/images/workflow/iteration.svg")]',
config: {
input: {
type: 'variableList',
@@ -310,7 +288,7 @@ export const nodeLibrary: NodeLibrary[] = [
}
},
},
- { type: "loop", icon: loopIcon,
+ { type: "loop", icon: 'rb:bg-[url("@/assets/images/workflow/loop.svg")]',
config: {
cycle_vars: {
type: 'cycleVarsList',
@@ -333,9 +311,10 @@ export const nodeLibrary: NodeLibrary[] = [
},
}
},
- { type: "cycle-start", icon: startIcon },
- { type: "break", icon: breakIcon },
- { type: "var-aggregator", icon: aggregatorIcon,
+ { type: "cycle-start", icon: 'rb:bg-[url("@/assets/images/workflow/start.svg")]'},
+ { type: "break", icon: 'rb:bg-[url("@/assets/images/workflow/break.svg")]'},
+ {
+ type: "var-aggregator", icon: 'rb:bg-[url("@/assets/images/workflow/aggregator.svg")]',
config: {
group: {
type: 'switch',
@@ -350,7 +329,7 @@ export const nodeLibrary: NodeLibrary[] = [
}
}
},
- { type: "assigner", icon: assignerIcon,
+ { type: "assigner", icon: 'rb:bg-[url("@/assets/images/workflow/assigner.svg")]',
config: {
assignments: {
type: 'assignmentList',
@@ -363,7 +342,7 @@ export const nodeLibrary: NodeLibrary[] = [
{
category: "externalInteraction",
nodes: [
- { type: "http-request", icon: httpRequestIcon,
+ { type: "http-request", icon: 'rb:bg-[url("@/assets/images/workflow/http_request.svg")]',
config: {
method: {
type: 'select',
@@ -423,7 +402,7 @@ export const nodeLibrary: NodeLibrary[] = [
}
}
},
- { type: "tool", icon: toolsIcon,
+ { type: "tool", icon: 'rb:bg-[url("@/assets/images/workflow/tools.svg")]',
config: {
tool_id: {
type: 'cascader'
@@ -433,7 +412,7 @@ export const nodeLibrary: NodeLibrary[] = [
}
}
},
- { type: "code", icon: codeExecutionIcon,
+ { type: "code", icon: 'rb:bg-[url("@/assets/images/workflow/code_execution.svg")]',
config: {
input_variables: {
type: 'inputList',
@@ -459,7 +438,7 @@ export const nodeLibrary: NodeLibrary[] = [
},
}
},
- { type: "jinja-render", icon: templateRenderingIcon,
+ { type: "jinja-render", icon: 'rb:bg-[url("@/assets/images/workflow/template_rendering.svg")]',
config: {
mapping: {
type: 'mappingList',
@@ -474,7 +453,7 @@ export const nodeLibrary: NodeLibrary[] = [
},
}
},
- { type: "document-extractor", icon: documentExtractorIcon,
+ { type: "document-extractor", icon: 'rb:bg-[url("@/assets/images/workflow/document-extractor.svg")]',
config: {
file_selector: {
type: 'variableList',
@@ -527,7 +506,8 @@ export const THEME_MAP: Record