import { useState } from 'react' import { Tooltip, TooltipContent, TooltipTrigger, TooltipArrow, Modal, ModalTitle, ModalContent, ModalHeader, ModalFooter, ModalDescription, ModalClose, Button, } from '@janhq/uikit' import { motion as m } from 'framer-motion' import { useAtomValue } from 'jotai' import { MessageCircleIcon, SettingsIcon, MonitorIcon, LayoutGridIcon, Twitter, Github, } from 'lucide-react' import { twMerge } from 'tailwind-merge' import LogoMark from '@/containers/Brand/Logo/Mark' import { MainViewState } from '@/constants/screens' import { useMainViewState } from '@/hooks/useMainViewState' import { threadSettingFormUpdateAtom } from '@/helpers/atoms/Thread.atom' export default function RibbonNav() { const { mainViewState, setMainViewState } = useMainViewState() const threadSettingFormUpdate = useAtomValue(threadSettingFormUpdateAtom) const [showModalUpdateThreadSetting, setshowModalUpdateThreadSetting] = useState({ show: false, view: mainViewState }) const onMenuClick = (state: MainViewState) => { if (mainViewState === state) return setMainViewState(state) } const primaryMenus = [ { name: 'Thread', icon: ( ), state: MainViewState.Thread, }, { name: 'Hub', icon: ( ), state: MainViewState.Hub, }, ] const linksMenu = [ { name: 'Twitter', icon: ( ), link: 'https://twitter.com/janhq_', }, { name: 'Github', icon: ( ), link: 'https://github.com/janhq/jan', }, ] const secondaryMenus = [ { name: 'System Monitor', icon: ( ), state: MainViewState.SystemMonitor, }, { name: 'Settings', icon: ( ), state: MainViewState.Settings, }, ] return (
{primaryMenus .filter((primary) => !!primary) .map((primary, i) => { const isActive = mainViewState === primary.state return (
{ if ( threadSettingFormUpdate && mainViewState === MainViewState.Thread ) { setshowModalUpdateThreadSetting({ show: true, view: primary.state, }) } else { setshowModalUpdateThreadSetting({ show: false, view: mainViewState, }) onMenuClick(primary.state) } }} > {primary.icon}
{isActive && ( )}
{primary.name}
) })}
<> {linksMenu .filter((link) => !!link) .map((link, i) => { return (
{link.icon} {link.name}
) })} {secondaryMenus .filter((secondary) => !!secondary) .map((secondary, i) => { const isActive = mainViewState === secondary.state return (
{ if ( threadSettingFormUpdate && mainViewState === MainViewState.Thread ) { setshowModalUpdateThreadSetting({ show: true, view: secondary.state, }) } else { setshowModalUpdateThreadSetting({ show: false, view: mainViewState, }) onMenuClick(secondary.state) } }} > {secondary.icon}
{isActive && ( )}
{secondary.name}
) })}
setshowModalUpdateThreadSetting({ show: false, view: mainViewState, }) } >
Unsave changes

You have unsave changes. Are you sure you want to leave this page?

) }