import { ReactNode } from 'react' import { FormSection } from '@/components/forms/FormSection' import { getDefaultSettingsState, useSettings } from '@/services/settings' import { ComfyIcuAccelerator } from '@aitube/clapper-services' import { APP_NAME } from '@/lib/core/constants' import { availableComfyIcuAccelerators } from './constants' import { FormSelect } from '../forms/FormSelect' import { FormInput } from '../forms/FormInput' import { useUI } from '@/services/ui' import { FormSwitch } from '../forms/FormSwitch' function GetItHere({ href, children }: { href: string; children: ReactNode }) { return ( {children} ( get one ) ) } export function SettingsSectionProvider() { const defaultSettings = getDefaultSettingsState() const showApiKeys = useUI((s) => s.showApiKeys) const setShowApiKeys = useUI((s) => s.setShowApiKeys) const replicateApiKey = useSettings((s) => s.replicateApiKey) const setReplicateApiKey = useSettings((s) => s.setReplicateApiKey) const comfyIcuApiKey = useSettings((s) => s.comfyIcuApiKey) const setComfyIcuApiKey = useSettings((s) => s.setComfyIcuApiKey) const comfyIcuAccelerator = useSettings((s) => s.comfyIcuAccelerator) const setComfyIcuAccelerator = useSettings((s) => s.setComfyIcuAccelerator) const huggingFaceApiKey = useSettings((s) => s.huggingFaceApiKey) const setHuggingFaceApiKey = useSettings((s) => s.setHuggingFaceApiKey) const falAiApiKey = useSettings((s) => s.falAiApiKey) const setFalAiApiKey = useSettings((s) => s.setFalAiApiKey) const modelsLabApiKey = useSettings((s) => s.modelsLabApiKey) const setModelsLabApiKey = useSettings((s) => s.setModelsLabApiKey) const openaiApiKey = useSettings((s) => s.openaiApiKey) const setOpenaiApiKey = useSettings((s) => s.setOpenaiApiKey) const groqApiKey = useSettings((s) => s.groqApiKey) const setGroqApiKey = useSettings((s) => s.setGroqApiKey) const googleApiKey = useSettings((s) => s.googleApiKey) const setGoogleApiKey = useSettings((s) => s.setGoogleApiKey) const anthropicApiKey = useSettings((s) => s.anthropicApiKey) const setAnthropicApiKey = useSettings((s) => s.setAnthropicApiKey) const cohereApiKey = useSettings((s) => s.cohereApiKey) const setCohereApiKey = useSettings((s) => s.setCohereApiKey) const mistralAiApiKey = useSettings((s) => s.mistralAiApiKey) const setMistralAiApiKey = useSettings((s) => s.setMistralAiApiKey) const stabilityAiApiKey = useSettings((s) => s.stabilityAiApiKey) const setStabilityAiApiKey = useSettings((s) => s.setStabilityAiApiKey) const elevenLabsApiKey = useSettings((s) => s.elevenLabsApiKey) const setElevenLabsApiKey = useSettings((s) => s.setElevenLabsApiKey) const kitsAiApiKey = useSettings((s) => s.kitsAiApiKey) const setKitsAiApiKey = useSettings((s) => s.setKitsAiApiKey) const apiKeyType = showApiKeys ? 'text' : 'password' return (

Note: preferences and credentials are stored inside your browser local storage.
{APP_NAME} uses them to perform API calls on your behalf, but forgets them immediately.

label="Comfy.icu hardware accelerator" selectedItemId={comfyIcuAccelerator} selectedItemLabel={ (availableComfyIcuAccelerators as any)[comfyIcuAccelerator] || ComfyIcuAccelerator.L4 } items={Object.entries(availableComfyIcuAccelerators).map( ([accelerator, label]) => ({ id: accelerator, label, disabled: false, value: accelerator as ComfyIcuAccelerator, }) )} onSelect={setComfyIcuAccelerator} horizontal /> Fal.ai API Key } value={falAiApiKey} defaultValue={defaultSettings.falAiApiKey} onChange={setFalAiApiKey} type={apiKeyType} /> OpenAI API Key } value={openaiApiKey} defaultValue={defaultSettings.openaiApiKey} onChange={setOpenaiApiKey} type={apiKeyType} /> Google API Key } value={googleApiKey} defaultValue={defaultSettings.googleApiKey} onChange={setGoogleApiKey} type={apiKeyType} /> Anthropic API Key } value={anthropicApiKey} defaultValue={defaultSettings.anthropicApiKey} onChange={setAnthropicApiKey} type={apiKeyType} /> Cohere API Key } value={cohereApiKey} defaultValue={defaultSettings.cohereApiKey} onChange={setCohereApiKey} type={apiKeyType} /> StabilityAI API Key } value={stabilityAiApiKey} defaultValue={defaultSettings.stabilityAiApiKey} onChange={setStabilityAiApiKey} type={apiKeyType} />
) }