You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
2.8 KiB

  1. import { PropsWithChildren, useState } from 'react';
  2. import ApplicationLogo from '@/Components/ApplicationLogo';
  3. import Footer from '@/Components/Footer';
  4. import Dropdown from '@/Components/Dropdown';
  5. import NavLink from '@/Components/NavLink';
  6. import { Link, usePage } from '@inertiajs/react';
  7. import { User } from '@/types';
  8. import { ChevronDown } from 'react-feather';
  9. export default function Authenticated({ user, children }: PropsWithChildren<{ user: User }>) {
  10. const { url } = usePage();
  11. const [isHiglighted, setIsHiglighted] = useState(false);
  12. return (
  13. <div>
  14. <header className="navbar px-4 bg-primary-background border-b-2 border-secondary-main">
  15. <div id="ProjectTitle" className="navbar-start">
  16. <Link href="/dashboard">
  17. <ApplicationLogo />
  18. </Link>
  19. </div>
  20. <nav className="navbar-end">
  21. <ul className="menu menu-horizontal px-1">
  22. <li><NavLink href="/dashboard" active={url === '/dashboard'}>
  23. Home
  24. </NavLink></li>
  25. <li><NavLink href="/about" active={url === '/about'}>
  26. About
  27. </NavLink></li>
  28. <li><NavLink href="/help" active={url === '/help'}>
  29. Tutorials
  30. </NavLink></li>
  31. <li><Dropdown>
  32. <Dropdown.Trigger>
  33. <button className="flex items-center py-1 px-2"
  34. onMouseEnter={() => setIsHiglighted(true)}
  35. onMouseDown={() => setIsHiglighted(true)}
  36. onMouseLeave={() => setIsHiglighted(false)}>
  37. <span className="font-semibold text-base leading-6 mr-4">
  38. {user.name}
  39. </span>
  40. <ChevronDown stroke={isHiglighted ? "#FFFFFF" : "#000000"} />
  41. </button>
  42. </Dropdown.Trigger>
  43. <Dropdown.Content>
  44. <Dropdown.Link href={route('profile.edit')}>Profile</Dropdown.Link>
  45. <Dropdown.Link href={route('logout')} method="post" as="button">
  46. Log Out
  47. </Dropdown.Link>
  48. </Dropdown.Content>
  49. </Dropdown></li>
  50. </ul>
  51. </nav>
  52. </header>
  53. <main>
  54. {children}
  55. </main>
  56. <footer>
  57. <Footer />
  58. </footer>
  59. </div>
  60. );
  61. }