import { Tooltip, useMediaQuery } from '@janhq/joi' import { motion as m } from 'framer-motion' import { useAtom, useAtomValue, useSetAtom } from 'jotai' import { MessageCircleIcon, SettingsIcon, LayoutGridIcon } from 'lucide-react' import { twMerge } from 'tailwind-merge' import { MainViewState, mainViewStateAtom, showLeftPanelAtom, } from '@/helpers/atoms/App.atom' import { editMessageAtom } from '@/helpers/atoms/ChatMessage.atom' import { downloadedModelsAtom } from '@/helpers/atoms/Model.atom' import { reduceTransparentAtom, selectedSettingAtom, } from '@/helpers/atoms/Setting.atom' const RibbonNavMenus = [ { name: 'Thread', icon: , state: MainViewState.Thread, }, { name: 'Hub', icon: , state: MainViewState.Hub, }, { name: 'Settings', icon: , state: MainViewState.Settings, }, ] export default function RibbonPanel() { const [mainViewState, setMainViewState] = useAtom(mainViewStateAtom) const setEditMessage = useSetAtom(editMessageAtom) const showLeftPanel = useAtomValue(showLeftPanelAtom) const matches = useMediaQuery('(max-width: 880px)') const reduceTransparent = useAtomValue(reduceTransparentAtom) const setSelectedSetting = useSetAtom(selectedSettingAtom) const downloadedModels = useAtomValue(downloadedModelsAtom) const onMenuClick = (state: MainViewState) => { if (mainViewState === state) return if (state === MainViewState.Settings) setSelectedSetting('My Models') setMainViewState(state) setEditMessage('') } return (
{RibbonNavMenus.filter((menu) => !!menu).map((menu, i) => { const isActive = mainViewState === menu.state return (
onMenuClick(menu.state)} >
{menu.icon}
{isActive && ( )}
} content={menu.name} />
) })} ) }