import React, { useCallback } from 'react' import { InferenceEngine } from '@janhq/core' import { Button, Switch, Badge } from '@janhq/joi' import { useAtom, useSetAtom } from 'jotai' import { SettingsIcon } from 'lucide-react' import { useGetDefaultEngineVariant } from '@/hooks/useEngineManagement' import { getTitleByEngine } from '@/utils/modelEngine' import { showSettingActiveLocalEngineAtom } from '@/helpers/atoms/Extension.atom' import { selectedSettingAtom } from '@/helpers/atoms/Setting.atom' const LocalEngineItems = ({ engine }: { engine: InferenceEngine }) => { const { defaultEngineVariant } = useGetDefaultEngineVariant(engine) const manualDescription = (engine: string) => { switch (engine) { case InferenceEngine.cortex_llamacpp: return 'Fast, efficient local inference engine that runs GGUF models directly on your device.' default: break } } const setSelectedSetting = useSetAtom(selectedSettingAtom) const [showSettingActiveLocalEngine, setShowSettingActiveLocalEngineAtom] = useAtom(showSettingActiveLocalEngineAtom) const onSwitchChange = useCallback( (name: string) => { if (showSettingActiveLocalEngine.includes(name)) { setShowSettingActiveLocalEngineAtom( [...showSettingActiveLocalEngine].filter((x) => x !== name) ) } else { setShowSettingActiveLocalEngineAtom([ ...showSettingActiveLocalEngine, name, ]) } }, [showSettingActiveLocalEngine, setShowSettingActiveLocalEngineAtom] ) return (
{getTitleByEngine(engine as InferenceEngine)}
{defaultEngineVariant?.version}

{manualDescription(engine)}

onSwitchChange(engine)} />
) } export default LocalEngineItems