+
+
+
+ {payload.variable}
+
+ {payload.label && (
+ <>
+
·
+
+ {payload.label as string}
+
+ >
+ )}
+
+ {(!isHovering || readonly)
+ ? (
+
+ {payload.required && (
+ {t('workflow.nodes.start.required')}
+ )}
+
+
+ )
+ : (!readonly && (
+
+
+
+
+
+
+
+
+ ))
+ }
+
+ )
+}
+export default React.memo(FieldItem)
diff --git a/web/app/components/rag-pipeline/components/panel/input-field/field-list/index.tsx b/web/app/components/rag-pipeline/components/panel/input-field/field-list/index.tsx
new file mode 100644
index 0000000000..afac5b91bd
--- /dev/null
+++ b/web/app/components/rag-pipeline/components/panel/input-field/field-list/index.tsx
@@ -0,0 +1,61 @@
+import { useStore } from '@/app/components/workflow/store'
+import type { InputVar } from '@/app/components/workflow/types'
+import { RiAddLine } from '@remixicon/react'
+import FieldItem from './field-item'
+import cn from '@/utils/classnames'
+
+type FieldListProps = {
+ LabelRightContent: React.ReactNode
+ inputFields?: InputVar[]
+ readonly?: boolean
+ labelClassName?: string
+}
+
+const FieldList = ({
+ LabelRightContent,
+ inputFields,
+ readonly,
+ labelClassName,
+}: FieldListProps) => {
+ const showInputFieldEditor = useStore(state => state.showInputFieldEditor)
+ const setShowInputFieldEditor = useStore(state => state.setShowInputFieldEditor)
+
+ const isReadonly = readonly || showInputFieldEditor
+
+ const handleAddField = () => {
+ setShowInputFieldEditor?.(true)
+ }
+
+ return (
+
+
+
+
+ User input fields
+
+
+
+
+
+
+ User input fields are used to define and collect variables required during the pipeline execution process. Users can customize the field type and flexibly configure the input value to meet the needs of different data sources or document processing steps.
+
+
+ {/* Jina Reader Field List */}
+
+
+
+
+ Jina Reader
+
+ )}
+ inputFields={[{
+ variable: 'name',
+ label: 'name',
+ type: InputVarType.textInput,
+ required: true,
+ max_length: 12,
+ }]}
+ readonly={readonly}
+ labelClassName='pt-2 pb-1'
+ />
+ {/* Firecrawl Field List */}
+
+
+ 🔥
+
+ Firecrawl
+
+ )}
+ inputFields={[{
+ variable: 'name',
+ label: 'name',
+ type: InputVarType.textInput,
+ required: true,
+ max_length: 12,
+ }]}
+ readonly={readonly}
+ labelClassName='pt-2 pb-1'
+ />
+ {/* Shared Inputs */}
+
+ SHARED INPUTS
+
+
+ )}
+ inputFields={[{
+ variable: 'name',
+ label: 'name',
+ type: InputVarType.textInput,
+ required: true,
+ max_length: 12,
+ }]}
+ readonly={readonly}
+ labelClassName='pt-1 pb-2'
+ />
+
+