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.

62 lines
2.5 KiB

  1. import { useState, PropsWithChildren, ReactNode } 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. export default function Authenticated({ user, children }: PropsWithChildren<{ user: User }>) {
  9. const { url } = usePage();
  10. return (
  11. <div>
  12. <header className="navbar px-4 bg-primary-background border-b-2 border-secondary-main">
  13. <div id="ProjectTitle" className="navbar-start">
  14. <Link href="/dashboard">
  15. <ApplicationLogo />
  16. </Link>
  17. </div>
  18. <nav className="navbar-end">
  19. <ul className="menu menu-horizontal px-1">
  20. <li><NavLink href="/dashboard" active={url === '/dashboard'}>
  21. Home
  22. </NavLink></li>
  23. <li><NavLink href="/about" active={url === '/about'}>
  24. About
  25. </NavLink></li>
  26. <li><NavLink href="/help" active={url === '/help'}>
  27. Tutorials
  28. </NavLink></li>
  29. <li><Dropdown>
  30. <Dropdown.Trigger>
  31. <button className="flex items-center py-1 px-2">
  32. <span className="font-semibold text-base leading-6 mr-4">
  33. {user.name}
  34. </span>
  35. <img src="./assets/images/icons/ico-dropdown.png" alt="Dropdown Icon" className="flex-end" />
  36. </button>
  37. </Dropdown.Trigger>
  38. <Dropdown.Content>
  39. <Dropdown.Link href={route('profile.edit')}>Profile</Dropdown.Link>
  40. <Dropdown.Link href={route('logout')} method="post" as="button">
  41. Log Out
  42. </Dropdown.Link>
  43. </Dropdown.Content>
  44. </Dropdown></li>
  45. </ul>
  46. </nav>
  47. </header>
  48. <main>
  49. {children}
  50. </main>
  51. <footer>
  52. <Footer />
  53. </footer>
  54. </div>
  55. );
  56. }