1- import React from "react" ;
1+ import React , { useState } from "react" ;
22import {
33 Dialog ,
44 DialogClose ,
@@ -13,6 +13,7 @@ import { Settings } from "../types";
1313import { Switch } from "./ui/switch" ;
1414import { Label } from "./ui/label" ;
1515import { Input } from "./ui/input" ;
16+ import { RadioGroup , RadioGroupItem } from './ui/radio-group' ;
1617
1718interface Props {
1819 settings : Settings ;
@@ -21,6 +22,7 @@ interface Props {
2122
2223function SettingsDialog ( { settings, setSettings } : Props ) {
2324
25+ const [ llm , setLlm ] = useState < string > ( 'openai' )
2426
2527 return (
2628 < Dialog >
@@ -51,28 +53,48 @@ function SettingsDialog({ settings, setSettings }: Props) {
5153 />
5254 </div> */ }
5355 < div className = "flex flex-col space-y-4" >
54- < Label htmlFor = "openai-api-key" >
55- < div > OpenAI API key</ div >
56- < div className = "font-light mt-2 leading-relaxed" >
57- Only stored in your browser. Never stored on servers. Overrides
58- your .env config.
59- </ div >
60- </ Label >
61-
62- < Input
63- id = "openai-api-key"
64- placeholder = "OpenAI API key"
65- value = { settings ?. openAiApiKey || "" }
66- onChange = { ( e ) =>
56+ < div className = "border-b-2 border-black pb-4" >
57+ < RadioGroup onValueChange = { ( data ) => {
58+ setLlm ( data ) ;
6759 setSettings ( {
6860 ...settings ,
69- openAiApiKey : e . target . value ,
61+ llm : data ,
7062 } )
71- }
72- />
63+ console . log ( data )
64+ } } className = "flex item-center" color = "indigo" defaultValue = { settings . llm } >
65+ < Label className = "flex item-center" htmlFor = "openai-llm" >
66+ < span className = "mr-2" > openai</ span >
67+ < RadioGroupItem value = "openai" id = "openai-llm" />
68+ </ Label >
69+ < Label className = "flex item-center" htmlFor = "gemini-llm" >
70+ < span className = "mr-2" > gemini</ span >
71+ < RadioGroupItem value = "gemini" id = "gemini-llm" />
72+ </ Label >
73+ </ RadioGroup >
74+ </ div >
75+ {
76+ settings . llm === 'openai' ? (
77+ < >
78+ < Label htmlFor = "openai-api-key" >
79+ < div > OpenAI API key</ div >
80+ < div className = "font-light mt-2 leading-relaxed" >
81+ Only stored in your browser. Never stored on servers. Overrides
82+ your .env config.
83+ </ div >
84+ </ Label >
85+
86+ < Input
87+ id = "openai-api-key"
88+ placeholder = "OpenAI API key"
89+ value = { settings ?. openAiApiKey || "" }
90+ onChange = { ( e ) =>
91+ setSettings ( {
92+ ...settings ,
93+ openAiApiKey : e . target . value ,
94+ } )
95+ }
96+ />
7397
74- { (
75- < >
7698 < Label htmlFor = "openai-api-key" >
7799 < div > OpenAI Base URL (optional)</ div >
78100 < div className = "font-light mt-2 leading-relaxed" >
@@ -91,8 +113,33 @@ function SettingsDialog({ settings, setSettings }: Props) {
91113 } )
92114 }
93115 />
94- </ >
95- ) }
116+ </ >
117+
118+ ) : (
119+ < >
120+ < Label htmlFor = "openai-api-key" >
121+ < div > Gemini API key</ div >
122+ < div className = "font-light mt-2 leading-relaxed" >
123+ Only stored in your browser. Never stored on servers. Overrides
124+ your .env config.
125+ </ div >
126+ </ Label >
127+
128+ < Input
129+ id = "Gemini-api-key"
130+ placeholder = "Gemini API key"
131+ value = { settings ?. geminiApiKey || "" }
132+ onChange = { ( e ) =>
133+ setSettings ( {
134+ ...settings ,
135+ geminiApiKey : e . target . value ,
136+ } )
137+ }
138+ />
139+ </ >
140+ )
141+ }
142+
96143 </ div >
97144
98145 < div className = "flex items-center space-x-2" >
0 commit comments