/*! ========================================================= * Argon Dashboard Chakra PRO - v1.0.0 ========================================================= * Product Page: https://www.creative-tim.com/product/argon-dashboard-chakra-pro * Copyright 2022 Creative Tim (https://www.creative-tim.com/) * Designed and Coded by Simmmple & Creative Tim ========================================================= * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. */ // Chakra Imports import { Box, Breadcrumb, BreadcrumbItem, BreadcrumbLink, Flex, Link, useColorModeValue, } from "@chakra-ui/react"; import { SidebarContext } from "contexts/SidebarContext"; import PropTypes from "prop-types"; import React, { useState, useEffect, useContext } from "react"; import AdminNavbarLinks from "./AdminNavbarLinks"; import { HamburgerIcon } from "@chakra-ui/icons"; export default function AdminNavbar(props) { const [scrolled, setScrolled] = useState(false); const { sidebarWidth, setSidebarWidth, toggleSidebar, setToggleSidebar, } = useContext(SidebarContext); useEffect(() => { window.addEventListener("scroll", changeNavbar); return () => { window.removeEventListener("scroll", changeNavbar); }; }); const { variant, children, fixed, secondary, brandText, onOpen, ...rest } = props; // Here are all the props that may change depending on navbar's type or state.(secondary, variant, scrolled) let mainText = fixed && scrolled ? useColorModeValue("gray.700", "gray.200") : useColorModeValue("white", "gray.200"); let secondaryText = fixed && scrolled ? useColorModeValue("gray.700", "gray.200") : useColorModeValue("white", "gray.200"); let navbarPosition = "absolute"; let navbarFilter = "none"; let navbarBackdrop = "blur(20px)"; let navbarShadow = "none"; let navbarBg = "none"; let navbarBorder = "transparent"; let secondaryMargin = "0px"; let paddingX = "15px"; if (props.fixed === true) if (scrolled === true) { navbarPosition = "fixed"; navbarShadow = useColorModeValue( "0px 7px 23px rgba(0, 0, 0, 0.05)", "none" ); navbarBg = useColorModeValue( "linear-gradient(112.83deg, rgba(255, 255, 255, 0.82) 0%, rgba(255, 255, 255, 0.8) 110.84%)", "linear-gradient(112.83deg, rgba(255, 255, 255, 0.21) 0%, rgba(255, 255, 255, 0) 110.84%)" ); navbarBorder = useColorModeValue("#FFFFFF", "rgba(255, 255, 255, 0.31)"); navbarFilter = useColorModeValue( "none", "drop-shadow(0px 7px 23px rgba(0, 0, 0, 0.05))" ); } if (props.secondary) { navbarBackdrop = "none"; navbarPosition = "absolute"; mainText = "white"; secondaryText = "white"; secondaryMargin = "22px"; paddingX = "30px"; } const changeNavbar = () => { if (window.scrollY > 1) { setScrolled(true); } else { setScrolled(false); } }; return ( Pages {brandText} {/* Here we create navbar brand, based on route name */} {brandText} { setSidebarWidth(sidebarWidth === 275 ? 120 : 275); setToggleSidebar(!toggleSidebar); }} /> ); } AdminNavbar.propTypes = { brandText: PropTypes.string, variant: PropTypes.string, secondary: PropTypes.bool, fixed: PropTypes.bool, onOpen: PropTypes.func, };