|
1 |
| -import React, { forwardRef, HTMLAttributes, useMemo } from 'react'; |
2 |
| -import { BodyShort, Heading } from '@navikt/ds-react'; |
| 1 | +import React from 'react'; |
| 2 | +import { Heading } from '@navikt/ds-react'; |
3 | 3 | import * as classes from 'components/PageHeader/PageHeader.module.css';
|
4 | 4 |
|
5 |
| -export interface PageHeaderProps extends HTMLAttributes<HTMLDivElement> { |
6 |
| - /** |
7 |
| - * PageHeader title |
8 |
| - */ |
| 5 | +export interface PageHeaderProps { |
9 | 6 | children: string | React.ReactNode;
|
10 |
| - /** |
11 |
| - * Pictogram placed in PageHeader |
12 |
| - */ |
13 |
| - illustration?: React.ReactNode; |
14 |
| - /** |
15 |
| - * Short text placed under title |
16 |
| - */ |
17 |
| - description?: string; |
18 |
| - /** |
19 |
| - * Predefined variants for PageHeader |
20 |
| - * @default "guide" |
21 |
| - */ |
22 |
| - variant?: 'situation' | 'product' | 'guide'; |
23 |
| - /** |
24 |
| - * Decides how to align content |
25 |
| - * @default "left" |
26 |
| - */ |
27 |
| - align?: 'left' | 'center'; |
28 | 7 | }
|
29 | 8 |
|
30 |
| -// eslint-disable-next-line react/display-name |
31 |
| -const PageHeader = forwardRef<HTMLDivElement, PageHeaderProps>( |
32 |
| - ( |
33 |
| - { children, className, illustration, description, variant = 'guide', align = 'left', ...rest }, |
34 |
| - ref |
35 |
| - ) => { |
36 |
| - const variantClass = useMemo(() => { |
37 |
| - switch (variant) { |
38 |
| - case 'situation': |
39 |
| - return 'navdsPageHeaderSituation'; |
40 |
| - case 'product': |
41 |
| - return 'navdsPageHeaderProduct'; |
42 |
| - default: |
43 |
| - return 'navdsPageHeaderGuide'; |
44 |
| - } |
45 |
| - }, [variant]); |
46 |
| - const alignClass = useMemo(() => { |
47 |
| - switch (align) { |
48 |
| - case 'center': |
49 |
| - return 'navdsPageHeaderCenter'; |
50 |
| - default: |
51 |
| - return 'navdsPageHeaderLeft'; |
52 |
| - } |
53 |
| - }, [align]); |
54 |
| - return ( |
55 |
| - <div className={classes?.pageHeaderWrapper}> |
56 |
| - <div |
57 |
| - ref={ref} |
58 |
| - className={`${classes?.navdsPageHeader} ${className} ${classes?.[variantClass]} ${classes?.[alignClass]}`} |
59 |
| - {...rest} |
60 |
| - > |
61 |
| - {illustration && ( |
62 |
| - <div className={classes?.navdsPageHeaderIllustration}>{illustration}</div> |
63 |
| - )} |
64 |
| - <div className="navdsPageHeaderWrapper"> |
65 |
| - <Heading className="navdsPageHeaderTitle" size="xlarge" level="1"> |
66 |
| - {children} |
67 |
| - </Heading> |
68 |
| - {description && ( |
69 |
| - <BodyShort className="navdsPageHeaderDescription">{description}</BodyShort> |
70 |
| - )} |
71 |
| - </div> |
72 |
| - </div> |
| 9 | +export const PageHeader = ({ children }: PageHeaderProps) => { |
| 10 | + return ( |
| 11 | + <div className={classes.pageHeaderWrapper}> |
| 12 | + <div className={`${classes.navdsPageHeader} ${classes.navdsPageHeaderGuide} ${classes.navdsPageHeaderCenter}`}> |
| 13 | + <Heading size="xlarge" level="1"> |
| 14 | + {children} |
| 15 | + </Heading> |
73 | 16 | </div>
|
74 |
| - ); |
75 |
| - } |
76 |
| -); |
77 |
| - |
78 |
| -export default PageHeader; |
| 17 | + </div> |
| 18 | + ); |
| 19 | +}; |
0 commit comments