From a0a2b2cc3b48a4dc9f94d21c7f16008faeff6854 Mon Sep 17 00:00:00 2001 From: Brent O'Neill Date: Mon, 6 Oct 2025 10:40:57 -0600 Subject: [PATCH] updated inputs in Ingest Settings for cloud-picker component --- .../components/ui/inputs/embedding-model.tsx | 62 ++++++++++++ .../components/ui/inputs/number-input.tsx | 68 +++++++++++++ .../cloud-picker/ingest-settings.tsx | 98 +++++++++++++------ 3 files changed, 197 insertions(+), 31 deletions(-) create mode 100644 frontend/components/ui/inputs/embedding-model.tsx create mode 100644 frontend/components/ui/inputs/number-input.tsx diff --git a/frontend/components/ui/inputs/embedding-model.tsx b/frontend/components/ui/inputs/embedding-model.tsx new file mode 100644 index 00000000..ded138ad --- /dev/null +++ b/frontend/components/ui/inputs/embedding-model.tsx @@ -0,0 +1,62 @@ +import { ModelOption } from "@/app/api/queries/useGetModelsQuery"; +import { + getFallbackModels, + ModelProvider, +} from "@/app/settings/helpers/model-helpers"; +import { ModelSelectItems } from "@/app/settings/helpers/model-select-item"; +import { LabelWrapper } from "@/components/label-wrapper"; +import { + Select, + SelectContent, + SelectTrigger, + SelectValue, +} from "@radix-ui/react-select"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@radix-ui/react-tooltip"; + +interface EmbeddingModelInputProps { + disabled?: boolean; + value: string; + onChange: (value: string) => void; + modelsData?: { + embedding_models: ModelOption[]; + }; + currentProvider?: ModelProvider; +} + +export const EmbeddingModelInput = ({ + disabled, + value, + onChange, + modelsData, + currentProvider = "openai", +}: EmbeddingModelInputProps) => { + return ( + + + + ); +}; diff --git a/frontend/components/ui/inputs/number-input.tsx b/frontend/components/ui/inputs/number-input.tsx new file mode 100644 index 00000000..44e04fcb --- /dev/null +++ b/frontend/components/ui/inputs/number-input.tsx @@ -0,0 +1,68 @@ +import { LabelWrapper } from "@/components/label-wrapper"; +import { Button } from "../button"; +import { Input } from "../input"; +import { Minus, Plus } from "lucide-react"; + +interface NumberInputProps { + id: string; + label: string; + value: number; + onChange: (value: number) => void; + unit: string; + min?: number; + max?: number; + disabled?: boolean; +} + +export const NumberInput = ({ + id, + label, + value, + onChange, + min = 1, + max, + disabled, + unit, +}: NumberInputProps) => { + return ( + +
+ onChange(parseInt(e.target.value) || 0)} + className="w-full pr-20 [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none" + /> +
+ + {unit} + +
+ + +
+
+
+
+ ); +}; diff --git a/frontend/src/components/cloud-picker/ingest-settings.tsx b/frontend/src/components/cloud-picker/ingest-settings.tsx index 8c72ce6b..422e1a70 100644 --- a/frontend/src/components/cloud-picker/ingest-settings.tsx +++ b/frontend/src/components/cloud-picker/ingest-settings.tsx @@ -7,8 +7,23 @@ import { CollapsibleContent, CollapsibleTrigger, } from "@/components/ui/collapsible"; -import { ChevronRight, Info } from "lucide-react"; +import { ChevronRight } from "lucide-react"; import { IngestSettings as IngestSettingsType } from "./types"; +import { LabelWrapper } from "@/components/label-wrapper"; +import { + Select, + SelectContent, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@/components/ui/tooltip"; +import { ModelSelectItems } from "@/app/settings/helpers/model-select-item"; +import { getFallbackModels } from "@/app/settings/helpers/model-helpers"; +import { NumberInput } from "@/components/ui/inputs/number-input"; interface IngestSettingsProps { isOpen: boolean; @@ -40,6 +55,8 @@ export const IngestSettings = ({ onSettingsChange?.(updatedSettings); }; + console.log({ currentSettings }); + return ( +
+ {/* Embedding model selection - currently disabled */} + + + +
-
Chunk size
- - handleSettingsChange({ - chunkSize: parseInt(e.target.value) || 0, - }) - } + onChange={(value) => handleSettingsChange({ chunkSize: value })} + unit="characters" />
-
Chunk overlap
- - handleSettingsChange({ - chunkOverlap: parseInt(e.target.value) || 0, - }) + onChange={(value) => + handleSettingsChange({ chunkOverlap: value }) } + unit="characters" />
@@ -117,21 +168,6 @@ export const IngestSettings = ({ } />
- -
-
- Embedding model - -
- - handleSettingsChange({ embeddingModel: e.target.value }) - } - placeholder="text-embedding-3-small" - /> -