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 ( + + + + + + + + + Locked to keep embeddings consistent + + + + + + + ); +}; 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} + + + onChange(value + 1)} + > + + + onChange(value - 1)} + > + + + + + + + ); +}; 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 */} + + {}} + > + + + + + + + + Locked to keep embeddings consistent + + + + + + + + - 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" - /> -