mirror of
				https://github.com/anna-sara/filament_inventory
				synced 2025-10-27 12:27:13 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			176 lines
		
	
	
	
		
			8.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			176 lines
		
	
	
	
		
			8.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import ApplicationLogo from '@/Components/ApplicationLogo';
 | |
| import Dropdown from '@/Components/Dropdown';
 | |
| import NavLink from '@/Components/NavLink';
 | |
| import ResponsiveNavLink from '@/Components/ResponsiveNavLink';
 | |
| import { Link, usePage } from '@inertiajs/react';
 | |
| import { useState } from 'react';
 | |
| 
 | |
| export default function AuthenticatedLayout({ header, children }) {
 | |
|     const user = usePage().props.auth.user;
 | |
| 
 | |
|     const [showingNavigationDropdown, setShowingNavigationDropdown] =
 | |
|         useState(false);
 | |
| 
 | |
|     return (
 | |
|         <div className="min-h-screen bg-gray-100">
 | |
|             <nav className="border-b border-gray-100 bg-white">
 | |
|                 <div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
 | |
|                     <div className="flex h-16 justify-between">
 | |
|                         <div className="flex">
 | |
|                             <div className="flex shrink-0 items-center">
 | |
|                                 <Link href="/">
 | |
|                                     <ApplicationLogo className="block h-9 w-auto fill-current text-gray-800" />
 | |
|                                 </Link>
 | |
|                             </div>
 | |
| 
 | |
|                             <div className="hidden space-x-8 sm:-my-px sm:ms-10 sm:flex">
 | |
|                                 <NavLink
 | |
|                                     href={route('dashboard')}
 | |
|                                     active={route().current('dashboard')}
 | |
|                                 >
 | |
|                                     Dashboard
 | |
|                                 </NavLink>
 | |
|                             </div>
 | |
|                         </div>
 | |
| 
 | |
|                         <div className="hidden sm:ms-6 sm:flex sm:items-center">
 | |
|                             <div className="relative ms-3">
 | |
|                                 <Dropdown>
 | |
|                                     <Dropdown.Trigger>
 | |
|                                         <span className="inline-flex rounded-md">
 | |
|                                             <button
 | |
|                                                 type="button"
 | |
|                                                 className="inline-flex items-center rounded-md border border-transparent bg-white px-3 py-2 text-sm font-medium leading-4 text-gray-500 transition duration-150 ease-in-out hover:text-gray-700 focus:outline-none"
 | |
|                                             >
 | |
|                                                 {user.name}
 | |
| 
 | |
|                                                 <svg
 | |
|                                                     className="-me-0.5 ms-2 h-4 w-4"
 | |
|                                                     xmlns="http://www.w3.org/2000/svg"
 | |
|                                                     viewBox="0 0 20 20"
 | |
|                                                     fill="currentColor"
 | |
|                                                 >
 | |
|                                                     <path
 | |
|                                                         fillRule="evenodd"
 | |
|                                                         d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z"
 | |
|                                                         clipRule="evenodd"
 | |
|                                                     />
 | |
|                                                 </svg>
 | |
|                                             </button>
 | |
|                                         </span>
 | |
|                                     </Dropdown.Trigger>
 | |
| 
 | |
|                                     <Dropdown.Content>
 | |
|                                         <Dropdown.Link
 | |
|                                             href={route('profile.edit')}
 | |
|                                         >
 | |
|                                             Profile
 | |
|                                         </Dropdown.Link>
 | |
|                                         <Dropdown.Link
 | |
|                                             href={route('logout')}
 | |
|                                             method="post"
 | |
|                                             as="button"
 | |
|                                         >
 | |
|                                             Log Out
 | |
|                                         </Dropdown.Link>
 | |
|                                     </Dropdown.Content>
 | |
|                                 </Dropdown>
 | |
|                             </div>
 | |
|                         </div>
 | |
| 
 | |
|                         <div className="-me-2 flex items-center sm:hidden">
 | |
|                             <button
 | |
|                                 onClick={() =>
 | |
|                                     setShowingNavigationDropdown(
 | |
|                                         (previousState) => !previousState,
 | |
|                                     )
 | |
|                                 }
 | |
|                                 className="inline-flex items-center justify-center rounded-md p-2 text-gray-400 transition duration-150 ease-in-out hover:bg-gray-100 hover:text-gray-500 focus:bg-gray-100 focus:text-gray-500 focus:outline-none"
 | |
|                             >
 | |
|                                 <svg
 | |
|                                     className="h-6 w-6"
 | |
|                                     stroke="currentColor"
 | |
|                                     fill="none"
 | |
|                                     viewBox="0 0 24 24"
 | |
|                                 >
 | |
|                                     <path
 | |
|                                         className={
 | |
|                                             !showingNavigationDropdown
 | |
|                                                 ? 'inline-flex'
 | |
|                                                 : 'hidden'
 | |
|                                         }
 | |
|                                         strokeLinecap="round"
 | |
|                                         strokeLinejoin="round"
 | |
|                                         strokeWidth="2"
 | |
|                                         d="M4 6h16M4 12h16M4 18h16"
 | |
|                                     />
 | |
|                                     <path
 | |
|                                         className={
 | |
|                                             showingNavigationDropdown
 | |
|                                                 ? 'inline-flex'
 | |
|                                                 : 'hidden'
 | |
|                                         }
 | |
|                                         strokeLinecap="round"
 | |
|                                         strokeLinejoin="round"
 | |
|                                         strokeWidth="2"
 | |
|                                         d="M6 18L18 6M6 6l12 12"
 | |
|                                     />
 | |
|                                 </svg>
 | |
|                             </button>
 | |
|                         </div>
 | |
|                     </div>
 | |
|                 </div>
 | |
| 
 | |
|                 <div
 | |
|                     className={
 | |
|                         (showingNavigationDropdown ? 'block' : 'hidden') +
 | |
|                         ' sm:hidden'
 | |
|                     }
 | |
|                 >
 | |
|                     <div className="space-y-1 pb-3 pt-2">
 | |
|                         <ResponsiveNavLink
 | |
|                             href={route('dashboard')}
 | |
|                             active={route().current('dashboard')}
 | |
|                         >
 | |
|                             Dashboard
 | |
|                         </ResponsiveNavLink>
 | |
|                     </div>
 | |
| 
 | |
|                     <div className="border-t border-gray-200 pb-1 pt-4">
 | |
|                         <div className="px-4">
 | |
|                             <div className="text-base font-medium text-gray-800">
 | |
|                                 {user.name}
 | |
|                             </div>
 | |
|                             <div className="text-sm font-medium text-gray-500">
 | |
|                                 {user.email}
 | |
|                             </div>
 | |
|                         </div>
 | |
| 
 | |
|                         <div className="mt-3 space-y-1">
 | |
|                             <ResponsiveNavLink href={route('profile.edit')}>
 | |
|                                 Profile
 | |
|                             </ResponsiveNavLink>
 | |
|                             <ResponsiveNavLink
 | |
|                                 method="post"
 | |
|                                 href={route('logout')}
 | |
|                                 as="button"
 | |
|                             >
 | |
|                                 Log Out
 | |
|                             </ResponsiveNavLink>
 | |
|                         </div>
 | |
|                     </div>
 | |
|                 </div>
 | |
|             </nav>
 | |
| 
 | |
|             {header && (
 | |
|                 <header className="bg-white shadow">
 | |
|                     <div className="mx-auto max-w-7xl px-4 py-6 sm:px-6 lg:px-8">
 | |
|                         {header}
 | |
|                     </div>
 | |
|                 </header>
 | |
|             )}
 | |
| 
 | |
|             <main>{children}</main>
 | |
|         </div>
 | |
|     );
 | |
| }
 |