diff --git a/002_source/cms/src/components/dashboard/layout/vertical/main-nav/contacts-button.tsx b/002_source/cms/src/components/dashboard/layout/vertical/main-nav/contacts-button.tsx index f0f541d..ec6c84e 100644 --- a/002_source/cms/src/components/dashboard/layout/vertical/main-nav/contacts-button.tsx +++ b/002_source/cms/src/components/dashboard/layout/vertical/main-nav/contacts-button.tsx @@ -2,72 +2,31 @@ import * as React from 'react'; import IconButton from '@mui/material/IconButton'; -import Popover from '@mui/material/Popover'; -import List from '@mui/material/List'; -import ListItem from '@mui/material/ListItem'; -import ListItemButton from '@mui/material/ListItemButton'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ListItemText from '@mui/material/ListItemText'; import Tooltip from '@mui/material/Tooltip'; -import { ChatCenteredDots as ChatCenteredDotsIcon } from '@phosphor-icons/react/dist/ssr/ChatCenteredDots'; -import { EnvelopeSimple as EnvelopeSimpleIcon } from '@phosphor-icons/react/dist/ssr/EnvelopeSimple'; -import { User as UserIcon } from '@phosphor-icons/react/dist/ssr/User'; +import { Users as UsersIcon } from '@phosphor-icons/react/dist/ssr/Users'; + +import { usePopover } from '@/hooks/use-popover'; + +import { ContactsPopover } from '../../contacts-popover'; export function ContactsButton(): React.JSX.Element { - const [anchorEl, setAnchorEl] = React.useState(null); - - const handleClick = (event: React.MouseEvent) => { - setAnchorEl(event.currentTarget); - }; - - const handleClose = () => { - setAnchorEl(null); - }; - - const open = Boolean(anchorEl); - const id = open ? 'contacts-popover' : undefined; + const popover = usePopover(); return ( - - + + - - - - - - - - - - - - - - - - - - - - + ); } diff --git a/002_source/cms/src/components/dashboard/layout/vertical/main-nav/index.tsx b/002_source/cms/src/components/dashboard/layout/vertical/main-nav/index.tsx index e087711..ddaf378 100644 --- a/002_source/cms/src/components/dashboard/layout/vertical/main-nav/index.tsx +++ b/002_source/cms/src/components/dashboard/layout/vertical/main-nav/index.tsx @@ -1,33 +1,21 @@ 'use client'; import * as React from 'react'; -import Avatar from '@mui/material/Avatar'; -import Badge from '@mui/material/Badge'; import Box from '@mui/material/Box'; import Divider from '@mui/material/Divider'; import IconButton from '@mui/material/IconButton'; import Stack from '@mui/material/Stack'; -import Tooltip from '@mui/material/Tooltip'; -import { Bell as BellIcon } from '@phosphor-icons/react/dist/ssr/Bell'; import { List as ListIcon } from '@phosphor-icons/react/dist/ssr/List'; -import { MagnifyingGlass as MagnifyingGlassIcon } from '@phosphor-icons/react/dist/ssr/MagnifyingGlass'; -import { Users as UsersIcon } from '@phosphor-icons/react/dist/ssr/Users'; -import { useTranslation } from 'next-i18next'; import type { NavItemConfig } from '@/types/nav'; -import type { User } from '@/types/user'; -import { useDialog } from '@/hooks/use-dialog'; -import { usePopover } from '@/hooks/use-popover'; -import { ContactsPopover } from '../../contacts-popover'; -import { languageFlags, LanguagePopover } from '../../language-popover'; -import type { Language } from '../../language-popover'; import { MobileNav } from '../../mobile-nav'; -import { NotificationsPopover } from '../../notifications-popover'; -import { SearchDialog } from '../../search-dialog'; -import { UserPopover } from '../../user-popover/user-popover'; -import { NotificationsButton } from './notifications-button'; +// import { NotificationsButton } from './notifications-button'; import { LanguageSwitch } from './language-switch'; +import { ContactsButton } from './contacts-button'; +import { SearchButton } from './search-button'; +import { NotificationsButton } from './notifications-button'; +import { UserButton } from './user-button'; export interface MainNavProps { items: NavItemConfig[]; @@ -104,124 +92,3 @@ export function MainNav({ items }: MainNavProps): React.JSX.Element { ); } - -function SearchButton(): React.JSX.Element { - const dialog = useDialog(); - - return ( - - - - - - - - - ); -} - -function ContactsButton(): React.JSX.Element { - const popover = usePopover(); - - return ( - - - - - - - - - ); -} - -function LanguageSwitch1(): React.JSX.Element { - const { i18n } = useTranslation(); - const popover = usePopover(); - const language = (i18n.language || 'en') as Language; - const flag = languageFlags[language]; - - return ( - - - - - - - - - - - ); -} - -const user = { - id: 'USR-000', - name: 'Sofia Rivers', - avatar: '/assets/avatar.png', - email: 'sofia@devias.io', -} satisfies User; - -function UserButton(): React.JSX.Element { - const popover = usePopover(); - - return ( - - - - - - - - - ); -} diff --git a/002_source/cms/src/components/dashboard/layout/vertical/main-nav/language-switch.tsx b/002_source/cms/src/components/dashboard/layout/vertical/main-nav/language-switch.tsx index 5ff6c46..32f61a7 100644 --- a/002_source/cms/src/components/dashboard/layout/vertical/main-nav/language-switch.tsx +++ b/002_source/cms/src/components/dashboard/layout/vertical/main-nav/language-switch.tsx @@ -1,32 +1,15 @@ 'use client'; import * as React from 'react'; -import Avatar from '@mui/material/Avatar'; -import Badge from '@mui/material/Badge'; import Box from '@mui/material/Box'; -import Divider from '@mui/material/Divider'; import IconButton from '@mui/material/IconButton'; -import Stack from '@mui/material/Stack'; import Tooltip from '@mui/material/Tooltip'; -import { Bell as BellIcon } from '@phosphor-icons/react/dist/ssr/Bell'; -import { List as ListIcon } from '@phosphor-icons/react/dist/ssr/List'; -import { MagnifyingGlass as MagnifyingGlassIcon } from '@phosphor-icons/react/dist/ssr/MagnifyingGlass'; -import { Users as UsersIcon } from '@phosphor-icons/react/dist/ssr/Users'; import { useTranslation } from 'next-i18next'; -import type { NavItemConfig } from '@/types/nav'; -import type { User } from '@/types/user'; -import { useDialog } from '@/hooks/use-dialog'; import { usePopover } from '@/hooks/use-popover'; -import { ContactsPopover } from '../../contacts-popover'; import { languageFlags, LanguagePopover } from '../../language-popover'; import type { Language } from '../../language-popover'; -import { MobileNav } from '../../mobile-nav'; -import { NotificationsPopover } from '../../notifications-popover'; -import { SearchDialog } from '../../search-dialog'; -import { UserPopover } from '../../user-popover/user-popover'; -import { NotificationsButton } from './notifications-button'; export function LanguageSwitch(): React.JSX.Element { const { i18n } = useTranslation(); diff --git a/002_source/cms/src/components/dashboard/layout/vertical/main-nav/notifications-button.tsx b/002_source/cms/src/components/dashboard/layout/vertical/main-nav/notifications-button.tsx index 2c8612f..1548966 100644 --- a/002_source/cms/src/components/dashboard/layout/vertical/main-nav/notifications-button.tsx +++ b/002_source/cms/src/components/dashboard/layout/vertical/main-nav/notifications-button.tsx @@ -3,47 +3,38 @@ import * as React from 'react'; import Badge from '@mui/material/Badge'; import IconButton from '@mui/material/IconButton'; -import Popover from '@mui/material/Popover'; import Tooltip from '@mui/material/Tooltip'; import { Bell as BellIcon } from '@phosphor-icons/react/dist/ssr/Bell'; +import { usePopover } from '@/hooks/use-popover'; + +import { NotificationsPopover } from '../../notifications-popover'; +// import { NotificationsButton } from './notifications-button'; + export function NotificationsButton(): React.JSX.Element { - const [anchorEl, setAnchorEl] = React.useState(null); - - const handleClick = (event: React.MouseEvent) => { - setAnchorEl(event.currentTarget); - }; - - const handleClose = () => { - setAnchorEl(null); - }; - - const open = Boolean(anchorEl); - const id = open ? 'notifications-popover' : undefined; + const popover = usePopover(); return ( - - + - - + + - - {/* Notification content would go here */} - + ); } diff --git a/002_source/cms/src/components/dashboard/layout/vertical/main-nav/search-button.tsx b/002_source/cms/src/components/dashboard/layout/vertical/main-nav/search-button.tsx index eaa26b3..ae03641 100644 --- a/002_source/cms/src/components/dashboard/layout/vertical/main-nav/search-button.tsx +++ b/002_source/cms/src/components/dashboard/layout/vertical/main-nav/search-button.tsx @@ -4,7 +4,9 @@ import * as React from 'react'; import IconButton from '@mui/material/IconButton'; import Tooltip from '@mui/material/Tooltip'; import { MagnifyingGlass as MagnifyingGlassIcon } from '@phosphor-icons/react/dist/ssr/MagnifyingGlass'; + import { useDialog } from '@/hooks/use-dialog'; + import { SearchDialog } from '../../search-dialog'; export function SearchButton(): React.JSX.Element { diff --git a/002_source/cms/src/components/dashboard/layout/vertical/main-nav/user-button.tsx b/002_source/cms/src/components/dashboard/layout/vertical/main-nav/user-button.tsx index 22d5cf9..44698ff 100644 --- a/002_source/cms/src/components/dashboard/layout/vertical/main-nav/user-button.tsx +++ b/002_source/cms/src/components/dashboard/layout/vertical/main-nav/user-button.tsx @@ -1,44 +1,57 @@ 'use client'; import * as React from 'react'; -import { User as UserIcon } from '@phosphor-icons/react/dist/ssr/User'; -import { Avatar, Popover, Tooltip } from '@mui/material'; +import Avatar from '@mui/material/Avatar'; +import Badge from '@mui/material/Badge'; +import Box from '@mui/material/Box'; + +import type { User } from '@/types/user'; +import { usePopover } from '@/hooks/use-popover'; + +import { UserPopover } from '../../user-popover/user-popover'; +// import { NotificationsButton } from './notifications-button'; + +const user = { + id: 'USR-000', + name: 'Sofia Rivers', + avatar: '/assets/avatar.png', + email: 'sofia@devias.io', +} satisfies User; export function UserButton(): React.JSX.Element { - const [anchorEl, setAnchorEl] = React.useState(null); - - const handleClick = (event: React.MouseEvent) => { - setAnchorEl(event.currentTarget); - }; - - const handleClose = () => { - setAnchorEl(null); - }; - - const open = Boolean(anchorEl); - const id = open ? 'user-popover' : undefined; + const popover = usePopover(); return ( - - - - - - - {/* User menu content would go here */} - + + + + + ); }