@amsterdam/design-system-react 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/README.md +1 -1
  2. package/dist/Accordion/Accordion.js +4 -1
  3. package/dist/Accordion/Accordion.test.js +19 -3
  4. package/dist/Accordion/AccordionSection.test.js +1 -1
  5. package/dist/ActionGroup/ActionGroup.test.js +1 -1
  6. package/dist/Alert/Alert.test.js +1 -1
  7. package/dist/Avatar/Avatar.test.js +1 -1
  8. package/dist/Badge/Badge.test.js +1 -1
  9. package/dist/Blockquote/Blockquote.test.js +3 -4
  10. package/dist/Breadcrumb/Breadcrumb.test.js +1 -1
  11. package/dist/Breadcrumb/BreadcrumbLink.test.js +1 -1
  12. package/dist/Breakout/Breakout.test.js +11 -19
  13. package/dist/Breakout/BreakoutCell.d.ts +3 -1
  14. package/dist/Breakout/BreakoutCell.js +1 -0
  15. package/dist/Breakout/BreakoutCell.test.js +20 -16
  16. package/dist/Button/Button.test.js +8 -1
  17. package/dist/Card/Card.d.ts +10 -0
  18. package/dist/Card/Card.js +8 -1
  19. package/dist/Card/Card.test.js +1 -1
  20. package/dist/Card/CardHeading.d.ts +11 -0
  21. package/dist/Card/CardHeading.js +10 -0
  22. package/dist/Card/CardHeading.test.js +34 -0
  23. package/dist/Card/CardHeadingGroup.test.js +1 -1
  24. package/dist/Card/CardImage.d.ts +7 -0
  25. package/dist/Card/CardImage.js +10 -0
  26. package/dist/{Footer/FooterSpotlight.test.js → Card/CardImage.test.js} +9 -9
  27. package/dist/Card/CardLink.test.js +1 -1
  28. package/dist/CharacterCount/CharacterCount.test.js +1 -1
  29. package/dist/Checkbox/Checkbox.test.js +2 -3
  30. package/dist/Column/Column.d.ts +4 -3
  31. package/dist/Column/Column.js +2 -1
  32. package/dist/Column/Column.test.js +10 -12
  33. package/dist/DateInput/DateInput.test.js +1 -1
  34. package/dist/DescriptionList/DescriptionList.test.js +1 -1
  35. package/dist/DescriptionList/DescriptionListDescription.test.js +1 -1
  36. package/dist/DescriptionList/DescriptionListSection.test.js +1 -1
  37. package/dist/DescriptionList/DescriptionListTerm.test.js +1 -1
  38. package/dist/Dialog/Dialog.test.js +1 -1
  39. package/dist/ErrorMessage/ErrorMessage.test.js +1 -1
  40. package/dist/Field/Field.test.js +1 -1
  41. package/dist/FieldSet/FieldSet.test.js +1 -1
  42. package/dist/Figure/Figure.test.js +1 -1
  43. package/dist/Figure/FigureCaption.test.js +1 -1
  44. package/dist/FileInput/FileInput.test.js +1 -1
  45. package/dist/FileList/FileList.test.js +1 -1
  46. package/dist/FileList/FileListItem.test.js +1 -1
  47. package/dist/Grid/Grid.d.ts +8 -5
  48. package/dist/Grid/Grid.js +2 -0
  49. package/dist/Grid/Grid.test.js +13 -29
  50. package/dist/Grid/GridCell.test.js +2 -8
  51. package/dist/Grid/paddingClasses.d.ts +2 -2
  52. package/dist/Heading/Heading.test.js +17 -11
  53. package/dist/Hint/Hint.test.js +1 -1
  54. package/dist/Icon/Icon.d.ts +1 -1
  55. package/dist/Icon/Icon.test.js +3 -4
  56. package/dist/IconButton/IconButton.js +1 -1
  57. package/dist/IconButton/IconButton.test.js +1 -1
  58. package/dist/Image/Image.d.ts +4 -8
  59. package/dist/Image/Image.test.js +1 -1
  60. package/dist/ImageSlider/ImageSlider.test.js +1 -1
  61. package/dist/ImageSlider/ImageSliderItem.test.js +1 -1
  62. package/dist/ImageSlider/ImageSliderScroller.test.js +1 -1
  63. package/dist/ImageSlider/ImageSliderThumbnails.js +1 -1
  64. package/dist/ImageSlider/ImageSliderThumbnails.test.js +1 -1
  65. package/dist/InvalidFormAlert/InvalidFormAlert.test.js +1 -1
  66. package/dist/Label/Label.test.js +3 -4
  67. package/dist/Link/Link.d.ts +0 -6
  68. package/dist/Link/Link.js +1 -1
  69. package/dist/Link/Link.test.js +22 -29
  70. package/dist/LinkList/LinkList.test.js +1 -1
  71. package/dist/LinkList/LinkListLink.test.js +1 -1
  72. package/dist/Logo/Logo.test.js +2 -3
  73. package/dist/Mark/Mark.test.js +1 -1
  74. package/dist/OrderedList/OrderedList.test.js +1 -1
  75. package/dist/OrderedList/OrderedListItem.test.js +1 -1
  76. package/dist/Overlap/Overlap.test.js +1 -1
  77. package/dist/{Footer/FooterSpotlight.d.ts → Page/Page.d.ts} +2 -2
  78. package/dist/Page/Page.js +9 -0
  79. package/dist/{MegaMenu/MegaMenu.test.js → Page/Page.test.js} +9 -9
  80. package/dist/Page/index.d.ts +2 -0
  81. package/dist/Page/index.js +1 -0
  82. package/dist/{Footer/Footer.d.ts → PageFooter/PageFooter.d.ts} +2 -2
  83. package/dist/PageFooter/PageFooter.js +17 -0
  84. package/dist/{Footer/Footer.test.js → PageFooter/PageFooter.test.js} +9 -9
  85. package/dist/{Footer/FooterMenu.d.ts → PageFooter/PageFooterMenu.d.ts} +2 -2
  86. package/dist/PageFooter/PageFooterMenu.js +9 -0
  87. package/dist/{Footer/FooterMenu.test.js → PageFooter/PageFooterMenu.test.js} +9 -9
  88. package/dist/{Footer/FooterMenuLink.d.ts → PageFooter/PageFooterMenuLink.d.ts} +2 -2
  89. package/dist/PageFooter/PageFooterMenuLink.js +9 -0
  90. package/dist/{Footer/FooterMenuLink.test.js → PageFooter/PageFooterMenuLink.test.js} +9 -9
  91. package/dist/PageFooter/PageFooterSpotlight.d.ts +9 -0
  92. package/dist/PageFooter/PageFooterSpotlight.js +9 -0
  93. package/dist/{MegaMenu/MegaMenuListCategory.test.js → PageFooter/PageFooterSpotlight.test.js} +9 -9
  94. package/dist/PageFooter/index.d.ts +5 -0
  95. package/dist/PageFooter/index.js +1 -0
  96. package/dist/{Header/Header.d.ts → PageHeader/PageHeader.d.ts} +4 -4
  97. package/dist/PageHeader/PageHeader.js +31 -0
  98. package/dist/{Header/Header.test.js → PageHeader/PageHeader.test.js} +37 -38
  99. package/dist/PageHeader/PageHeaderGridCellNarrowWindowOnly.d.ts +2 -0
  100. package/dist/PageHeader/PageHeaderGridCellNarrowWindowOnly.js +6 -0
  101. package/dist/{Header/HeaderGridCellNarrowWindowOnly.test.js → PageHeader/PageHeaderGridCellNarrowWindowOnly.test.js} +10 -10
  102. package/dist/PageHeader/PageHeaderMenuIcon.d.ts +2 -0
  103. package/dist/PageHeader/PageHeaderMenuIcon.js +2 -0
  104. package/dist/{Header/HeaderMenuLink.d.ts → PageHeader/PageHeaderMenuLink.d.ts} +2 -2
  105. package/dist/PageHeader/PageHeaderMenuLink.js +5 -0
  106. package/dist/{Header/HeaderMenuLink.test.js → PageHeader/PageHeaderMenuLink.test.js} +13 -13
  107. package/dist/PageHeader/index.d.ts +3 -0
  108. package/dist/PageHeader/index.js +1 -0
  109. package/dist/PageHeading/PageHeading.test.js +2 -3
  110. package/dist/Pagination/Pagination.test.js +1 -1
  111. package/dist/Paragraph/Paragraph.test.js +1 -1
  112. package/dist/PasswordInput/PasswordInput.test.js +1 -1
  113. package/dist/Radio/Radio.test.js +1 -1
  114. package/dist/Row/Row.d.ts +4 -3
  115. package/dist/Row/Row.js +2 -1
  116. package/dist/Row/Row.test.js +10 -12
  117. package/dist/SearchField/SearchField.d.ts +2 -0
  118. package/dist/SearchField/SearchField.test.js +2 -3
  119. package/dist/SearchField/SearchFieldInput.test.js +2 -3
  120. package/dist/Select/Select.test.js +1 -1
  121. package/dist/Select/SelectOption.test.js +1 -1
  122. package/dist/Select/SelectOptionGroup.test.js +1 -1
  123. package/dist/SkipLink/SkipLink.test.js +1 -1
  124. package/dist/Spotlight/Spotlight.d.ts +4 -2
  125. package/dist/Spotlight/Spotlight.js +1 -0
  126. package/dist/Spotlight/Spotlight.test.js +11 -9
  127. package/dist/StandaloneLink/StandaloneLink.d.ts +17 -0
  128. package/dist/StandaloneLink/StandaloneLink.js +10 -0
  129. package/dist/StandaloneLink/StandaloneLink.test.js +40 -0
  130. package/dist/StandaloneLink/index.d.ts +2 -0
  131. package/dist/StandaloneLink/index.js +1 -0
  132. package/dist/Switch/Switch.test.js +1 -1
  133. package/dist/Table/Table.test.js +1 -1
  134. package/dist/Table/TableBody.test.js +1 -1
  135. package/dist/Table/TableCaption.test.js +1 -1
  136. package/dist/Table/TableCell.test.js +1 -1
  137. package/dist/Table/TableFooter.test.js +1 -1
  138. package/dist/Table/TableHeader.test.js +1 -1
  139. package/dist/Table/TableHeaderCell.test.js +1 -1
  140. package/dist/Table/TableRow.test.js +1 -1
  141. package/dist/TableOfContents/TableOfContents.test.js +1 -1
  142. package/dist/TableOfContents/TableOfContentsLink.test.js +1 -1
  143. package/dist/TableOfContents/TableOfContentsList.test.js +1 -1
  144. package/dist/Tabs/Tabs.d.ts +6 -6
  145. package/dist/Tabs/Tabs.js +4 -5
  146. package/dist/Tabs/Tabs.test.js +21 -6
  147. package/dist/Tabs/TabsButton.d.ts +4 -4
  148. package/dist/Tabs/TabsButton.js +4 -4
  149. package/dist/Tabs/TabsButton.test.js +10 -10
  150. package/dist/Tabs/TabsContext.d.ts +2 -7
  151. package/dist/Tabs/TabsContext.js +0 -1
  152. package/dist/Tabs/TabsList.js +1 -1
  153. package/dist/Tabs/TabsList.test.js +1 -1
  154. package/dist/Tabs/TabsPanel.d.ts +4 -4
  155. package/dist/Tabs/TabsPanel.js +4 -4
  156. package/dist/Tabs/TabsPanel.test.js +10 -12
  157. package/dist/TextArea/TextArea.test.js +1 -1
  158. package/dist/TextInput/TextInput.test.js +2 -3
  159. package/dist/TimeInput/TimeInput.test.js +1 -1
  160. package/dist/UnorderedList/UnorderedList.test.js +1 -1
  161. package/dist/UnorderedList/UnorderedListItem.test.js +1 -1
  162. package/dist/common/accessibility.d.ts +9 -1
  163. package/dist/index.cjs.js +1000 -1057
  164. package/dist/index.cjs.js.map +1 -1
  165. package/dist/index.d.ts +164 -194
  166. package/dist/index.esm.js +998 -1053
  167. package/dist/index.esm.js.map +1 -1
  168. package/dist/index.js +4 -6
  169. package/dist/tsconfig.tsbuildinfo +1 -1
  170. package/package.json +10 -10
  171. package/dist/Footer/Footer.js +0 -17
  172. package/dist/Footer/FooterMenu.js +0 -9
  173. package/dist/Footer/FooterMenuLink.js +0 -9
  174. package/dist/Footer/FooterSpotlight.js +0 -9
  175. package/dist/Footer/index.d.ts +0 -5
  176. package/dist/Footer/index.js +0 -1
  177. package/dist/Header/Header.js +0 -31
  178. package/dist/Header/HeaderGridCellNarrowWindowOnly.d.ts +0 -2
  179. package/dist/Header/HeaderGridCellNarrowWindowOnly.js +0 -6
  180. package/dist/Header/HeaderMenuIcon.d.ts +0 -2
  181. package/dist/Header/HeaderMenuIcon.js +0 -2
  182. package/dist/Header/HeaderMenuLink.js +0 -5
  183. package/dist/Header/index.d.ts +0 -3
  184. package/dist/Header/index.js +0 -1
  185. package/dist/MegaMenu/MegaMenu.d.ts +0 -14
  186. package/dist/MegaMenu/MegaMenu.js +0 -12
  187. package/dist/MegaMenu/MegaMenuListCategory.d.ts +0 -9
  188. package/dist/MegaMenu/MegaMenuListCategory.js +0 -9
  189. package/dist/MegaMenu/index.d.ts +0 -3
  190. package/dist/MegaMenu/index.js +0 -1
  191. package/dist/PageMenu/PageMenu.d.ts +0 -25
  192. package/dist/PageMenu/PageMenu.js +0 -12
  193. package/dist/PageMenu/PageMenu.test.js +0 -45
  194. package/dist/PageMenu/PageMenuLink.d.ts +0 -13
  195. package/dist/PageMenu/PageMenuLink.js +0 -10
  196. package/dist/PageMenu/PageMenuLink.test.js +0 -40
  197. package/dist/PageMenu/index.d.ts +0 -3
  198. package/dist/PageMenu/index.js +0 -1
  199. package/dist/Screen/Screen.d.ts +0 -21
  200. package/dist/Screen/Screen.js +0 -9
  201. package/dist/Screen/Screen.test.d.ts +0 -1
  202. package/dist/Screen/Screen.test.js +0 -40
  203. package/dist/Screen/index.d.ts +0 -2
  204. package/dist/Screen/index.js +0 -1
  205. package/dist/TopTaskLink/TopTaskLink.d.ts +0 -17
  206. package/dist/TopTaskLink/TopTaskLink.js +0 -9
  207. package/dist/TopTaskLink/TopTaskLink.test.d.ts +0 -1
  208. package/dist/TopTaskLink/TopTaskLink.test.js +0 -42
  209. package/dist/TopTaskLink/index.d.ts +0 -1
  210. package/dist/TopTaskLink/index.js +0 -1
  211. /package/dist/{Footer/Footer.test.d.ts → Card/CardHeading.test.d.ts} +0 -0
  212. /package/dist/{Footer/FooterMenu.test.d.ts → Card/CardImage.test.d.ts} +0 -0
  213. /package/dist/{Footer/FooterMenuLink.test.d.ts → Page/Page.test.d.ts} +0 -0
  214. /package/dist/{Footer/FooterSpotlight.test.d.ts → PageFooter/PageFooter.test.d.ts} +0 -0
  215. /package/dist/{Header/HeaderGridCellNarrowWindowOnly.test.d.ts → PageFooter/PageFooterMenu.test.d.ts} +0 -0
  216. /package/dist/{Header/HeaderMenuLink.test.d.ts → PageFooter/PageFooterMenuLink.test.d.ts} +0 -0
  217. /package/dist/{MegaMenu/MegaMenu.test.d.ts → PageFooter/PageFooterSpotlight.test.d.ts} +0 -0
  218. /package/dist/{Header/Header.test.d.ts → PageHeader/PageHeader.test.d.ts} +0 -0
  219. /package/dist/{MegaMenu/MegaMenuListCategory.test.d.ts → PageHeader/PageHeaderGridCellNarrowWindowOnly.test.d.ts} +0 -0
  220. /package/dist/{PageMenu/PageMenu.test.d.ts → PageHeader/PageHeaderMenuLink.test.d.ts} +0 -0
  221. /package/dist/{Header → PageHeader}/matchMedia.mock.d.ts +0 -0
  222. /package/dist/{Header → PageHeader}/matchMedia.mock.js +0 -0
  223. /package/dist/{PageMenu/PageMenuLink.test.d.ts → StandaloneLink/StandaloneLink.test.d.ts} +0 -0
