[autofix.ci] apply automated fixes

This commit is contained in:
autofix-ci[bot]
2026-03-20 14:36:06 +00:00
committed by GitHub
parent 55d537dd61
commit d51825d74c
35 changed files with 224 additions and 96 deletions

View File

@ -1,8 +1,6 @@
import type { UseMutationResult } from "@tanstack/react-query";
import { cloneDeep, debounce } from "lodash";
import {
SAVE_DEBOUNCE_TIME,
} from "@/constants/constants";
import { SAVE_DEBOUNCE_TIME } from "@/constants/constants";
import i18n from "../../i18n";
import type { APIClassType, ResponseErrorDetailAPI } from "@/types/api";
import { updateHiddenOutputs } from "./update-hidden-outputs";
@ -77,7 +75,10 @@ export const mutateTemplate = async (
const error = e as ResponseErrorDetailAPI;
setErrorData({
title: i18n.t("input.titleErrorUpdatingComponent"),
list: [error.response?.data?.detail || i18n.t("input.errorUpdatingComponent")],
list: [
error.response?.data?.detail ||
i18n.t("input.errorUpdatingComponent"),
],
});
}
},

View File

@ -79,7 +79,9 @@ export const AccountMenu = () => {
)}
>
{version}{" "}
{isLatestVersion ? t("account.latest") : t("account.updateAvailable")}
{isLatestVersion
? t("account.latest")
: t("account.updateAvailable")}
</div>
</div>
</div>

View File

