diff --git a/apps/client/src/App.tsx b/apps/client/src/App.tsx index 13d342e7..339358c3 100644 --- a/apps/client/src/App.tsx +++ b/apps/client/src/App.tsx @@ -1,25 +1,39 @@ -import { Route, Routes } from 'react-router-dom'; -import { Welcome } from '@/pages/welcome'; -import SignUpPage from '@/pages/auth/signup'; -import LoginPage from '@/pages/auth/login'; -import DashboardLayout from '@/components/layouts/layout'; -import Home from '@/pages/dashboard/home'; -import Page from '@/pages/page/page'; +import { Route, Routes } from "react-router-dom"; +import { Welcome } from "@/pages/welcome"; +import SignUpPage from "@/pages/auth/signup"; +import LoginPage from "@/pages/auth/login"; +import DashboardLayout from "@/components/layouts/dashboard/dashboard-layout.tsx"; +import Home from "@/pages/dashboard/home"; +import Page from "@/pages/page/page"; +import AccountSettings from "@/pages/settings/account/account-settings"; +import WorkspaceMembers from "@/pages/settings/workspace/workspace-members"; +import SettingsLayout from "@/components/layouts/settings/settings-layout.tsx"; +import WorkspaceSettings from "@/pages/settings/workspace/workspace-settings"; +import Groups from "@/pages/settings/group/groups"; +import GroupInfo from "./pages/settings/group/group-info"; export default function App() { - return ( <> } /> - } /> - } /> + } /> + } /> }> - } /> - } /> + } /> + } /> + }> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + ); diff --git a/apps/client/src/components/layouts/components/breadcrumb.tsx b/apps/client/src/components/layouts/components/breadcrumb.tsx index aeb6d308..122e736d 100644 --- a/apps/client/src/components/layouts/components/breadcrumb.tsx +++ b/apps/client/src/components/layouts/components/breadcrumb.tsx @@ -66,7 +66,7 @@ export default function Breadcrumb() { , - + diff --git a/apps/client/src/components/layouts/dashboard/aside.tsx b/apps/client/src/components/layouts/dashboard/aside.tsx new file mode 100644 index 00000000..8049c3f4 --- /dev/null +++ b/apps/client/src/components/layouts/dashboard/aside.tsx @@ -0,0 +1,42 @@ +import { Box, ScrollArea, Text } from "@mantine/core"; +import CommentList from "@/features/comment/components/comment-list.tsx"; +import { useAtom } from "jotai"; +import { asideStateAtom } from "@/components/navbar/atoms/sidebar-atom.ts"; +import React from "react"; + +export default function Aside() { + const [{ tab }] = useAtom(asideStateAtom); + + let title; + let component; + + switch (tab) { + case "comments": + component = ; + title = "Comments"; + break; + default: + component = null; + title = null; + } + + return ( + + {component && ( + <> + + {title} + + + +
{component}
+
+ + )} +
+ ); +} diff --git a/apps/client/src/components/layouts/dashboard/aside/aside.tsx b/apps/client/src/components/layouts/dashboard/aside/aside.tsx deleted file mode 100644 index 007ff854..00000000 --- a/apps/client/src/components/layouts/dashboard/aside/aside.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { Box, ScrollArea, Text } from '@mantine/core'; -import CommentList from '@/features/comment/components/comment-list'; -import { useAtom } from 'jotai'; -import { asideStateAtom } from '@/components/navbar/atoms/sidebar-atom'; -import React from 'react'; - -export default function Aside() { - const [{ tab }] = useAtom(asideStateAtom); - - let title; - let component; - - switch (tab) { - case 'comments': - component = ; - title = 'Comments'; - break; - default: - component = null; - title = null; - } - - - return ( - - {component && ( - <> - {title} - - -
- {component} -
-
- - )} -
- ); -} diff --git a/apps/client/src/components/layouts/layout.tsx b/apps/client/src/components/layouts/dashboard/dashboard-layout.tsx similarity index 51% rename from apps/client/src/components/layouts/layout.tsx rename to apps/client/src/components/layouts/dashboard/dashboard-layout.tsx index ed953ea6..7b2e51d2 100644 --- a/apps/client/src/components/layouts/layout.tsx +++ b/apps/client/src/components/layouts/dashboard/dashboard-layout.tsx @@ -1,9 +1,8 @@ -import { UserProvider } from '@/features/user/user-provider'; -import Shell from './shell'; -import { Outlet } from 'react-router-dom'; +import { UserProvider } from "@/features/user/user-provider.tsx"; +import Shell from "./shell.tsx"; +import { Outlet } from "react-router-dom"; export default function DashboardLayout() { - return ( diff --git a/apps/client/src/components/layouts/dashboard/header.tsx b/apps/client/src/components/layouts/dashboard/header.tsx index e05cc82c..bdf4012d 100644 --- a/apps/client/src/components/layouts/dashboard/header.tsx +++ b/apps/client/src/components/layouts/dashboard/header.tsx @@ -1,8 +1,4 @@ -import { - ActionIcon, - Menu, - Button, -} from '@mantine/core'; +import { ActionIcon, Menu, Button } from "@mantine/core"; import { IconDots, IconFileInfo, @@ -12,22 +8,26 @@ import { IconShare, IconTrash, IconMessage, -} from '@tabler/icons-react'; -import React from 'react'; -import useToggleAside from '@/hooks/use-toggle-aside'; -import { useAtom } from 'jotai'; -import { historyAtoms } from '@/features/page-history/atoms/history-atoms'; +} from "@tabler/icons-react"; +import React from "react"; +import useToggleAside from "@/hooks/use-toggle-aside.tsx"; +import { useAtom } from "jotai"; +import { historyAtoms } from "@/features/page-history/atoms/history-atoms.ts"; export default function Header() { const toggleAside = useToggleAside(); return ( <> - - toggleAside('comments')}> + toggleAside("comments")} + > @@ -53,38 +53,33 @@ function PageActionMenu() { arrowPosition="center" > - + - }> + }> Page info - } - > + }> Copy link - }> + }> Share } - onClick={openHistoryModal}> + onClick={openHistoryModal} + > Page history - }> + }> Lock - }> + }> Delete diff --git a/apps/client/src/components/layouts/dashboard/shell.tsx b/apps/client/src/components/layouts/dashboard/shell.tsx index 2a38862e..242925c5 100644 --- a/apps/client/src/components/layouts/dashboard/shell.tsx +++ b/apps/client/src/components/layouts/dashboard/shell.tsx @@ -1,22 +1,25 @@ -import { asideStateAtom, desktopSidebarAtom } from '@/components/navbar/atoms/sidebar-atom'; -import { useToggleSidebar } from '@/components/navbar/hooks/use-toggle-sidebar'; -import { Navbar } from '@/components/navbar/navbar'; -import { AppShell, Burger, Group } from '@mantine/core'; -import { useDisclosure } from '@mantine/hooks'; -import { useAtom } from 'jotai'; -import classes from './shell.module.css'; -import Header from '@/components/layouts/header'; -import Breadcrumb from '@/components/layouts/components/breadcrumb'; -import Aside from '@/components/aside/aside'; -import { useMatchPath } from '@/hooks/use-match-path'; -import React from 'react'; +import { + asideStateAtom, + desktopSidebarAtom, +} from "@/components/navbar/atoms/sidebar-atom.ts"; +import { useToggleSidebar } from "@/components/navbar/hooks/use-toggle-sidebar.ts"; +import { Navbar } from "@/components/navbar/navbar.tsx"; +import { AppShell, Burger, Group } from "@mantine/core"; +import { useDisclosure } from "@mantine/hooks"; +import { useAtom } from "jotai"; +import classes from "./shell.module.css"; +import Header from "@/components/layouts/dashboard/header.tsx"; +import Breadcrumb from "@/components/layouts/components/breadcrumb.tsx"; +import Aside from "@/components/layouts/dashboard/aside.tsx"; +import { useMatchPath } from "@/hooks/use-match-path.tsx"; +import React from "react"; export default function Shell({ children }: { children: React.ReactNode }) { const [mobileOpened, { toggle: toggleMobile }] = useDisclosure(); const [desktopOpened] = useAtom(desktopSidebarAtom); const toggleDesktop = useToggleSidebar(desktopSidebarAtom); const matchPath = useMatchPath(); - const isPageRoute = matchPath('/p/:pageId'); + const isPageRoute = matchPath("/p/:pageId"); const [{ isAsideOpen }] = useAtom(asideStateAtom); return ( @@ -25,23 +28,25 @@ export default function Shell({ children }: { children: React.ReactNode }) { header={{ height: 45 }} navbar={{ width: 300, - breakpoint: 'sm', + breakpoint: "sm", collapsed: { mobile: !mobileOpened, desktop: !desktopOpened }, }} aside={{ width: 300, - breakpoint: 'md', - collapsed: { mobile: (!isAsideOpen), desktop: (!isAsideOpen) }, + breakpoint: "md", + collapsed: { mobile: !isAsideOpen, desktop: !isAsideOpen }, }} padding="md" > - - + - - + } - { - isPageRoute && + {isPageRoute && (
- } + )} - - - {children} - + {children} - { - isPageRoute && + {isPageRoute && (