Update header for additional pages
This commit is contained in:
@@ -1,3 +1,6 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { usePathname } from "next/navigation";
|
||||||
import Logo from "./Logo";
|
import Logo from "./Logo";
|
||||||
import MenuBar from "./MenuBar";
|
import MenuBar from "./MenuBar";
|
||||||
import MenuBarItem from "./MenuBarItem";
|
import MenuBarItem from "./MenuBarItem";
|
||||||
@@ -35,7 +38,9 @@ export const logoConfig = [
|
|||||||
{ breakpoint: "hidden xl:block", size: "headerXl", showText: true },
|
{ breakpoint: "hidden xl:block", size: "headerXl", showText: true },
|
||||||
];
|
];
|
||||||
|
|
||||||
export default function Header({ onToggle }) {
|
export default function Header() {
|
||||||
|
const pathname = usePathname();
|
||||||
|
|
||||||
// Schema markup for site navigation
|
// Schema markup for site navigation
|
||||||
const schemaData = {
|
const schemaData = {
|
||||||
"@context": "https://schema.org",
|
"@context": "https://schema.org",
|
||||||
@@ -55,7 +60,7 @@ export default function Header({ onToggle }) {
|
|||||||
key={index}
|
key={index}
|
||||||
href={item.href}
|
href={item.href}
|
||||||
size={item.extraPadding && size === "xsmall" ? "xsmallUseCases" : size}
|
size={item.extraPadding && size === "xsmall" ? "xsmallUseCases" : size}
|
||||||
onClick={onToggle}
|
isActive={pathname === item.href}
|
||||||
ariaLabel={`Navigate to ${item.text} page`}
|
ariaLabel={`Navigate to ${item.text} page`}
|
||||||
>
|
>
|
||||||
{item.text}
|
{item.text}
|
||||||
@@ -109,7 +114,7 @@ export default function Header({ onToggle }) {
|
|||||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(schemaData) }}
|
dangerouslySetInnerHTML={{ __html: JSON.stringify(schemaData) }}
|
||||||
/>
|
/>
|
||||||
<header
|
<header
|
||||||
className="bg-[var(--color-surface-default-primary)] w-full border-b border-[var(--border-color-default-tertiary)]"
|
className="sticky top-0 z-50 bg-[var(--color-surface-default-primary)] w-full border-b border-[var(--border-color-default-tertiary)]"
|
||||||
role="banner"
|
role="banner"
|
||||||
aria-label="Main navigation header"
|
aria-label="Main navigation header"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useState } from "react";
|
import { usePathname } from "next/navigation";
|
||||||
import Logo from "./Logo";
|
import Logo from "./Logo";
|
||||||
import MenuBar from "./MenuBar";
|
import MenuBar from "./MenuBar";
|
||||||
import MenuBarItem from "./MenuBarItem";
|
import MenuBarItem from "./MenuBarItem";
|
||||||
@@ -8,10 +8,9 @@ import Button from "./Button";
|
|||||||
import AvatarContainer from "./AvatarContainer";
|
import AvatarContainer from "./AvatarContainer";
|
||||||
import Avatar from "./Avatar";
|
import Avatar from "./Avatar";
|
||||||
import HeaderTab from "./HeaderTab";
|
import HeaderTab from "./HeaderTab";
|
||||||
import Header from "./Header";
|
|
||||||
|
|
||||||
export default function HomeHeader() {
|
export default function HomeHeader() {
|
||||||
const [showRegularHeader, setShowRegularHeader] = useState(false);
|
const pathname = usePathname();
|
||||||
|
|
||||||
// Schema markup for site navigation (home page specific)
|
// Schema markup for site navigation (home page specific)
|
||||||
const schemaData = {
|
const schemaData = {
|
||||||
@@ -79,10 +78,10 @@ export default function HomeHeader() {
|
|||||||
? size === "home" || size === "homeMd"
|
? size === "home" || size === "homeMd"
|
||||||
? "homeMd"
|
? "homeMd"
|
||||||
: size === "large"
|
: size === "large"
|
||||||
? "large"
|
? "large"
|
||||||
: size === "homeXlarge"
|
: size === "homeXlarge"
|
||||||
? "homeXlarge"
|
? "homeXlarge"
|
||||||
: "xsmallUseCases"
|
: "xsmallUseCases"
|
||||||
: size
|
: size
|
||||||
}
|
}
|
||||||
variant={
|
variant={
|
||||||
@@ -95,7 +94,7 @@ export default function HomeHeader() {
|
|||||||
? "home"
|
? "home"
|
||||||
: "default"
|
: "default"
|
||||||
}
|
}
|
||||||
onClick={() => setShowRegularHeader(!showRegularHeader)}
|
isActive={pathname === item.href}
|
||||||
ariaLabel={`Navigate to ${item.text} page`}
|
ariaLabel={`Navigate to ${item.text} page`}
|
||||||
>
|
>
|
||||||
{item.text}
|
{item.text}
|
||||||
@@ -148,10 +147,6 @@ export default function HomeHeader() {
|
|||||||
return <Logo size={size} showText={showText} />;
|
return <Logo size={size} showText={showText} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (showRegularHeader) {
|
|
||||||
return <Header onToggle={() => setShowRegularHeader(false)} />;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<script
|
<script
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ export default function MenuBarItem({
|
|||||||
size = "default",
|
size = "default",
|
||||||
className = "",
|
className = "",
|
||||||
disabled = false,
|
disabled = false,
|
||||||
|
isActive = false,
|
||||||
ariaLabel,
|
ariaLabel,
|
||||||
...props
|
...props
|
||||||
}) {
|
}) {
|
||||||
@@ -56,6 +57,27 @@ export default function MenuBarItem({
|
|||||||
"active:outline-2 active:outline-[var(--color-content-default-primary)] focus:outline-2 focus:outline-[var(--color-content-default-primary)]",
|
"active:outline-2 active:outline-[var(--color-content-default-primary)] focus:outline-2 focus:outline-[var(--color-content-default-primary)]",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const activeStateStyles = {
|
||||||
|
xsmall:
|
||||||
|
"!outline-1 !outline-[var(--color-content-default-brand-primary)] !text-[var(--color-content-default-brand-primary)] focus:!outline-1 focus:!outline-[var(--color-content-default-brand-primary)]",
|
||||||
|
xsmallUseCases:
|
||||||
|
"!outline-1 !outline-[var(--color-content-default-brand-primary)] !text-[var(--color-content-default-brand-primary)] focus:!outline-1 focus:!outline-[var(--color-content-default-brand-primary)]",
|
||||||
|
default:
|
||||||
|
"!outline-[1.5px] !outline-[var(--color-content-default-brand-primary)] !text-[var(--color-content-default-brand-primary)] focus:!outline-[1.5px] focus:!outline-[var(--color-content-default-brand-primary)]",
|
||||||
|
homeMd:
|
||||||
|
"!outline-[1.5px] !outline-[var(--color-content-default-brand-primary)] !text-[var(--color-content-default-brand-primary)] focus:!outline-[1.5px] focus:!outline-[var(--color-content-default-brand-primary)]",
|
||||||
|
homeUseCases:
|
||||||
|
"!outline-[1.5px] !outline-[var(--color-content-default-brand-primary)] !text-[var(--color-content-default-brand-primary)] focus:!outline-[1.5px] focus:!outline-[var(--color-content-default-brand-primary)]",
|
||||||
|
large:
|
||||||
|
"!outline-[1.75px] !outline-[var(--color-content-default-brand-primary)] !text-[var(--color-content-default-brand-primary)] focus:!outline-[1.75px] focus:!outline-[var(--color-content-default-brand-primary)]",
|
||||||
|
largeUseCases:
|
||||||
|
"!outline-[1.75px] !outline-[var(--color-content-default-brand-primary)] !text-[var(--color-content-default-brand-primary)] focus:!outline-[1.75px] focus:!outline-[var(--color-content-default-brand-primary)]",
|
||||||
|
homeXlarge:
|
||||||
|
"!outline-[2px] !outline-[var(--color-content-default-brand-primary)] !text-[var(--color-content-default-brand-primary)] focus:!outline-[2px] focus:!outline-[var(--color-content-default-brand-primary)]",
|
||||||
|
xlarge:
|
||||||
|
"!outline-2 !outline-[var(--color-content-default-brand-primary)] !text-[var(--color-content-default-brand-primary)] focus:!outline-2 focus:!outline-[var(--color-content-default-brand-primary)]",
|
||||||
|
};
|
||||||
|
|
||||||
const sizeStyles = {
|
const sizeStyles = {
|
||||||
default:
|
default:
|
||||||
"px-[var(--spacing-measures-spacing-016)] py-[var(--spacing-measures-spacing-016)] gap-[var(--spacing-scale-004)]",
|
"px-[var(--spacing-measures-spacing-016)] py-[var(--spacing-measures-spacing-016)] gap-[var(--spacing-scale-004)]",
|
||||||
@@ -110,7 +132,7 @@ export default function MenuBarItem({
|
|||||||
finalVariant === "home"
|
finalVariant === "home"
|
||||||
? homeOutlineStyles[size]
|
? homeOutlineStyles[size]
|
||||||
: activeOutlineStyles[size]
|
: activeOutlineStyles[size]
|
||||||
} ${className}`;
|
} ${isActive ? activeStateStyles[size] : ""} ${className}`;
|
||||||
|
|
||||||
const accessibilityProps = {
|
const accessibilityProps = {
|
||||||
...(ariaLabel && { "aria-label": ariaLabel }),
|
...(ariaLabel && { "aria-label": ariaLabel }),
|
||||||
|
|||||||
Reference in New Issue
Block a user