import React, {useContext, useState} from 'react'; import {ArrowLeftRight, Languages, Lightbulb, LucideIcon, Menu, MessageSquare, SpellCheck} from 'lucide-react'; import IconContainer from '@/components/ui/IconContainer'; import IconButton from '@/components/ui/IconButton'; import {QSView} from "@/lib/types/quillsense"; import {getSubLevel, isBringYourKeys, isOpenAIEnabled} from "@/lib/utils/quillsense"; import QuillList from "@/components/quillsense/modes/QuillList"; import QuillConversation from "./modes/QuillConversation"; import Dictionary from "@/components/quillsense/modes/Dictionary"; import Synonyms from "@/components/quillsense/modes/Synonyms"; import InspireMe from "@/components/quillsense/modes/InspireMe"; import {SessionContext, SessionContextProps} from "@/context/SessionContext"; import {useTranslations} from '@/lib/i18n'; import Conjugator from "@/components/quillsense/modes/Conjugator"; interface QSOption { view: QSView; icon: LucideIcon; } export default function QuillSenseComponent(): React.JSX.Element { const [view, setView] = useState('chat'); const t = useTranslations(); const [selectedConversation, setSelectedConversation] = useState(''); const {session}: SessionContextProps = useContext(SessionContext); const isBYOK: boolean = isBringYourKeys(session); const subLevel: number = getSubLevel(session) const isGPTEnabled: boolean = isOpenAIEnabled(session); const isSubTierTwo: boolean = getSubLevel(session) >= 2; const hasAccess: boolean = isGPTEnabled || isSubTierTwo; const qsOptions: QSOption[] = [ {view: 'dictionary', icon: SpellCheck}, {view: 'conjugator', icon: Languages}, {view: 'synonyms', icon: ArrowLeftRight}, {view: 'inspiration', icon: Lightbulb}, {view: 'chat', icon: MessageSquare}, ]; function handleSetView(view: QSView): void { setView(view); } function handleSelectConversation(conversationId: string): void { setSelectedConversation(conversationId); setView('chat'); } return (
handleSetView(view === 'chat' ? 'list' : 'chat')} tooltip={t('quillSense.toggleList')}/>
{ qsOptions.map((option: QSOption): React.JSX.Element => ( handleSetView(option.view)} tooltip={t(`quillSense.options.${option.view}`)} /> )) }
{ isBYOK || subLevel >= 2 ? ( <> {view === 'list' ? ( ) : view === 'chat' ? ( ) : view === 'dictionary' ? ( ) : view === 'synonyms' ? ( ) : view === 'conjugator' ? ( ) : view === 'inspiration' ? ( ) : ( <> )} ) : (

{t('quillSense.needSubscription')}

{t('quillSense.subscriptionDescription')}

) }
); }