diff --git a/src/backend/base/langflow/components/inputs/JsonInput.py b/src/backend/base/langflow/components/inputs/JsonInput.py
new file mode 100644
index 000000000..713868147
--- /dev/null
+++ b/src/backend/base/langflow/components/inputs/JsonInput.py
@@ -0,0 +1,17 @@
+from langflow.base.io.text import TextComponent
+from langflow.field_typing.constants import Data, NestedDict
+
+class JsonInput(TextComponent):
+ display_name = "JSON Input"
+ description = "JSON Input."
+
+ def build_config(self):
+ return {
+ "input_value": {
+ "display_name": "JSON",
+ "field_type": "NestedDict"
+ }
+ }
+
+ def build(self, input_value: NestedDict) -> NestedDict:
+ return input_value
diff --git a/src/backend/base/langflow/components/inputs/KeyPairInput.py b/src/backend/base/langflow/components/inputs/KeyPairInput.py
new file mode 100644
index 000000000..c48d0a0e1
--- /dev/null
+++ b/src/backend/base/langflow/components/inputs/KeyPairInput.py
@@ -0,0 +1,19 @@
+from langflow.base.io.text import TextComponent
+from langflow.field_typing.constants import Data
+
+
+class KeyPairInput(TextComponent):
+ display_name = "Dictionary Input"
+ description = "Dictionary Input."
+
+ def build_config(self):
+ return {
+ "input_value": {
+ "display_name": "Dictionaries",
+ "field_type": "dict",
+ "list": True
+ }
+ }
+
+ def build(self, input_value: dict) -> dict:
+ return input_value
diff --git a/src/backend/base/langflow/components/inputs/StringListInput.py b/src/backend/base/langflow/components/inputs/StringListInput.py
new file mode 100644
index 000000000..5eadce9bc
--- /dev/null
+++ b/src/backend/base/langflow/components/inputs/StringListInput.py
@@ -0,0 +1,13 @@
+# from langflow.field_typing import Data
+from langflow.schema import Record
+from langflow.interface.custom.custom_component import CustomComponent
+
+
+class StringListInput(CustomComponent):
+ display_name = "String List Input"
+
+ def build_config(self):
+ return {"input_value": {"display_name": "String List Input", "field_type": "str", "list": True}}
+
+ def build(self, input_value: list) -> Record:
+ return Record(data=input_value)
diff --git a/src/backend/base/langflow/components/outputs/CSVOutput.py b/src/backend/base/langflow/components/outputs/CSVOutput.py
new file mode 100644
index 000000000..711a6ab96
--- /dev/null
+++ b/src/backend/base/langflow/components/outputs/CSVOutput.py
@@ -0,0 +1,17 @@
+from typing import Optional
+
+from langflow.base.io.text import TextComponent
+from langflow.field_typing import Text, Data
+
+
+class CSVOutput(TextComponent):
+ display_name = "CSV Output"
+ description = "Used view csv files"
+
+ field_config = {
+ "input_value": {"display_name": "csv","info":"A csv blob","input_types":["Data"]},
+ "separator": {"display_name": "separator","info":"The separator used in the csv file","input_types":["Text"], "field_type":"Text","default_value":";","options":[";", ",", "|"]},
+ }
+
+ def build(self, input_value: Data, separator) -> Data:
+ return {"data": input_value, "separator": separator}
diff --git a/src/backend/base/langflow/components/outputs/ImageOutput.py b/src/backend/base/langflow/components/outputs/ImageOutput.py
new file mode 100644
index 000000000..f50fb7bf7
--- /dev/null
+++ b/src/backend/base/langflow/components/outputs/ImageOutput.py
@@ -0,0 +1,15 @@
+from typing import Optional
+
+from langflow.base.io.text import TextComponent
+from langflow.field_typing import Text
+
+class ImageOutput(TextComponent):
+ display_name = "Image Output"
+ description = "Used view image files"
+
+ field_config = {
+ "input_value": {"display_name": "image","info":"A image url","input_types":["Text"]},
+ }
+
+ def build(self, input_value: Text) -> Text:
+ return input_value
\ No newline at end of file
diff --git a/src/backend/base/langflow/components/outputs/JsonOutput.py b/src/backend/base/langflow/components/outputs/JsonOutput.py
new file mode 100644
index 000000000..cbbc10ddc
--- /dev/null
+++ b/src/backend/base/langflow/components/outputs/JsonOutput.py
@@ -0,0 +1,17 @@
+from langflow.base.io.text import TextComponent
+from langflow.field_typing.constants import Data, NestedDict
+
+class JsonOutput(TextComponent):
+ display_name = "JSON Output"
+ description = "JSON Output."
+
+ def build_config(self):
+ return {
+ "input_value": {
+ "display_name": "JSON",
+ "field_type": "NestedDict"
+ }
+ }
+
+ def build(self, input_value: NestedDict) -> NestedDict:
+ return input_value
diff --git a/src/backend/base/langflow/components/outputs/KeyPairOutput.py b/src/backend/base/langflow/components/outputs/KeyPairOutput.py
new file mode 100644
index 000000000..f2204bb83
--- /dev/null
+++ b/src/backend/base/langflow/components/outputs/KeyPairOutput.py
@@ -0,0 +1,19 @@
+from langflow.base.io.text import TextComponent
+from langflow.field_typing.constants import Data
+
+
+class KeyPairOutput(TextComponent):
+ display_name = "Dictionary Output"
+ description = "Dictionary Output."
+
+ def build_config(self):
+ return {
+ "input_value": {
+ "display_name": "Dictionaries",
+ "field_type": "dict",
+ "list": True
+ }
+ }
+
+ def build(self, input_value: dict) -> dict:
+ return input_value
diff --git a/src/backend/base/langflow/components/outputs/PDFOutput.py b/src/backend/base/langflow/components/outputs/PDFOutput.py
new file mode 100644
index 000000000..75e1fabf4
--- /dev/null
+++ b/src/backend/base/langflow/components/outputs/PDFOutput.py
@@ -0,0 +1,16 @@
+from typing import Optional
+
+from langflow.base.io.text import TextComponent
+from langflow.field_typing import Text
+
+
+class PDFOutput(TextComponent):
+ display_name = "PDF Output"
+ description = "Used view pdf files"
+
+ field_config = {
+ "input_value": {"display_name": "pdf","info":"A pdf url","input_types":["Text"]},
+ }
+
+ def build(self, input_value: Text) -> Text:
+ return input_value
diff --git a/src/backend/base/langflow/components/outputs/StringListOutput.py b/src/backend/base/langflow/components/outputs/StringListOutput.py
new file mode 100644
index 000000000..3b1ff6088
--- /dev/null
+++ b/src/backend/base/langflow/components/outputs/StringListOutput.py
@@ -0,0 +1,13 @@
+# from langflow.field_typing import Data
+from langflow.schema import Record
+from langflow.interface.custom.custom_component import CustomComponent
+
+
+class StringListOutput(CustomComponent):
+ display_name = "String List Output"
+
+ def build_config(self):
+ return {"input_value": {"display_name": "String List Output", "field_type": "str", "list": True}}
+
+ def build(self, input_value: list) -> Record:
+ return Record(data=input_value)
\ No newline at end of file
diff --git a/src/frontend/src/App.css b/src/frontend/src/App.css
index 6aa681415..22a596730 100644
--- a/src/frontend/src/App.css
+++ b/src/frontend/src/App.css
@@ -96,6 +96,18 @@ body {
}
.custom-hover:hover {
- background-color: rgba(99, 102, 241, 0.1); /* Medium indigo color with 20% opacity */
+ background-color: rgba(
+ 99,
+ 102,
+ 241,
+ 0.1
+ ); /* Medium indigo color with 20% opacity */
}
+.json-view-playground .json-view {
+ background-color: #fff !important;
+}
+
+.json-view-flow .json-view {
+ background-color: #bbb !important;
+}
diff --git a/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx b/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx
index eef861758..ad00225b8 100644
--- a/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx
+++ b/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx
@@ -618,7 +618,7 @@ export default function ParameterComponent({