6500db9c1c
* move index to home folder, create state and context files and barrell folder * Sanity Check Commit: reducer added to home.tsx manual QA all working * WIP: promptBar * fix missing json parse on folders and prompts * split context and add promptbar context * add context to nested prompt componets and componetize Folder componet * remove log * Create buttons folder and componetize sidebar action button * tidy up prompt handlers * componetized sidebar * added back chatbar componet to left side sidebar * monster commit: Componetized the common code between chatbar and promptbar into new componet Sidebar and added context to both bars * add useFetch service * added prettier import sort to keep imports ordered and easier to indentify * added react query and useFetch to work with RQ * added apiService, errorService and reactQuery * add callback and tidy up error service * refactor chat and child componets to useContext * fix extra calls and bad calls to mel endpoint * minor import cleanup --------- Co-authored-by: jc.durbin <jc.durbin@ardanis.com>
72 lines
1.9 KiB
TypeScript
72 lines
1.9 KiB
TypeScript
import { IconFileExport, IconMoon, IconSun } from '@tabler/icons-react';
|
|
import { useContext } from 'react';
|
|
|
|
import { useTranslation } from 'next-i18next';
|
|
|
|
import HomeContext from '@/pages/api/home/home.context';
|
|
|
|
import { Import } from '../../Settings/Import';
|
|
import { Key } from '../../Settings/Key';
|
|
import { SidebarButton } from '../../Sidebar/SidebarButton';
|
|
import ChatbarContext from '../Chatbar.context';
|
|
import { ClearConversations } from './ClearConversations';
|
|
import { PluginKeys } from './PluginKeys';
|
|
|
|
export const ChatbarSettings = () => {
|
|
const { t } = useTranslation('sidebar');
|
|
|
|
const {
|
|
state: {
|
|
apiKey,
|
|
lightMode,
|
|
serverSideApiKeyIsSet,
|
|
serverSidePluginKeysSet,
|
|
conversations,
|
|
},
|
|
dispatch: homeDispatch,
|
|
} = useContext(HomeContext);
|
|
|
|
const {
|
|
handleClearConversations,
|
|
handleImportConversations,
|
|
handleExportData,
|
|
|
|
handleApiKeyChange,
|
|
} = useContext(ChatbarContext);
|
|
|
|
return (
|
|
<div className="flex flex-col items-center space-y-1 border-t border-white/20 pt-1 text-sm">
|
|
{conversations.length > 0 ? (
|
|
<ClearConversations onClearConversations={handleClearConversations} />
|
|
) : null}
|
|
|
|
<Import onImport={handleImportConversations} />
|
|
|
|
<SidebarButton
|
|
text={t('Export data')}
|
|
icon={<IconFileExport size={18} />}
|
|
onClick={() => handleExportData()}
|
|
/>
|
|
|
|
<SidebarButton
|
|
text={lightMode === 'light' ? t('Dark mode') : t('Light mode')}
|
|
icon={
|
|
lightMode === 'light' ? <IconMoon size={18} /> : <IconSun size={18} />
|
|
}
|
|
onClick={() =>
|
|
homeDispatch({
|
|
field: 'lightMode',
|
|
value: lightMode === 'light' ? 'dark' : 'light',
|
|
})
|
|
}
|
|
/>
|
|
|
|
{!serverSideApiKeyIsSet ? (
|
|
<Key apiKey={apiKey} onApiKeyChange={handleApiKeyChange} />
|
|
) : null}
|
|
|
|
{!serverSidePluginKeysSet ? <PluginKeys /> : null}
|
|
</div>
|
|
);
|
|
};
|