mirror of
https://github.com/langflow-ai/langflow.git
synced 2026-07-25 09:50:41 +08:00
[autofix.ci] apply automated fixes
This commit is contained in:
@ -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"),
|
||||
],
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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}
|
||||
|
||||
@ -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}`}
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@ -381,4 +381,4 @@
|
||||
"table.noColumnTitle": "列の定義がありません",
|
||||
"table.noDataMessage": "申し訳ありません。 現在、表示するデータがないようです。 後ほど再度ご確認ください。",
|
||||
"table.noDataTitle": "使用可能なデータがありません"
|
||||
}
|
||||
}
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@ -381,4 +381,4 @@
|
||||
"table.noColumnTitle": "没有列定义",
|
||||
"table.noDataMessage": "糟糕! 目前似乎没有数据可显示。 请稍后再试。",
|
||||
"table.noDataTitle": "无可用数据"
|
||||
}
|
||||
}
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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>
|
||||
)}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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";
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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",
|
||||
}}
|
||||
/>
|
||||
|
||||
@ -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 } });
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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 && (
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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,
|
||||
],
|
||||
});
|
||||
|
||||
@ -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) => {
|
||||
|
||||
@ -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"),
|
||||
})}
|
||||
</>
|
||||
)}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -20,7 +20,6 @@ jest.mock("../../i18n", () => ({
|
||||
default: { t: jest.fn((key: string) => key) },
|
||||
}));
|
||||
|
||||
|
||||
jest.mock("@/customization/feature-flags", () => ({
|
||||
ENABLE_DATASTAX_LANGFLOW: false,
|
||||
}));
|
||||
|
||||
@ -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 = [
|
||||
|
||||
Reference in New Issue
Block a user