diff --git a/src/frontend/src/customNodes/genericNode/components/ComponentOutput/index.tsx b/src/frontend/src/customNodes/genericNode/components/ComponentOutput/index.tsx
new file mode 100644
index 000000000..6f872afe2
--- /dev/null
+++ b/src/frontend/src/customNodes/genericNode/components/ComponentOutput/index.tsx
@@ -0,0 +1,54 @@
+import {
+ DropdownMenu,
+ DropdownMenuTrigger,
+ DropdownMenuContent,
+ DropdownMenuItem,
+} from "@radix-ui/react-dropdown-menu";
+import ForwardedIconComponent from "../../../../components/genericIconComponent";
+import { outputComponentType } from "../../../../types/components";
+import { cn } from "../../../../utils/utils";
+import useFlowStore from "../../../../stores/flowStore";
+
+export default function ComponentOutput({
+ selected,
+ types,
+ frozen = false,
+ nodeId,
+}: outputComponentType) {
+ const setNode = useFlowStore((state) => state.setNode);
+ let displayTitle = selected ?? types[0];
+
+ if (types.length < 2) {
+ return (
+ {displayTitle}
+ );
+ }
+
+ return (
+
+
+
+ {displayTitle}
+
+
+
+
+ {types.map((type) => (
+ {
+ // TODO: UDPDATE SET NODE TO NEW NODE FORM
+ setNode(nodeId, (node) => ({
+ ...node,
+ data: { ...node.data, selected: type },
+ }));
+ }}
+ >
+ {type}
+
+ ))}
+
+
+ );
+}
diff --git a/src/frontend/src/types/components/index.ts b/src/frontend/src/types/components/index.ts
index e23557a84..758b13510 100644
--- a/src/frontend/src/types/components/index.ts
+++ b/src/frontend/src/types/components/index.ts
@@ -111,6 +111,13 @@ export type TextAreaComponentType = {
readonly?: boolean;
};
+export type outputComponentType = {
+ types: string[];
+ selected: string;
+ nodeId: string;
+ frozen?: boolean;
+};
+
export type PromptAreaComponentType = {
field_name?: string;
nodeClass?: APIClassType;