UNPKG

@motor-js/cli

Version:

CLI tool for generating Qlik Sense Mashups

93 lines (82 loc) 2.74 kB
import { useState, useCallback, } from "react"; import { Search, Menu, X } from "react-feather"; import { useSelections } from "@motor-js/engine" import { Button, Navbar } from "../../components"; import { menuData } from "../../components/data"; import Logo from "../../components/logo"; import SearchBar from "../../components/search-bar"; import CurrentSelections from "../../components/current-selections"; import FilterDropDown from "../../components/filter-dropdown" import { StyledHeader, StyledLogo, StyledNavbarWrap, StyledNavbarMenu, StyleNavbarRight, StyledNavbarElement, StyledNavbarHeader, StyledNavbarBody, StyledNavbarTitle, StyledMenuBtn, } from "./style"; const Header = () => { const [menuOpen, setMenuOpen] = useState(false); const [searchOpen, setSearchOpen] = useState(false); const { selections, clearSelections } = useSelections(); const searchHandler = useCallback(() => { setSearchOpen((prev) => !prev); }, []); const menuHandler = useCallback(() => { setMenuOpen((prev) => !prev); }, []); return ( <> <StyledHeader> <StyledMenuBtn variant="texted" onClick={menuHandler} > <Menu size={20} strokeWidth="2.5px" /> </StyledMenuBtn> <StyledLogo> <Logo /> </StyledLogo> <StyledNavbarWrap $isOpen={menuOpen} onClick={menuHandler}> <StyledNavbarMenu $isOpen={menuOpen} onClick={(e) => e.stopPropagation()} > <StyledNavbarHeader> <Logo /> <Button variant="texted" onClick={menuHandler}> <X color="#7987a1" width={20} strokeWidth="2.5px" /> </Button> </StyledNavbarHeader> <StyledNavbarBody> <StyledNavbarTitle>MAIN NAVIGATION</StyledNavbarTitle> <Navbar menus={menuData} /> </StyledNavbarBody> </StyledNavbarMenu> </StyledNavbarWrap> <StyleNavbarRight> <StyledNavbarElement ml={["8px", "15px"]}> <CurrentSelections selections={selections} clear={clearSelections} /> </StyledNavbarElement> <StyledNavbarElement ml={["8px", "15px"]}> <FilterDropDown /> </StyledNavbarElement> <StyledNavbarElement ml={["8px", "15px"]}> <Button variant="texted" onClick={searchHandler}> <Search className="header-icon" /> </Button> </StyledNavbarElement> </StyleNavbarRight> </StyledHeader> <SearchBar isOpen={searchOpen} onClose={searchHandler} /> </> ); }; Header.defaultProps = { sidebarLayout: 1, }; export default Header;