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}
/>
)
})}
)
}