aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/organisms/layout/site-header.tsx
blob: e8953c0a1ca23da131c58911ed636b3b9747af31 (plain)
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
47
import type { FC } from 'react';
import { Header } from '../../atoms';
import { Branding, type BrandingProps } from '../../molecules';
import { Toolbar, type ToolbarProps } from '../toolbar';
import styles from './site-header.module.scss';

export type SiteHeaderProps = BrandingProps &
  Pick<
    ToolbarProps,
    'ackeeStorageKey' | 'motionStorageKey' | 'nav' | 'searchPage'
  > & {
    /**
     * Set additional classnames to the header element.
     */
    className?: string;
  };

/**
 * SiteHeader component
 *
 * Render the website header.
 */
export const SiteHeader: FC<SiteHeaderProps> = ({
  ackeeStorageKey,
  className,
  motionStorageKey,
  nav,
  searchPage,
  ...props
}) => {
  const headerClass = `${styles.wrapper} ${className}`;

  return (
    <Header className={headerClass}>
      <div className={styles.body}>
        <Branding {...props} />
        <Toolbar
          ackeeStorageKey={ackeeStorageKey}
          className={styles.toolbar}
          motionStorageKey={motionStorageKey}
          nav={nav}
          searchPage={searchPage}
        />
      </div>
    </Header>
  );
};