From be034ebbd07feb27c04eb0218ad169f0b7d64512 Mon Sep 17 00:00:00 2001 From: AlexSserb Date: Tue, 19 Aug 2025 11:59:58 +0400 Subject: [PATCH] feat: navbar and footer --- .../deals/components/shared/Board/Board.tsx | 17 +++---- .../components/shared/BoardMenu/BoardMenu.tsx | 5 +- .../CreateStatusButton.module.css | 2 +- .../deals/components/shared/Header/Header.tsx | 14 ++---- .../StatusColumnWrapper.module.css | 7 ++- .../StatusColumnWrapper.tsx | 2 +- src/app/deals/page.tsx | 2 +- src/app/global.css | 2 + src/app/layout.tsx | 28 ++++++++++- .../AppShellFooterWrapper.tsx | 14 ++++++ .../AppShellWrappers/AppShellMainWrapper.tsx | 14 ++++++ .../AppShellNavbarWrapper.tsx | 14 ++++++ .../layout/Footer/Footer.module.css | 32 +++++++++++++ src/components/layout/Footer/Footer.tsx | 31 +++++++++++++ .../layout/Footer/FooterButtons.tsx | 39 ++++++++++++++++ .../layout/Footer/FooterClickable.tsx | 29 ++++++++++++ .../layout/Navbar/Navbar.module.css | 38 +++++++++++++++ src/components/layout/Navbar/Navbar.tsx | 46 +++++++++++++++++++ .../layout/Navbar/NavbarClickable.tsx | 30 ++++++++++++ src/components/layout/Navbar/NavbarLinks.tsx | 36 +++++++++++++++ .../layout/PageBlock/PageBlock.module.css | 17 ++++--- .../ColorSchemeToggle.module.css | 23 +++++++++- .../ColorSchemeToggle/ColorSchemeToggle.tsx | 10 ++-- src/components/ui/Logo/Logo.tsx | 38 +++++++++++++++ 24 files changed, 452 insertions(+), 38 deletions(-) create mode 100644 src/components/layout/AppShellWrappers/AppShellFooterWrapper.tsx create mode 100644 src/components/layout/AppShellWrappers/AppShellMainWrapper.tsx create mode 100644 src/components/layout/AppShellWrappers/AppShellNavbarWrapper.tsx create mode 100644 src/components/layout/Footer/Footer.module.css create mode 100644 src/components/layout/Footer/Footer.tsx create mode 100644 src/components/layout/Footer/FooterButtons.tsx create mode 100644 src/components/layout/Footer/FooterClickable.tsx create mode 100644 src/components/layout/Navbar/Navbar.module.css create mode 100644 src/components/layout/Navbar/Navbar.tsx create mode 100644 src/components/layout/Navbar/NavbarClickable.tsx create mode 100644 src/components/layout/Navbar/NavbarLinks.tsx create mode 100644 src/components/ui/Logo/Logo.tsx diff --git a/src/app/deals/components/shared/Board/Board.tsx b/src/app/deals/components/shared/Board/Board.tsx index d721655..ac09136 100644 --- a/src/app/deals/components/shared/Board/Board.tsx +++ b/src/app/deals/components/shared/Board/Board.tsx @@ -44,14 +44,15 @@ const Board: FC = ({ board }) => { {board.name} - + {!isMobile && ( + + )} )} modalTitle={"Редактирование доски"} diff --git a/src/app/deals/components/shared/BoardMenu/BoardMenu.tsx b/src/app/deals/components/shared/BoardMenu/BoardMenu.tsx index e5cf87a..134481c 100644 --- a/src/app/deals/components/shared/BoardMenu/BoardMenu.tsx +++ b/src/app/deals/components/shared/BoardMenu/BoardMenu.tsx @@ -11,15 +11,14 @@ type Props = { }; const BoardMenu: FC = ({ board, startEditing, isHovered = true }) => { - const { selectedBoard, onDeleteBoard } = useBoardsContext(); + const { onDeleteBoard } = useBoardsContext(); return ( e.stopPropagation()}> diff --git a/src/app/deals/components/shared/CreateStatusButton/CreateStatusButton.module.css b/src/app/deals/components/shared/CreateStatusButton/CreateStatusButton.module.css index 566eef3..f753052 100644 --- a/src/app/deals/components/shared/CreateStatusButton/CreateStatusButton.module.css +++ b/src/app/deals/components/shared/CreateStatusButton/CreateStatusButton.module.css @@ -1,7 +1,7 @@ .container { cursor: pointer; - height: calc(100vh - 150px); + height: 100%; @media (max-width: 48em) { width: 80vw; diff --git a/src/app/deals/components/shared/Header/Header.tsx b/src/app/deals/components/shared/Header/Header.tsx index ce5ecd0..c6fa8c1 100644 --- a/src/app/deals/components/shared/Header/Header.tsx +++ b/src/app/deals/components/shared/Header/Header.tsx @@ -6,7 +6,6 @@ import Boards from "@/app/deals/components/shared/Boards/Boards"; import { useBoardsContext } from "@/app/deals/contexts/BoardsContext"; import { useProjectsContext } from "@/app/deals/contexts/ProjectsContext"; import ProjectSelect from "@/components/selects/ProjectSelect/ProjectSelect"; -import { ColorSchemeToggle } from "@/components/ui/ColorSchemeToggle/ColorSchemeToggle"; import useIsMobile from "@/hooks/useIsMobile"; const Header = () => { @@ -26,14 +25,11 @@ const Header = () => { justify={"end"} wrap={"nowrap"} pr={"md"}> - - - value && setSelectedProject(value)} - /> - + value && setSelectedProject(value)} + /> ); }; diff --git a/src/app/deals/components/shared/StatusColumnWrapper/StatusColumnWrapper.module.css b/src/app/deals/components/shared/StatusColumnWrapper/StatusColumnWrapper.module.css index ce58f41..3a1a715 100644 --- a/src/app/deals/components/shared/StatusColumnWrapper/StatusColumnWrapper.module.css +++ b/src/app/deals/components/shared/StatusColumnWrapper/StatusColumnWrapper.module.css @@ -1,9 +1,8 @@ .container { - height: calc(100vh - 150px); - @media (max-width: 48em) { width: 80vw; + height: calc(100vh - 200px); } } @@ -11,6 +10,10 @@ border-radius: var(--mantine-spacing-md); gap: 0; + @media (max-width: 48em) { + max-height: calc(100vh - 200px); + } + @mixin light { background-color: var(--color-light-aqua); } diff --git a/src/app/deals/components/shared/StatusColumnWrapper/StatusColumnWrapper.tsx b/src/app/deals/components/shared/StatusColumnWrapper/StatusColumnWrapper.tsx index 2a76e42..0a8d9bf 100644 --- a/src/app/deals/components/shared/StatusColumnWrapper/StatusColumnWrapper.tsx +++ b/src/app/deals/components/shared/StatusColumnWrapper/StatusColumnWrapper.tsx @@ -22,7 +22,7 @@ const StatusColumnWrapper = ({ renderHeader, children }: Props) => { scrollbarSize={10} type={"always"} scrollbars={"y"}> - {children} + {children} diff --git a/src/app/deals/page.tsx b/src/app/deals/page.tsx index 15e6cf7..8c129f9 100644 --- a/src/app/deals/page.tsx +++ b/src/app/deals/page.tsx @@ -15,7 +15,7 @@ export default function DealsPage() { - +
diff --git a/src/app/global.css b/src/app/global.css index cb37267..647ca84 100644 --- a/src/app/global.css +++ b/src/app/global.css @@ -12,6 +12,8 @@ --light-thick-shadow: 4px 4px 10px darkgray; --dark-shadow: 1px 1px 10px 1px var(--mantine-color-dark-6); --dark-thick-shadow: 5px 5px 10px 1px var(--mantine-color-dark-6); + /* Heights */ + --page-height: calc(100vh - (var(--mantine-spacing-md) * 2)); } body { diff --git a/src/app/layout.tsx b/src/app/layout.tsx index aa7a7bf..b07d8cf 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -5,6 +5,7 @@ import "swiper/css/pagination"; import "swiper/css/scrollbar"; import { ReactNode } from "react"; import { + AppShell, ColorSchemeScript, mantineHtmlProps, MantineProvider, @@ -13,6 +14,11 @@ import { theme } from "@/theme"; import "@/app/global.css"; import { ModalsProvider } from "@mantine/modals"; import { Notifications } from "@mantine/notifications"; +import AppShellFooterWrapper from "@/components/layout/AppShellWrappers/AppShellFooterWrapper"; +import AppShellMainWrapper from "@/components/layout/AppShellWrappers/AppShellMainWrapper"; +import AppShellNavbarWrapper from "@/components/layout/AppShellWrappers/AppShellNavbarWrapper"; +import Footer from "@/components/layout/Footer/Footer"; +import Navbar from "@/components/layout/Navbar/Navbar"; import { modals } from "@/modals/modals"; import { ReactQueryProvider } from "@/providers/ReactQueryProvider"; import ReduxProvider from "@/providers/ReduxProvider"; @@ -58,7 +64,27 @@ export default function RootLayout({ children }: Props) { - {children} + + + + + + {children} + + +