import * as Tabs from '@radix-ui/react-tabs';
import { CheckIcon } from 'lucide-react';
import { ThemeContext } from '~/hooks/ThemeContext';
import React, { useState, useContext, useEffect, useCallback } from 'react';
import { useClearConversationsMutation } from 'librechat-data-provider';
import { useRecoilValue, useRecoilState } from 'recoil';
import store from '~/store';
import { localize } from '~/localization/Translation';
export const ThemeSelector = ({
theme,
onChange,
}: {
theme: string;
onChange: (value: string) => void;
}) => {
const lang = useRecoilValue(store.lang);
return (
{localize(lang, 'com_nav_theme')}
);
};
export const ClearChatsButton = ({
confirmClear,
showText = true,
onClick,
}: {
confirmClear: boolean;
showText: boolean;
onClick: () => void;
}) => {
const lang = useRecoilValue(store.lang);
return (
{showText &&
{localize(lang, 'com_nav_clear_all_chats')}
}
);
};
export const LangSelector = ({
langcode,
onChange,
}: {
langcode: string;
onChange: (value: string) => void;
}) => {
const lang = useRecoilValue(store.lang);
return (
{localize(lang, 'com_nav_language')}
);
};
function General() {
const { theme, setTheme } = useContext(ThemeContext);
const clearConvosMutation = useClearConversationsMutation();
const [confirmClear, setConfirmClear] = useState(false);
const [langcode, setLangcode] = useRecoilState(store.lang);
const { newConversation } = store.useConversation();
const { refreshConversations } = store.useConversations();
useEffect(() => {
if (clearConvosMutation.isSuccess) {
newConversation();
refreshConversations();
}
}, [clearConvosMutation.isSuccess, newConversation, refreshConversations]);
const clearConvos = useCallback(() => {
if (confirmClear) {
console.log('Clearing conversations...');
clearConvosMutation.mutate({});
setConfirmClear(false);
} else {
setConfirmClear(true);
}
}, [confirmClear, clearConvosMutation]);
const changeTheme = useCallback(
(value: string) => {
setTheme(value);
},
[setTheme],
);
const changeLang = useCallback(
(value: string) => {
setLangcode(value);
},
[setLangcode],
);
return (
);
}
export default React.memo(General);