diff --git a/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx b/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx index 65f946ba2..27090bd3a 100644 --- a/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx +++ b/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx @@ -3,6 +3,7 @@ import { classNames, groupByFamily, isValidConnection, + nodeIconsLucide, } from "../../../../utils"; import { useContext, useEffect, useRef, useState } from "react"; import InputComponent from "../../../../components/inputComponent"; @@ -17,7 +18,7 @@ import InputFileComponent from "../../../../components/inputFileComponent"; import { TabsContext } from "../../../../contexts/tabsContext"; import IntComponent from "../../../../components/intComponent"; import PromptAreaComponent from "../../../../components/promptComponent"; -import { nodeNames, nodeIcons } from "../../../../utils"; +import { nodeNames } from "../../../../utils"; import React from "react"; import { nodeColors } from "../../../../utils"; import ShadTooltip from "../../../../components/ShadTooltipComponent"; @@ -88,12 +89,12 @@ export default function ParameterComponent({ )} >
- {React.createElement(nodeIcons[item.family])} + {React.createElement(nodeIconsLucide[item.family])}
{nodeNames[item.family] ?? ""}{" "} diff --git a/src/frontend/src/CustomNodes/GenericNode/index.tsx b/src/frontend/src/CustomNodes/GenericNode/index.tsx index fb1ed5f59..eda6dee41 100644 --- a/src/frontend/src/CustomNodes/GenericNode/index.tsx +++ b/src/frontend/src/CustomNodes/GenericNode/index.tsx @@ -1,4 +1,9 @@ -import { classNames, nodeColors, nodeIcons, toTitleCase } from "../../utils"; +import { + classNames, + nodeColors, + nodeIconsLucide, + toTitleCase, +} from "../../utils"; import ParameterComponent from "./components/parameterComponent"; import { typesContext } from "../../contexts/typesContext"; import { useContext, useState, useEffect, useRef } from "react"; @@ -12,6 +17,7 @@ import NodeToolbarComponent from "../../pages/FlowPage/components/nodeToolbarCom import ShadTooltip from "../../components/ShadTooltipComponent"; import { useSSE } from "../../contexts/SSEContext"; +import { ReactElement } from "react-markdown/lib/react-markdown"; export default function GenericNode({ data, @@ -26,7 +32,8 @@ export default function GenericNode({ const { closePopUp, openPopUp } = useContext(PopUpContext); - const Icon = nodeIcons[data.type] || nodeIcons[types[data.type]]; + const Icon: any = + nodeIconsLucide[data.type] || nodeIconsLucide[types[data.type]]; const [validationStatus, setValidationStatus] = useState(null); // State for outline color const { sseData, isBuilding } = useSSE(); diff --git a/src/frontend/src/modals/NodeModal/index.tsx b/src/frontend/src/modals/NodeModal/index.tsx index 6ceba62bf..e28457859 100644 --- a/src/frontend/src/modals/NodeModal/index.tsx +++ b/src/frontend/src/modals/NodeModal/index.tsx @@ -27,7 +27,7 @@ export default function NodeModal({ data }: { data: NodeDataType }) { }, 300); } } - const Icon = nodeIcons[types[data.type]]; + const Icon: any = nodeIcons[types[data.type]]; return ( { if (inputRef.current) { diff --git a/src/frontend/src/pages/FlowPage/components/DisclosureComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/DisclosureComponent/index.tsx index 7b80e1cff..7f25d1fe1 100644 --- a/src/frontend/src/pages/FlowPage/components/DisclosureComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/DisclosureComponent/index.tsx @@ -14,7 +14,7 @@ export default function DisclosureComponent({
- + {title} diff --git a/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx index 2aab4d0e3..5748d548f 100644 --- a/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx @@ -3,7 +3,7 @@ import DisclosureComponent from "../DisclosureComponent"; import { classNames, nodeColors, - nodeIcons, + nodeIconsLucide, nodeNames, } from "../../../../utils"; import { useContext, useState } from "react"; @@ -11,7 +11,7 @@ import { typesContext } from "../../../../contexts/typesContext"; import { APIClassType, APIObjectType } from "../../../../types/api"; import { MagnifyingGlassIcon } from "@heroicons/react/24/outline"; import ShadTooltip from "../../../../components/ShadTooltipComponent"; -import { Code2, FileDown, FileUp, Save } from "lucide-react"; +import { Code2, FileDown, FileUp, Save, Search } from "lucide-react"; import { PopUpContext } from "../../../../contexts/popUpContext"; import ExportModal from "../../../../modals/exportModal"; import ApiModal from "../../../../modals/ApiModal"; @@ -135,7 +135,7 @@ export default function ExtraSidebar() { }} />
- +
@@ -149,7 +149,7 @@ export default function ExtraSidebar() { key={i} button={{ title: nodeNames[d] ?? nodeNames.unknown, - Icon: nodeIcons[d] ?? nodeIcons.unknown, + Icon: nodeIconsLucide[d] ?? nodeIconsLucide.unknown, }} >
diff --git a/src/frontend/src/types/components/index.ts b/src/frontend/src/types/components/index.ts index 11f8aec07..630526193 100644 --- a/src/frontend/src/types/components/index.ts +++ b/src/frontend/src/types/components/index.ts @@ -1,4 +1,10 @@ -import { ForwardRefExoticComponent, ReactElement, ReactNode } from "react"; +import { + ComponentType, + ForwardRefExoticComponent, + ReactElement, + ReactNode, + SVGProps, +} from "react"; import { NodeDataType } from "../flow/index"; import { typesContextType } from "../typesContext"; export type InputComponentType = { @@ -65,7 +71,7 @@ export type DisclosureComponentType = { openDisc: boolean; button: { title: string; - Icon: ForwardRefExoticComponent>; + Icon: any; buttons?: { Icon: ReactElement; title: string; diff --git a/src/frontend/src/utils.ts b/src/frontend/src/utils.ts index c09c64b2b..0b853974c 100644 --- a/src/frontend/src/utils.ts +++ b/src/frontend/src/utils.ts @@ -42,6 +42,27 @@ import { SlackIcon } from "./icons/Slack"; import clsx, { ClassValue } from "clsx"; import { twMerge } from "tailwind-merge"; import { ADJECTIVES, DESCRIPTIONS, NOUNS } from "./constants"; +import { ComponentType, SVGProps } from "react"; +import { + Boxes, + Cpu, + Fingerprint, + Gift, + Hammer, + HelpCircle, + Laptop2, + Layers, + LayoutDashboard, + Lightbulb, + Link, + MessageCircle, + Paperclip, + Rocket, + Scissors, + TerminalSquare, + Wand2, + Wrench, +} from "lucide-react"; export function classNames(...classes: Array) { return classes.filter(Boolean).join(" "); @@ -198,6 +219,142 @@ export const nodeIcons: { unknown: QuestionMarkCircleIcon, }; +export const nodeIconsLucide: { + [char: string]: React.ForwardRefExoticComponent< + ComponentType> + >; +} = { + Chroma: ChromaIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + AirbyteJSONLoader: AirbyteIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + Anthropic: AnthropicIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + ChatAnthropic: AnthropicIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + BingSearchAPIWrapper: BingIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + BingSearchRun: BingIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + Cohere: CohereIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + CohereEmbeddings: CohereIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + EverNoteLoader: EvernoteIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + FacebookChatLoader: FBIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + GitbookLoader: GitBookIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + GoogleSearchAPIWrapper: GoogleIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + GoogleSearchResults: GoogleIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + GoogleSearchRun: GoogleIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + HNLoader: HackerNewsIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + HuggingFaceHub: HugginFaceIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + HuggingFaceEmbeddings: HugginFaceIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + IFixitLoader: IFixIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + Meta: MetaIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + Midjorney: MidjorneyIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + NotionDirectoryLoader: NotionIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + ChatOpenAI: OpenAiIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + OpenAI: OpenAiIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + OpenAIEmbeddings: OpenAiIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + Qdrant: QDrantIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + Searx: SearxIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + SlackDirectoryLoader: SlackIcon as React.ForwardRefExoticComponent< + ComponentType> + >, + agents: Rocket as React.ForwardRefExoticComponent< + ComponentType> + >, + chains: Link as React.ForwardRefExoticComponent< + ComponentType> + >, + memories: Cpu as React.ForwardRefExoticComponent< + ComponentType> + >, + llms: Lightbulb as React.ForwardRefExoticComponent< + ComponentType> + >, + prompts: TerminalSquare as React.ForwardRefExoticComponent< + ComponentType> + >, + tools: Wrench as React.ForwardRefExoticComponent< + ComponentType> + >, + advanced: Laptop2 as React.ForwardRefExoticComponent< + ComponentType> + >, + chat: MessageCircle as React.ForwardRefExoticComponent< + ComponentType> + >, + embeddings: Fingerprint as React.ForwardRefExoticComponent< + ComponentType> + >, + documentloaders: Paperclip as React.ForwardRefExoticComponent< + ComponentType> + >, + vectorstores: Layers as React.ForwardRefExoticComponent< + ComponentType> + >, + toolkits: Hammer as React.ForwardRefExoticComponent< + ComponentType> + >, + textsplitters: Scissors as React.ForwardRefExoticComponent< + ComponentType> + >, + wrappers: Gift as React.ForwardRefExoticComponent< + ComponentType> + >, + utilities: Wand2 as React.ForwardRefExoticComponent< + ComponentType> + >, + unknown: HelpCircle as React.ForwardRefExoticComponent< + ComponentType> + >, +}; + export const gradients = [ "bg-gradient-to-br from-gray-800 via-rose-700 to-violet-900", "bg-gradient-to-br from-green-200 via-green-300 to-blue-500",