2023-07-27 18:59:40 -04:00
|
|
|
import { Link } from 'react-router-dom'
|
2023-07-13 07:22:08 -04:00
|
|
|
import { Toolbar } from '../Toolbar'
|
2023-07-27 18:59:40 -04:00
|
|
|
import { useStore } from '../useStore'
|
|
|
|
import UserSidebarMenu from './UserSidebarMenu'
|
2023-08-10 13:30:32 -04:00
|
|
|
import { paths } from '../Router'
|
2023-08-15 21:56:24 -04:00
|
|
|
import { isTauri } from '../lib/isTauri'
|
2023-07-13 07:22:08 -04:00
|
|
|
|
|
|
|
interface AppHeaderProps extends React.PropsWithChildren {
|
|
|
|
showToolbar?: boolean
|
2023-08-15 21:56:24 -04:00
|
|
|
filename?: string
|
2023-08-06 21:29:26 -04:00
|
|
|
className?: string
|
2023-07-13 07:22:08 -04:00
|
|
|
}
|
|
|
|
|
2023-08-06 21:29:26 -04:00
|
|
|
export const AppHeader = ({
|
|
|
|
showToolbar = true,
|
2023-08-15 21:56:24 -04:00
|
|
|
filename = '',
|
2023-08-06 21:29:26 -04:00
|
|
|
children,
|
|
|
|
className = '',
|
|
|
|
}: AppHeaderProps) => {
|
2023-07-27 18:59:40 -04:00
|
|
|
const { user } = useStore((s) => ({
|
|
|
|
user: s.user,
|
|
|
|
}))
|
|
|
|
|
2023-07-13 07:22:08 -04:00
|
|
|
return (
|
2023-08-06 21:29:26 -04:00
|
|
|
<header
|
|
|
|
className={
|
2023-08-08 18:30:26 -04:00
|
|
|
'overlaid-panes sticky top-0 z-10 py-1 px-5 bg-chalkboard-10/50 dark:bg-chalkboard-100/50 border-b dark:border-b-2 border-chalkboard-30 dark:border-chalkboard-90 flex justify-between items-center ' +
|
2023-08-06 21:29:26 -04:00
|
|
|
className
|
|
|
|
}
|
|
|
|
>
|
2023-08-15 21:56:24 -04:00
|
|
|
<Link
|
|
|
|
to={isTauri() ? paths.HOME : paths.INDEX}
|
|
|
|
className="flex items-center gap-4"
|
|
|
|
>
|
2023-07-13 07:22:08 -04:00
|
|
|
<img
|
|
|
|
src="/kitt-arcade-winking.svg"
|
|
|
|
alt="KittyCAD App"
|
|
|
|
className="h-9 w-auto"
|
|
|
|
/>
|
2023-08-15 21:56:24 -04:00
|
|
|
<span className="text-sm text-chalkboard-110 dark:text-chalkboard-20 min-w-max">
|
|
|
|
{isTauri() && filename ? filename : 'KittyCAD Modeling App'}
|
|
|
|
</span>
|
2023-07-27 18:59:40 -04:00
|
|
|
</Link>
|
2023-07-13 07:22:08 -04:00
|
|
|
{/* Toolbar if the context deems it */}
|
|
|
|
{showToolbar && (
|
|
|
|
<div className="max-w-4xl">
|
|
|
|
<Toolbar />
|
|
|
|
</div>
|
|
|
|
)}
|
2023-07-27 18:59:40 -04:00
|
|
|
{/* If there are children, show them, otherwise show User menu */}
|
|
|
|
{children || <UserSidebarMenu user={user} />}
|
2023-07-13 07:22:08 -04:00
|
|
|
</header>
|
|
|
|
)
|
|
|
|
}
|