Spaces:
Running
Running
File size: 1,161 Bytes
e538a38 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
import { type ComboboxItem, Select } from "@mantine/core";
import { useEffect, useState } from "react";
import { wllamaModels } from "../../modules/wllama";
export default function WllamaModelSelect({
value,
onChange,
}: {
value: string;
onChange: (value: string) => void;
}) {
const [wllamaModelOptions] = useState<ComboboxItem[]>(
Object.entries(wllamaModels)
.sort(([, a], [, b]) => a.fileSizeInMegabytes - b.fileSizeInMegabytes)
.map(([value, { label, fileSizeInMegabytes }]) => ({
label: `${fileSizeInMegabytes} MB β’ ${label}`,
value,
})),
);
useEffect(() => {
const isCurrentModelValid = wllamaModelOptions.some(
(model) => model.value === value,
);
if (!isCurrentModelValid && wllamaModelOptions.length > 0) {
onChange(wllamaModelOptions[0].value);
}
}, [onChange, wllamaModelOptions, value]);
return (
<Select
value={value}
onChange={(value) => value && onChange(value)}
label="AI Model"
description="Select the model to use for AI responses."
data={wllamaModelOptions}
allowDeselect={false}
searchable
/>
);
}
|