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 (
)
})}
>
{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?
)
}