Merge remote-tracking branch 'refs/remotes/origin/python_custom_node_component' into python_custom_node_component
This commit is contained in:
commit
162036cbc7
144 changed files with 4721 additions and 2491 deletions
|
|
@ -1,11 +1,11 @@
|
|||
import { cloneDeep } from "lodash";
|
||||
import { Info } from "lucide-react";
|
||||
import React, { useContext, useEffect, useRef, useState } from "react";
|
||||
import { Handle, Position, useUpdateNodeInternals } from "reactflow";
|
||||
import ShadTooltip from "../../../../components/ShadTooltipComponent";
|
||||
import CodeAreaComponent from "../../../../components/codeAreaComponent";
|
||||
import Dropdown from "../../../../components/dropdownComponent";
|
||||
import FloatComponent from "../../../../components/floatComponent";
|
||||
import IconComponent from "../../../../components/genericIconComponent";
|
||||
import InputComponent from "../../../../components/inputComponent";
|
||||
import InputFileComponent from "../../../../components/inputFileComponent";
|
||||
import InputListComponent from "../../../../components/inputListComponent";
|
||||
|
|
@ -13,19 +13,21 @@ import IntComponent from "../../../../components/intComponent";
|
|||
import PromptAreaComponent from "../../../../components/promptComponent";
|
||||
import TextAreaComponent from "../../../../components/textAreaComponent";
|
||||
import ToggleShadComponent from "../../../../components/toggleShadComponent";
|
||||
import { MAX_LENGTH_TO_SCROLL_TOOLTIP } from "../../../../constants";
|
||||
import { MAX_LENGTH_TO_SCROLL_TOOLTIP } from "../../../../constants/constants";
|
||||
import { TabsContext } from "../../../../contexts/tabsContext";
|
||||
import { typesContext } from "../../../../contexts/typesContext";
|
||||
import { ParameterComponentType } from "../../../../types/components";
|
||||
import { isValidConnection } from "../../../../utils/reactflowUtils";
|
||||
import {
|
||||
nodeColors,
|
||||
nodeIconsLucide,
|
||||
nodeNames,
|
||||
} from "../../../../utils/styleUtils";
|
||||
import {
|
||||
classNames,
|
||||
getRandomKeyByssmm,
|
||||
groupByFamily,
|
||||
isValidConnection,
|
||||
nodeColors,
|
||||
nodeIconsLucide,
|
||||
nodeNames,
|
||||
} from "../../../../utils";
|
||||
} from "../../../../utils/utils";
|
||||
|
||||
export default function ParameterComponent({
|
||||
left,
|
||||
|
|
@ -49,6 +51,7 @@ export default function ParameterComponent({
|
|||
const [position, setPosition] = useState(0);
|
||||
const { setTabsState, tabId, save } = useContext(TabsContext);
|
||||
|
||||
// Update component position
|
||||
useEffect(() => {
|
||||
if (ref.current && ref.current.offsetTop && ref.current.clientHeight) {
|
||||
setPosition(ref.current.offsetTop + ref.current.clientHeight / 2);
|
||||
|
|
@ -84,6 +87,7 @@ export default function ParameterComponent({
|
|||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (name === "openai_api_base") console.log(info);
|
||||
infoHtml.current = (
|
||||
<div className="h-full w-full break-words">
|
||||
{info.split("\n").map((line, i) => (
|
||||
|
|
@ -146,7 +150,6 @@ export default function ParameterComponent({
|
|||
);
|
||||
});
|
||||
}, [tooltipTitle]);
|
||||
|
||||
return (
|
||||
<div
|
||||
ref={ref}
|
||||
|
|
@ -165,7 +168,13 @@ export default function ParameterComponent({
|
|||
<div className="">
|
||||
{info !== "" && (
|
||||
<ShadTooltip content={infoHtml.current}>
|
||||
<Info className="relative bottom-0.5 ml-2 h-3 w-3" />
|
||||
{/* put div to avoid bug that does not display tooltip */}
|
||||
<div>
|
||||
<IconComponent
|
||||
name="Info"
|
||||
className="relative bottom-0.5 ml-2 h-3 w-4"
|
||||
/>
|
||||
</div>
|
||||
</ShadTooltip>
|
||||
)}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,22 +1,18 @@
|
|||
import { cloneDeep } from "lodash";
|
||||
import { Zap } from "lucide-react";
|
||||
import { useContext, useEffect, useRef, useState } from "react";
|
||||
import { NodeToolbar, useUpdateNodeInternals } from "reactflow";
|
||||
import ShadTooltip from "../../components/ShadTooltipComponent";
|
||||
import Tooltip from "../../components/TooltipComponent";
|
||||
import IconComponent from "../../components/genericIconComponent";
|
||||
import { useSSE } from "../../contexts/SSEContext";
|
||||
import { alertContext } from "../../contexts/alertContext";
|
||||
import { TabsContext } from "../../contexts/tabsContext";
|
||||
import { typesContext } from "../../contexts/typesContext";
|
||||
import NodeToolbarComponent from "../../pages/FlowPage/components/nodeToolbarComponent";
|
||||
import { NodeDataType } from "../../types/flow";
|
||||
import { cleanEdges } from "../../util/reactflowUtils";
|
||||
import {
|
||||
classNames,
|
||||
nodeColors,
|
||||
nodeIconsLucide,
|
||||
toTitleCase,
|
||||
} from "../../utils";
|
||||
import { cleanEdges } from "../../utils/reactflowUtils";
|
||||
import { nodeColors, nodeIconsLucide } from "../../utils/styleUtils";
|
||||
import { classNames, toTitleCase } from "../../utils/utils";
|
||||
import ParameterComponent from "./components/parameterComponent";
|
||||
|
||||
export default function GenericNode({
|
||||
|
|
@ -35,6 +31,7 @@ export default function GenericNode({
|
|||
// any to avoid type conflict
|
||||
const Icon: any =
|
||||
nodeIconsLucide[data.type] || nodeIconsLucide[types[data.type]];
|
||||
const name = nodeIconsLucide[data.type] ? data.type : types[data.type];
|
||||
const [validationStatus, setValidationStatus] = useState(null);
|
||||
// State for outline color
|
||||
const { sseData, isBuilding } = useSSE();
|
||||
|
|
@ -100,12 +97,10 @@ export default function GenericNode({
|
|||
>
|
||||
<div className="generic-node-div-title">
|
||||
<div className="generic-node-title-arrangement">
|
||||
<Icon
|
||||
strokeWidth={1.5}
|
||||
<IconComponent
|
||||
name={name}
|
||||
className="generic-node-icon"
|
||||
style={{
|
||||
color: nodeColors[types[data.type]] ?? nodeColors.unknown,
|
||||
}}
|
||||
iconColor={`${nodeColors[types[data.type]]}`}
|
||||
/>
|
||||
<div className="generic-node-tooltip-div">
|
||||
<ShadTooltip content={data.node.display_name}>
|
||||
|
|
@ -124,9 +119,9 @@ export default function GenericNode({
|
|||
) : !validationStatus ? (
|
||||
<span className="flex">
|
||||
Build{" "}
|
||||
<Zap
|
||||
<IconComponent
|
||||
name="Zap"
|
||||
className="mx-0.5 h-5 fill-build-trigger stroke-build-trigger stroke-1"
|
||||
strokeWidth={1.5}
|
||||
/>{" "}
|
||||
flow to validate status.
|
||||
</span>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { Transition } from "@headlessui/react";
|
||||
import { CheckCircle2, Info, X, XCircle } from "lucide-react";
|
||||
import { useState } from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
import IconComponent from "../../../../components/genericIconComponent";
|
||||
import { SingleAlertComponentType } from "../../../../types/alerts";
|
||||
|
||||
export default function SingleAlert({
|
||||
|
|
@ -29,7 +29,11 @@ export default function SingleAlert({
|
|||
key={dropItem.id}
|
||||
>
|
||||
<div className="flex-shrink-0">
|
||||
<XCircle className="h-5 w-5 text-status-red" aria-hidden="true" />
|
||||
<IconComponent
|
||||
name="XCircle"
|
||||
className="h-5 w-5 text-status-red"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
</div>
|
||||
<div className="ml-3">
|
||||
<h3 className="break-words text-sm font-medium text-error-foreground">
|
||||
|
|
@ -62,7 +66,8 @@ export default function SingleAlert({
|
|||
className="inline-flex rounded-md p-1.5 text-status-red"
|
||||
>
|
||||
<span className="sr-only">Dismiss</span>
|
||||
<X
|
||||
<IconComponent
|
||||
name="X"
|
||||
className="h-4 w-4 text-error-foreground"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
|
|
@ -76,7 +81,11 @@ export default function SingleAlert({
|
|||
key={dropItem.id}
|
||||
>
|
||||
<div className="flex-shrink-0">
|
||||
<Info className="h-5 w-5 text-status-blue " aria-hidden="true" />
|
||||
<IconComponent
|
||||
name="Info"
|
||||
className="h-5 w-5 text-status-blue "
|
||||
aria-hidden="true"
|
||||
/>
|
||||
</div>
|
||||
<div className="ml-3 flex-1 md:flex md:justify-between">
|
||||
<p className="text-sm font-medium text-info-foreground">
|
||||
|
|
@ -108,7 +117,8 @@ export default function SingleAlert({
|
|||
className="inline-flex rounded-md p-1.5 text-info-foreground"
|
||||
>
|
||||
<span className="sr-only">Dismiss</span>
|
||||
<X
|
||||
<IconComponent
|
||||
name="X"
|
||||
className="h-4 w-4 text-info-foreground"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
|
|
@ -122,7 +132,8 @@ export default function SingleAlert({
|
|||
key={dropItem.id}
|
||||
>
|
||||
<div className="flex-shrink-0">
|
||||
<CheckCircle2
|
||||
<IconComponent
|
||||
name="CheckCircle2"
|
||||
className="h-5 w-5 text-status-green"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
|
|
@ -145,7 +156,8 @@ export default function SingleAlert({
|
|||
className="inline-flex rounded-md p-1.5 text-status-green"
|
||||
>
|
||||
<span className="sr-only">Dismiss</span>
|
||||
<X
|
||||
<IconComponent
|
||||
name="X"
|
||||
className="h-4 w-4 text-success-foreground"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { Trash2, X } from "lucide-react";
|
||||
import { useContext, useRef } from "react";
|
||||
import IconComponent from "../../components/genericIconComponent";
|
||||
import { alertContext } from "../../contexts/alertContext";
|
||||
import { PopUpContext } from "../../contexts/popUpContext";
|
||||
import { AlertDropdownType } from "../../types/alerts";
|
||||
|
|
@ -36,13 +36,13 @@ export default function AlertDropdown({}: AlertDropdownType) {
|
|||
setTimeout(clearNotificationList, 100);
|
||||
}}
|
||||
>
|
||||
<Trash2 className="h-[1.1rem] w-[1.1rem]" />
|
||||
<IconComponent name="Trash2" className="h-[1.1rem] w-[1.1rem]" />
|
||||
</button>
|
||||
<button
|
||||
className="text-foreground hover:text-status-red"
|
||||
onClick={closePopUp}
|
||||
>
|
||||
<X className="h-5 w-5" />
|
||||
<IconComponent name="X" className="h-5 w-5" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { Transition } from "@headlessui/react";
|
||||
import { XCircle } from "lucide-react";
|
||||
import { useEffect, useState } from "react";
|
||||
import IconComponent from "../../components/genericIconComponent";
|
||||
import { ErrorAlertType } from "../../types/alerts";
|
||||
|
||||
export default function ErrorAlert({
|
||||
|
|
@ -44,7 +44,8 @@ export default function ErrorAlert({
|
|||
>
|
||||
<div className="flex">
|
||||
<div className="flex-shrink-0">
|
||||
<XCircle
|
||||
<IconComponent
|
||||
name="XCircle"
|
||||
className="error-build-message-circle"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { Transition } from "@headlessui/react";
|
||||
import { Info } from "lucide-react";
|
||||
import { useEffect, useState } from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
import IconComponent from "../../components/genericIconComponent";
|
||||
import { NoticeAlertType } from "../../types/alerts";
|
||||
|
||||
export default function NoticeAlert({
|
||||
|
|
@ -40,7 +40,11 @@ export default function NoticeAlert({
|
|||
>
|
||||
<div className="flex">
|
||||
<div className="flex-shrink-0">
|
||||
<Info className="h-5 w-5 text-status-blue " aria-hidden="true" />
|
||||
<IconComponent
|
||||
name="Info"
|
||||
className="h-5 w-5 text-status-blue "
|
||||
aria-hidden="true"
|
||||
/>
|
||||
</div>
|
||||
<div className="ml-3 flex-1 md:flex md:justify-between">
|
||||
<p className="text-sm text-info-foreground">{title}</p>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { Transition } from "@headlessui/react";
|
||||
import { CheckCircle2 } from "lucide-react";
|
||||
import { useEffect, useState } from "react";
|
||||
import IconComponent from "../../components/genericIconComponent";
|
||||
import { SuccessAlertType } from "../../types/alerts";
|
||||
|
||||
export default function SuccessAlert({
|
||||
|
|
@ -38,7 +38,11 @@ export default function SuccessAlert({
|
|||
>
|
||||
<div className="flex">
|
||||
<div className="flex-shrink-0">
|
||||
<CheckCircle2 className="success-alert-icon" aria-hidden="true" />
|
||||
<IconComponent
|
||||
name="CheckCircle2"
|
||||
className="success-alert-icon"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
</div>
|
||||
<div className="ml-3">
|
||||
<p className="success-alert-message">{title}</p>
|
||||
|
|
|
|||
|
|
@ -11,13 +11,12 @@ export default function AccordionComponent({
|
|||
trigger,
|
||||
children,
|
||||
open = [],
|
||||
keyValue,
|
||||
}: AccordionComponentType) {
|
||||
const [value, setValue] = useState(
|
||||
open.length === 0 ? "" : getOpenAccordion()
|
||||
);
|
||||
|
||||
console.log(open);
|
||||
|
||||
function getOpenAccordion() {
|
||||
let value = "";
|
||||
open.forEach((el) => {
|
||||
|
|
@ -30,13 +29,18 @@ export default function AccordionComponent({
|
|||
}
|
||||
|
||||
function handleClick() {
|
||||
value == "" ? setValue(trigger) : setValue("");
|
||||
value === "" ? setValue(keyValue) : setValue("");
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<Accordion type="single" value={value} onValueChange={setValue}>
|
||||
<AccordionItem value={trigger} className="border-none">
|
||||
<Accordion
|
||||
type="single"
|
||||
className="w-full"
|
||||
value={value}
|
||||
onValueChange={setValue}
|
||||
>
|
||||
<AccordionItem value={keyValue} className="border-b">
|
||||
<AccordionTrigger
|
||||
onClick={() => {
|
||||
handleClick();
|
||||
|
|
|
|||
|
|
@ -1,117 +0,0 @@
|
|||
import { Disclosure } from "@headlessui/react";
|
||||
import { useContext } from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
import { locationContext } from "../../contexts/locationContext";
|
||||
import { classNames } from "../../utils";
|
||||
|
||||
export default function ExtraSidebar() {
|
||||
const {
|
||||
current,
|
||||
isStackedOpen,
|
||||
setIsStackedOpen,
|
||||
extraNavigation,
|
||||
extraComponent,
|
||||
} = useContext(locationContext);
|
||||
|
||||
return (
|
||||
<>
|
||||
<aside
|
||||
className={` ${isStackedOpen ? "w-52" : "w-0 "} unused-side-bar-aside`}
|
||||
>
|
||||
<div className="unused-side-bar-arrangement">
|
||||
<div className="unused-side-bar-division">
|
||||
{extraNavigation.options ? (
|
||||
<div className="p-4">
|
||||
<nav className="unused-side-bar-nav">
|
||||
{extraNavigation.options.map((item) =>
|
||||
!item.children ? (
|
||||
<div key={item.name}>
|
||||
<Link
|
||||
to={item.href}
|
||||
className={classNames(
|
||||
item.href.split("/")[2] === current[4]
|
||||
? "unused-side-bar-link-colors-true"
|
||||
: "unused-side-bar-link-colors-false",
|
||||
"unused-side-bar-link"
|
||||
)}
|
||||
>
|
||||
<item.icon
|
||||
className={classNames(
|
||||
item.href.split("/")[2] === current[4]
|
||||
? "text-ring"
|
||||
: "unused-side-bar-icon-false",
|
||||
"unused-side-bar-icon"
|
||||
)}
|
||||
/>
|
||||
{item.name}
|
||||
</Link>
|
||||
</div>
|
||||
) : (
|
||||
<Disclosure
|
||||
as="div"
|
||||
key={item.name}
|
||||
className="space-y-1"
|
||||
>
|
||||
{({ open }) => (
|
||||
<>
|
||||
<Disclosure.Button
|
||||
className={classNames(
|
||||
item.href.split("/")[2] === current[4]
|
||||
? "unused-side-bar-link-colors-true"
|
||||
: "unused-side-bar-link-colors-false",
|
||||
"unused-side-bar-disclosure"
|
||||
)}
|
||||
>
|
||||
<item.icon
|
||||
className="unused-side-bar-disclosure-icon"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
<span className="flex-1">{item.name}</span>
|
||||
<svg
|
||||
className={classNames(
|
||||
open
|
||||
? "unused-side-bar-svg-true"
|
||||
: "text-ring",
|
||||
"unused-side-bar-svg"
|
||||
)}
|
||||
viewBox="0 0 20 20"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path
|
||||
d="M6 6L14 10L6 14V6Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
</Disclosure.Button>
|
||||
<Disclosure.Panel className="space-y-1">
|
||||
{item.children.map((subItem) => (
|
||||
<Link
|
||||
key={subItem.name}
|
||||
to={subItem.href}
|
||||
className={classNames(
|
||||
subItem.href.split("/")[3] === current[5]
|
||||
? "unused-side-bar-link-colors-true"
|
||||
: "unused-side-bar-link-colors-false",
|
||||
"unused-side-bar-disclosure-panel"
|
||||
)}
|
||||
>
|
||||
{subItem.name}
|
||||
</Link>
|
||||
))}
|
||||
</Disclosure.Panel>
|
||||
</>
|
||||
)}
|
||||
</Disclosure>
|
||||
)
|
||||
)}
|
||||
</nav>
|
||||
</div>
|
||||
) : (
|
||||
extraComponent
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@ import type { FC } from "react";
|
|||
import React from "react";
|
||||
import { Tooltip as ReactTooltip } from "react-tooltip";
|
||||
import "react-tooltip/dist/react-tooltip.css";
|
||||
import { classNames } from "../../utils";
|
||||
import { classNames } from "../../utils/utils";
|
||||
|
||||
type TooltipProps = {
|
||||
selector: string;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import { Trash2 } from "lucide-react";
|
||||
import { useContext } from "react";
|
||||
import { TabsContext } from "../../contexts/tabsContext";
|
||||
import { FlowType } from "../../types/flow";
|
||||
import { gradients } from "../../utils";
|
||||
import { gradients } from "../../utils/styleUtils";
|
||||
import IconComponent from "../genericIconComponent";
|
||||
import {
|
||||
Card,
|
||||
CardDescription,
|
||||
|
|
@ -37,7 +37,10 @@ export const CardComponent = ({
|
|||
<span className="card-component-title-size">{flow.name}</span>
|
||||
{onDelete && (
|
||||
<button className="card-component-delete-button" onClick={onDelete}>
|
||||
<Trash2 className="card-component-delete-icon" />
|
||||
<IconComponent
|
||||
name="Trash2"
|
||||
className="card-component-delete-icon"
|
||||
/>
|
||||
</button>
|
||||
)}
|
||||
</CardTitle>
|
||||
|
|
@ -51,15 +54,7 @@ export const CardComponent = ({
|
|||
|
||||
<CardFooter>
|
||||
<div className="card-component-footer-arrangement">
|
||||
<div className="card-component-footer">
|
||||
{/* <Badge variant="secondary">Agent</Badge>
|
||||
<Badge variant="secondary">
|
||||
<div className="w-3">
|
||||
<OpenAiIcon />
|
||||
</div>
|
||||
<span className="text-base"> </span>OpenAI+
|
||||
</Badge> */}
|
||||
</div>
|
||||
<div className="card-component-footer"></div>
|
||||
{button && button}
|
||||
</div>
|
||||
</CardFooter>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import { Transition } from "@headlessui/react";
|
||||
import { Zap } from "lucide-react";
|
||||
import { useContext, useState } from "react";
|
||||
import Loading from "../../../components/ui/loading";
|
||||
import { useSSE } from "../../../contexts/SSEContext";
|
||||
|
|
@ -7,10 +6,11 @@ import { alertContext } from "../../../contexts/alertContext";
|
|||
import { typesContext } from "../../../contexts/typesContext";
|
||||
import { postBuildInit } from "../../../controllers/API";
|
||||
import { FlowType } from "../../../types/flow";
|
||||
import { validateNodes } from "../../../utils";
|
||||
|
||||
import { TabsContext } from "../../../contexts/tabsContext";
|
||||
import { validateNodes } from "../../../utils/reactflowUtils";
|
||||
import RadialProgressComponent from "../../RadialProgress";
|
||||
import IconComponent from "../../genericIconComponent";
|
||||
|
||||
export default function BuildTrigger({
|
||||
open,
|
||||
|
|
@ -190,8 +190,8 @@ export default function BuildTrigger({
|
|||
className="build-trigger-loading-icon"
|
||||
/>
|
||||
) : (
|
||||
<Zap
|
||||
strokeWidth={1.5}
|
||||
<IconComponent
|
||||
name="Zap"
|
||||
className="sh-6 w-6 fill-build-trigger stroke-build-trigger stroke-1"
|
||||
/>
|
||||
)}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import { Transition } from "@headlessui/react";
|
||||
import { MessagesSquare } from "lucide-react";
|
||||
|
||||
import { useContext } from "react";
|
||||
import {
|
||||
|
|
@ -7,8 +6,9 @@ import {
|
|||
CHAT_CANNOT_OPEN_TITLE,
|
||||
FLOW_NOT_BUILT_DESCRIPTION,
|
||||
FLOW_NOT_BUILT_TITLE,
|
||||
} from "../../../constants";
|
||||
} from "../../../constants/constants";
|
||||
import { alertContext } from "../../../contexts/alertContext";
|
||||
import IconComponent from "../../genericIconComponent";
|
||||
|
||||
export default function ChatTrigger({ open, setOpen, isBuilt, canOpen }) {
|
||||
const { setErrorData } = useContext(alertContext);
|
||||
|
|
@ -50,15 +50,14 @@ export default function ChatTrigger({ open, setOpen, isBuilt, canOpen }) {
|
|||
}
|
||||
>
|
||||
<div className="flex gap-3">
|
||||
<MessagesSquare
|
||||
<IconComponent
|
||||
name="MessagesSquare"
|
||||
className={
|
||||
"h-6 w-6 transition-all " +
|
||||
(isBuilt && canOpen
|
||||
? "message-button-icon"
|
||||
: "disabled-message-button-icon")
|
||||
}
|
||||
style={{ color: "white" }}
|
||||
strokeWidth={1.5}
|
||||
/>
|
||||
</div>
|
||||
</button>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { useEffect, useState } from "react";
|
|||
import CodeAreaModal from "../../modals/codeAreaModal";
|
||||
import { CodeAreaComponentType } from "../../types/components";
|
||||
|
||||
import { ExternalLink } from "lucide-react";
|
||||
import IconComponent from "../genericIconComponent";
|
||||
|
||||
export default function CodeAreaComponent({
|
||||
value,
|
||||
|
|
@ -51,9 +51,12 @@ export default function CodeAreaComponent({
|
|||
{myValue !== "" ? myValue : "Type something..."}
|
||||
</span>
|
||||
{!editNode && (
|
||||
<ExternalLink
|
||||
strokeWidth={1.5}
|
||||
className="ml-3 h-6 w-6 hover:text-accent-foreground"
|
||||
<IconComponent
|
||||
name="ExternalLink"
|
||||
className={
|
||||
"icons-parameters-comp" +
|
||||
(disabled ? " text-ring" : " hover:text-accent-foreground")
|
||||
}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { Check, Clipboard, Download } from "lucide-react";
|
||||
import { useContext, useState } from "react";
|
||||
import { Prism as SyntaxHighlighter } from "react-syntax-highlighter";
|
||||
import { oneDark } from "react-syntax-highlighter/dist/cjs/styles/prism";
|
||||
|
|
@ -30,7 +29,8 @@ import {
|
|||
} from "../../components/ui/tabs";
|
||||
import { darkContext } from "../../contexts/darkContext";
|
||||
import { FlowType } from "../../types/flow/index";
|
||||
import { classNames } from "../../utils";
|
||||
import { classNames } from "../../utils/utils";
|
||||
import IconComponent from "../genericIconComponent";
|
||||
|
||||
export default function CodeTabsComponent({
|
||||
flow,
|
||||
|
|
@ -143,14 +143,18 @@ export default function CodeTabsComponent({
|
|||
className="flex items-center gap-1.5 rounded bg-none p-1 text-xs text-gray-500 dark:text-gray-300"
|
||||
onClick={copyToClipboard}
|
||||
>
|
||||
{isCopied ? <Check size={18} /> : <Clipboard size={15} />}
|
||||
{isCopied ? (
|
||||
<IconComponent name="Check" className="h-4 w-4" />
|
||||
) : (
|
||||
<IconComponent name="Clipboard" className="h-4 w-4" />
|
||||
)}
|
||||
{isCopied ? "Copied!" : "Copy code"}
|
||||
</button>
|
||||
<button
|
||||
className="flex items-center gap-1.5 rounded bg-none p-1 text-xs text-gray-500 dark:text-gray-300"
|
||||
onClick={downloadAsFile}
|
||||
>
|
||||
<Download size={18} />
|
||||
<IconComponent name="Download" className="h-5 w-5" />
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import { Listbox, Transition } from "@headlessui/react";
|
||||
import { Check, ChevronsUpDown } from "lucide-react";
|
||||
import { Fragment, useEffect, useState } from "react";
|
||||
import { DropDownComponentType } from "../../types/components";
|
||||
import { classNames } from "../../utils";
|
||||
import { classNames } from "../../utils/utils";
|
||||
import IconComponent from "../genericIconComponent";
|
||||
|
||||
export default function Dropdown({
|
||||
value,
|
||||
|
|
@ -43,7 +43,8 @@ export default function Dropdown({
|
|||
{internalValue}
|
||||
</span>
|
||||
<span className={"dropdown-component-arrow"}>
|
||||
<ChevronsUpDown
|
||||
<IconComponent
|
||||
name="ChevronsUpDown"
|
||||
className="dropdown-component-arrow-color"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
|
|
@ -96,7 +97,8 @@ export default function Dropdown({
|
|||
"dropdown-component-choosal"
|
||||
)}
|
||||
>
|
||||
<Check
|
||||
<IconComponent
|
||||
name="Check"
|
||||
className={
|
||||
active
|
||||
? "dropdown-component-check-icon"
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ export default function FloatComponent({
|
|||
const min = 0;
|
||||
const max = 1;
|
||||
|
||||
// Clear component state
|
||||
useEffect(() => {
|
||||
if (disabled) {
|
||||
onChange("");
|
||||
|
|
|
|||
11
src/frontend/src/components/genericIconComponent/index.tsx
Normal file
11
src/frontend/src/components/genericIconComponent/index.tsx
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
import { IconComponentProps } from "../../types/components";
|
||||
import { nodeIconsLucide } from "../../utils/styleUtils";
|
||||
|
||||
export default function IconComponent({
|
||||
name,
|
||||
className,
|
||||
iconColor,
|
||||
}: IconComponentProps): JSX.Element {
|
||||
const TargetIcon = nodeIconsLucide[name] ?? nodeIconsLucide["unknown"];
|
||||
return <TargetIcon className={className} style={{ color: iconColor }} />;
|
||||
}
|
||||
|
|
@ -1,11 +1,3 @@
|
|||
import {
|
||||
ChevronDown,
|
||||
ChevronLeft,
|
||||
Plus,
|
||||
Redo,
|
||||
Settings2,
|
||||
Undo,
|
||||
} from "lucide-react";
|
||||
import { useContext, useState } from "react";
|
||||
import { TabsContext } from "../../../../contexts/tabsContext";
|
||||
import {
|
||||
|
|
@ -20,10 +12,11 @@ import { Link, useNavigate } from "react-router-dom";
|
|||
import { alertContext } from "../../../../contexts/alertContext";
|
||||
import { undoRedoContext } from "../../../../contexts/undoRedoContext";
|
||||
import FlowSettingsModal from "../../../../modals/flowSettingsModal";
|
||||
import IconComponent from "../../../genericIconComponent";
|
||||
import { Button } from "../../../ui/button";
|
||||
|
||||
export const MenuBar = ({ flows, tabId }) => {
|
||||
const { updateFlow, setTabId, addFlow } = useContext(TabsContext);
|
||||
const { addFlow } = useContext(TabsContext);
|
||||
const { setErrorData } = useContext(alertContext);
|
||||
const { undo, redo } = useContext(undoRedoContext);
|
||||
const [openSettings, setOpenSettings] = useState(false);
|
||||
|
|
@ -45,7 +38,7 @@ export const MenuBar = ({ flows, tabId }) => {
|
|||
return (
|
||||
<div className="round-button-div">
|
||||
<Link to="/">
|
||||
<ChevronLeft className="w-4" />
|
||||
<IconComponent name="ChevronLeft" className="w-4" />
|
||||
</Link>
|
||||
<div className="header-menu-bar">
|
||||
<DropdownMenu>
|
||||
|
|
@ -53,7 +46,7 @@ export const MenuBar = ({ flows, tabId }) => {
|
|||
<Button asChild variant="primary" size="sm">
|
||||
<div className="header-menu-bar-display">
|
||||
<div className="header-menu-flow-name">{current_flow.name}</div>
|
||||
<ChevronDown className="h-4 w-4" />
|
||||
<IconComponent name="ChevronDown" className="h-4 w-4" />
|
||||
</div>
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
|
|
@ -65,7 +58,7 @@ export const MenuBar = ({ flows, tabId }) => {
|
|||
}}
|
||||
className="cursor-pointer"
|
||||
>
|
||||
<Plus className="header-menu-options" />
|
||||
<IconComponent name="Plus" className="header-menu-options" />
|
||||
New
|
||||
</DropdownMenuItem>
|
||||
|
||||
|
|
@ -75,7 +68,10 @@ export const MenuBar = ({ flows, tabId }) => {
|
|||
}}
|
||||
className="cursor-pointer"
|
||||
>
|
||||
<Settings2 className="header-menu-options " />
|
||||
<IconComponent
|
||||
name="Settings2"
|
||||
className="header-menu-options "
|
||||
/>
|
||||
Settings
|
||||
</DropdownMenuItem>
|
||||
|
||||
|
|
@ -85,7 +81,7 @@ export const MenuBar = ({ flows, tabId }) => {
|
|||
}}
|
||||
className="cursor-pointer"
|
||||
>
|
||||
<Undo className="header-menu-options " />
|
||||
<IconComponent name="Undo" className="header-menu-options " />
|
||||
Undo
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
|
|
@ -94,7 +90,7 @@ export const MenuBar = ({ flows, tabId }) => {
|
|||
}}
|
||||
className="cursor-pointer"
|
||||
>
|
||||
<Redo className="header-menu-options " />
|
||||
<IconComponent name="Redo" className="header-menu-options " />
|
||||
Redo
|
||||
</DropdownMenuItem>
|
||||
</DropdownMenuContent>
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
import { Bell, Home, MoonIcon, SunIcon, Users2 } from "lucide-react";
|
||||
import { useContext, useEffect, useState } from "react";
|
||||
import { FaDiscord, FaGithub, FaTwitter } from "react-icons/fa";
|
||||
import { Link, useLocation, useParams } from "react-router-dom";
|
||||
import AlertDropdown from "../../alerts/alertDropDown";
|
||||
import { USER_PROJECTS_HEADER } from "../../constants";
|
||||
import { USER_PROJECTS_HEADER } from "../../constants/constants";
|
||||
import { alertContext } from "../../contexts/alertContext";
|
||||
import { darkContext } from "../../contexts/darkContext";
|
||||
import { PopUpContext } from "../../contexts/popUpContext";
|
||||
import { TabsContext } from "../../contexts/tabsContext";
|
||||
import { typesContext } from "../../contexts/typesContext";
|
||||
import { getRepoStars } from "../../controllers/API";
|
||||
import IconComponent from "../genericIconComponent";
|
||||
import { Button } from "../ui/button";
|
||||
import { Separator } from "../ui/separator";
|
||||
import MenuBar from "./components/menuBar";
|
||||
|
|
@ -27,6 +27,7 @@ export default function Header() {
|
|||
|
||||
const [stars, setStars] = useState(null);
|
||||
|
||||
// Get and set numbers of stars on header
|
||||
useEffect(() => {
|
||||
async function fetchStars() {
|
||||
const starsCount = await getRepoStars("logspace-ai", "langflow");
|
||||
|
|
@ -51,7 +52,7 @@ export default function Header() {
|
|||
variant={location.pathname === "/" ? "primary" : "secondary"}
|
||||
size="sm"
|
||||
>
|
||||
<Home className="h-4 w-4" />
|
||||
<IconComponent name="Home" className="h-4 w-4" />
|
||||
<div className="flex-1">{USER_PROJECTS_HEADER}</div>
|
||||
</Button>
|
||||
</Link>
|
||||
|
|
@ -63,7 +64,7 @@ export default function Header() {
|
|||
}
|
||||
size="sm"
|
||||
>
|
||||
<Users2 className="h-4 w-4" />
|
||||
<IconComponent name="Users2" className="h-4 w-4" />
|
||||
<div className="flex-1">Community Examples</div>
|
||||
</Button>
|
||||
</Link>
|
||||
|
|
@ -105,9 +106,9 @@ export default function Header() {
|
|||
}}
|
||||
>
|
||||
{dark ? (
|
||||
<SunIcon className="side-bar-button-size" />
|
||||
<IconComponent name="SunIcon" className="side-bar-button-size" />
|
||||
) : (
|
||||
<MoonIcon className="side-bar-button-size" />
|
||||
<IconComponent name="MoonIcon" className="side-bar-button-size" />
|
||||
)}
|
||||
</button>
|
||||
<button
|
||||
|
|
@ -131,7 +132,11 @@ export default function Header() {
|
|||
}}
|
||||
>
|
||||
{notificationCenter && <div className="header-notifications"></div>}
|
||||
<Bell className="side-bar-button-size" aria-hidden="true" />
|
||||
<IconComponent
|
||||
name="Bell"
|
||||
className="side-bar-button-size"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { useContext, useEffect, useState } from "react";
|
||||
import { TabsContext } from "../../contexts/tabsContext";
|
||||
import { InputComponentType } from "../../types/components";
|
||||
import { classNames } from "../../utils";
|
||||
import { classNames } from "../../utils/utils";
|
||||
|
||||
export default function InputComponent({
|
||||
value,
|
||||
|
|
@ -14,6 +14,7 @@ export default function InputComponent({
|
|||
const [pwdVisible, setPwdVisible] = useState(false);
|
||||
const { setDisableCopyPaste } = useContext(TabsContext);
|
||||
|
||||
// Clear component state
|
||||
useEffect(() => {
|
||||
if (disabled) {
|
||||
onChange("");
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import { FileSearch2 } from "lucide-react";
|
||||
import { useContext, useEffect, useState } from "react";
|
||||
import { alertContext } from "../../contexts/alertContext";
|
||||
import { TabsContext } from "../../contexts/tabsContext";
|
||||
import { uploadFile } from "../../controllers/API";
|
||||
import { FileComponentType } from "../../types/components";
|
||||
import IconComponent from "../genericIconComponent";
|
||||
|
||||
export default function InputFileComponent({
|
||||
value,
|
||||
|
|
@ -18,6 +18,8 @@ export default function InputFileComponent({
|
|||
const [loading, setLoading] = useState(false);
|
||||
const { setErrorData } = useContext(alertContext);
|
||||
const { tabId } = useContext(TabsContext);
|
||||
|
||||
// Clear component state
|
||||
useEffect(() => {
|
||||
if (disabled) {
|
||||
setMyValue("");
|
||||
|
|
@ -108,8 +110,8 @@ export default function InputFileComponent({
|
|||
</span>
|
||||
<button onClick={handleButtonClick}>
|
||||
{!editNode && !loading && (
|
||||
<FileSearch2
|
||||
strokeWidth={1.5}
|
||||
<IconComponent
|
||||
name="FileSearch2"
|
||||
className={
|
||||
"icons-parameters-comp" +
|
||||
(disabled ? " text-ring " : " hover:text-accent-foreground")
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { useEffect, useState } from "react";
|
|||
import { InputListComponentType } from "../../types/components";
|
||||
|
||||
import _ from "lodash";
|
||||
import { Plus, X } from "lucide-react";
|
||||
import IconComponent from "../genericIconComponent";
|
||||
|
||||
export default function InputListComponent({
|
||||
value,
|
||||
|
|
@ -65,7 +65,10 @@ export default function InputListComponent({
|
|||
onChange(inputList);
|
||||
}}
|
||||
>
|
||||
<Plus className={"h-4 w-4 hover:text-accent-foreground"} />
|
||||
<IconComponent
|
||||
name="Plus"
|
||||
className={"h-4 w-4 hover:text-accent-foreground"}
|
||||
/>
|
||||
</button>
|
||||
) : (
|
||||
<button
|
||||
|
|
@ -78,7 +81,10 @@ export default function InputListComponent({
|
|||
onChange(inputList);
|
||||
}}
|
||||
>
|
||||
<X className="h-4 w-4 hover:text-status-red" />
|
||||
<IconComponent
|
||||
name="X"
|
||||
className="h-4 w-4 hover:text-status-red"
|
||||
/>
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ export default function IntComponent({
|
|||
const { setDisableCopyPaste } = useContext(TabsContext);
|
||||
const min = 0;
|
||||
|
||||
// Clear component state
|
||||
useEffect(() => {
|
||||
if (disabled) {
|
||||
onChange("");
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
import { useEffect } from "react";
|
||||
|
||||
import { TypeModal } from "../../constants/enums";
|
||||
import { postValidatePrompt } from "../../controllers/API";
|
||||
import GenericModal from "../../modals/genericModal";
|
||||
import { TextAreaComponentType } from "../../types/components";
|
||||
|
||||
import { ExternalLink } from "lucide-react";
|
||||
import { postValidatePrompt } from "../../controllers/API";
|
||||
import IconComponent from "../genericIconComponent";
|
||||
|
||||
export default function PromptAreaComponent({
|
||||
field_name,
|
||||
|
|
@ -34,7 +35,7 @@ export default function PromptAreaComponent({
|
|||
return (
|
||||
<div className={disabled ? "pointer-events-none w-full " : " w-full"}>
|
||||
<GenericModal
|
||||
type={"prompt"}
|
||||
type={TypeModal.PROMPT}
|
||||
value={value}
|
||||
buttonText="Check & Save"
|
||||
modalTitle="Edit Prompt"
|
||||
|
|
@ -56,8 +57,8 @@ export default function PromptAreaComponent({
|
|||
{value !== "" ? value : "Type your prompt here..."}
|
||||
</span>
|
||||
{!editNode && (
|
||||
<ExternalLink
|
||||
strokeWidth={1.5}
|
||||
<IconComponent
|
||||
name="ExternalLink"
|
||||
className={
|
||||
"icons-parameters-comp" +
|
||||
(disabled ? " text-ring" : " hover:text-accent-foreground")
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import { useContext, useEffect } from "react";
|
||||
import { TypeModal } from "../../constants/enums";
|
||||
import { TabsContext } from "../../contexts/tabsContext";
|
||||
import GenericModal from "../../modals/genericModal";
|
||||
import { TextAreaComponentType } from "../../types/components";
|
||||
|
||||
import { ExternalLink } from "lucide-react";
|
||||
import { TabsContext } from "../../contexts/tabsContext";
|
||||
import IconComponent from "../genericIconComponent";
|
||||
|
||||
export default function TextAreaComponent({
|
||||
value,
|
||||
|
|
@ -13,6 +13,7 @@ export default function TextAreaComponent({
|
|||
}: TextAreaComponentType) {
|
||||
const { setDisableCopyPaste } = useContext(TabsContext);
|
||||
|
||||
// Clear text area
|
||||
useEffect(() => {
|
||||
if (disabled) {
|
||||
onChange("");
|
||||
|
|
@ -43,7 +44,7 @@ export default function TextAreaComponent({
|
|||
/>
|
||||
<div>
|
||||
<GenericModal
|
||||
type={"text"}
|
||||
type={TypeModal.TEXT}
|
||||
buttonText="Finishing Editing"
|
||||
modalTitle="Edit Text"
|
||||
value={value}
|
||||
|
|
@ -52,8 +53,8 @@ export default function TextAreaComponent({
|
|||
}}
|
||||
>
|
||||
{!editNode && (
|
||||
<ExternalLink
|
||||
strokeWidth={1.5}
|
||||
<IconComponent
|
||||
name="ExternalLink"
|
||||
className={
|
||||
"icons-parameters-comp" +
|
||||
(disabled ? " text-ring" : " hover:text-accent-foreground")
|
||||
|
|
|
|||
|
|
@ -1,13 +1,14 @@
|
|||
import { Switch } from "@headlessui/react";
|
||||
import { useEffect } from "react";
|
||||
import { ToggleComponentType } from "../../types/components";
|
||||
import { classNames } from "../../utils";
|
||||
import { classNames } from "../../utils/utils";
|
||||
|
||||
export default function ToggleComponent({
|
||||
enabled,
|
||||
setEnabled,
|
||||
disabled,
|
||||
}: ToggleComponentType) {
|
||||
// set component state as disabled
|
||||
useEffect(() => {
|
||||
if (disabled) {
|
||||
setEnabled(false);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
||||
import { ChevronDownIcon } from "@radix-ui/react-icons";
|
||||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
|
||||
const Accordion = AccordionPrimitive.Root;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { cva, type VariantProps } from "class-variance-authority";
|
||||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
|
||||
const badgeVariants = cva(
|
||||
"inline-flex items-center border rounded-full px-2.5 font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { Slot } from "@radix-ui/react-slot";
|
||||
import { cva, type VariantProps } from "class-variance-authority";
|
||||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
|
||||
const buttonVariants = cva(
|
||||
"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
|
||||
const Card = React.forwardRef<
|
||||
HTMLDivElement,
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
"use client";
|
||||
|
||||
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
||||
import { Check } from "lucide-react";
|
||||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
import IconComponent from "../genericIconComponent";
|
||||
|
||||
const Checkbox = React.forwardRef<
|
||||
React.ElementRef<typeof CheckboxPrimitive.Root>,
|
||||
|
|
@ -20,7 +20,7 @@ const Checkbox = React.forwardRef<
|
|||
<CheckboxPrimitive.Indicator
|
||||
className={cn("flex items-center justify-center text-current")}
|
||||
>
|
||||
<Check className="h-4 w-4" />
|
||||
<IconComponent name="Check" className="h-4 w-4" />
|
||||
</CheckboxPrimitive.Indicator>
|
||||
</CheckboxPrimitive.Root>
|
||||
));
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
||||
import { X } from "lucide-react";
|
||||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
import IconComponent from "../genericIconComponent";
|
||||
|
||||
const Dialog = DialogPrimitive.Root;
|
||||
|
||||
|
|
@ -51,7 +51,7 @@ const DialogContent = React.forwardRef<
|
|||
>
|
||||
{children}
|
||||
<DialogPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground">
|
||||
<X className="h-4 w-4" />
|
||||
<IconComponent name="X" className="h-4 w-4" />
|
||||
<span className="sr-only">Close</span>
|
||||
</DialogPrimitive.Close>
|
||||
</DialogPrimitive.Content>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
"use client";
|
||||
|
||||
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
||||
import { Check, ChevronRight, Circle } from "lucide-react";
|
||||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
import IconComponent from "../genericIconComponent";
|
||||
|
||||
const DropdownMenu = DropdownMenuPrimitive.Root;
|
||||
|
||||
|
|
@ -33,7 +33,7 @@ const DropdownMenuSubTrigger = React.forwardRef<
|
|||
{...props}
|
||||
>
|
||||
{children}
|
||||
<ChevronRight className="ml-auto h-4 w-4" />
|
||||
<IconComponent name="ChevronRight" className="ml-auto h-4 w-4" />
|
||||
</DropdownMenuPrimitive.SubTrigger>
|
||||
));
|
||||
DropdownMenuSubTrigger.displayName =
|
||||
|
|
@ -106,7 +106,7 @@ const DropdownMenuCheckboxItem = React.forwardRef<
|
|||
>
|
||||
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
||||
<DropdownMenuPrimitive.ItemIndicator>
|
||||
<Check className="h-4 w-4" />
|
||||
<IconComponent name="Check" className="h-4 w-4" />
|
||||
</DropdownMenuPrimitive.ItemIndicator>
|
||||
</span>
|
||||
{children}
|
||||
|
|
@ -129,7 +129,7 @@ const DropdownMenuRadioItem = React.forwardRef<
|
|||
>
|
||||
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
||||
<DropdownMenuPrimitive.ItemIndicator>
|
||||
<Circle className="h-2 w-2 fill-current" />
|
||||
<IconComponent name="Circle" className="h-2 w-2 fill-current" />
|
||||
</DropdownMenuPrimitive.ItemIndicator>
|
||||
</span>
|
||||
{children}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
|
||||
export interface InputProps
|
||||
extends React.InputHTMLAttributes<HTMLInputElement> {}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
import * as LabelPrimitive from "@radix-ui/react-label";
|
||||
import { cva, type VariantProps } from "class-variance-authority";
|
||||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
|
||||
const labelVariants = cva(
|
||||
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
"use client";
|
||||
|
||||
import * as MenubarPrimitive from "@radix-ui/react-menubar";
|
||||
import { Check, ChevronRight, Circle } from "lucide-react";
|
||||
import * as React from "react";
|
||||
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
import IconComponent from "../genericIconComponent";
|
||||
|
||||
const MenubarMenu = MenubarPrimitive.Menu;
|
||||
|
||||
|
|
@ -62,7 +62,7 @@ const MenubarSubTrigger = React.forwardRef<
|
|||
{...props}
|
||||
>
|
||||
{children}
|
||||
<ChevronRight className="ml-auto h-4 w-4" />
|
||||
<IconComponent name="ChevronRight" className="ml-auto h-4 w-4" />
|
||||
</MenubarPrimitive.SubTrigger>
|
||||
));
|
||||
MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
|
||||
|
|
@ -140,7 +140,7 @@ const MenubarCheckboxItem = React.forwardRef<
|
|||
>
|
||||
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
||||
<MenubarPrimitive.ItemIndicator>
|
||||
<Check className="h-4 w-4" />
|
||||
<IconComponent name="Check" className="h-4 w-4" />
|
||||
</MenubarPrimitive.ItemIndicator>
|
||||
</span>
|
||||
{children}
|
||||
|
|
@ -162,7 +162,7 @@ const MenubarRadioItem = React.forwardRef<
|
|||
>
|
||||
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
||||
<MenubarPrimitive.ItemIndicator>
|
||||
<Circle className="h-2 w-2 fill-current" />
|
||||
<IconComponent name="Circle" className="h-2 w-2 fill-current" />
|
||||
</MenubarPrimitive.ItemIndicator>
|
||||
</span>
|
||||
{children}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
||||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
|
||||
const Progress = React.forwardRef<
|
||||
React.ElementRef<typeof ProgressPrimitive.Root>,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
|
||||
export default function RenameLabel(props) {
|
||||
const [internalState, setInternalState] = useState(false);
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
||||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
|
||||
const Separator = React.forwardRef<
|
||||
React.ElementRef<typeof SeparatorPrimitive.Root>,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import * as SwitchPrimitives from "@radix-ui/react-switch";
|
||||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
|
||||
const Switch = React.forwardRef<
|
||||
React.ElementRef<typeof SwitchPrimitives.Root>,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
|
||||
const Table = React.forwardRef<
|
||||
HTMLTableElement,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
||||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
|
||||
const Tabs = TabsPrimitive.Root;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
|
||||
export interface TextareaProps
|
||||
extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
||||
import * as React from "react";
|
||||
import { cn } from "../../utils";
|
||||
import { cn } from "../../utils/utils";
|
||||
|
||||
const TooltipProvider = TooltipPrimitive.Provider;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,61 @@
|
|||
// src/constants.tsx
|
||||
// src/constants/constants.ts
|
||||
|
||||
import { MessageSquare } from "lucide-react";
|
||||
import { FlowType } from "./types/flow";
|
||||
import { TabsState } from "./types/tabs";
|
||||
import { buildInputs, buildTweaks } from "./utils";
|
||||
import { languageMap } from "../types/components";
|
||||
|
||||
/**
|
||||
* invalid characters for flow name
|
||||
* @constant
|
||||
*/
|
||||
export const INVALID_CHARACTERS = [
|
||||
" ",
|
||||
",",
|
||||
".",
|
||||
":",
|
||||
";",
|
||||
"!",
|
||||
"?",
|
||||
"/",
|
||||
"\\",
|
||||
"(",
|
||||
")",
|
||||
"[",
|
||||
"]",
|
||||
"\n",
|
||||
];
|
||||
|
||||
/**
|
||||
* regex to highlight the variables in the text
|
||||
* @constant
|
||||
*/
|
||||
|
||||
export const regexHighlight = /\{([^}]+)\}/g;
|
||||
|
||||
export const programmingLanguages: languageMap = {
|
||||
javascript: ".js",
|
||||
python: ".py",
|
||||
java: ".java",
|
||||
c: ".c",
|
||||
cpp: ".cpp",
|
||||
"c++": ".cpp",
|
||||
"c#": ".cs",
|
||||
ruby: ".rb",
|
||||
php: ".php",
|
||||
swift: ".swift",
|
||||
"objective-c": ".m",
|
||||
kotlin: ".kt",
|
||||
typescript: ".ts",
|
||||
go: ".go",
|
||||
perl: ".pl",
|
||||
rust: ".rs",
|
||||
scala: ".scala",
|
||||
haskell: ".hs",
|
||||
lua: ".lua",
|
||||
shell: ".sh",
|
||||
sql: ".sql",
|
||||
html: ".html",
|
||||
css: ".css",
|
||||
// add more file extensions here, make sure the key is same as language prop in CodeBlock.tsx component
|
||||
};
|
||||
/**
|
||||
* Number maximum of components to scroll on tooltips
|
||||
* @constant
|
||||
|
|
@ -17,6 +68,12 @@ export const MAX_LENGTH_TO_SCROLL_TOOLTIP = 200;
|
|||
*/
|
||||
export const MAX_WORDS_HIGHLIGHT = 79;
|
||||
|
||||
/**
|
||||
* Limit of items before show scroll on fields modal
|
||||
* @constant
|
||||
*/
|
||||
export const limitScrollFieldsModal = 10;
|
||||
|
||||
/**
|
||||
* The base text for subtitle of Export Dialog (Toolbar)
|
||||
* @constant
|
||||
|
|
@ -70,8 +127,6 @@ export const CHAT_CANNOT_OPEN_DESCRIPTION = "This is not a chat flow.";
|
|||
|
||||
export const FLOW_NOT_BUILT_TITLE = "Flow not built";
|
||||
|
||||
export const THOUGHTS_ICON = MessageSquare;
|
||||
|
||||
export const FLOW_NOT_BUILT_DESCRIPTION =
|
||||
"Please build the flow before chatting.";
|
||||
|
||||
|
|
@ -81,127 +136,6 @@ export const FLOW_NOT_BUILT_DESCRIPTION =
|
|||
*/
|
||||
export const TEXT_DIALOG_SUBTITLE = "Edit your text.";
|
||||
|
||||
/**
|
||||
* Function to get the python code for the API
|
||||
* @param {string} flowId - The id of the flow
|
||||
* @returns {string} - The python code
|
||||
*/
|
||||
export const getPythonApiCode = (
|
||||
flow: FlowType,
|
||||
tweak?: any[],
|
||||
tabsState?: TabsState
|
||||
): string => {
|
||||
const flowId = flow.id;
|
||||
|
||||
// create a dictionary of node ids and the values is an empty dictionary
|
||||
// flow.data.nodes.forEach((node) => {
|
||||
// node.data.id
|
||||
// }
|
||||
const tweaks = buildTweaks(flow);
|
||||
const inputs = buildInputs(tabsState, flow.id);
|
||||
return `import requests
|
||||
from typing import Optional
|
||||
|
||||
BASE_API_URL = "${window.location.protocol}//${
|
||||
window.location.host
|
||||
}/api/v1/process"
|
||||
FLOW_ID = "${flowId}"
|
||||
# You can tweak the flow by adding a tweaks dictionary
|
||||
# e.g {"OpenAI-XXXXX": {"model_name": "gpt-4"}}
|
||||
TWEAKS = ${
|
||||
tweak && tweak.length > 0
|
||||
? buildTweakObject(tweak)
|
||||
: JSON.stringify(tweaks, null, 2)
|
||||
}
|
||||
|
||||
def run_flow(inputs: dict, flow_id: str, tweaks: Optional[dict] = None) -> dict:
|
||||
"""
|
||||
Run a flow with a given message and optional tweaks.
|
||||
|
||||
:param message: The message to send to the flow
|
||||
:param flow_id: The ID of the flow to run
|
||||
:param tweaks: Optional tweaks to customize the flow
|
||||
:return: The JSON response from the flow
|
||||
"""
|
||||
api_url = f"{BASE_API_URL}/{flow_id}"
|
||||
|
||||
payload = {"inputs": inputs}
|
||||
|
||||
if tweaks:
|
||||
payload["tweaks"] = tweaks
|
||||
|
||||
response = requests.post(api_url, json=payload)
|
||||
return response.json()
|
||||
|
||||
# Setup any tweaks you want to apply to the flow
|
||||
inputs = ${inputs}
|
||||
print(run_flow(inputs, flow_id=FLOW_ID, tweaks=TWEAKS))`;
|
||||
};
|
||||
/**
|
||||
* Function to get the curl code for the API
|
||||
* @param {string} flowId - The id of the flow
|
||||
* @returns {string} - The curl code
|
||||
*/
|
||||
export const getCurlCode = (
|
||||
flow: FlowType,
|
||||
tweak?: any[],
|
||||
tabsState?: TabsState
|
||||
): string => {
|
||||
const flowId = flow.id;
|
||||
const tweaks = buildTweaks(flow);
|
||||
const inputs = buildInputs(tabsState, flow.id);
|
||||
|
||||
return `curl -X POST \\
|
||||
${window.location.protocol}//${
|
||||
window.location.host
|
||||
}/api/v1/process/${flowId} \\
|
||||
-H 'Content-Type: application/json' \\
|
||||
-d '{"inputs": ${inputs}, "tweaks": ${
|
||||
tweak && tweak.length > 0
|
||||
? buildTweakObject(tweak)
|
||||
: JSON.stringify(tweaks, null, 2)
|
||||
}}'`;
|
||||
};
|
||||
/**
|
||||
* Function to get the python code for the API
|
||||
* @param {string} flowName - The name of the flow
|
||||
* @returns {string} - The python code
|
||||
*/
|
||||
export const getPythonCode = (
|
||||
flow: FlowType,
|
||||
tweak?: any[],
|
||||
tabsState?: TabsState
|
||||
): string => {
|
||||
const flowName = flow.name;
|
||||
const tweaks = buildTweaks(flow);
|
||||
const inputs = buildInputs(tabsState, flow.id);
|
||||
return `from langflow import load_flow_from_json
|
||||
TWEAKS = ${
|
||||
tweak && tweak.length > 0
|
||||
? buildTweakObject(tweak)
|
||||
: JSON.stringify(tweaks, null, 2)
|
||||
}
|
||||
flow = load_flow_from_json("${flowName}.json", tweaks=TWEAKS)
|
||||
# Now you can use it like any chain
|
||||
inputs = ${inputs}
|
||||
flow(inputs)`;
|
||||
};
|
||||
|
||||
function buildTweakObject(tweak) {
|
||||
tweak.forEach((el) => {
|
||||
Object.keys(el).forEach((key) => {
|
||||
for (let kp in el[key]) {
|
||||
try {
|
||||
el[key][kp] = JSON.parse(el[key][kp]);
|
||||
} catch {}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
const tweakString = JSON.stringify(tweak, null, 2);
|
||||
return tweakString;
|
||||
}
|
||||
|
||||
/**
|
||||
* The base text for subtitle of Import Dialog
|
||||
* @constant
|
||||
8
src/frontend/src/constants/enums.ts
Normal file
8
src/frontend/src/constants/enums.ts
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
/**
|
||||
* enum for the different types of nodes
|
||||
* @enum
|
||||
*/
|
||||
export enum TypeModal {
|
||||
TEXT = 1,
|
||||
PROMPT = 2,
|
||||
}
|
||||
|
|
@ -20,12 +20,8 @@ import {
|
|||
import { APIClassType, APITemplateType } from "../types/api";
|
||||
import { FlowType, NodeType } from "../types/flow";
|
||||
import { TabsContextType, TabsState } from "../types/tabs";
|
||||
import {
|
||||
getRandomDescription,
|
||||
getRandomName,
|
||||
updateIds,
|
||||
updateTemplate,
|
||||
} from "../utils";
|
||||
import { updateIds, updateTemplate } from "../utils/reactflowUtils";
|
||||
import { getRandomDescription, getRandomName } from "../utils/utils";
|
||||
import { alertContext } from "./alertContext";
|
||||
import { typesContext } from "./typesContext";
|
||||
|
||||
|
|
@ -106,53 +102,6 @@ export function TabsProvider({ children }: { children: ReactNode }) {
|
|||
}
|
||||
}
|
||||
|
||||
// function loadCookie(cookie: string) {
|
||||
// if (cookie && Object.keys(templates).length > 0) {
|
||||
// let cookieObject: LangflowState = JSON.parse(cookie);
|
||||
// try {
|
||||
// cookieObject.flows.forEach((flow) => {
|
||||
// if (!flow.data) {
|
||||
// return;
|
||||
// }
|
||||
// flow.data.edges.forEach((edge) => {
|
||||
// edge.className = "";
|
||||
// edge.style = { stroke: "#555555" };
|
||||
// });
|
||||
|
||||
// flow.data.nodes.forEach((node) => {
|
||||
// const template = templates[node.data.type];
|
||||
// if (!template) {
|
||||
// setErrorData({ title: `Unknown node type: ${node.data.type}` });
|
||||
// return;
|
||||
// }
|
||||
// if (Object.keys(template["template"]).length > 0) {
|
||||
// node.data.node.base_classes = template["base_classes"];
|
||||
// flow.data.edges.forEach((edge) => {
|
||||
// if (edge.source === node.id) {
|
||||
// edge.sourceHandle = edge.sourceHandle
|
||||
// .split("|")
|
||||
// .slice(0, 2)
|
||||
// .concat(template["base_classes"])
|
||||
// .join("|");
|
||||
// }
|
||||
// });
|
||||
// node.data.node.description = template["description"];
|
||||
// node.data.node.template = updateTemplate(
|
||||
// template["template"] as unknown as APITemplateType,
|
||||
// node.data.node.template as APITemplateType
|
||||
// );
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
// setTabIndex(cookieObject.tabIndex);
|
||||
// setFlows(cookieObject.flows);
|
||||
// setId(cookieObject.id);
|
||||
// } catch (e) {
|
||||
// console.log(e);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
function refreshFlows() {
|
||||
getTabsDataFromDB().then((DbData) => {
|
||||
if (DbData && Object.keys(templates).length > 0) {
|
||||
|
|
|
|||
23
src/frontend/src/icons/Airbyte/Airbyte.jsx
Normal file
23
src/frontend/src/icons/Airbyte/Airbyte.jsx
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
const SvgAirbyte = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlSpace="preserve"
|
||||
style={{
|
||||
enableBackground: "new 0 0 841.89 595.28",
|
||||
}}
|
||||
viewBox="0 0 841.89 595.28"
|
||||
width="1em"
|
||||
height="1em"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
d="M349.6 124.45c48.94-54.99 129.98-71.12 196.61-39.38 88.52 42.17 120.82 149.6 72.62 232.48L510.41 503.76c-6.06 10.41-16.03 18-27.72 21.11a45.99 45.99 0 0 1-34.64-4.51l131.26-225.49c34.97-60.15 11.58-138.11-52.6-168.8-48.16-23.03-107.02-11.53-142.6 28.08-19.62 21.74-30.64 49.82-31.01 79.01-.37 29.2 9.94 57.53 29.01 79.76 3.43 3.99 7.12 7.75 11.04 11.25l-76.63 131.88c-3 5.16-6.99 9.67-11.74 13.3a45.845 45.845 0 0 1-15.97 7.82 46.098 46.098 0 0 1-17.77 1.16 46.124 46.124 0 0 1-16.87-5.68l83.19-143.17a164.492 164.492 0 0 1-25.29-56.58l-50.97 87.9c-6.06 10.41-16.03 18-27.72 21.11a45.99 45.99 0 0 1-34.64-4.51l131.83-226.76a168.65 168.65 0 0 1 19.03-26.19zm152.16 72.18c31.75 18.21 42.71 58.7 24.34 90.22L399.69 503.74c-6.06 10.41-16.03 18-27.72 21.11a45.99 45.99 0 0 1-34.64-4.51l117.38-201.93a66.675 66.675 0 0 1-26.01-11.65 66.228 66.228 0 0 1-18.7-21.4 65.82 65.82 0 0 1-7.95-27.22c-.64-9.54.82-19.1 4.27-28.02 3.45-8.92 8.8-17 15.7-23.67a66.558 66.558 0 0 1 24.24-14.95c9.08-3.18 18.74-4.37 28.32-3.49s18.85 3.82 27.18 8.62zm-45.98 40.76c-2.17 1.66-4 3.72-5.36 6.08h-.01a20.613 20.613 0 0 0-2.75 11.71c.27 4.09 1.76 8 4.27 11.25s5.94 5.69 9.84 7c3.91 1.32 8.12 1.45 12.1.39 3.99-1.06 7.56-3.27 10.28-6.35 2.72-3.08 4.46-6.89 5-10.95s-.15-8.19-1.97-11.87a20.806 20.806 0 0 0-8.28-8.78 20.964 20.964 0 0 0-15.83-2.07c-2.64.72-5.12 1.93-7.29 3.59z"
|
||||
style={{
|
||||
fillRule: "evenodd",
|
||||
clipRule: "evenodd",
|
||||
fill: "#505aa5",
|
||||
}}
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgAirbyte;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as AirbyteSVG } from "./airbyte.svg";
|
||||
import SvgAirbyte from "./Airbyte";
|
||||
|
||||
export const AirbyteIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <AirbyteSVG ref={ref} {...props} />;
|
||||
return <SvgAirbyte ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
17
src/frontend/src/icons/Anthropic/Anthropic.jsx
Normal file
17
src/frontend/src/icons/Anthropic/Anthropic.jsx
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
const SvgAnthropic = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="1em"
|
||||
height="1em"
|
||||
viewBox="-170.333 113.047 600 67.4"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
d="M-23.533 126.747h21.9v52.6h14v-52.6h21.9v-12.6h-57.8v12.6Zm-24.6 33-29.3-45.6h-15.8v65.1h13.5v-45.6l29.3 45.7h15.8v-65.1h-13.5v45.5Zm138.2-19.6h-30.7v-26h-14v65.1h14v-26.6h30.7v26.6h14v-65.1h-14v26Zm-234.4-26-26 65.1h14.5l5.3-13.7h27.2l5.3 13.7h14.5l-26-65.1h-14.8Zm-1.5 39.4 8.9-22.9 8.9 22.9h-17.8Zm365.5-40.5c-18.8 0-32.1 14-32.1 33.8 0 19.6 13.3 33.6 32.1 33.6 18.7 0 31.9-14 31.9-33.6 0-19.8-13.2-33.8-31.9-33.8Zm0 54.4c-11 0-17.7-7.8-17.7-20.6 0-12.9 6.7-20.8 17.7-20.8 10.9 0 17.5 7.8 17.5 20.8 0 12.7-6.6 20.6-17.5 20.6Zm195.1-10c-2.4 6.3-7.3 10-13.9 10-11 0-17.7-7.8-17.7-20.6 0-12.9 6.7-20.8 17.7-20.8 6.6 0 11.4 3.6 13.9 10h14.8c-3.6-14-14.5-23-28.7-23-18.8 0-32.1 14-32.1 33.8 0 19.6 13.3 33.6 32.1 33.6 14.2 0 25.1-9.1 28.8-23h-14.9Zm-88.9-43.3 26 65.1h14.2l-26-65.1h-14.2Zm-29.5 0h-31.8v65.1h14v-23.6h17.9c14.8 0 23.8-7.8 23.8-20.8 0-12.9-9.1-20.7-23.9-20.7Zm-.6 29h-17.2v-16.4h17.2c6.9 0 10.5 2.8 10.5 8.2 0 5.4-3.6 8.2-10.5 8.2Zm-118.9-9.1c0-12.3-9-19.8-23.8-19.8h-31.8v65.1h14v-25.5h15.5l14 25.5h15.4l-15.5-27.4c7.7-3.1 12.2-9.3 12.2-17.9Zm-41.7-7.3h17.2c6.9 0 10.5 2.5 10.5 7.3 0 4.7-3.6 7.3-10.5 7.3h-17.2v-14.6Z"
|
||||
style={{
|
||||
fill: "#1f1f1e",
|
||||
}}
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgAnthropic;
|
||||
18
src/frontend/src/icons/Anthropic/AnthropicBox.jsx
Normal file
18
src/frontend/src/icons/Anthropic/AnthropicBox.jsx
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
const SvgAnthropicBox = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="1em"
|
||||
height="1em"
|
||||
viewBox="-126.9 247.9 207.161 212.728"
|
||||
{...props}
|
||||
>
|
||||
<defs>
|
||||
<style>{".anthropic_box_svg__st0{fill:#1f1f1e}"}</style>
|
||||
</defs>
|
||||
<path
|
||||
d="M19.9 260.5h21.9v52.6h14v-52.6h21.9v-12.6H19.9v12.6Zm-24.6 33L-34 247.9h-15.8V313h13.5v-45.6L-7 313.1H8.8V248H-4.7v45.5Zm-96.2-45.6-26 65.1h14.5l5.3-13.7h27.2l5.3 13.7h14.5l-26-65.1h-14.8Zm-1.5 39.4 8.9-22.9 8.9 22.9h-17.8ZM38.246 437.628c-2.4 6.3-7.3 10-13.9 10-11 0-17.7-7.8-17.7-20.6 0-12.9 6.7-20.8 17.7-20.8 6.6 0 11.4 3.6 13.9 10h14.8c-3.6-14-14.5-23-28.7-23-18.8 0-32.1 14-32.1 33.8 0 19.6 13.3 33.6 32.1 33.6 14.2 0 25.1-9.1 28.8-23h-14.9Zm-88.9-43.3 26 65.1h14.2l-26-65.1h-14.2Zm-29.5 0h-31.8v65.1h14v-23.6h17.9c14.8 0 23.8-7.8 23.8-20.8 0-12.9-9.1-20.7-23.9-20.7Zm-.6 29h-17.2v-16.4h17.2c6.9 0 10.5 2.8 10.5 8.2 0 5.4-3.6 8.2-10.5 8.2ZM-81.239 347.704h-30.7v-26h-14v65.1h14v-26.6h30.7v26.6h14v-65.1h-14v26Zm129.6-27.1c-18.8 0-32.1 14-32.1 33.8 0 19.6 13.3 33.6 32.1 33.6 18.7 0 31.9-14 31.9-33.6 0-19.8-13.2-33.8-31.9-33.8Zm0 54.4c-11 0-17.7-7.8-17.7-20.6 0-12.9 6.7-20.8 17.7-20.8 10.9 0 17.5 7.8 17.5 20.8 0 12.7-6.6 20.6-17.5 20.6Zm-42.8-33.4c0-12.3-9-19.8-23.8-19.8h-31.8v65.1h14v-25.5h15.5l14 25.5h15.4l-15.5-27.4c7.7-3.1 12.2-9.3 12.2-17.9Zm-41.7-7.3h17.2c6.9 0 10.5 2.5 10.5 7.3 0 4.7-3.6 7.3-10.5 7.3h-17.2v-14.6Z"
|
||||
className="anthropic_box_svg__st0"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgAnthropicBox;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as AnthropicSVG } from "./anthropic_box.svg";
|
||||
import SvgAnthropicBox from "./AnthropicBox";
|
||||
|
||||
export const AnthropicIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <AnthropicSVG ref={ref} {...props} />;
|
||||
return <SvgAnthropicBox ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
17
src/frontend/src/icons/AzLogo/AzLogo.jsx
Normal file
17
src/frontend/src/icons/AzLogo/AzLogo.jsx
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
const SvgAzLogo = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlSpace="preserve"
|
||||
width="1em"
|
||||
height="1em"
|
||||
viewBox="0 0 103 103"
|
||||
{...props}
|
||||
>
|
||||
<image
|
||||
width={103}
|
||||
height={103}
|
||||
href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGcAAABnCAYAAAAdQVz5AAAABGdBTUEAALGPC/xhBQAAACBjSFJN AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAC gXpUWHRSYXcgcHJvZmlsZSB0eXBlIHhtcAAAOI2VVV3WnTAIfGcVXUIEAslyvGreek4fu/wOeH+s 2vbr9dyohDAwTCL9/P6DvsWvaSNZZHjzYpOJPay6cjG2am7dNlmZt/F4PAYz7N00LNWl6ipFVy8q 8G3WSZvPjoVVfNatquGOgCJYxCxDNi6yeJPZm2GhrQFmE5d4t8U2l5ijQEA2aiPykHmfeLtnJp8w sD1ihb5XcKlN11qII7nhaZLKmxRekU8RE6BiVNgmUVg6xs4LrIy3CZ4DI2Ms4sRrmGQW1IaxxPLT xc/yGFmYzJVV1U6lMeVklNdccSEkyhmeP94cXrxlxp74Pa7MITJhjOsOgIxcHP0JRryhLCDE/O9Z IAW0Co1g68lUB0PweM3bRCBsOIiNrHZij70IgnVFqy85J+D2aRPhBWTbinIackoCk3LYwnoJLq41 dHYihO6i/zl4KNFRHHxGhHPJetiEIMWMH7zcFfbvonZYusN9hXzyM2t0re+bBgEWjRDiNWQbbdKu msreFyGy5m6aQ3haZVJGs2EUgXIq9lYVgQQmhQwVapIGG5xDtqRTPjQIsl8yuUG+A0YMZMRqz+gV uNhFKf8J6Mgr7zU8MI+8YGMAC7waNs8BmBI5BCkhSQvi6gW5f5APwHoEpv9DRrBQd0VzNDZOjeKH LbLS6UgoOKRGOkk+lTgdwHGcC9jOde9czGMbvjcSQOhAbM2dZMDDC55DkuWg5Nn+QgEdOUAZE5rd Yy1KjeZyyuDV9mAkCm8oO/jKf7ZpojjCkoMj8hfbftQbfVVwJ709z3Ier4OE7k+as9t+Kr6tl0+B bBRTNx+kGr3Jcnj/ltAv3lyKr0wOoNMAAAZzSURBVHja7Z1LT1tHFMd/Y2wDtiFpeBuT8LIc0qSq BInUbqJAWFWqVAkpUnb9CpGSqFI/QGIp/RDdRapaKVJWLQsWySJRRDetgFCQCeERDAnCvPyALhxH gA2BY98HvvOTLKHB5/rcOT4z/zn33rF68OBPClABfA8MARHg649tmtKQAf4GxoHfgCf379/MHHyT q4BhBHgO/A7cBnrRgSk1FWT79TbZfn7+8OFfkYNvciml2PO6o5QaVUpdO9CuX8a+rimlRqPR4Tv7 grPn7yjwCKi2+mvlUKqBR9HocDTXkAvOLeCu1d5pALgbjQ7fAlDR6LAXmAJarfZK84lJ4EsXWUWm A2MvuoEht1LqO6s90RTkOxdZSaexH9+4lVLNVnuhKUirCzhjtReagnjdSimrndAcgqv4Q2iMQmeO jdGZY2N05tgYt1EHvn69k4aGgCknMTLyH0tL64f+f2joK1P8OIylpQQjI1MntjMkcwYHw1y61GTa yVdVeTjqPEIh61cLkn4ueXAGB8P09DSafuJ2H54l/pVUEFgRmHKmZJlz82a3hYGxd+YoZeGwNjDQ TU9Pw6k7eRM9tGZYszow5UxRmTMw0MXFi9YHplwFgTg4/f2dtghM7sTLMTiiYa21tdY2gSlnhJlj t2+pvTPHVLVmt34oV7VmWG3tMMbH44yPx/PaI5F6IpF6Qz7zyZOxoo9RU1PJjRsdItvt7bTITpg5 8m/p2lqS+flEXnswWCs+5ucEQaHPOyn19X6xbSy2auawJg/OYUNQMaOSGWrtyhVZITeZzDAxsWym lC6mIw7rSCOOWRrq6qqpqfGKbKWBAX0l9FhcviyvGU5MLIttTVdrxgxrxqq19vazIrvl5U1WVrbE vpk+5xgxrBk554TD5/B6Zc+OvX69UpRfWhB8hgsX5FdRJyffF+WXnnOOIBDwioMTi62STGZEtjm0 WjuCcPic2LbYrAEtCI4kHP5CZJdMZnjzZs2q4Ngrc4yYc5qb/QQCsrXN5OSHkvijBcEhdHfLsgZg bEy+8NyLFgQF8HoraGurEdmurGyRSKRK4ocWBAU4f75WvLYZGytubbMXLQgK0NV1Vmw7O5uwOjj2 ypxSzjl+v4emJp/IdmpqlVRq5/QGx+6CoKtLXhEoZdaAFgR5dHbKgrO+nmJ2tviLenvRgmAPjY0+ /H6PyLbUWQNaEOyjs1N+qXxiQnYp+ii0IPiIx+MiFJI97PXhwzYbG+nTHxy7CoJQKIDHI5uCjcga 0HPOJzo6ZBWBVGqHubkNQ4Kj1Rrg97tpaJDtAfj27Tqp1I4hfmlBAITDZ8W2sVjpVVoOLQiA1lZZ RWBjI008vl0+wbGbIAgGffh8sruSjcwa0IKAYFCWNQAzM8YIgRyOnnM8Hhfnz8vugY7Ht9nczBga HEertZYW+S7NMzPrYtvj4mhB0NUlX9ssLMjv5DwujhUEPl8FZ87IipwLC1uk07v2DE45CILOTlnW AExNrZvyJJ1jBUFzc5XoszY2Mqytlb7IWQhHCoLm5ip8PtkNHNPTxguBHKbPOW1tPurqKvPapZ2V 8+ckPkmzBmBx0biKwEFMD051dQXV1aX9OZ6TBMfjUYRCMgm9uLjN1lbpbuD4HI7bh6Cp6XRkDThw H4L2dlm5JpXaZW7O3OA4ShDU1rqprZUVOd+92zbdXwsqBKXnuHNOa6t8SIvFjK8IHEQH5xhsbu6Q SBhb5CyEYwRBY6MXt1vm98yM+VkDDppzWlpkD0IBzM2ZP9+AQ9Sa261obJQFZ2kpRSZjzVDuiDkn GKw8wdH2Mz+ftOx8HRIcWdak07vE4+YUOQth+n5r09NbTE/nj+EdHZV0dMil7lEEArJykdut6O8v fqv99+/TjI6evGDq2Os5ZnJqtpG0y/Ucc7Fo02+NcTj6Bg8z0dtI2hg9rJUZWq2ZgFZrNg6OVmtl iFZrJqHVmo0R9fOzZ1u7VjuuKYz+hV0bowWBjdGZY2N05tgYt1JqFbD+x5s1B0m4gAWrvdAU5K1b KfUKiFjtiSaPVy7gqdVeaAryVL14kfEC/wDdVnuj+cQ0cNEFJIGfrfZGs4+frl51JXPrnMfANeCO 1V5p+KWvTz2G/euce2QzKGm1dw4lN4LdyzWoly/zNnKLAL+SzSSNObwAfuzrU//ubSxUvhkHvgV+ AIbICoVeq70vQ16RnfgfA3/09pL3M1X/AznvTJ80sftLAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIz LTA1LTI5VDIzOjEwOjMwKzAwOjAwEYyoUQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMy0wNS0yOVQy MzoxMDozMCswMDowMGDREO0AAAAodEVYdGRhdGU6dGltZXN0YW1wADIwMjMtMDUtMjlUMjM6MTA6 MzArMDA6MDA3xDEyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5E rkJggg=="
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgAzLogo;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as AzSVG } from "./az_logo.svg";
|
||||
import SvgAzLogo from "./AzLogo";
|
||||
|
||||
export const AzIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(
|
||||
(props, ref) => {
|
||||
return <AzSVG ref={ref} {...props} />;
|
||||
return <SvgAzLogo ref={ref} {...props} />;
|
||||
}
|
||||
);
|
||||
|
|
|
|||
94
src/frontend/src/icons/Bing/Bing.jsx
Normal file
94
src/frontend/src/icons/Bing/Bing.jsx
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
const SvgBing = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="1em"
|
||||
height="1em"
|
||||
viewBox="-29.622 0.1 574.392 799.81"
|
||||
{...props}
|
||||
>
|
||||
<linearGradient
|
||||
id="bing_svg__a"
|
||||
x1={286.383}
|
||||
x2={542.057}
|
||||
y1={284.169}
|
||||
y2={569.112}
|
||||
gradientUnits="userSpaceOnUse"
|
||||
>
|
||||
<stop offset={0} stopColor="#37bdff" />
|
||||
<stop offset={0.25} stopColor="#26c6f4" />
|
||||
<stop offset={0.5} stopColor="#15d0e9" />
|
||||
<stop offset={0.75} stopColor="#3bd6df" />
|
||||
<stop offset={1} stopColor="#62dcd4" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="bing_svg__b"
|
||||
x1={108.979}
|
||||
x2={100.756}
|
||||
y1={675.98}
|
||||
y2={43.669}
|
||||
gradientUnits="userSpaceOnUse"
|
||||
>
|
||||
<stop offset={0} stopColor="#1b48ef" />
|
||||
<stop offset={0.5} stopColor="#2080f1" />
|
||||
<stop offset={1} stopColor="#26b8f4" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="bing_svg__c"
|
||||
x1={256.823}
|
||||
x2={875.632}
|
||||
y1={649.719}
|
||||
y2={649.719}
|
||||
gradientUnits="userSpaceOnUse"
|
||||
>
|
||||
<stop offset={0} stopColor="#39d2ff" />
|
||||
<stop offset={0.5} stopColor="#248ffa" />
|
||||
<stop offset={1} stopColor="#104cf5" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="bing_svg__d"
|
||||
x1={256.823}
|
||||
x2={875.632}
|
||||
y1={649.719}
|
||||
y2={649.719}
|
||||
gradientUnits="userSpaceOnUse"
|
||||
>
|
||||
<stop offset={0} stopColor="#fff" />
|
||||
<stop offset={1} />
|
||||
</linearGradient>
|
||||
<path
|
||||
fill="#7f7f7f"
|
||||
d="M249.97 277.48c-.12.96-.12 2.05-.12 3.12 0 4.16.83 8.16 2.33 11.84l1.34 2.76 5.3 13.56 27.53 70.23 24.01 61.33c6.85 12.38 17.82 22.1 31.05 27.28l4.11 1.51c.16.05.43.05.65.11l65.81 22.63v.05l25.16 8.64 1.72.58c.06 0 .16.06.22.06 4.96 1.25 9.82 2.93 14.46 4.98 10.73 4.63 20.46 11.23 28.77 19.28 3.35 3.2 6.43 6.65 9.28 10.33a88.64 88.64 0 0 1 6.64 9.72c8.78 14.58 13.82 31.72 13.82 49.97 0 3.26-.16 6.41-.49 9.61-.11 1.41-.28 2.77-.49 4.12v.11c-.22 1.43-.49 2.91-.76 4.36-.28 1.41-.54 2.81-.86 4.21-.05.16-.11.33-.17.49-.3 1.42-.68 2.82-1.07 4.23-.35 1.33-.79 2.7-1.28 3.99a42.96 42.96 0 0 1-1.51 4.16c-.49 1.4-1.07 2.82-1.72 4.16-1.78 4.11-3.9 8.06-6.28 11.83a97.889 97.889 0 0 1-10.47 13.95c30.88-33.2 51.41-76.07 56.52-123.51.86-7.78 1.3-15.67 1.3-23.61 0-5.07-.22-10.09-.55-15.13-3.89-56.89-29.79-107.77-69.32-144.08-10.9-10.09-22.81-19.07-35.62-26.69l-24.2-12.37-122.63-62.93a30.15 30.15 0 0 0-11.93-2.44c-15.88 0-28.99 12.11-30.55 27.56z"
|
||||
/>
|
||||
<path
|
||||
fill="url(#bing_svg__a)"
|
||||
d="M249.97 277.48c-.12.96-.12 2.05-.12 3.12 0 4.16.83 8.16 2.33 11.84l1.34 2.76 5.3 13.56 27.53 70.23 24.01 61.33c6.85 12.38 17.82 22.1 31.05 27.28l4.11 1.51c.16.05.43.05.65.11l65.81 22.63v.05l25.16 8.64 1.72.58c.06 0 .16.06.22.06 4.96 1.25 9.82 2.93 14.46 4.98 10.73 4.63 20.46 11.23 28.77 19.28 3.35 3.2 6.43 6.65 9.28 10.33a88.64 88.64 0 0 1 6.64 9.72c8.78 14.58 13.82 31.72 13.82 49.97 0 3.26-.16 6.41-.49 9.61-.11 1.41-.28 2.77-.49 4.12v.11c-.22 1.43-.49 2.91-.76 4.36-.28 1.41-.54 2.81-.86 4.21-.05.16-.11.33-.17.49-.3 1.42-.68 2.82-1.07 4.23-.35 1.33-.79 2.7-1.28 3.99a42.96 42.96 0 0 1-1.51 4.16c-.49 1.4-1.07 2.82-1.72 4.16-1.78 4.11-3.9 8.06-6.28 11.83a97.889 97.889 0 0 1-10.47 13.95c30.88-33.2 51.41-76.07 56.52-123.51.86-7.78 1.3-15.67 1.3-23.61 0-5.07-.22-10.09-.55-15.13-3.89-56.89-29.79-107.77-69.32-144.08-10.9-10.09-22.81-19.07-35.62-26.69l-24.2-12.37-122.63-62.93a30.15 30.15 0 0 0-11.93-2.44c-15.88 0-28.99 12.11-30.55 27.56z"
|
||||
/>
|
||||
<path
|
||||
fill="#7f7f7f"
|
||||
d="M31.62.1C14.17.41.16 14.69.16 32.15v559.06c.07 3.9.29 7.75.57 11.66.25 2.06.52 4.2.9 6.28 7.97 44.87 47.01 78.92 94.15 78.92 16.53 0 32.03-4.21 45.59-11.53.08-.06.22-.14.29-.14l4.88-2.95 19.78-11.64 25.16-14.93.06-496.73c0-33.01-16.52-62.11-41.81-79.4-.6-.36-1.18-.74-1.71-1.17L50.12 5.56C45.16 2.28 39.18.22 32.77.1z"
|
||||
/>
|
||||
<path
|
||||
fill="url(#bing_svg__b)"
|
||||
d="M31.62.1C14.17.41.16 14.69.16 32.15v559.06c.07 3.9.29 7.75.57 11.66.25 2.06.52 4.2.9 6.28 7.97 44.87 47.01 78.92 94.15 78.92 16.53 0 32.03-4.21 45.59-11.53.08-.06.22-.14.29-.14l4.88-2.95 19.78-11.64 25.16-14.93.06-496.73c0-33.01-16.52-62.11-41.81-79.4-.6-.36-1.18-.74-1.71-1.17L50.12 5.56C45.16 2.28 39.18.22 32.77.1z"
|
||||
/>
|
||||
<path
|
||||
fill="#7f7f7f"
|
||||
d="M419.81 510.84 194.72 644.26l-3.24 1.95v.71l-25.16 14.9-19.77 11.67-4.85 2.93-.33.16c-13.53 7.35-29.04 11.51-45.56 11.51-47.13 0-86.22-34.03-94.16-78.92 3.77 32.84 14.96 63.41 31.84 90.04 34.76 54.87 93.54 93.04 161.54 99.67h41.58c36.78-3.84 67.49-18.57 99.77-38.46l49.64-30.36c22.36-14.33 83.05-49.58 100.93-69.36 3.89-4.33 7.4-8.97 10.47-13.94 2.38-3.78 4.5-7.73 6.28-11.84.6-1.4 1.17-2.76 1.72-4.15.52-1.38 1.01-2.77 1.51-4.18.93-2.7 1.67-5.41 2.38-8.2.36-1.59.69-3.16 1.02-4.72 1.08-5.89 1.67-11.94 1.67-18.21 0-18.25-5.04-35.39-13.77-49.95-2-3.4-4.2-6.65-6.64-9.72-2.85-3.7-5.93-7.13-9.28-10.33-8.31-8.05-18.01-14.65-28.77-19.29-4.64-2.05-9.48-3.74-14.46-4.97-.06 0-.16-.06-.22-.06l-1.72-.58z"
|
||||
/>
|
||||
<path
|
||||
fill="url(#bing_svg__c)"
|
||||
d="M419.81 510.84 194.72 644.26l-3.24 1.95v.71l-25.16 14.9-19.77 11.67-4.85 2.93-.33.16c-13.53 7.35-29.04 11.51-45.56 11.51-47.13 0-86.22-34.03-94.16-78.92 3.77 32.84 14.96 63.41 31.84 90.04 34.76 54.87 93.54 93.04 161.54 99.67h41.58c36.78-3.84 67.49-18.57 99.77-38.46l49.64-30.36c22.36-14.33 83.05-49.58 100.93-69.36 3.89-4.33 7.4-8.97 10.47-13.94 2.38-3.78 4.5-7.73 6.28-11.84.6-1.4 1.17-2.76 1.72-4.15.52-1.38 1.01-2.77 1.51-4.18.93-2.7 1.67-5.41 2.38-8.2.36-1.59.69-3.16 1.02-4.72 1.08-5.89 1.67-11.94 1.67-18.21 0-18.25-5.04-35.39-13.77-49.95-2-3.4-4.2-6.65-6.64-9.72-2.85-3.7-5.93-7.13-9.28-10.33-8.31-8.05-18.01-14.65-28.77-19.29-4.64-2.05-9.48-3.74-14.46-4.97-.06 0-.16-.06-.22-.06l-1.72-.58z"
|
||||
/>
|
||||
<path
|
||||
fill="#7f7f7f"
|
||||
d="M512 595.46c0 6.27-.59 12.33-1.68 18.22-.32 1.56-.65 3.12-1.02 4.7-.7 2.8-1.44 5.51-2.37 8.22-.49 1.4-.99 2.8-1.51 4.16-.54 1.4-1.12 2.76-1.73 4.16a87.873 87.873 0 0 1-6.26 11.83 96.567 96.567 0 0 1-10.48 13.94c-17.88 19.79-78.57 55.04-100.93 69.37l-49.64 30.36c-36.39 22.42-70.77 38.29-114.13 39.38-2.05.06-4.06.11-6.05.11-2.8 0-5.56-.05-8.33-.16-73.42-2.8-137.45-42.25-174.38-100.54a213.368 213.368 0 0 1-31.84-90.04c7.94 44.89 47.03 78.92 94.16 78.92 16.52 0 32.03-4.17 45.56-11.51l.33-.17 4.85-2.92 19.77-11.67 25.16-14.9v-.71l3.24-1.95 225.09-133.43 17.33-10.27 1.72.58c.05 0 .16.06.22.06 4.98 1.23 9.83 2.92 14.46 4.97 10.76 4.64 20.45 11.24 28.77 19.29a92.13 92.13 0 0 1 9.28 10.33c2.44 3.07 4.64 6.32 6.64 9.72 8.73 14.56 13.77 31.7 13.77 49.95z"
|
||||
opacity={0.15}
|
||||
/>
|
||||
<path
|
||||
fill="url(#bing_svg__d)"
|
||||
d="M512 595.46c0 6.27-.59 12.33-1.68 18.22-.32 1.56-.65 3.12-1.02 4.7-.7 2.8-1.44 5.51-2.37 8.22-.49 1.4-.99 2.8-1.51 4.16-.54 1.4-1.12 2.76-1.73 4.16a87.873 87.873 0 0 1-6.26 11.83 96.567 96.567 0 0 1-10.48 13.94c-17.88 19.79-78.57 55.04-100.93 69.37l-49.64 30.36c-36.39 22.42-70.77 38.29-114.13 39.38-2.05.06-4.06.11-6.05.11-2.8 0-5.56-.05-8.33-.16-73.42-2.8-137.45-42.25-174.38-100.54a213.368 213.368 0 0 1-31.84-90.04c7.94 44.89 47.03 78.92 94.16 78.92 16.52 0 32.03-4.17 45.56-11.51l.33-.17 4.85-2.92 19.77-11.67 25.16-14.9v-.71l3.24-1.95 225.09-133.43 17.33-10.27 1.72.58c.05 0 .16.06.22.06 4.98 1.23 9.83 2.92 14.46 4.97 10.76 4.64 20.45 11.24 28.77 19.29a92.13 92.13 0 0 1 9.28 10.33c2.44 3.07 4.64 6.32 6.64 9.72 8.73 14.56 13.77 31.7 13.77 49.95z"
|
||||
opacity={0.15}
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgBing;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as BingSVG } from "./bing.svg";
|
||||
import SvgBing from "./Bing";
|
||||
|
||||
export const BingIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(
|
||||
(props, ref) => {
|
||||
return <BingSVG ref={ref} {...props} />;
|
||||
return <SvgBing ref={ref} {...props} />;
|
||||
}
|
||||
);
|
||||
|
|
|
|||
22
src/frontend/src/icons/ChromaIcon/Chroma.jsx
Normal file
22
src/frontend/src/icons/ChromaIcon/Chroma.jsx
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
const SvgChroma = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="1em"
|
||||
height="1em"
|
||||
fill="none"
|
||||
viewBox="0 0 209 135"
|
||||
{...props}
|
||||
>
|
||||
<ellipse cx={136.019} cy={67.23} fill="#FFDE2D" rx={66.667} ry={64} />
|
||||
<ellipse cx={69.352} cy={67.23} fill="#327EFF" rx={66.667} ry={64} />
|
||||
<path
|
||||
fill="#327EFF"
|
||||
d="M2.685 67.23c0-35.346 29.848-64 66.667-64v64H2.685Z"
|
||||
/>
|
||||
<path
|
||||
fill="#FF6446"
|
||||
d="M136.019 67.23c0 35.347-29.848 64-66.667 64v-64h66.667ZM69.352 67.23c0-35.346 29.848-64 66.667-64v64H69.352Z"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgChroma;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as ChromaSVG } from "./chroma.svg";
|
||||
import SvgChroma from "./Chroma";
|
||||
|
||||
export const ChromaIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <ChromaSVG ref={ref} {...props} />;
|
||||
return <SvgChroma ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
52
src/frontend/src/icons/Cohere/Cohere.jsx
Normal file
52
src/frontend/src/icons/Cohere/Cohere.jsx
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
const SvgCohere = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="165.883 110.821 117.8 117.78"
|
||||
width="1em"
|
||||
height="1em"
|
||||
{...props}
|
||||
>
|
||||
<g transform="translate(97.843 -127.708)">
|
||||
<clipPath id="cohere_svg__a">
|
||||
<path
|
||||
d="M68.05 238.52h117.78V356.3H68.05z"
|
||||
style={{
|
||||
overflow: "visible",
|
||||
}}
|
||||
/>
|
||||
</clipPath>
|
||||
<g
|
||||
style={{
|
||||
clipPath: "url(#cohere_svg__a)",
|
||||
}}
|
||||
>
|
||||
<path
|
||||
d="M106.21 308.65c3.17 0 9.48-.17 18.19-3.76 10.16-4.18 30.37-11.77 44.94-19.57 10.2-5.45 14.66-12.67 14.66-22.38 0-13.48-10.93-24.41-24.41-24.41H103.1c-19.37 0-35.06 15.7-35.06 35.06s14.71 35.06 38.17 35.06z"
|
||||
className="cohere_svg__st2"
|
||||
style={{
|
||||
clipRule: "evenodd",
|
||||
fill: "#3a594d",
|
||||
fillRule: "evenodd",
|
||||
}}
|
||||
/>
|
||||
<path
|
||||
d="M115.77 332.79c0-9.49 5.71-18.05 14.48-21.69l17.79-7.38c17.99-7.47 37.8 5.76 37.8 25.24 0 15.09-12.24 27.33-27.33 27.32h-19.26c-12.97-.01-23.48-10.52-23.48-23.49z"
|
||||
className="cohere_svg__st3"
|
||||
style={{
|
||||
clipRule: "evenodd",
|
||||
fill: "#bd8fc0",
|
||||
fillRule: "evenodd",
|
||||
}}
|
||||
/>
|
||||
<path
|
||||
d="M88.27 313.27c-11.16 0-20.21 9.05-20.21 20.21v2.62c0 11.16 9.05 20.21 20.21 20.21s20.21-9.05 20.21-20.21v-2.62c0-11.16-9.05-20.21-20.21-20.21z"
|
||||
className="cohere_svg__st4"
|
||||
style={{
|
||||
fill: "#ee765c",
|
||||
}}
|
||||
/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
);
|
||||
export default SvgCohere;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as CohereSVG } from "./cohere.svg";
|
||||
import SvgCohere from "./Cohere";
|
||||
|
||||
export const CohereIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <CohereSVG ref={ref} {...props} />;
|
||||
return <SvgCohere ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
13
src/frontend/src/icons/Evernote/EvernoteIcon.jsx
Normal file
13
src/frontend/src/icons/Evernote/EvernoteIcon.jsx
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
const SvgEvernoteIcon = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="1em"
|
||||
height="1em"
|
||||
fill="#7fce2c"
|
||||
viewBox="0 0 32 32"
|
||||
{...props}
|
||||
>
|
||||
<path d="M29.343 16.818c.1 1.695-.08 3.368-.305 5.045-.225 1.712-.508 3.416-.964 5.084-.3 1.067-.673 2.1-1.202 3.074-.65 1.192-1.635 1.87-2.992 1.924l-3.832.036c-.636-.017-1.278-.146-1.9-.297-1.192-.3-1.862-1.1-2.06-2.3a8.976 8.976 0 0 1 .04-3.264c.252-1.23 1-1.96 2.234-2.103.817-.1 1.65-.077 2.476-.1.205-.007.275.098.203.287a2.695 2.695 0 0 0-.098 1.623c.053.207-.023.307-.26.305a7.77 7.77 0 0 0-1.123.053c-.636.086-.96.47-.96 1.112 0 .205.026.416.066.622.103.507.45.78.944.837 1.123.127 2.247.138 3.37-.05.675-.114 1.08-.54 1.16-1.208.152-1.3.155-2.587-.228-3.845-.33-1.092-1.006-1.565-2.134-1.7l-3.36-.54c-1.06-.193-1.7-.887-1.92-1.9-.13-.572-.14-1.17-.214-1.757-.013-.106-.074-.208-.1-.3-.04.1-.106.212-.117.326-.066.68-.053 1.373-.185 2.04-.16.8-.404 1.566-.67 2.33-.185.535-.616.837-1.205.8a37.76 37.76 0 0 1-7.123-1.353l-.64-.207c-.927-.26-1.487-.903-1.74-1.787l-1-3.853-.74-4.3c-.115-.755-.2-1.523-.083-2.293.154-1.112.914-1.903 2.04-1.964l3.558-.062c.127 0 .254.003.373-.026a1.23 1.23 0 0 0 1.01-1.255l-.05-3.036c-.048-1.576.8-2.38 2.156-2.622a10.58 10.58 0 0 1 4.91.26c.933.275 1.467.923 1.715 1.83.058.22.146.3.37.287l2.582.01 3.333.37c.686.095 1.364.25 2.032.42 1.165.298 1.793 1.112 1.962 2.256l.357 3.355.3 5.577.01 2.277zm-4.534-1.155c-.02-.666-.07-1.267-.444-1.784a1.66 1.66 0 0 0-2.469-.15c-.364.4-.494.88-.564 1.4-.008.034.106.126.16.126l.8-.053c.768.007 1.523.113 2.25.393.066.026.136.04.265.077zM8.787 1.154a3.82 3.82 0 0 0-.278 1.592l.05 2.934c.005.357-.075.45-.433.45L5.1 6.156c-.583 0-1.143.1-1.554.278l5.2-5.332c.02.013.04.033.06.053z" />
|
||||
</svg>
|
||||
);
|
||||
export default SvgEvernoteIcon;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as EvernoteSVG } from "./evernote-icon.svg";
|
||||
import SvgEvernoteIcon from "./EvernoteIcon";
|
||||
|
||||
export const EvernoteIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <EvernoteSVG ref={ref} {...props} />;
|
||||
return <SvgEvernoteIcon ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
|
|
@ -0,0 +1,52 @@
|
|||
const SvgFacebookMessengerLogo2020 = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 800 800"
|
||||
width="1em"
|
||||
height="1em"
|
||||
{...props}
|
||||
>
|
||||
<radialGradient
|
||||
id="Facebook_Messenger_logo_2020_svg__a"
|
||||
cx={101.9}
|
||||
cy={809}
|
||||
r={1.1}
|
||||
gradientTransform="matrix(800 0 0 -800 -81386 648000)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
>
|
||||
<stop
|
||||
offset={0}
|
||||
style={{
|
||||
stopColor: "#09f",
|
||||
}}
|
||||
/>
|
||||
<stop
|
||||
offset={0.6}
|
||||
style={{
|
||||
stopColor: "#a033ff",
|
||||
}}
|
||||
/>
|
||||
<stop
|
||||
offset={0.9}
|
||||
style={{
|
||||
stopColor: "#ff5280",
|
||||
}}
|
||||
/>
|
||||
<stop
|
||||
offset={1}
|
||||
style={{
|
||||
stopColor: "#ff7061",
|
||||
}}
|
||||
/>
|
||||
</radialGradient>
|
||||
<path
|
||||
fill="url(#Facebook_Messenger_logo_2020_svg__a)"
|
||||
d="M400 0C174.7 0 0 165.1 0 388c0 116.6 47.8 217.4 125.6 287 6.5 5.8 10.5 14 10.7 22.8l2.2 71.2a32 32 0 0 0 44.9 28.3l79.4-35c6.7-3 14.3-3.5 21.4-1.6 36.5 10 75.3 15.4 115.8 15.4 225.3 0 400-165.1 400-388S625.3 0 400 0z"
|
||||
/>
|
||||
<path
|
||||
fill="#FFF"
|
||||
d="m159.8 501.5 117.5-186.4a60 60 0 0 1 86.8-16l93.5 70.1a24 24 0 0 0 28.9-.1l126.2-95.8c16.8-12.8 38.8 7.4 27.6 25.3L522.7 484.9a60 60 0 0 1-86.8 16l-93.5-70.1a24 24 0 0 0-28.9.1l-126.2 95.8c-16.8 12.8-38.8-7.3-27.5-25.2z"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgFacebookMessengerLogo2020;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as FacebookMessengerSVG } from "./Facebook_Messenger_logo_2020.svg";
|
||||
import SvgFacebookMessengerLogo2020 from "./FacebookMessengerLogo2020";
|
||||
|
||||
export const FBIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(
|
||||
(props, ref) => {
|
||||
return <FacebookMessengerSVG ref={ref} {...props} />;
|
||||
return <SvgFacebookMessengerLogo2020 ref={ref} {...props} />;
|
||||
}
|
||||
);
|
||||
|
|
|
|||
12
src/frontend/src/icons/GitBook/GitbookSvgrepoCom.jsx
Normal file
12
src/frontend/src/icons/GitBook/GitbookSvgrepoCom.jsx
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
const SvgGitbookSvgrepoCom = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="1em"
|
||||
height="1em"
|
||||
viewBox="0 0 24 24"
|
||||
{...props}
|
||||
>
|
||||
<path d="M10.802 17.77a.703.703 0 1 1-.002 1.406.703.703 0 0 1 .002-1.406m11.024-4.347a.703.703 0 1 1 .001-1.406.703.703 0 0 1-.001 1.406m0-2.876a2.176 2.176 0 0 0-2.174 2.174c0 .233.039.465.115.691l-7.181 3.823a2.165 2.165 0 0 0-1.784-.937c-.829 0-1.584.475-1.95 1.216l-6.451-3.402c-.682-.358-1.192-1.48-1.138-2.502.028-.533.212-.947.493-1.107.178-.1.392-.092.62.027l.042.023c1.71.9 7.304 3.847 7.54 3.956.363.169.565.237 1.185-.057l11.564-6.014c.17-.064.368-.227.368-.474 0-.342-.354-.477-.355-.477-.658-.315-1.669-.788-2.655-1.25-2.108-.987-4.497-2.105-5.546-2.655-.906-.474-1.635-.074-1.765.006l-.252.125C7.78 6.048 1.46 9.178 1.1 9.397.457 9.789.058 10.57.006 11.539c-.08 1.537.703 3.14 1.824 3.727l6.822 3.518a2.175 2.175 0 0 0 2.15 1.862 2.177 2.177 0 0 0 2.173-2.14l7.514-4.073c.38.298.853.461 1.337.461A2.176 2.176 0 0 0 24 12.72a2.176 2.176 0 0 0-2.174-2.174" />
|
||||
</svg>
|
||||
);
|
||||
export default SvgGitbookSvgrepoCom;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as GitBookSVG } from "./gitbook-svgrepo-com.svg";
|
||||
import SvgGitbookSvgrepoCom from "./GitbookSvgrepoCom";
|
||||
|
||||
export const GitBookIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <GitBookSVG ref={ref} {...props} />;
|
||||
return <SvgGitbookSvgrepoCom ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
28
src/frontend/src/icons/Google/Google.jsx
Normal file
28
src/frontend/src/icons/Google/Google.jsx
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
const SvgGoogle = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="1em"
|
||||
height="1em"
|
||||
preserveAspectRatio="xMidYMid"
|
||||
viewBox="0 0 256 262"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
fill="#4285F4"
|
||||
d="M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622 38.755 30.023 2.685.268c24.659-22.774 38.875-56.282 38.875-96.027"
|
||||
/>
|
||||
<path
|
||||
fill="#34A853"
|
||||
d="M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055-34.523 0-63.824-22.773-74.269-54.25l-1.531.13-40.298 31.187-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1"
|
||||
/>
|
||||
<path
|
||||
fill="#FBBC05"
|
||||
d="M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82 0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602l42.356-32.782"
|
||||
/>
|
||||
<path
|
||||
fill="#EB4335"
|
||||
d="M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0 79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgGoogle;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as GoogleSVG } from "./google.svg";
|
||||
import SvgGoogle from "./Google";
|
||||
|
||||
export const GoogleIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <GoogleSVG ref={ref} {...props} />;
|
||||
return <SvgGoogle ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
42
src/frontend/src/icons/HuggingFace/HfLogo.jsx
Normal file
42
src/frontend/src/icons/HuggingFace/HfLogo.jsx
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as HugginFaceSVG } from "./hf-logo.svg";
|
||||
import SvgHfLogo from "./HfLogo";
|
||||
|
||||
export const HuggingFaceIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <HugginFaceSVG ref={ref} {...props} />;
|
||||
return <SvgHfLogo ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
15
src/frontend/src/icons/IFixIt/IfixitSeeklogoCom.jsx
Normal file
15
src/frontend/src/icons/IFixIt/IfixitSeeklogoCom.jsx
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
const SvgIfixitSeeklogocom = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="1em"
|
||||
height="1em"
|
||||
viewBox="8.4 8.4 51.2 51.2"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
fill="#0071BA"
|
||||
d="M34 8.4C19.813 8.4 8.4 19.813 8.4 34S19.813 59.6 34 59.6 59.6 48.187 59.6 34 48.187 8.4 34 8.4zm9.493 13.226c.64.32 1.28.747 1.707 1.173 1.173 1.173 1.6 2.24 1.28 3.2l-5.44 7.467c-.106.32-.106 1.066 0 1.387l5.333 7.253c.107.32.213.96.107 1.28-.854 1.6-2.348 2.773-3.84 3.307-.32 0-.534 0-.747-.106l-7.253-5.333c-.32-.214-.854-.214-1.281-.107l-7.573 5.547c-.64.213-1.173.106-1.813-.32-1.387-.96-2.347-2.133-2.667-3.413 0-.427 0-.533.213-.747l5.333-7.359a1.705 1.705 0 0 0-.213-1.6l-5.12-6.934c-.106-.106-.106-.32-.213-.533.107-2.027 1.6-3.093 3.307-4.267.32-.107.854-.107 1.173 0l7.36 5.546c.427.107 1.174.107 1.494-.106L42 21.626c.533-.213.96-.106 1.387 0h.106z"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgIfixitSeeklogocom;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as IFixItSVG } from "./ifixit-seeklogo.com.svg";
|
||||
import SvgIfixitSeeklogocom from "./IfixitSeeklogoCom";
|
||||
|
||||
export const IFixIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(
|
||||
(props, ref) => {
|
||||
return <IFixItSVG ref={ref} {...props} />;
|
||||
return <SvgIfixitSeeklogocom ref={ref} {...props} />;
|
||||
}
|
||||
);
|
||||
|
|
|
|||
58
src/frontend/src/icons/Meta/MetaIcon.jsx
Normal file
58
src/frontend/src/icons/Meta/MetaIcon.jsx
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
const SvgMetaIcon = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
data-name="Layer 1"
|
||||
viewBox="0 0 287.56 191"
|
||||
width="1em"
|
||||
height="1em"
|
||||
{...props}
|
||||
>
|
||||
<defs>
|
||||
<linearGradient
|
||||
id="meta-icon_svg__a"
|
||||
x1={62.34}
|
||||
x2={260.34}
|
||||
y1={101.45}
|
||||
y2={91.45}
|
||||
gradientTransform="matrix(1 0 0 -1 0 192)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
>
|
||||
<stop offset={0} stopColor="#0064e1" />
|
||||
<stop offset={0.4} stopColor="#0064e1" />
|
||||
<stop offset={0.83} stopColor="#0073ee" />
|
||||
<stop offset={1} stopColor="#0082fb" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="meta-icon_svg__b"
|
||||
x1={41.42}
|
||||
x2={41.42}
|
||||
y1={53}
|
||||
y2={126}
|
||||
gradientTransform="matrix(1 0 0 -1 0 192)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
>
|
||||
<stop offset={0} stopColor="#0082fb" />
|
||||
<stop offset={1} stopColor="#0064e0" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<path
|
||||
d="M31.06 126c0 11 2.41 19.41 5.56 24.51A19 19 0 0 0 53.19 160c8.1 0 15.51-2 29.79-21.76 11.44-15.83 24.92-38 34-52l15.36-23.6c10.67-16.39 23-34.61 37.18-47C181.07 5.6 193.54 0 206.09 0c21.07 0 41.14 12.21 56.5 35.11 16.81 25.08 25 56.67 25 89.27 0 19.38-3.82 33.62-10.32 44.87C271 180.13 258.72 191 238.13 191v-31c17.63 0 22-16.2 22-34.74 0-26.42-6.16-55.74-19.73-76.69-9.63-14.86-22.11-23.94-35.84-23.94-14.85 0-26.8 11.2-40.23 31.17-7.14 10.61-14.47 23.54-22.7 38.13l-9.06 16c-18.2 32.27-22.81 39.62-31.91 51.75C84.74 183 71.12 191 53.19 191c-21.27 0-34.72-9.21-43-23.09C3.34 156.6 0 141.76 0 124.85Z"
|
||||
style={{
|
||||
fill: "#0081fb",
|
||||
}}
|
||||
/>
|
||||
<path
|
||||
d="M24.49 37.3C38.73 15.35 59.28 0 82.85 0c13.65 0 27.22 4 41.39 15.61 15.5 12.65 32 33.48 52.63 67.81l7.39 12.32c17.84 29.72 28 45 33.93 52.22 7.64 9.26 13 12 19.94 12 17.63 0 22-16.2 22-34.74l27.4-.86c0 19.38-3.82 33.62-10.32 44.87C271 180.13 258.72 191 238.13 191c-12.8 0-24.14-2.78-36.68-14.61-9.64-9.08-20.91-25.21-29.58-39.71L146.08 93.6c-12.94-21.62-24.81-37.74-31.68-45-7.4-7.89-16.89-17.37-32.05-17.37-12.27 0-22.69 8.61-31.41 21.78Z"
|
||||
style={{
|
||||
fill: "url(#meta-icon_svg__a)",
|
||||
}}
|
||||
/>
|
||||
<path
|
||||
d="M82.35 31.23c-12.27 0-22.69 8.61-31.41 21.78C38.61 71.62 31.06 99.34 31.06 126c0 11 2.41 19.41 5.56 24.51l-26.48 17.4C3.34 156.6 0 141.76 0 124.85 0 94.1 8.44 62.05 24.49 37.3 38.73 15.35 59.28 0 82.85 0Z"
|
||||
style={{
|
||||
fill: "url(#meta-icon_svg__b)",
|
||||
}}
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgMetaIcon;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as MetaSVG } from "./meta-icon.svg";
|
||||
import SvgMetaIcon from "./MetaIcon";
|
||||
|
||||
export const MetaIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(
|
||||
(props, ref) => {
|
||||
return <MetaSVG ref={ref} {...props} />;
|
||||
return <SvgMetaIcon ref={ref} {...props} />;
|
||||
}
|
||||
);
|
||||
|
|
|
|||
13
src/frontend/src/icons/Midjorney/MidjourneyEmblem.jsx
Normal file
13
src/frontend/src/icons/Midjorney/MidjourneyEmblem.jsx
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
const SvgMidjourneyEmblem = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="1em"
|
||||
height="1em"
|
||||
viewBox="0 0 1024 1024"
|
||||
{...props}
|
||||
>
|
||||
<path d="M261 222.8c-4.5 4.6-4 7.5 3.3 21.1 32.2 59 53.7 120.8 60.2 173.1 1.8 14.4 2 47.9.5 65.8-5.9 68.9-29.7 131.7-64.2 169.9-5.5 6-6.5 9.1-4.8 13.4 3.2 7.7 9.1 7.8 21 .5 32.9-20.4 79.4-37.4 122-44.7 12.2-2.1 16.6-2.3 46-2.4 33.9 0 39.1.5 68 5.6 24.8 4.4 54.3 12.6 76.1 21 7.4 2.8 14.6 5.3 16 5.6 3.7.7 8.4-2 9.9-5.7 1.7-4.1-.4-17.8-6.2-40.4-18.4-72.5-60.4-151.6-115.2-217-54.1-64.5-126.6-121.3-203.4-159.3-20.7-10.2-24.6-11.1-29.2-6.5zm43.4 35.8c31.5 17.3 66.9 41.4 96.6 65.8 84 69 149.2 162.5 181.7 260.4 4.9 14.9 11.3 40.6 10.1 41.1-.5.1-4.8-1.1-9.6-2.7-28.1-9.8-61.9-17.5-94.2-21.4-25.3-3.1-64.1-3.1-86.1 0-31.3 4.4-60.5 12.5-89.4 24.7-6 2.6-11.6 4.9-12.4 5.3-1 .4-.8-.5.7-2.9 3.3-5.5 13.6-26.6 17.5-36 20-48.5 30.4-117.1 25.6-168.9-4.4-47.7-23.4-110-49.5-162.2-2.4-4.8-4.4-9-4.4-9.3 0-1 1.5-.3 13.4 6.1z" />
|
||||
<path d="M448.8 292.6c-3.4 1.8-4.8 4.3-4.8 8.6 0 4.5 1.1 5.8 10.2 12 25.8 17.7 61.5 50.8 80.1 74.3 41.9 52.7 86.1 142.6 111.8 227.5 2.8 9 5.8 17.3 6.7 18.3 3 3.4 5.9 3.8 14.4 2.2 4.4-.8 12.4-1.8 17.7-2.1 11.8-.7 21.3 1.6 42.5 10 17.9 7.2 22.2 7.2 25.1.2 1.7-4.1 1.3-5.9-6.6-26.1-23.9-61.6-55.5-120.6-87.3-163-5.1-6.9-18-23-19.6-24.5-.3-.3-3-3.2-5.9-6.5-57.4-63.2-114.1-109.3-155.1-126-6.8-2.7-21.1-6.5-24.5-6.5-1.1.1-3.2.7-4.7 1.6zM554 372.4c14.9 12.9 57.7 55.8 70.4 70.6 31.5 36.7 62.5 87.4 87.3 143 7 15.7 14.3 33.5 14.3 34.9 0 .5-4.8-.7-10.7-2.7-10.4-3.5-11.4-3.6-25.3-3.6-8-.1-16.5.1-18.9.4l-4.4.4-5.2-16.4c-21.4-67.7-54.3-138.3-90.2-193.5-4.7-7.2-10.4-15.5-12.6-18.5-6.1-8-22.1-27.2-24.6-29.4-1.1-1.1-2.1-2.3-2.1-2.8 0-1.1 5.5 3.3 22 17.6zM808 660.8c-4.7.2-69.9 4.4-135.5 8.7-20.9 1.4-45.6 2.9-55 3.5-9.3.6-26.4 1.7-38 2.5-11.5.8-29.1 1.9-39 2.5-9.9.6-34.9 2.2-55.5 3.5-20.6 1.4-58.6 3.8-84.5 5.5-25.8 1.7-60.7 3.9-77.5 5-16.8 1.1-45.1 2.9-63 4-48.3 2.9-47.8 2.8-50 9.6-1.3 3.9-.5 6 12.3 30l6.5 12.1-16.6 11.4c-26.9 18.5-36.6 23.9-42.9 23.9-1.4 0-3.7 1.3-5.4 2.9-4.1 4.1-4 9.1.2 13.3 2.9 2.9 3.3 3 9.5 2.5 8.7-.7 19.7-6 37.8-18.4 30.5-21 38.1-25.3 44.6-25.3 4.8 0 10 3.2 25.9 15.9 21.5 17.1 29.6 22 42.6 26 10.8 3.4 21.3 3.8 31.5 1.2 11.9-2.9 20.2-7.5 37.7-20.5 20.1-15.1 24.3-17.1 35.3-17.1 10.8 0 15.5 2.2 29.5 13.5 15.9 12.9 20.2 16 27.9 19.9 9.1 4.6 16.8 6.4 27.1 6.4 15.4-.1 28.4-6.3 47.5-22.4 17.8-15 25.7-18.5 39.3-17.6 10.1.7 16 3.5 29 14.1 26.5 21.5 36.8 26.6 54.5 26.6 16.1 0 28.1-5.4 49-22.2 8.1-6.4 17.6-13.2 21.2-15 6-3 7.2-3.3 16.5-3.3s10.5.2 16.6 3.2c3.8 1.9 11.4 7.4 17.6 12.7 6.1 5.2 13.3 11.1 15.9 13.2 11.2 8.6 29.4 14.3 36.3 11.4 3.6-1.5 6.1-5.5 6.1-9.8 0-4.4-5.8-9.2-11-9.2-8.4 0-14.5-3.4-31-17.5-21-18-30.1-22.7-46.6-24.1-16.2-1.5-30.4 4.5-52.4 22.1-21.1 16.9-30.7 20.9-44.2 18.5-5.5-1-17.5-5.7-16.6-6.5.2-.2 5.9-3.1 12.8-6.6 25-12.5 63.7-34.4 80-45.3 21.3-14.2 64-46.3 66.5-50 2-2.8 1.8-8.6-.3-11.3-2-2.7-6.1-3.9-12.2-3.5zm-28 21.9c0 .9-27.4 20.5-39.6 28.5-23 15-74.5 42.9-91.6 49.7l-5.6 2.3-6.9-5.3c-18.4-14.2-38.5-18.1-57.4-11.3-9.2 3.3-17.1 8.4-32.4 20.9-6.6 5.4-14.9 11.2-18.5 12.9-5.8 2.7-7.5 3.1-15.5 3.1-13.3 0-18.5-2.7-42.4-22.2-21-17.1-38.3-21.6-57.6-15.1-8.1 2.8-15.4 7.3-32 19.8-7.7 5.8-16.9 11.9-20.5 13.5-6 2.8-7.4 3-17.5 3-10.6 0-11.3-.1-18.7-3.7-9.8-4.6-14.3-7.7-29.3-19.9-21.7-17.4-30.7-21.8-42.4-20.4l-5.7.7-5.6-10.4c-3-5.7-5.2-10.6-4.9-10.9.6-.7 24.1-2.4 79.1-5.9 17.3-1.1 56-3.6 86-5.5s71.8-4.6 93-6c21.2-1.3 49.3-3.2 62.5-4 13.2-.9 44.9-2.9 70.5-4.5 60.9-4 120.5-7.9 135.5-8.9 17.2-1.2 17.5-1.2 17.5-.4z" />
|
||||
</svg>
|
||||
);
|
||||
export default SvgMidjourneyEmblem;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as MidjourneySVG } from "./Midjourney_Emblem.svg";
|
||||
import SvgMidjourneyEmblem from "./MidjourneyEmblem";
|
||||
|
||||
export const MidjourneyIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <MidjourneySVG ref={ref} {...props} />;
|
||||
return <SvgMidjourneyEmblem ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
23
src/frontend/src/icons/MongoDB/MongodbIcon.jsx
Normal file
23
src/frontend/src/icons/MongoDB/MongodbIcon.jsx
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
const SvgMongodbIcon = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="1em"
|
||||
height="1em"
|
||||
viewBox="0 0 32 32"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
fill="#599636"
|
||||
d="m15.9.087.854 1.604c.192.296.4.558.645.802a22.406 22.406 0 0 1 2.004 2.266c1.447 1.9 2.423 4.01 3.12 6.292.418 1.394.645 2.824.662 4.27.07 4.323-1.412 8.035-4.4 11.12a12.7 12.7 0 0 1-1.57 1.342c-.296 0-.436-.227-.558-.436a3.589 3.589 0 0 1-.436-1.255c-.105-.523-.174-1.046-.14-1.586v-.244C16.057 24.21 15.796.21 15.9.087z"
|
||||
/>
|
||||
<path
|
||||
fill="#6cac48"
|
||||
d="M15.9.034c-.035-.07-.07-.017-.105.017.017.35-.105.662-.296.96-.21.296-.488.523-.767.767-1.55 1.342-2.77 2.963-3.747 4.776-1.3 2.44-1.97 5.055-2.16 7.808-.087.993.314 4.497.627 5.508.854 2.684 2.388 4.933 4.375 6.885.488.47 1.01.906 1.55 1.325.157 0 .174-.14.21-.244a4.78 4.78 0 0 0 .157-.68l.35-2.614L15.9.034z"
|
||||
/>
|
||||
<path
|
||||
fill="#c2bfbf"
|
||||
d="M16.754 28.845c.035-.4.227-.732.436-1.063-.21-.087-.366-.26-.488-.453a3.235 3.235 0 0 1-.26-.575c-.244-.732-.296-1.5-.366-2.248v-.453c-.087.07-.105.662-.105.75a17.37 17.37 0 0 1-.314 2.353c-.052.314-.087.627-.28.906 0 .035 0 .07.017.122.314.924.4 1.865.453 2.824v.35c0 .418-.017.33.33.47.14.052.296.07.436.174.105 0 .122-.087.122-.157l-.052-.575v-1.604c-.017-.28.035-.558.07-.82z"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgMongodbIcon;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as MongoDBSVG } from "./mongodb-icon.svg";
|
||||
import SvgMongodbIcon from "./MongodbIcon";
|
||||
|
||||
export const MongoDBIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <MongoDBSVG ref={ref} {...props} />;
|
||||
return <SvgMongodbIcon ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
22
src/frontend/src/icons/Notion/NotionLogo.jsx
Normal file
22
src/frontend/src/icons/Notion/NotionLogo.jsx
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
const SvgNotionLogo = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="1em"
|
||||
height="1em"
|
||||
fill="none"
|
||||
viewBox="0 0 100 100"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
fill="#fff"
|
||||
d="M6.017 4.313 61.35.226c6.797-.583 8.543-.19 12.817 2.917L91.83 15.586c2.913 2.14 3.883 2.723 3.883 5.053v68.243c0 4.277-1.553 6.807-6.99 7.193l-64.256 3.892c-4.08.193-6.023-.39-8.16-3.113L3.3 79.94C.967 76.827 0 74.497 0 71.773v-60.66c0-3.497 1.553-6.413 6.017-6.8z"
|
||||
/>
|
||||
<path
|
||||
fill="#000"
|
||||
fillRule="evenodd"
|
||||
d="M61.35.227 6.017 4.314C1.553 4.7 0 7.617 0 11.113v60.66c0 2.723.967 5.053 3.3 8.167l13.007 16.913c2.137 2.723 4.08 3.307 8.16 3.113l64.257-3.89c5.433-.387 6.99-2.917 6.99-7.193V20.64c0-2.21-.873-2.847-3.443-4.733L74.167 3.143C69.894.036 68.147-.357 61.35.226zM25.92 19.523c-5.247.353-6.437.433-9.417-1.99l-7.576-6.026c-.77-.78-.383-1.753 1.557-1.947l53.193-3.887c4.467-.39 6.793 1.167 8.54 2.527l9.123 6.61c.39.197 1.36 1.36.193 1.36L26.6 19.477l-.68.047zM19.803 88.3V30.367c0-2.53.777-3.697 3.103-3.893L86 22.78c2.14-.193 3.107 1.167 3.107 3.693V84.02c0 2.53-.39 4.67-3.883 4.863l-60.377 3.5c-3.493.193-5.043-.97-5.043-4.083zm59.6-54.827c.387 1.75 0 3.5-1.75 3.7l-2.91.577v42.773c-2.527 1.36-4.853 2.137-6.797 2.137-3.107 0-3.883-.973-6.21-3.887l-19.03-29.94V77.8l6.02 1.363s0 3.5-4.857 3.5l-13.39.777c-.39-.78 0-2.723 1.357-3.11l3.497-.97v-38.3l-4.853-.393c-.39-1.75.58-4.277 3.3-4.473l14.367-.967 19.8 30.327v-26.83l-5.047-.58c-.39-2.143 1.163-3.7 3.103-3.89l13.4-.78z"
|
||||
clipRule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgNotionLogo;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as NotionSVG } from "./Notion-logo.svg";
|
||||
import SvgNotionLogo from "./NotionLogo";
|
||||
|
||||
export const NotionIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <NotionSVG ref={ref} {...props} />;
|
||||
return <SvgNotionLogo ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
22
src/frontend/src/icons/OpenAi/OpenAi.jsx
Normal file
22
src/frontend/src/icons/OpenAi/OpenAi.jsx
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
const SvgOpenAi = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
imageRendering="optimizeQuality"
|
||||
shapeRendering="geometricPrecision"
|
||||
textRendering="geometricPrecision"
|
||||
viewBox="0 0 512 512"
|
||||
width="1em"
|
||||
height="1em"
|
||||
{...props}
|
||||
>
|
||||
<rect width={512} height={512} fill="#10A37F" rx={104.187} ry={105.042} />
|
||||
<path
|
||||
fill="#fff"
|
||||
fillRule="nonzero"
|
||||
d="M378.68 230.011a71.432 71.432 0 0 0 3.654-22.541 71.383 71.383 0 0 0-9.783-36.064c-12.871-22.404-36.747-36.236-62.587-36.236a72.31 72.31 0 0 0-15.145 1.604 71.362 71.362 0 0 0-53.37-23.991h-.453l-.17.001c-31.297 0-59.052 20.195-68.673 49.967a71.372 71.372 0 0 0-47.709 34.618 72.224 72.224 0 0 0-9.755 36.226 72.204 72.204 0 0 0 18.628 48.395 71.395 71.395 0 0 0-3.655 22.541 71.388 71.388 0 0 0 9.783 36.064 72.187 72.187 0 0 0 77.728 34.631 71.375 71.375 0 0 0 53.374 23.992H271l.184-.001c31.314 0 59.06-20.196 68.681-49.995a71.384 71.384 0 0 0 47.71-34.619 72.107 72.107 0 0 0 9.736-36.194 72.201 72.201 0 0 0-18.628-48.394l-.003-.004zM271.018 380.492h-.074a53.576 53.576 0 0 1-34.287-12.423 44.928 44.928 0 0 0 1.694-.96l57.032-32.943a9.278 9.278 0 0 0 4.688-8.06v-80.459l24.106 13.919a.859.859 0 0 1 .469.661v66.586c-.033 29.604-24.022 53.619-53.628 53.679zm-115.329-49.257a53.563 53.563 0 0 1-7.196-26.798c0-3.069.268-6.146.79-9.17.424.254 1.164.706 1.695 1.011l57.032 32.943a9.289 9.289 0 0 0 9.37-.002l69.63-40.205v27.839l.001.048a.864.864 0 0 1-.345.691l-57.654 33.288a53.791 53.791 0 0 1-26.817 7.17 53.746 53.746 0 0 1-46.506-26.818v.003zm-15.004-124.506a53.5 53.5 0 0 1 27.941-23.534c0 .491-.028 1.361-.028 1.965v65.887l-.001.054a9.27 9.27 0 0 0 4.681 8.053l69.63 40.199-24.105 13.919a.864.864 0 0 1-.813.074l-57.66-33.316a53.746 53.746 0 0 1-26.805-46.5 53.787 53.787 0 0 1 7.163-26.798l-.003-.003zm198.055 46.089-69.63-40.204 24.106-13.914a.863.863 0 0 1 .813-.074l57.659 33.288a53.71 53.71 0 0 1 26.835 46.491c0 22.489-14.033 42.612-35.133 50.379v-67.857c.003-.025.003-.051.003-.076a9.265 9.265 0 0 0-4.653-8.033zm23.993-36.111a81.919 81.919 0 0 0-1.694-1.01l-57.032-32.944a9.31 9.31 0 0 0-4.684-1.266 9.31 9.31 0 0 0-4.684 1.266l-69.631 40.205v-27.839l-.001-.048c0-.272.129-.528.346-.691l57.654-33.26a53.696 53.696 0 0 1 26.816-7.177c29.644 0 53.684 24.04 53.684 53.684a53.91 53.91 0 0 1-.774 9.077v.003zm-150.831 49.618-24.111-13.919a.859.859 0 0 1-.469-.661v-66.587c.013-29.628 24.053-53.648 53.684-53.648a53.719 53.719 0 0 1 34.349 12.426c-.434.237-1.191.655-1.694.96l-57.032 32.943a9.272 9.272 0 0 0-4.687 8.057v.053l-.04 80.376zm13.095-28.233 31.012-17.912 31.012 17.9v35.812l-31.012 17.901-31.012-17.901v-35.8z"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgOpenAi;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as OpenAiSVG } from "./openAI.svg";
|
||||
import SvgOpenAi from "./OpenAi";
|
||||
|
||||
export const OpenAiIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <OpenAiSVG ref={ref} {...props} />;
|
||||
return <SvgOpenAi ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
133
src/frontend/src/icons/Pinecone/PineconeLogo.jsx
Normal file
133
src/frontend/src/icons/Pinecone/PineconeLogo.jsx
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
const SvgPineconeLogo = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="1em"
|
||||
height="1em"
|
||||
fill="none"
|
||||
viewBox="0 0 32 35"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
fill="#000"
|
||||
d="M13.855 34.296c1.077 0 1.95-.85 1.95-1.9 0-1.05-.873-1.901-1.95-1.901-1.076 0-1.95.85-1.95 1.9 0 1.05.874 1.901 1.95 1.901Z"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeWidth={2.118}
|
||||
d="m18.414 7.197.837-4.537"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2.118}
|
||||
d="m22.266 5.585-2.92-3.474-3.971 2.262"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeWidth={2.118}
|
||||
d="m14.92 26.553.814-4.536"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2.118}
|
||||
d="m18.773 24.93-2.943-3.463-3.96 2.274"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeWidth={2.118}
|
||||
d="m16.608 17.2.813-4.537"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2.118}
|
||||
d="m20.459 15.58-2.931-3.452-3.96 2.262"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeWidth={2.01}
|
||||
d="m8.329 26.155-3.577 2.426"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2.01}
|
||||
d="M8.544 30.087 4.32 28.873l.31-4.28"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeWidth={2.01}
|
||||
d="m21.321 28.43 2.489 3.498"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2.01}
|
||||
d="m19.718 32.045 4.39.291 1.245-4.092"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeWidth={2.058}
|
||||
d="m25.4 21.33 4.378.77"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2.058}
|
||||
d="m26.907 25.072 3.398-2.88-2.142-3.836"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeWidth={2.058}
|
||||
d="m24.12 12.861 3.9-2.098"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2.058}
|
||||
d="m24.336 8.84 4.15 1.679-.777 4.303"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeWidth={2.058}
|
||||
d="m6.916 18.157-4.39-.747"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2.058}
|
||||
d="M4.177 21.165 2 17.328l3.362-2.892"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeWidth={2.058}
|
||||
d="M11.08 10.613 8.149 7.348"
|
||||
/>
|
||||
<path
|
||||
stroke="#000"
|
||||
strokeLinecap="square"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2.058}
|
||||
d="m12.29 6.775-4.487.187-.79 4.303"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgPineconeLogo;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as PineconeSVG } from "./pinecone_logo.svg";
|
||||
import SvgPineconeLogo from "./PineconeLogo";
|
||||
|
||||
export const PineconeIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <PineconeSVG ref={ref} {...props} />;
|
||||
return <SvgPineconeLogo ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
76
src/frontend/src/icons/PowerPoint/PowerPoint.jsx
Normal file
76
src/frontend/src/icons/PowerPoint/PowerPoint.jsx
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
const SvgPowerPoint = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlSpace="preserve"
|
||||
viewBox="0 0 1919.95 1786"
|
||||
width="1em"
|
||||
height="1em"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
fill="#ED6C47"
|
||||
d="M1160.9 982.3 1026.95 0h-10.002C529.872 1.422 135.372 395.922 133.95 882.998V893l1026.95 89.3z"
|
||||
/>
|
||||
<path
|
||||
fill="#FF8F6B"
|
||||
d="M1036.952 0h-10.002v893l446.5 178.6 446.5-178.6v-10.002C1918.528 395.922 1524.028 1.422 1036.952 0z"
|
||||
/>
|
||||
<path
|
||||
fill="#D35230"
|
||||
d="M1919.95 893v9.823c-1.398 487.185-395.992 881.779-883.177 883.177h-19.646c-487.185-1.398-881.779-395.992-883.177-883.177V893h1786z"
|
||||
/>
|
||||
<path
|
||||
d="M1071.6 438.909v952.831c-.222 33.109-20.286 62.852-50.901 75.458a79.127 79.127 0 0 1-30.809 6.251H344.698c-12.502-14.288-24.557-29.469-35.72-44.65A875.768 875.768 0 0 1 133.95 902.822v-19.646a873.128 873.128 0 0 1 143.773-481.327c9.823-15.181 20.092-30.362 31.255-44.65H989.89c44.986.341 81.37 36.725 81.71 81.71z"
|
||||
opacity={0.1}
|
||||
/>
|
||||
<path
|
||||
d="M1026.95 483.56v952.831a79.122 79.122 0 0 1-6.251 30.808c-12.606 30.615-42.35 50.679-75.459 50.901H385.329a763.717 763.717 0 0 1-40.632-44.65c-12.502-14.288-24.557-29.469-35.72-44.65a875.77 875.77 0 0 1-175.028-525.977v-19.646A873.128 873.128 0 0 1 277.722 401.85H945.24c44.986.34 81.37 36.724 81.71 81.71z"
|
||||
opacity={0.2}
|
||||
/>
|
||||
<path
|
||||
d="M1026.95 483.56v863.531c-.34 44.985-36.724 81.369-81.709 81.71H308.978A875.77 875.77 0 0 1 133.95 902.824v-19.646a873.128 873.128 0 0 1 143.773-481.327H945.24c44.986.339 81.37 36.723 81.71 81.709z"
|
||||
opacity={0.2}
|
||||
/>
|
||||
<path
|
||||
d="M982.3 483.56v863.531c-.34 44.985-36.724 81.369-81.709 81.71H308.978A875.77 875.77 0 0 1 133.95 902.824v-19.646a873.128 873.128 0 0 1 143.773-481.327H900.59c44.986.339 81.37 36.723 81.71 81.709z"
|
||||
opacity={0.2}
|
||||
/>
|
||||
<linearGradient
|
||||
id="PowerPoint_svg__a"
|
||||
x1={170.645}
|
||||
x2={811.655}
|
||||
y1={1450.101}
|
||||
y2={339.899}
|
||||
gradientTransform="matrix(1 0 0 -1 0 1788)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
>
|
||||
<stop
|
||||
offset={0}
|
||||
style={{
|
||||
stopColor: "#ca4c28",
|
||||
}}
|
||||
/>
|
||||
<stop
|
||||
offset={0.5}
|
||||
style={{
|
||||
stopColor: "#c5401e",
|
||||
}}
|
||||
/>
|
||||
<stop
|
||||
offset={1}
|
||||
style={{
|
||||
stopColor: "#b62f14",
|
||||
}}
|
||||
/>
|
||||
</linearGradient>
|
||||
<path
|
||||
fill="url(#PowerPoint_svg__a)"
|
||||
d="M81.843 401.85h818.613c45.201 0 81.843 36.643 81.843 81.843v818.613c0 45.201-36.643 81.844-81.843 81.844H81.843c-45.2 0-81.843-36.643-81.843-81.843V483.693c0-45.2 36.643-81.843 81.843-81.843z"
|
||||
/>
|
||||
<path
|
||||
fill="#FFF"
|
||||
d="M500.08 620.144a224.99 224.99 0 0 1 149.042 43.668 156.272 156.272 0 0 1 51.883 126.493 176.015 176.015 0 0 1-25.584 94.524 170.963 170.963 0 0 1-72.646 64.207 246.66 246.66 0 0 1-109.259 22.95H389.973v192.441H283.929V620.144H500.08zM389.884 888.848h91.265a118.501 118.501 0 0 0 80.683-24.066 89.3 89.3 0 0 0 27.281-70.413c0-59.98-34.857-89.97-104.57-89.97h-94.658v184.449z"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgPowerPoint;
|
||||
63
src/frontend/src/icons/QDrant/QDrant.jsx
Normal file
63
src/frontend/src/icons/QDrant/QDrant.jsx
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
const SvgQDrant = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="168.419 120.023 131.984 152.407"
|
||||
width="1em"
|
||||
height="1em"
|
||||
{...props}
|
||||
>
|
||||
<defs>
|
||||
<linearGradient
|
||||
id="QDrant_svg__a"
|
||||
x1={62.128}
|
||||
x2={41.202}
|
||||
y1={105.54}
|
||||
y2={105.54}
|
||||
gradientTransform="translate(168.42 120.023)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
>
|
||||
<stop offset={0} stopColor="#FF3364" />
|
||||
<stop offset={1} stopColor="#C91540" stopOpacity={0} />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g fillRule="evenodd" clipRule="evenodd">
|
||||
<path
|
||||
fill="#24386c"
|
||||
d="m272.21 260.113-3.038-83.784-5.504-22.089 36.735 3.889v101.35l-22.44 12.95z"
|
||||
/>
|
||||
<path
|
||||
fill="#7589be"
|
||||
d="m300.4 158.123-22.44 12.96-46.308-10.158-54.203 22.069-9.03-24.871 32.99-19.05 33-19.05 32.99 19.05z"
|
||||
/>
|
||||
<path
|
||||
fill="#b2bfe8"
|
||||
d="m168.42 158.123 22.44 12.96 13.008 38.686 43.921 35.142-13.378 27.512-33-19.051-32.99-19.05v-76.2"
|
||||
/>
|
||||
<path
|
||||
fill="#24386c"
|
||||
d="m249.288 224.583-14.877 21.932v25.91l21.11-12.18 10.877-16.242"
|
||||
/>
|
||||
<path
|
||||
fill="#7589be"
|
||||
d="m234.42 220.613-21.119-36.565 4.55-12.119 17.292-8.384 20.378 20.504z"
|
||||
/>
|
||||
<path
|
||||
fill="#b2bfe8"
|
||||
d="m213.301 184.045 21.11 12.18v24.38l-19.524.84-11.81-15.08 10.224-22.32"
|
||||
/>
|
||||
<path
|
||||
fill="#24386c"
|
||||
d="m234.411 196.223 21.11-12.179 14.367 23.922-17.386 14.365-18.09-1.727z"
|
||||
/>
|
||||
<path
|
||||
fill="#dc244c"
|
||||
d="m255.521 260.243 22.44 12.181v-101.34l-21.78-12.57-21.77-12.57-21.78 12.57-21.77 12.57v50.289l21.77 12.57 21.78 12.571 21.11-12.191zm0-51.83-21.11 12.19-21.11-12.19v-24.37l21.11-12.19 21.11 12.19v24.37"
|
||||
/>
|
||||
</g>
|
||||
<path
|
||||
fill="url(#QDrant_svg__a)"
|
||||
d="M234.421 246.523v-25.914l-21-12.086v25.871l21 12.129Z"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgQDrant;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as QDrantSVG } from "./QDrant.svg";
|
||||
import SvgQDrant from "./QDrant";
|
||||
|
||||
export const QDrantIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <QDrantSVG ref={ref} {...props} />;
|
||||
return <SvgQDrant ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
9
src/frontend/src/icons/ReadTheDocs/ReadthedocsioIcon.jsx
Normal file
9
src/frontend/src/icons/ReadTheDocs/ReadthedocsioIcon.jsx
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
const SvgReadthedocsioIcon = (props) => (
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" {...props}>
|
||||
<path
|
||||
fill="#32322a"
|
||||
d="M28.81 30.85a1.534 1.534 0 0 0-.208 3.014s3.736 1.25 10.097 1.763c5.108.417 10.9-.353 10.9-.353a1.534 1.534 0 1 0-.385-3.013s-5.666.705-10.276.32c-6.07-.48-9.385-1.603-9.385-1.603-.244-.06-.5-.06-.742 0zm0-7.6a1.535 1.535 0 0 0-.208 2.981s3.736 1.25 10.097 1.763c5.108.417 10.9-.353 10.9-.353.544-.07 1-.423 1.223-.928s.14-1.086-.193-1.523-.87-.663-1.416-.594c0 0-5.666.705-10.276.32-6.07-.48-9.385-1.603-9.385-1.603-.244-.06-.5-.06-.742 0zm0-7.604a1.534 1.534 0 0 0-.208 3.014s3.736 1.218 10.097 1.763c5.108.417 10.9-.353 10.9-.353.544-.07 1-.423 1.223-.928s.14-1.086-.193-1.523-.87-.663-1.416-.594c0 0-5.666.705-10.276.32-6.07-.48-9.385-1.603-9.385-1.603-.244-.06-.5-.06-.742 0zm0-7.604a1.534 1.534 0 0 0-.208 3.014s3.736 1.25 10.097 1.763c5.108.417 10.9-.353 10.9-.353a1.534 1.534 0 1 0-.385-3.013s-5.666.705-10.276.32c-6.07-.48-9.385-1.603-9.385-1.603-.244-.06-.5-.06-.742 0zM18.16.024c-8 0-10.966 2.5-10.966 2.5v59.667s2.907-2.5 12.265-2.116 11.288 3.664 22.79 3.895c11.5.32 14.392-1.763 14.392-1.763l.167-60.828S51.63 2.855 41.558 2.92C31.486 2.92 29.065.354 19.82.034a42.3 42.3 0 0 0-1.657-.029zm6.685 3.895s4.84 1.603 13.784 2.052c7.558.385 15.137-.737 15.137-.737v54.06s-3.836 2.02-13.425 1.314c-7.43-.545-15.607-3.344-15.607-3.344zm-4.668 1.4a1.554 1.554 0 1 1 0 3.11s-2.504.013-4.033.32c-2.567.32-4.31 1.186-4.31 1.186a1.542 1.542 0 0 1-2.36-1.405 1.546 1.546 0 0 1 .926-1.318s2.273-1.186 5.442-1.507c1.83-.32 4.337-.32 4.337-.32zm-1.492 7.623a26.95 26.95 0 0 1 1.492 0 1.546 1.546 0 0 1 0 3.08s-2.504.013-4.033.32c-2.567.32-4.31 1.186-4.31 1.186a1.544 1.544 0 0 1-1.436-2.726s2.273-1.218 5.442-1.507c.916 0 2 0 2.845-.32zm1.492 7.597a1.554 1.554 0 1 1 0 3.11s-2.504-.016-4.033 0c-2.567.32-4.31 1.186-4.31 1.186a1.544 1.544 0 0 1-1.436-2.726s2.273-1.186 5.442-1.507c1.83-.32 4.337-.32 4.337-.32z"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgReadthedocsioIcon;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as ReadTheDocsSVG } from "./readthedocsio-icon.svg";
|
||||
import SvgReadthedocsioIcon from "./ReadthedocsioIcon";
|
||||
|
||||
export const ReadTheDocsIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <ReadTheDocsSVG ref={ref} {...props} />;
|
||||
return <SvgReadthedocsioIcon ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
151
src/frontend/src/icons/Searx/SearxLogo.jsx
Normal file
151
src/frontend/src/icons/Searx/SearxLogo.jsx
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
const SvgSearxLogo = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlnsXlink="http://www.w3.org/1999/xlink"
|
||||
width="1em"
|
||||
height="1em"
|
||||
{...props}
|
||||
>
|
||||
<defs>
|
||||
<linearGradient id="Searx_logo_svg__b">
|
||||
<stop
|
||||
offset={0}
|
||||
style={{
|
||||
stopColor: "#fff",
|
||||
stopOpacity: 1,
|
||||
}}
|
||||
/>
|
||||
<stop
|
||||
offset={1}
|
||||
style={{
|
||||
stopColor: "#fff",
|
||||
stopOpacity: 0,
|
||||
}}
|
||||
/>
|
||||
</linearGradient>
|
||||
<linearGradient id="Searx_logo_svg__a">
|
||||
<stop
|
||||
offset={0}
|
||||
style={{
|
||||
stopColor: "#a9a9a9",
|
||||
stopOpacity: 1,
|
||||
}}
|
||||
/>
|
||||
<stop
|
||||
offset={1}
|
||||
style={{
|
||||
stopColor: "#000",
|
||||
stopOpacity: 1,
|
||||
}}
|
||||
/>
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
xlinkHref="#Searx_logo_svg__b"
|
||||
id="Searx_logo_svg__d"
|
||||
x1={120.689}
|
||||
x2={120.689}
|
||||
y1={239.618}
|
||||
y2={602.175}
|
||||
gradientUnits="userSpaceOnUse"
|
||||
/>
|
||||
<radialGradient
|
||||
xlinkHref="#Searx_logo_svg__a"
|
||||
id="Searx_logo_svg__c"
|
||||
cx={294.459}
|
||||
cy={208.38}
|
||||
r={107.581}
|
||||
fx={294.459}
|
||||
fy={208.38}
|
||||
gradientUnits="userSpaceOnUse"
|
||||
/>
|
||||
<filter
|
||||
id="Searx_logo_svg__e"
|
||||
width={1.26}
|
||||
height={1.294}
|
||||
x={-0.13}
|
||||
y={-0.147}
|
||||
colorInterpolationFilters="sRGB"
|
||||
>
|
||||
<feGaussianBlur stdDeviation={6.476} />
|
||||
</filter>
|
||||
</defs>
|
||||
<g transform="translate(-61.72 -34.87)">
|
||||
<path
|
||||
d="M70.523 34.87c-7.12 15.244-10.178 31.78-8.225 48.815 5.016 43.774 41.675 79.325 91.536 95.163-6.626-22.407-5.341-44.936 2.64-65.844-47.738-14.183-81.646-42.809-85.95-78.133zM303.779 36.214c7.12 15.243 10.178 31.78 8.225 48.815-5.016 43.774-41.675 79.324-91.536 95.163 6.626-22.408 5.341-44.937-2.64-65.845 47.738-14.182 81.646-42.808 85.95-78.133z"
|
||||
style={{
|
||||
fill: "#000",
|
||||
fillOpacity: 1,
|
||||
fillRule: "nonzero",
|
||||
stroke: "none",
|
||||
}}
|
||||
/>
|
||||
<path
|
||||
d="M-5.09 259.06h18.416c6.22 0 11.228 16.683 11.228 37.404v172.837c0 20.722-5.007 37.404-11.228 37.404H-5.09c-6.22 0-11.228-16.682-11.228-37.404V296.464c0-20.721 5.008-37.403 11.228-37.403z"
|
||||
style={{
|
||||
fill: "#000",
|
||||
fillOpacity: 1,
|
||||
fillRule: "nonzero",
|
||||
stroke: "none",
|
||||
}}
|
||||
transform="rotate(-49.03)"
|
||||
/>
|
||||
<path
|
||||
d="M402.04 208.38a107.581 107.581 0 1 1-215.162 0 107.581 107.581 0 1 1 215.163 0z"
|
||||
style={{
|
||||
fill: "url(#Searx_logo_svg__c)",
|
||||
fillOpacity: 1,
|
||||
fillRule: "nonzero",
|
||||
stroke: "none",
|
||||
}}
|
||||
transform="translate(-107.076 -60.61)"
|
||||
/>
|
||||
<path
|
||||
d="M233.345 299.293a101.52 101.52 0 1 1-203.04 0 101.52 101.52 0 1 1 203.04 0z"
|
||||
style={{
|
||||
fill: "url(#Searx_logo_svg__d)",
|
||||
fillOpacity: 1,
|
||||
fillRule: "nonzero",
|
||||
stroke: "none",
|
||||
}}
|
||||
transform="matrix(.76866 0 0 .76866 85.803 -82.536)"
|
||||
/>
|
||||
<path
|
||||
d="M210.617 156.357a27.274 27.274 0 1 1-54.548 0 27.274 27.274 0 1 1 54.548 0z"
|
||||
style={{
|
||||
fill: "#1a1a1a",
|
||||
fillOpacity: 1,
|
||||
fillRule: "nonzero",
|
||||
stroke: "none",
|
||||
}}
|
||||
transform="translate(5 -7.143)"
|
||||
/>
|
||||
<path
|
||||
d="M203.546 203.329a5.556 5.556 0 1 1-11.112 0 5.556 5.556 0 1 1 11.112 0z"
|
||||
style={{
|
||||
fill: "#fff",
|
||||
fillOpacity: 1,
|
||||
fillRule: "nonzero",
|
||||
stroke: "none",
|
||||
}}
|
||||
transform="translate(1.485 -63.565)"
|
||||
/>
|
||||
<rect
|
||||
width={2.239}
|
||||
height={159.438}
|
||||
x={19.526}
|
||||
y={337.84}
|
||||
rx={2.867}
|
||||
ry={9.001}
|
||||
style={{
|
||||
fill: "#fff",
|
||||
fillOpacity: 0.82211531,
|
||||
fillRule: "nonzero",
|
||||
stroke: "none",
|
||||
filter: "url(#Searx_logo_svg__e)",
|
||||
}}
|
||||
transform="matrix(.74467 -.84318 .84318 .74467 -35.543 -26.35)"
|
||||
/>
|
||||
</g>
|
||||
</svg>
|
||||
);
|
||||
export default SvgSearxLogo;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as SearxSVG } from "./Searx_logo.svg";
|
||||
import SvgSearxLogo from "./SearxLogo";
|
||||
|
||||
export const SearxIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(
|
||||
(props, ref) => {
|
||||
return <SearxSVG ref={ref} {...props} />;
|
||||
return <SvgSearxLogo ref={ref} {...props} />;
|
||||
}
|
||||
);
|
||||
|
|
|
|||
17
src/frontend/src/icons/Serper/Serper.jsx
Normal file
17
src/frontend/src/icons/Serper/Serper.jsx
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
const SvgSerper = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlSpace="preserve"
|
||||
width="1em"
|
||||
height="1em"
|
||||
viewBox="0 0 48 48"
|
||||
{...props}
|
||||
>
|
||||
<image
|
||||
width={48}
|
||||
height={48}
|
||||
href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAACBjSFJN AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAACGVBMVEUAAACVyvSRzvOPzfSQ zfSRzPSQzfSQzfSQzfSQyPSUyfKRzvOQzfSRzvSQzfOOxvGO0PaQzfSQzfSQzfSTzvWZzP+RzPSQ zfSPzfOA1f+Qy/KPzfSQzfSQzfSPzfSRzfSPzPWPy/iRzfWQzfSRz/GPzfORzvWSzfaPzvaQzPOP zPWQzfWQzfSQzfSQzvSMzPKSzvOPzfSQzfWRzvWQzvWN0PKTzPKQzfOQzfSQzfSAv/+Rz/WQzfWQ zfSPzfOQzfSQzPORzPSPzfSRzPSqqv+QzfWQzfSQzvSQzfSRzfWPzPX///+RzvSQzfSQzPSQzvSL 0f+QzvWSy/WQzfWQzfSQzfSPzfWRzfWRzPWRzPWT0feQzPOQzfOQzPOL0fOPzPORzfSPzfOQzPaQ zfSQzfSPy/KQzfWQzfSQzfSPzPOPz/eQzPSQzvSQzfSQzPSPzvSQzvSQzfWPzvWQzfOQzPSJxOuP zPWQzfSQzvSPz/SV1eqQzPSQzfWPy/OQzfSOzfGQzvSRzfOfv/+PzfSQzfSQzvWQzfWSyO2PzvOQ zfSRzfSRzfSSzvOA//+PzvSOxv+OzfKPzPWQzfSRzPKSzPSQzfSQzfOQzfSOzvWPzfOQzfSSzvSR zfSRzPSW0vCRzPSSzvOQzfOQzvSQzfSIzO6OzfWS2/+RzfSSzPCQzfWQzvWQzfORz/KQzfSRy/WQ zfSQzfSQzfT////309j7AAAAsXRSTlMAGFiQuNnu+Y8XE23KyWwSG/X0jhoFb/KABifQ5aNwSDIi M84lUpY4OZdQZ/z4hxQViWVoxCYox/6KBE/z/WvxbniLdAOVy+jkfxkBXeGmjAuqMa3snntmfash aldVFrC0mTfBqDt64udpIHOl0dRytdxJheMNS9rtMAzPw0DrJL9WCGC8fNsOgkdhpD8CWQk9kuo8 RvvFnzQp+i+7jRFfKsaRdQ9NB/AjTGOYOvZKttg9JvjTAAAAAWJLR0RLaQuFUAAAAAd0SU1FB+cF HgMFK2w+nRoAAANfSURBVEjHhVX5QxJREH6eKGQmiIQheJflgXiRYhalmCRlYWqGZZdHB6WllZra aZaVmZUWppZJduj+h8089mIXcH7Ynfnmm7fvzcybJUQqUdExsXHxCkV8XGxCdCLZRpSqHUyQJO1M jkDfFZPCyEStSQ1D16bpmJCSslsfip++h/UbMoymzKysbJMxw8BCOblyfl5geXX+XjG6ryCwSd1+ Kf9AIeJFxSVSh7lUgZ5CSzBcRtcprwi118oq9FmDIvLo+gerw2RDQ79RIzqvDYDaQ+HzraoFQh1/ cj3NTwQ+IYdprrSsdQQtO4koCcg5ytZXjecV7f+Yqb7BoW4sPy7KgRZPbmuiegyoikre5TzRzJW4 1mXm4YoiAE6ipsTSFPOOUy3irjCc5h12LCt2ogq7hV/JeQZ57tazbe0dWDHHOc5TgjvvBAX7OZ9f 5zxYzZ5As3VdAOMi7+oGqwpQK7wv8ehl2Abfzs4r4EvnrKtYbzOJhlejkA03w1wTLGUPoxZ22wtU D81RhkCBDPSJ0t9/XTg1uQFUDYmFZ5oA3mSYW11hiucF6m1yB54DAjgI5l3LvZABQ+AbJvfh+UAA H47QezGqaRuTTYxM8DwimOxxEZo8IVStY/KxOCAXl5IFEOeTEaHSjR5ZgGRLVNIt9U972JBn0i09 Dz60IC/GpoaxVC8lh5akNUic09CiE5K0YuFeCZzE10FDawo6f4YzXLRw2G0GJ4eZHzGjM6KAN+B9 y33PQVuDNh8/vN6BMS0KmGWY95w+F2g+kgTvAg7Ux8HlEFL5YV60X2zvj0R6gQZgoFg/fab6QgEY i1+40+HNLANFiTepNCgVDNMz2vKVTmJrG+fw4RRYQg3nmmKBj/hmE91p3SQHLy/ibKRqKjJWtHxE f3cRS49f5RtQj0fVRQWM7+j0iXLzY22wtaW13fRTgFaR42UNbQ5aKhJBjMho4Iddbh1OrQgRRhzG 634BqKHjXqMNTdfPonf+lxizYL2ZqoVQ/OUkmt+NYNRCv6GwywZAom+Rrr8hddTUBX6xv/84BdA5 1/2Xwutr8i+P57DZ73V5/2X7/dlDXpeDhRr8JIRUh/uxq0P/2EGafGo53WaPilCg5M4Vq5htXelb ItuIeVKzueVWKNxbmz6P7D9P/gNwmex8k7QhUQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMy0wNS0z MFQwMzowNTo0MyswMDowMLa1rmEAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjMtMDUtMzBUMDM6MDU6 NDMrMDA6MDDH6BbdAAAAKHRFWHRkYXRlOnRpbWVzdGFtcAAyMDIzLTA1LTMwVDAzOjA1OjQzKzAw OjAwkP03AgAAAABJRU5ErkJggg=="
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgSerper;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as SerperSVG } from "./serper.svg";
|
||||
import SvgSerper from "./Serper";
|
||||
|
||||
export const SerperIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <SerperSVG ref={ref} {...props} />;
|
||||
return <SvgSerper ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
29
src/frontend/src/icons/Slack/SlackIcon.jsx
Normal file
29
src/frontend/src/icons/Slack/SlackIcon.jsx
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
const SvgSlackIcon = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 54 54"
|
||||
width="1em"
|
||||
height="1em"
|
||||
{...props}
|
||||
>
|
||||
<g fill="none" fillRule="evenodd">
|
||||
<path
|
||||
fill="#36C5F0"
|
||||
d="M19.712.133a5.381 5.381 0 0 0-5.376 5.387 5.381 5.381 0 0 0 5.376 5.386h5.376V5.52A5.381 5.381 0 0 0 19.712.133m0 14.365H5.376A5.381 5.381 0 0 0 0 19.884a5.381 5.381 0 0 0 5.376 5.387h14.336a5.381 5.381 0 0 0 5.376-5.387 5.381 5.381 0 0 0-5.376-5.386"
|
||||
/>
|
||||
<path
|
||||
fill="#2EB67D"
|
||||
d="M53.76 19.884a5.381 5.381 0 0 0-5.376-5.386 5.381 5.381 0 0 0-5.376 5.386v5.387h5.376a5.381 5.381 0 0 0 5.376-5.387m-14.336 0V5.52A5.381 5.381 0 0 0 34.048.133a5.381 5.381 0 0 0-5.376 5.387v14.364a5.381 5.381 0 0 0 5.376 5.387 5.381 5.381 0 0 0 5.376-5.387"
|
||||
/>
|
||||
<path
|
||||
fill="#ECB22E"
|
||||
d="M34.048 54a5.381 5.381 0 0 0 5.376-5.387 5.381 5.381 0 0 0-5.376-5.386h-5.376v5.386A5.381 5.381 0 0 0 34.048 54m0-14.365h14.336a5.381 5.381 0 0 0 5.376-5.386 5.381 5.381 0 0 0-5.376-5.387H34.048a5.381 5.381 0 0 0-5.376 5.387 5.381 5.381 0 0 0 5.376 5.386"
|
||||
/>
|
||||
<path
|
||||
fill="#E01E5A"
|
||||
d="M0 34.249a5.381 5.381 0 0 0 5.376 5.386 5.381 5.381 0 0 0 5.376-5.386v-5.387H5.376A5.381 5.381 0 0 0 0 34.25m14.336-.001v14.364A5.381 5.381 0 0 0 19.712 54a5.381 5.381 0 0 0 5.376-5.387V34.25a5.381 5.381 0 0 0-5.376-5.387 5.381 5.381 0 0 0-5.376 5.387"
|
||||
/>
|
||||
</g>
|
||||
</svg>
|
||||
);
|
||||
export default SvgSlackIcon;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as SlackSVG } from "./slack-icon.svg";
|
||||
import SvgSlackIcon from "./SlackIcon";
|
||||
|
||||
export const SlackIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(
|
||||
(props, ref) => {
|
||||
return <SlackSVG ref={ref} {...props} />;
|
||||
return <SvgSlackIcon ref={ref} {...props} />;
|
||||
}
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,6 +1 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 122.88 122.78" style="enable-background:new 0 0 122.88 122.78" xml:space="preserve"><style type="text/css"><![CDATA[
|
||||
.st0{fill:#E01E5A;}
|
||||
.st1{fill:#ECB22E;}
|
||||
.st2{fill:#2EB67D;}
|
||||
.st3{fill:#36C5F0;}
|
||||
]]></style><g><path class="st0" d="M25.91,77.62c0,7.14-5.77,12.9-12.9,12.9S0.1,84.75,0.1,77.62c0-7.14,5.77-12.9,12.9-12.9h12.9V77.62 L25.91,77.62z M32.36,77.62c0-7.14,5.77-12.9,12.9-12.9s12.9,5.77,12.9,12.9v32.26c0,7.14-5.77,12.9-12.9,12.9 s-12.9-5.77-12.9-12.9V77.62L32.36,77.62z"/><path class="st3" d="M45.26,25.81c-7.14,0-12.9-5.77-12.9-12.9c0-7.14,5.77-12.9,12.9-12.9s12.9,5.77,12.9,12.9v12.9H45.26 L45.26,25.81z M45.26,32.36c7.14,0,12.9,5.77,12.9,12.9c0,7.14-5.77,12.9-12.9,12.9H12.9C5.77,58.17,0,52.4,0,45.26 c0-7.14,5.77-12.9,12.9-12.9H45.26L45.26,32.36z"/><path class="st2" d="M96.97,45.26c0-7.14,5.77-12.9,12.9-12.9c7.14,0,12.9,5.77,12.9,12.9c0,7.14-5.77,12.9-12.9,12.9h-12.9V45.26 L96.97,45.26z M90.52,45.26c0,7.14-5.77,12.9-12.9,12.9c-7.14,0-12.9-5.77-12.9-12.9V12.9c0-7.14,5.77-12.9,12.9-12.9 c7.14,0,12.9,5.77,12.9,12.9V45.26L90.52,45.26z"/><path class="st1" d="M77.62,96.97c7.14,0,12.9,5.77,12.9,12.9c0,7.14-5.77,12.9-12.9,12.9c-7.14,0-12.9-5.77-12.9-12.9v-12.9H77.62 L77.62,96.97z M77.62,90.52c-7.14,0-12.9-5.77-12.9-12.9c0-7.14,5.77-12.9,12.9-12.9h32.36c7.14,0,12.9,5.77,12.9,12.9 c0,7.14-5.77,12.9-12.9,12.9H77.62L77.62,90.52z"/></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 54 54" id="slack"><g fill="none" fill-rule="evenodd"><path fill="#36C5F0" d="M19.712.133a5.381 5.381 0 0 0-5.376 5.387 5.381 5.381 0 0 0 5.376 5.386h5.376V5.52A5.381 5.381 0 0 0 19.712.133m0 14.365H5.376A5.381 5.381 0 0 0 0 19.884a5.381 5.381 0 0 0 5.376 5.387h14.336a5.381 5.381 0 0 0 5.376-5.387 5.381 5.381 0 0 0-5.376-5.386"></path><path fill="#2EB67D" d="M53.76 19.884a5.381 5.381 0 0 0-5.376-5.386 5.381 5.381 0 0 0-5.376 5.386v5.387h5.376a5.381 5.381 0 0 0 5.376-5.387m-14.336 0V5.52A5.381 5.381 0 0 0 34.048.133a5.381 5.381 0 0 0-5.376 5.387v14.364a5.381 5.381 0 0 0 5.376 5.387 5.381 5.381 0 0 0 5.376-5.387"></path><path fill="#ECB22E" d="M34.048 54a5.381 5.381 0 0 0 5.376-5.387 5.381 5.381 0 0 0-5.376-5.386h-5.376v5.386A5.381 5.381 0 0 0 34.048 54m0-14.365h14.336a5.381 5.381 0 0 0 5.376-5.386 5.381 5.381 0 0 0-5.376-5.387H34.048a5.381 5.381 0 0 0-5.376 5.387 5.381 5.381 0 0 0 5.376 5.386"></path><path fill="#E01E5A" d="M0 34.249a5.381 5.381 0 0 0 5.376 5.386 5.381 5.381 0 0 0 5.376-5.386v-5.387H5.376A5.381 5.381 0 0 0 0 34.25m14.336-.001v14.364A5.381 5.381 0 0 0 19.712 54a5.381 5.381 0 0 0 5.376-5.387V34.25a5.381 5.381 0 0 0-5.376-5.387 5.381 5.381 0 0 0-5.376 5.387"></path></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.2 KiB |
52
src/frontend/src/icons/VertexAI/VertexAi.jsx
Normal file
52
src/frontend/src/icons/VertexAI/VertexAi.jsx
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
const SvgVertexAi = (props) => (
|
||||
<svg viewBox="0 0 32 32" width="1em" height="1em" {...props}>
|
||||
<path
|
||||
fill="#80868b"
|
||||
d="M26.69 18.53a1 1 0 0 0-1.4-.22L16 25.17v.29a1 1 0 1 1 0 1.91v.05a1 1 0 0 0 .6-.19l9.88-7.3a1 1 0 0 0 .21-1.4z"
|
||||
/>
|
||||
<path
|
||||
fill="#9ba0a5"
|
||||
d="M16 27.37a1 1 0 1 1 0-1.91v-.29l-9.29-6.86a1 1 0 0 0-1.4.22 1 1 0 0 0 .21 1.4l9.89 7.3a1 1 0 0 0 .59.19v-.05z"
|
||||
/>
|
||||
<path
|
||||
fill="#606368"
|
||||
d="M16 24.46a2 2 0 1 0 2 2 2 2 0 0 0-2-2zm0 2.91a1 1 0 1 1 1-.95 1 1 0 0 1-1 .95z"
|
||||
/>
|
||||
<path
|
||||
fill="#9ba0a5"
|
||||
d="M8 8.14a1 1 0 0 1-1-1V4.63a1 1 0 1 1 2 0v2.51a1 1 0 0 1-1 1z"
|
||||
/>
|
||||
<circle cx={7.97} cy={16} r={1.01} fill="#9ba0a5" />
|
||||
<circle cx={7.97} cy={13.05} r={1.01} fill="#9ba0a5" />
|
||||
<circle cx={7.97} cy={10.09} r={1.01} fill="#9ba0a5" />
|
||||
<path
|
||||
fill="#606368"
|
||||
d="M24 11.07a1 1 0 0 1-1-1V7.55a1 1 0 0 1 2 0v2.52a1 1 0 0 1-1 1z"
|
||||
/>
|
||||
<circle cx={24.03} cy={16.01} r={1.01} fill="#606368" />
|
||||
<circle cx={24.03} cy={13.02} r={1.01} fill="#606368" />
|
||||
<circle cx={24.03} cy={4.63} r={1.01} fill="#606368" />
|
||||
<path
|
||||
fill="#80868b"
|
||||
d="M16 20a1 1 0 0 1-1-1v-2.54a1 1 0 0 1 2 0V19a1 1 0 0 1-1 1z"
|
||||
/>
|
||||
<circle cx={16} cy={21.93} r={1.01} fill="#80868b" />
|
||||
<circle cx={16} cy={13.51} r={1.01} fill="#80868b" />
|
||||
<circle cx={16} cy={10.56} r={1.01} fill="#80868b" />
|
||||
<path
|
||||
fill="#606368"
|
||||
d="M20 14.05a1 1 0 0 1-1-1v-2.51a1 1 0 1 1 2 0v2.51a1 1 0 0 1-1 1z"
|
||||
/>
|
||||
<circle cx={20.02} cy={7.58} r={1.01} fill="#606368" />
|
||||
<circle cx={20.02} cy={18.92} r={1.01} fill="#606368" />
|
||||
<circle cx={20.02} cy={15.97} r={1.01} fill="#606368" />
|
||||
<circle cx={11.98} cy={18.92} r={1.01} fill="#9ba0a5" />
|
||||
<circle cx={11.98} cy={10.56} r={1.01} fill="#9ba0a5" />
|
||||
<circle cx={11.98} cy={7.58} r={1.01} fill="#9ba0a5" />
|
||||
<path
|
||||
fill="#9ba0a5"
|
||||
d="M12 17a1 1 0 0 1-1-1v-2.54a1 1 0 0 1 2 0V16a1 1 0 0 1-1 1z"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
export default SvgVertexAi;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import React, { forwardRef } from "react";
|
||||
import { ReactComponent as VertexAISVG } from "./vertex_ai.svg";
|
||||
import SvgVertexAi from "./VertexAi";
|
||||
|
||||
export const VertexAIIcon = forwardRef<
|
||||
SVGSVGElement,
|
||||
React.PropsWithChildren<{}>
|
||||
>((props, ref) => {
|
||||
return <VertexAISVG ref={ref} {...props} />;
|
||||
return <SvgVertexAi ref={ref} {...props} />;
|
||||
});
|
||||
|
|
|
|||
357
src/frontend/src/icons/Weaviate/Weaviate.jsx
Normal file
357
src/frontend/src/icons/Weaviate/Weaviate.jsx
Normal file
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue