mirror of
https://github.com/vercel/commerce.git
synced 2025-07-22 20:26:49 +00:00
95 lines
2.4 KiB
TypeScript
95 lines
2.4 KiB
TypeScript
import { FC } from 'react'
|
|
import Link from 'next/link'
|
|
import s from './Navbar.module.css'
|
|
import NavbarRoot from './NavbarRoot'
|
|
import { Logo, Container } from '@components/ui'
|
|
import { Searchbar, UserNav } from '@components/common'
|
|
import { getSentryRelease } from '@sentry/node'
|
|
import * as Sentry from '@sentry/nextjs'
|
|
|
|
interface Link {
|
|
href: string
|
|
label: string
|
|
}
|
|
interface NavbarProps {
|
|
links?: Link[]
|
|
}
|
|
|
|
const Navbar: FC<NavbarProps> = ({ links }) => (
|
|
<NavbarRoot>
|
|
<Container>
|
|
<button
|
|
type="button"
|
|
onClick={() => {
|
|
throw new Error("Sentry Frontend Error");
|
|
}}
|
|
>
|
|
Throw error
|
|
</button>
|
|
<button
|
|
type="button"
|
|
onClick={() => {
|
|
try {
|
|
return 1/0
|
|
}
|
|
catch (exception) {
|
|
Sentry.captureException(exception)
|
|
}
|
|
}}
|
|
>
|
|
Handled error
|
|
</button>
|
|
<button
|
|
type="button"
|
|
onClick={async () =>
|
|
{
|
|
console.log('Calling api')
|
|
const response = await fetch('/api/error')
|
|
console.log(response.status)
|
|
if(response.status === 500) {
|
|
console.log('Server error')
|
|
Sentry.captureException("API Call to /api/error failed")
|
|
}
|
|
const data = response.json()
|
|
console.log(data)
|
|
}
|
|
}
|
|
>
|
|
Generate Server Error
|
|
</button>
|
|
<div className={s.nav}>
|
|
<div className="flex items-center flex-1">
|
|
<Link href="/">
|
|
<a className={s.logo} aria-label="Logo">
|
|
<Logo />
|
|
</a>
|
|
</Link>
|
|
<nav className={s.navMenu}>
|
|
<Link href="/search">
|
|
<a className={s.link}>All</a>
|
|
</Link>
|
|
{links?.map((l) => (
|
|
<Link href={l.href} key={l.href}>
|
|
<a className={s.link}>{l.label}</a>
|
|
</Link>
|
|
))}
|
|
</nav>
|
|
</div>
|
|
{process.env.COMMERCE_SEARCH_ENABLED && (
|
|
<div className="justify-center flex-1 hidden lg:flex">
|
|
<Searchbar />
|
|
</div>
|
|
)}
|
|
<div className="flex items-center justify-end flex-1 space-x-8">
|
|
<UserNav />
|
|
</div>
|
|
</div>
|
|
<div className="flex pb-4 lg:px-6 lg:hidden">
|
|
<Searchbar id="mobile-search" />
|
|
</div>
|
|
</Container>
|
|
</NavbarRoot>
|
|
)
|
|
|
|
export default Navbar
|