All files / shared / components Page.tsx

68.18% Statements 15/22
58.82% Branches 10/17
66.66% Functions 4/6
75% Lines 15/20

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46  69x     210x                                                             69x   254x                
import type { ReactNode } from 'react'
import { Breadcrumb } from './Breadcrumb'
 
interface BreadcrumbItem {
  label: string
  href?: string
}
 
interface PageHeaderProps {
  title: ReactNode
  breadcrumbs?: BreadcrumbItem[]
  actions?: ReactNode
}
 
interface PageProps {
  header?: ReactNode
  children: ReactNode
  className?: string
}
 
function PageHeader({ title, breadcrumbs, actions }: PageHeaderProps) {
  return (
    <div className="flex items-center justify-between gap-4">
      <div>
        {breadcrumbs && breadcrumbs.length > 0 && (
          <Breadcrumb items={breadcrumbs} />
        )}
        <h1 className="text-2xl font-semibold">{title}</h1>
      </div>
      {actions && <div className="flex items-center gap-2">{actions}</div>}
    </div>
  )
}
 
function Page({ header, children, className }: PageProps) {
  return (
    <div className={className}>
      {header}
      <main>{children}</main>
    </div>
  )
}
 
export { Page, PageHeader }
export type { BreadcrumbItem, PageHeaderProps, PageProps }