@@ -15,7 +15,7 @@ describe('Link list', () => {
15
15
  const component = screen.getByRole('list');
16
16
  expect(component).toHaveClass('ams-link-list');
17
17
  });
18
- it('renders an additional class name', () => {
18
+ it('renders an extra class name', () => {
19
19
  render(_jsx(LinkList, { className: "extra" }));
20
20
  const component = screen.getByRole('list');
21
21
  expect(component).toHaveClass('ams-link-list extra');
@@ -21,7 +21,7 @@ describe('Link list link', () => {
21
21
  const component = screen.getByRole('link');
22
22
  expect(component).toHaveClass('ams-link-list__link');
23
23
  });
24
- it('renders an additional class name', () => {
24
+ it('renders an extra class name', () => {
25
25
  render(_jsx(LinkList.Link, { className: "extra", href: "#" }));
26
26
  const component = screen.getByRole('link');
27
27
  expect(component).toHaveClass('ams-link-list__link extra');
@@ -15,11 +15,10 @@ describe('Logo', () => {
15
15
  const component = container.querySelector(':only-child');
16
16
  expect(component).toHaveClass('ams-logo');
17
17
  });
18
- it('renders an additional class name', () => {
18
+ it('renders an extra class name', () => {
19
19
  const { container } = render(_jsx(Logo, { className: "extra" }));
20
20
  const component = container.querySelector(':only-child');
21
- expect(component).toHaveClass('extra');
22
- expect(component).toHaveClass('ams-logo');
21
+ expect(component).toHaveClass('ams-logo extra');
23
22
  });
24
23
  it('supports ForwardRef in React', () => {
25
24
  const ref = createRef();
@@ -15,7 +15,7 @@ describe('Mark', () => {
15
15
  const component = container.querySelector(':only-child');
16
16
  expect(component).toHaveClass('ams-mark');
17
17
  });
18
- it('renders an additional class name', () => {
18
+ it('renders an extra class name', () => {
19
19
  const { container } = render(_jsx(Mark, { className: "extra" }));
20
20
  const component = container.querySelector(':only-child');
21
21
  expect(component).toHaveClass('ams-mark extra');
@@ -24,7 +24,7 @@ describe('Ordered list', () => {
24
24
  const component = screen.getByRole('list');
25
25
  expect(component).toHaveClass('ams-ordered-list--inverse');
26
26
  });
27
- it('renders an additional class name', () => {
27
+ it('renders an extra class name', () => {
28
28
  render(_jsx(OrderedList, { className: "extra" }));
29
29
  const component = screen.getByRole('list');
30
30
  expect(component).toHaveClass('ams-ordered-list extra');
@@ -14,7 +14,7 @@ describe('Ordered list item', () => {
14
14
  const component = screen.getByRole('listitem');
15
15
  expect(component).toHaveClass('ams-ordered-list__item');
16
16
  });
17
- it('renders an additional class name', () => {
17
+ it('renders an extra class name', () => {
18
18
  render(_jsx(OrderedListItem, { className: "extra" }));
19
19
  const component = screen.getByRole('listitem');
20
20
  expect(component).toHaveClass('ams-ordered-list__item extra');
@@ -15,7 +15,7 @@ describe('Overlap', () => {
15
15
  const component = container.querySelector(':only-child');
16
16
  expect(component).toHaveClass('ams-overlap');
17
17
  });
18
- it('renders an additional class name', () => {
18
+ it('renders an extra class name', () => {
19
19
  const { container } = render(_jsx(Overlap, { className: "extra" }));
20
20
  const component = container.querySelector(':only-child');
21
21
  expect(component).toHaveClass('ams-overlap extra');
@@ -3,7 +3,7 @@
3
3
  * Copyright Gemeente Amsterdam
4
4
  */
5
5
  import type { HTMLAttributes, PropsWithChildren } from 'react';
6
- export type FooterSpotlightProps = PropsWithChildren<HTMLAttributes<HTMLDivElement>>;
7
- export declare const FooterSpotlight: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
6
+ export type PageProps = PropsWithChildren<HTMLAttributes<HTMLDivElement>>;
7
+ export declare const Page: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
8
8
  children?: import("react").ReactNode | undefined;
9
9
  } & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
6
+ import clsx from 'clsx';
7
+ import { forwardRef } from 'react';
8
+ export const Page = forwardRef(({ children, className, ...restProps }, ref) => (_jsx("div", { ...restProps, className: clsx('ams-page', className), ref: ref, children: children })));
9
+ Page.displayName = 'Page';
@@ -1,28 +1,28 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { render } from '@testing-library/react';
3
3
  import { createRef } from 'react';
4
- import { MegaMenu } from './MegaMenu';
4
+ import { Page } from './Page';
5
5
  import '@testing-library/jest-dom';
6
- describe('Mega menu', () => {
6
+ describe('Page', () => {
7
7
  it('renders', () => {
8
- const { container } = render(_jsx(MegaMenu, {}));
8
+ const { container } = render(_jsx(Page, {}));
9
9
  const component = container.querySelector(':only-child');
10
10
  expect(component).toBeInTheDocument();
11
11
  expect(component).toBeVisible();
12
12
  });
13
13
  it('renders a design system BEM class name', () => {
14
- const { container } = render(_jsx(MegaMenu, {}));
14
+ const { container } = render(_jsx(Page, {}));
15
15
  const component = container.querySelector(':only-child');
16
- expect(component).toHaveClass('ams-mega-menu');
16
+ expect(component).toHaveClass('ams-page');
17
17
  });
18
- it('renders an additional class name', () => {
19
- const { container } = render(_jsx(MegaMenu, { className: "extra" }));
18
+ it('renders an extra class name', () => {
19
+ const { container } = render(_jsx(Page, { className: "extra" }));
20
20
  const component = container.querySelector(':only-child');
21
- expect(component).toHaveClass('ams-mega-menu extra');
21
+ expect(component).toHaveClass('ams-page extra');
22
22
  });
23
23
  it('supports ForwardRef in React', () => {
24
24
  const ref = createRef();
25
- const { container } = render(_jsx(MegaMenu, { ref: ref }));
25
+ const { container } = render(_jsx(Page, { ref: ref }));
26
26
  const component = container.querySelector(':only-child');
27
27
  expect(ref.current).toBe(component);
28
28
  });
@@ -0,0 +1,2 @@
1
+ export { Page } from './Page';
2
+ export type { PageProps } from './Page';
@@ -0,0 +1 @@
1
+ export { Page } from './Page';
@@ -3,8 +3,8 @@
3
3
  * Copyright Gemeente Amsterdam
4
4
  */
5
5
  import type { HTMLAttributes, PropsWithChildren } from 'react';
6
- export type FooterProps = PropsWithChildren<HTMLAttributes<HTMLElement>>;
7
- export declare const Footer: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
6
+ export type PageFooterProps = PropsWithChildren<HTMLAttributes<HTMLElement>>;
7
+ export declare const PageFooter: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
8
8
  children?: import("react").ReactNode | undefined;
9
9
  } & import("react").RefAttributes<HTMLElement>> & {
10
10
  Menu: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLUListElement> & {
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
6
+ import clsx from 'clsx';
7
+ import { forwardRef } from 'react';
8
+ import { PageFooterMenu } from './PageFooterMenu';
9
+ import { PageFooterMenuLink } from './PageFooterMenuLink';
10
+ import { PageFooterSpotlight } from './PageFooterSpotlight';
11
+ const PageFooterRoot = forwardRef(({ children, className, ...restProps }, ref) => (_jsx("footer", { ...restProps, className: clsx('ams-page-footer', className), ref: ref, children: children })));
12
+ PageFooterRoot.displayName = 'PageFooter';
13
+ export const PageFooter = Object.assign(PageFooterRoot, {
14
+ Menu: PageFooterMenu,
15
+ MenuLink: PageFooterMenuLink,
16
+ Spotlight: PageFooterSpotlight,
17
+ });
@@ -1,28 +1,28 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { render, screen } from '@testing-library/react';
3
3
  import { createRef } from 'react';
4
- import { Footer } from './Footer';
4
+ import { PageFooter } from './PageFooter';
5
5
  import '@testing-library/jest-dom';
6
- describe('Footer', () => {
6
+ describe('Page Footer', () => {
7
7
  it('renders an HTML footer element', () => {
8
- render(_jsx(Footer, {}));
8
+ render(_jsx(PageFooter, {}));
9
9
  const component = screen.getByRole('contentinfo');
10
10
  expect(component).toBeInTheDocument();
11
11
  expect(component).toBeVisible();
12
12
  });
13
13
  it('renders a design system BEM class name', () => {
14
- render(_jsx(Footer, {}));
14
+ render(_jsx(PageFooter, {}));
15
15
  const component = screen.getByRole('contentinfo');
16
- expect(component).toHaveClass('ams-footer');
16
+ expect(component).toHaveClass('ams-page-footer');
17
17
  });
18
- it('renders an additional class name', () => {
19
- render(_jsx(Footer, { className: "extra" }));
18
+ it('renders an extra class name', () => {
19
+ render(_jsx(PageFooter, { className: "extra" }));
20
20
  const component = screen.getByRole('contentinfo');
21
- expect(component).toHaveClass('ams-footer extra');
21
+ expect(component).toHaveClass('ams-page-footer extra');
22
22
  });
23
23
  it('supports ForwardRef in React', () => {
24
24
  const ref = createRef();
25
- render(_jsx(Footer, { ref: ref }));
25
+ render(_jsx(PageFooter, { ref: ref }));
26
26
  const component = screen.getByRole('contentinfo');
27
27
  expect(ref.current).toBe(component);
28
28
  });
@@ -3,7 +3,7 @@
3
3
  * Copyright Gemeente Amsterdam
4
4
  */
5
5
  import type { HTMLAttributes, PropsWithChildren } from 'react';
6
- export type FooterMenuProps = PropsWithChildren<HTMLAttributes<HTMLUListElement>>;
7
- export declare const FooterMenu: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLUListElement> & {
6
+ export type PageFooterMenuProps = PropsWithChildren<HTMLAttributes<HTMLUListElement>>;
7
+ export declare const PageFooterMenu: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLUListElement> & {
8
8
  children?: import("react").ReactNode | undefined;
9
9
  } & import("react").RefAttributes<HTMLUListElement>>;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
6
+ import clsx from 'clsx';
7
+ import { forwardRef } from 'react';
8
+ export const PageFooterMenu = forwardRef(({ children, className, ...restProps }, ref) => (_jsx("ul", { ...restProps, className: clsx('ams-page-footer__menu', className), ref: ref, children: children })));
9
+ PageFooterMenu.displayName = 'PageFooter.Menu';
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { render, screen } from '@testing-library/react';
3
3
  import { createRef } from 'react';
4
- import { Footer } from './Footer';
4
+ import { PageFooter } from './PageFooter';
5
5
  import '@testing-library/jest-dom';
6
- describe('Footer menu', () => {
6
+ describe('Page Footer Menu', () => {
7
7
  it('renders a footer menu with children', () => {
8
- render(_jsxs(Footer.Menu, { children: [_jsx(Footer.MenuLink, { href: "#", lang: "en", children: "English" }), _jsx(Footer.MenuLink, { href: "#", children: "Mijn Amsterdam" })] }));
8
+ render(_jsxs(PageFooter.Menu, { children: [_jsx(PageFooter.MenuLink, { href: "#", lang: "en", children: "English" }), _jsx(PageFooter.MenuLink, { href: "#", children: "Mijn Amsterdam" })] }));
9
9
  const component = screen.getByRole('list');
10
10
  const children = screen.getAllByRole('listitem');
11
11
  expect(component).toBeInTheDocument();
@@ -13,19 +13,19 @@ describe('Footer menu', () => {
13
13
  expect(children).toHaveLength(2);
14
14
  });
15
15
  it('renders a design system BEM class name', () => {
16
- render(_jsx(Footer.Menu, {}));
16
+ render(_jsx(PageFooter.Menu, {}));
17
17
  const component = screen.getByRole('list');
18
- expect(component).toHaveClass('ams-footer__menu');
18
+ expect(component).toHaveClass('ams-page-footer__menu');
19
19
  });
20
20
  it('is able to pass a React ref', () => {
21
21
  const ref = createRef();
22
- render(_jsx(Footer.Menu, { ref: ref, children: _jsx(Footer.MenuLink, { href: "#", lang: "en", children: "English" }) }));
22
+ render(_jsx(PageFooter.Menu, { ref: ref, children: _jsx(PageFooter.MenuLink, { href: "#", lang: "en", children: "English" }) }));
23
23
  const component = screen.getByRole('list');
24
24
  expect(ref.current).toBe(component);
25
25
  });
26
- it('renders an additional class name', () => {
27
- render(_jsx(Footer.Menu, { className: "intro" }));
26
+ it('renders an extra class name', () => {
27
+ render(_jsx(PageFooter.Menu, { className: "intro" }));
28
28
  const component = screen.getByRole('list');
29
- expect(component).toHaveClass('ams-footer__menu intro');
29
+ expect(component).toHaveClass('ams-page-footer__menu intro');
30
30
  });
31
31
  });
@@ -3,7 +3,7 @@
3
3
  * Copyright Gemeente Amsterdam
4
4
  */
5
5
  import type { AnchorHTMLAttributes, PropsWithChildren } from 'react';
6
- export type FooterMenuLinkProps = PropsWithChildren<AnchorHTMLAttributes<HTMLAnchorElement>>;
7
- export declare const FooterMenuLink: import("react").ForwardRefExoticComponent<AnchorHTMLAttributes<HTMLAnchorElement> & {
6
+ export type PageFooterMenuLinkProps = PropsWithChildren<AnchorHTMLAttributes<HTMLAnchorElement>>;
7
+ export declare const PageFooterMenuLink: import("react").ForwardRefExoticComponent<AnchorHTMLAttributes<HTMLAnchorElement> & {
8
8
  children?: import("react").ReactNode | undefined;
9
9
  } & import("react").RefAttributes<HTMLAnchorElement>>;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
6
+ import clsx from 'clsx';
7
+ import { forwardRef } from 'react';
8
+ export const PageFooterMenuLink = forwardRef(({ children, className, ...restProps }, ref) => (_jsx("li", { className: "ams-page-footer__menu-item", children: _jsx("a", { ...restProps, className: clsx('ams-page-footer__menu-link', className), ref: ref, children: children }) })));
9
+ PageFooterMenuLink.displayName = 'PageFooter.MenuLink';
@@ -1,28 +1,28 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { render, screen } from '@testing-library/react';
3
3
  import { createRef } from 'react';
4
- import { Footer } from './Footer';
4
+ import { PageFooter } from './PageFooter';
5
5
  import '@testing-library/jest-dom';
6
- describe('Page menu link', () => {
6
+ describe('Page Footer Menu Link', () => {
7
7
  it('renders with href attribute', () => {
8
- render(_jsx(Footer.MenuLink, { href: "#", children: "Link" }));
8
+ render(_jsx(PageFooter.MenuLink, { href: "#", children: "Link" }));
9
9
  const component = screen.getByRole('link');
10
10
  expect(component).toBeInTheDocument();
11
11
  expect(component).toHaveAttribute('href', '#');
12
12
  });
13
13
  it('renders a design system BEM class name', () => {
14
- render(_jsx(Footer.MenuLink, { href: "#", children: "Link" }));
14
+ render(_jsx(PageFooter.MenuLink, { href: "#", children: "Link" }));
15
15
  const component = screen.getByRole('link');
16
- expect(component).toHaveClass('ams-footer__menu-link');
16
+ expect(component).toHaveClass('ams-page-footer__menu-link');
17
17
  });
18
- it('renders an additional class name', () => {
19
- render(_jsx(Footer.MenuLink, { className: "extra", href: "#", children: "Link" }));
18
+ it('renders an extra class name', () => {
19
+ render(_jsx(PageFooter.MenuLink, { className: "extra", href: "#", children: "Link" }));
20
20
  const component = screen.getByRole('link');
21
- expect(component).toHaveClass('ams-footer__menu-link extra');
21
+ expect(component).toHaveClass('ams-page-footer__menu-link extra');
22
22
  });
23
23
  it('supports ForwardRef in React', () => {
24
24
  const ref = createRef();
25
- render(_jsx(Footer.MenuLink, { className: "extra", href: "#", ref: ref, children: "Link" }));
25
+ render(_jsx(PageFooter.MenuLink, { className: "extra", href: "#", ref: ref, children: "Link" }));
26
26
  const component = screen.getByRole('link');
27
27
  expect(ref.current).toBe(component);
28
28
  });
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+ import type { HTMLAttributes, PropsWithChildren } from 'react';
6
+ export type PageFooterSpotlightProps = PropsWithChildren<HTMLAttributes<HTMLDivElement>>;
7
+ export declare const PageFooterSpotlight: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
8
+ children?: import("react").ReactNode | undefined;
9
+ } & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
6
+ import clsx from 'clsx';
7
+ import { forwardRef } from 'react';
8
+ export const PageFooterSpotlight = forwardRef(({ children, className, ...restProps }, ref) => (_jsx("div", { ...restProps, className: clsx('ams-page-footer__spotlight', className), ref: ref, children: children })));
9
+ PageFooterSpotlight.displayName = 'PageFooter.Spotlight';
@@ -1,28 +1,28 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { render } from '@testing-library/react';
3
3
  import { createRef } from 'react';
4
- import { MegaMenuListCategory } from './MegaMenuListCategory';
4
+ import { PageFooter } from './PageFooter';
5
5
  import '@testing-library/jest-dom';
6
- describe('Mega menu category', () => {
6
+ describe('Page Footer Spotlight', () => {
7
7
  it('renders', () => {
8
- const { container } = render(_jsx(MegaMenuListCategory, {}));
8
+ const { container } = render(_jsx(PageFooter.Spotlight, {}));
9
9
  const component = container.querySelector(':only-child');
10
10
  expect(component).toBeInTheDocument();
11
11
  expect(component).toBeVisible();
12
12
  });
13
13
  it('renders a design system BEM class name', () => {
14
- const { container } = render(_jsx(MegaMenuListCategory, {}));
14
+ const { container } = render(_jsx(PageFooter.Spotlight, {}));
15
15
  const component = container.querySelector(':only-child');
16
- expect(component).toHaveClass('ams-mega-menu__list-category');
16
+ expect(component).toHaveClass('ams-page-footer__spotlight');
17
17
  });
18
- it('renders an additional class name', () => {
19
- const { container } = render(_jsx(MegaMenuListCategory, { className: "extra" }));
18
+ it('renders an extra class name', () => {
19
+ const { container } = render(_jsx(PageFooter.Spotlight, { className: "extra" }));
20
20
  const component = container.querySelector(':only-child');
21
- expect(component).toHaveClass('ams-mega-menu__list-category extra');
21
+ expect(component).toHaveClass('ams-page-footer__spotlight extra');
22
22
  });
23
23
  it('supports ForwardRef in React', () => {
24
24
  const ref = createRef();
25
- const { container } = render(_jsx(MegaMenuListCategory, { ref: ref }));
25
+ const { container } = render(_jsx(PageFooter.Spotlight, { ref: ref }));
26
26
  const component = container.querySelector(':only-child');
27
27
  expect(ref.current).toBe(component);
28
28
  });
@@ -0,0 +1,5 @@
1
+ export { PageFooter } from './PageFooter';
2
+ export type { PageFooterProps } from './PageFooter';
3
+ export type { PageFooterMenuProps } from './PageFooterMenu';
4
+ export type { PageFooterMenuLinkProps } from './PageFooterMenuLink';
5
+ export type { PageFooterSpotlightProps } from './PageFooterSpotlight';
@@ -0,0 +1 @@
1
+ export { PageFooter } from './PageFooter';
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import type { HTMLAttributes, ReactNode } from 'react';
6
6
  import type { LogoBrand } from '../Logo';
7
- export type HeaderProps = {
7
+ export type PageHeaderProps = {
8
8
  /** The name of the application. */
9
9
  brandName?: string;
10
10
  /** The name of the brand for which to display the logo. */
@@ -15,14 +15,14 @@ export type HeaderProps = {
15
15
  logoLinkTitle?: string;
16
16
  /** The text for the menu button. */
17
17
  menuButtonText?: string;
18
- /** A slot for the menu items. Use Header.MenuLink here. */
18
+ /** A slot for the menu items. Use PageHeader.MenuLink here. */
19
19
  menuItems?: ReactNode;
20
20
  /** The accessible label for the navigation section. */
21
21
  navigationLabel?: string;
22
22
  /** Whether the menu button is visible on wide screens. */
23
23
  noMenuButtonOnWideWindow?: boolean;
24
24
  } & HTMLAttributes<HTMLElement>;
25
- export declare const Header: import("react").ForwardRefExoticComponent<{
25
+ export declare const PageHeader: import("react").ForwardRefExoticComponent<{
26
26
  /** The name of the application. */
27
27
  brandName?: string;
28
28
  /** The name of the brand for which to display the logo. */
@@ -33,7 +33,7 @@ export declare const Header: import("react").ForwardRefExoticComponent<{
33
33
  logoLinkTitle?: string;
34
34
  /** The text for the menu button. */
35
35
  menuButtonText?: string;
36
- /** A slot for the menu items. Use Header.MenuLink here. */
36
+ /** A slot for the menu items. Use PageHeader.MenuLink here. */
37
37
  menuItems?: ReactNode;
38
38
  /** The accessible label for the navigation section. */
39
39
  navigationLabel?: string;
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
6
+ import clsx from 'clsx';
7
+ import { forwardRef, useEffect, useState } from 'react';
8
+ import { Icon } from '../Icon';
9
+ import { Logo } from '../Logo';
10
+ import { PageHeaderGridCellNarrowWindowOnly } from './PageHeaderGridCellNarrowWindowOnly';
11
+ import { PageHeaderMenuIcon } from './PageHeaderMenuIcon';
12
+ import { PageHeaderMenuLink } from './PageHeaderMenuLink';
13
+ import useIsAfterBreakpoint from '../common/useIsAfterBreakpoint';
14
+ const LogoLinkContent = ({ brandName, logoBrand }) => (_jsxs(_Fragment, { children: [_jsx("span", { className: clsx(logoBrand === 'amsterdam' && Boolean(brandName) && 'ams-page-header__logo-container'), children: _jsx(Logo, { brand: logoBrand }) }), brandName && (_jsx("span", { "aria-hidden": "true", className: "ams-page-header__brand-name", children: brandName }))] }));
15
+ const PageHeaderRoot = forwardRef(({ brandName, children, className, logoBrand = 'amsterdam', logoLink = '/', logoLinkTitle = 'Ga naar de homepage', menuButtonText = 'Menu', menuItems, navigationLabel = 'Hoofdnavigatie', noMenuButtonOnWideWindow, ...restProps }, ref) => {
16
+ const [open, setOpen] = useState(false);
17
+ const hasMegaMenu = Boolean(children);
18
+ const isWideWindow = hasMegaMenu && useIsAfterBreakpoint('wide');
19
+ useEffect(() => {
20
+ // Close the menu when the menu button disappears
21
+ if (noMenuButtonOnWideWindow && isWideWindow) {
22
+ setOpen(false);
23
+ }
24
+ }, [isWideWindow]);
25
+ return (_jsxs("header", { ...restProps, className: clsx('ams-page-header', className), ref: ref, children: [_jsxs("a", { className: "ams-page-header__logo-link", href: logoLink, children: [_jsx("span", { className: "ams-visually-hidden", children: logoLinkTitle }), _jsx(LogoLinkContent, { brandName: brandName, logoBrand: logoBrand })] }), (hasMegaMenu || menuItems) && (_jsxs("nav", { "aria-labelledby": "primary-navigation", className: "ams-page-header__navigation", children: [_jsx("h2", { className: "ams-visually-hidden", id: "primary-navigation", children: navigationLabel }), _jsx("div", { className: "ams-page-header__logo-link ams-page-header__logo-link--hidden", children: _jsx(LogoLinkContent, { brandName: brandName, logoBrand: logoBrand }) }), _jsxs("ul", { className: "ams-page-header__menu", children: [menuItems, hasMegaMenu && (_jsx("li", { className: clsx(noMenuButtonOnWideWindow && 'ams-page-header__mega-menu-button-item--hide-on-wide-window'), children: _jsxs("button", { "aria-controls": "ams-page-header-mega-menu", "aria-expanded": open, className: "ams-page-header__mega-menu-button", onClick: () => setOpen(!open), type: "button", children: [_jsx("span", { className: "ams-page-header__mega-menu-button-label", children: menuButtonText }), _jsx("span", { "aria-hidden": "true", className: "ams-page-header__mega-menu-button-hidden-label", children: menuButtonText }), _jsx(Icon, { svg: _jsx(PageHeaderMenuIcon, { className: clsx('ams-page-header__menu-icon', open && 'ams-page-header__menu-icon--open') }) })] }) }))] }), hasMegaMenu && (_jsx("div", { className: clsx('ams-page-header__mega-menu', !open && 'ams-page-header__mega-menu--closed'), id: "ams-page-header-mega-menu", children: children }))] }))] }));
26
+ });
27
+ PageHeaderRoot.displayName = 'PageHeader';
28
+ export const PageHeader = Object.assign(PageHeaderRoot, {
29
+ GridCellNarrowWindowOnly: PageHeaderGridCellNarrowWindowOnly,
30
+ MenuLink: PageHeaderMenuLink,
31
+ });