@ -36,7 +36,9 @@ function CsvOutputComponent({
</div>
<div className="align-center flex w-full justify-center">
<div className="langflow-chat-desc align-center flex justify-center px-6 py-8">
<div className="langflow-chat-desc-span">{t("output.csvError")}</div>
<div className="langflow-chat-desc-span">
{t("output.csvError")}
</div>
</div>
</div>
</div>
@ -87,7 +89,9 @@ function CsvOutputComponent({
</div>
<div className="align-center flex w-full justify-center">
<div className="langflow-chat-desc align-center flex justify-center px-6 py-8">
<div className="langflow-chat-desc-span">{t("output.csvNoData")}</div>
<div className="langflow-chat-desc-span">
{t("output.csvNoData")}
</div>
</div>
</div>
</div>
@ -100,7 +104,9 @@ function CsvOutputComponent({
</div>
<div className="align-center flex w-full justify-center">
<div className="langflow-chat-desc align-center flex justify-center px-6 py-8">
<div className="langflow-chat-desc-span">{t("output.csvError")}</div>
<div className="langflow-chat-desc-span">
{t("output.csvError")}
</div>
</div>
</div>
</div>

View File

@ -81,7 +81,9 @@ export const HeaderButtons = ({
<IconComponent name="PanelLeftClose" className="h-4 w-4" />
</SidebarTrigger>
<div className="flex-1 text-sm font-medium">{t("sidebar.projects")}</div>
<div className="flex-1 text-sm font-medium">
{t("sidebar.projects")}
</div>
<div className="flex items-center gap-1">
<UploadFolderButton
onClick={handleUploadFlowsToFolder}

View File

@ -41,7 +41,11 @@ export const SelectOptions = ({
}
value=""
>
<ShadTooltip content={t("folder.options")} side="right" styleClasses="z-50">
<ShadTooltip
content={t("folder.options")}
side="right"
styleClasses="z-50"
>
<SelectTrigger
className="w-fit"
id={`options-trigger-${item.name}`}

View File

@ -41,17 +41,13 @@ const TableComponent = forwardRef<
TableComponentProps
>(
(
{
alertTitle,
alertDescription,
displayEmptyAlert = true,
...props
},
{ alertTitle, alertDescription, displayEmptyAlert = true, ...props },
ref,
) => {
const { t } = useTranslation();
const resolvedAlertTitle = alertTitle ?? t("table.noDataTitle");
const resolvedAlertDescription = alertDescription ?? t("table.noDataMessage");
const resolvedAlertDescription =
alertDescription ?? t("table.noDataMessage");
const isSingleToggleRowEditable = (
colField: string,
rowData: any,

View File

@ -8,11 +8,15 @@ export default function ErrorComponent(): JSX.Element {
<div className="chat-alert-box">
<span className="flex gap-2">
<IconComponent name="FileX2" />
<span className="langflow-chat-span">{t("output.pdfLoadErrorTitle")}</span>
<span className="langflow-chat-span">
{t("output.pdfLoadErrorTitle")}
</span>
</span>
<br />
<div className="langflow-chat-desc">
<span className="langflow-chat-desc-span">{t("output.pdfCheckFlow")} </span>
<span className="langflow-chat-desc-span">
{t("output.pdfCheckFlow")}{" "}
</span>
</div>
</div>
</div>

View File

@ -10,7 +10,9 @@ export default function NoDataPdf(): JSX.Element {
</span>
<br />
<div className="langflow-chat-desc">
<span className="langflow-chat-desc-span">{t("output.pdfLoadError")} </span>
<span className="langflow-chat-desc-span">
{t("output.pdfLoadError")}{" "}
</span>
</div>
</div>
</div>

View File

@ -381,4 +381,4 @@
"table.noColumnTitle": "Keine Spaltendefinitionen",
"table.noDataMessage": "Hoppla! Es scheint, als gäbe es derzeit keine Daten, die angezeigt werden könnten. Bitte versuchen Sie es später noch einmal.",
"table.noDataTitle": "Keine Daten verfügbar"
}
}

View File

@ -381,4 +381,4 @@
"table.noColumnTitle": "No hay definiciones de columnas",
"table.noDataMessage": "¡Ups! Parece que no hay datos que mostrar en este momento. Vuelve a intentarlo más tarde.",
"table.noDataTitle": "No hay datos disponibles"
}
}

View File

@ -381,4 +381,4 @@
"table.noColumnTitle": "Aucune définition de colonne",
"table.noDataMessage": "Oups ! Il semble qu'il n'y ait aucune donnée à afficher pour le moment. Veuillez revenir plus tard.",
"table.noDataTitle": "Aucune donnée disponible"
}
}

View File

@ -381,4 +381,4 @@
"table.noColumnTitle": "列の定義がありません",
"table.noDataMessage": "申し訳ありません。 現在、表示するデータがないようです。 後ほど再度ご確認ください。",
"table.noDataTitle": "使用可能なデータがありません"
}
}

View File

@ -381,4 +381,4 @@
"table.noColumnTitle": "Sem definições de colunas",
"table.noDataMessage": "Ops! Parece que não há dados para exibir no momento. Por favor, volte mais tarde.",
"table.noDataTitle": "Nenhum dado disponível"
}
}

View File

@ -381,4 +381,4 @@
"table.noColumnTitle": "没有列定义",
"table.noDataMessage": "糟糕! 目前似乎没有数据可显示。 请稍后再试。",
"table.noDataTitle": "无可用数据"
}
}

View File

@ -72,7 +72,11 @@ export const ChatViewWrapper = ({
playgroundPage ? "right-2 top-4" : "absolute right-12 top-2 h-8",
)}
>
<ShadTooltip side="bottom" styleClasses="z-50" content={t("modal.io.newChat")}>
<ShadTooltip
side="bottom"
styleClasses="z-50"
content={t("modal.io.newChat")}
>
<Button
className="mr-2 h-[32px] w-[32px] hover:bg-secondary-hover"
variant="ghost"

View File

@ -24,7 +24,9 @@ export const useFileHandler = (currentFlowId: string) => {
const fileExtension = file.name.split(".").pop()?.toLowerCase();
if (file.size > maxFileSizeUpload) {
setErrorData({
title: t("errors.fileTooLarge", { maxSizeMB: formatFileSize(maxFileSizeUpload) }),
title: t("errors.fileTooLarge", {
maxSizeMB: formatFileSize(maxFileSizeUpload),
}),
});
return;
}

View File

@ -431,7 +431,9 @@ export default function IOModal({
className="w-full !rounded-xl shadow-lg"
>
<LangflowLogoColor />
<div className="text-sm">{t("modal.io.builtWithLangflow")}</div>
<div className="text-sm">
{t("modal.io.builtWithLangflow")}
</div>
</Button>
</div>
)}

View File

@ -145,7 +145,9 @@ export default function ApiModal({
name="SlidersHorizontal"
className="h-3.5 w-3.5"
/>
<span>{t("modal.api.inputSchema")} ({Object.keys(tweaks)?.length}) </span>
<span>
{t("modal.api.inputSchema")} ({Object.keys(tweaks)?.length}){" "}
</span>
</Button>
<Separator orientation="vertical" className="ml-2 h-8" />
</div>
@ -179,7 +181,9 @@ export default function ApiModal({
</span>
{!validEndpointName && (
<span className="edit-flow-span">
{t("modal.api.endpointValidation", { maxLength: MAX_LENGTH })}
{t("modal.api.endpointValidation", {
maxLength: MAX_LENGTH,
})}
</span>
)}
</div>
@ -198,7 +202,9 @@ export default function ApiModal({
)}
<div className="flex flex-1 flex-col gap-2 overflow-hidden">
<div className="flex flex-col gap-1">
<span className="shrink-0 text-sm font-medium">{t("modal.api.exposeApi")}</span>
<span className="shrink-0 text-sm font-medium">
{t("modal.api.exposeApi")}
</span>
<span className="text-mmd text-muted-foreground">
{t("modal.api.exposeApiDescription")}
</span>

View File

@ -8,9 +8,7 @@ import ShadTooltip from "../../components/common/shadTooltipComponent";
import { Badge } from "../../components/ui/badge";
import { Button } from "../../components/ui/button";
import { Textarea } from "../../components/ui/textarea";
import {
MAX_WORDS_HIGHLIGHT,
} from "../../constants/constants";
import { MAX_WORDS_HIGHLIGHT } from "../../constants/constants";
import useAlertStore from "../../stores/alertStore";
import { PromptModalType } from "../../types/components";
import { handleKeyDown } from "../../utils/reactflowUtils";

View File

@ -38,7 +38,9 @@ export default function QueryModal({
<BaseModal.Header>
<div className="flex w-full items-start gap-3">
<div className="flex">
<span data-testid="modal-title">{title ?? t("dialog.editText")}</span>
<span data-testid="modal-title">
{title ?? t("dialog.editText")}
</span>
</div>
</div>
</BaseModal.Header>

View File

@ -156,7 +156,9 @@ export default function SecretKeyModal({
</BaseModal.Content>
<BaseModal.Footer
submit={{
label: renderKey ? t("modal.secretKey.doneButton") : (modalConfigProps?.buttonText ?? ""),
label: renderKey
? t("modal.secretKey.doneButton")
: (modalConfigProps?.buttonText ?? ""),
dataTestId: "secret_key_modal_submit_button",
}}
/>

View File

@ -54,7 +54,9 @@ export default function LoginAdminPage() {
<div className="flex h-full w-full flex-col items-center justify-center bg-muted">
<div className="flex w-72 flex-col items-center justify-center gap-2">
<LangflowLogo title="Langflow logo" className="h-10 w-10 scale-[1.5]" />
<span className="mb-6 text-2xl font-semibold text-primary">{t("auth.adminTitle")}</span>
<span className="mb-6 text-2xl font-semibold text-primary">
{t("auth.adminTitle")}
</span>
<Input
onChange={({ target: { value } }) => {
handleInput({ target: { name: "username", value } });

View File

@ -323,12 +323,24 @@ export default function AdminPage() {
}
>
<TableRow>
<TableHead className="h-10">{t("admin.columnId")}</TableHead>
<TableHead className="h-10">{t("admin.columnUsername")}</TableHead>
<TableHead className="h-10">{t("admin.columnActive")}</TableHead>
<TableHead className="h-10">{t("admin.columnSuperuser")}</TableHead>
<TableHead className="h-10">{t("admin.columnCreatedAt")}</TableHead>
<TableHead className="h-10">{t("admin.columnUpdatedAt")}</TableHead>
<TableHead className="h-10">
{t("admin.columnId")}
</TableHead>
<TableHead className="h-10">
{t("admin.columnUsername")}
</TableHead>
<TableHead className="h-10">
{t("admin.columnActive")}
</TableHead>
<TableHead className="h-10">
{t("admin.columnSuperuser")}
</TableHead>
<TableHead className="h-10">
{t("admin.columnCreatedAt")}
</TableHead>
<TableHead className="h-10">
{t("admin.columnUpdatedAt")}
</TableHead>
<TableHead className="h-10 w-[100px] text-right"></TableHead>
</TableRow>
</TableHeader>
@ -350,7 +362,9 @@ export default function AdminPage() {
</TableCell>
<TableCell className="relative left-1 truncate py-2 text-align-last-left">
{user.id === userData?.id ? (
<ShadTooltip content={t("admin.cannotDeactivateSelf")}>
<ShadTooltip
content={t("admin.cannotDeactivateSelf")}
>
<div className="flex w-fit cursor-not-allowed opacity-50">
<CheckBoxDiv checked={user.is_active} />
</div>
@ -407,9 +421,7 @@ export default function AdminPage() {
}}
>
<ConfirmationModal.Content>
<span>
{t("admin.editUserConfirmContent")}
</span>
<span>{t("admin.editUserConfirmContent")}</span>
</ConfirmationModal.Content>
<ConfirmationModal.Trigger>
<div className="flex w-fit">
@ -446,7 +458,10 @@ export default function AdminPage() {
handleEditUser(user.id, editUser);
}}
>
<ShadTooltip content={t("admin.editTitle")} side="top">
<ShadTooltip
content={t("admin.editTitle")}
side="top"
>
<IconComponent
name="Pencil"
className="h-4 w-4 cursor-pointer"

View File

@ -6,10 +6,7 @@ import useHandleNodeClass from "@/CustomNodes/hooks/use-handle-node-class";
import { AssistantButton } from "@/components/common/assistant";
import IconComponent from "@/components/common/genericIconComponent";
import ShadTooltip from "@/components/common/shadTooltipComponent";
import {
FLEX_VIEW_TYPES,
ICON_STROKE_WIDTH,
} from "@/constants/constants";
import { FLEX_VIEW_TYPES, ICON_STROKE_WIDTH } from "@/constants/constants";
import {
CustomParameterComponent,
CustomParameterLabel,

View File

@ -22,7 +22,8 @@ const NoResultsMessage = ({
const { t } = useTranslation();
const resolvedMessage = message ?? t("sidebar.noComponentsFound");
const resolvedClearSearchText = clearSearchText ?? t("sidebar.clearSearch");
const resolvedAdditionalText = additionalText ?? t("sidebar.tryDifferentQuery");
const resolvedAdditionalText =
additionalText ?? t("sidebar.tryDifferentQuery");
return (
<div className="flex h-full flex-col relative">
{ENABLE_NEW_SIDEBAR && setShowConfig && (

View File

@ -46,7 +46,10 @@ export const SidebarHeaderComponent = memo(function SidebarHeaderComponent({
</h3>
<DisclosureTrigger>
<div>
<ShadTooltip content={t("sidebar.componentSettings")} styleClasses="z-50">
<ShadTooltip
content={t("sidebar.componentSettings")}
styleClasses="z-50"
>
<Button
variant={showConfig ? "ghostActive" : "ghost"}
size="iconMd"

View File

@ -85,7 +85,8 @@ export default function LoginPage(): JSX.Element {
<div className="mb-3 w-full">
<Form.Field name="username">
<Form.Label className="data-[invalid]:label-invalid">
{t("auth.usernameLabel")} <span className="font-medium text-destructive">*</span>
{t("auth.usernameLabel")}{" "}
<span className="font-medium text-destructive">*</span>
</Form.Label>
<Form.Control asChild>
@ -109,7 +110,8 @@ export default function LoginPage(): JSX.Element {
<div className="mb-3 w-full">
<Form.Field name="password">
<Form.Label className="data-[invalid]:label-invalid">
{t("auth.passwordLabel")} <span className="font-medium text-destructive">*</span>
{t("auth.passwordLabel")}{" "}
<span className="font-medium text-destructive">*</span>
</Form.Label>
<InputComponent

View File

@ -250,7 +250,11 @@ const HomePage = ({ type }: { type: "flows" | "components" | "mcp" }) => {
return (
<CardsWrapComponent
onFileDrop={flowType === "mcp" ? undefined : handleFileDrop}
dragMessage={isEmptyFolder ? t("home.dragFlowsOrComponents") : t("home.dragFlowType", { flowType })}
dragMessage={
isEmptyFolder
? t("home.dragFlowsOrComponents")
: t("home.dragFlowType", { flowType })
}
>
<div
className="flex h-full w-full flex-col overflow-y-auto"

View File

@ -30,7 +30,9 @@ const ApiKeyHeaderComponent = ({
className="ml-2 h-5 w-5 text-primary"
/>
</h2>
<p className="text-sm text-muted-foreground">{t("settings.apiPageParagraph")}</p>
<p className="text-sm text-muted-foreground">
{t("settings.apiPageParagraph")}
</p>
</div>
<div className="flex flex-shrink-0 items-center gap-2">
<SecretKeyModal

View File

@ -137,7 +137,9 @@ export default function GlobalVariablesPage() {
setErrorData({
title: t("globalVars.invalidCredentialsTitle"),
list: [
t("globalVars.invalidCredentialsHidden", { count: invalidProviderVars.length }),
t("globalVars.invalidCredentialsHidden", {
count: invalidProviderVars.length,
}),
...errorMessages,
],
});

View File

@ -9,9 +9,7 @@ import { useCustomNavigate } from "@/customization/hooks/use-custom-navigate";
import { track } from "@/customization/utils/analytics";
import { Button } from "../../components/ui/button";
import { Input } from "../../components/ui/input";
import {
CONTROL_INPUT_STATE,
} from "../../constants/constants";
import { CONTROL_INPUT_STATE } from "../../constants/constants";
import useAlertStore from "../../stores/alertStore";
import type {
inputHandlerEventType,
@ -100,7 +98,8 @@ export default function SignUp(): JSX.Element {
<div className="mb-3 w-full">
<Form.Field name="username">
<Form.Label className="data-[invalid]:label-invalid">
{t("auth.usernameLabel")} <span className="font-medium text-destructive">*</span>
{t("auth.usernameLabel")}{" "}
<span className="font-medium text-destructive">*</span>
</Form.Label>
<Form.Control asChild>
@ -124,7 +123,8 @@ export default function SignUp(): JSX.Element {
<div className="mb-3 w-full">
<Form.Field name="password" serverInvalid={password != cnfPassword}>
<Form.Label className="data-[invalid]:label-invalid">
{t("auth.passwordLabel")} <span className="font-medium text-destructive">*</span>
{t("auth.passwordLabel")}{" "}
<span className="font-medium text-destructive">*</span>
</Form.Label>
<InputComponent
onChange={(value) => {

View File

@ -141,10 +141,7 @@ export default function StorePage(): JSX.Element {
setLoading(false);
setErrorData({
title: t("errors.getComponents"),
list: [
err?.response?.data?.detail ??
t("store.fetchErrorDetail"),
],
list: [err?.response?.data?.detail ?? t("store.fetchErrorDetail")],
});
}
});
@ -304,7 +301,8 @@ export default function StorePage(): JSX.Element {
<span className="px-0.5 text-sm text-muted-foreground">
{(!loading || searchData.length !== 0) && (
<>
{totalRowsCount} {t("store.results", { count: totalRowsCount })}
{totalRowsCount}{" "}
{t("store.results", { count: totalRowsCount })}
</>
)}
</span>
@ -319,9 +317,13 @@ export default function StorePage(): JSX.Element {
<SelectValue placeholder={t("store.sortPopular")} />
</SelectTrigger>
<SelectContent>
<SelectItem value="Popular">{t("store.sortPopular")}</SelectItem>
<SelectItem value="Popular">
{t("store.sortPopular")}
</SelectItem>
{/* <SelectItem value="Recent">Most Recent</SelectItem> */}
<SelectItem value="Alphabetical">{t("store.sortAlphabetical")}</SelectItem>
<SelectItem value="Alphabetical">
{t("store.sortAlphabetical")}
</SelectItem>
</SelectContent>
</Select>
</div>
@ -357,17 +359,19 @@ export default function StorePage(): JSX.Element {
{selectFilter != "all" ? (
<>
{t("store.emptyCreatedOrLiked", {
action: selectFilter === "createdbyme"
? t("store.emptyCreatedAction")
: t("store.emptyLikedAction"),
action:
selectFilter === "createdbyme"
? t("store.emptyCreatedAction")
: t("store.emptyLikedAction"),
})}
</>
) : (
<>
{t("store.emptyNoItems", {
type: tabActive == "Flows"
? t("store.tabFlows")
: t("store.tabComponents"),
type:
tabActive == "Flows"
? t("store.tabFlows")
: t("store.tabComponents"),
})}
</>
)}

View File

@ -9,7 +9,9 @@ const useFileSizeValidator = () => {
const validateFileSize = (file) => {
if (file.size > maxFileSizeUpload) {
throw new Error(
t("errors.fileTooLarge", { maxSizeMB: formatFileSize(maxFileSizeUpload) }),
t("errors.fileTooLarge", {
maxSizeMB: formatFileSize(maxFileSizeUpload),
}),
);
}
return true;

View File

@ -20,7 +20,6 @@ jest.mock("../../i18n", () => ({
default: { t: jest.fn((key: string) => key) },
}));
jest.mock("@/customization/feature-flags", () => ({
ENABLE_DATASTAX_LANGFLOW: false,
}));

View File

@ -281,45 +281,107 @@ export const FILE_ICONS = {
};
export const SIDEBAR_CATEGORIES = [
{ display_name: "sidebar.category.saved", name: "saved_components", icon: "GradientSave" },
{ display_name: "sidebar.category.inputOutput", name: "input_output", icon: "Cable" },
{ display_name: "sidebar.category.dataSources", name: "data_source", icon: "Database" },
{ display_name: "sidebar.category.modelsAndAgents", name: "models_and_agents", icon: "Bot" },
{
display_name: "sidebar.category.saved",
name: "saved_components",
icon: "GradientSave",
},
{
display_name: "sidebar.category.inputOutput",
name: "input_output",
icon: "Cable",
},
{
display_name: "sidebar.category.dataSources",
name: "data_source",
icon: "Database",
},
{
display_name: "sidebar.category.modelsAndAgents",
name: "models_and_agents",
icon: "Bot",
},
{
display_name: "sidebar.category.llmOperations",
name: "llm_operations",
icon: "BrainCircuit",
},
{
display_name: ENABLE_KNOWLEDGE_BASES ? "sidebar.category.filesAndKnowledge" : "sidebar.category.files",
display_name: ENABLE_KNOWLEDGE_BASES
? "sidebar.category.filesAndKnowledge"
: "sidebar.category.files",
name: "files_and_knowledge",
icon: "Layers",
},
{ display_name: "sidebar.category.processing", name: "processing", icon: "ListFilter" },
{
display_name: "sidebar.category.processing",
name: "processing",
icon: "ListFilter",
},
{
display_name: "sidebar.category.flowControl",
name: "flow_controls",
icon: "ArrowRightLeft",
},
{ display_name: "sidebar.category.utilities", name: "utilities", icon: "Wand2" },
{ display_name: "sidebar.category.prototypes", name: "prototypes", icon: "FlaskConical" },
{
display_name: "sidebar.category.utilities",
name: "utilities",
icon: "Wand2",
},
{
display_name: "sidebar.category.prototypes",
name: "prototypes",
icon: "FlaskConical",
},
{ display_name: "sidebar.category.tools", name: "tools", icon: "Hammer" },
{ display_name: "sidebar.category.agents", name: "agents", icon: "Bot" },
{ display_name: "sidebar.category.data", name: "data", icon: "Database" },
{ display_name: "sidebar.category.logic", name: "logic", icon: "ArrowRightLeft" },
{
display_name: "sidebar.category.logic",
name: "logic",
icon: "ArrowRightLeft",
},
{ display_name: "sidebar.category.helpers", name: "helpers", icon: "Wand2" },
{ display_name: "sidebar.category.models", name: "models", icon: "BrainCog" },
{ display_name: "sidebar.category.vectorStores", name: "vectorstores", icon: "Layers" },
{
display_name: "sidebar.category.vectorStores",
name: "vectorstores",
icon: "Layers",
},
{ display_name: "sidebar.category.inputs", name: "inputs", icon: "Download" },
{ display_name: "sidebar.category.outputs", name: "outputs", icon: "Upload" },
{ display_name: "sidebar.category.prompts", name: "prompts", icon: "braces" },
{ display_name: "sidebar.category.chains", name: "chains", icon: "Link" },
{ display_name: "sidebar.category.loaders", name: "documentloaders", icon: "Paperclip" },
{ display_name: "sidebar.category.linkExtractors", name: "link_extractors", icon: "Link2" },
{ display_name: "sidebar.category.outputParsers", name: "output_parsers", icon: "Compass" },
{ display_name: "sidebar.category.retrievers", name: "retrievers", icon: "FileSearch" },
{ display_name: "sidebar.category.textSplitters", name: "textsplitters", icon: "Scissors" },
{ display_name: "sidebar.category.toolkits", name: "toolkits", icon: "Package2" },
{
display_name: "sidebar.category.loaders",
name: "documentloaders",
icon: "Paperclip",
},
{
display_name: "sidebar.category.linkExtractors",
name: "link_extractors",
icon: "Link2",
},
{
display_name: "sidebar.category.outputParsers",
name: "output_parsers",
icon: "Compass",
},
{
display_name: "sidebar.category.retrievers",
name: "retrievers",
icon: "FileSearch",
},
{
display_name: "sidebar.category.textSplitters",
name: "textsplitters",
icon: "Scissors",
},
{
display_name: "sidebar.category.toolkits",
name: "toolkits",
icon: "Package2",
},
];
export const SIDEBAR_BUNDLES = [