// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import * as React from "react"; import { AppBar, Toolbar, Typography, Grid } from "@material-ui/core"; import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core/styles'; import { Link } from "react-router-dom"; import { User } from "~/models/user"; import { SearchBar } from "~/views-components/search-bar/search-bar"; import { Routes } from '~/routes/routes'; import { NotificationsMenu } from "~/views-components/main-app-bar/notifications-menu"; import { AccountMenu } from "~/views-components/main-app-bar/account-menu"; import { HelpMenu } from '~/views-components/main-app-bar/help-menu'; import { ReactNode } from "react"; import { AdminMenu } from "~/views-components/main-app-bar/admin-menu"; import { pluginConfig } from '~/plugins'; type CssRules = 'toolbar' | 'link'; const styles: StyleRulesCallback = () => ({ link: { textDecoration: 'none', color: 'inherit' }, toolbar: { height: '56px' } }); interface MainAppBarDataProps { user?: User; buildInfo?: string; children?: ReactNode; uuidPrefix: string; siteBanner: string; } export type MainAppBarProps = MainAppBarDataProps & WithStyles; export const MainAppBar = withStyles(styles)( (props: MainAppBarProps) => { return {pluginConfig.appBarLeft || ({props.uuidPrefix}) {props.buildInfo} } {pluginConfig.appBarMiddle || (props.user && props.user.isActive && )} {props.user ? <> {pluginConfig.appBarRight || <> {props.user.isAdmin && } } : pluginConfig.appBarRight || } {props.children} ; } );