From 3da2909aa5e918f48cb7321be1d927884ef26474 Mon Sep 17 00:00:00 2001 From: Cleyton Jesus Date: Fri, 1 Aug 2025 19:58:20 -0300 Subject: [PATCH 001/180] fix:corrigindo o conflito dos imports --- frontend/src/routes/routes.jsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/frontend/src/routes/routes.jsx b/frontend/src/routes/routes.jsx index 2e7439a..ce9a00f 100644 --- a/frontend/src/routes/routes.jsx +++ b/frontend/src/routes/routes.jsx @@ -5,11 +5,7 @@ import { groupDetailsLoader } from '../pages/Groups/GroupDetails/groupDetailsLoa import { loginAction } from '../pages/Login/loginAction'; import { registerAction } from '../pages/Register/registerAction'; const App = lazy(() => import('../App')); -<<<<<<< Updated upstream const Layout = lazy(() => import('../components/Layout')); -======= -const Layout = lazy(() => import('../components/layout/Layout')); ->>>>>>> Stashed changes const Login = lazy(() => import('../pages/Login')); const Register = lazy(() => import('../pages/Register')); const Dashboard = lazy(() => import('../pages/Dashboard')); From 1edecb776639cabd209ed0dff1a124718606cfd7 Mon Sep 17 00:00:00 2001 From: Cleyton Jesus Date: Fri, 1 Aug 2025 20:07:00 -0300 Subject: [PATCH 002/180] fix:alterando o nome do componente de 'layout' para 'Layout' --- .../DropdownMenuNav/SwitchTheme/index.jsx | 24 +++++++ .../DropdownMenu/DropdownMenuNav/index.jsx | 22 +++++++ .../DropdownMenu/DropdownMenuNav/navItems.jsx | 27 ++++++++ .../DropdownMenuNav/useSidebarNav.js | 13 ++++ .../components/Layout/DropdownMenu/index.jsx | 65 +++++++++++++++++++ frontend/src/components/Layout/Header.jsx | 18 +++++ frontend/src/components/Layout/index.jsx | 21 ++++++ 7 files changed, 190 insertions(+) create mode 100644 frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/SwitchTheme/index.jsx create mode 100644 frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/index.jsx create mode 100644 frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/navItems.jsx create mode 100644 frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/useSidebarNav.js create mode 100644 frontend/src/components/Layout/DropdownMenu/index.jsx create mode 100644 frontend/src/components/Layout/Header.jsx create mode 100644 frontend/src/components/Layout/index.jsx diff --git a/frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/SwitchTheme/index.jsx b/frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/SwitchTheme/index.jsx new file mode 100644 index 0000000..8f546c5 --- /dev/null +++ b/frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/SwitchTheme/index.jsx @@ -0,0 +1,24 @@ +import { Switch } from '@headlessui/react'; +import { useTheme } from '../../../../../context/ThemeContext'; + +export default function SwitchTheme() { + const { theme, toggleTheme } = useTheme(); + const enabled = theme === 'dark'; + + return ( + + + + ); +} diff --git a/frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/index.jsx b/frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/index.jsx new file mode 100644 index 0000000..bdb35b7 --- /dev/null +++ b/frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/index.jsx @@ -0,0 +1,22 @@ +import { Menu, MenuItem } from '@headlessui/react'; +import { navItems } from './navItems'; +import { useCurrentPage } from './useSidebarNav'; + +export default function DropdownMenuNav() { + const currentPage = useCurrentPage(); + return ( + + {navItems.map((item, index) => ( + + + {item.icon} {item.label} + + + ))} + + ); +} diff --git a/frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/navItems.jsx b/frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/navItems.jsx new file mode 100644 index 0000000..a118cde --- /dev/null +++ b/frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/navItems.jsx @@ -0,0 +1,27 @@ +import { ImHome } from 'react-icons/im'; +import { MdGroups } from 'react-icons/md'; +import { FaUser } from 'react-icons/fa'; +import { TbLogout2 } from 'react-icons/tb'; +export const navItems = [ + { + icon: , + label: 'Início', + href: '/', + }, + { + icon: , + label: 'Grupos', + href: '/groups', + }, + { + icon: , + label: 'Perfil', + href: '/profile', + }, + { + icon: , + label: 'Sair', + href: '/login', + isDanger: true, // <-- facilita aplicar estilo de "erro" no menu + }, +]; diff --git a/frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/useSidebarNav.js b/frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/useSidebarNav.js new file mode 100644 index 0000000..fc3617b --- /dev/null +++ b/frontend/src/components/Layout/DropdownMenu/DropdownMenuNav/useSidebarNav.js @@ -0,0 +1,13 @@ +import { useLocation } from 'react-router'; + +export function useCurrentPage() { + const location = useLocation(); + + const pathname = location.pathname; + + const parhSegments = pathname.split('/').filter(Boolean); + + const currentPage = parhSegments[0] || ''; + + return currentPage; +} diff --git a/frontend/src/components/Layout/DropdownMenu/index.jsx b/frontend/src/components/Layout/DropdownMenu/index.jsx new file mode 100644 index 0000000..7f2a56d --- /dev/null +++ b/frontend/src/components/Layout/DropdownMenu/index.jsx @@ -0,0 +1,65 @@ +import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/react'; +import { navItems } from './DropdownMenuNav/navItems'; +import SwitchTheme from './DropdownMenuNav/SwitchTheme'; +import { FaMoon, FaSun } from 'react-icons/fa'; +import userData from '../../../mockData/user/user.data'; + +export default function DropdownMenu() { + const current_user = userData; + return ( + + + {current_user.username[0]} + + + +
+ {navItems.map(({ icon, label, href, isDanger }, index) => ( + + {({ active }) => { + const baseTextColor = isDanger ? 'text-error' : 'text-text'; + const activeBgColor = isDanger + ? 'bg-error/10' + : 'bg-primary/10'; + const activeTextColor = isDanger + ? 'text-error' + : 'text-primary'; + + return ( + + {icon} + {label} + + ); + }} + + ))} +
+
+
+ + + +
+
+
+
+ ); +} diff --git a/frontend/src/components/Layout/Header.jsx b/frontend/src/components/Layout/Header.jsx new file mode 100644 index 0000000..e591fd8 --- /dev/null +++ b/frontend/src/components/Layout/Header.jsx @@ -0,0 +1,18 @@ +import { useState } from 'react'; +import LogoImage from '../Logo'; +import DropdownMenu from './DropdownMenu'; +import { Menu, MenuItem } from '@headlessui/react'; + +export default function Header() { + const [isLogged] = useState(true); //Apenas para testar + return ( +
+ + + + + + {isLogged && } +
+ ); +} diff --git a/frontend/src/components/Layout/index.jsx b/frontend/src/components/Layout/index.jsx new file mode 100644 index 0000000..5e60950 --- /dev/null +++ b/frontend/src/components/Layout/index.jsx @@ -0,0 +1,21 @@ +import { Outlet } from 'react-router'; +import Header from './Header'; +import { Suspense } from 'react'; +import Loading from '../Loading'; + +export default function Layout() { + return ( +
+
+
+
+
+ }> + + +
+
+
+
+ ); +} From 79b33111e4b98d1e610d07181b4bfb2c84525654 Mon Sep 17 00:00:00 2001 From: Cleyton Jesus Date: Fri, 1 Aug 2025 20:58:25 -0300 Subject: [PATCH 003/180] Corrigindo problema com case sensitive --- .../DropdownMenuNav/SwitchTheme/index.jsx | 24 ------- .../DropdownMenu/DropdownMenuNav/index.jsx | 22 ------- .../DropdownMenu/DropdownMenuNav/navItems.jsx | 27 -------- .../DropdownMenuNav/useSidebarNav.js | 13 ---- .../components/layout/DropdownMenu/index.jsx | 65 ------------------- frontend/src/components/layout/Header.jsx | 18 ----- frontend/src/components/layout/index.jsx | 21 ------ 7 files changed, 190 deletions(-) delete mode 100644 frontend/src/components/layout/DropdownMenu/DropdownMenuNav/SwitchTheme/index.jsx delete mode 100644 frontend/src/components/layout/DropdownMenu/DropdownMenuNav/index.jsx delete mode 100644 frontend/src/components/layout/DropdownMenu/DropdownMenuNav/navItems.jsx delete mode 100644 frontend/src/components/layout/DropdownMenu/DropdownMenuNav/useSidebarNav.js delete mode 100644 frontend/src/components/layout/DropdownMenu/index.jsx delete mode 100644 frontend/src/components/layout/Header.jsx delete mode 100644 frontend/src/components/layout/index.jsx diff --git a/frontend/src/components/layout/DropdownMenu/DropdownMenuNav/SwitchTheme/index.jsx b/frontend/src/components/layout/DropdownMenu/DropdownMenuNav/SwitchTheme/index.jsx deleted file mode 100644 index 8f546c5..0000000 --- a/frontend/src/components/layout/DropdownMenu/DropdownMenuNav/SwitchTheme/index.jsx +++ /dev/null @@ -1,24 +0,0 @@ -import { Switch } from '@headlessui/react'; -import { useTheme } from '../../../../../context/ThemeContext'; - -export default function SwitchTheme() { - const { theme, toggleTheme } = useTheme(); - const enabled = theme === 'dark'; - - return ( - - - - ); -} diff --git a/frontend/src/components/layout/DropdownMenu/DropdownMenuNav/index.jsx b/frontend/src/components/layout/DropdownMenu/DropdownMenuNav/index.jsx deleted file mode 100644 index bdb35b7..0000000 --- a/frontend/src/components/layout/DropdownMenu/DropdownMenuNav/index.jsx +++ /dev/null @@ -1,22 +0,0 @@ -import { Menu, MenuItem } from '@headlessui/react'; -import { navItems } from './navItems'; -import { useCurrentPage } from './useSidebarNav'; - -export default function DropdownMenuNav() { - const currentPage = useCurrentPage(); - return ( - - {navItems.map((item, index) => ( - - - {item.icon} {item.label} - - - ))} - - ); -} diff --git a/frontend/src/components/layout/DropdownMenu/DropdownMenuNav/navItems.jsx b/frontend/src/components/layout/DropdownMenu/DropdownMenuNav/navItems.jsx deleted file mode 100644 index a118cde..0000000 --- a/frontend/src/components/layout/DropdownMenu/DropdownMenuNav/navItems.jsx +++ /dev/null @@ -1,27 +0,0 @@ -import { ImHome } from 'react-icons/im'; -import { MdGroups } from 'react-icons/md'; -import { FaUser } from 'react-icons/fa'; -import { TbLogout2 } from 'react-icons/tb'; -export const navItems = [ - { - icon: , - label: 'Início', - href: '/', - }, - { - icon: , - label: 'Grupos', - href: '/groups', - }, - { - icon: , - label: 'Perfil', - href: '/profile', - }, - { - icon: , - label: 'Sair', - href: '/login', - isDanger: true, // <-- facilita aplicar estilo de "erro" no menu - }, -]; diff --git a/frontend/src/components/layout/DropdownMenu/DropdownMenuNav/useSidebarNav.js b/frontend/src/components/layout/DropdownMenu/DropdownMenuNav/useSidebarNav.js deleted file mode 100644 index fc3617b..0000000 --- a/frontend/src/components/layout/DropdownMenu/DropdownMenuNav/useSidebarNav.js +++ /dev/null @@ -1,13 +0,0 @@ -import { useLocation } from 'react-router'; - -export function useCurrentPage() { - const location = useLocation(); - - const pathname = location.pathname; - - const parhSegments = pathname.split('/').filter(Boolean); - - const currentPage = parhSegments[0] || ''; - - return currentPage; -} diff --git a/frontend/src/components/layout/DropdownMenu/index.jsx b/frontend/src/components/layout/DropdownMenu/index.jsx deleted file mode 100644 index 7f2a56d..0000000 --- a/frontend/src/components/layout/DropdownMenu/index.jsx +++ /dev/null @@ -1,65 +0,0 @@ -import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/react'; -import { navItems } from './DropdownMenuNav/navItems'; -import SwitchTheme from './DropdownMenuNav/SwitchTheme'; -import { FaMoon, FaSun } from 'react-icons/fa'; -import userData from '../../../mockData/user/user.data'; - -export default function DropdownMenu() { - const current_user = userData; - return ( - - - {current_user.username[0]} - - - -
- {navItems.map(({ icon, label, href, isDanger }, index) => ( - - {({ active }) => { - const baseTextColor = isDanger ? 'text-error' : 'text-text'; - const activeBgColor = isDanger - ? 'bg-error/10' - : 'bg-primary/10'; - const activeTextColor = isDanger - ? 'text-error' - : 'text-primary'; - - return ( - - {icon} - {label} - - ); - }} - - ))} -
-
-
- - - -
-
-
-
- ); -} diff --git a/frontend/src/components/layout/Header.jsx b/frontend/src/components/layout/Header.jsx deleted file mode 100644 index e591fd8..0000000 --- a/frontend/src/components/layout/Header.jsx +++ /dev/null @@ -1,18 +0,0 @@ -import { useState } from 'react'; -import LogoImage from '../Logo'; -import DropdownMenu from './DropdownMenu'; -import { Menu, MenuItem } from '@headlessui/react'; - -export default function Header() { - const [isLogged] = useState(true); //Apenas para testar - return ( -
- - - - - - {isLogged && } -
- ); -} diff --git a/frontend/src/components/layout/index.jsx b/frontend/src/components/layout/index.jsx deleted file mode 100644 index 5e60950..0000000 --- a/frontend/src/components/layout/index.jsx +++ /dev/null @@ -1,21 +0,0 @@ -import { Outlet } from 'react-router'; -import Header from './Header'; -import { Suspense } from 'react'; -import Loading from '../Loading'; - -export default function Layout() { - return ( -
-
-
-
-
- }> - - -
-
-
-
- ); -} From 1a522b64310858c8e8cc32768f5be0cad13df65c Mon Sep 17 00:00:00 2001 From: Cleyton Jesus Date: Fri, 1 Aug 2025 21:53:01 -0300 Subject: [PATCH 004/180] resolvendo conflitos imports Layout --- frontend/src/components/MessageBox/index.jsx | 68 +++++++++++++++++ frontend/src/components/forms/GroupForm.jsx | 76 +++++-------------- frontend/src/components/forms/LoginForm.jsx | 20 ++++- .../src/components/forms/RegisterForm.jsx | 18 ++++- frontend/src/index.css | 10 ++- frontend/src/pages/Login/loginAction.js | 8 +- frontend/src/schemas/createGroup/form.js | 6 ++ frontend/src/schemas/createGroup/request.js | 0 frontend/src/schemas/loginUser/form.js | 6 ++ frontend/src/schemas/loginUser/request.js | 0 frontend/src/schemas/loginUser/response.js | 0 frontend/src/schemas/registerUser/form.js | 18 +++++ frontend/src/schemas/registerUser/request.js | 0 frontend/src/schemas/registerUser/response.js | 0 14 files changed, 167 insertions(+), 63 deletions(-) create mode 100644 frontend/src/components/MessageBox/index.jsx create mode 100644 frontend/src/schemas/createGroup/form.js create mode 100644 frontend/src/schemas/createGroup/request.js create mode 100644 frontend/src/schemas/loginUser/form.js create mode 100644 frontend/src/schemas/loginUser/request.js create mode 100644 frontend/src/schemas/loginUser/response.js create mode 100644 frontend/src/schemas/registerUser/form.js create mode 100644 frontend/src/schemas/registerUser/request.js create mode 100644 frontend/src/schemas/registerUser/response.js diff --git a/frontend/src/components/MessageBox/index.jsx b/frontend/src/components/MessageBox/index.jsx new file mode 100644 index 0000000..81ac52c --- /dev/null +++ b/frontend/src/components/MessageBox/index.jsx @@ -0,0 +1,68 @@ +import { + MdErrorOutline, + MdWarningAmber, + MdCheckCircleOutline, + MdInfoOutline, +} from 'react-icons/md'; + +const ICONS = { + error: